{"version":3,"file":"seniorsistemas-angular-components-dynamic-form.mjs","sources":["../../projects/angular-components/dynamic-form/src/lib/dynamic-form/configurations/structure/structure.ts","../../projects/angular-components/dynamic-form/src/lib/dynamic-form/configurations/registry.ts","../../projects/angular-components/dynamic-form/src/lib/dynamic-form/dynamic-form.ts","../../projects/angular-components/dynamic-form/src/lib/dynamic-form/dynamic-form.directive.ts","../../projects/angular-components/dynamic-form/src/lib/dynamic-form/form-field/configurations/field-size.ts","../../projects/angular-components/dynamic-form/src/lib/dynamic-form/services/form-field-utils.service.ts","../../projects/angular-components/dynamic-form/src/lib/dynamic-form/components/grid/row/row.component.ts","../../projects/angular-components/dynamic-form/src/lib/dynamic-form/components/grid/row/row.component.html","../../projects/angular-components/dynamic-form/src/lib/dynamic-form/components/structure/fieldset/fieldset.component.ts","../../projects/angular-components/dynamic-form/src/lib/dynamic-form/components/structure/fieldset/fieldset.component.html","../../projects/angular-components/dynamic-form/src/lib/dynamic-form/components/structure/section/section.component.ts","../../projects/angular-components/dynamic-form/src/lib/dynamic-form/components/structure/section/section.component.html","../../projects/angular-components/dynamic-form/src/lib/dynamic-form/dynamic-form.component.ts","../../projects/angular-components/dynamic-form/src/lib/dynamic-form/dynamic-form.component.html","../../projects/angular-components/dynamic-form/src/lib/dynamic-form/components/lookup/lookup.component.ts","../../projects/angular-components/dynamic-form/src/lib/dynamic-form/components/lookup/lookup.component.html","../../projects/angular-components/dynamic-form/src/lib/dynamic-form/components/field-label/field-label.component.ts","../../projects/angular-components/dynamic-form/src/lib/dynamic-form/components/field-label/field-label.component.html","../../projects/angular-components/dynamic-form/src/lib/dynamic-form/form-field/fields/autocomplete/autocomplete-field.component.ts","../../projects/angular-components/dynamic-form/src/lib/dynamic-form/form-field/fields/autocomplete/autocomplete-field.component.html","../../projects/angular-components/dynamic-form/src/lib/dynamic-form/form-field/fields/bignumber/bignumber-field.component.ts","../../projects/angular-components/dynamic-form/src/lib/dynamic-form/form-field/fields/bignumber/bignumber-field.component.html","../../projects/angular-components/dynamic-form/src/lib/dynamic-form/form-field/fields/boolean/boolean-radio-field/boolean-field.component.ts","../../projects/angular-components/dynamic-form/src/lib/dynamic-form/form-field/fields/boolean/boolean-radio-field/boolean-field.component.html","../../projects/angular-components/dynamic-form/src/lib/dynamic-form/form-field/fields/boolean/boolean-switch-field/boolean-switch-field.component.ts","../../projects/angular-components/dynamic-form/src/lib/dynamic-form/form-field/fields/boolean/boolean-switch-field/boolean-switch-field.component.html","../../projects/angular-components/dynamic-form/src/lib/dynamic-form/form-field/fields/button-field/button-field.component.ts","../../projects/angular-components/dynamic-form/src/lib/dynamic-form/form-field/fields/button-field/button-field.component.html","../../projects/angular-components/dynamic-form/src/lib/dynamic-form/form-field/fields/calendar/calendar-field.component.ts","../../projects/angular-components/dynamic-form/src/lib/dynamic-form/form-field/fields/calendar/calendar-field.component.html","../../projects/angular-components/dynamic-form/src/lib/dynamic-form/form-field/fields/checkbox/checkbox-field.component.ts","../../projects/angular-components/dynamic-form/src/lib/dynamic-form/form-field/fields/checkbox/checkbox-field.component.html","../../projects/angular-components/dynamic-form/src/lib/dynamic-form/form-field/fields/chips/chips-field.component.ts","../../projects/angular-components/dynamic-form/src/lib/dynamic-form/form-field/fields/chips/chips-field.component.html","../../projects/angular-components/dynamic-form/src/lib/dynamic-form/form-field/fields/content-generator/content-generator-field.component.ts","../../projects/angular-components/dynamic-form/src/lib/dynamic-form/form-field/fields/content-generator/content-generator-field.component.html","../../projects/angular-components/dynamic-form/src/lib/dynamic-form/form-field/fields/country-phone-picker/country-phone-picker-field.component.ts","../../projects/angular-components/dynamic-form/src/lib/dynamic-form/form-field/fields/country-phone-picker/country-phone-picker-field.component.html","../../projects/angular-components/dynamic-form/src/lib/dynamic-form/form-field/fields/currency/currency-field.component.ts","../../projects/angular-components/dynamic-form/src/lib/dynamic-form/form-field/fields/currency/currency-field.component.html","../../projects/angular-components/dynamic-form/src/lib/dynamic-form/form-field/fields/file-picker/file-picker-field.component.ts","../../projects/angular-components/dynamic-form/src/lib/dynamic-form/form-field/fields/file-picker/file-picker-field.component.html","../../projects/angular-components/dynamic-form/src/lib/dynamic-form/form-field/fields/lookup/lookup-field.component.ts","../../projects/angular-components/dynamic-form/src/lib/dynamic-form/form-field/fields/lookup/lookup-field.component.html","../../projects/angular-components/dynamic-form/src/lib/dynamic-form/form-field/fields/number/number-field.component.ts","../../projects/angular-components/dynamic-form/src/lib/dynamic-form/form-field/fields/number/number-field.component.html","../../projects/angular-components/dynamic-form/src/lib/dynamic-form/form-field/fields/password/password-field.component.ts","../../projects/angular-components/dynamic-form/src/lib/dynamic-form/form-field/fields/password/password-field.component.html","../../projects/angular-components/dynamic-form/src/lib/dynamic-form/form-field/fields/profile-picture/profile-picture-field.component.ts","../../projects/angular-components/dynamic-form/src/lib/dynamic-form/form-field/fields/profile-picture/profile-picture-field.component.html","../../projects/angular-components/dynamic-form/src/lib/dynamic-form/form-field/fields/radio-button/radio-button-field.component.ts","../../projects/angular-components/dynamic-form/src/lib/dynamic-form/form-field/fields/radio-button/radio-button-field.component.html","../../projects/angular-components/dynamic-form/src/lib/dynamic-form/form-field/fields/select/select-field.component.ts","../../projects/angular-components/dynamic-form/src/lib/dynamic-form/form-field/fields/select/select-field.component.html","../../projects/angular-components/dynamic-form/src/lib/dynamic-form/form-field/fields/slider/slider-field.component.ts","../../projects/angular-components/dynamic-form/src/lib/dynamic-form/form-field/fields/slider/slider-field.component.html","../../projects/angular-components/dynamic-form/src/lib/dynamic-form/form-field/fields/star-rating/star-rating-field.component.ts","../../projects/angular-components/dynamic-form/src/lib/dynamic-form/form-field/fields/star-rating/star-rating-field.component.html","../../projects/angular-components/dynamic-form/src/lib/dynamic-form/form-field/fields/text-area/text-area-field.component.ts","../../projects/angular-components/dynamic-form/src/lib/dynamic-form/form-field/fields/text-area/text-area-field.component.html","../../projects/angular-components/dynamic-form/src/lib/dynamic-form/form-field/fields/text/text-field.component.ts","../../projects/angular-components/dynamic-form/src/lib/dynamic-form/form-field/fields/text/text-field.component.html","../../projects/angular-components/dynamic-form/src/lib/dynamic-form/dynamic-form.module.ts","../../projects/angular-components/dynamic-form/src/lib/dynamic-form/form-field/configurations/fields/radio-button-field.ts","../../projects/angular-components/dynamic-form/src/lib/public-api.ts","../../projects/angular-components/dynamic-form/src/lib/seniorsistemas-angular-components-dynamic-form.ts"],"sourcesContent":["import { DynamicType } from '../../form-field/configurations/fields/field';\n\n/**\n * Configuração base compartilhada por **todos** os tipos de estrutura do DynamicForm.\n *\n * Estruturas são contêineres que agrupam campos e outras estruturas.\n * Os tipos disponíveis são: `'section'`, `'row'`, `'fieldset'`.\n */\nexport interface StructureConfig {\n    /**\n     * Tipo da estrutura. Deve ser um dos valores registrados em `StructureTypeMap`.\n     * Valores disponíveis: `'section'`, `'row'`, `'fieldset'`.\n     */\n    type: StructureType;\n    /**\n     * Lista de campos e sub-estruturas contidas nesta estrutura.\n     * Cada item pode ser um `DynamicType` (campo) ou `DynamicStructure` (estrutura aninhada).\n     * @example [{ type: 'string', name: 'nome', label: 'Nome' }]\n     */\n    configs: (DynamicType | DynamicStructure)[];\n    /**\n     * Título opcional exibido no cabeçalho da estrutura.\n     * Usado, por exemplo, como título de seções ou fieldsets.\n     */\n    header?: string;\n}\n\nexport interface StructureTypeMap {}\nexport type StructureType = keyof StructureTypeMap;\nexport type DynamicStructure = StructureTypeMap[keyof StructureTypeMap];\n\nexport const STRUCTURE_TYPES_LIST: StructureType[] = ['fieldset', 'row', 'section'];\n\n","import { Type } from '@angular/core';\nimport { FieldType } from '../form-field/configurations/fields/field';\nimport { StructureType } from './structure/structure';\n\nexport class DynamicFormRegistry {\n    private static fields = new Map<FieldType | StructureType, Type<any>>();\n\n    static registerField(component: Type<any>, ...types: (FieldType | StructureType)[]) {\n        types.forEach((type) => {\n            this.fields.set(type, component);\n        });\n    }\n\n    static resolveField(type: FieldType | StructureType) {\n        return this.fields.get(type);\n    }\n}\n\n","import { ComponentRef, ViewContainerRef } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\n\nimport { isNullOrUndefined } from '@seniorsistemas/angular-components/utils';\n\nimport { DynamicType } from './form-field/configurations/fields/field';\n\nimport { BaseStructureComponentConfig } from './components/structure/base-structure-component';\nimport { DynamicFormRegistry } from './configurations/registry';\nimport { DynamicStructure as FieldDynamicStructure } from './configurations/structure/structure';\nimport { BaseFieldComponentConfig } from './form-field/fields/base-field-component';\n\nexport abstract class DynamicForm {\n    group: FormGroup;\n\n    abstract createComponent(viewContainerRef: ViewContainerRef): any;\n    abstract updateVariables(component: ComponentRef<any>): void;\n    abstract getComponent(): any;\n\n    constructor({ group }: { group: FormGroup }) {\n        this.group = group;\n    }\n}\n\nexport class DynamicField extends DynamicForm {\n    field: DynamicType;\n\n    constructor({ group, field }: { group: FormGroup; field: DynamicType }) {\n        super({\n            group,\n        });\n        this.field = field;\n    }\n\n    public createComponent(viewContainerRef: ViewContainerRef) {\n        const component = viewContainerRef.createComponent(\n            this.getComponent(),\n        ) as ComponentRef<BaseFieldComponentConfig>;\n        component.setInput('field', this.field);\n\n        if (!isNullOrUndefined(this.field?.name) && 'formControl' in component.instance) {\n            // Must be this way because some teams use name like \"e070emp.codemp\"\n            const name = 'customName' in this.field ? (this.field.customName as string) : this.field.name;\n            component.setInput('formControl', this.group?.['controls'][name]);\n        }\n\n        return component;\n    }\n\n    public updateVariables(component: ComponentRef<any>) {\n        if (isNullOrUndefined(this.field?.name)) return;\n        component.setInput('field', this.field);\n        if ('formControl' in component.instance) {\n            const name = 'customName' in this.field ? (this.field.customName as string) : this.field.name;\n            component.setInput('formControl', this.group?.['controls'][name]);\n        }\n    }\n\n    public getComponent() {\n        if (isNullOrUndefined(this.field)) {\n            throw new Error(`Field is null or undefined.`);\n        }\n\n        const fieldType = this.field.type;\n        const component = DynamicFormRegistry.resolveField(fieldType);\n        if (component) {\n            return component;\n        } else {\n            throw new Error(`Trying to use an unsupported type (${this.field?.type}).`);\n        }\n    }\n}\n\nexport class DynamicStructure extends DynamicForm {\n    config: FieldDynamicStructure;\n\n    constructor({ group, config }: { group: FormGroup; config: FieldDynamicStructure }) {\n        super({\n            group,\n        });\n\n        this.config = config;\n    }\n\n    public createComponent(viewContainerRef: ViewContainerRef) {\n        const component = viewContainerRef.createComponent(\n            this.getComponent(),\n        ) as ComponentRef<BaseStructureComponentConfig>;\n        component.setInput('config', this.config);\n        component.setInput('group', this.group);\n        return component;\n    }\n\n    public updateVariables(component: ComponentRef<any>) {\n        component.setInput('config', this.config);\n        component.setInput('group', this.group);\n    }\n\n    public getComponent() {\n        const structureType = this.config.type;\n        const component = DynamicFormRegistry.resolveField(structureType);\n        if (component) {\n            return component;\n        } else {\n            throw new Error(`Trying to use an unsupported type (${this.config?.type}).`);\n        }\n    }\n}\n\n","import { ComponentRef, Directive, inject, Input, OnChanges, OnDestroy, OnInit, ViewContainerRef } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\n\nimport { isNullOrUndefined } from '@seniorsistemas/angular-components/utils';\nimport { SpotlightTourService } from '@seniorsistemas/angular-components/spotlight';\n\nimport { DynamicField, DynamicForm, DynamicStructure } from './dynamic-form';\n\nimport {\n    DynamicStructure as FieldDynamicStructure,\n    STRUCTURE_TYPES_LIST,\n    StructureType,\n} from './configurations/structure/structure';\nimport { DynamicType, FieldConfig } from './form-field/configurations/fields/field';\n\n@Directive({ selector: '[sDynamicForm]', standalone: true })\nexport class DynamicFormDirective implements OnInit, OnChanges, OnDestroy {\n    private id?: string;\n    private config!: FieldDynamicStructure | DynamicType;\n    private group!: FormGroup;\n    private errorMessages?: FormGroup;\n    private directiveConfig?: DynamicForm;\n\n    @Input()\n    set sDynamicForm(context: {\n        id?: string;\n        config: FieldDynamicStructure | DynamicType;\n        group: FormGroup;\n        errorMessages?: any;\n    }) {\n        const { id, config, group, errorMessages } = context;\n        this.id = id;\n        this.config = config;\n        this.group = group;\n        this.errorMessages = errorMessages;\n    }\n\n    public component: ComponentRef<any> | null = null;\n\n    private readonly viewContainerRef = inject(ViewContainerRef);\n    private readonly spotlightTourService = inject(SpotlightTourService, { optional: true });\n\n    public ngOnInit() {\n        if (this.isField(this.config)) {\n            if (!this.config.id && this.id) {\n                this.config.id = this.id + '-' + this.config.name;\n            }\n\n            this.directiveConfig = new DynamicField({\n                group: this.group,\n                field: this.config,\n            });\n        } else if (this.isStructure(this.config)) {\n            this.directiveConfig = new DynamicStructure({\n                group: this.group,\n                config: this.config,\n            });\n        } else throw new Error(`Trying to use an unsupported type (${this.getType}).`);\n\n        this.component = this.directiveConfig.createComponent(this.viewContainerRef);\n\n        if (!isNullOrUndefined(this.component) && this.isStructure(this.config)) {\n            this.component.setInput('id', this.id);\n        }\n\n        if (this.component && 'errorMessages' in this.component.instance) {\n            this.component.setInput('errorMessages', this.errorMessages);\n        }\n\n        this.registerSpotlightStep();\n    }\n\n    public ngOnChanges() {\n        if (this.component) {\n            this.directiveConfig?.updateVariables(this.component);\n            if (this.component && 'errorMessages' in this.component.instance) {\n                this.component.setInput('errorMessages', this.errorMessages);\n            }\n        }\n    }\n\n    public ngOnDestroy(): void {\n        this.component?.destroy();\n        this.unregisterSpotlightStep();\n    }\n\n    private isField(config: FieldDynamicStructure | DynamicType): config is DynamicType {\n        return !this.isStructure(config);\n    }\n\n    private isStructure(config: FieldDynamicStructure | DynamicType): config is FieldDynamicStructure {\n        return STRUCTURE_TYPES_LIST.includes(config.type as StructureType);\n    }\n\n    private get getType() {\n        return this.config.type;\n    }\n\n    private registerSpotlightStep(): void {\n        const stepId = (this.config as FieldConfig)?.spotlightStepId;\n        if (!stepId || !this.spotlightTourService || !this.component) return;\n        this.spotlightTourService.registerElement(stepId, this.component.location);\n    }\n\n    private unregisterSpotlightStep(): void {\n        const stepId = (this.config as FieldConfig)?.spotlightStepId;\n        if (!stepId || !this.spotlightTourService) return;\n        this.spotlightTourService.unregisterElement(stepId);\n    }\n}\n\n","export class FieldSizeConfig {\n    sm?: number;\n    md?: number;\n    lg?: number;\n    xl?: number;\n}\nexport class FieldSize {\n    sm?: number;\n    md?: number;\n    lg?: number;\n    xl?: number;\n\n    constructor(size: FieldSizeConfig) {\n        this.sm = size.sm ?? 12;\n        this.md = size.md ?? 6;\n        this.lg = size.lg ?? 6;\n        this.xl = size.xl ?? 6;\n    }\n\n    getGridClass(): string {\n        const mapping: Record<string, string> = {\n            sm: '',\n            md: 'md:',\n            lg: 'lg:',\n            xl: 'xl:',\n        };\n\n        return Object.entries(this)\n            .map(([key, value]) => {\n                const prefix = mapping[key] ?? '';\n                return value ? `${prefix}col-span-${value}` : '';\n            })\n            .join(' ')\n            .trim();\n    }\n}\n\n","import { Injectable } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { isNullOrUndefined } from '@seniorsistemas/angular-components/utils';\nimport { Subject, takeUntil } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class FormFieldUtilsService {\n    isFunction(value: any): boolean {\n        return value instanceof Function;\n    }\n\n    trigger(callback: any) {\n        return callback();\n    }\n\n    fieldPropertyIsDisabled<T extends { disabled?: Function | boolean }>(fieldProperty: T): boolean {\n        if (!isNullOrUndefined(fieldProperty)) {\n            return typeof fieldProperty.disabled === 'function' ? fieldProperty.disabled() : !!fieldProperty.disabled;\n        }\n        return false;\n    }\n\n    getFieldPropertyMask(fieldData: Function | string) {\n        return typeof fieldData === 'function' ? fieldData() : fieldData;\n    }\n\n    getFieldProperty<T, K>(property: T | K, defaultResponse?: K) {\n        const response = typeof property === 'function' ? (property as Function)() : property;\n        return defaultResponse ? (response ?? defaultResponse) : response;\n    }\n\n    switchEmptyStringToNull(formControl: FormControl, onDestroy$: Subject<void>) {\n        formControl.valueChanges.pipe(takeUntil(onDestroy$)).subscribe((value: unknown) => {\n            if (value === '') {\n                formControl.setValue(null, { emitEvent: false });\n            }\n        });\n    }\n}\n\n","import { Component, inject, input } from '@angular/core';\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\n\nimport { NgClass } from '@angular/common';\nimport { ButtonComponent } from '@seniorsistemas/angular-components/button';\nimport { ControlErrorsModule } from '@seniorsistemas/angular-components/control-errors';\nimport {\n    ExpandedDynamicStructure,\n    ExpandedDynamicType,\n    RowConfig,\n    RowType,\n} from '../../../configurations/structure/row';\nimport { STRUCTURE_TYPES_LIST, StructureType } from '../../../configurations/structure/structure';\nimport { DynamicFormDirective } from '../../../dynamic-form.directive';\nimport { FieldSize } from '../../../form-field/configurations/field-size';\nimport { DynamicType } from '../../../form-field/configurations/fields/field';\nimport { FormFieldUtilsService } from '../../../services/form-field-utils.service';\nimport { BaseStructureComponentConfig } from '../../structure/base-structure-component';\n\n@Component({\n    templateUrl: './row.component.html',\n    selector: 's-row',\n    standalone: true,\n    imports: [ControlErrorsModule, ReactiveFormsModule, NgClass, ButtonComponent, DynamicFormDirective],\n})\nexport class RowComponent implements BaseStructureComponentConfig {\n    id = input<string>();\n    config = input.required<RowConfig>();\n\n    group = input.required<FormGroup>();\n    errorMessages = input<any>();\n\n    protected readonly formUtils = inject(FormFieldUtilsService);\n\n    protected getErrorMessages(errorMessages: any) {\n        if (errorMessages) return this.isFunction(errorMessages) ? errorMessages() : errorMessages;\n        return this.errorMessages();\n    }\n\n    protected isFunction(value: any): boolean {\n        return value instanceof Function;\n    }\n\n    protected fieldIsExpandedDynamicType(\n        field: ExpandedDynamicType | ExpandedDynamicStructure | DynamicType,\n    ): field is ExpandedDynamicType {\n        return !STRUCTURE_TYPES_LIST.includes(field.type as StructureType);\n    }\n\n    protected fieldGridClass(field: RowType) {\n        const fieldSize = new FieldSize(field.size ?? {});\n        return fieldSize.getGridClass();\n    }\n\n    protected getName(field: RowType) {\n        if ('customName' in field && field.customName) {\n            return field.customName as string;\n        } else if ('name' in field) {\n            return field.name;\n        }\n\n        return '';\n    }\n}\n\n","<div\n    class=\"w-full\"\n    [formGroup]=\"group()\"\n>\n    @let rowConfig = config();\n    @let rowIsVisible = formUtils.getFieldProperty(rowConfig.visible, true);\n    @if (rowIsVisible) {\n        <div class=\"grid w-screen max-w-full grid-cols-12 gap-4\">\n            @for (field of config().fields; let i = $index; track i) {\n                @let fieldName = getName(field);\n                @if (fieldIsExpandedDynamicType(field)) {\n                    @let fieldVisible = formUtils.getFieldProperty(field.visible, true);\n                    @if (fieldVisible) {\n                        <div\n                            class=\"p-1\"\n                            [ngClass]=\"fieldGridClass(field)\"\n                        >\n                            <ng-container *sDynamicForm=\"{ id: id(), config: field, group: group() }\"></ng-container>\n\n                            @if (fieldName) {\n                                <s-control-errors\n                                    [form]=\"group\"\n                                    [control]=\"group().controls[fieldName]\"\n                                    [errorMessages]=\"getErrorMessages(field.errorMessages)\"\n                                ></s-control-errors>\n                            }\n\n                            @if (field.footer) {\n                                @if (field.footer.help) {\n                                    @let footerHelpVisible =\n                                        field.footer.help.visible?.({\n                                            abstractControl: group().controls[fieldName],\n                                            formField: field,\n                                        });\n                                    @if (fieldName && field.footer.help.visible ? footerHelpVisible : true) {\n                                        <span style=\"color: #888b99\">\n                                            {{ field.footer.help.text }}\n                                        </span>\n                                    }\n                                }\n                            }\n\n                            @if (field.footer) {\n                                @let footerLinkVisible =\n                                    field.footer.link?.visible?.({\n                                        abstractControl: group().controls[fieldName],\n                                        formField: field,\n                                    });\n                                @if (fieldName && field.footer.link?.visible ? footerLinkVisible : true) {\n                                    <div style=\"margin-left: -17px\">\n                                        <s-button\n                                            [label]=\"field.footer.link?.label\"\n                                            priority=\"link\"\n                                            (clicked)=\"\n                                                field.footer.link?.onClick({\n                                                    abstractControl: group().controls[fieldName],\n                                                    formField: field,\n                                                })\n                                            \"\n                                            [auxiliary]=\"true\"\n                                        ></s-button>\n                                    </div>\n                                }\n                            }\n                            @if (field.bottomTemplate) {\n                                <ng-template [ngTemplateOutlet]=\"field.bottomTemplate\"></ng-template>\n                            }\n                        </div>\n                    }\n                } @else {\n                    @let gridClass = fieldGridClass(field);\n                    <div [ngClass]=\"gridClass\">\n                        <ng-container *sDynamicForm=\"{ id: id(), config: field, group: group() }\"></ng-container>\n                    </div>\n                }\n            }\n        </div>\n    }\n</div>\n\n","import { Component, input } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\n\nimport { FieldsetConfig } from '../../../configurations/structure/fieldset';\nimport { BaseStructureComponentConfig } from '../base-structure-component';\nimport { DynamicFormDirective } from '../../../dynamic-form.directive';\nimport { FieldsetModule } from '@seniorsistemas/angular-components/fieldset';\n@Component({\n    standalone: true,\n    imports: [DynamicFormDirective, FieldsetModule],\n    templateUrl: './fieldset.component.html',\n})\nexport class FieldsetComponent implements BaseStructureComponentConfig {\n    id = input<string>();\n    config = input.required<FieldsetConfig>();\n    group = input.required<FormGroup>();\n    errorMessages = input<any>();\n}\n\n","@let _config = config();\n<s-fieldset\n    [toggleable]=\"true\"\n    (onBeforeToggle)=\"_config.beforeToggle ? _config.beforeToggle($event) : null\"\n    (onAfterToggle)=\"_config.afterToggle ? _config.afterToggle($event) : null\"\n    [legend]=\"_config.header ? _config.header : ''\"\n>\n    @for (conf of _config.configs; let i = $index; track i) {\n        <ng-container\n            *sDynamicForm=\"{ id: id(), config: conf, group: group(), errorMessages: errorMessages() }\"\n        ></ng-container>\n    }\n</s-fieldset>\n\n","import { Component, input } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { SectionConfig } from '../../../configurations/structure/section';\nimport { BaseStructureComponentConfig } from '../base-structure-component';\nimport { DynamicFormDirective } from '../../../dynamic-form.directive';\n@Component({\n    standalone: true,\n    imports: [DynamicFormDirective],\n    selector: 's-section',\n    templateUrl: './section.component.html',\n    styleUrls: ['./section.component.scss'],\n})\nexport class SectionComponent implements BaseStructureComponentConfig {\n    id = input<string>();\n    config = input.required<SectionConfig>();\n    group = input.required<FormGroup>();\n\n    errorMessages = input<any>();\n\n    get flexContainer() {\n        return this.config().isFlex;\n    }\n\n    get configs() {\n        const _configs = this.config().configs || [];\n        return _configs.filter((x: any) => x.visible === undefined || x.visible());\n    }\n}\n\n","@let _config = config();\n\n@if (_config.header) {\n    <h3 class=\"sds-section-title\">\n        {{ _config.header }}\n    </h3>\n}\n\n<section\n    [class.flex-container]=\"flexContainer\"\n    [style.justify-content]=\"_config.justifyContent\"\n    [style.align-items]=\"_config.alignItems\"\n>\n    @for (conf of configs; let i = $index; track i) {\n        <ng-container\n            *sDynamicForm=\"{ id: id(), config: conf, group: group(), errorMessages: errorMessages() }\"\n        ></ng-container>\n    }\n</section>\n\n","import { Component, computed, input, ViewEncapsulation } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { DynamicStructure } from './configurations/structure/structure';\nimport { DynamicType } from './form-field/configurations/fields/field';\nimport { DynamicFormDirective } from './dynamic-form.directive';\n\n/**\n * @description Componente de formulário dinâmico que renderiza campos configuráveis\n * a partir de uma estrutura de dados (`DynamicStructure[]` ou `DynamicType[]`).\n * Suporta múltiplos tipos de campo (texto, número, select, data, arquivo, etc.)\n * e integra-se a um `FormGroup` Angular existente.\n *\n * @example\n * ```html\n * <s-dynamic-form\n *   [form]=\"meuFormGroup\"\n *   [configs]=\"estruturaDoCampos\" />\n * ```\n *\n * @category Inputs\n */\n@Component({\n    standalone: true,\n    imports: [DynamicFormDirective],\n    selector: 's-dynamic-form',\n    templateUrl: './dynamic-form.component.html',\n    styleUrls: ['dynamic-form.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n})\nexport class DynamicFormComponent {\n    /** @description Identificador único do formulário dinâmico no DOM. */\n    id = input<string>();\n\n    /** @description Lista de estruturas de campos dinâmicos a serem renderizados. @default [] */\n    configs = input<DynamicStructure[]>([]);\n\n    /**\n     * @deprecated Use o input `configs` ao invés deste. Será removido em versões futuras.\n     * @description Lista legada de campos dinâmicos no formato `DynamicType[]`.\n     */\n    fields = input<DynamicType[]>();\n\n    private dynamicTypeToStructure = computed(() => {\n        const fields = this.fields();\n        if (fields && fields.length) {\n            return dynamicTypeToDynamicStructure(fields);\n        }\n        return undefined;\n    });\n\n    conf = computed(() => (this.dynamicTypeToStructure() ? this.dynamicTypeToStructure() : this.configs()));\n\n    /** @description `FormGroup` Angular ao qual os campos dinâmicos serão vinculados. Campo obrigatório. */\n    form = input.required<FormGroup>();\n\n    /** @description Mapa de mensagens de erro customizadas por nome de validador, aplicadas globalmente aos campos do formulário. @default {} */\n    errorMessages = input<any>({});\n}\n\n/**\n * Transforma uma lista plana de `DynamicType` em uma estrutura aninhada de campos.\n * * Esta função encapsula os tipos dinâmicos dentro de um objeto de linha ('row'),\n * permitindo que eles sejam consumidos por componentes que esperam a interface `DynamicStructure`.\n *\n * @param {DynamicType[]} dynamicTypes - Array de campos dinâmicos a serem processados.\n * @returns {DynamicStructure} Retorna um array contendo um objeto de estrutura com a propriedade 'fields'.\n * * @example\n * const structure = formatToDynamicStructure(meusCampos);\n * // Retorno esperado: [{ type: 'row', fields: [...] }]\n */\nexport const dynamicTypeToDynamicStructure = (dynamicTypes: DynamicType[]): DynamicStructure[] => {\n    const dynamicStructure: DynamicStructure[] = [\n        {\n            type: 'row',\n            fields: dynamicTypes,\n        },\n    ];\n    return dynamicStructure;\n};\n\n","@for (config of conf(); track $index) {\n    <ng-container\n        *sDynamicForm=\"{\n            id: id(),\n            config,\n            group: form(),\n            errorMessages: errorMessages(),\n        }\"\n    >\n    </ng-container>\n}\n","import { animate, animateChild, group, query, state, style, transition, trigger } from '@angular/animations';\nimport { AsyncPipe, NgClass, NgIf, NgSwitch } from '@angular/common';\nimport { ChangeDetectorRef, Component, ElementRef, EventEmitter, forwardRef, input, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges, viewChild, ViewChild, ViewEncapsulation, inject } from '@angular/core';\nimport {\n    ControlValueAccessor,\n    FormControl,\n    FormGroup,\n    FormsModule,\n    NG_VALUE_ACCESSOR,\n    ReactiveFormsModule,\n} from '@angular/forms';\n\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { AutoCompleteMultipleKeyboardFixDirective } from '@seniorsistemas/angular-components/autocomplete';\nimport { BadgeModule } from '@seniorsistemas/angular-components/badge';\nimport { ButtonComponent } from '@seniorsistemas/angular-components/button';\nimport { DialogComponent } from '@seniorsistemas/angular-components/dialog';\nimport { EmptyStateModule } from '@seniorsistemas/angular-components/empty-state';\nimport { LoadingStateIndicators, LoadingStateModule } from '@seniorsistemas/angular-components/loading-state';\nimport { CalendarLocaleOptions, LocaleModule, LocalizedBignumberOptions } from '@seniorsistemas/angular-components/locale';\nimport { MaskFormatterModule } from '@seniorsistemas/angular-components/mask';\nimport { CheckDisabled } from '@seniorsistemas/angular-components/shared';\nimport { TableHeaderCheckboxModule } from '@seniorsistemas/angular-components/table-header';\nimport { TemplateModule } from '@seniorsistemas/angular-components/template';\nimport { isNullOrUndefined } from '@seniorsistemas/angular-components/utils';\nimport { Hotkey, HotkeysService } from 'angular2-hotkeys';\nimport BigNumber from 'bignumber.js';\nimport { SortMeta } from 'primeng/api';\nimport { AutoComplete, AutoCompleteCompleteEvent, AutoCompleteModule } from 'primeng/autocomplete';\nimport { Table, TableLazyLoadEvent, TableModule } from 'primeng/table';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { ExpandedDynamicType } from '../../configurations/structure/row';\nimport { DynamicStructure } from '../../configurations/structure/structure';\nimport { DynamicFormComponent, dynamicTypeToDynamicStructure } from '../../dynamic-form.component';\nimport { BignumberFieldConfig } from '../../form-field/configurations/fields/bignumber-field';\nimport { CurrencyFieldConfig } from '../../form-field/configurations/fields/currency-field';\nimport { DynamicType } from '../../form-field/configurations/fields/field';\nimport { NumberFieldConfig } from '../../form-field/configurations/fields/number-field';\nimport { SelectFieldConfig } from '../../form-field/configurations/fields/select-field';\nimport { TextFieldConfig } from '../../form-field/configurations/fields/text-field';\nimport { LookupSearchRequest } from './models/lookup-api.model';\nimport { DefaultFilter } from './types/default-filter';\nimport { LabelOptions } from './types/label-options';\n\n@Component({\n    standalone: true,\n    imports: [\n        AutoCompleteModule,\n        AutoCompleteMultipleKeyboardFixDirective,\n        FormsModule,\n        ReactiveFormsModule,\n        DialogComponent,\n        TranslateModule,\n        DynamicFormComponent,\n        ButtonComponent,\n        NgClass,\n        EmptyStateModule,\n        TableModule,\n        LoadingStateModule,\n        AsyncPipe,\n        LocaleModule,\n        NgIf,\n        BadgeModule,\n        MaskFormatterModule,\n        NgSwitch,\n        TableHeaderCheckboxModule,\n        TemplateModule,\n    ],\n    selector: 's-lookup',\n    templateUrl: './lookup.component.html',\n    styleUrls: ['./lookup.component.scss'],\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => LookupComponent),\n            multi: true,\n        },\n    ],\n    encapsulation: ViewEncapsulation.None,\n    animations: [\n        trigger('collapseContent', [\n            state(\n                'hidden',\n                style({\n                    width: '10px',\n                    padding: 0,\n                }),\n            ),\n            state(\n                'visible',\n                style({\n                    width: '*',\n                }),\n            ),\n            transition('visible <=> hidden', [\n                group([query('@childCollapseContent', animateChild()), animate('{{transitionParams}}')]),\n            ]),\n        ]),\n        trigger('childCollapseContent', [\n            state(\n                ':leave',\n                style({\n                    opacity: 0,\n                }),\n            ),\n            state(\n                ':enter',\n                style({\n                    opacity: 1,\n                }),\n            ),\n            transition('* <=> *', animate('{{transitionParams}}')),\n        ]),\n    ],\n})\nexport class LookupComponent implements ControlValueAccessor, OnChanges, OnInit, OnDestroy {\n    private readonly hotkeysService = inject(HotkeysService);\n    protected readonly translateService = inject(TranslateService);\n    protected readonly changeDetectorRef = inject(ChangeDetectorRef);\n\n    private readonly MAP_FORM_DIALOG_CONTROLS = new Map<string, string>();\n    private readonly lookupDialogContainer = viewChild<ElementRef<HTMLElement>>('dialogContainer');\n\n    protected rowType = 'Row';\n    public indicatorLogo = LoadingStateIndicators.Logo;\n    public static nextId = 0;\n\n    @Input()\n    public formControlName?: string;\n\n    @Input()\n    public id = `s-lookup-${LookupComponent.nextId++}`;\n\n    @Input()\n    public autocompleteForceSelection = true;\n\n    @Input()\n    public maxlength: number | null = null;\n\n    @Input()\n    public multiple = false;\n\n    @Input({ required: true })\n    public dataKey!: string;\n\n    @Input()\n    public disabled = false;\n\n    @Input()\n    public showSearch = true;\n\n    @Input()\n    public lookupSuggestions: any[] = [];\n\n    @Input()\n    public lookupDisplayField?: string;\n\n    @Input()\n    public lookupDisplayFieldTooltip = false;\n\n    @Input()\n    public lookupEmptyMessage?: string;\n\n    @Input({ transform: (value: string | undefined) => value ?? 'body' })\n    public lookupAppendTo? = 'body';\n\n    @Input()\n    public searchEmptyDescription?: string;\n\n    @Input()\n    public searchGridData: any[] = [];\n\n    @Input()\n    public searchTotalRecords = 0;\n\n    @Input()\n    public searchFields: (DynamicType & { customName?: string })[] = [];\n\n    @Input()\n    public searchGridFields: DynamicType[] = [];\n\n    @Input()\n    public multiSortMeta: SortMeta[] = [];\n\n    @Input()\n    public placeholder?: string;\n\n    @Input()\n    public sortableColumnsDisabled: string[] = [];\n\n    @Input()\n    public lookupRowProps: string[] = [];\n\n    @Input()\n    public defaultFilter: DefaultFilter[] = [];\n\n    @Input()\n    public showAddOption = false;\n\n    @Input()\n    public showEditOption = false;\n\n    @Input()\n    public showRemoveOption = false;\n\n    dialogFullScreen = input(false);\n\n    @Output()\n    // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n    public onLookupRequest = new EventEmitter<string>();\n\n    @Output()\n    // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n    public onSearchRequest = new EventEmitter<LookupSearchRequest>();\n\n    @Output()\n    // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n    public onFocus = new EventEmitter();\n\n    @Output()\n    // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n    public onBlur = new EventEmitter();\n\n    @Output()\n    // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n    public onKeyUp = new EventEmitter();\n\n    @Output()\n    // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n    public onSelect = new EventEmitter();\n\n    @Output()\n    // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n    public onUnselect = new EventEmitter();\n\n    @Output()\n    // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n    public onClear = new EventEmitter();\n\n    @Output()\n    // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n    public onAdd = new EventEmitter();\n\n    @Output()\n    // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n    public onEdit = new EventEmitter<unknown>();\n\n    @Output()\n    // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n    public onRemove = new EventEmitter<unknown[]>();\n\n    @Output()\n    // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n    public onClearButtonClick = new EventEmitter<void>();\n\n    @ViewChild(Table, { static: false })\n    public table: Table | null = null;\n\n    @ViewChild(AutoComplete, { static: false })\n    public autocomplete: AutoComplete | null = null;\n\n    @Input()\n    public labelOptions?: Partial<LabelOptions>;\n\n    public value: any;\n    public loading = false;\n    public animating = false;\n    public dialogVisible = false;\n    public collapsed = false;\n    public selected: any[] = [];\n    public formGroupDialog!: FormGroup<any>;\n    public transitionOptions = '400ms cubic-bezier(0.86, 0, 0.07, 1)';\n\n    protected searchFieldsDynamicStructure: DynamicStructure[] = [];\n\n    private onChange?: Function;\n    private onTouched?: Function;\n    private originalFormValues: Record<string, any> = {};\n    private readonly ngUnsubscribe = new Subject<void>();\n\n    public ngOnInit() {\n        if (!this.searchGridFields.length) {\n            this.searchGridFields = this.searchFields.map((item) => {\n                return { ...item };\n            });\n        }\n        this.searchFields = this.searchFields.map((value) => {\n            const name = value.name.replaceAll('.', '_');\n            this.MAP_FORM_DIALOG_CONTROLS.set(value.name, name);\n            return {\n                customName: name,\n                ...value,\n            };\n        });\n\n        this.searchFieldsDynamicStructure = dynamicTypeToDynamicStructure(\n            this.searchFields.map((searchField: ExpandedDynamicType) => {\n                searchField.size = { sm: 12, md: 12, lg: 12, xl: 12 };\n                return {\n                    ...searchField,\n                };\n            }),\n        );\n\n        this.searchGridFields = this.searchGridFields.map((gridField) => {\n            const gridType = gridField.type;\n            if (gridField.label) {\n                (gridField as any)['width'] = this.getColWidth(gridField.label);\n            }\n\n            if (gridType === 'date' || gridType === 'time') {\n                const calendarOptions = new CalendarLocaleOptions({ ...gridField.calendarLocaleOptions });\n\n                if (calendarOptions?.dateFormat) {\n                    switch (gridField.type) {\n                        case 'date':\n                            calendarOptions.dateFormat = this._convertToMomentDateFormat(calendarOptions.dateFormat);\n                            break;\n                        case 'time':\n                            calendarOptions.dateFormat = this._convertToMomentHourFormat(\n                                calendarOptions.hourFormat!,\n                                calendarOptions.dateFormat,\n                            );\n                            break;\n                    }\n                    gridField.calendarLocaleOptions = calendarOptions;\n                }\n            }\n\n            return gridField;\n        });\n\n        const formGroup = this.searchFields.reduce((result: { [key: string]: FormControl }, field) => {\n            if (field.customName) {\n                const defaultValue = 'defaultValue' in field ? field.defaultValue : undefined;\n\n                result[field.customName] = new FormControl(defaultValue);\n                this.originalFormValues[field.customName] = defaultValue;\n            }\n            return result;\n        }, {});\n\n        this.formGroupDialog = new FormGroup(formGroup);\n\n        this._subscribeEvents();\n    }\n\n    public printRecordTotalizer(): string {\n        if (this.labelOptions?.searchTotalRecordsLabel) {\n            return this.labelOptions?.searchTotalRecordsLabel;\n        }\n\n        const recordLabel = this.labelOptions?.recordLabel\n            ? `${this.searchTotalRecords} ${this.labelOptions?.recordLabel}`\n            : this.translateService.instant('platform.angular_components.total_record', {\n                  count: this.searchTotalRecords,\n              });\n\n        const recordsLabel = this.labelOptions?.recordsLabel\n            ? `${this.searchTotalRecords} ${this.labelOptions?.recordsLabel}`\n            : this.translateService.instant('platform.angular_components.total_records', {\n                  count: this.searchTotalRecords,\n              });\n\n        return this.searchTotalRecords === 1 ? recordLabel : recordsLabel;\n    }\n\n    private _convertToMomentHourFormat(hourFormat: string, format: string) {\n        if (format === 'dd/mm/yy') {\n            // valor padrão para o format.\n            return 'LTS';\n        }\n\n        if (hourFormat === '12') {\n            return format\n                .replace(/\\bH\\b/, 'h') // hour (12 hour time) (no leading zero)\n                .replace(/\\bHH\\b/, 'hh'); // hour (12 hour time)\n        }\n\n        if (hourFormat === '24') {\n            return format\n                .replace(/\\bh\\b/, 'H') // hour (24 hour time) (no leading zero)\n                .replace(/\\bhh\\b/, 'HH'); // hour (24 hour time)\n        }\n\n        return format;\n    }\n\n    private _convertToMomentDateFormat(format: string): string {\n        // A ordem dos replaces é importante.\n        return format\n            .replace(/\\bd\\b/, 'D') // day of month (no leading zero)\n            .replace(/\\bdd\\b/, 'DD') // day of month\n            .replace(/\\bo\\b/, 'DDD') // day of the year (no leading zero)\n            .replace(/\\boo\\b/, 'DDDD') // day of the year\n            .replace(/\\bM\\b/, 'MMM') // month name short\n            .replace(/\\bMM\\b/, 'MMMM') // month name long\n            .replace(/\\bm\\b/, 'M') // month of year (no leading)\n            .replace(/\\bmm\\b/, 'MM') // month of year\n            .replace(/\\by\\b/, 'YY') // year (two digits)\n            .replace(/\\byy\\b/, 'YYYY'); // year (four digits)\n    }\n\n    public ngOnChanges(changes: SimpleChanges) {\n        if (this.dialogVisible && changes['searchGridData']) {\n            this.loading = false;\n        }\n\n        this._setFocusFilter();\n    }\n\n    public ngOnDestroy() {\n        this.ngUnsubscribe.next();\n        this.ngUnsubscribe.complete();\n    }\n\n    public getGridData() {\n        return this.searchGridData;\n    }\n\n    public getLookupSuggestions() {\n        return this.lookupSuggestions;\n    }\n\n    protected makeSearchRequestParams(event: TableLazyLoadEvent): LookupSearchRequest {\n        const filters = this.formGroupDialog?.getRawValue();\n        const mappedObjectChanges =\n            Array.from(this.MAP_FORM_DIALOG_CONTROLS.entries()).map(([field, customName]) => ({ field, customName })) ??\n            [];\n        mappedObjectChanges.forEach((item) => {\n            const value = filters[item.customName];\n            delete filters[item.customName];\n            filters[item.field] = value;\n        });\n        const params = { ...event, filterData: filters };\n        const { multiSortMeta } = event;\n        this.multiSortMeta = multiSortMeta || this.multiSortMeta;\n\n        return params as LookupSearchRequest;\n    }\n\n    public lazyLoadGrid(event: TableLazyLoadEvent) {\n        // Ao definir uma ordenação na tabela do lookup esse método é chamado 2 vezes https://github.com/primefaces/primeng/issues/5480\n        const params = this.makeSearchRequestParams(event);\n        this.onSearchRequest.next(params);\n    }\n\n    public onCompleteMethod(event: AutoCompleteCompleteEvent): void {\n        if (!this.autocompleteForceSelection) {\n            this.onChange?.(this.value === '' ? null : this.value);\n        }\n\n        this.onLookupRequest.next(event.query);\n    }\n\n    public setDefaultFilters() {\n        if (!this.defaultFilter) {\n            return;\n        }\n\n        const filteredValues = this.defaultFilter.filter(({ field }) => {\n            const formControlName = this.MAP_FORM_DIALOG_CONTROLS.get(field) as string;\n            const hasFormControl = this.formGroupDialog.contains(formControlName);\n            const isDirty = this.formGroupDialog.get(formControlName)?.dirty;\n            return hasFormControl && !isDirty;\n        });\n\n        filteredValues.forEach(({ value, field }) => {\n            const formControlName = this.MAP_FORM_DIALOG_CONTROLS.get(field) as string;\n            this.formGroupDialog.get(formControlName)?.patchValue(value instanceof Function ? value() : value);\n        });\n    }\n\n    @CheckDisabled()\n    public async showDialog() {\n        this.setDefaultFilters();\n        this.searchGridData = [];\n        this.onTouched?.();\n        this.hotkeysService.pause([...this.hotkeysService.hotkeys]);\n        this.setHotkeys();\n\n        let selected: any = [];\n        if (this.multiple && this.value) {\n            selected = selected.concat(this.value);\n        } else if (this.value) {\n            selected = [this.value];\n        }\n        this.selected = selected;\n\n        this.loading = true;\n        this.dialogVisible = true;\n    }\n\n    setInputs(componentRef: any, configs: any, form: any) {\n        componentRef.instance.configs = configs;\n        componentRef.instance.form = form;\n\n        // chame ngOnChanges manualmente se necessário\n        if (typeof componentRef.instance.ngOnChanges === 'function') {\n            componentRef.instance.ngOnChanges();\n        }\n    }\n\n    onVisibleChange(visibilityState: boolean) {\n        if (visibilityState) {\n            return;\n        }\n        this.hideDialog();\n    }\n    public hideDialog() {\n        if (!this.autocomplete) {\n            return;\n        }\n        const { inputEL, multiInputEl } = this.autocomplete;\n        this.dialogVisible = false;\n        this.collapsed = false;\n        this.hotkeysService.unpause([...this.hotkeysService.pausedHotkeys]);\n        if (this.multiple) {\n            multiInputEl?.nativeElement?.focus();\n        } else {\n            inputEL?.nativeElement?.focus();\n        }\n\n        this.formGroupDialog.reset(this.originalFormValues);\n    }\n\n    public search() {\n        this.resetTable();\n        this.collapsed = true;\n        const dialogContainer = this.lookupDialogContainer()?.nativeElement;\n        if (dialogContainer) {\n            dialogContainer.scrollIntoView({ behavior: 'smooth' });\n        }\n    }\n\n    public clear() {\n        this.formGroupDialog?.reset(this.originalFormValues);\n        this.resetTable();\n        this.onClearButtonClick.emit();\n    }\n\n    protected resetTable() {\n        this.table?.reset();\n    }\n\n    public select() {\n        if (!this.selected.length) return;\n\n        const selected = this.selected && (this.multiple ? this.selected : this.selected[0]);\n        this.value = selected;\n        this.onSelect.next(selected);\n        this.hideDialog();\n    }\n\n    public onSelectionChange(selected: any) {\n        if (!selected) return;\n        if (Array.isArray(selected)) this.selected = selected;\n        else this.selected = [selected];\n    }\n\n    public registerOnChange(onChange: Function) {\n        this.onChange = (value: any) => {\n            this.writeValue(value);\n            onChange(value);\n        };\n    }\n\n    public registerOnTouched(onTouched: Function) {\n        this.onTouched = onTouched;\n    }\n\n    public writeValue(value: any) {\n        this.value = value;\n    }\n\n    public setDisabledState(disabled: boolean) {\n        this.disabled = disabled;\n    }\n\n    public getFieldValue(obj: any, path: string) {\n        return path.split('.').reduce((result, prop) => (result[prop] === undefined ? '' : result[prop]), obj);\n    }\n\n    public getBadgeFromValue(value: unknown, field: SelectFieldConfig) {\n        const options = typeof field.options === 'function' ? field.options() : field.options;\n        return options?.find((opt) => opt.value === value)?.badge;\n    }\n\n    public getLabelForValue(value: unknown, field: SelectFieldConfig) {\n        const options = typeof field.options === 'function' ? field.options() : field.options;\n        if (!options) return `${value}`;\n\n        const option = options.find((opt) => opt.value === value);\n        return option ? option.label : `${value}`;\n    }\n\n    public isBooleanValue(obj: any, path: string) {\n        const value = this.getFieldValue(obj, path);\n        if (value === true || value === false) return true;\n        else return false;\n    }\n\n    public getFieldWidth(col: any) {\n        return col.width;\n    }\n\n    public getBooleanLabel(obj: any, path: string, optionsLabel: BooleanOptionsLabel | undefined) {\n        if (!optionsLabel) {\n            return;\n        }\n        if (this.getFieldValue(obj, path)) {\n            return optionsLabel.true;\n        } else {\n            return optionsLabel.false;\n        }\n    }\n\n    public isNumber(obj: any, path: string) {\n        return !new BigNumber(this.getFieldValue(obj, path)).isNaN();\n    }\n\n    public setHotkeys() {\n        const clearHotkey = this.newHotkey('alt+shift+l', this.clear.bind(this));\n        const findHotkey = this.newHotkey('alt+shift+f', this.search.bind(this));\n        const hideHotkey = this.newHotkey('alt+shift+c', this.hideDialog.bind(this));\n        const selectHotkey = this.newHotkey('alt+shift+s', this.select.bind(this));\n\n        const bindedHotkeys = [clearHotkey, findHotkey, hideHotkey, selectHotkey];\n        bindedHotkeys.forEach((hotkey: Hotkey) => this.hotkeysService.add(hotkey));\n    }\n\n    private newHotkey(combo: string, fn: Function): Hotkey {\n        return new Hotkey(combo, () => {\n            fn();\n            return false;\n        }, ['INPUT', 'SELECT', 'TEXTAREA']);\n    }\n\n    public filterToggle() {\n        if (this.animating) return;\n\n        this.animating = true;\n        this.collapsed = !this.collapsed;\n    }\n\n    public onToggleDone() {\n        this.animating = false;\n    }\n\n    /**\n     * Calculate the table column size. The minimum value is 14.286em, which is equals to 200px duo to the current font size.\n     * @param label Column name.\n     */\n    public getColWidth(label: string) {\n        const size = label.length;\n        if (size < 14.286) return `14.286em`;\n        return `${size}em`;\n    }\n\n    public getScale(scale: any): number {\n        return this.isFunction(scale) ? scale() : scale;\n    }\n\n    private isFunction(value: any): boolean {\n        return value instanceof Function;\n    }\n\n    public getDoubleMaskConfig(col: NumberFieldConfig | BignumberFieldConfig): LocalizedBignumberOptions {\n        return {\n            scale: this.getScale(col.scale),\n            decimalSeparator: col.numberLocaleOptions?.decimalSeparator,\n            thousandsSeparator: col.numberLocaleOptions?.thousandsSeparator,\n            prefix: '',\n        };\n    }\n\n    public getMoneyMaskConfig(col: CurrencyFieldConfig): LocalizedBignumberOptions {\n        return {\n            scale: this.getScale(col.scale),\n            decimalSeparator: col.numberLocaleOptions?.decimalSeparator,\n            thousandsSeparator: col.numberLocaleOptions?.thousandsSeparator,\n            prefix: col.numberLocaleOptions?.currencySymbol,\n        };\n    }\n\n    public getIntegerMaskConfig(col: BignumberFieldConfig | NumberFieldConfig): LocalizedBignumberOptions {\n        return {\n            scale: 0,\n            thousandsSeparator: col.numberLocaleOptions?.thousandsSeparator,\n            prefix: '',\n        };\n    }\n\n    public getNumberMaskConfig(col: NumberFieldConfig | BignumberFieldConfig): LocalizedBignumberOptions {\n        return {\n            scale: this.getScale(col.scale),\n            decimalSeparator: col.numberLocaleOptions?.decimalSeparator,\n            thousandsSeparator: col.numberLocaleOptions?.thousandsSeparator,\n            prefix: col.numberLocaleOptions?.currencySymbol,\n        };\n    }\n\n    public parseValueMaskValue(col: DynamicType, rowData: any) {\n        if (this.fieldHasMask(col)) {\n            const _mask = col.mask;\n            const isFunction = this.isFunction(_mask);\n            return isFunction ? (_mask as Function)({ value: rowData }) : _mask;\n        }\n    }\n\n    public fieldHasMask(field: DynamicType): field is NumberFieldConfig | BignumberFieldConfig | TextFieldConfig {\n        return (\n            field.type === 'integer' ||\n            field.type === 'number' ||\n            field.type === 'double' ||\n            field.type === 'string' ||\n            field.type === 'binary'\n        );\n    }\n\n    public onTableRowDoubleClick(rowData: any): void {\n        this.selected = [rowData];\n        this.select();\n    }\n\n    private _setFocusFilter() {\n        if (this.dialogVisible && !this.collapsed) {\n            const input = this.lookupDialogContainer()?.nativeElement.querySelector('input');\n            if (input) {\n                (input as HTMLInputElement).focus();\n            }\n        }\n    }\n\n    private _subscribeEvents(): void {\n        this.onSearchRequest.pipe(takeUntil(this.ngUnsubscribe)).subscribe(() => (this.loading = true));\n\n        this.onSelect.pipe(takeUntil(this.ngUnsubscribe)).subscribe(() => this.onChange?.(this.value));\n\n        this.onUnselect.pipe(takeUntil(this.ngUnsubscribe)).subscribe(() => this.onChange?.(this.value));\n\n        this.onClear.pipe(takeUntil(this.ngUnsubscribe)).subscribe(() => {\n            if (this.multiple) {\n                return;\n            }\n            this.onChange?.(null);\n        });\n\n        this.onFocus.pipe(takeUntil(this.ngUnsubscribe)).subscribe(() => {\n            this.onTouched?.();\n        });\n\n        this.onBlur.pipe(takeUntil(this.ngUnsubscribe)).subscribe((event: Event) => {\n            if (isNullOrUndefined(this.lookupDisplayField)) return;\n\n            const target = event.target as HTMLInputElement;\n            const currentValue = this.value && this.value[this.lookupDisplayField];\n            const { value } = target;\n\n            if (this.multiple || !currentValue || currentValue == value) return;\n\n            const newValue = '';\n            target.value = newValue;\n            this.onChange?.(newValue);\n        });\n    }\n}\n\nexport interface BooleanOptionsLabelConfig {\n    true: string;\n    false: string;\n    empty?: string;\n    clear?: string;\n}\n\nexport class BooleanOptionsLabel {\n    public true: string;\n    public false: string;\n    public empty?: string;\n    public clear?: string;\n\n    constructor(config: BooleanOptionsLabelConfig) {\n        this.true = config.true;\n        this.false = config.false;\n        this.empty = config.empty;\n        this.clear = config.clear;\n    }\n}\n\n","<div [ngClass]=\"{ inputgroup: showSearch, 'native-dropdown': !showSearch }\">\n    <p-autoComplete\n        #autocomplete\n        sAutoCompleteMultipleFix\n        [(ngModel)]=\"value\"\n        [disabled]=\"disabled\"\n        [dataKey]=\"dataKey\"\n        [multiple]=\"multiple\"\n        [inputId]=\"id + '-autocomplete'\"\n        [forceSelection]=\"autocompleteForceSelection\"\n        [maxlength]=\"maxlength\"\n        [suggestions]=\"getLookupSuggestions()\"\n        (completeMethod)=\"onCompleteMethod($event)\"\n        (onSelect)=\"onSelect.next($event)\"\n        (onBlur)=\"onBlur.next($event)\"\n        (onFocus)=\"onFocus.next($event)\"\n        (onUnselect)=\"onUnselect.next($event)\"\n        (onClear)=\"onClear.next($event)\"\n        (onKeyUp)=\"onKeyUp.next($event)\"\n        [field]=\"lookupDisplayField\"\n        [emptyMessage]=\"lookupEmptyMessage\"\n        [dropdown]=\"!showSearch\"\n        [appendTo]=\"lookupAppendTo\"\n        [placeholder]=\"placeholder || ' '\"\n        [autoHighlight]=\"true\"\n        inputStyleClass=\"mousetrap\"\n    >\n    </p-autoComplete>\n    @if (showSearch) {\n        <button\n            class=\"button-addon\"\n            [class.button-addon--disabled]=\"disabled\"\n            [disabled]=\"disabled\"\n            (click)=\"showDialog()\"\n        >\n            <i class=\"fa fa-search\"></i>\n        </button>\n    }\n</div>\n\n<s-dialog\n    [(visible)]=\"dialogVisible\"\n    (visibleChange)=\"onVisibleChange($event!)\"\n    [header]=\"labelOptions?.searchTitle || 'platform.angular_components.advanced_search' | translate\"\n    contentClassName=\"s-lookup-modal\"\n    [size]=\"dialogFullScreen() ? 'fullscreen' : 'xl'\"\n>\n    @if (dialogVisible) {\n        <div\n            class=\"s-lookup-modal-container\"\n            #dialogContainer\n        >\n            @if (searchFields && searchFields.length) {\n                <div\n                    class=\"filter\"\n                    [@collapseContent]=\"\n                        collapsed\n                            ? { value: 'hidden', params: { transitionParams: transitionOptions } }\n                            : { value: 'visible', params: { transitionParams: transitionOptions } }\n                    \"\n                    (@collapseContent.done)=\"onToggleDone()\"\n                >\n                    <form\n                        [formGroup]=\"formGroupDialog\"\n                        novalidate\n                        autocomplete=\"off\"\n                    >\n                        @if (!collapsed) {\n                            <div\n                                class=\"form-content\"\n                                [@childCollapseContent]=\"\n                                    collapsed\n                                        ? { value: ':leave', params: { transitionParams: transitionOptions } }\n                                        : { value: ':enter', params: { transitionParams: transitionOptions } }\n                                \"\n                            >\n                                <div class=\"filter-title sds-section-title\">\n                                    {{ labelOptions?.filterTitle || 'platform.angular_components.filters' | translate }}\n                                </div>\n                                <div class=\"form-fields\">\n                                    <s-dynamic-form\n                                        [configs]=\"searchFieldsDynamicStructure\"\n                                        [form]=\"formGroupDialog\"\n                                    >\n                                    </s-dynamic-form>\n                                </div>\n                                <div class=\"ui-g\">\n                                    <div class=\"ui-g-12\">\n                                        <s-button\n                                            [id]=\"id + '-filter-button'\"\n                                            type=\"submit\"\n                                            [label]=\"\n                                                labelOptions?.filterLabel || 'platform.angular_components.filter'\n                                                    | translate\n                                            \"\n                                            (clicked)=\"search()\"\n                                            sTooltip=\"(ALT + SHIFT + F)\"\n                                        >\n                                        </s-button>\n                                        <s-button\n                                            [id]=\"id + '-clear-button'\"\n                                            type=\"button\"\n                                            [label]=\"\n                                                labelOptions?.clearLabel || 'platform.angular_components.clear'\n                                                    | translate\n                                            \"\n                                            (clicked)=\"clear()\"\n                                            priority=\"link\"\n                                            sTooltip=\"(ALT + SHIFT + L)\"\n                                        >\n                                        </s-button>\n                                    </div>\n                                </div>\n                            </div>\n                        }\n                    </form>\n                </div>\n            }\n            @if (searchFields && searchFields.length) {\n                <div class=\"filter-toggle\">\n                    <button\n                        [id]=\"id + '-filter-toggle-button'\"\n                        type=\"button\"\n                        (click)=\"filterToggle()\"\n                    >\n                        <span\n                            class=\"fa\"\n                            [ngClass]=\"{ 'fa-chevron-left': !collapsed, 'fa-chevron-right': collapsed }\"\n                            aria-hidden=\"true\"\n                        >\n                        </span>\n                    </button>\n                </div>\n            }\n            @let isEmptyContent = !searchTotalRecords && !loading;\n            <div\n                class=\"content\"\n                #contentContainer\n                [ngClass]=\"{ 'empty-content': isEmptyContent }\"\n            >\n                @if (isEmptyContent) {\n                    <s-empty-state\n                        [id]=\"id + '-empty-state'\"\n                        [title]=\"\n                            labelOptions?.searchEmptyTitle || 'platform.angular_components.no_records_found' | translate\n                        \"\n                        [description]=\"searchEmptyDescription\"\n                        iconClass=\"fa fa-search\"\n                    >\n                    </s-empty-state>\n                }\n                <div class=\"content-child\">\n                    <p-table\n                        [dataKey]=\"dataKey\"\n                        [value]=\"getGridData()\"\n                        [columns]=\"searchGridFields\"\n                        [lazy]=\"true\"\n                        [scrollable]=\"true\"\n                        [paginator]=\"true\"\n                        sortMode=\"multiple\"\n                        [totalRecords]=\"searchTotalRecords\"\n                        [rows]=\"10\"\n                        [selection]=\"selected\"\n                        (onLazyLoad)=\"lazyLoadGrid($event)\"\n                        [multiSortMeta]=\"multiSortMeta\"\n                        [attr.data-hidden]=\"!searchTotalRecords && !loading\"\n                        [selectionMode]=\"multiple ? 'multiple' : 'single'\"\n                        (selectionChange)=\"onSelectionChange($event)\"\n                        *sLoadingState=\"{ loading: loading, indicator: indicatorLogo }\"\n                    >\n                        <ng-template pTemplate=\"caption\">\n                            <div>\n                                @if (showAddOption) {\n                                    <s-button\n                                        priority=\"default\"\n                                        [label]=\"'platform.angular_components.add' | translate\"\n                                        (clicked)=\"onAdd.emit()\"\n                                    >\n                                    </s-button>\n                                }\n                                @if (showEditOption) {\n                                    <s-button\n                                        priority=\"default\"\n                                        [label]=\"'platform.angular_components.edit' | translate\"\n                                        [disabled]=\"selected.length !== 1\"\n                                        (clicked)=\"onEdit.emit(this.selected[0])\"\n                                    >\n                                    </s-button>\n                                }\n                                @if (showRemoveOption) {\n                                    <s-button\n                                        priority=\"default\"\n                                        [label]=\"'platform.angular_components.remove' | translate\"\n                                        [disabled]=\"!selected.length\"\n                                        (clicked)=\"onRemove.emit(this.selected)\"\n                                    >\n                                    </s-button>\n                                }\n                            </div>\n                        </ng-template>\n                        <ng-template\n                            pTemplate=\"colgroup\"\n                            let-columns\n                        >\n                            <colgroup>\n                                @if (multiple) {\n                                    <col style=\"width: 50px\" />\n                                }\n\n                                @for (col of columns; track $index) {\n                                    <col [style.width]=\"col.width\" />\n                                }\n                            </colgroup>\n                        </ng-template>\n                        <ng-template\n                            pTemplate=\"header\"\n                            let-columns\n                        >\n                            <tr>\n                                @if (multiple) {\n                                    <th style=\"width: 50px\">\n                                        <s-table-header-checkbox\n                                            [useAllObject]=\"lookupRowProps ? false : true\"\n                                            [rowProps]=\"lookupRowProps\"\n                                        >\n                                        </s-table-header-checkbox>\n                                    </th>\n                                }\n                                @for (col of columns; track $index) {\n                                    <th\n                                        [style.width]=\"col.width\"\n                                        [pSortableColumn]=\"col.name\"\n                                        [pSortableColumnDisabled]=\"sortableColumnsDisabled.includes(col.name)\"\n                                    >\n                                        <div class=\"senior-header\">\n                                            <span class=\"senior-header-title\">{{ col.label }}</span>\n                                            @if (!sortableColumnsDisabled.includes(col.name)) {\n                                                <p-sortIcon [field]=\"col.name\"> </p-sortIcon>\n                                            }\n                                        </div>\n                                    </th>\n                                }\n                            </tr>\n                        </ng-template>\n                        <ng-template\n                            pTemplate=\"body\"\n                            let-rowData\n                            let-columns\n                            let-rowIndex=\"rowIndex\"\n                        >\n                            <tr\n                                sNavigation\n                                [pSelectableRow]=\"rowData\"\n                                [pSelectableRowIndex]=\"rowIndex\"\n                                sDoubleClick\n                                (onDoubleClick)=\"onTableRowDoubleClick(rowData)\"\n                            >\n                                @if (multiple) {\n                                    <td\n                                        style=\"width: 50px\"\n                                        tabindex=\"0\"\n                                    >\n                                        <p-tableCheckbox\n                                            [value]=\"rowData\"\n                                            [pSelectableRow]=\"rowData\"\n                                        >\n                                        </p-tableCheckbox>\n                                    </td>\n                                }\n                                @for (col of searchGridFields; track $index) {\n                                    <td\n                                        [style.width]=\"getFieldWidth(col)\"\n                                        [ngSwitch]=\"col.type\"\n                                        tabindex=\"0\"\n                                    >\n                                        @switch (col.type) {\n                                            @case ('boolean') {\n                                                <ng-container\n                                                    *ngIf=\"isBooleanValue(rowData, col.name); else emptyTemplate\"\n                                                >\n                                                    <span>{{\n                                                        getBooleanLabel(rowData, col.name, col.optionsLabel)\n                                                    }}</span>\n                                                </ng-container>\n                                            }\n                                            @case ('date') {\n                                                <ng-container\n                                                    *ngIf=\"getFieldValue(rowData, col.name); else emptyTemplate\"\n                                                >\n                                                    <span>{{\n                                                        getFieldValue(rowData, col.name)\n                                                            | localizedDate\n                                                                : col.calendarLocaleOptions?.dateFormat || 'L'\n                                                            | async\n                                                    }}</span>\n                                                </ng-container>\n                                            }\n                                            @case ('dateTime') {\n                                                <ng-container\n                                                    *ngIf=\"getFieldValue(rowData, col.name); else emptyTemplate\"\n                                                >\n                                                    <span>{{\n                                                        getFieldValue(rowData, col.name) | localizedDate | async\n                                                    }}</span>\n                                                </ng-container>\n                                            }\n                                            @case ('localDateTime') {\n                                                <ng-container\n                                                    *ngIf=\"getFieldValue(rowData, col.name); else emptyTemplate\"\n                                                >\n                                                    <span>{{\n                                                        getFieldValue(rowData, col.name) | localizedDate | async\n                                                    }}</span>\n                                                </ng-container>\n                                            }\n                                            @case ('time') {\n                                                <ng-container\n                                                    *ngIf=\"getFieldValue(rowData, col.name); else emptyTemplate\"\n                                                >\n                                                    <span>{{\n                                                        getFieldValue(rowData, col.name)\n                                                            | localizedTime\n                                                                : col.calendarLocaleOptions?.dateFormat || 'LTS'\n                                                            | async\n                                                    }}</span>\n                                                </ng-container>\n                                            }\n                                            @case ('integer') {\n                                                <ng-container *ngIf=\"isNumber(rowData, col.name); else emptyTemplate\">\n                                                    <span>\n                                                        {{\n                                                            getFieldValue(rowData, col.name)\n                                                                | localizedBignumber: getIntegerMaskConfig(col)\n                                                                | async\n                                                        }}\n                                                    </span>\n                                                </ng-container>\n                                            }\n                                            @case ('double') {\n                                                <ng-container *ngIf=\"isNumber(rowData, col.name); else emptyTemplate\">\n                                                    <span>\n                                                        {{\n                                                            getFieldValue(rowData, col.name)\n                                                                | localizedBignumber: getDoubleMaskConfig(col)\n                                                                | async\n                                                        }}\n                                                    </span>\n                                                </ng-container>\n                                            }\n                                            @case ('money') {\n                                                <ng-container *ngIf=\"isNumber(rowData, col.name); else emptyTemplate\">\n                                                    <span>\n                                                        {{\n                                                            getFieldValue(rowData, col.name)\n                                                                | localizedBignumber: getMoneyMaskConfig(col)\n                                                                | async\n                                                        }}\n                                                    </span>\n                                                </ng-container>\n                                            }\n                                            @case ('number') {\n                                                <ng-container *ngIf=\"isNumber(rowData, col.name); else emptyTemplate\">\n                                                    <span>\n                                                        {{\n                                                            getFieldValue(rowData, col.name)\n                                                                | localizedBignumber: getNumberMaskConfig(col)\n                                                                | async\n                                                        }}\n                                                    </span>\n                                                </ng-container>\n                                            }\n                                            @case ('enum') {\n                                                <ng-container\n                                                    *ngIf=\"\n                                                        getLabelForValue(getFieldValue(rowData, col.name), col);\n                                                        else emptyTemplate\n                                                    \"\n                                                >\n                                                    <ng-container\n                                                        *ngIf=\"\n                                                            getBadgeFromValue(getFieldValue(rowData, col.name), col);\n                                                            then withBadge;\n                                                            else withoutBadge\n                                                        \"\n                                                    ></ng-container>\n                                                    <ng-template #withBadge>\n                                                        <s-badge\n                                                            [text]=\"\n                                                                getLabelForValue(getFieldValue(rowData, col.name), col)\n                                                            \"\n                                                            [color]=\"\n                                                                getBadgeFromValue(getFieldValue(rowData, col.name), col)\n                                                                    ?.color\n                                                            \"\n                                                            [type]=\"\n                                                                getBadgeFromValue(getFieldValue(rowData, col.name), col)\n                                                                    ?.type\n                                                            \"\n                                                            [iconClass]=\"\n                                                                getBadgeFromValue(getFieldValue(rowData, col.name), col)\n                                                                    ?.iconClass\n                                                            \"\n                                                            [iconPosition]=\"\n                                                                getBadgeFromValue(getFieldValue(rowData, col.name), col)\n                                                                    ?.iconPosition\n                                                            \"\n                                                        >\n                                                        </s-badge>\n                                                    </ng-template>\n                                                    <ng-template #withoutBadge>\n                                                        <span>\n                                                            {{\n                                                                getLabelForValue(getFieldValue(rowData, col.name), col)\n                                                            }}\n                                                        </span>\n                                                    </ng-template>\n                                                </ng-container>\n                                            }\n                                            @default {\n                                                @if (fieldHasMask(col) && parseValueMaskValue(col, rowData)) {\n                                                    <ng-container\n                                                        *ngIf=\"\n                                                            isNumber(rowData, col.name) ||\n                                                            getFieldValue(rowData, col.name)\n                                                        \"\n                                                    >\n                                                        <span>{{\n                                                            getFieldValue(rowData, col.name)\n                                                                | sMaskFormatter: parseValueMaskValue(col, rowData)\n                                                        }}</span>\n                                                    </ng-container>\n                                                } @else {\n                                                    <ng-container\n                                                        *ngIf=\"\n                                                            isNumber(rowData, col.name) ||\n                                                                getFieldValue(rowData, col.name);\n                                                            else emptyTemplate\n                                                        \"\n                                                    >\n                                                        <span>{{ getFieldValue(rowData, col.name) }}</span>\n                                                    </ng-container>\n                                                }\n                                            }\n                                        }\n                                    </td>\n                                }\n                            </tr>\n                        </ng-template>\n                        <ng-template pTemplate=\"paginatorright\">\n                            <span [attr.data-hidden]=\"loading\">\n                                {{ printRecordTotalizer() }}\n                            </span>\n                        </ng-template>\n                    </p-table>\n                </div>\n            </div>\n        </div>\n\n        <ng-template sTemplate=\"footer\">\n            <div class=\"flex w-full justify-end\">\n                <s-button\n                    [id]=\"id + '-cancel-button'\"\n                    type=\"button\"\n                    priority=\"link\"\n                    [label]=\"labelOptions?.cancelLabel || 'platform.angular_components.cancel' | translate\"\n                    (clicked)=\"hideDialog()\"\n                    sTooltip=\"(ALT + SHIFT + C)\"\n                >\n                </s-button>\n                <s-button\n                    [id]=\"id + '-select-button'\"\n                    type=\"button\"\n                    [label]=\"labelOptions?.selectLabel || 'platform.angular_components.select' | translate\"\n                    (clicked)=\"select()\"\n                    sTooltip=\"(ALT + SHIFT + S)\"\n                    [disabled]=\"!selected.length\"\n                >\n                </s-button>\n            </div>\n        </ng-template>\n    }\n</s-dialog>\n\n<ng-template #emptyTemplate>\n    <span class=\"sds-empty-value\">\n        {{ labelOptions?.emptyFieldLabel || 'platform.angular_components.not_informed' | translate }}\n    </span>\n</ng-template>\n\n","import { Component, Input } from '@angular/core';\nimport { FieldConfig } from '../../form-field/configurations/fields/field';\nimport { NgClass } from '@angular/common';\nimport { InfoSignModule } from '@seniorsistemas/angular-components/info-sign';\n\n@Component({\n    selector: 's-field-label',\n    templateUrl: './field-label.component.html',\n    imports: [NgClass, InfoSignModule],\n    standalone: true,\n})\nexport class FieldLabelComponent {\n    @Input({ required: true })\n    public field!: FieldConfig;\n\n    @Input()\n    public fieldContainerRef: HTMLElement | null | undefined = null;\n}\n\n","@if (field.label) {\n    <span>\n        <label\n            *sInfoSign=\"\n                field.infoSign ?? '';\n                displayTime: field.displayTimeInfoSign ?? 0;\n                focusedInputRef: fieldContainerRef;\n                useFocusedInputRef: field.useInfoSignFocusedInputRef ?? false\n            \"\n            [for]=\"field.name\"\n            class=\"inline-block\"\n            [ngClass]=\"{ required: field.required?.() }\"\n        >\n            {{ field.label }}\n        </label>\n    </span>\n}\n\n","import {\n    AfterViewInit,\n    ChangeDetectorRef,\n    Component,\n    DestroyRef,\n    ElementRef,\n    inject,\n    input,\n    OnInit,\n} from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { TooltipDirective } from '@seniorsistemas/angular-components/tooltip';\nimport { LookupComponent } from '../../../components/lookup/lookup.component';\nimport { AutocompleteFieldConfig } from '../../configurations/fields/autocomplete-field';\nimport { FieldLabelComponent } from '../../../components/field-label/field-label.component';\nimport { BaseFieldComponentConfig } from '../base-field-component';\n\n@Component({\n    standalone: true,\n    imports: [FieldLabelComponent, LookupComponent, ReactiveFormsModule, TooltipDirective],\n    templateUrl: 'autocomplete-field.component.html',\n})\nexport class AutocompleteFieldComponent implements BaseFieldComponentConfig, AfterViewInit, OnInit {\n    private readonly changeDetectorRef = inject(ChangeDetectorRef);\n    private readonly elementRef = inject(ElementRef);\n\n    private readonly destroyRef = inject(DestroyRef);\n    suggestions: unknown[] = [];\n    field = input.required<AutocompleteFieldConfig>();\n\n    formControl = input.required<FormControl>();\n\n    public inputRef: HTMLElement | null = null;\n\n    ngOnInit(): void {\n        const suggestionsObservable = this.field().suggestionsObservable;\n        if (suggestionsObservable)\n            suggestionsObservable\n                .pipe(takeUntilDestroyed(this.destroyRef))\n                .subscribe((suggestions) => (this.suggestions = suggestions));\n    }\n\n    public ngAfterViewInit(): void {\n        this.setInputRef();\n        this.changeDetectorRef.detectChanges();\n    }\n\n    private setInputRef(): void {\n        this.inputRef = this.elementRef.nativeElement.querySelector('input');\n    }\n}\n\n","@let _field = field();\n@if (inputRef) {\n    <s-field-label\n        [field]=\"_field\"\n        [fieldContainerRef]=\"inputRef\"\n    ></s-field-label>\n}\n\n<div [sTooltip]=\"_field.tooltip\">\n    <s-lookup\n        [id]=\"_field.id || _field.name\"\n        [multiple]=\"_field.multiple!\"\n        [placeholder]=\"_field.placeholder\"\n        [formControl]=\"formControl()\"\n        [lookupSuggestions]=\"suggestions\"\n        [dataKey]=\"_field.dataKey!\"\n        (onLookupRequest)=\"_field.onSearch ? _field.onSearch($event) : null\"\n        [lookupDisplayField]=\"_field.displayField\"\n        [showSearch]=\"false\"\n        [lookupAppendTo]=\"_field.appendTo\"\n        (onSelect)=\"_field.onSelect ? _field.onSelect($event) : null\"\n        (onUnselect)=\"_field.onUnselect ? _field.onUnselect($event) : null\"\n        (onClear)=\"_field.onClear ? _field.onClear($event) : null\"\n        (onBlur)=\"_field.onBlur ? _field.onBlur($event) : null\"\n        [lookupEmptyMessage]=\"_field.emptyMessage\"\n    >\n    </s-lookup>\n</div>\n\n","import {\n    AfterViewInit,\n    ChangeDetectorRef,\n    Component,\n    ElementRef,\n    EventEmitter,\n    inject,\n    input,\n    OnDestroy,\n    OnInit,\n    Output,\n    ViewChild,\n    ViewEncapsulation,\n} from '@angular/core';\n\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\n\nimport { Subject } from 'rxjs';\nimport { first, takeUntil } from 'rxjs/operators';\n\nimport { LocaleService, NumberLocaleOptions } from '@seniorsistemas/angular-components/locale';\nimport { isNullOrUndefined } from '@seniorsistemas/angular-components/utils';\nimport { FormFieldUtilsService } from '../../../services/form-field-utils.service';\nimport { BignumberFieldConfig } from '../../configurations/fields/bignumber-field';\nimport { BaseFieldComponentConfig } from '../base-field-component';\nimport { FieldLabelComponent } from '../../../components/field-label/field-label.component';\nimport { InputMaskModule } from 'primeng/inputmask';\nimport { TooltipDirective } from '@seniorsistemas/angular-components/tooltip';\nimport { ButtonComponent } from '@seniorsistemas/angular-components/button';\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { BignumberInputModule } from '@seniorsistemas/angular-components/bignumber-input';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { NumberFieldConfig } from '../../configurations/fields/number-field';\n\n@Component({\n    templateUrl: 'bignumber-field.component.html',\n    styleUrls: ['./bignumber-field.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    standalone: true,\n    imports: [\n        FieldLabelComponent,\n        InputMaskModule,\n        TooltipDirective,\n        ReactiveFormsModule,\n        ButtonComponent,\n        NgClass,\n        BignumberInputModule,\n        InputTextModule,\n        NgTemplateOutlet,\n    ],\n})\nexport class BignumberFieldComponent implements OnInit, AfterViewInit, OnDestroy, BaseFieldComponentConfig {\n    private readonly localeService = inject(LocaleService);\n    private readonly changeDetectorRef = inject(ChangeDetectorRef);\n\n    field = input.required<BignumberFieldConfig | NumberFieldConfig>();\n\n    formControl = input.required<FormControl>();\n\n    fieldUtils = inject(FormFieldUtilsService);\n\n    @Output()\n    // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n    public onInput: EventEmitter<any> = new EventEmitter();\n\n    @Output()\n    // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n    public onFocus: EventEmitter<any> = new EventEmitter();\n\n    @Output()\n    // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n    public onComplete: EventEmitter<any> = new EventEmitter();\n\n    @ViewChild('inputRef') inputRef: ElementRef | null = null;\n\n    private ngUnsubscribe = new Subject<void>();\n\n    public ngOnInit() {\n        const field = this.field();\n        field.scale = field.scale ?? 2;\n        field.numberLocaleOptions = field.numberLocaleOptions ?? new NumberLocaleOptions();\n        if (field.type === 'number') {\n            field.autoClear = field.autoClear ?? true;\n            field.allowNegative = field.allowNegative ?? true;\n        }\n        field.alignTo = field.scale ? 'right' : 'left';\n\n        this.onLocaleService();\n\n        this.onFocus.pipe(takeUntil(this.ngUnsubscribe)).subscribe((event: FocusEvent) => {\n            if (this.field().onFocus) {\n                this.field().onFocus?.(event);\n            }\n        });\n\n        this.onInput.pipe(takeUntil(this.ngUnsubscribe)).subscribe((event: any) => {\n            if (this.field().onInput) {\n                this.field().onInput?.(event);\n            }\n        });\n\n        this.onComplete.pipe(takeUntil(this.ngUnsubscribe)).subscribe((event: any) => {\n            if (this.field().onComplete) {\n                this.field().onComplete?.(event);\n            }\n        });\n        this.onScale();\n    }\n\n    public ngAfterViewInit(): void {\n        this.changeDetectorRef.detectChanges();\n    }\n\n    public ngOnDestroy(): void {\n        this.ngUnsubscribe.next();\n        this.ngUnsubscribe.complete();\n    }\n\n    private onLocaleService(): void {\n        this.localeService\n            .getLocale()\n            .pipe(first())\n            .subscribe({\n                next: () => {\n                    if (!this.field().numberLocaleOptions?.decimalSeparator) {\n                        this.field().numberLocaleOptions = {\n                            ...this.field().numberLocaleOptions,\n                            decimalSeparator: this.localeService.getDecimalSeparator() ?? '',\n                        };\n                    }\n\n                    if (!this.field().numberLocaleOptions?.thousandsSeparator) {\n                        this.field().numberLocaleOptions = {\n                            ...this.field().numberLocaleOptions,\n                            thousandsSeparator: this.localeService.getGroupingSeparator() ?? '',\n                        };\n                    }\n\n                    if (!this.field().numberLocaleOptions?.currencySymbol) {\n                        this.field().numberLocaleOptions = {\n                            ...this.field().numberLocaleOptions,\n                            currencySymbol:\n                                this.field().type === 'integer' || this.field().type === 'double' ? '' : 'R$',\n                        };\n                    }\n                },\n                error: () =>\n                    (this.field().numberLocaleOptions = this.field().numberLocaleOptions ?? {\n                        thousandsSeparator: '.',\n                        decimalSeparator: ',',\n                        currencySymbol: this.field().type === 'integer' || this.field().type === 'double' ? '' : 'R$',\n                    }),\n            });\n    }\n\n    private onScale(): void {\n        // Currently, this component is used for the following types\n        // 'integer', 'decimal', 'number'\n        if (isNullOrUndefined(this.field().scale)) {\n            this.field().scale = this.field().type === 'integer' ? 0 : 2;\n        }\n    }\n}\n\n","@let _field = field();\n@if (inputRef) {\n    <s-field-label\n        [field]=\"_field\"\n        [fieldContainerRef]=\"inputRef!.nativeElement\"\n    />\n}\n@if (_field.mask) {\n    @let autoClear = _field.type === 'number' ? (_field.autoClear ?? true) : false;\n    <p-inputMask\n        #inputRef\n        type=\"text\"\n        [inputId]=\"_field.id || _field.name\"\n        [name]=\"_field.name\"\n        [mask]=\"fieldUtils.getFieldPropertyMask(_field.mask)\"\n        [placeholder]=\"_field.placeholder\"\n        slotChar=\"_\"\n        [sTooltip]=\"_field.tooltip\"\n        tooltipPosition=\"top\"\n        [showDelay]=\"500\"\n        styleClass=\"mousetrap\"\n        (onBlur)=\"_field.onBlur ? _field.onBlur($event) : null\"\n        (onFocus)=\"onFocus.next($event)\"\n        (onComplete)=\"onComplete.next($event)\"\n        (onInput)=\"onInput.next($event)\"\n        [formControl]=\"formControl()\"\n        [autoClear]=\"autoClear\"\n    >\n    </p-inputMask>\n} @else {\n    <div class=\"bignumber-field\">\n        @if (_field.leftAddon) {\n            <div class=\"button-left\">\n                <ng-container *ngTemplateOutlet=\"addonRender; context: { button: _field.leftAddon }\"></ng-container>\n            </div>\n        }\n        @let allowNegative = _field.type === 'number' ? (_field.allowNegative ?? true) : false;\n        <input\n            #inputRef\n            [id]=\"_field.id || _field.name\"\n            type=\"text\"\n            [name]=\"_field.name\"\n            sBignumberInput\n            [allowNegative]=\"allowNegative\"\n            [precision]=\"\n                fieldUtils.isFunction(_field.precision) ? fieldUtils.trigger(_field.precision) : _field.precision\n            \"\n            [scale]=\"fieldUtils.isFunction(_field.scale) ? fieldUtils.trigger(_field.scale) : _field.scale\"\n            [decimalSeparator]=\"_field.numberLocaleOptions?.decimalSeparator ?? ''\"\n            [thousandsSeparator]=\"_field.numberLocaleOptions?.thousandsSeparator ?? ''\"\n            [alignTo]=\"_field.alignTo ?? 'left'\"\n            [sTooltip]=\"_field.tooltip\"\n            tooltipPosition=\"top\"\n            [placeholder]=\"_field.placeholder\"\n            [showDelay]=\"500\"\n            pInputText\n            [autocomplete]=\"_field.browserAutocomplete ? 'on' : 'off'\"\n            [ngClass]=\"'mousetrap'\"\n            class=\"input-text\"\n            (blur)=\"_field.onBlur ? _field.onBlur($event) : null\"\n            (focus)=\"onFocus.next($event)\"\n            [formControl]=\"formControl()\"\n        />\n        @if (_field.rightAddon) {\n            <div class=\"button-right\">\n                <ng-container *ngTemplateOutlet=\"addonRender; context: { button: _field.rightAddon }\"></ng-container>\n            </div>\n        }\n    </div>\n}\n\n<ng-template\n    #addonRender\n    let-button=\"button\"\n>\n    <s-button\n        [label]=\"button.label\"\n        [priority]=\"button.priority ?? 'default'\"\n        [iconClass]=\"button.icon\"\n        [disabled]=\"fieldUtils.fieldPropertyIsDisabled(button.leftAddon)\"\n        [auxiliary]=\"false\"\n        (clicked)=\"button.callback?.()\"\n    />\n</ng-template>\n\n","import { Component, input } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { BooleanFieldConfig } from '../../../configurations/fields/boolean-field';\nimport { BaseFieldComponentConfig } from '../../base-field-component';\nimport { FieldLabelComponent } from '../../../../components/field-label/field-label.component';\nimport { RadioButtonComponent } from '@seniorsistemas/angular-components/radio-button';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { ButtonComponent } from '@seniorsistemas/angular-components/button';\n\n@Component({\n    templateUrl: 'boolean-field.component.html',\n    standalone: true,\n    imports: [FieldLabelComponent, RadioButtonComponent, ReactiveFormsModule, NgTemplateOutlet, ButtonComponent],\n    styles: [\n        `\n            .horizontal-radio-buttons-container {\n                gap: 20px 40px;\n                .radio-button-item {\n                    margin: 0;\n                }\n            }\n        `,\n    ],\n})\nexport class BooleanFieldComponent implements BaseFieldComponentConfig {\n    field = input.required<BooleanFieldConfig>();\n\n    formControl = input.required<FormControl>();\n\n    public onClear(): void {\n        this.formControl().reset();\n    }\n}\n\n","@let _field = field();\n<ng-template\n    #radioButtonRender\n    let-value=\"value\"\n    let-label=\"label\"\n    let-inputIdAppend=\"inputIdAppend\"\n>\n    @let inputId = (_field.id || _field.name) + inputIdAppend;\n    <s-radiobutton\n        [name]=\"_field.name\"\n        [value]=\"value\"\n        [formControl]=\"formControl()\"\n        [inputId]=\"inputId\"\n        [label]=\"label\"\n        (focusedInput)=\"_field.onFocus ? _field.onFocus($event) : null\"\n        (inputFocusLost)=\"_field.onBlur ? _field.onBlur($event) : null\"\n    />\n</ng-template>\n\n<s-field-label [field]=\"_field\"></s-field-label>\n\n@if (_field.verticalAlignment) {\n    <div class=\"ui-g\">\n        <div class=\"ui-g-12\">\n            <ng-template\n                *ngTemplateOutlet=\"\n                    radioButtonRender;\n                    context: { value: true, label: _field.optionsLabel.true, inputIdAppend: '-1' }\n                \"\n            />\n        </div>\n        <div class=\"ui-g-12\">\n            <ng-template\n                *ngTemplateOutlet=\"\n                    radioButtonRender;\n                    context: { value: false, label: _field.optionsLabel.false, inputIdAppend: '-2' }\n                \"\n            />\n        </div>\n        @if (!_field.showClear && !!_field.required && !_field.required()) {\n            <div class=\"ui-g-12\">\n                <ng-template\n                    *ngTemplateOutlet=\"\n                        radioButtonRender;\n                        context: { value: null, label: _field.optionsLabel.empty, inputIdAppend: '-3' }\n                    \"\n                />\n            </div>\n        }\n        <div>\n            @if (_field.showClear && !_field.required?.() && !formControl().disabled) {\n                <s-button\n                    [label]=\"_field.optionsLabel.clear || 'Clear selection'\"\n                    (clicked)=\"onClear()\"\n                    priority=\"link\"\n                >\n                </s-button>\n            }\n        </div>\n    </div>\n} @else {\n    <div class=\"ui-g horizontal-radio-buttons-container\">\n        <ng-template\n            *ngTemplateOutlet=\"\n                radioButtonRender;\n                context: { value: true, label: _field.optionsLabel.true, inputIdAppend: '-1' }\n            \"\n        />\n\n        <ng-template\n            *ngTemplateOutlet=\"\n                radioButtonRender;\n                context: { value: false, label: _field.optionsLabel.false, inputIdAppend: '-2' }\n            \"\n        />\n\n        <ng-template\n            *ngTemplateOutlet=\"\n                radioButtonRender;\n                context: { value: null, label: _field.optionsLabel.empty, inputIdAppend: '-3' }\n            \"\n        />\n\n        @if (_field.showClear && !_field.required?.() && !formControl().disabled) {\n            <s-button\n                style=\"margin-left: 40px\"\n                [label]=\"_field.optionsLabel.clear || 'Clear selection'\"\n                (clicked)=\"onClear()\"\n                priority=\"link\"\n            >\n            </s-button>\n        }\n    </div>\n}\n\n","import { Component, input } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { BooleanSwitchFieldConfig } from '../../../configurations/fields/boolean-switch-field';\nimport { BaseFieldComponentConfig } from '../../base-field-component';\nimport { FieldLabelComponent } from '../../../../components/field-label/field-label.component';\nimport { SwitchModule } from '@seniorsistemas/angular-components/switch';\nimport { TooltipModule } from '@seniorsistemas/angular-components/tooltip';\n\n@Component({\n    standalone: true,\n    imports: [FieldLabelComponent, SwitchModule, ReactiveFormsModule, TooltipModule],\n    templateUrl: 'boolean-switch-field.component.html',\n})\nexport class BooleanSwitchFieldComponent implements BaseFieldComponentConfig {\n    field = input.required<BooleanSwitchFieldConfig>();\n\n    formControl = input.required<FormControl>();\n}\n\n","@let _field = field();\n<s-field-label [field]=\"_field\"></s-field-label>\n\n<div class=\"ui-grid ui-grid-responsive ui-grid-pad p-fluid\">\n    <div class=\"ui-grid-row\">\n        <div class=\"i-grid-col-1\">\n            <s-switch\n                [id]=\"_field.id || _field.name\"\n                [inputName]=\"_field.name\"\n                [formControl]=\"formControl()\"\n                [sTooltip]=\"_field.tooltip\"\n                tooltipPosition=\"top\"\n                (valueChanged)=\"_field.onChange ? _field.onChange($event) : null\"\n            >\n            </s-switch>\n        </div>\n        @if (_field.optionsLabel) {\n            <div class=\"i-grid-col-1\">\n                @if (formControl().value) {\n                    <span>{{ _field.optionsLabel.true }}</span>\n                } @else {\n                    <span>{{ _field.optionsLabel.false }}</span>\n                }\n            </div>\n        }\n    </div>\n</div>\n\n","import { Component, input } from '@angular/core';\nimport { ButtonComponent } from '@seniorsistemas/angular-components/button';\nimport { ButtonFieldConfig } from '../../configurations/fields/button-field';\nimport { BaseFieldComponentConfig } from '../base-field-component';\n\n@Component({\n    selector: 's-button-field',\n    templateUrl: './button-field.component.html',\n    styleUrl: './button-field.component.scss',\n    standalone: true,\n    imports: [ButtonComponent],\n})\nexport class ButtonFieldComponent implements BaseFieldComponentConfig {\n    field = input.required<ButtonFieldConfig>();\n\n    clickedButton($event: Event) {\n        if (this.field().onClick) {\n            this.field().onClick?.($event);\n        }\n    }\n\n    handleMouseEnter() {\n        if (this.field().mouseEnter) {\n            this.field().mouseEnter?.(this.field());\n        }\n    }\n\n    handleMouseLeave() {\n        if (this.field().mouseLeave) {\n            this.field().mouseLeave?.(this.field());\n        }\n    }\n}\n\n","@let _field = field();\n<section\n    [class.full-width]=\"_field.fullWidth\"\n    [class.fit-content]=\"!_field.fullWidth\"\n>\n    <s-button\n        #button\n        [label]=\"_field.label\"\n        [priority]=\"_field.priority ?? 'default'\"\n        [iconClass]=\"_field.iconClass\"\n        [disabled]=\"_field.disabled ?? false\"\n        [auxiliary]=\"_field.auxiliary ?? false\"\n        [caret]=\"_field.caret ?? false\"\n        [id]=\"_field.id\"\n        [tooltip]=\"_field.tooltip ? _field.tooltip : button.tooltip\"\n        (clicked)=\"clickedButton($event)\"\n        [iconColor]=\"_field.iconColor\"\n        [badge]=\"_field.badge\"\n        [animation]=\"_field.animation\"\n        [slide]=\"_field.slide ?? false\"\n        [menuOptions]=\"_field.menuOptions ?? []\"\n        [baseZIndex]=\"_field.baseZIndex ?? 0\"\n        [styleClass]=\"_field.styleClass ? _field.styleClass : button.styleClass\"\n        [rightIconClass]=\"_field.rightIconClass\"\n        [tooltipPosition]=\"_field.tooltipPosition ? _field.tooltipPosition : button.tooltipPosition\"\n        [type]=\"_field.type\"\n        [size]=\"_field.size\"\n        (mouseenter)=\"handleMouseEnter()\"\n        (mouseleave)=\"handleMouseLeave()\"\n    >\n    </s-button>\n</section>\n\n","import { AfterViewInit, ChangeDetectorRef, Component, inject, input, OnInit, ViewChild } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\n\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { PrimeNG } from 'primeng/config';\nimport { DatePicker, DatePickerModule } from 'primeng/datepicker';\nimport { CalendarFieldConfig } from '../../configurations/fields/calendar-field';\nimport { BaseFieldComponentConfig } from '../base-field-component';\nimport { FieldLabelComponent } from '../../../components/field-label/field-label.component';\nimport { TooltipDirective } from '@seniorsistemas/angular-components/tooltip';\nimport { isNullOrUndefined } from '@seniorsistemas/angular-components/utils';\n@Component({\n    standalone: true,\n    imports: [FieldLabelComponent, ReactiveFormsModule, DatePickerModule, TooltipDirective, TranslateModule],\n    templateUrl: 'calendar-field.component.html',\n})\nexport class CalendarFieldComponent implements BaseFieldComponentConfig, AfterViewInit, OnInit {\n    private readonly changeDetectorRef = inject(ChangeDetectorRef);\n\n    field = input.required<CalendarFieldConfig>();\n\n    formControl = input.required<FormControl>();\n\n    private readonly translateService = inject(TranslateService);\n\n    public locale = {\n        firstDayOfWeek: 0,\n        dayNames: [\n            this.translateService.instant('platform.angular_components.sunday'),\n            this.translateService.instant('platform.angular_components.monday'),\n            this.translateService.instant('platform.angular_components.tuesday'),\n            this.translateService.instant('platform.angular_components.wednesday'),\n            this.translateService.instant('platform.angular_components.thursday'),\n            this.translateService.instant('platform.angular_components.friday'),\n            this.translateService.instant('platform.angular_components.saturday'),\n        ],\n        dayNamesShort: [\n            this.translateService.instant('platform.angular_components.sunday_short'),\n            this.translateService.instant('platform.angular_components.monday_short'),\n            this.translateService.instant('platform.angular_components.tuesday_short'),\n            this.translateService.instant('platform.angular_components.wednesday_short'),\n            this.translateService.instant('platform.angular_components.thursday_short'),\n            this.translateService.instant('platform.angular_components.friday_short'),\n            this.translateService.instant('platform.angular_components.saturday_short'),\n        ],\n        dayNamesMin: [\n            this.translateService.instant('platform.angular_components.sunday_min'),\n            this.translateService.instant('platform.angular_components.monday_min'),\n            this.translateService.instant('platform.angular_components.tuesday_min'),\n            this.translateService.instant('platform.angular_components.wednesday_min'),\n            this.translateService.instant('platform.angular_components.thursday_min'),\n            this.translateService.instant('platform.angular_components.friday_min'),\n            this.translateService.instant('platform.angular_components.saturday_min'),\n        ],\n        monthNames: [\n            this.translateService.instant('platform.angular_components.january'),\n            this.translateService.instant('platform.angular_components.february'),\n            this.translateService.instant('platform.angular_components.march'),\n            this.translateService.instant('platform.angular_components.april'),\n            this.translateService.instant('platform.angular_components.may'),\n            this.translateService.instant('platform.angular_components.june'),\n            this.translateService.instant('platform.angular_components.july'),\n            this.translateService.instant('platform.angular_components.august'),\n            this.translateService.instant('platform.angular_components.september'),\n            this.translateService.instant('platform.angular_components.october'),\n            this.translateService.instant('platform.angular_components.november'),\n            this.translateService.instant('platform.angular_components.december'),\n        ],\n        monthNamesShort: [\n            this.translateService.instant('platform.angular_components.january_short'),\n            this.translateService.instant('platform.angular_components.february_short'),\n            this.translateService.instant('platform.angular_components.march_short'),\n            this.translateService.instant('platform.angular_components.april_short'),\n            this.translateService.instant('platform.angular_components.may_short'),\n            this.translateService.instant('platform.angular_components.june_short'),\n            this.translateService.instant('platform.angular_components.july_short'),\n            this.translateService.instant('platform.angular_components.august_short'),\n            this.translateService.instant('platform.angular_components.september_short'),\n            this.translateService.instant('platform.angular_components.october_short'),\n            this.translateService.instant('platform.angular_components.november_short'),\n            this.translateService.instant('platform.angular_components.december_short'),\n        ],\n        today: this.translateService.instant('platform.angular_components.today'),\n        clear: this.translateService.instant('platform.angular_components.clear'),\n        dateFormat: this.translateService.instant('platform.angular_components.date_format'),\n        hourFormat: this.translateService.instant('platform.angular_components.hour_format'),\n    };\n\n    private primengConfig = inject(PrimeNG);\n\n    ngOnInit(): void {\n        const field = this.field();\n        if(isNullOrUndefined(field.selectionMode)) {\n            field.selectionMode = 'single';\n        }\n\n        if(isNullOrUndefined(field.rangeSeparator)) {\n            field.rangeSeparator = '-'\n        }\n\n        if(isNullOrUndefined(field.view)) {\n            field.view = 'date';\n        }\n        if (isNullOrUndefined(field.showSeconds)) {\n            switch (field.type) {\n                case 'dateTime':\n                case 'localDateTime':\n                case 'time':\n                    field.showSeconds = true;\n                    break;\n            }\n        }\n\n        const _locale = field.calendarLocaleOptions || this.locale;\n        this.primengConfig.setTranslation({\n            ..._locale,\n        });\n    }\n\n    @ViewChild('calendar') calendar: DatePicker | null = null;\n\n    public inputRef: HTMLInputElement | undefined;\n\n    public ngAfterViewInit(): void {\n        this.setInputRef();\n        this.changeDetectorRef.detectChanges();\n    }\n\n    private setInputRef(): void {\n        this.inputRef = this.calendar?.inputfieldViewChild?.nativeElement;\n    }\n\n    get timeOnly() {\n        return this.field()?.type === 'time';\n    }\n\n    get showTime() {\n        const type = this.field()?.type;\n        return type === 'localDateTime' || type === 'dateTime' || type === 'time';\n    }\n}\n\n","@let _field = field();\n@if (inputRef) {\n    <s-field-label\n        [field]=\"_field\"\n        [fieldContainerRef]=\"inputRef\"\n    >\n    </s-field-label>\n}\n\n@if (_field) {\n    <div [sTooltip]=\"_field.tooltip\">\n        <!-- A diretiva sCalendarMask não está suportando seleção múltipla. A forma como ela foi escrita não permite identificar a quantidade de datas\n        que estão sendo selecionadas. Removi o uso dela quando está com selectionMode=multiple. Analisar a removeção completa desta diretiva. -->\n        @if (_field.selectionMode !== 'multiple') {\n            <p-datepicker\n                #calendar\n                sCalendarMask\n                [inputId]=\"_field.id || _field.name\"\n                [name]=\"_field.name\"\n                [showIcon]=\"true\"\n                [timeOnly]=\"timeOnly\"\n                [selectionMode]=\"_field.selectionMode\"\n                [rangeSeparator]=\"_field.rangeSeparator ? _field.rangeSeparator : calendar.rangeSeparator\"\n                [showTime]=\"showTime\"\n                [showSeconds]=\"_field.showSeconds\"\n                [showOnFocus]=\"_field.showOnFocus\"\n                [formControl]=\"formControl()\"\n                [icon]=\"timeOnly ? 'fa fa-clock' : 'fa fa-calendar'\"\n                [minDate]=\"_field.minDate\"\n                [maxDate]=\"_field.maxDate\"\n                [defaultDate]=\"_field.defaultDate ? _field.defaultDate : calendar.defaultDate\"\n                [dateFormat]=\"\n                    _field.calendarLocaleOptions?.dateFormat || 'platform.angular_components.date_format' | translate\n                \"\n                [hourFormat]=\"\n                    _field.calendarLocaleOptions?.hourFormat || 'platform.angular_components.hour_format' | translate\n                \"\n                [view]=\"_field.view ? _field.view : calendar.view\"\n                [placeholder]=\"_field.placeholder\"\n                inputStyleClass=\"mousetrap\"\n                [appendTo]=\"_field.appendTo\"\n                (onBlur)=\"_field.onBlur ? _field.onBlur($event) : null\"\n                (onFocus)=\"_field.onFocus ? _field.onFocus($event) : null\"\n                (onSelect)=\"_field.onSelect ? _field.onSelect($event) : null\"\n                (onClose)=\"_field.onClose ? _field.onClose($event) : null\"\n                (onTodayClick)=\"_field.onTodayClick ? _field.onTodayClick($event) : null\"\n                (onClearClick)=\"_field.onClearClick ? _field.onClearClick($event) : null\"\n                (onMonthChange)=\"_field.onMonthChange ? _field.onMonthChange($event) : null\"\n                (onYearChange)=\"_field.onYearChange ? _field.onYearChange($event) : null\"\n            >\n            </p-datepicker>\n        } @else {\n            <!-- A única diferença deste bloco é a remoção da diretiva sCalendarMask. -->\n            <p-datepicker\n                #calendar\n                [inputId]=\"_field.id || _field.name\"\n                [name]=\"_field.name\"\n                [showIcon]=\"true\"\n                [timeOnly]=\"timeOnly\"\n                [selectionMode]=\"_field.selectionMode\"\n                [rangeSeparator]=\"_field.rangeSeparator ? _field.rangeSeparator : calendar.rangeSeparator\"\n                [showTime]=\"showTime\"\n                [showSeconds]=\"_field.showSeconds\"\n                [showOnFocus]=\"_field.showOnFocus\"\n                [formControl]=\"formControl()\"\n                [icon]=\"timeOnly ? 'fa fa-clock' : 'fa fa-calendar'\"\n                [minDate]=\"_field.minDate\"\n                [maxDate]=\"_field.maxDate\"\n                [defaultDate]=\"_field.defaultDate ? _field.defaultDate : calendar.defaultDate\"\n                [dateFormat]=\"\n                    _field.calendarLocaleOptions?.dateFormat || 'platform.angular_components.date_format' | translate\n                \"\n                [hourFormat]=\"\n                    _field.calendarLocaleOptions?.hourFormat || 'platform.angular_components.hour_format' | translate\n                \"\n                [view]=\"_field.view ? _field.view : calendar.view\"\n                [placeholder]=\"_field.placeholder\"\n                inputStyleClass=\"mousetrap\"\n                [appendTo]=\"_field.appendTo\"\n                (onBlur)=\"_field.onBlur ? _field.onBlur($event) : null\"\n                (onFocus)=\"_field.onFocus ? _field.onFocus($event) : null\"\n                (onSelect)=\"_field.onSelect ? _field.onSelect($event) : null\"\n                (onClose)=\"_field.onClose ? _field.onClose($event) : null\"\n                (onTodayClick)=\"_field.onTodayClick ? _field.onTodayClick($event) : null\"\n                (onClearClick)=\"_field.onClearClick ? _field.onClearClick($event) : null\"\n                (onMonthChange)=\"_field.onMonthChange ? _field.onMonthChange($event) : null\"\n                (onYearChange)=\"_field.onYearChange ? _field.onYearChange($event) : null\"\n                [showTransitionOptions]=\"'0ms'\"\n                [hideTransitionOptions]=\"'0ms'\"\n            >\n            </p-datepicker>\n        }\n    </div>\n}\n\n","import { Component, input } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { CheckboxListModule } from '@seniorsistemas/angular-components/checkbox-list';\nimport { CheckboxFieldConfig } from '../../configurations/fields/checkbox-field';\nimport { BaseFieldComponentConfig } from '../base-field-component';\n@Component({\n    standalone: true,\n    imports: [ReactiveFormsModule, CheckboxListModule],\n    templateUrl: 'checkbox-field.component.html',\n})\nexport class CheckboxFieldComponent implements BaseFieldComponentConfig {\n    field = input.required<CheckboxFieldConfig>();\n    formControl = input.required<FormControl>();\n}\n\n","<s-checkbox-list\n    [data]=\"field().data\"\n    [formControl]=\"formControl()\"\n>\n</s-checkbox-list>\n\n","import { Clipboard } from '@angular/cdk/clipboard';\nimport { AfterViewInit, ChangeDetectorRef, Component, ElementRef, input, inject } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { ChipsFieldConfig } from '../../configurations/fields/chips-field';\nimport { BaseFieldComponentConfig } from '../base-field-component';\nimport { FieldLabelComponent } from '../../../components/field-label/field-label.component';\nimport { ChipsModule } from '@seniorsistemas/angular-components/chips';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { TooltipDirective } from '@seniorsistemas/angular-components/tooltip';\n@Component({\n    standalone: true,\n    imports: [FieldLabelComponent, ChipsModule, ReactiveFormsModule, TranslateModule, TooltipDirective],\n    templateUrl: './chips-field.component.html',\n    styleUrls: ['./chips-field.component.scss'],\n})\nexport class ChipsFieldComponent implements BaseFieldComponentConfig, AfterViewInit {\n    private readonly clipboard = inject(Clipboard);\n    private readonly changeDetectorRef = inject(ChangeDetectorRef);\n    private readonly elementRef = inject(ElementRef);\n\n    field = input.required<ChipsFieldConfig>();\n    formControl = input.required<FormControl>();\n\n    public feedbackMessageVisible = false;\n    public copyButtonVisible = true;\n    public inputRef: HTMLElement | null = null;\n\n    public onCopyFieldContent(): void {\n        if (this.formControl().value) {\n            this.copyButtonVisible = false;\n            this.feedbackMessageVisible = true;\n\n            setTimeout(() => {\n                this.feedbackMessageVisible = false;\n                this.copyButtonVisible = true;\n            }, 3000);\n\n            const content = this.formControl().value.join(this.field().separator || '\\n');\n\n            this.clipboard.copy(content);\n\n            if (this.field().onCopy) {\n                this.field().onCopy?.(content);\n            }\n        }\n    }\n\n    public ngAfterViewInit(): void {\n        this.setInputRef();\n        this.changeDetectorRef.detectChanges();\n    }\n\n    private setInputRef(): void {\n        this.inputRef = this.elementRef.nativeElement.querySelector('input');\n    }\n}\n\n","@let _field = field();\n@if (inputRef) {\n    <s-field-label\n        [field]=\"_field\"\n        [fieldContainerRef]=\"inputRef\"\n    ></s-field-label>\n}\n\n<div class=\"chips-field-wrapper\">\n    <div style=\"width: 100%\">\n        @if (_field.keyFilter) {\n            <s-chips\n                [inputId]=\"_field.id || _field.name\"\n                [formControl]=\"formControl()\"\n                [placeholder]=\"_field.placeholder\"\n                [allowDuplicated]=\"false\"\n                [addOnTab]=\"true\"\n                [addOnBlur]=\"true\"\n                (onAdd)=\"_field.onAdd ? _field.onAdd($event) : null\"\n                (onRemove)=\"_field.onRemove ? _field.onRemove($event) : null\"\n                (onChipClick)=\"_field.onChipClick ? _field.onChipClick($event) : null\"\n                (onFocus)=\"_field.onFocus ? _field.onFocus($event) : null\"\n                (onBlur)=\"_field.onBlur ? _field.onBlur($event) : null\"\n                [keyFilter]=\"_field.keyFilter\"\n            >\n                <ng-template\n                    let-item\n                    pTemplate=\"item\"\n                >\n                    <span\n                        class=\"chip-content\"\n                        [sTooltip]=\"item\"\n                    >\n                        {{ item }}\n                    </span>\n                </ng-template>\n            </s-chips>\n        } @else {\n            <s-chips\n                [inputId]=\"_field.id || _field.name\"\n                [formControl]=\"formControl()\"\n                [placeholder]=\"_field.placeholder\"\n                [allowDuplicated]=\"false\"\n                [addOnTab]=\"true\"\n                [addOnBlur]=\"true\"\n                (onAdd)=\"_field.onAdd ? _field.onAdd($event) : null\"\n                (onRemove)=\"_field.onRemove ? _field.onRemove($event) : null\"\n                (onChipClick)=\"_field.onChipClick ? _field.onChipClick($event) : null\"\n                (onFocus)=\"_field.onFocus ? _field.onFocus($event) : null\"\n                (onBlur)=\"_field.onBlur ? _field.onBlur($event) : null\"\n            >\n                <ng-template\n                    let-item\n                    pTemplate=\"item\"\n                >\n                    <span\n                        class=\"chip-content\"\n                        [sTooltip]=\"item\"\n                    >\n                        {{ item }}\n                    </span>\n                </ng-template>\n            </s-chips>\n        }\n    </div>\n\n    @if (_field.showCopyButton && formControl().value?.length > 0 && copyButtonVisible) {\n        <button\n            class=\"copy-content-button\"\n            (click)=\"onCopyFieldContent()\"\n        >\n            {{ 'platform.angular_components.copy_field_content' | translate }}\n        </button>\n    }\n\n    @if (feedbackMessageVisible) {\n        <span class=\"feedback-message\">\n            {{ 'platform.angular_components.copied_to_clipboard' | translate }}\n        </span>\n    }\n</div>\n\n","import { Component, input } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { ContentGeneratorFieldConfig } from '../../configurations/fields/content-generator-field';\nimport { BaseFieldComponentConfig } from '../base-field-component';\nimport { FieldLabelComponent } from '../../../components/field-label/field-label.component';\nimport { ContentGeneratorModule } from '@seniorsistemas/angular-components/content-generator';\n\n@Component({\n    standalone: true,\n    imports: [FieldLabelComponent, ContentGeneratorModule, ReactiveFormsModule],\n    templateUrl: './content-generator-field.component.html',\n    styleUrls: ['./content-generator-field.component.scss'],\n})\nexport class ContentGeneratorFieldComponent implements BaseFieldComponentConfig {\n    field = input.required<ContentGeneratorFieldConfig>();\n\n    formControl = input.required<FormControl>();\n}\n\n","@let _field = field();\n\n@if (contentGenerator.textArea()?.renderTextArea) {\n    <s-field-label\n        [field]=\"_field\"\n        [fieldContainerRef]=\"contentGenerator.textArea()?.textAreaElement?.nativeElement\"\n    ></s-field-label>\n}\n\n<s-content-generator\n    #contentGenerator\n    [rows]=\"_field.rows ?? 5\"\n    [formControl]=\"formControl()\"\n    [id]=\"_field.name\"\n    [readonly]=\"_field.readonly ? _field.readonly() : false\"\n    [prompt]=\"_field.prompt ?? ''\"\n    [placeholder]=\"_field.placeholder ?? ''\"\n    [label]=\"_field.label ?? ''\"\n    [speechRecognition]=\"_field.speechRecognition ?? false\"\n    [keepContext]=\"_field.keepContext\"\n    [speechRecognitionPlaceholder]=\"_field.speechRecognitionPlaceholder\"\n    [maxLength]=\"_field.maxLength ?? null\"\n></s-content-generator>\n","import { AfterViewInit, ChangeDetectorRef, Component, input, inject } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\n\nimport { CountryPhonePickerConfig } from '../../configurations/fields/country-phone-picker-field';\nimport { BaseFieldComponentConfig } from '../base-field-component';\nimport { FieldLabelComponent } from '../../../components/field-label/field-label.component';\nimport { CountryPhonePickerModule } from '@seniorsistemas/angular-components/country-phone-picker';\n@Component({\n    standalone: true,\n    imports: [FieldLabelComponent, CountryPhonePickerModule, ReactiveFormsModule],\n    templateUrl: './country-phone-picker-field.component.html',\n})\nexport class CountryPhonePickerFieldComponent implements BaseFieldComponentConfig, AfterViewInit {\n    private readonly changeDetectorRef = inject(ChangeDetectorRef);\n\n    field = input.required<CountryPhonePickerConfig>();\n    formControl = input.required<FormControl>();\n\n    public ngAfterViewInit(): void {\n        this.changeDetectorRef.detectChanges();\n    }\n}\n\n","@let _field = field();\n@if (countryPhonePicker.phoneInput?.nativeElement) {\n    <s-field-label\n        [field]=\"_field\"\n        [fieldContainerRef]=\"countryPhonePicker.phoneInput?.nativeElement\"\n    ></s-field-label>\n}\n\n<s-country-phone-picker\n    #countryPhonePicker\n    [formControl]=\"formControl()\"\n    [ordination]=\"_field.ordination\"\n    [countries]=\"_field.countries\"\n    (selected)=\"_field.onSelected($event)\"\n    (focusLost)=\"_field.onFocusLost ? _field.onFocusLost($event) : null\"\n>\n</s-country-phone-picker>\n\n","import {\n    AfterViewInit,\n    ChangeDetectorRef,\n    Component,\n    computed,\n    ElementRef,\n    inject,\n    input,\n    OnInit,\n    viewChild,\n} from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\n\nimport { currencies, CurrencyService } from '@seniorsistemas/angular-components/currency';\nimport { LocaleService } from '@seniorsistemas/angular-components/locale';\nimport { InputMask, InputMaskModule } from 'primeng/inputmask';\nimport { first } from 'rxjs/operators';\nimport { FormFieldUtilsService } from '../../../services/form-field-utils.service';\nimport { CurrencyFieldConfig } from '../../configurations/fields/currency-field';\nimport { BaseFieldComponentConfig } from '../base-field-component';\nimport { NumberAlignmentOption, NumberInputModule } from '@seniorsistemas/angular-components/number-input';\nimport { FieldLabelComponent } from '../../../components/field-label/field-label.component';\nimport { NgClass } from '@angular/common';\nimport { TooltipDirective } from '@seniorsistemas/angular-components/tooltip';\n\n/**\n * @deprecated Should use bignumber instead\n */\n@Component({\n    standalone: true,\n    imports: [FieldLabelComponent, NgClass, InputMaskModule, ReactiveFormsModule, TooltipDirective, NumberInputModule],\n    templateUrl: 'currency-field.component.html',\n})\nexport class CurrencyFieldComponent implements BaseFieldComponentConfig, OnInit, AfterViewInit {\n    readonly currencyService = inject(CurrencyService);\n    private readonly localeService = inject(LocaleService);\n    private readonly changeDetectorRef = inject(ChangeDetectorRef);\n\n    private readonly inputRefComponent = viewChild<ElementRef | InputMask>('inputRef');\n    field = input.required<CurrencyFieldConfig>();\n    formControl = input.required<FormControl>();\n\n    fieldUtils = inject(FormFieldUtilsService);\n\n    public currencies = currencies;\n    public mask?: string;\n\n    public inputRef = computed(() => {\n        const inputRef = this.inputRefComponent();\n        if (!inputRef) {\n            return undefined;\n        }\n        if (inputRef instanceof InputMask) {\n            return inputRef.inputViewChild?.nativeElement;\n        } else {\n            return inputRef.nativeElement;\n        }\n    });\n\n    ngOnInit(): void {\n        this.onLocaleService();\n        const field = this.field();\n        this.mask = typeof field.mask === 'function' ? field.mask() : field.mask;\n    }\n\n    public ngAfterViewInit(): void {\n        this.changeDetectorRef.detectChanges();\n    }\n\n    private onLocaleService(): void {\n        this.localeService\n            .getLocale()\n            .pipe(first())\n            .subscribe({\n                next: () => {\n                    if (!this.field().numberLocaleOptions?.decimalSeparator) {\n                        this.field().numberLocaleOptions = {\n                            currencySymbol: this.field().numberLocaleOptions?.currencySymbol,\n                            thousandsSeparator: this.field().numberLocaleOptions?.thousandsSeparator,\n                            decimalSeparator: this.localeService.getDecimalSeparator(),\n                        };\n                    }\n\n                    if (!this.field().numberLocaleOptions?.thousandsSeparator) {\n                        this.field().numberLocaleOptions = {\n                            currencySymbol: this.field().numberLocaleOptions!.currencySymbol,\n                            decimalSeparator: this.field().numberLocaleOptions!.decimalSeparator,\n                            thousandsSeparator: this.localeService.getGroupingSeparator(),\n                        };\n                    }\n\n                    if (!this.field().numberLocaleOptions?.currencySymbol) {\n                        this.field().numberLocaleOptions = {\n                            decimalSeparator: this.field().numberLocaleOptions!.decimalSeparator,\n                            thousandsSeparator: this.field().numberLocaleOptions!.thousandsSeparator,\n                            currencySymbol: 'R$',\n                        };\n                    }\n                },\n                error: () =>\n                    (this.field().numberLocaleOptions = this.field().numberLocaleOptions ?? {\n                        thousandsSeparator: '.',\n                        decimalSeparator: ',',\n                        currencySymbol: 'R$',\n                    }),\n            });\n    }\n\n    parseAlignTo(field: CurrencyFieldConfig) {\n        return field.alignTo === 'right' ? NumberAlignmentOption.RIGHT : NumberAlignmentOption.LEFT;\n    }\n}\n\n","@let _field = field();\n@if (inputRef()) {\n    <s-field-label\n        [field]=\"_field\"\n        [fieldContainerRef]=\"inputRef()\"\n    ></s-field-label>\n}\n@let hasMask = !!_field.mask;\n<div\n    class=\"[input-is-invalid>.button-container>.button-container]:border-[1px] [input-is-invalid>.button-container>.button-container]:border-r-0 [input-is-invalid>.button-container>.button-container]:border-criticality-red [input-is-invalid>.button-container>input]:border-[1px] [input-is-invalid>.button-container>input]:border-criticality-red [input-has-focus>.button-container]:border-[1px] [input-has-focus>.button-container]:border-r-0 [input-has-focus>.button-container]:border-primary flex h-[35px] w-full\"\n    [ngClass]=\"{\n        '[&:has(.input-mask.ng-invalid.ng-dirty)>.button-container]:border-[1px] [&:has(.input-mask.ng-invalid.ng-dirty)>.button-container]:border-r-0 [&:has(.input-mask.ng-invalid.ng-dirty)>.button-container]:border-criticality-red [&:has(.input-mask.ng-invalid.ng-dirty)>input]:border-[1px] [&:has(.input-mask.ng-invalid.ng-dirty)>input]:border-criticality-red':\n            hasMask,\n    }\"\n>\n    @if (_field.currency || _field.numberLocaleOptions?.currencySymbol) {\n        <div\n            class=\"button-container flex h-full min-w-10 items-center justify-center rounded-l-[3px] border border-r-0 border-[#c1c1cc] px-[8px]\"\n        >\n            <span class=\"text-[#212533]\">\n                {{\n                    _field.currency\n                        ? currencyService.getCurrencySymbol({ currency: _field.currency() })\n                        : _field.numberLocaleOptions?.currencySymbol\n                }}\n            </span>\n        </div>\n    }\n\n    @if (hasMask) {\n        <p-inputMask\n            class=\"input-mask\"\n            #inputRef\n            type=\"text\"\n            [inputId]=\"_field.id || _field.name\"\n            [name]=\"_field.name\"\n            [formControl]=\"formControl()\"\n            [mask]=\"mask\"\n            [placeholder]=\"_field.placeholder\"\n            slotChar=\"_\"\n            [sTooltip]=\"_field.tooltip\"\n            tooltipPosition=\"top\"\n            [showDelay]=\"500\"\n            styleClass=\"mousetrap !rounded-l-[0px]\"\n            (onBlur)=\"_field.onBlur ? _field.onBlur($event) : null\"\n            (onFocus)=\"_field.onFocus ? _field.onFocus($event) : null\"\n            (onComplete)=\"_field.onComplete ? _field.onComplete($event) : null\"\n            (onInput)=\"_field.onInput ? _field.onInput($event) : null\"\n        ></p-inputMask>\n    } @else if (!hasMask) {\n        <input\n            #inputRef\n            type=\"text\"\n            [id]=\"_field.id || _field.name\"\n            class=\"h-full w-full rounded-r-[3px] border border-[#c1c1cc] p-2 outline-none focus:border-[1px] focus:border-primary\"\n            [name]=\"_field.name\"\n            [formControl]=\"formControl()\"\n            sNumberInput\n            [precision]=\"\n                _field.precision\n                    ? fieldUtils.isFunction(_field.precision)\n                        ? fieldUtils.trigger(_field.precision)\n                        : _field.precision\n                    : _field.currency && _field.currency()\n                      ? currencies[_field.currency()].precision\n                      : 15\n            \"\n            [scale]=\"\n                _field.scale\n                    ? fieldUtils.isFunction(_field.scale)\n                        ? fieldUtils.trigger(_field.scale)\n                        : _field.scale\n                    : _field.currency && _field.currency()\n                      ? currencies[_field.currency()].scale\n                      : 2\n            \"\n            [decimalSeparator]=\"_field.numberLocaleOptions?.decimalSeparator ?? ''\"\n            [thousandsSeparator]=\"_field.numberLocaleOptions?.thousandsSeparator ?? ''\"\n            [alignTo]=\"parseAlignTo(_field)\"\n            [sTooltip]=\"_field.tooltip\"\n            tooltipPosition=\"top\"\n            [placeholder]=\"_field.placeholder\"\n            [showDelay]=\"500\"\n            [autocomplete]=\"_field.browserAutocomplete ? 'on' : 'off'\"\n            [ngClass]=\"'mousetrap'\"\n            (blur)=\"_field.onBlur ? _field.onBlur($event) : null\"\n            (focus)=\"_field.onFocus ? _field.onFocus($event) : null\"\n        />\n    }\n</div>\n\n","import { AfterViewInit, ChangeDetectorRef, Component, ElementRef, HostListener, input, inject } from '@angular/core';\nimport { FormControl } from '@angular/forms';\n\nimport { FilePickerModule } from '@seniorsistemas/angular-components/file-picker';\nimport { FieldLabelComponent } from '../../../components/field-label/field-label.component';\nimport { BlobFieldConfig } from '../../configurations/fields/blob-field';\nimport { BaseFieldComponentConfig } from '../base-field-component';\n@Component({\n    standalone: true,\n    imports: [FieldLabelComponent, FilePickerModule],\n    templateUrl: 'file-picker-field.component.html',\n})\nexport class FileUploadFieldComponent implements BaseFieldComponentConfig, AfterViewInit {\n    private readonly changeDetectorRef = inject(ChangeDetectorRef);\n    private readonly elementRef = inject(ElementRef);\n\n    field = input.required<BlobFieldConfig>();\n    formControl = input.required<FormControl>();\n\n    public inputRef: HTMLInputElement | null = null;\n\n    @HostListener('click')\n    public onClick(): void {\n        this.dispatchFocusInputRef();\n    }\n\n    public ngAfterViewInit(): void {\n        this.setInputRef();\n        this.changeDetectorRef.detectChanges();\n    }\n\n    @HostListener('document:click', ['$event'])\n    onDocumentClick(event: MouseEvent): void {\n        if (!this.elementRef.nativeElement.contains(event.target)) {\n            this.inputRef?.dispatchEvent(new Event('blur'));\n        }\n    }\n\n    private setInputRef(): void {\n        this.inputRef = this.elementRef.nativeElement.querySelector('input') as HTMLInputElement;\n    }\n\n    private dispatchFocusInputRef(): void {\n        this.inputRef?.dispatchEvent(new Event('focus'));\n    }\n}\n\n","@let _field = field();\n@if (inputRef) {\n    <s-field-label\n        [field]=\"_field\"\n        [fieldContainerRef]=\"inputRef\"\n    ></s-field-label>\n}\n\n<s-file-picker\n    [id]=\"_field.id || _field.name\"\n    [accept]=\"_field.accept\"\n    [files]=\"_field.files\"\n    [multiple]=\"_field.multiple\"\n    [chooseLabel]=\"_field.chooseLabel\"\n    [removeLabel]=\"_field.removeLabel\"\n    [cancelLabel]=\"_field.cancelLabel\"\n    [successTooltip]=\"_field.successTooltip\"\n    (uploadHandler)=\"_field.onUploadFile($event, _field)\"\n    (removeFile)=\"_field.onRemoveFile($event.file, _field)\"\n    (cancelUpload)=\"_field.onCancelUpload($event, _field)\"\n    (downloadFile)=\"_field.onDownloadFile($event, _field)\"\n    [formControl]=\"formControl()\"\n    [showFileUploadDate]=\"_field.showFileUploadDate\"\n>\n</s-file-picker>\n\n","import { Component, DestroyRef, inject, input, OnInit } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\n\nimport { delay } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { TooltipDirective } from '@seniorsistemas/angular-components/tooltip';\nimport { LookupFieldConfig } from '../../configurations/fields/lookup-field';\nimport { LookupComponent } from '../../../components/lookup/lookup.component';\nimport { FieldLabelComponent } from '../../../components/field-label/field-label.component';\nimport { BaseFieldComponentConfig } from '../base-field-component';\n\n@Component({\n    standalone: true,\n    imports: [FieldLabelComponent, TooltipDirective, LookupComponent, ReactiveFormsModule],\n    templateUrl: 'lookup-field.component.html',\n})\nexport class LookupFieldComponent implements BaseFieldComponentConfig, OnInit {\n    private readonly _destroyRef = inject(DestroyRef);\n    protected gridData: any[] = [];\n    protected searchTotalRecords: number = 0;\n    protected lookupSuggestions: any[] = [];\n    protected searchTotalRecordsLabel: string = '';\n\n    field = input.required<LookupFieldConfig>();\n    formControl = input.required<FormControl>();\n\n    ngOnInit(): void {\n        this.setLookupData();\n    }\n\n    private setLookupData() {\n        const field = this.field();\n        field.suggestionsObservable\n            .pipe(takeUntilDestroyed(this._destroyRef))\n            .subscribe((suggestions) => (this.lookupSuggestions = suggestions));\n        field.searchObservable\n            .pipe(takeUntilDestroyed(this._destroyRef), delay(0))\n            .subscribe(({ totalRecords, gridData, searchTotalRecordsLabel }) => {\n                this.gridData = gridData;\n                this.searchTotalRecords = totalRecords;\n                this.searchTotalRecordsLabel = searchTotalRecordsLabel as string;\n            });\n    }\n}\n\n","@let _field = field();\n<s-field-label [field]=\"_field\"></s-field-label>\n\n<div\n    [sTooltip]=\"_field.tooltip\"\n    tooltipPosition=\"top\"\n    [showDelay]=\"500\"\n>\n    <s-lookup\n        [id]=\"_field.id || _field.name\"\n        [multiple]=\"_field.multiple ?? false\"\n        [formControl]=\"formControl()\"\n        [lookupSuggestions]=\"lookupSuggestions\"\n        [dataKey]=\"_field.dataKey\"\n        [placeholder]=\"_field.placeholder\"\n        [showSearch]=\"_field.showSearch ?? true\"\n        [searchFields]=\"_field.searchFields\"\n        [searchGridFields]=\"_field.searchGridFields\"\n        [searchGridData]=\"gridData\"\n        (onLookupRequest)=\"_field.onLookupRequest($event)\"\n        (onSearchRequest)=\"_field.onSearchRequest($event)\"\n        [lookupDisplayField]=\"_field.lookupDisplayField\"\n        [searchTotalRecords]=\"searchTotalRecords\"\n        [labelOptions]=\"{\n            recordsLabel: _field.recordsLabel,\n            recordLabel: _field.recordLabel,\n            emptyFieldLabel: _field.emptyFieldLabel,\n            selectLabel: _field.selectLabel,\n            cancelLabel: _field.cancelLabel,\n            clearLabel: _field.clearLabel,\n            filterLabel: _field.filterLabel,\n            filterTitle: _field.filterTitle,\n            searchTotalRecordsLabel: searchTotalRecordsLabel,\n            searchEmptyTitle: _field.searchEmptyTitle,\n            searchTitle: _field.searchTitle,\n        }\"\n        (onSelect)=\"_field.onSelect?.($event)\"\n        (onUnselect)=\"_field.onUnselect?.($event)\"\n        (onClear)=\"_field.onClear ? _field.onClear($event) : null\"\n        (onBlur)=\"_field.onBlur ? _field.onBlur($event) : null\"\n        [lookupAppendTo]=\"_field.appendTo\"\n        [lookupEmptyMessage]=\"_field.emptyMessage\"\n        [defaultFilter]=\"_field.defaultFilter ?? []\"\n        [autocompleteForceSelection]=\"_field.autocompleteForceSelection ?? true\"\n        [maxlength]=\"_field.maxlength ?? null\"\n        [showAddOption]=\"_field.showAddOption ?? false\"\n        [showEditOption]=\"_field.showEditOption ?? false\"\n        [showRemoveOption]=\"_field.showRemoveOption ?? false\"\n        [sortableColumnsDisabled]=\"_field.sortableColumnsDisabled ?? []\"\n        (onAdd)=\"_field.onAdd ? _field.onAdd() : null\"\n        (onEdit)=\"_field.onEdit ? _field.onEdit($event) : null\"\n        (onRemove)=\"_field.onRemove ? _field.onRemove($event) : null\"\n        (onClearButtonClick)=\"_field.onClearButtonClick ? _field.onClearButtonClick() : null\"\n    >\n    </s-lookup>\n</div>\n\n","/* eslint-disable @angular-eslint/no-output-on-prefix */\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport {\n    AfterViewInit,\n    ChangeDetectorRef,\n    Component,\n    ElementRef,\n    EventEmitter,\n    inject,\n    input,\n    OnDestroy,\n    OnInit,\n    Output,\n    ViewEncapsulation,\n} from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { ButtonComponent } from '@seniorsistemas/angular-components/button';\nimport { LocaleService } from '@seniorsistemas/angular-components/locale';\nimport { LocalizedNumberInputModule } from '@seniorsistemas/angular-components/localized-number-input';\nimport { NumberAlignmentOption, NumberInputModule } from '@seniorsistemas/angular-components/number-input';\nimport { TooltipDirective } from '@seniorsistemas/angular-components/tooltip';\nimport { InputMaskModule } from 'primeng/inputmask';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { Subject } from 'rxjs';\nimport { first, takeUntil } from 'rxjs/operators';\nimport { FieldLabelComponent } from '../../../components/field-label/field-label.component';\nimport { FormFieldUtilsService } from '../../../services/form-field-utils.service';\nimport { NumberFieldConfig } from '../../configurations/fields/number-field';\nimport { BaseFieldComponentConfig } from '../base-field-component';\n\n@Component({\n    standalone: true,\n    imports: [\n        FieldLabelComponent,\n        InputMaskModule,\n        TooltipDirective,\n        ReactiveFormsModule,\n        ButtonComponent,\n        LocalizedNumberInputModule,\n        NgClass,\n        NumberInputModule,\n        NgTemplateOutlet,\n        InputTextModule,\n    ],\n    templateUrl: 'number-field.component.html',\n    styleUrls: ['./number-field.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n})\nexport class NumberFieldComponent implements OnInit, OnDestroy, BaseFieldComponentConfig, AfterViewInit {\n    private readonly localeService = inject(LocaleService);\n    private readonly elementRef = inject(ElementRef);\n    private readonly changeDetectorRef = inject(ChangeDetectorRef);\n\n    field = input.required<NumberFieldConfig>();\n    formControl = input.required<FormControl>();\n\n    fieldUtils = inject(FormFieldUtilsService);\n\n    @Output()\n    public onInput: EventEmitter<any> = new EventEmitter();\n    @Output()\n    public onFocus: EventEmitter<any> = new EventEmitter();\n    @Output()\n    public onComplete: EventEmitter<any> = new EventEmitter();\n\n    public inputRef: ElementRef | null = null;\n\n    private ngUnsubscribe = new Subject<void>();\n\n    public ngOnInit() {\n        this.onLocaleService();\n\n        this.onFocus.pipe(takeUntil(this.ngUnsubscribe)).subscribe((event: FocusEvent) => {\n            if (this.field().onFocus) {\n                this.field().onFocus?.(event);\n            }\n        });\n\n        this.onInput.pipe(takeUntil(this.ngUnsubscribe)).subscribe((event: any) => {\n            if (this.field().onInput) {\n                this.field().onInput?.(event);\n            }\n        });\n\n        this.onComplete.pipe(takeUntil(this.ngUnsubscribe)).subscribe((event: any) => {\n            if (this.field().onComplete) {\n                this.field().onComplete?.(event);\n            }\n        });\n    }\n\n    public ngAfterViewInit(): void {\n        this.setInputRef();\n        this.changeDetectorRef.detectChanges();\n    }\n\n    public ngOnDestroy() {\n        this.ngUnsubscribe.next();\n        this.ngUnsubscribe.complete();\n    }\n\n    public get numberAlignmentOption() {\n        return NumberAlignmentOption;\n    }\n\n    private onLocaleService(): void {\n        const field = this.field();\n        this.localeService\n            .getLocale()\n            .pipe(first())\n            .subscribe({\n                next: () => {\n                    if (!field.numberLocaleOptions?.decimalSeparator) {\n                        field.numberLocaleOptions = {\n                            ...field.numberLocaleOptions,\n                            decimalSeparator: this.localeService.getDecimalSeparator() ?? '',\n                        };\n                    }\n\n                    if (!field.numberLocaleOptions?.thousandsSeparator) {\n                        field.numberLocaleOptions = {\n                            ...field.numberLocaleOptions,\n                            thousandsSeparator: this.localeService.getGroupingSeparator() ?? '',\n                        };\n                    }\n\n                    if (!field.numberLocaleOptions?.currencySymbol) {\n                        field.numberLocaleOptions = {\n                            ...field.numberLocaleOptions,\n                            currencySymbol: 'R$',\n                        };\n                    }\n                },\n                error: () =>\n                    (field.numberLocaleOptions = field.numberLocaleOptions ?? {\n                        thousandsSeparator: '.',\n                        decimalSeparator: ',',\n                        currencySymbol: 'R$',\n                    }),\n            });\n    }\n\n    private setInputRef(): void {\n        const input = this.elementRef.nativeElement.querySelector('input');\n        this.inputRef = input;\n    }\n}\n\n","@let _field = field();\n@if (inputRef) {\n    <s-field-label\n        [field]=\"_field\"\n        [fieldContainerRef]=\"inputRef.nativeElement\"\n    />\n}\n\n@let hasMask = !!_field.mask;\n@if (hasMask) {\n    <p-inputMask\n        #inputRef\n        type=\"text\"\n        [inputId]=\"_field.id || _field.name\"\n        [name]=\"_field.name\"\n        [mask]=\"_field.mask ? fieldUtils.getFieldPropertyMask(_field.mask) : null\"\n        [placeholder]=\"_field.placeholder\"\n        slotChar=\"_\"\n        [sTooltip]=\"_field.tooltip\"\n        tooltipPosition=\"top\"\n        [showDelay]=\"500\"\n        styleClass=\"mousetrap\"\n        (onBlur)=\"_field.onBlur ? _field.onBlur($event) : null\"\n        (onFocus)=\"onFocus.next($event)\"\n        (onComplete)=\"onComplete.next($event)\"\n        (onInput)=\"onInput.next($event)\"\n        [formControl]=\"formControl()\"\n    >\n    </p-inputMask>\n} @else if (!hasMask) {\n    <div class=\"ui-inputgroup\">\n        @if (_field.leftAddon) {\n            @if (_field.leftAddon.callback) {\n                <span class=\"addon-button addon-button--left\">\n                    <s-button\n                        [label]=\"_field.leftAddon.label\"\n                        [iconClass]=\"_field.leftAddon.icon\"\n                        [priority]=\"_field.leftAddon.priority\"\n                        [disabled]=\"fieldUtils.fieldPropertyIsDisabled(_field.leftAddon)\"\n                        (clicked)=\"_field.leftAddon.callback()\"\n                    >\n                    </s-button>\n                </span>\n            }\n            @if (!_field.leftAddon.callback) {\n                <span class=\"ui-inputgroup-addon\">\n                    @if (_field.leftAddon.label) {\n                        <span>{{ _field.leftAddon.label }}</span>\n                    } @else if (!_field.leftAddon.label) {\n                        <span [ngClass]=\"_field.leftAddon.icon\"></span>\n                    }\n                </span>\n            }\n        }\n\n        @if (\n            _field.type === 'legacyNumber' && _field.localizedNumber && _field.alignTo === numberAlignmentOption.LEFT\n        ) {\n            <ng-container *ngTemplateOutlet=\"localizedNumber\"></ng-container>\n        } @else {\n            <ng-container *ngTemplateOutlet=\"input\"></ng-container>\n        }\n\n        @if (_field.rightAddon) {\n            @if (_field.rightAddon.callback) {\n                <span class=\"addon-button addon-button--right\">\n                    <s-button\n                        [label]=\"_field.rightAddon.label\"\n                        [iconClass]=\"_field.rightAddon.icon\"\n                        [priority]=\"_field.rightAddon.priority\"\n                        [disabled]=\"fieldUtils.fieldPropertyIsDisabled(_field.rightAddon)\"\n                        (clicked)=\"_field.rightAddon.callback()\"\n                    >\n                    </s-button>\n                </span>\n            }\n            @if (!_field.rightAddon.callback) {\n                <span class=\"ui-inputgroup-addon\">\n                    @if (_field.rightAddon.label) {\n                        {{ _field.rightAddon.label }}\n                    } @else if (!_field.rightAddon.label) {\n                        <span [ngClass]=\"_field.rightAddon.icon\"></span>\n                    }\n                </span>\n            }\n        }\n    </div>\n}\n\n<ng-template #input>\n    <input\n        #inputRef\n        [id]=\"_field.id || _field.name\"\n        type=\"text\"\n        [name]=\"_field.name\"\n        sNumberInput\n        [precision]=\"fieldUtils.isFunction(_field.precision) ? fieldUtils.trigger(_field.precision) : _field.precision\"\n        [scale]=\"fieldUtils.isFunction(_field.scale) ? fieldUtils.trigger(_field.scale) : _field.scale\"\n        [decimalSeparator]=\"_field.numberLocaleOptions?.decimalSeparator ?? ''\"\n        [thousandsSeparator]=\"_field.numberLocaleOptions?.thousandsSeparator ?? ''\"\n        [alignTo]=\"_field.alignTo ?? numberAlignmentOption.LEFT\"\n        ;\n        [sTooltip]=\"_field.tooltip\"\n        tooltipPosition=\"top\"\n        [placeholder]=\"_field.placeholder\"\n        [showDelay]=\"500\"\n        pInputText\n        [autocomplete]=\"_field.browserAutocomplete ? 'on' : 'off'\"\n        [ngClass]=\"'mousetrap'\"\n        (blur)=\"_field.onBlur ? _field.onBlur($event) : null\"\n        (focus)=\"onFocus.next($event)\"\n        [formControl]=\"formControl()\"\n    />\n</ng-template>\n<ng-template #localizedNumber>\n    <input\n        #inputRef\n        [id]=\"_field.id || _field.name\"\n        type=\"text\"\n        [name]=\"_field.name\"\n        sLocalizedNumberInput\n        [precision]=\"fieldUtils.isFunction(_field.precision) ? fieldUtils.trigger(_field.precision) : _field.precision\"\n        [decimalSeparator]=\"_field.numberLocaleOptions?.decimalSeparator\"\n        [thousandsSeparator]=\"_field.numberLocaleOptions?.thousandsSeparator\"\n        [sTooltip]=\"_field.tooltip\"\n        tooltipPosition=\"top\"\n        [placeholder]=\"_field.placeholder\"\n        [showDelay]=\"500\"\n        pInputText\n        [autocomplete]=\"_field.browserAutocomplete ? 'on' : 'off'\"\n        [ngClass]=\"'mousetrap'\"\n        (blur)=\"_field.onBlur ? _field.onBlur($event) : null\"\n        (focus)=\"onFocus.next($event)\"\n        [formControl]=\"formControl()\"\n    />\n</ng-template>\n\n","/* eslint-disable @angular-eslint/no-output-on-prefix */\nimport {\n    AfterViewInit,\n    ChangeDetectorRef,\n    Component,\n    ElementRef,\n    EventEmitter,\n    inject,\n    input,\n    OnDestroy,\n    OnInit,\n    Output,\n    ViewChild,\n    ViewEncapsulation,\n} from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { FormFieldUtilsService } from '../../../services/form-field-utils.service';\nimport { PasswordFieldConfig } from '../../configurations/fields/password-field';\nimport { BaseFieldComponentConfig } from '../base-field-component';\nimport { FieldLabelComponent } from '../../../components/field-label/field-label.component';\nimport { NgClass, NgStyle } from '@angular/common';\nimport { TooltipDirective } from '@seniorsistemas/angular-components/tooltip';\nimport { PasswordStrengthModule } from '@seniorsistemas/angular-components/password-strength';\nimport { ButtonComponent } from '@seniorsistemas/angular-components/button';\nimport { InputTextModule } from 'primeng/inputtext';\n\n@Component({\n    templateUrl: './password-field.component.html',\n    styleUrls: ['./password-field.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    standalone: true,\n    imports: [\n        FieldLabelComponent,\n        NgClass,\n        TooltipDirective,\n        ReactiveFormsModule,\n        NgStyle,\n        PasswordStrengthModule,\n        ButtonComponent,\n        InputTextModule,\n    ],\n})\nexport class PasswordFieldComponent implements OnInit, AfterViewInit, OnDestroy, BaseFieldComponentConfig {\n    private readonly changeDetectorRef = inject(ChangeDetectorRef);\n\n    field = input.required<PasswordFieldConfig>();\n    formControl = input.required<FormControl>();\n\n    @Output()\n    public onInput: EventEmitter<Event> = new EventEmitter<Event>();\n\n    @Output()\n    public onFocus: EventEmitter<any> = new EventEmitter();\n\n    @Output()\n    public onComplete: EventEmitter<any> = new EventEmitter();\n\n    @ViewChild('inputRef') inputRef: ElementRef | null = null;\n\n    private ngUnsubscribe = new Subject<void>();\n    public passwordVisible = false;\n\n    private readonly formUtils = inject(FormFieldUtilsService);\n\n    public ngOnInit(): void {\n        this.formUtils.switchEmptyStringToNull(this.formControl(), this.ngUnsubscribe);\n        const field = this.field();\n        this.onFocus.pipe(takeUntil(this.ngUnsubscribe)).subscribe((event: FocusEvent) => {\n            if (field.onFocus) {\n                field.onFocus(event);\n            }\n        });\n        this.onInput.pipe(takeUntil(this.ngUnsubscribe)).subscribe((event) => {\n            if (field.onInput) {\n                field.onInput(event);\n            }\n        });\n        this.onComplete.pipe(takeUntil(this.ngUnsubscribe)).subscribe((event: any) => {\n            if (field.onComplete) {\n                field.onComplete(event);\n            }\n        });\n    }\n\n    public ngOnDestroy(): void {\n        this.ngUnsubscribe.next();\n        this.ngUnsubscribe.complete();\n    }\n\n    public onChangeVisible(): void {\n        this.passwordVisible = !this.passwordVisible;\n    }\n\n    public ngAfterViewInit(): void {\n        this.changeDetectorRef.detectChanges();\n    }\n}\n\n","@let _field = field();\n@if (inputRef) {\n    <s-field-label\n        [field]=\"_field\"\n        [fieldContainerRef]=\"inputRef\"\n    ></s-field-label>\n}\n\n<div\n    class=\"password-field\"\n    [ngClass]=\"{ 'password-field--toggle': _field.showToggle }\"\n>\n    <input\n        #inputRef\n        [type]=\"passwordVisible ? 'text' : 'password'\"\n        [id]=\"_field.id || _field.name\"\n        class=\"password-input\"\n        [name]=\"_field.name\"\n        [sTooltip]=\"_field.tooltip\"\n        tooltipPosition=\"top\"\n        [placeholder]=\"_field.placeholder ?? ''\"\n        [showDelay]=\"500\"\n        [maxLength]=\"_field.maxLength ?? 9999999\"\n        pInputText\n        [ngClass]=\"'mousetrap'\"\n        (blur)=\"_field.onBlur ? _field.onBlur($event) : null\"\n        (focus)=\"onFocus.next($event)\"\n        (input)=\"onInput.next($event)\"\n        [formControl]=\"formControl()\"\n        [ngStyle]=\"_field.style\"\n        [sPasswordStrength]=\"_field.passwordStrength ? _field.passwordStrength : false\"\n        [passwordStrengthDescription]=\"\n            _field.passwordStrengthOptions?.description ? _field.passwordStrengthOptions!.description : ''\n        \"\n        [passwordStrengthWeakTitle]=\"\n            _field.passwordStrengthOptions?.weakTitle ? _field.passwordStrengthOptions?.weakTitle : ''\n        \"\n        [passwordStrengthMediumTitle]=\"\n            _field.passwordStrengthOptions?.mediumTitle ? _field.passwordStrengthOptions?.mediumTitle : ''\n        \"\n        [passwordStrengthStrongTitle]=\"\n            _field.passwordStrengthOptions?.strongTitle ? _field.passwordStrengthOptions?.strongTitle : ''\n        \"\n        [passwordStrengthValidation]=\"_field.passwordStrengthOptions?.validation\"\n    />\n    @if (_field.showToggle) {\n        <span class=\"toggle-button\">\n            <s-button\n                [iconClass]=\"passwordVisible ? 'fas fa-eye-slash' : 'fas fa-eye'\"\n                priority=\"default\"\n                (clicked)=\"onChangeVisible()\"\n            >\n            </s-button>\n        </span>\n    }\n</div>\n\n","import { Component, input } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { ProfilePictureConfig } from '../../configurations/fields/profile-picture';\nimport { BaseFieldComponentConfig } from '../base-field-component';\nimport { FieldLabelComponent } from '../../../components/field-label/field-label.component';\nimport { ProfilePicturePickerModule } from '@seniorsistemas/angular-components/profile-picture-picker';\n@Component({\n    templateUrl: './profile-picture-field.component.html',\n    standalone: true,\n    imports: [FieldLabelComponent, ProfilePicturePickerModule, ReactiveFormsModule],\n})\nexport class ProfilePictureFieldComponent implements BaseFieldComponentConfig {\n    field = input.required<ProfilePictureConfig>();\n    formControl = input.required<FormControl>();\n}\n\n","@let _field = field();\n<s-field-label [field]=\"_field\"></s-field-label>\n\n<s-profile-picture-picker\n    [formControl]=\"formControl()\"\n    [simpleTitle]=\"_field.simpleTitle\"\n    [actionTitle]=\"_field.actionTitle\"\n    [subtitle]=\"_field.subtitle\"\n    [aspectRatio]=\"_field.aspectRatio\"\n    [cropperLabelsConfig]=\"_field.cropperLabelsConfig\"\n    [removeButtonLabel]=\"_field.removeButtonLabel\"\n    [changeButtonLabel]=\"_field.changeButtonLabel\"\n    [confirmationTexts]=\"_field.confirmationTexts\"\n    [maxFileSize]=\"_field.maxFileSize\"\n    [accept]=\"_field.accept\"\n    [supportedExtensions]=\"_field.supportedExtensions ?? []\"\n    (changedImage)=\"_field.onChangeImage ? _field.onChangeImage($event) : null\"\n    (removedImage)=\"_field.onRemovedImage ? _field.onRemovedImage() : null\"\n    (invalidFile)=\"_field.onInvalidFile ? _field.onInvalidFile($event) : null\"\n>\n</s-profile-picture-picker>\n\n","/* eslint-disable @angular-eslint/no-output-on-prefix */\nimport { Component, EventEmitter, input, OnDestroy, OnInit, Output, ViewEncapsulation } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { RadioButtonFieldConfig } from '../../configurations/fields/radio-button-field';\nimport { BaseFieldComponentConfig } from '../base-field-component';\nimport { FieldLabelComponent } from '../../../components/field-label/field-label.component';\nimport { ButtonComponent } from '@seniorsistemas/angular-components/button';\nimport { RadioButtonComponent } from '@seniorsistemas/angular-components/radio-button';\nimport { TooltipDirective } from '@seniorsistemas/angular-components/tooltip';\nimport { NgTemplateOutlet } from '@angular/common';\n@Component({\n    standalone: true,\n    imports: [\n        FieldLabelComponent,\n        ButtonComponent,\n        RadioButtonComponent,\n        ReactiveFormsModule,\n        TooltipDirective,\n        NgTemplateOutlet,\n    ],\n    templateUrl: 'radio-button-field.component.html',\n    styles: [\n        `\n            s-button.horizontal-clear-option button {\n                width: min-content !important;\n            }\n            .horizontal-radio-buttons-container {\n                gap: 20px 40px;\n                .radio-button-item {\n                    margin: 0;\n                }\n            }\n        `,\n    ],\n    encapsulation: ViewEncapsulation.None,\n})\nexport class RadioButtonFieldComponent implements OnInit, OnDestroy, BaseFieldComponentConfig {\n    field = input.required<RadioButtonFieldConfig>();\n    formControl = input.required<FormControl>();\n\n    @Output()\n    public onClick: EventEmitter<any> = new EventEmitter();\n\n    @Output()\n    public onFocus: EventEmitter<any> = new EventEmitter();\n\n    private _ngUnsubscribe = new Subject<void>();\n\n    public ngOnInit(): void {\n        const field = this.field();\n        this.onFocus.pipe(takeUntil(this._ngUnsubscribe)).subscribe((event: FocusEvent) => {\n            if (field.onFocus) {\n                field.onFocus(event);\n            }\n        });\n        this.onClick.pipe(takeUntil(this._ngUnsubscribe)).subscribe((event: any) => {\n            if (field.onClick) {\n                field.onClick(event);\n            }\n        });\n    }\n\n    public ngOnDestroy(): void {\n        this._ngUnsubscribe.next();\n        this._ngUnsubscribe.complete();\n    }\n\n    public onClear(): void {\n        this.formControl().reset();\n    }\n}\n\n","@let _field = field();\n<s-field-label [field]=\"_field\"></s-field-label>\n\n@if (_field.verticalAlignment) {\n    <div class=\"ui-g\">\n        @for (option of _field.options; let i = $index; track i) {\n            <div class=\"ui-g-12\">\n                <ng-container\n                    [ngTemplateOutlet]=\"radioButton\"\n                    [ngTemplateOutletContext]=\"{ option: option, index: i }\"\n                >\n                </ng-container>\n            </div>\n        }\n        @if (_field.showClear && _field.required && !_field.required() && !formControl().disabled) {\n            <s-button\n                [label]=\"_field.clearLabel || 'Clear selection'\"\n                (clicked)=\"onClear()\"\n                priority=\"link\"\n            >\n            </s-button>\n        }\n    </div>\n} @else {\n    <div class=\"ui-g horizontal-radio-buttons-container\">\n        @for (option of _field.options; let i = $index; track i) {\n            <ng-container\n                [ngTemplateOutlet]=\"radioButton\"\n                [ngTemplateOutletContext]=\"{ option: option, index: i }\"\n            >\n            </ng-container>\n        }\n    </div>\n    @if (_field.showClear && _field.required && !_field.required() && !formControl().disabled) {\n        <s-button\n            class=\"horizontal-clear-option\"\n            [label]=\"_field.clearLabel || 'Clear selection'\"\n            (clicked)=\"onClear()\"\n            priority=\"link\"\n        >\n        </s-button>\n    }\n}\n\n<ng-template\n    #radioButton\n    let-option=\"option\"\n    let-i=\"index\"\n>\n    @let inputId = (_field.id || _field.name) + '-' + i;\n    <s-radiobutton\n        class=\"radio-button-item\"\n        [name]=\"_field.name\"\n        [value]=\"option.value\"\n        [formControl]=\"formControl()\"\n        [inputId]=\"inputId\"\n        [sTooltip]=\"_field.tooltip\"\n        [label]=\"option.label\"\n        (focusedInput)=\"onFocus.next($event)\"\n        (inputFocusLost)=\"_field.onBlur ? _field.onBlur($event) : null\"\n    />\n</ng-template>\n\n","import { Component, inject, input } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { FormFieldUtilsService } from '../../../services/form-field-utils.service';\nimport { SelectFieldConfig } from '../../configurations/fields/select-field';\nimport { BaseFieldComponentConfig } from '../base-field-component';\nimport { FieldLabelComponent } from '../../../components/field-label/field-label.component';\nimport { SelectComponent } from '@seniorsistemas/angular-components/select';\nimport { TooltipDirective } from '@seniorsistemas/angular-components/tooltip';\n@Component({\n    standalone: true,\n    imports: [FieldLabelComponent, SelectComponent, ReactiveFormsModule, TooltipDirective],\n    templateUrl: 'select-field.component.html',\n})\nexport class SelectFieldComponent implements BaseFieldComponentConfig {\n    field = input.required<SelectFieldConfig>();\n    formControl = input.required<FormControl>();\n    fieldUtils = inject(FormFieldUtilsService);\n}\n\n","@let _field = field();\n<s-field-label [field]=\"_field\"></s-field-label>\n\n<s-select\n    [multiple]=\"_field.multiple ?? false\"\n    [filter]=\"_field.filter ?? false\"\n    [id]=\"_field.id || _field.name\"\n    [options]=\"fieldUtils.getFieldProperty(_field.options)\"\n    [placeholder]=\"_field.placeholder || ' '\"\n    [formControl]=\"formControl()\"\n    [sTooltip]=\"_field.tooltip\"\n    tooltipPosition=\"top\"\n    [showDelay]=\"500\"\n    [group]=\"_field.group ?? false\"\n    [showClear]=\"_field.showClear ?? false\"\n    [optionLabel]=\"_field.optionLabel ?? 'label'\"\n    [optionValue]=\"_field.optionValue ?? 'value'\"\n    (clicked)=\"_field.onClick ? _field.onClick($event) : null\"\n    (onChange)=\"_field.onChange ? _field.onChange($event) : null\"\n    [emptyMessage]=\"_field.emptyMessage ?? null\"\n>\n</s-select>\n\n","/* eslint-disable @angular-eslint/no-output-on-prefix */\nimport { Component, EventEmitter, input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { isNullOrUndefined } from '@seniorsistemas/angular-components/utils';\nimport { SliderFieldConfig } from '../../configurations/fields/slider-field';\nimport { BaseFieldComponentConfig } from '../base-field-component';\nimport { FieldLabelComponent } from '../../../components/field-label/field-label.component';\nimport { SliderModule } from '@seniorsistemas/angular-components/slider';\n@Component({\n    standalone: true,\n    imports: [FieldLabelComponent, SliderModule, ReactiveFormsModule],\n    templateUrl: 'slider-field.component.html',\n    styleUrls: ['./slider-field.component.scss'],\n})\nexport class SliderFieldComponent implements OnInit, OnDestroy, BaseFieldComponentConfig {\n    field = input.required<SliderFieldConfig>();\n    formControl = input.required<FormControl>();\n\n    @Output()\n    public onChange: EventEmitter<any> = new EventEmitter();\n\n    @Output()\n    public onSlideEnd: EventEmitter<any> = new EventEmitter();\n\n    private ngUnsubscribe = new Subject<void>();\n\n    public ngOnInit() {\n        const field = this.field();\n        if (isNullOrUndefined(field.min)) {\n            field.min = 0;\n        }\n        if (isNullOrUndefined(field.max)) {\n            field.max = 100;\n        }\n        if (isNullOrUndefined(field.rangeSeparator)) {\n            field.rangeSeparator = ' - ';\n        }\n\n        if (isNullOrUndefined(field.orientation)) {\n            field.orientation = 'horizontal';\n        }\n\n        if (isNullOrUndefined(field.step)) {\n            field.step = 1;\n        }\n        const defaultValue = field?.range ? [field.min, field.max] : field.min;\n        if (!this.isValid(this.formControl().value)) {\n            this.formControl().setValue(field.defaultValue ?? defaultValue);\n        }\n        this.subscribeToFormControlEvents();\n    }\n\n    private subscribeToFormControlEvents() {\n        const field = this.field();\n        this.onChange.pipe(takeUntil(this.ngUnsubscribe)).subscribe((event: FocusEvent) => {\n            if (field.onChange) {\n                field.onChange(event);\n            }\n        });\n\n        this.onSlideEnd.pipe(takeUntil(this.ngUnsubscribe)).subscribe((event: any) => {\n            if (field.onSlideEnd) {\n                field.onSlideEnd(event);\n            }\n        });\n    }\n\n    private isValid(value: any): boolean {\n        if (this.field().range) {\n            return Array.isArray(value) && this.isValidRange(value);\n        } else {\n            return Number.isInteger(value) && this.isValidNoRange(value);\n        }\n    }\n\n    private isValidRange(value: any[]): boolean {\n        const field = this.field();\n        const [startValue, endValue] = value;\n        return (\n            startValue >= field?.min! && startValue <= field?.max! && endValue >= field?.min! && endValue <= field?.max!\n        );\n    }\n\n    private isValidNoRange(value: number): boolean {\n        return value >= this.field().min! && value <= this.field().max!;\n    }\n\n    public ngOnDestroy() {\n        this.ngUnsubscribe.next();\n        this.ngUnsubscribe.complete();\n    }\n\n    private getRangeLabel(): string {\n        const field = this.field();\n        let [value0, value1] = this.formControl().value ?? [0, 0];\n        const prefix = field.prefix ?? '';\n        const suffix = field.suffix ?? '';\n        const separator = field.rangeSeparator ?? ' - ';\n\n        if (!value0 || value0 < field.min!) {\n            value0 = field.min;\n        }\n\n        if (!value1 || value1 > field.max!) {\n            value1 = field.max;\n        }\n\n        return `${prefix}${value0}${suffix}${separator}${prefix}${value1}${suffix}`;\n    }\n\n    private getNonRangeLabel(): string {\n        const field = this.field();\n        let value = this.formControl()?.value;\n        const prefix = field.prefix ?? '';\n        const suffix = field.suffix ?? '';\n\n        if (!value || value < field.min!) {\n            value = field.min;\n        }\n\n        if (value > field.max!) {\n            value = field.max;\n        }\n\n        return `${prefix}${value}${suffix}`;\n    }\n\n    public get label() {\n        return this.field().range ? this.getRangeLabel() : this.getNonRangeLabel();\n    }\n}\n\n","@let _field = field();\n<s-field-label [field]=\"_field\"></s-field-label>\n\n<div class=\"slider-group\">\n    <div class=\"slider-label\">\n        <span>{{ label }}</span>\n    </div>\n    <s-slider\n        #slider\n        [id]=\"_field.id || _field.name\"\n        [formControl]=\"formControl()\"\n        [multiple]=\"_field.range ? _field.range : slider.multiple\"\n        [min]=\"_field.min!\"\n        [max]=\"_field.max!\"\n        [step]=\"_field.step!\"\n        (valueChange)=\"_field.onChange ? _field.onChange($event) : null\"\n    >\n    </s-slider>\n</div>\n\n","import { Component, input } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { StarRatingFieldConfig } from '../../configurations/fields/star-rating-field';\nimport { BaseFieldComponentConfig } from '../base-field-component';\nimport { FieldLabelComponent } from '../../../components/field-label/field-label.component';\nimport { StarRatingComponent } from '@seniorsistemas/angular-components/star-rating';\n\n@Component({\n    standalone: true,\n    imports: [FieldLabelComponent, StarRatingComponent, ReactiveFormsModule],\n    selector: 's-star-rating-field',\n    templateUrl: './star-rating-field.component.html',\n})\nexport class StarRatingFieldComponent implements BaseFieldComponentConfig {\n    field = input.required<StarRatingFieldConfig>();\n    formControl = input.required<FormControl>();\n\n    onValueChange(newValue: number) {\n        if (this.field().valueChange) {\n            this.field().valueChange?.(newValue);\n        }\n    }\n}\n\n","<s-field-label [field]=\"field()\" />\n\n<s-star-rating\n    [justifyContent]=\"field().justifyContent ?? 'start'\"\n    [starsRange]=\"field().starRange\"\n    [formControl]=\"formControl()\"\n    (selectedStarChange)=\"onValueChange($event)\"\n>\n</s-star-rating>\n\n","import { AfterViewInit, ChangeDetectorRef, Component, inject, input, OnDestroy, OnInit } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\n\nimport { Subject } from 'rxjs';\nimport { FormFieldUtilsService } from '../../../services/form-field-utils.service';\nimport { TextAreaFieldConfig } from '../../configurations/fields/text-area-field';\nimport { BaseFieldComponentConfig } from '../base-field-component';\nimport { FieldLabelComponent } from '../../../components/field-label/field-label.component';\nimport { TextAreaModule } from '@seniorsistemas/angular-components/text-area';\n\n@Component({\n    standalone: true,\n    imports: [FieldLabelComponent, TextAreaModule, ReactiveFormsModule],\n    templateUrl: 'text-area-field.component.html',\n    styleUrl: 'text-area-field.component.scss',\n})\nexport class TextAreaFieldComponent implements BaseFieldComponentConfig, AfterViewInit, OnDestroy, OnInit {\n    private readonly changeDetectorRef = inject(ChangeDetectorRef);\n\n    field = input.required<TextAreaFieldConfig>();\n    formControl = input.required<FormControl>();\n\n    private readonly formUtils = inject(FormFieldUtilsService);\n    private readonly onDestroy$ = new Subject<void>();\n\n    ngOnInit(): void {\n        this.formUtils.switchEmptyStringToNull(this.formControl(), this.onDestroy$);\n    }\n\n    ngAfterViewInit(): void {\n        this.changeDetectorRef.detectChanges();\n    }\n\n    ngOnDestroy(): void {\n        this.onDestroy$.next();\n        this.onDestroy$.complete();\n    }\n}\n\n","@let _field = field();\n@if (textArea.renderTextArea) {\n    <s-field-label\n        [field]=\"_field\"\n        [fieldContainerRef]=\"textArea.textAreaElement.nativeElement\"\n    ></s-field-label>\n}\n\n<s-textarea\n    #textArea\n    [inputId]=\"_field.id || _field.name\"\n    [rows]=\"_field.rows ?? textArea.rows\"\n    [formControl]=\"formControl()\"\n    [inputStyle]=\"_field.style ?? {}\"\n    [readOnly]=\"_field.readonly ? _field.readonly() : false\"\n    [keyFilter]=\"_field.keyFilter\"\n    [placeholder]=\"_field.placeholder ?? ''\"\n    [keepContext]=\"_field.keepContext ?? false\"\n    [speechRecognitionPlaceholder]=\"_field.speechRecognitionPlaceholder ?? ''\"\n    [maxLength]=\"_field.maxLength ?? null\"\n    [speechRecognition]=\"_field.speechRecognition ?? false\"\n>\n</s-textarea>\n\n","/* eslint-disable @angular-eslint/no-output-on-prefix */\nimport {\n    AfterViewInit,\n    ChangeDetectorRef,\n    Component,\n    ElementRef,\n    EventEmitter,\n    inject,\n    input,\n    OnDestroy,\n    OnInit,\n    Output,\n    ViewChild,\n    ViewEncapsulation,\n} from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { InputMask, InputMaskModule } from 'primeng/inputmask';\nimport { FormFieldUtilsService } from '../../../services/form-field-utils.service';\nimport { TextFieldConfig } from '../../configurations/fields/text-field';\nimport { BaseFieldComponentConfig } from '../base-field-component';\nimport { FieldLabelComponent } from '../../../components/field-label/field-label.component';\nimport { TooltipModule } from '@seniorsistemas/angular-components/tooltip';\nimport { ButtonComponent } from '@seniorsistemas/angular-components/button';\nimport { NgClass, NgStyle, NgTemplateOutlet } from '@angular/common';\nimport { KeyFilterModule } from 'primeng/keyfilter';\nimport { InputText } from 'primeng/inputtext';\n\n@Component({\n    templateUrl: 'text-field.component.html',\n    styleUrls: ['./text-field.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    standalone: true,\n    imports: [\n        FieldLabelComponent,\n        InputMaskModule,\n        TooltipModule,\n        ButtonComponent,\n        ReactiveFormsModule,\n        NgClass,\n        KeyFilterModule,\n        NgStyle,\n        NgTemplateOutlet,\n        InputText,\n    ],\n})\nexport class TextFieldComponent implements OnInit, AfterViewInit, OnDestroy, BaseFieldComponentConfig {\n    private readonly changeDetectorRef = inject(ChangeDetectorRef);\n\n    field = input.required<TextFieldConfig>();\n    formControl = input.required<FormControl>();\n\n    fieldUtils = inject(FormFieldUtilsService);\n\n    @Output()\n    public onInput: EventEmitter<any> = new EventEmitter();\n\n    @Output()\n    public onFocus: EventEmitter<any> = new EventEmitter();\n\n    @Output()\n    public onComplete: EventEmitter<any> = new EventEmitter();\n\n    @ViewChild('inputRef')\n    public inputRef: ElementRef | InputMask | null = null;\n\n    private ngUnsubscribe = new Subject<void>();\n\n    public ngOnInit() {\n        this.fieldUtils.switchEmptyStringToNull(this.formControl(), this.ngUnsubscribe);\n        const field = this.field();\n        this.onFocus.pipe(takeUntil(this.ngUnsubscribe)).subscribe((event: FocusEvent) => {\n            if (field.onFocus) {\n                field.onFocus(event);\n            }\n        });\n        this.onInput.pipe(takeUntil(this.ngUnsubscribe)).subscribe((event: any) => {\n            if (field.onInput) {\n                field.onInput(event);\n            }\n        });\n        this.onComplete.pipe(takeUntil(this.ngUnsubscribe)).subscribe((event: any) => {\n            if (field.onComplete) {\n                field.onComplete(event);\n            }\n        });\n    }\n\n    public ngAfterViewInit(): void {\n        this.changeDetectorRef.detectChanges();\n    }\n\n    public ngOnDestroy(): void {\n        this.ngUnsubscribe.next();\n        this.ngUnsubscribe.complete();\n    }\n\n    get inputElement() {\n        if (this.inputRef instanceof InputMask) {\n            return this.inputRef?.inputViewChild?.nativeElement;\n        } else {\n            return this.inputRef?.nativeElement;\n        }\n    }\n}\n\n","@let _field = field();\n@if (inputElement) {\n    <s-field-label\n        [field]=\"_field\"\n        [fieldContainerRef]=\"inputElement\"\n    />\n}\n\n@if (_field.mask) {\n    <p-inputMask\n        #inputRef\n        [type]=\"_field.inputType || 'text'\"\n        [inputId]=\"_field.id || _field.name\"\n        [name]=\"_field.name\"\n        [mask]=\"fieldUtils.getFieldPropertyMask(_field.mask)\"\n        [characterPattern]=\"fieldUtils.getFieldProperty(_field.characterPattern ?? '[A-Za-z]')\"\n        [unmask]=\"fieldUtils.getFieldProperty(_field.unmask ?? false)\"\n        [placeholder]=\"_field.placeholder ?? ''\"\n        slotChar=\"_\"\n        [sTooltip]=\"_field.tooltip\"\n        tooltipPosition=\"top\"\n        [showDelay]=\"500\"\n        styleClass=\"mousetrap\"\n        (onBlur)=\"_field.onBlur ? _field.onBlur($event) : null\"\n        (onFocus)=\"onFocus.next($event)\"\n        (onComplete)=\"onComplete.next($event)\"\n        (onInput)=\"onInput.next($event)\"\n        [formControl]=\"formControl()\"\n        [readonly]=\"_field.readonly ? _field.readonly() : false\"\n        [autocomplete]=\"_field.browserAutocomplete ? 'on' : 'off'\"\n    >\n    </p-inputMask>\n} @else {\n    <div class=\"text-field\">\n        @if (_field.leftAddon) {\n            <div class=\"button-left\">\n                <ng-container *ngTemplateOutlet=\"addonRender; context: { button: _field.leftAddon }\"></ng-container>\n            </div>\n        }\n\n        <ng-container *ngTemplateOutlet=\"_field.keyFilter ? inputKeyFilter : input\"></ng-container>\n\n        @if (_field.rightAddon) {\n            <div class=\"button-right\">\n                <ng-container *ngTemplateOutlet=\"addonRender; context: { button: _field.rightAddon }\"></ng-container>\n            </div>\n        }\n    </div>\n}\n<ng-template #input>\n    <input\n        #inputRef\n        [type]=\"_field.inputType || 'text'\"\n        [id]=\"_field.id || _field.name\"\n        [name]=\"_field.name\"\n        [sTooltip]=\"_field.tooltip\"\n        tooltipPosition=\"top\"\n        [placeholder]=\"_field.placeholder ?? ''\"\n        [showDelay]=\"500\"\n        [maxLength]=\"_field.maxLength ?? 9999999\"\n        pInputText\n        class=\"input-text\"\n        [autocomplete]=\"_field.browserAutocomplete ? 'on' : 'off'\"\n        [ngClass]=\"'mousetrap'\"\n        (blur)=\"_field.onBlur ? _field.onBlur($event) : null\"\n        (focus)=\"onFocus.next($event)\"\n        (input)=\"onInput.next($event)\"\n        [formControl]=\"formControl()\"\n        [ngStyle]=\"_field.style\"\n        [readOnly]=\"_field.readonly ? _field.readonly() : false\"\n    />\n</ng-template>\n<ng-template #inputKeyFilter>\n    <input\n        #inputText\n        [type]=\"_field.inputType || 'text'\"\n        [id]=\"_field.id || _field.name\"\n        [name]=\"_field.name\"\n        [sTooltip]=\"_field.tooltip\"\n        tooltipPosition=\"top\"\n        [placeholder]=\"_field.placeholder ?? ''\"\n        [showDelay]=\"500\"\n        [maxLength]=\"_field.maxLength ?? 9999999\"\n        pInputText\n        [autocomplete]=\"_field.browserAutocomplete ? 'on' : 'off'\"\n        class=\"input-text\"\n        [ngClass]=\"'mousetrap'\"\n        (blur)=\"_field.onBlur ? _field.onBlur($event) : null\"\n        (focus)=\"onFocus.next($event)\"\n        (input)=\"onInput.next($event)\"\n        [pKeyFilter]=\"_field.keyFilter\"\n        [formControl]=\"formControl()\"\n        [ngStyle]=\"_field.style\"\n        [readOnly]=\"_field.readonly ? _field.readonly() : false\"\n    />\n</ng-template>\n\n<ng-template\n    #addonRender\n    let-button=\"button\"\n>\n    <s-button\n        [label]=\"button.label\"\n        [priority]=\"button.priority ?? 'default'\"\n        [iconClass]=\"button.icon\"\n        [disabled]=\"fieldUtils.fieldPropertyIsDisabled(button.leftAddon)\"\n        [auxiliary]=\"false\"\n        (clicked)=\"button.callback?.()\"\n    />\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { DynamicFormComponent } from './dynamic-form.component';\nimport { DynamicFormDirective } from './dynamic-form.directive';\n\nimport { FieldLabelComponent } from './components/field-label/field-label.component';\n\n@NgModule({\n    imports: [CommonModule, FieldLabelComponent, DynamicFormDirective, DynamicFormComponent],\n    declarations: [],\n    exports: [DynamicFormComponent, DynamicFormDirective],\n})\nexport class DynamicFormModule {}\n\n","import { FieldConfig } from './field';\n\n/**\n * Representa uma opção individual exibida no grupo de radio buttons.\n */\nexport class RationButtonOption {\n    /** Label do texto exibido ao lado do radio button. */\n    label: string;\n    /** Valor associado à opção. Armazenado no modelo quando selecionado. */\n    value?: any;\n\n    constructor(config: RationButtonOption) {\n        this.label = config.label;\n        this.value = config.value;\n    }\n}\n\n/**\n * Configuração para campo de seleção única com radio buttons.\n *\n * Exibe um grupo de radio buttons onde o usuário pode selecionar exatamente uma opção.\n * A lista de opções é definida estaticamente via `options`.\n *\n * Use quando o número de opções é pequeno (até ~5 itens) e todas devem estar visíveis.\n * Para listas longas, prefira `type: 'enum'` com dropdown.\n */\nexport interface RadioButtonFieldConfig extends FieldConfig {\n    /** Tipo do campo: sempre `'radioButton'`. */\n    type: 'radioButton';\n    /**\n     * Quando `true`, os radio buttons são exibidos verticalmente (empilhados).\n     * Por padrão, são exibidos horizontalmente.\n     */\n    verticalAlignment?: boolean;\n    /**\n     * Label do botão de limpar a seleção. Exibido quando `showClear: true`.\n     * @example 'Limpar'\n     */\n    clearLabel?: string;\n    /**\n     * Lista de opções disponíveis para seleção. Obrigatório.\n     * @example [{ label: 'Masculino', value: 'M' }, { label: 'Feminino', value: 'F' }]\n     */\n    options: RationButtonOption[];\n    /** Callback chamado quando o campo perde o foco. */\n    onBlur?: (event: Event) => void;\n    /** Callback chamado quando o campo recebe foco. */\n    onFocus?: (event: FocusEvent) => void;\n    /** Callback chamado quando o usuário clica em uma opção. */\n    onClick?: (event: any) => void;\n    /**\n     * Quando `true`, exibe um botão para limpar a seleção atual.\n     * O texto do botão é definido em `clearLabel`.\n     */\n    showClear?: boolean;\n}\n\ndeclare module './field' {\n    export interface FieldTypeMap {\n        radioButton: RadioButtonFieldConfig;\n    }\n}\n\n","import { RowComponent } from './dynamic-form/components/grid/row/row.component';\nimport { FieldsetComponent } from './dynamic-form/components/structure/fieldset/fieldset.component';\nimport { SectionComponent } from './dynamic-form/components/structure/section/section.component';\nimport { DynamicFormRegistry } from './dynamic-form/configurations/registry';\nimport { AutocompleteFieldComponent } from './dynamic-form/form-field/fields/autocomplete/autocomplete-field.component';\nimport { BignumberFieldComponent } from './dynamic-form/form-field/fields/bignumber/bignumber-field.component';\nimport { BooleanFieldComponent } from './dynamic-form/form-field/fields/boolean/boolean-radio-field/boolean-field.component';\nimport { BooleanSwitchFieldComponent } from './dynamic-form/form-field/fields/boolean/boolean-switch-field/boolean-switch-field.component';\nimport { ButtonFieldComponent } from './dynamic-form/form-field/fields/button-field/button-field.component';\nimport { CalendarFieldComponent } from './dynamic-form/form-field/fields/calendar/calendar-field.component';\nimport { CheckboxFieldComponent } from './dynamic-form/form-field/fields/checkbox/checkbox-field.component';\nimport { ChipsFieldComponent } from './dynamic-form/form-field/fields/chips/chips-field.component';\nimport { ContentGeneratorFieldComponent } from './dynamic-form/form-field/fields/content-generator/content-generator-field.component';\nimport { CountryPhonePickerFieldComponent } from './dynamic-form/form-field/fields/country-phone-picker/country-phone-picker-field.component';\nimport { CurrencyFieldComponent } from './dynamic-form/form-field/fields/currency/currency-field.component';\nimport { FileUploadFieldComponent } from './dynamic-form/form-field/fields/file-picker/file-picker-field.component';\nimport { LookupFieldComponent } from './dynamic-form/form-field/fields/lookup/lookup-field.component';\nimport { NumberFieldComponent } from './dynamic-form/form-field/fields/number/number-field.component';\nimport { PasswordFieldComponent } from './dynamic-form/form-field/fields/password/password-field.component';\nimport { ProfilePictureFieldComponent } from './dynamic-form/form-field/fields/profile-picture/profile-picture-field.component';\nimport { RadioButtonFieldComponent } from './dynamic-form/form-field/fields/radio-button/radio-button-field.component';\nimport { SelectFieldComponent } from './dynamic-form/form-field/fields/select/select-field.component';\nimport { SliderFieldComponent } from './dynamic-form/form-field/fields/slider/slider-field.component';\nimport { StarRatingFieldComponent } from './dynamic-form/form-field/fields/star-rating/star-rating-field.component';\nimport { TextAreaFieldComponent } from './dynamic-form/form-field/fields/text-area/text-area-field.component';\nimport { TextFieldComponent } from './dynamic-form/form-field/fields/text/text-field.component';\n\nexport type { RowConfig } from './dynamic-form/configurations/structure/row';\nexport type { FieldsetConfig } from './dynamic-form/configurations/structure/fieldset';\nexport type { SectionConfig } from './dynamic-form/configurations/structure/section';\n\nexport { FieldLabelComponent } from './dynamic-form/components/field-label/field-label.component';\nexport { LookupComponent } from './dynamic-form/components/lookup/lookup.component';\nexport type { LookupSearchRequest } from './dynamic-form/components/lookup/models/lookup-api.model';\nexport type { BaseFieldComponentConfig } from './dynamic-form/form-field/fields/base-field-component';\n\nexport { type ExpandedDynamicType } from './dynamic-form/configurations/structure/row';\nexport { DynamicFormComponent, dynamicTypeToDynamicStructure } from './dynamic-form/dynamic-form.component';\nexport { DynamicFormDirective } from './dynamic-form/dynamic-form.directive';\nexport * from './dynamic-form/dynamic-form.module';\nexport type { AutocompleteFieldConfig } from './dynamic-form/form-field/configurations/fields/autocomplete-field';\nexport { type BignumberFieldConfig } from './dynamic-form/form-field/configurations/fields/bignumber-field';\nexport { type BlobFieldConfig } from './dynamic-form/form-field/configurations/fields/blob-field';\nexport {\n    type BooleanFieldConfig,\n    type BooleanOptionsLabelConfig,\n} from './dynamic-form/form-field/configurations/fields/boolean-field';\nexport { type BooleanSwitchFieldConfig } from './dynamic-form/form-field/configurations/fields/boolean-switch-field';\nexport { type ButtonFieldConfig } from './dynamic-form/form-field/configurations/fields/button-field';\nexport { type CalendarFieldConfig } from './dynamic-form/form-field/configurations/fields/calendar-field';\nexport { type CheckboxFieldConfig } from './dynamic-form/form-field/configurations/fields/checkbox-field';\nexport { type ChipsFieldConfig } from './dynamic-form/form-field/configurations/fields/chips-field';\nexport { type CountryPhonePickerConfig } from './dynamic-form/form-field/configurations/fields/country-phone-picker-field';\nexport { type CurrencyFieldConfig } from './dynamic-form/form-field/configurations/fields/currency-field';\nexport type {\n    DefaultFilter,\n    LookupFieldConfig,\n    SearchObservable,\n} from './dynamic-form/form-field/configurations/fields/lookup-field';\nexport { type NumberFieldConfig } from './dynamic-form/form-field/configurations/fields/number-field';\nexport {\n    type PasswordFieldConfig,\n    type PasswordStrengthOptions,\n} from './dynamic-form/form-field/configurations/fields/password-field';\nexport { type ProfilePictureConfig } from './dynamic-form/form-field/configurations/fields/profile-picture';\nexport {\n    RationButtonOption,\n    type RadioButtonFieldConfig,\n} from './dynamic-form/form-field/configurations/fields/radio-button-field';\nexport {\n    type SelectFieldConfig,\n    type SelectOption,\n} from './dynamic-form/form-field/configurations/fields/select-field';\nexport { type SliderFieldConfig } from './dynamic-form/form-field/configurations/fields/slider-field';\nexport { type StarRatingFieldConfig } from './dynamic-form/form-field/configurations/fields/star-rating-field';\nexport { type TextAreaFieldConfig } from './dynamic-form/form-field/configurations/fields/text-area-field';\nexport { type ContentGeneratorFieldConfig } from './dynamic-form/form-field/configurations/fields/content-generator-field';\nexport { type TextFieldConfig } from './dynamic-form/form-field/configurations/fields/text-field';\n\nexport { FieldSize } from './dynamic-form/form-field/configurations/field-size';\n\nexport { NumberFieldComponent } from './dynamic-form/form-field/fields/number/number-field.component';\n\nexport type {\n    DynamicType,\n    FieldConfig,\n    FieldType,\n    FieldTypeMap,\n} from './dynamic-form/form-field/configurations/fields/field';\n\nexport { DynamicFormRegistry } from './dynamic-form/configurations/registry';\nexport type { DynamicStructure, StructureType } from './dynamic-form/configurations/structure/structure';\nDynamicFormRegistry.registerField(FileUploadFieldComponent, 'blob');\nDynamicFormRegistry.registerField(BooleanFieldComponent, 'boolean');\nDynamicFormRegistry.registerField(BooleanSwitchFieldComponent, 'booleanSwitch');\nDynamicFormRegistry.registerField(ButtonFieldComponent, 'button');\nDynamicFormRegistry.registerField(CalendarFieldComponent, 'date', 'dateTime', 'localDateTime', 'time');\nDynamicFormRegistry.registerField(CheckboxFieldComponent, 'checkbox');\nDynamicFormRegistry.registerField(ChipsFieldComponent, 'chips');\nDynamicFormRegistry.registerField(CountryPhonePickerFieldComponent, 'countryPhonePicker');\nDynamicFormRegistry.registerField(NumberFieldComponent, 'legacyNumber');\nDynamicFormRegistry.registerField(CurrencyFieldComponent, 'money');\nDynamicFormRegistry.registerField(BignumberFieldComponent, 'number', 'integer', 'double');\nDynamicFormRegistry.registerField(PasswordFieldComponent, 'password');\nDynamicFormRegistry.registerField(ProfilePictureFieldComponent, 'profilePicture');\nDynamicFormRegistry.registerField(RadioButtonFieldComponent, 'radioButton');\nDynamicFormRegistry.registerField(SelectFieldComponent, 'enum');\nDynamicFormRegistry.registerField(StarRatingFieldComponent, 'starRating');\nDynamicFormRegistry.registerField(TextAreaFieldComponent, 'textArea');\nDynamicFormRegistry.registerField(ContentGeneratorFieldComponent, 'textAreaIA', 'contentGenerator');\nDynamicFormRegistry.registerField(TextFieldComponent, 'string', 'binary');\nDynamicFormRegistry.registerField(SliderFieldComponent, 'slider');\nDynamicFormRegistry.registerField(LookupFieldComponent, 'lookup');\nDynamicFormRegistry.registerField(AutocompleteFieldComponent, 'autocomplete');\nDynamicFormRegistry.registerField(RowComponent, 'row');\nDynamicFormRegistry.registerField(FieldsetComponent, 'fieldset');\nDynamicFormRegistry.registerField(SectionComponent, 'section');\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","takeUntil","i3","i4","i2","i5"],"mappings":"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"}