{"version":3,"file":"ng-tailwind.mjs","sources":["../../../projects/ng-tailwind/src/services/http/ngt-translate.service.ts","../../../projects/ng-tailwind/src/services/http/ngt-http.service.ts","../../../projects/ng-tailwind/src/services/http/ngt-http-validation.service.ts","../../../projects/ng-tailwind/src/services/http/ngt-http-resource.service.ts","../../../projects/ng-tailwind/src/services/validation/ngt-ability-validation.service.ts","../../../projects/ng-tailwind/src/services/http/ngt-http-form.service.ts","../../../projects/ng-tailwind/src/services/ngt-stylizable/ngt-stylizable.service.ts","../../../projects/ng-tailwind/src/directives/ngt-stylizable/ngt-stylizable.directive.ts","../../../projects/ng-tailwind/src/directives/ngt-stylizable/ngt-stylizable.module.ts","../../../projects/ng-tailwind/src/components/ngt-svg/ngt-svg.component.ts","../../../projects/ng-tailwind/src/components/ngt-svg/ngt-svg.component.html","../../../projects/ng-tailwind/src/components/ngt-svg/ngt-svg.module.ts","../../../projects/ng-tailwind/src/helpers/form/form.ts","../../../projects/ng-tailwind/src/helpers/routing/route.ts","../../../projects/ng-tailwind/src/components/forms/template-driven/ngt-form/ngt-form-validation-message/ngt-form-validation-message.component.ts","../../../projects/ng-tailwind/src/components/forms/template-driven/ngt-form/ngt-form-validation-message/ngt-form-validation-message.component.html","../../../projects/ng-tailwind/src/components/forms/template-driven/ngt-form/ngt-form.component.ts","../../../projects/ng-tailwind/src/components/forms/template-driven/ngt-form/ngt-form.component.html","../../../projects/ng-tailwind/src/components/forms/reactive/ngt-reactive-form/ngt-reactive-form.component.ts","../../../projects/ng-tailwind/src/components/forms/reactive/ngt-reactive-form/ngt-reactive-form.component.html","../../../projects/ng-tailwind/src/helpers/uuid.ts","../../../projects/ng-tailwind/src/components/ngt-dropdown/ngt-dropdown-container/ngt-dropdown-container.component.ts","../../../projects/ng-tailwind/src/components/ngt-dropdown/ngt-dropdown-container/ngt-dropdown-container.component.html","../../../projects/ng-tailwind/src/components/ngt-dropdown/ngt-dropdown.component.ts","../../../projects/ng-tailwind/src/components/ngt-dropdown/ngt-dropdown.component.html","../../../projects/ng-tailwind/src/components/ngt-helper/ngt-helper.component.ts","../../../projects/ng-tailwind/src/components/ngt-helper/ngt-helper.component.html","../../../projects/ng-tailwind/src/components/ngt-section/ngt-section.component.ts","../../../projects/ng-tailwind/src/components/ngt-section/ngt-section.component.html","../../../projects/ng-tailwind/src/components/ngt-modal/ngt-modal-header/ngt-modal-header.component.ts","../../../projects/ng-tailwind/src/components/ngt-modal/ngt-modal-header/ngt-modal-header.component.html","../../../projects/ng-tailwind/src/components/ngt-modal/ngt-modal-body/ngt-modal-body.component.ts","../../../projects/ng-tailwind/src/components/ngt-modal/ngt-modal-body/ngt-modal-body.component.html","../../../projects/ng-tailwind/src/components/ngt-modal/ngt-modal-footer/ngt-modal-footer.component.ts","../../../projects/ng-tailwind/src/components/ngt-modal/ngt-modal-footer/ngt-modal-footer.component.html","../../../projects/ng-tailwind/src/components/ngt-modal/ngt-modal.component.ts","../../../projects/ng-tailwind/src/components/ngt-modal/ngt-modal.component.html","../../../projects/ng-tailwind/src/components/ngt-action/ngt-action.component.ts","../../../projects/ng-tailwind/src/components/ngt-action/ngt-action.component.html","../../../projects/ng-tailwind/src/components/ngt-action/ngt-action.module.ts","../../../projects/ng-tailwind/src/components/ngt-shining/ngt-shining.component.ts","../../../projects/ng-tailwind/src/components/ngt-shining/ngt-shining.component.html","../../../projects/ng-tailwind/src/components/ngt-shining/ngt-shining.module.ts","../../../projects/ng-tailwind/src/base/ngt-control-value-accessor.ts","../../../projects/ng-tailwind/src/helpers/enum/enum.ts","../../../projects/ng-tailwind/src/components/forms/template-driven/ngt-checkbox/ngt-checkbox.component.ts","../../../projects/ng-tailwind/src/components/forms/template-driven/ngt-checkbox/ngt-checkbox.component.html","../../../projects/ng-tailwind/src/components/forms/template-driven/ngt-checkbox/ngt-checkbox.module.ts","../../../projects/ng-tailwind/src/components/forms/template-driven/ngt-form/ngt-form.module.ts","../../../projects/ng-tailwind/src/components/ngt-validation/ngt-validation.component.ts","../../../projects/ng-tailwind/src/components/ngt-validation/ngt-validation.component.html","../../../projects/ng-tailwind/src/components/ngt-validation/ngt-validation.module.ts","../../../projects/ng-tailwind/src/helpers/input-mask/input-mask.helper.ts","../../../projects/ng-tailwind/src/helpers/validators/validation.helper.ts","../../../projects/ng-tailwind/src/components/forms/template-driven/ngt-input/ngt-input.component.ts","../../../projects/ng-tailwind/src/components/forms/template-driven/ngt-input/ngt-input.component.html","../../../projects/ng-tailwind/src/components/forms/template-driven/ngt-input/ngt-input.module.ts","../../../projects/ng-tailwind/src/components/ngt-modal/ngt-modal.module.ts","../../../projects/ng-tailwind/src/components/forms/template-driven/ngt-select/ngt-select.directive.ts","../../../projects/ng-tailwind/src/helpers/promise/promise-helper.ts","../../../projects/ng-tailwind/src/components/forms/template-driven/ngt-select/ngt-select.component.ts","../../../projects/ng-tailwind/src/components/forms/template-driven/ngt-select/ngt-select.component.html","../../../projects/ng-tailwind/src/components/forms/template-driven/ngt-select/ngt-select.module.ts","../../../projects/ng-tailwind/src/components/ngt-pagination/ngt-pagination.component.ts","../../../projects/ng-tailwind/src/components/ngt-pagination/ngt-pagination.component.html","../../../projects/ng-tailwind/src/components/ngt-pagination/ngt-pagination.module.ts","../../../projects/ng-tailwind/src/components/ngt-tag/ngt-tag.component.ts","../../../projects/ng-tailwind/src/components/ngt-tag/ngt-tag.component.html","../../../projects/ng-tailwind/src/components/ngt-tag/ngt-tag.module.ts","../../../projects/ng-tailwind/src/components/ngt-datatable/ngt-datatable.component.ts","../../../projects/ng-tailwind/src/components/ngt-datatable/ngt-datatable.component.html","../../../projects/ng-tailwind/src/components/ngt-datatable/ngt-tbody/ngt-tbody.component.ts","../../../projects/ng-tailwind/src/components/ngt-datatable/ngt-tbody/ngt-tbody.component.html","../../../projects/ng-tailwind/src/components/ngt-datatable/ngt-td-check/ngt-td-check.component.ts","../../../projects/ng-tailwind/src/components/ngt-datatable/ngt-td-check/ngt-td-check.component.html","../../../projects/ng-tailwind/src/components/ngt-datatable/ngt-td/ngt-td.component.ts","../../../projects/ng-tailwind/src/components/ngt-datatable/ngt-td/ngt-td.component.html","../../../projects/ng-tailwind/src/components/ngt-datatable/ngt-th-check/ngt-th-check.component.ts","../../../projects/ng-tailwind/src/components/ngt-datatable/ngt-th-check/ngt-th-check.component.html","../../../projects/ng-tailwind/src/components/ngt-datatable/ngt-th/ngt-th.component.ts","../../../projects/ng-tailwind/src/components/ngt-datatable/ngt-th/ngt-th.component.html","../../../projects/ng-tailwind/src/components/ngt-datatable/ngt-thead/ngt-thead.component.ts","../../../projects/ng-tailwind/src/components/ngt-datatable/ngt-thead/ngt-thead.component.html","../../../projects/ng-tailwind/src/components/ngt-datatable/ngt-tr/ngt-tr.component.ts","../../../projects/ng-tailwind/src/components/ngt-datatable/ngt-tr/ngt-tr.component.html","../../../projects/ng-tailwind/src/components/ngt-datatable/ngt-datatable.module.ts","../../../projects/ng-tailwind/src/components/ngt-portlet/ngt-portlet-body/ngt-portlet-body.component.ts","../../../projects/ng-tailwind/src/components/ngt-portlet/ngt-portlet-body/ngt-portlet-body.component.html","../../../projects/ng-tailwind/src/components/ngt-portlet/ngt-portlet-footer/ngt-portlet-footer.component.ts","../../../projects/ng-tailwind/src/components/ngt-portlet/ngt-portlet-footer/ngt-portlet-footer.component.html","../../../projects/ng-tailwind/src/components/ngt-portlet/ngt-portlet-header/ngt-portlet-header.component.ts","../../../projects/ng-tailwind/src/components/ngt-portlet/ngt-portlet-header/ngt-portlet-header.component.html","../../../projects/ng-tailwind/src/components/ngt-portlet/ngt-portlet.component.ts","../../../projects/ng-tailwind/src/components/ngt-portlet/ngt-portlet.component.html","../../../projects/ng-tailwind/src/components/ngt-portlet/ngt-portlet.module.ts","../../../projects/ng-tailwind/src/enums/size.enum.ts","../../../projects/ng-tailwind/src/components/ngt-content/ngt-content.component.ts","../../../projects/ng-tailwind/src/components/ngt-content/ngt-content.component.html","../../../projects/ng-tailwind/src/components/ngt-content/ngt-content.module.ts","../../../projects/ng-tailwind/src/components/ngt-popover/ngt-popover-tooltip/ngt-popover-tooltip.component.ts","../../../projects/ng-tailwind/src/components/ngt-popover/ngt-popover-tooltip/ngt-popover-tooltip.component.html","../../../projects/ng-tailwind/src/components/ngt-popover/ngt-popover.component.ts","../../../projects/ng-tailwind/src/components/ngt-popover/ngt-popover.component.html","../../../projects/ng-tailwind/src/components/ngt-popover/ngt-popover.directive.ts","../../../projects/ng-tailwind/src/components/ngt-popover/ngt-popover.module.ts","../../../projects/ng-tailwind/src/components/ngt-context-menu/ngt-context-menu.component.ts","../../../projects/ng-tailwind/src/components/ngt-context-menu/ngt-context-menu.component.html","../../../projects/ng-tailwind/src/components/ngt-context-menu/ngt-context-menu.directive.ts","../../../projects/ng-tailwind/src/components/ngt-context-menu/ngt-context-menu.module.ts","../../../projects/ng-tailwind/src/animations/ngt-angular-animations.ts","../../../projects/ng-tailwind/src/components/ngt-sidenav/ngt-sidenav.component.ts","../../../projects/ng-tailwind/src/components/ngt-sidenav/ngt-sidenav.component.html","../../../projects/ng-tailwind/src/components/ngt-sidenav/ngt-sidenav.module.ts","../../../projects/ng-tailwind/src/components/ngt-header-nav/ngt-header-nav.component.ts","../../../projects/ng-tailwind/src/components/ngt-header-nav/ngt-header-nav.component.html","../../../projects/ng-tailwind/src/components/ngt-header-nav/ngt-header-nav.module.ts","../../../projects/ng-tailwind/src/components/ngt-floating-button/ngt-floating-button.component.ts","../../../projects/ng-tailwind/src/components/ngt-floating-button/ngt-floating-button.component.html","../../../projects/ng-tailwind/src/components/ngt-floating-button/ngt-floating-button.module.ts","../../../projects/ng-tailwind/src/components/forms/template-driven/ngt-slider/ngt-slider.component.ts","../../../projects/ng-tailwind/src/components/forms/template-driven/ngt-slider/ngt-slider.component.html","../../../projects/ng-tailwind/src/components/forms/template-driven/ngt-slider/ngt-slider.module.ts","../../../projects/ng-tailwind/src/components/forms/template-driven/ngt-radio-button/ngt-radio-button-container/ngt-radio-button-container.component.ts","../../../projects/ng-tailwind/src/components/forms/template-driven/ngt-radio-button/ngt-radio-button-container/ngt-radio-button-container.component.html","../../../projects/ng-tailwind/src/components/forms/template-driven/ngt-radio-button/ngt-radio-button.component.ts","../../../projects/ng-tailwind/src/components/forms/template-driven/ngt-radio-button/ngt-radio-button.component.html","../../../projects/ng-tailwind/src/components/forms/template-driven/ngt-radio-button/ngt-radio-button.module.ts","../../../projects/ng-tailwind/src/components/ngt-section/ngt-section.module.ts","../../../projects/ng-tailwind/src/components/forms/template-driven/ngt-textarea/ngt-textarea.component.ts","../../../projects/ng-tailwind/src/components/forms/template-driven/ngt-textarea/ngt-textarea.component.html","../../../projects/ng-tailwind/src/components/forms/template-driven/ngt-textarea/ngt-textarea.module.ts","../../../projects/ng-tailwind/src/components/forms/template-driven/ngt-date/ngt-date.component.ts","../../../projects/ng-tailwind/src/components/forms/template-driven/ngt-date/ngt-date.component.html","../../../projects/ng-tailwind/src/components/forms/template-driven/ngt-date/ngt-date.module.ts","../../../projects/ng-tailwind/src/components/ngt-button/ngt-button.component.ts","../../../projects/ng-tailwind/src/components/ngt-button/ngt-button.component.html","../../../projects/ng-tailwind/src/components/ngt-button/ngt-button.module.ts","../../../projects/ng-tailwind/src/components/forms/template-driven/ngt-multi-select/ngt-multi-select.component.ts","../../../projects/ng-tailwind/src/components/forms/template-driven/ngt-multi-select/ngt-multi-select.component.html","../../../projects/ng-tailwind/src/components/forms/template-driven/ngt-multi-select/ngt-multi-select.module.ts","../../../projects/ng-tailwind/src/meta/ngt-dropzone.meta.ts","../../../projects/ng-tailwind/src/components/shared/custom-dropzone-preview/custom-dropzone-preview.component.ts","../../../projects/ng-tailwind/src/components/shared/custom-dropzone-preview/custom-dropzone-preview.component.html","../../../projects/ng-tailwind/src/components/shared/ngt-dropzone-file-viewer/ngt-dropzone-file-viewer.component.ts","../../../projects/ng-tailwind/src/components/shared/ngt-dropzone-file-viewer/ngt-dropzone-file-viewer.component.html","../../../projects/ng-tailwind/src/components/shared/ngt-dropzone-view/ngt-dropzone-view.component.ts","../../../projects/ng-tailwind/src/components/shared/ngt-dropzone-view/ngt-dropzone-view.component.html","../../../projects/ng-tailwind/src/services/http/ngt-attachment-http.service.ts","../../../projects/ng-tailwind/src/components/forms/template-driven/ngt-dropzone/ngt-dropzone.component.ts","../../../projects/ng-tailwind/src/components/forms/template-driven/ngt-dropzone/ngt-dropzone.component.html","../../../projects/ng-tailwind/src/components/forms/template-driven/ngt-dropzone/ngt-dropzone.module.ts","../../../projects/ng-tailwind/src/components/forms/reactive/ngt-reactive-input/services/ngt-reactive-input-mask.service.ts","../../../projects/ng-tailwind/src/services/validation/ngt-reactive-form-validation.service.ts","../../../projects/ng-tailwind/src/components/forms/reactive/ngt-reactive-input/services/ngt-reactive-input-loader.service.ts","../../../projects/ng-tailwind/src/components/forms/reactive/ngt-reactive-input/services/ngt-reactive-input-validation.service.ts","../../../projects/ng-tailwind/src/components/forms/reactive/ngt-reactive-input/ngt-reactive-input.component.ts","../../../projects/ng-tailwind/src/components/forms/reactive/ngt-reactive-input/ngt-reactive-input.component.html","../../../projects/ng-tailwind/src/components/forms/reactive/ngt-reactive-textarea/services/ngt-reactive-textarea-validation.service.ts","../../../projects/ng-tailwind/src/components/forms/reactive/ngt-reactive-textarea/ngt-reactive-textarea.component.ts","../../../projects/ng-tailwind/src/components/forms/reactive/ngt-reactive-textarea/ngt-reactive-textarea.component.html","../../../projects/ng-tailwind/src/components/forms/reactive/ngt-reactive-select/ngt-reactive-select.directive.ts","../../../projects/ng-tailwind/src/components/forms/reactive/ngt-reactive-select/services/ngt-reactive-select-validation.service.ts","../../../projects/ng-tailwind/src/components/forms/reactive/ngt-reactive-select/services/ngt-reactive-select-state.service.ts","../../../projects/ng-tailwind/src/components/forms/reactive/ngt-reactive-select/services/ngt-reactive-select-search.service.ts","../../../projects/ng-tailwind/src/components/forms/reactive/ngt-reactive-select/services/ngt-reactive-select-dropdown.service.ts","../../../projects/ng-tailwind/src/components/forms/reactive/ngt-reactive-select/services/ngt-reactive-select-items.service.ts","../../../projects/ng-tailwind/src/components/forms/reactive/ngt-reactive-select/services/ngt-reactive-select-tag-manager.service.ts","../../../projects/ng-tailwind/src/components/forms/reactive/ngt-reactive-select/ngt-reactive-select.component.ts","../../../projects/ng-tailwind/src/components/forms/reactive/ngt-reactive-select/ngt-reactive-select.component.html","../../../projects/ng-tailwind/src/components/forms/reactive/ngt-reactive-select/ngt-reactive-select.module.ts","../../../projects/ng-tailwind/src/components/forms/reactive/ngt-reactive-date/services/ngt-reactive-date-formatter.service.ts","../../../projects/ng-tailwind/src/components/forms/reactive/ngt-reactive-date/ngt-reactive-date.component.ts","../../../projects/ng-tailwind/src/components/forms/reactive/ngt-reactive-date/ngt-reactive-date.component.html","../../../projects/ng-tailwind/src/components/forms/reactive/ngt-reactive-checkbox/ngt-reactive-checkbox.component.ts","../../../projects/ng-tailwind/src/components/forms/reactive/ngt-reactive-checkbox/ngt-reactive-checkbox.component.html","../../../projects/ng-tailwind/src/components/forms/reactive/ngt-reactive-radio-button/ngt-reactive-radio-button-container/ngt-reactive-radio-button-container.component.ts","../../../projects/ng-tailwind/src/components/forms/reactive/ngt-reactive-radio-button/ngt-reactive-radio-button-container/ngt-reactive-radio-button-container.component.html","../../../projects/ng-tailwind/src/components/forms/reactive/ngt-reactive-radio-button/ngt-reactive-radio-button.component.ts","../../../projects/ng-tailwind/src/components/forms/reactive/ngt-reactive-radio-button/ngt-reactive-radio-button.component.html","../../../projects/ng-tailwind/src/components/forms/reactive/ngt-reactive-dropzone/services/ngt-reactive-dropzone-validation.service.ts","../../../projects/ng-tailwind/src/components/forms/reactive/ngt-reactive-dropzone/services/ngt-reactive-dropzone-file.service.ts","../../../projects/ng-tailwind/src/components/forms/reactive/ngt-reactive-dropzone/services/ngt-reactive-dropzone-error.service.ts","../../../projects/ng-tailwind/src/components/forms/reactive/ngt-reactive-dropzone/services/ngt-reactive-dropzone-viewer.service.ts","../../../projects/ng-tailwind/src/components/forms/reactive/ngt-reactive-dropzone/services/ngt-reactive-dropzone-state.service.ts","../../../projects/ng-tailwind/src/components/forms/reactive/ngt-reactive-dropzone/ngt-reactive-dropzone.component.ts","../../../projects/ng-tailwind/src/components/forms/reactive/ngt-reactive-dropzone/ngt-reactive-dropzone.component.html","../../../projects/ng-tailwind/src/components/forms/reactive/ngt-reactive-slider/ngt-reactive-slider.component.ts","../../../projects/ng-tailwind/src/components/forms/reactive/ngt-reactive-slider/ngt-reactive-slider.component.html","../../../projects/ng-tailwind/src/public-api.ts","../../../projects/ng-tailwind/src/ng-tailwind.ts"],"sourcesContent":["export abstract class NgtTranslateService {\n    public abstract ngtFormDefaultValidationMessage: string;\n\n    public abstract ngtDatatableNoDataFound: string;\n    public abstract ngtDatatableSelectAllRegisters: string;\n    public abstract ngtDatatableClearSelection: string;\n    public abstract ngtMultiSelectNoDataFound: string;\n\n    public abstract ngtSelectLoadingText: string;\n    public abstract ngtSelectNotFoundText: string;\n    public abstract ngtSelectTypeToSearchText: string;\n    public abstract ngtSelectClearAllTooltip: string;\n    public abstract ngtSelectPlaceholder: string;\n    public abstract ngtSelectCreateText: string;\n\n    public abstract ngtTextAreaRemainingCharacters: string;\n\n    public abstract ngtStandardHelperTitle: string;\n\n    public abstract ngtFileTooLargeForPreview: string;\n    public abstract ngtFileTooLargeForPreviewNoDownloadPermission: string;\n\n    public abstract ngtValidationMaxCharactersExceded: string;\n    public abstract ngtValidationRequiredField: string;\n    public abstract ngtValidationInvalidEmail: string;\n    public abstract ngtValidationLogin: string;\n    public abstract ngtValidationInvalidPassword: string;\n    public abstract ngtValidationAlreadyExists: string;\n    public abstract ngtValidationInvalidCnpj: string;\n    public abstract ngtValidationInvalidCpf: string;\n    public abstract ngtValidationPasswordRequiredMinCharacters: string;\n    public abstract ngtValidationFieldsNotMatch: string;\n    public abstract ngtValidationInvalidDate: string;\n    public abstract ngtValidationInvalidPrevision: string;\n    public abstract ngtValidationExternalServerUnavailable: string;\n    public abstract ngtValidationValueMustBeGreaterThan(minValue?: number | string): string;\n    public abstract ngtValidationMinLengthField(minLenth?: number | string): string;\n    public abstract ngtValidationMinItemsField(minItems?: number | string): string;\n\n    public abstract ngtPagination(from: number | string, to: number | string, total: number | string): string;\n}\n","import { Observable } from 'rxjs';\n\nexport abstract class NgtHttpService {\n    public abstract get(connector: any, filters: any, pagination: NgtHttpPagination, sort?: NgtHttpSort): Observable<NgtHttpResponse>;\n\n    public abstract post(data: any): Observable<any>;\n\n    public abstract put(data: any): Observable<any>;\n\n    public abstract delete(data: any): Observable<any>;\n}\n\nexport interface NgtHttpResponse {\n    data?: any;\n    meta: NgtHttpMeta;\n}\n\nexport interface NgtHttpMeta {\n    pagination: NgtHttpPagination;\n}\n\nexport interface NgtHttpPagination {\n    count: number;\n    page: number;\n    pages: number;\n    total: number;\n    from: number;\n    to: number;\n    per_page: number;\n}\n\nexport interface NgtHttpSort {\n    field: string;\n    direction: string;\n}\n","export abstract class NgtHttpValidationService {\n    public abstract unique(validationResource: any, value: any): Promise<NgtHttpValidationResponse>;\n\n    public abstract exists(validationResource: any, value: any): Promise<NgtHttpValidationResponse>;\n\n    public abstract emailValidation(email: string): Promise<NgtHttpValidationResponse>;\n\n    public abstract phoneValidation(phone: string): Promise<NgtHttpValidationResponse>;\n\n    public abstract passwordValidation(password: string, passwordableId?: string, passwordPolicyId?: string): Promise<NgtHttpValidationResponse>;\n}\n\nexport interface NgtHttpValidationResponse {\n    valid: any;\n}\n","export interface NgtHttpFindExistingResourceInterface {\n    table: string;\n    column: string;\n    value?: string;\n    ignore_id?: string;\n}\n\nexport interface NgtHttpFindExistingResourceResponse {\n    id: string;\n}\n\nexport abstract class NgtHttpResourceService {\n    public abstract findExisting(findExistingResource: NgtHttpFindExistingResourceInterface): Promise<NgtHttpFindExistingResourceResponse>;\n}\n","export abstract class NgtAbilityValidationService {\n    public abstract hasManagePermission(): Promise<boolean>;\n\n    public abstract isSectionHidden(section: string): Promise<boolean>;\n\n    public abstract isSectionEnabled(section: string): Promise<boolean>;\n}\n","import { Observable } from 'rxjs';\n\nexport abstract class NgtHttpFormService {\n    public abstract loadResourceById(resource: any, resourceId: any): Observable<any>;\n\n    public abstract saveResource(resource: any): Observable<any>;\n}\n","import { Injector } from '@angular/core';\n\nexport class NgtStylizableService {\n    private _color: any;\n    private _h: string;\n    private _w: string;\n    private _p: string;\n    private _px: string;\n    private _py: string;\n    private _pt: string;\n    private _pr: string;\n    private _pb: string;\n    private _pl: string;\n    private _m: string;\n    private _mx: string;\n    private _my: string;\n    private _mt: string;\n    private _mr: string;\n    private _mb: string;\n    private _ml: string;\n    private _gap: string;\n    private _border: string;\n    private _shadow: string;\n    private _rounded: string;\n    private _font: string;\n    private _text: string;\n    private _breakWords: string;\n    private _overflow: string;\n    private _position: string;\n    private _justifyContent: string;\n    private _cursor: string;\n    private _fontCase: string;\n\n    public get color() {\n        return this._color;\n    }\n\n    public get h(): string {\n        return this._h;\n    }\n\n    public get w(): string {\n        return this._w;\n    }\n\n    public get p(): string {\n        return this._p;\n    }\n\n    public get px(): string {\n        return this._px;\n    }\n\n    public get py(): string {\n        return this._py;\n    }\n\n    public get pt(): string {\n        return this._pt;\n    }\n\n    public get pr(): string {\n        return this._pr;\n    }\n\n    public get pb(): string {\n        return this._pb;\n    }\n\n    public get pl(): string {\n        return this._pl;\n    }\n\n    public get m(): string {\n        return this._m;\n    }\n\n    public get mx(): string {\n        return this._mx;\n    }\n\n    public get my(): string {\n        return this._my;\n    }\n\n    public get mt(): string {\n        return this._mt;\n    }\n\n    public get mr(): string {\n        return this._mr;\n    }\n\n    public get mb(): string {\n        return this._mb;\n    }\n\n    public get ml(): string {\n        return this._ml;\n    }\n\n    public get gap(): string {\n        return this._gap;\n    }\n\n    public get border(): string {\n        return this._border;\n    }\n\n    public get shadow(): string {\n        return this._shadow;\n    }\n\n    public get rounded(): string {\n        return this._rounded;\n    }\n\n    public get font(): string {\n        return this._font;\n    }\n\n    public get text(): string {\n        return this._text;\n    }\n\n    public get breakWords(): string {\n        return this._breakWords;\n    }\n\n    public get overflow(): string {\n        return this._overflow;\n    }\n\n    public get position(): string {\n        return this._position;\n    }\n\n    public get justifyContent(): string {\n        return this._justifyContent;\n    }\n\n    public get cursor(): string {\n        return this._cursor;\n    }\n\n    public get fontCase(): string {\n        return this._fontCase;\n    }\n\n    public set color(color) {\n        if (color.bg) {\n            color.bg = this.getQualifiedValue('bg-', color.bg);\n        }\n\n        if (color.text) {\n            color.text = this.getQualifiedValue('text-', color.text);\n        }\n\n        if (color.border) {\n            color.border = this.getQualifiedValue('border-', color.border);\n        }\n\n        this._color = color;\n    }\n\n    public set textColor(textColor) {\n        this._color = this._color ? this._color : {};\n        this._color.text = this.getQualifiedValue('text-', textColor);\n    }\n\n    public set bgColor(bgColor) {\n        this._color = this._color ? this._color : {};\n        this._color.bg = this.getQualifiedValue('bg-', bgColor);\n    }\n\n    public set borderColor(borderColor) {\n        this._color = this._color ? this._color : {};\n        this._color.border = this.getQualifiedValue('border-', borderColor);\n    }\n\n    public set h(h: string) {\n        this._h = this.getQualifiedValue('h-', h);\n    }\n\n    public set w(w: string) {\n        this._w = this.getQualifiedValue('w-', w);\n    }\n\n    public set p(p: string) {\n        this._p = this.getQualifiedValue('p-', p);\n    }\n\n    public set px(px: string) {\n        this._px = this.getQualifiedValue('px-', px);\n    }\n\n    public set py(py: string) {\n        this._py = this.getQualifiedValue('py-', py);\n    }\n\n    public set pt(pt: string) {\n        this._pt = this.getQualifiedValue('pt-', pt);\n    }\n\n    public set pr(pr: string) {\n        this._pr = this.getQualifiedValue('pr-', pr);\n    }\n\n    public set pb(pb: string) {\n        this._pb = this.getQualifiedValue('pb-', pb);\n    }\n\n    public set pl(pl: string) {\n        this._pl = this.getQualifiedValue('pl-', pl);\n    }\n\n    public set m(m: string) {\n        this._m = this.getQualifiedValue('m-', m);\n    }\n\n    public set mx(mx: string) {\n        this._mx = this.getQualifiedValue('mx-', mx);\n    }\n\n    public set my(my: string) {\n        this._my = this.getQualifiedValue('my-', my);\n    }\n\n    public set mt(mt: string) {\n        this._mt = this.getQualifiedValue('mt-', mt);\n    }\n\n    public set mr(mr: string) {\n        this._mr = this.getQualifiedValue('mr-', mr);\n    }\n\n    public set mb(mb: string) {\n        this._mb = this.getQualifiedValue('mb-', mb);\n    }\n\n    public set ml(ml: string) {\n        this._ml = this.getQualifiedValue('ml-', ml);\n    }\n\n    public set gap(gap: string) {\n        this._gap = this.getQualifiedValue('gap-', gap);\n    }\n\n    public set border(border: string) {\n        this._border = this.getQualifiedValue('border', border);\n    }\n\n    public set shadow(shadow: string) {\n        this._shadow = this.getQualifiedValue('shadow', shadow);\n    }\n\n    public set rounded(rounded: string) {\n        this._rounded = this.getQualifiedValue('rounded', rounded);\n    }\n\n    public set font(font: string) {\n        this._font = this.getQualifiedValue('font', font);\n    }\n\n    public set text(text: string) {\n        this._text = this.getQualifiedValue('text', text);\n    }\n\n    public set breakWords(breakWords: string) {\n        this._breakWords = this.getQualifiedValue('break', breakWords);\n    }\n\n    public set overflow(overflow: string) {\n        this._overflow = this.getQualifiedValue('overflow', overflow);\n    }\n\n    public set position(position: string) {\n        this._position = position;\n    }\n\n    public set justifyContent(justifyContent: string) {\n        this._justifyContent = this.getQualifiedValue('justify', justifyContent);\n    }\n\n    public set cursor(cursor: string) {\n        this._cursor = this.getQualifiedValue('cursor', cursor);\n    }\n\n    public set fontCase(fontCase: string) {\n        this._fontCase = this.getQualifiedValue('', fontCase);\n    }\n\n    public load(injector: Injector, style: string, defaultValue = null, inheritanceStyles = []) {\n        let ngtGlobalStyle = injector.get('NgtStyleGlobal', {});\n\n        defaultValue = defaultValue ? defaultValue : {};\n\n        let requestedStyle = <NgtStylizableService>injector.get(style + 'Style', defaultValue);\n\n        this.loadObjectProperties(this, ngtGlobalStyle, this.getAllowedKeys(ngtGlobalStyle));\n\n        inheritanceStyles.forEach(style => {\n            let requestedStyle = <NgtStylizableService>injector.get(style, {});\n\n            this.loadObjectProperties(this, requestedStyle, this.getAllowedKeys(requestedStyle));\n        });\n\n        this.loadObjectProperties(this, requestedStyle, this.getAllowedKeys(requestedStyle));\n    }\n\n    public compile(styles: Array<string>) {\n        return styles\n            .map((style: string) => this.getQualifiedStyle(style))\n            .join(' ');\n    }\n\n    private loadObjectProperties(targetObject, object, properties: Array<string>) {\n        properties.forEach((key) => {\n            if (typeof (object[key]) === 'object') {\n                targetObject[key] = targetObject[key] ? targetObject[key] : {};\n                targetObject[key] = this.loadObjectProperties(targetObject[key], object[key], Object.keys(object[key]));\n            } else {\n                targetObject[key] = object[key];\n            }\n        });\n\n        return targetObject;\n    }\n\n    private getQualifiedStyle(style: string) {\n        if (!style.includes('color')) {\n            return this['_' + style];\n        }\n\n        switch (style) {\n            case 'color.bg': return this._color.bg;\n            case 'color.text': return this._color.text;\n            case 'color.border': return this._color.border;\n        }\n    }\n\n    private getAllowedKeys(style: NgtStylizableService) {\n        let keys = Object.keys(style);\n\n        if (Array.isArray(keys)) {\n            return keys.filter(key => [\n                'color',\n                'h',\n                'w',\n                'p',\n                'px',\n                'py',\n                'pt',\n                'pr',\n                'pb',\n                'pl',\n                'm',\n                'mx',\n                'my',\n                'mt',\n                'mr',\n                'mb',\n                'ml',\n                'border',\n                'shadow',\n                'rounded',\n                'font',\n                'text',\n                'breakWords',\n                'overflow',\n                'position',\n                'justifyContent',\n                'cursor',\n                'fontCase'\n            ].includes(key));\n        }\n    }\n\n    private getQualifiedValue(requiredPrefix: string, value: string) {\n        value.split(' ').forEach((item) => {\n            if (!item.includes(requiredPrefix)) {\n                throw new Error('Invalid class [' + item + '], must have [' + requiredPrefix + ']');\n            }\n        });\n\n        return value;\n    }\n}\n","import { Directive, Input } from '@angular/core';\n\nimport { NgtStylizableService } from '../../services/ngt-stylizable/ngt-stylizable.service';\n\n@Directive({\n    selector: '[ngt-stylizable]',\n    standalone: false\n})\nexport class NgtStylizableDirective {\n    private ngtStylizableService: NgtStylizableService;\n\n    public constructor() {\n        this.ngtStylizableService = new NgtStylizableService();\n    }\n\n    public get color() {\n        return this.ngtStylizableService.color;\n    }\n\n    public get h(): string {\n        return this.ngtStylizableService.h;\n    }\n\n    public get w(): string {\n        return this.ngtStylizableService.w;\n    }\n\n    public get p(): string {\n        return this.ngtStylizableService.p;\n    }\n\n    public get px(): string {\n        return this.ngtStylizableService.px;\n    }\n\n    public get py(): string {\n        return this.ngtStylizableService.py;\n    }\n\n    public get pt(): string {\n        return this.ngtStylizableService.pt;\n    }\n\n    public get pr(): string {\n        return this.ngtStylizableService.pr;\n    }\n\n    public get pb(): string {\n        return this.ngtStylizableService.pb;\n    }\n\n    public get pl(): string {\n        return this.ngtStylizableService.pl;\n    }\n\n    public get m(): string {\n        return this.ngtStylizableService.m;\n    }\n\n    public get mx(): string {\n        return this.ngtStylizableService.mx;\n    }\n\n    public get my(): string {\n        return this.ngtStylizableService.my;\n    }\n\n    public get mt(): string {\n        return this.ngtStylizableService.mt;\n    }\n\n    public get mr(): string {\n        return this.ngtStylizableService.mr;\n    }\n\n    public get mb(): string {\n        return this.ngtStylizableService.mb;\n    }\n\n    public get ml(): string {\n        return this.ngtStylizableService.ml;\n    }\n\n    public get gap(): string {\n        return this.ngtStylizableService.gap;\n    }\n\n    public get border(): string {\n        return this.ngtStylizableService.border;\n    }\n\n    public get shadow(): string {\n        return this.ngtStylizableService.shadow;\n    }\n\n    public get rounded(): string {\n        return this.ngtStylizableService.rounded;\n    }\n\n    public get font(): string {\n        return this.ngtStylizableService.font;\n    }\n\n    public get text(): string {\n        return this.ngtStylizableService.text;\n    }\n\n    public get breakWords(): string {\n        return this.ngtStylizableService.breakWords;\n    }\n\n    public get overflow(): string {\n        return this.ngtStylizableService.overflow;\n    }\n\n    public get position(): string {\n        return this.ngtStylizableService.position;\n    }\n\n    public get justifyContent(): string {\n        return this.ngtStylizableService.justifyContent;\n    }\n\n    public get cursor(): string {\n        return this.ngtStylizableService.cursor;\n    }\n\n    public get fontCase(): string {\n        return this.ngtStylizableService.fontCase;\n    }\n\n    @Input('color')\n    public set color(color) {\n        this.ngtStylizableService.color = color;\n    }\n\n    @Input('color.text')\n    public set textColor(textColor: string) {\n        this.ngtStylizableService.textColor = textColor;\n    }\n\n    @Input('color.bg')\n    public set bgColor(bgColor: string) {\n        this.ngtStylizableService.bgColor = bgColor;\n    }\n\n    @Input('color.border')\n    public set borderColor(borderColor) {\n        this.ngtStylizableService.borderColor = borderColor;\n    }\n\n    @Input('h')\n    public set h(h: string) {\n        this.ngtStylizableService.h = h;\n    }\n\n    @Input('w')\n    public set w(w: string) {\n        this.ngtStylizableService.w = w;\n    }\n\n    @Input('p')\n    public set p(p: string) {\n        this.ngtStylizableService.p = p;\n    }\n\n    @Input('px')\n    public set px(px: string) {\n        this.ngtStylizableService.px = px;\n    }\n\n    @Input('py')\n    public set py(py: string) {\n        this.ngtStylizableService.py = py;\n    }\n\n    @Input('pt')\n    public set pt(pt: string) {\n        this.ngtStylizableService.pt = pt;\n    }\n\n    @Input('pr')\n    public set pr(pr: string) {\n        this.ngtStylizableService.pr = pr;\n    }\n\n    @Input('pb')\n    public set pb(pb: string) {\n        this.ngtStylizableService.pb = pb;\n    }\n\n    @Input('pl')\n    public set pl(pl: string) {\n        this.ngtStylizableService.pl = pl;\n    }\n\n    @Input('m')\n    public set m(m: string) {\n        this.ngtStylizableService.m = m;\n    }\n\n    @Input('mx')\n    public set mx(mx: string) {\n        this.ngtStylizableService.mx = mx;\n    }\n\n    @Input('my')\n    public set my(my: string) {\n        this.ngtStylizableService.my = my;\n    }\n\n    @Input('mt')\n    public set mt(mt: string) {\n        this.ngtStylizableService.mt = mt;\n    }\n\n    @Input('mr')\n    public set mr(mr: string) {\n        this.ngtStylizableService.mr = mr;\n    }\n\n    @Input('mb')\n    public set mb(mb: string) {\n        this.ngtStylizableService.mb = mb;\n    }\n\n    @Input('ml')\n    public set ml(ml: string) {\n        this.ngtStylizableService.ml = ml;\n    }\n\n    @Input('gap')\n    public set gap(gap: string) {\n        this.ngtStylizableService.gap = gap;\n    }\n\n    @Input('border')\n    public set border(border: string) {\n        this.ngtStylizableService.border = border;\n    }\n\n    @Input('shadow')\n    public set shadow(shadow: string) {\n        this.ngtStylizableService.shadow = shadow;\n    }\n\n    @Input('rounded')\n    public set rounded(rounded: string) {\n        this.ngtStylizableService.rounded = rounded;\n    }\n\n    @Input('font')\n    public set font(font: string) {\n        this.ngtStylizableService.font = font;\n    }\n\n    @Input('text')\n    public set text(text: string) {\n        this.ngtStylizableService.text = text;\n    }\n\n    @Input('breakWords')\n    public set breakWords(breakWords: string) {\n        this.ngtStylizableService.breakWords = breakWords;\n    }\n\n    @Input('overflow')\n    public set overflow(overflow: string) {\n        this.ngtStylizableService.overflow = overflow;\n    }\n\n    @Input('position')\n    public set position(position: string) {\n        this.ngtStylizableService.position = position;\n    }\n\n    @Input('justifyContent')\n    public set justifyContent(justifyContent: string) {\n        this.ngtStylizableService.justifyContent = justifyContent;\n    }\n\n    @Input('cursor')\n    public set cursor(cursor: string) {\n        this.ngtStylizableService.cursor = cursor;\n    }\n\n    @Input('fontCase')\n    public set fontCase(fontCase: string) {\n        this.ngtStylizableService.fontCase = fontCase;\n    }\n\n    public getNgtStylizableService() {\n        return this.ngtStylizableService;\n    }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { NgtStylizableDirective } from './ngt-stylizable.directive';\n\n@NgModule({\n    declarations: [NgtStylizableDirective],\n    exports: [NgtStylizableDirective],\n    imports: [\n        CommonModule\n    ]\n})\nexport class NgtStylizableModule { }\n","import {\n    AfterViewChecked,\n    Component,\n    ElementRef,\n    Input,\n    OnChanges,\n    SimpleChanges,\n    ViewChild,\n    ViewEncapsulation,\n} from '@angular/core';\nimport { SvgIconComponent } from 'angular-svg-icon';\n\n@Component({\n    selector: 'ngt-svg',\n    templateUrl: './ngt-svg.component.html',\n    styleUrls: ['./ngt-svg.component.css'],\n    host: {\n        class: 'flex justify-center'\n    },\n    encapsulation: ViewEncapsulation.None,\n    standalone: false\n})\nexport class NgtSvgComponent implements AfterViewChecked, OnChanges {\n    @Input() public src: string;\n    @Input() public class: string = '';\n\n    @ViewChild(SvgIconComponent, { static: true, read: ElementRef }) private svgIconElement: ElementRef;\n\n    private appliedClass = null;\n\n    public ngAfterViewChecked() {\n        this.checkClassChange();\n    }\n\n    public ngOnChanges(changes: SimpleChanges) {\n        this.appliedClass = null;\n        this.checkClassChange();\n    }\n\n    private checkClassChange() {\n        if (this.appliedClass !== this.class) {\n            if (this.svgIconElement && this.svgIconElement.nativeElement) {\n                let svgElement = <SVGAElement>this.svgIconElement.nativeElement.querySelector('svg');\n\n                if (svgElement) {\n                    while (svgElement.classList.length > 0) {\n                        svgElement.classList.remove(svgElement.classList.item(0));\n                    }\n\n                    svgElement.classList.add('fill-current');\n                    svgElement.classList.add('self-center');\n\n                    `${this.class}`.trim().split(' ').forEach(className => {\n                        if (className) {\n                            svgElement.classList.add(className);\n                        }\n                    });\n\n                    this.appliedClass = this.class;\n                }\n            }\n        }\n    }\n}\n","<svg-icon [src]='src' class=\"flex {{ class }}\"></svg-icon>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AngularSvgIconModule } from 'angular-svg-icon';\n\nimport { NgtSvgComponent } from './ngt-svg.component';\n\n@NgModule({\n    imports: [\n        CommonModule,\n        AngularSvgIconModule.forRoot()\n    ],\n    declarations: [NgtSvgComponent],\n    exports: [NgtSvgComponent]\n})\nexport class NgtSvgModule { }\n","import { NgForm } from '@angular/forms';\n\nexport function resetNgForm(ngForm: NgForm) {\n    ngForm.resetForm();\n    setTimeout(() => {\n        ngForm.reset();\n    }, 500);\n}\n\nexport function triggerNgFormSubmit(ngForm: NgForm) {\n    ngForm.onSubmit(new Event(\"submit\"));\n}\n\nexport function isValidNgForm(ngForm: NgForm) {\n    triggerNgFormSubmit(ngForm);\n\n    return ngForm.valid;\n}\n","import { ActivatedRoute } from '@angular/router';\nimport { Observable, Observer, zip } from 'rxjs';\n\nexport function getIdFromUri(route: ActivatedRoute, routeIdentifier: string) {\n    return new Observable((observer: Observer<any>) => {\n        zip(route.parent.params, route.params)\n            .subscribe((results) => {\n                let params = { ...results[0], ...results[1] };\n\n                observer.next(params[routeIdentifier]);\n                observer.complete();\n            });\n    });\n}\n","import { ChangeDetectionStrategy, Component, input, Optional } from '@angular/core';\n\nimport { NgtTranslateService } from '../../../../../services/http/ngt-translate.service';\n\n@Component({\n    selector: 'ngt-form-validation-message',\n    templateUrl: './ngt-form-validation-message.component.html',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: true,\n})\nexport class NgtFormValidationMessageComponent {\n    public readonly canShowValidationMessage = input<boolean>();\n    public readonly message = input<string>();\n\n    public constructor(\n        @Optional()\n        public ngtTranslateService: NgtTranslateService\n    ) { }\n}\n","@if (canShowValidationMessage()) {\n<div class=\"mb-5 p-2 rounded bg-red-500 text-white text-xs\">\n    {{ message() || ngtTranslateService.ngtFormDefaultValidationMessage }}\n</div>\n}","import {\n    AfterViewInit,\n    ChangeDetectorRef,\n    Component,\n    EventEmitter,\n    Host,\n    Input,\n    OnDestroy,\n    OnInit,\n    Optional,\n    Output,\n} from '@angular/core';\nimport { ControlContainer, NgForm } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Observable, Subscription } from 'rxjs';\n\nimport { isValidNgForm } from '../../../../helpers/form/form';\nimport { getIdFromUri } from '../../../../helpers/routing/route';\nimport { NgtHttpFormService } from '../../../../services/http/ngt-http-form.service';\nimport { NgtAbilityValidationService } from '../../../../services/validation/ngt-ability-validation.service';;\n\nexport enum NgtFormState {\n    CREATING = 'CREATING',\n    EDITING = 'EDITING'\n};\n\n@Component({\n    selector: 'ngt-form',\n    templateUrl: './ngt-form.component.html',\n    standalone: false\n})\nexport class NgtFormComponent implements OnInit, OnDestroy, AfterViewInit {\n    public static onSubmitInvalidForm: EventEmitter<NgForm> = new EventEmitter;\n\n    @Input() public guessFormState: boolean = true;\n    @Input() public message: string = '';\n    @Input() public routeIdentifier: string = 'id';\n    @Input() public resource: any;\n    @Input() public customLayout: boolean;\n    @Input() public isDisabled: boolean;\n\n    @Output() public onCreating: EventEmitter<any> = new EventEmitter;\n    @Output() public onEditing: EventEmitter<any> = new EventEmitter;\n    @Output() public onLoadingChange: EventEmitter<boolean> = new EventEmitter;\n    @Output() public onShiningChange: EventEmitter<boolean> = new EventEmitter;\n    @Output() public setupComponent: EventEmitter<any> = new EventEmitter;\n    @Output() public onResourceLoadingError: EventEmitter<string> = new EventEmitter;\n\n    public formState: NgtFormState;\n    public uriId: any;\n\n    private loading: boolean;\n    private shining: boolean;\n    private subscriptions: Array<Subscription> = [];\n\n    public constructor(\n        public router: Router,\n        public route: ActivatedRoute,\n\n        @Optional() @Host()\n        public formContainer: ControlContainer,\n\n        @Optional() @Host()\n        public ngForm: NgForm,\n\n        private changeDetector: ChangeDetectorRef,\n        private ngtHttpFormService: NgtHttpFormService,\n\n        @Optional()\n        private ngtAbilityValidationService: NgtAbilityValidationService\n    ) { }\n\n    public ngOnInit() {\n        if (this.guessFormState) {\n            this.subscriptions.push(\n                this.determineFormState().subscribe(() => {\n                    this.setupComponent.emit();\n                })\n            );\n        } else {\n            this.setupComponent.emit();\n        }\n\n        this.subscriptions.push(\n            this.ngForm.ngSubmit.subscribe(() => {\n                if (!this.ngForm.valid) {\n                    NgtFormComponent.onSubmitInvalidForm.emit(this.ngForm);\n                }\n            })\n        );\n    }\n\n    public async ngAfterViewInit(): Promise<void> {\n        if (this.isDisabled === undefined && this.ngtAbilityValidationService) {\n            this.isDisabled = !(await this.ngtAbilityValidationService.hasManagePermission());\n\n            this.changeDetector.detectChanges();\n        }\n    }\n\n    public ngOnDestroy() {\n        this.destroySubscriptions();\n    }\n\n    public isCreating() {\n        return this.formState === NgtFormState.CREATING;\n    }\n\n    public isEditing() {\n        return this.formState === NgtFormState.EDITING;\n    }\n\n    public isLoading() {\n        return this.loading;\n    }\n\n    public isShining() {\n        return this.shining;\n    }\n\n    public canShowValidationMessage() {\n        return this.formContainer &&\n            this.formContainer['submitted'] &&\n            this.formContainer.status != 'VALID' &&\n            this.formContainer.status != 'DISABLED';\n    }\n\n    public setShining(shining: boolean) {\n        this.shining = shining;\n        this.onShiningChange.emit(this.shining);\n    }\n\n    public setLoading(loading: boolean) {\n        this.loading = loading;\n        this.onLoadingChange.emit(this.loading);\n    }\n\n    public setFormState(state: NgtFormState, triggerChange: boolean = true) {\n        this.formState = state;\n\n        if (triggerChange) {\n            this.triggerFormStateChange();\n        }\n    }\n\n    public getFormState() {\n        return this.formState;\n    }\n\n    public triggerFormStateChange() {\n        if (this.isEditing()) {\n            this.triggerFormEditing();\n        } else if (this.isCreating()) {\n            this.triggerFormCreating();\n        }\n    }\n\n    public formHasChanges() {\n        return this.ngForm.dirty;\n    }\n\n    public saveResource() {\n        return new Observable((observer) => {\n            if (isValidNgForm(this.ngForm)) {\n                this.setLoading(true);\n\n                this.subscriptions.push(\n                    this.ngtHttpFormService.saveResource(this.resource)\n                        .subscribe((response: any) => {\n                            this.setLoading(false);\n                            observer.next(response);\n                            observer.complete();\n                        })\n                );\n            } else {\n                observer.error();\n            }\n        });\n    }\n\n    protected triggerFormCreating() {\n        this.onCreating.emit();\n    }\n\n    protected triggerFormEditing() {\n        if (this.uriId && this.resource) {\n            this.setLoading(true);\n            this.setShining(true);\n\n            this.subscriptions.push(\n                this.ngtHttpFormService.loadResourceById(this.resource, this.uriId)\n                    .subscribe(\n                        (resource: any) => {\n                            this.setLoading(false);\n                            this.setShining(false);\n\n                            this.onEditing.emit(resource);\n\n                            setTimeout(() => this.ngForm.form.markAsPristine(), 1500);\n                        },\n                        (error) => {\n                            this.setLoading(false);\n                            this.setShining(false);\n\n                            this.onResourceLoadingError.emit(error);\n                        }\n                    )\n            );\n\n            return;\n        }\n\n        this.onEditing.emit(null);\n    }\n\n    private determineFormState() {\n        return new Observable((observer) => {\n            this.subscriptions.push(\n                getIdFromUri(this.route, this.routeIdentifier).subscribe((id: string) => {\n                    this.uriId = id;\n\n                    if (this.uriId) {\n                        this.setFormState(NgtFormState.EDITING);\n                    } else {\n                        this.setFormState(NgtFormState.CREATING);\n                    }\n\n                    observer.next(null);\n                })\n            );\n        });\n    }\n\n    private destroySubscriptions() {\n        this.subscriptions.forEach(subscription => subscription.unsubscribe());\n        this.subscriptions = [];\n    }\n}\n","<ngt-form-validation-message *ngIf='!customLayout' [canShowValidationMessage]=\"canShowValidationMessage()\"\n    [message]=\"message\">\n</ngt-form-validation-message>\n\n<fieldset [disabled]=\"isDisabled\" style=\"min-inline-size: 100% !important\">\n    <ng-content></ng-content>\n</fieldset>","import {\n    ChangeDetectionStrategy,\n    Component,\n    computed,\n    EventEmitter,\n    input,\n    OnDestroy,\n    OnInit,\n    Optional,\n    output,\n    signal,\n    WritableSignal,\n} from '@angular/core';\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { ActivatedRoute } from '@angular/router';\nimport { Subscription } from 'rxjs';\n\nimport { CommonModule } from '@angular/common';\nimport { getIdFromUri } from '../../../../helpers/routing/route';\nimport { NgtHttpFormService } from '../../../../services/http/ngt-http-form.service';\nimport { NgtAbilityValidationService } from '../../../../services/validation/ngt-ability-validation.service';\nimport { NgtFormValidationMessageComponent } from '../../template-driven/ngt-form/ngt-form-validation-message/ngt-form-validation-message.component';\n\nexport enum NgtReactFormState {\n    CREATING = 'CREATING',\n    EDITING = 'EDITING'\n}\n\n@Component({\n    selector: 'ngt-reactive-form',\n    templateUrl: './ngt-reactive-form.component.html',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: true,\n    imports: [\n        CommonModule,\n        ReactiveFormsModule,\n        NgtFormValidationMessageComponent,\n    ]\n})\nexport class NgtReactiveFormComponent implements OnInit, OnDestroy {\n    public static onSubmitInvalidForm: EventEmitter<FormGroup> = new EventEmitter();\n\n    /** Inputs */\n\n    public readonly form = input.required<FormGroup>();\n    public readonly resource = input.required<any>();\n    public readonly guessFormState = input<boolean>(true);\n    public readonly invalidFormMessage = input<string>('');\n    public readonly routeIdentifier = input<string>('id');\n    public readonly customLayout = input<boolean>(false);\n    public readonly isDisabled = input<boolean>();\n\n    /** Outputs */\n\n    public readonly onCreating = output<void>();\n    public readonly onEditing = output<any>();\n    public readonly onResourceLoadingError = output<string>();\n\n    /** Signals */\n\n    public readonly formState: WritableSignal<NgtReactFormState> = signal(null);\n    public readonly uriId: WritableSignal<any> = signal(null);\n    public readonly loading: WritableSignal<boolean> = signal(false);\n    public readonly shining: WritableSignal<boolean> = signal(false);\n    public readonly canShowInvalidFormMessage: WritableSignal<boolean> = signal(false);\n    public readonly isFormGroupDisabled: WritableSignal<boolean> = signal(false);\n\n    public readonly isDisabledState = computed(() => this.isDisabled() || this.isFormGroupDisabled());\n\n    private subscriptions: Array<Subscription> = [];\n\n    public constructor(\n        @Optional()\n        private abilityValidationService: NgtAbilityValidationService,\n\n        private httpFormService: NgtHttpFormService,\n        private activatedRoute: ActivatedRoute,\n    ) { }\n\n    public ngOnInit(): void {\n        if (this.guessFormState()) {\n            this.determineFormState();\n        }\n\n        this.bindDisabledStateByAbilityValidation();\n\n        this.subscriptions.push(\n            this.subcribeFormGroupStatusChanges()\n        );\n    }\n\n    public ngOnDestroy(): void {\n        this.destroySubscriptions();\n    }\n\n    public onSubmit(): void {\n        this.form().markAllAsTouched();\n\n        if (!this.form().valid) {\n            NgtReactiveFormComponent.onSubmitInvalidForm.emit(this.form());\n\n            this.canShowInvalidFormMessage.set(!this.isDisabledState());\n        }\n    }\n\n    public setFormState(state: NgtReactFormState, triggerChange: boolean = true): void {\n        this.formState.set(state);\n\n        if (triggerChange) {\n            this.triggerFormStateChange();\n        }\n    }\n\n    public isCreating(): boolean {\n        return this.formState() === NgtReactFormState.CREATING;\n    }\n\n    public isEditing(): boolean {\n        return this.formState() === NgtReactFormState.EDITING;\n    }\n\n    public isDirty(): boolean {\n        return this.form()?.dirty;\n    }\n\n    private triggerFormStateChange(): void {\n        if (this.isEditing()) {\n            return this.triggerFormEditing();\n        }\n\n        if (this.isCreating()) {\n            return this.triggerFormCreating();\n        }\n    }\n\n    private triggerFormCreating(): void {\n        this.onCreating.emit();\n    }\n\n    private triggerFormEditing(): void {\n        const currentUriId = this.uriId();\n        const currentResource = this.resource();\n\n        if (currentUriId && currentResource) {\n            this.loading.set(true);\n            this.shining.set(true);\n\n            this.httpFormService.loadResourceById(currentResource, currentUriId)\n                .subscribe({\n                    next: (resource: any) => {\n                        this.onEditing.emit(resource);\n                    },\n                    error: (error) => {\n                        this.onResourceLoadingError.emit(error);\n                    },\n                    complete: () => {\n                        this.loading.set(false);\n                        this.shining.set(false);\n                    }\n                });\n\n            return;\n        }\n\n        this.onEditing.emit(null);\n    }\n\n    private determineFormState(): void {\n        getIdFromUri(this.activatedRoute, this.routeIdentifier())\n            .subscribe((id: string) => {\n                this.uriId.set(id);\n\n                this.setFormState(\n                    this.uriId()\n                        ? NgtReactFormState.EDITING\n                        : NgtReactFormState.CREATING\n                );\n            });\n    }\n\n    private subcribeFormGroupStatusChanges(): Subscription {\n        return this.form().statusChanges.subscribe(() => {\n            if (this.form().valid && this.canShowInvalidFormMessage()) {\n                this.canShowInvalidFormMessage.set(false);\n            }\n        });\n    }\n\n    private async bindDisabledStateByAbilityValidation(): Promise<void> {\n        if (this.isDisabled() === undefined && this.abilityValidationService) {\n            const hasPermission = await this.abilityValidationService.hasManagePermission();\n\n            if (!hasPermission) {\n                this.isFormGroupDisabled.set(true);\n            }\n        }\n    }\n\n    private destroySubscriptions(): void {\n        this.subscriptions.forEach(subscription => subscription.unsubscribe());\n        this.subscriptions = [];\n    }\n}\n","<form [formGroup]=\"form()\" (ngSubmit)=\"onSubmit()\">\n    @if (!customLayout()) {\n        <ngt-form-validation-message [canShowValidationMessage]=\"canShowInvalidFormMessage()\"\n            [message]=\"invalidFormMessage()\">\n        </ngt-form-validation-message>\n    }\n    \n    <fieldset [disabled]=\"isDisabledState()\" style=\"min-inline-size: 100% !important\">\n        <ng-content></ng-content>\n    </fieldset>\n</form>\n\n","export function uuid() {\n    return [\n        Math.random().toString(36).substr(2, 9),\n        Math.random().toString(36).substr(2, 9),\n        Math.random().toString(36).substr(2, 9),\n        Math.random().toString(36).substr(2, 9)\n    ].join('_');\n};\n","import { ChangeDetectionStrategy, Component, output, signal, WritableSignal } from '@angular/core';\nimport { NgtDropdownComponent } from '../ngt-dropdown.component';\n\n@Component({\n    selector: '[ngt-dropdown-container]',\n    templateUrl: './ngt-dropdown-container.component.html',\n    standalone: true,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NgtDropdownContainerComponent {\n    public readonly onActiveDropdownChange = output<NgtDropdownComponent>();\n\n    public readonly activeDropdown: WritableSignal<NgtDropdownComponent | null> = signal(null);\n\n    public setActiveDropdown(activeDropdown: NgtDropdownComponent): void {\n        this.activeDropdown.set(activeDropdown);\n        this.onActiveDropdownChange.emit(activeDropdown);\n    }\n}\n","<ng-content></ng-content>","import { animate, state, style, transition, trigger } from '@angular/animations';\nimport { CommonModule } from '@angular/common';\nimport {\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    computed,\n    effect,\n    ElementRef,\n    input,\n    OnDestroy,\n    Optional,\n    output,\n    Signal,\n    signal,\n    SkipSelf,\n    ViewChild,\n    WritableSignal,\n} from '@angular/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { Subscription } from 'rxjs';\n\nimport { uuid } from '../../helpers/uuid';\nimport { NgtDropdownContainerComponent } from './ngt-dropdown-container/ngt-dropdown-container.component';\n\nexport enum NgtDropdownOpenMethod {\n    CLICK = 'CLICK',\n    POPOVER_CLICK = 'POPOVER_CLICK',\n    RIGHT_CLICK = 'RIGHT_CLICK',\n    HOVER = 'HOVER'\n}\n\n@Component({\n    selector: 'ngt-dropdown',\n    templateUrl: './ngt-dropdown.component.html',\n    styleUrls: ['./ngt-dropdown.component.css'],\n    standalone: true,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [CommonModule],\n    animations: [\n        trigger('openClose', [\n            state('open', style({ opacity: 1, transform: 'translateY(0px)' })),\n            state('closed', style({ opacity: 0, transform: 'translateY(-10px)' })),\n            transition('closed => open', [\n                animate(300)\n            ]),\n        ]),\n    ],\n})\nexport class NgtDropdownComponent implements OnDestroy {\n    @ViewChild('container', { static: true }) public containerRef: ElementRef;\n\n    /** Visual Inputs */\n\n    public readonly scrollable = input<boolean>(false);\n    public readonly autoXReverse = input<boolean>(false);\n    public readonly autoYReverse = input<boolean>(true);\n    public readonly reverseXPosition = input<boolean>();\n    public readonly reverseYPosition = input<boolean>();\n\n    /** Behavior Inputs */\n\n    public readonly closeOnClick = input<boolean>(false);\n    public readonly closeTimeout = input<number>(1000);\n    public readonly openMethod = input<NgtDropdownOpenMethod>(NgtDropdownOpenMethod.HOVER);\n\n    /** Outputs */\n\n    public readonly onToggle = output<boolean>();\n    public readonly onHostClick = output<any>();\n\n    /** Computed Signals */\n\n    public readonly shouldReverseXPosition: Signal<boolean> = computed(() =>\n        this.getShouldReverseXPosition()\n    );\n\n    public readonly shouldReverseYPosition: Signal<boolean> = computed(() =>\n        this.getShouldReverseYPosition()\n    );\n\n    public readonly isClickMethod: Signal<boolean> = computed(() =>\n        this.openMethod() == NgtDropdownOpenMethod.CLICK\n        || this.openMethod() == NgtDropdownOpenMethod.POPOVER_CLICK\n    );\n\n    public readonly isHoverMethod: Signal<boolean> = computed(() =>\n        this.openMethod() == NgtDropdownOpenMethod.HOVER\n    );\n\n    public readonly isRightClickMethod: Signal<boolean> = computed(() =>\n        this.openMethod() == NgtDropdownOpenMethod.RIGHT_CLICK\n    );\n\n    public readonly isPopoverClickMethod: Signal<boolean> = computed(() =>\n        this.openMethod() == NgtDropdownOpenMethod.POPOVER_CLICK\n    );\n\n    /** Internal Signals */\n\n    public readonly uuid: string = uuid();\n    public readonly isOpen: WritableSignal<boolean> = signal(false);\n    public readonly isYPositionReversed: WritableSignal<boolean> = signal(false);\n    public readonly isXPositionReversed: WritableSignal<boolean> = signal(false);\n    public readonly isBindingContainerYPosition: WritableSignal<boolean> = signal(true);\n    public readonly isBindingContainerXPosition: WritableSignal<boolean> = signal(true);\n\n    private readonly containerXPosition: WritableSignal<number | null> = signal(null);\n    private readonly containerYPosition: WritableSignal<number | null> = signal(null);\n\n    private subscriptions: Array<Subscription> = [];\n\n    public constructor(\n        @Optional() @SkipSelf()\n        private ngtDropdownContainer: NgtDropdownContainerComponent,\n\n        private changeDetector: ChangeDetectorRef,\n    ) {\n        this.registerEffects();\n\n        this.bindSubscriptions();\n    }\n\n    public ngOnDestroy(): void {\n        this.destroySubscriptions();\n    }\n\n    public open(): void {\n        this.isOpen.set(true);\n        this.ngtDropdownContainer?.setActiveDropdown(this);\n\n        this.changeDetector.detectChanges();\n\n        this.bindContainerXPosition();\n        this.bindContainerYPosition();\n\n        this.onToggle.emit(this.isOpen());\n    }\n\n    public closeOnSelectOption(): void {\n        if (this.closeOnClick()) {\n            this.close();\n        }\n    }\n\n    public close(): void {\n        this.isOpen.set(false);\n        this.containerXPosition.set(null);\n        this.containerYPosition.set(null);\n\n        this.onToggle.emit(this.isOpen());\n    }\n\n    public toggle(): void {\n        if (this.isOpen()) {\n            this.close();\n        } else {\n            this.open();\n        }\n    }\n\n    public onHover(host: any, container: any): void {\n        if (this.isHoverMethod() && host && container) {\n            this.open();\n            this.watchHover(host, container);\n        }\n    }\n\n    public onClick(event: Event, host: any, container: any): void {\n        this.onHostClick.emit(event);\n\n        if (this.isClickMethod()) {\n            event.preventDefault();\n            event.stopPropagation();\n\n            this.toggle();\n        }\n\n        if (this.isPopoverClickMethod()) {\n            this.watchHover(host, container);\n        }\n    }\n\n    public onRightClick(event: Event): void {\n        if (this.isRightClickMethod()) {\n            event.preventDefault();\n            event.stopPropagation();\n\n            this.toggle();\n        }\n    }\n\n    private registerEffects(): void {\n        effect(() => {\n            if (this.isOpen() && !this.isBindingContainerXPosition()) {\n                const containerX = this.containerXPosition();\n\n                if (containerX !== null) {\n                    this.isXPositionReversed.set(!(containerX > document.documentElement.clientWidth));\n                }\n            }\n        });\n\n        effect(() => {\n            if (this.isOpen() && !this.isBindingContainerYPosition()) {\n                const containerY = this.containerYPosition();\n\n                if (containerY !== null) {\n                    this.isYPositionReversed.set(containerY > (document.documentElement.clientHeight * 0.9));\n                }\n            }\n        });\n    }\n\n    private bindSubscriptions(): void {\n        if (this.ngtDropdownContainer) {\n            this.subscriptions.push(\n                toObservable(this.ngtDropdownContainer.activeDropdown)\n                    .subscribe((activeDropdown: NgtDropdownComponent | null) => {\n                        this.isOpen.set(activeDropdown?.uuid === this.uuid);\n                    })\n            );\n        }\n    }\n\n    private bindContainerXPosition(): void {\n        if (!this.containerXPosition() && this.containerRef.nativeElement.offsetWidth) {\n            this.isBindingContainerXPosition.set(true);\n\n            const position = this.containerRef.nativeElement.getBoundingClientRect().x\n                + this.containerRef.nativeElement.offsetWidth;\n\n            this.containerXPosition.set(position);\n            this.isBindingContainerXPosition.set(false);\n        }\n    }\n\n    private bindContainerYPosition(): void {\n        if (!this.containerYPosition() && this.containerRef?.nativeElement.offsetHeight) {\n            this.isBindingContainerYPosition.set(true);\n\n            const position = this.containerRef.nativeElement.getBoundingClientRect().y\n                + this.containerRef.nativeElement.offsetHeight;\n\n            this.containerYPosition.set(position);\n            this.isBindingContainerYPosition.set(false);\n        }\n    }\n\n    private watchHover(host: any, container: any): void {\n        const interval = setInterval(() => {\n            if (!host || !container || !this.isInHover(host, container)) {\n                this.close();\n\n                clearInterval(interval);\n            }\n        }, this.closeTimeout());\n    }\n\n    private getShouldReverseXPosition(): boolean {\n        if (!this.autoXReverse() || this.reverseXPosition() !== undefined) {\n            return this.reverseXPosition();\n        }\n\n        if (this.isOpen() && !this.isBindingContainerXPosition()) {\n            return this.isXPositionReversed();\n        }\n\n        return false;\n    }\n\n    private getShouldReverseYPosition(): boolean {\n        if (!this.autoYReverse() || this.reverseYPosition() !== undefined) {\n            return this.reverseYPosition();\n        }\n\n        if (this.isOpen() && !this.isBindingContainerYPosition()) {\n            return this.isYPositionReversed();\n        }\n\n        return false;\n    }\n\n    private isInHover(host: any, container: any): boolean {\n        return host.parentElement.querySelector(':hover') == host ||\n            container.parentElement.querySelector(':hover') == container;\n    }\n\n    private destroySubscriptions(): void {\n        this.subscriptions.forEach(subscription => subscription.unsubscribe());\n        this.subscriptions = [];\n    }\n}\n","<div class=\"sm:relative\">\n    <div (mouseenter)=\"onHover(host, container)\" (click)=\"onClick($event, host, container)\"\n        (contextmenu)=\"onRightClick($event)\" #host>\n        <ng-content select='[host]'></ng-content>\n    </div>\n\n    <div [hidden]='!isOpen'\n        class=\"{{ shouldReverseYPosition() ? 'mb-12 bottom-0' : 'mt-4' }} {{ shouldReverseXPosition() ? 'left-0': 'right-0' }} ngt-dropdown-container sm:mr-0 mr-3 max-w-xs absolute\"\n        [@openClose]=\"isOpen() ? 'open' : 'closed'\" (mouseenter)=\"onHover(host, container)\"\n        (click)='closeOnSelectOption()' style=\"z-index: 1100 !important;\" #container>\n\n        @if (isOpen()) {\n            <div class=\"flex flex-col\" [ngClass]=\"{ 'h-52 overflow-auto': scrollable() }\">\n                <ng-content select='[container]'></ng-content>\n            </div>\n        }\n    </div>\n</div>\n\n@if (isOpen() && openMethod() !== 'HOVER') {\n    <button type=\"button\" class=\"fixed z-40 inset-0 h-full w-full opacity-0 cursor-default\" (click)='toggle()'>\n    </button>\n}","import { CommonModule } from '@angular/common';\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    computed,\n    Injector,\n    input,\n    Optional,\n    Self,\n    Signal,\n    signal,\n    ViewEncapsulation,\n    WritableSignal,\n} from '@angular/core';\n\nimport { NgtDropdownComponent, NgtDropdownOpenMethod } from '../ngt-dropdown/ngt-dropdown.component';\nimport { NgtSvgModule } from '../ngt-svg/ngt-svg.module';\nimport { NgtStylizableDirective } from '../../directives/ngt-stylizable/ngt-stylizable.directive';\nimport { NgtTranslateService } from '../../services/http/ngt-translate.service';\nimport { NgtStylizableService } from '../../services/ngt-stylizable/ngt-stylizable.service';\n\n@Component({\n    selector: 'ngt-helper',\n    templateUrl: './ngt-helper.component.html',\n    encapsulation: ViewEncapsulation.None,\n    standalone: true,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [\n        CommonModule,\n        NgtDropdownComponent,\n        NgtSvgModule\n    ],\n})\nexport class NgtHelperComponent {\n    /** Visual Inputs */\n\n    public readonly helpTextColor = input<string>();\n    public readonly helpText = input<string>();\n    public readonly helpTitle = input<string>();\n    public readonly icon = input<string>();\n    public readonly iconSize = input<string>();\n    public readonly iconColor = input<string>('text-green-500');\n    public readonly iconTitle = input<string>();\n    public readonly tooltipSize = input<string>('max-w-xs');\n\n    /** Behavior Inputs */\n\n    public readonly autoXReverse = input<boolean>(true);\n    public readonly helperReverseYPosition = input<boolean>();\n\n    /** Computed Signals */\n\n    public readonly hasIcon: Signal<boolean> = computed(() => !!this.icon());\n    public readonly hasHelpText: Signal<boolean> = computed(() => !!this.helpText());\n    public readonly hasIconTitle: Signal<boolean> = computed(() => !!this.iconTitle());\n    public readonly displayHelpTitle: Signal<string> = computed(() =>\n        this.helpTitle() || this.ngtTranslateService?.ngtStandardHelperTitle\n    );\n\n    /** Internal Signals */\n\n    public readonly ngtStyle: WritableSignal<NgtStylizableService> = signal(new NgtStylizableService());\n    public readonly NgtDropdownOpenMethod = NgtDropdownOpenMethod;\n\n    public constructor(\n        @Optional() @Self()\n        public ngtStylizableDirective: NgtStylizableDirective,\n\n        @Optional()\n        public ngtTranslateService: NgtTranslateService,\n\n        private injector: Injector,\n    ) {\n        this.setupNgtStylizable();\n    }\n\n    private setupNgtStylizable(): void {\n        const styleService = this.ngtStylizableDirective\n            ? this.ngtStylizableDirective.getNgtStylizableService()\n            : new NgtStylizableService();\n\n        styleService.load(this.injector, 'NgtHelper', {\n            text: 'text-xs',\n            fontCase: '',\n            px: 'px-2',\n            gap: '',\n            color: {\n                text: 'text-black',\n                bg: 'bg-gray-200'\n            }\n        });\n\n        this.ngtStyle.set(styleService);\n    }\n}\n","<ngt-dropdown class=\"flex w-full hover:opacity-100\" [closeOnClick]=\"true\" [autoXReverse]=\"autoXReverse()\"\n    [reverseYPosition]=\"helperReverseYPosition()\" [openMethod]=\"NgtDropdownOpenMethod.HOVER\" #dropdownRef>\n    <div class=\"flex rounded-full {{ iconColor() }} {{ ngtStyle().compile(['px', 'text', 'gap']) }}\"\n        style=\"cursor: help;\" host>\n        @if (hasIcon()) {\n            <ngt-svg [class]=\"iconSize()\" [src]=\"icon()\" style=\"cursor: help;\"></ngt-svg>\n        }\n\n        @if (!hasIcon()) {\n            <div style=\"cursor: help;\">\n                <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\">\n                    <path class=\"fill-current\"\n                        d=\"M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zM262.655 90c-54.497 0-89.255 22.957-116.549 63.758-3.536 5.286-2.353 12.415 2.715 16.258l34.699 26.31c5.205 3.947 12.621 3.008 16.665-2.122 17.864-22.658 30.113-35.797 57.303-35.797 20.429 0 45.698 13.148 45.698 32.958 0 14.976-12.363 22.667-32.534 33.976C247.128 238.528 216 254.941 216 296v4c0 6.627 5.373 12 12 12h56c6.627 0 12-5.373 12-12v-1.333c0-28.462 83.186-29.647 83.186-106.667 0-58.002-60.165-102-116.531-102zM256 338c-25.365 0-46 20.635-46 46 0 25.364 20.635 46 46 46s46-20.636 46-46c0-25.365-20.635-46-46-46z\" />\n                </svg>\n            </div>\n        }\n\n        @if (hasHelpText()) {\n            <p class=\"cursor-pointer {{ helpTextColor() }}\" style=\"margin-left: 2px\">{{ helpText() }}</p>\n        }\n    </div>\n\n    <div class=\"bg-gray-100 rounded-lg hover:opacity-100 text-gray-800 {{ tooltipSize() }} shadow-lg {{ ngtStyle().compile(['text', 'fontCase']) }}\"\n        [class.-mb-4]='dropdownRef.isYPositionReversed()' container>\n        <div\n            class=\"{{ ngtStyle().compile(['color.bg', 'color.text']) }} flex justify-center rounded-t-lg hover:opacity-100 font-semibold border-b border-dashed border-gray-400 text-center px-6 py-1\">\n            @if (hasIconTitle()) {\n                <ngt-svg [src]=\"iconTitle()\" style=\"margin-right: 3px\"></ngt-svg>\n            }\n\n            <span class=\"text-xs\">{{ displayHelpTitle() }}</span>\n        </div>\n        \n        <div class=\"px-2 py-1 text-center hover:opacity-100\">\n            <ng-content></ng-content>\n        </div>\n    </div>\n</ngt-dropdown>","import { animate, state, style, transition, trigger } from '@angular/animations';\nimport {\n    AfterViewInit, ChangeDetectorRef, Component, ElementRef, EventEmitter, Injector, Input, OnChanges, Optional, Output, Self, signal, SimpleChanges, ViewChild,\n    WritableSignal\n} from '@angular/core';\n\nimport { NgtStylizableDirective } from '../../directives/ngt-stylizable/ngt-stylizable.directive';\nimport { NgtStylizableService } from '../../services/ngt-stylizable/ngt-stylizable.service';\nimport { NgtAbilityValidationService } from '../../services/validation/ngt-ability-validation.service';;\n\n@Component({\n    selector: 'ngt-section',\n    templateUrl: './ngt-section.component.html',\n    animations: [\n        trigger('enterAnimation', [\n            state('void', style({ transform: 'translateY(-20px)', opacity: 0 })),\n            transition(':enter', [\n                animate(400)\n            ])\n        ]),\n    ],\n    standalone: false\n})\nexport class NgtSectionComponent implements AfterViewInit, OnChanges {\n    @ViewChild('elementRef') public elementRef: ElementRef;\n\n    @Input() public name: string;\n    @Input() public icon: string;\n    @Input() public caption: string;\n    @Input() public subtitle: string;\n    @Input() public accordion: boolean;\n    @Input() public showSection: boolean = true;\n    @Input() public removable: boolean;\n    @Input() public helpTitle: string;\n    @Input() public helpText: string;\n    @Input() public helpIconColor: string;\n    @Input() public isDisabled: boolean;\n\n    @Output() public onRemove: EventEmitter<void> = new EventEmitter();\n    @Output() public onToggleSection: EventEmitter<boolean> = new EventEmitter();\n\n    public ngtSectionStyle: NgtStylizableService;\n    public ngtCaptionStyle: NgtStylizableService;\n    public ngtSubtitleStyle: NgtStylizableService;\n\n    public canDisplay: boolean;\n\n    public readonly isDisabledState: WritableSignal<boolean> = signal(false);\n\n    public constructor(\n        private injector: Injector,\n        private changeDetector: ChangeDetectorRef,\n\n        @Self() @Optional()\n        private ngtStylizableDirective: NgtStylizableDirective,\n\n        @Optional()\n        private ngtAbilityValidationService: NgtAbilityValidationService\n    ) {\n        this.ngtCaptionStyle = new NgtStylizableService();\n        this.ngtSubtitleStyle = new NgtStylizableService();\n\n        if (this.ngtStylizableDirective) {\n            this.ngtSectionStyle = this.ngtStylizableDirective.getNgtStylizableService();\n        } else {\n            this.ngtSectionStyle = new NgtStylizableService();\n        }\n\n        this.ngtSectionStyle.load(this.injector, 'NgtSection', {\n            h: 'h-12',\n            w: 'w-12',\n            my: 'my-1',\n            mb: 'mb-6',\n            pr: 'pr-1',\n            px: 'md:px-5',\n            border: 'border-b-4 md:border-b-0 border-dashed md:border-solid md:border-l',\n            color: {\n                text: 'text-gray-800'\n            }\n        });\n\n        this.ngtCaptionStyle.load(this.injector, 'NgtSectionCaption', {\n            text: 'text-sm',\n            font: 'font-normal',\n            ml: 'ml-2',\n            pb: 'pb-2',\n            border: 'border-none',\n            px: 'px-5',\n            color: {\n                text: 'text-gray-800',\n                border: ''\n            }\n        });\n\n        this.ngtSubtitleStyle.load(this.injector, 'NgtSectionSubtitle', {\n            text: 'text-xs',\n            font: 'font-normal',\n            border: 'border-none',\n            ml: 'ml-2',\n            color: {\n                text: 'text-gray-500',\n                border: ''\n            }\n        });\n    }\n\n    public ngOnChanges(changes: SimpleChanges): void {\n        if (changes.isDisabled) {\n            this.isDisabledState.set(changes.isDisabled.currentValue);\n        }\n    }\n\n    public async ngAfterViewInit(): Promise<void> {\n        if (!this.ngtAbilityValidationService || !this.name) {\n            this.canDisplay = true;\n\n            this.changeDetector.detectChanges();\n        }\n\n        if (this.ngtAbilityValidationService && this.name) {\n            if (this.isDisabled === undefined) {\n                this.isDisabledState.set(\n                    !(await this.ngtAbilityValidationService.isSectionEnabled(this.name))\n                );\n            }\n\n            this.canDisplay = !(await this.ngtAbilityValidationService.isSectionHidden(this.name));\n        }\n\n        this.changeDetector.detectChanges();\n    }\n\n    public open(): void {\n        this.showSection = true;\n\n        this.onToggleSection.emit(this.showSection);\n    }\n\n    public close(): void {\n        this.showSection = false;\n\n        this.onToggleSection.emit(this.showSection);\n    }\n\n    public toggle(): void {\n        this.showSection = !this.showSection;\n\n        this.onToggleSection.emit(this.showSection);\n    }\n\n    public scrollTo(): void {\n        this.elementRef.nativeElement.scrollIntoView({ behavior: \"smooth\" });\n    }\n\n    public remove(event: Event): void {\n        event.stopImmediatePropagation();\n\n        this.onRemove.emit();\n    }\n}\n","<div *ngIf=\"canDisplay\" class=\"flex {{ ngtSectionStyle.compile(['mb']) }}\" #elementRef>\n    <ngt-svg *ngIf=\"icon\" [src]='icon'\n        class=\"hidden md:block {{ ngtSectionStyle.compile(['color.text', 'h', 'w', 'my', 'pr']) }}\">\n    </ngt-svg>\n\n    <div\n        class=\"w-full pb-4 md:pb-0 {{ accordion && !showSection ? 'flex' : '' }} {{ ngtSectionStyle.compile(['border']) }}\">\n        <div *ngIf=\"!accordion && caption\" class=\"flex\">\n            <span class=\"pl-5 {{ ngtCaptionStyle.compile(['color.text', 'color.border', 'text', 'border', 'font']) }}\">\n                {{ caption }}\n            </span>\n\n            <span *ngIf=\"subtitle\"\n                class=\"self-center {{ ngtSubtitleStyle.compile(['color.text', 'color.border', 'text', 'border', 'font', 'ml']) }}\">\n                {{ subtitle }}\n            </span>\n\n            <ngt-helper *ngIf=\"helpText\" [helpTitle]=\"helpTitle\" class=\"ml-1 hover:opacity-100 opacity-100\"\n                [iconColor]=\"helpIconColor\">\n                {{ helpText }}\n            </ngt-helper>\n        </div>\n\n        <ng-container *ngIf=\"accordion\">\n            <div class=\"flex flex-wrap items-center cursor-pointer {{ helpText ? '' : 'hover:opacity-75' }} {{ accordion && showSection ? ngtCaptionStyle.compile(['pb', 'px']) : ngtCaptionStyle.compile(['py', 'px']) }}\"\n                (click)='toggle()' style=\"max-width: fit-content;\">\n                <div *ngIf=\"!showSection\"\n                    class=\"flex {{ ngtCaptionStyle.compile(['color.text', 'color.border', 'text', 'border', 'font']) }}\">\n                    <svg class=\"fill-current\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n                        <path d=\"M2.82 4.59l9.18 9.16 9.18 -9.16 2.82 2.82 -12 12 -12 -12 2.82 -2.82z\" />\n                    </svg>\n                </div>\n\n                <div *ngIf=\"showSection\"\n                    class=\"flex {{ ngtCaptionStyle.compile(['color.text', 'color.border', 'text', 'border', 'font']) }}\">\n                    <svg class=\"fill-current\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n                        <path d=\"M2.82 19.41l9.18 -9.16 9.18 9.16 2.82 -2.82 -12 -12 -12 12 2.82 2.82z\" />\n                    </svg>\n                </div>\n\n                <span [class]=\"ngtCaptionStyle.compile(['color.text', 'color.border', 'text', 'border', 'font', 'ml'])\">\n                    {{ caption }}\n                </span>\n\n                <span *ngIf=\"subtitle\"\n                    [class]=\"ngtSubtitleStyle.compile(['color.text', 'color.border', 'text', 'border', 'font', 'ml'])\">\n                    {{ subtitle }}\n                </span>\n\n                <ngt-helper *ngIf=\"helpText\" [helpTitle]=\"helpTitle\" class=\"ml-1\" [iconColor]=\"helpIconColor\"\n                    class=\"ml-1 hover:opacity-100 opacity-100\">\n                    {{ helpText }}\n                </ngt-helper>\n\n                <div *ngIf=\"removable\"\n                    class=\"flex items-center justify-center h-6 w-6 ml-2 rounded-full hover:bg-red-500 hover:text-white text-gray-600 text-sm\"\n                    (click)='remove($event)'>\n                    <svg class=\"fill-current\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n                        <path\n                            d=\"M4 21.33c0,1.47 1.2,2.67 2.67,2.67l10.66 0c1.47,0 2.67,-1.2 2.67,-2.67l0 -16 -16 0 0 16zm17.33 -20l-4.66 0 -1.34 -1.33 -6.66 0 -1.34 1.33 -4.66 0 0 2.67 18.66 0 0 -2.67z\" />\n                    </svg>\n                </div>\n            </div>\n        </ng-container>\n\n        <div *ngIf='showSection' class=\"{{ ngtSectionStyle.compile(['px', 'pl']) }}\" [@enterAnimation]='!showSection'>\n            <fieldset [disabled]=\"isDisabledState()\" style=\"min-inline-size: 100% !important\">\n                <ng-content></ng-content>\n            </fieldset>\n        </div>\n    </div>\n</div>","import { Component, EventEmitter, Injector, Input, Optional, Self } from '@angular/core';\n\nimport { NgtStylizableDirective } from '../../../directives/ngt-stylizable/ngt-stylizable.directive';\nimport { NgtStylizableService } from '../../../services/ngt-stylizable/ngt-stylizable.service';\n\n@Component({\n    selector: 'ngt-modal-header',\n    templateUrl: './ngt-modal-header.component.html',\n    standalone: false\n})\nexport class NgtModalHeaderComponent {\n    public static onCloseModalByHeader: EventEmitter<void> = new EventEmitter();\n\n    @Input() public disableDefaultCloses: boolean;\n    @Input() public ngtStyle: NgtStylizableService;\n\n    public constructor(\n        private injector: Injector,\n        @Self() @Optional() private tailStylizableDirective: NgtStylizableDirective\n    ) {\n        if (this.tailStylizableDirective) {\n            this.ngtStyle = this.tailStylizableDirective.getNgtStylizableService();\n        } else if (!this.ngtStyle) {\n            this.ngtStyle = new NgtStylizableService();\n        }\n\n        this.ngtStyle.load(this.injector, 'NgtModalHeader', {\n            pb: 'pb-3',\n            color: {}\n        });\n    }\n\n    public emitOnCloseEvent(): void {\n        NgtModalHeaderComponent.onCloseModalByHeader.emit();\n    }\n}\n","<div\n    class=\"flex w-full items-center {{ ngtStyle.compile(['px', 'py', 'pb', 'pt', 'pl', 'pr', 'mx', 'my', 'mb', 'mt', 'ml', 'mr', 'color.bg', 'color.text', 'rounded']) }}\">\n    <ng-content></ng-content>\n\n    <ng-container *ngIf=\"!disableDefaultCloses\">\n        <div class=\"cursor-pointer z-50 absolute right-0 top-0 m-2\" (click)='emitOnCloseEvent()'>\n            <svg class=\"fill-current\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\">\n                <path\n                    d=\"M14.53 4.53l-1.06-1.06L9 7.94 4.53 3.47 3.47 4.53 7.94 9l-4.47 4.47 1.06 1.06L9 10.06l4.47 4.47 1.06-1.06L10.06 9z\">\n                </path>\n            </svg>\n        </div>\n    </ng-container>\n</div>\n","import { AfterViewInit, ChangeDetectorRef, Component, Injector, Input, Optional, Self } from '@angular/core';\nimport { NgtAbilityValidationService } from '../../../services/validation/ngt-ability-validation.service';\nimport { NgtStylizableDirective } from '../../../directives/ngt-stylizable/ngt-stylizable.directive';\nimport { NgtStylizableService } from '../../../services/ngt-stylizable/ngt-stylizable.service';\n\n@Component({\n    selector: 'ngt-modal-body',\n    templateUrl: './ngt-modal-body.component.html',\n    standalone: false\n})\nexport class NgtModalBodyComponent implements AfterViewInit {\n    @Input() public ngtStyle: NgtStylizableService;\n    @Input() public isDisabled: boolean;\n\n    public constructor(\n        private injector: Injector,\n        private changeDetector: ChangeDetectorRef,\n\n        @Self() @Optional()\n        private tailStylizableDirective: NgtStylizableDirective,\n\n        @Optional()\n        private ngtAbilityValidationService: NgtAbilityValidationService\n    ) {\n        if (this.tailStylizableDirective) {\n            this.ngtStyle = this.tailStylizableDirective.getNgtStylizableService();\n        } else if (!this.ngtStyle) {\n            this.ngtStyle = new NgtStylizableService();\n        }\n\n        this.ngtStyle.load(this.injector, 'NgtModalBody', {\n            px: 'px-0',\n            py: 'py-0'\n        });\n    }\n\n    public async ngAfterViewInit(): Promise<void> {\n        if (this.isDisabled === undefined && this.ngtAbilityValidationService) {\n            this.isDisabled = !(await this.ngtAbilityValidationService.hasManagePermission());\n\n            this.changeDetector.detectChanges();\n        }\n    }\n}\n","<div class=\"flex flex-col w-full {{ ngtStyle.compile(['px', 'py']) }}\">\n    <fieldset [disabled]=\"isDisabled\" style=\"min-inline-size: 100% !important\">\n        <ng-content></ng-content>\n    </fieldset>\n</div>","import { Component, Injector, Input, Optional, Self } from '@angular/core';\nimport { NgtStylizableDirective } from '../../../directives/ngt-stylizable/ngt-stylizable.directive';\nimport { NgtStylizableService } from '../../../services/ngt-stylizable/ngt-stylizable.service';\n\n@Component({\n    selector: 'ngt-modal-footer',\n    templateUrl: './ngt-modal-footer.component.html',\n    standalone: false\n})\nexport class NgtModalFooterComponent {\n    @Input() public ngtStyle: NgtStylizableService;\n\n    public constructor(\n        private injector: Injector,\n\n        @Self() @Optional()\n        private tailStylizableDirective: NgtStylizableDirective,\n    ) {\n        if (this.tailStylizableDirective) {\n            this.ngtStyle = this.tailStylizableDirective.getNgtStylizableService();\n        } else if (!this.ngtStyle) {\n            this.ngtStyle = new NgtStylizableService();\n        }\n\n        this.ngtStyle.load(this.injector, 'NgtModalFooter', {\n            px: 'px-0',\n            py: 'py-1'\n        });\n    }\n}\n","<div class=\"flex w-full {{ ngtStyle.compile(['px', 'py']) }}\">\n    <ng-content></ng-content>\n</div>","import { animate, state, style, transition, trigger } from '@angular/animations';\nimport {\n    AfterViewInit,\n    ChangeDetectorRef,\n    Component,\n    computed,\n    EventEmitter,\n    Injector,\n    input,\n    Input,\n    Optional,\n    Output,\n    Self,\n    signal,\n    WritableSignal,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { NgtStylizableDirective } from '../../directives/ngt-stylizable/ngt-stylizable.directive';\nimport { NgtStylizableService } from '../../services/ngt-stylizable/ngt-stylizable.service';\nimport { NgtModalHeaderComponent } from './ngt-modal-header/ngt-modal-header.component';\nimport { NgtAbilityValidationService } from '../../services/validation/ngt-ability-validation.service';\n\n@Component({\n    selector: 'ngt-modal',\n    templateUrl: './ngt-modal.component.html',\n    animations: [\n        trigger('fade', [\n            state('void', style({ opacity: 0 })),\n            transition(':enter, :leave', [\n                animate(300)\n            ])\n        ])\n    ],\n    standalone: false\n})\nexport class NgtModalComponent implements AfterViewInit {\n    @Input() public customLayout: boolean = false;\n    @Input() public disableDefaultCloses: boolean = false;\n    @Input() public ngtStyle: NgtStylizableService;\n\n    @Output() public onCloseModal: EventEmitter<void> = new EventEmitter();\n    @Output() public onOpenModal: EventEmitter<void> = new EventEmitter();\n\n    public readonly isDisabled = input<boolean>();\n    public readonly isDisabledState = computed(() => this.isDisabled() || this.internalDisabledState());\n\n    public isOpen: boolean = false;\n    public viewMode: boolean = false;\n\n    private readonly internalDisabledState: WritableSignal<boolean> = signal(false);\n\n    private keydownEventWasAdded: boolean = false;\n    private subscriptions: Array<Subscription> = [];\n\n    public constructor(\n        private changeDetectorRef: ChangeDetectorRef,\n        private injector: Injector,\n\n        @Self() @Optional()\n        private tailStylizableDirective: NgtStylizableDirective,\n\n        @Optional()\n        private ngtAbilityValidationService: NgtAbilityValidationService\n    ) {\n        if (this.tailStylizableDirective) {\n            this.ngtStyle = this.tailStylizableDirective.getNgtStylizableService();\n        } else if (!this.ngtStyle) {\n            this.ngtStyle = new NgtStylizableService();\n        }\n\n        this.ngtStyle.load(this.injector, 'NgtModal', {\n            w: 'md:max-w-md',\n            py: 'py-4',\n            px: 'px-6',\n            border: 'border border-teal-500',\n            overflow: 'overflow-visible',\n            color: {}\n        });\n    }\n\n    public async ngAfterViewInit(): Promise<void> {\n        if (this.isDisabled() === undefined && this.ngtAbilityValidationService) {\n            this.internalDisabledState.set(\n                !(await this.ngtAbilityValidationService.hasManagePermission())\n            );\n\n            this.changeDetectorRef.detectChanges();\n        }\n    }\n\n    public close() {\n        this.isOpen = false;\n        this.changeDetectorRef.detectChanges();\n\n        this.destroySubscriptions();\n\n        this.onCloseModal.emit();\n    }\n\n    public open() {\n        this.isOpen = true;\n        this.changeDetectorRef.detectChanges();\n\n        this.addKeydownEventListener();\n        this.bindOnCloseModalByHeaderSubscription();\n\n        this.onOpenModal.emit();\n    }\n\n    private addKeydownEventListener() {\n        if (!this.disableDefaultCloses && !this.keydownEventWasAdded) {\n            this.keydownEventWasAdded = true;\n\n            window.addEventListener('keydown', (event: any) => {\n                if (event.keyCode == 27) {\n                    if (this.viewMode) {\n                        this.closeViewMode();\n                        event.stopPropagation();\n                    }\n                }\n            }, true);\n        }\n    }\n\n    private bindOnCloseModalByHeaderSubscription(): void {\n        this.subscriptions.push(\n            NgtModalHeaderComponent.onCloseModalByHeader.subscribe(() => this.close())\n        );\n    }\n\n    private destroySubscriptions(): void {\n        this.subscriptions.forEach(subscription => subscription.unsubscribe());\n\n        this.subscriptions = [];\n    }\n\n    private closeViewMode(): void {\n        this.viewMode = false;\n    }\n}\n","<div class=\"flex min-w-full relative justify-center text-gray-700\">\n    <div *ngIf=\"isOpen\" class=\"flex fixed min-w-full h-full inset-0 px-6 py-6 md:py-0 md:px-0 justify-center\"\n        style=\"background: rgba(0,0,0,.7); z-index: 1100 !important;\" @fade>\n        <ng-container *ngIf=\"!disableDefaultCloses\">\n            <button class=\"fixed inset-0 h-full w-full bg-black opacity-0 cursor-default z-0\" tabindex=\"-1\"\n                type=\"button\" (click)='close()'>\n            </button>\n        </ng-container>\n\n        <div class=\"{{ ngtStyle.compile(['w', 'overflow', 'border', 'rounded']) }} relative bg-white w-full self-center rounded shadow-lg z-10\"\n            style=\"max-height: 85%;\">\n            <div class=\"cursor-default text-left {{ ngtStyle.compile(['py', 'px']) }}\">\n                <div *ngIf=\"!customLayout\">\n                    <ngt-modal-header class=\"w-full\" [disableDefaultCloses]=\"disableDefaultCloses\">\n                        <ng-content select='[header]'></ng-content>\n                    </ngt-modal-header>\n                </div>\n\n                <ng-container *ngIf=\"!customLayout\">\n                    <fieldset [disabled]=\"isDisabledState()\" style=\"min-inline-size: 100% !important\">\n                        <ngt-modal-body [isDisabled]=\"isDisabledState()\">\n                            <ng-content select='[body]'></ng-content>\n                        </ngt-modal-body>\n                    </fieldset>\n                </ng-container>\n\n                <!--Footer-->\n                <ng-container *ngIf=\"!customLayout\">\n                    <ngt-modal-footer>\n                        <ng-content select='[footer]'></ng-content>\n                    </ngt-modal-footer>\n                </ng-container>\n\n                <ng-content></ng-content>\n            </div>\n        </div>\n    </div>\n</div>","import {\n    Component,\n    Injector,\n    Input,\n    OnDestroy,\n    Optional,\n    Self,\n    SkipSelf,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { NgtStylizableDirective } from '../../directives/ngt-stylizable/ngt-stylizable.directive';\nimport { NgtStylizableService } from '../../services/ngt-stylizable/ngt-stylizable.service';\nimport { NgtFormComponent } from '../forms/template-driven/ngt-form/ngt-form.component';\nimport { NgtReactiveFormComponent } from '../forms/reactive/ngt-reactive-form/ngt-reactive-form.component';\nimport { NgtSectionComponent } from '../ngt-section/ngt-section.component';\nimport { NgtModalComponent } from '../ngt-modal/ngt-modal.component';\nimport { NgtModalBodyComponent } from '../ngt-modal/ngt-modal-body/ngt-modal-body.component';\n\n@Component({\n    selector: 'ngt-action',\n    templateUrl: './ngt-action.component.html',\n    standalone: false\n})\nexport class NgtActionComponent implements OnDestroy {\n    @Input() public href: string;\n    @Input() public icon: string;\n    @Input() public ngtStyle: NgtStylizableService;\n    @Input() public isDisabled: boolean;\n    @Input() public forceEnable: boolean;\n\n    private subscriptions: Array<Subscription> = [];\n\n    public constructor(\n        private injector: Injector,\n\n        @Self() @Optional()\n        private ngtStylizableDirective: NgtStylizableDirective,\n\n        @Optional() @SkipSelf()\n        public ngtForm: NgtFormComponent,\n\n        @Optional() @SkipSelf()\n        private ngtReactiveForm: NgtReactiveFormComponent,\n\n        @Optional() @SkipSelf()\n        public ngtSection: NgtSectionComponent,\n\n        @Optional() @SkipSelf()\n        public ngtModal: NgtModalComponent,\n\n        @Optional() @SkipSelf()\n        public ngtModalBody: NgtModalBodyComponent\n    ) {\n        if (this.ngtStylizableDirective) {\n            this.ngtStyle = this.ngtStylizableDirective.getNgtStylizableService();\n        } else {\n            this.ngtStyle = new NgtStylizableService();\n        }\n\n        this.ngtStyle.load(this.injector, 'NgtAction', {\n            h: 'h-full',\n            w: 'w-full',\n            color: {\n                bg: 'bg-gray-500',\n                text: 'text-white',\n                border: '',\n            },\n            text: 'text-sm',\n            border: 'border-0',\n        });\n    }\n\n    public ngOnDestroy() {\n        this.destroySubscriptions();\n    }\n\n    public onClick(event: Event) {\n        if (this.disabled()) {\n            event.stopPropagation();\n        }\n    }\n\n    public disabled(): boolean {\n        return !this.forceEnable && (this.isDisabled || this.isDisabledByParent());\n    }\n\n    private isDisabledByParent(): boolean {\n        return this.ngtForm?.isDisabled\n            || this.ngtReactiveForm?.isDisabledState()\n            || this.ngtSection?.isDisabledState()\n            || this.ngtModal?.isDisabledState();\n    }\n\n    private destroySubscriptions(): void {\n        this.subscriptions.forEach(subscription => subscription.unsubscribe());\n        this.subscriptions = [];\n    }\n}\n","<a *ngIf=\"href\"\n    [class]=\"disabled() ? 'block rounded-full cursor-not-allowed text-gray-600 bg-gray-400 hover:bg-gray-400 opacity-50' : 'cursor-pointer'\"\n    [routerLink]=\"href\" (click)='onClick($event)'>\n    <div\n        class=\"flex justify-center rounded-full {{ ngtStyle.compile(['h', 'w', 'color.bg', 'color.text', 'px', 'py', 'shadow', 'text']) }}\">\n        <ngt-svg [src]=\"icon\" class='self-center' *ngIf=\"icon\">\n        </ngt-svg>\n        <div class=\"self-center\">\n            <ng-content></ng-content>\n        </div>\n    </div>\n</a>\n\n<a *ngIf=\"!href\"\n    [class]=\"disabled() ? 'block rounded-full cursor-not-allowed text-gray-600 bg-gray-400 hover:bg-gray-400 opacity-50' : 'cursor-pointer'\"\n    (click)='onClick($event)'>\n    <div\n        class=\"flex justify-center rounded-full {{ ngtStyle.compile(['h', 'w', 'color.bg', 'color.text', 'px', 'py', 'shadow', 'text', 'border', 'color.border']) }}\">\n        <ngt-svg [src]=\"icon\" class='self-center' *ngIf=\"icon\"></ngt-svg>\n        <div class=\"self-center\">\n            <ng-content></ng-content>\n        </div>\n    </div>\n</a>","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\n\nimport { NgtSvgModule } from '../ngt-svg/ngt-svg.module';\nimport { NgtActionComponent } from './ngt-action.component';\n\n@NgModule({\n    declarations: [NgtActionComponent],\n    exports: [NgtActionComponent],\n    imports: [\n        CommonModule,\n        RouterModule,\n        NgtSvgModule\n    ]\n})\nexport class NgtActionModule { }\n","import { Component, Injector, Input, Optional, Self } from '@angular/core';\n\nimport { NgtStylizableDirective } from '../../directives/ngt-stylizable/ngt-stylizable.directive';\nimport { NgtStylizableService } from '../../services/ngt-stylizable/ngt-stylizable.service';\n\nexport enum NgtShiningWidth {\n    xs = 'xs',\n    sm = 'sm',\n    lg = 'lg',\n    xl = 'xl',\n}\n\n@Component({\n    selector: 'ngt-shining',\n    templateUrl: './ngt-shining.component.html',\n    styleUrls: ['./ngt-shining.component.css'],\n    standalone: false\n})\nexport class NgtShiningComponent {\n    @Input() public shiningWidth: NgtShiningWidth = NgtShiningWidth.xs;\n\n    public ngtStyle: NgtStylizableService;\n\n    public constructor(\n        private injector: Injector,\n        @Self() @Optional() private ngtStylizableDirective: NgtStylizableDirective,\n    ) {\n        if (this.ngtStylizableDirective) {\n            this.ngtStyle = this.ngtStylizableDirective.getNgtStylizableService();\n        } else {\n            this.ngtStyle = new NgtStylizableService();\n        }\n\n        this.ngtStyle.load(this.injector, 'NgtShining', {\n            rounded: 'rounded-none',\n        });\n    }\n}\n","<div class=\"text-center w-full h-full ngt-shining-{{ shiningWidth }} {{ ngtStyle.compile(['rounded']) }}\"></div>","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { NgtShiningComponent } from './ngt-shining.component';\n\n@NgModule({\n    declarations: [NgtShiningComponent],\n    exports: [NgtShiningComponent],\n    imports: [\n        CommonModule\n    ]\n})\nexport class NgtShiningModule { }\n","import { forwardRef, Injector, signal, WritableSignal } from '@angular/core';\nimport { AbstractControl, ControlValueAccessor, NG_VALUE_ACCESSOR, NgControl } from '@angular/forms';\n\nexport abstract class NgtControlValueAccessor implements ControlValueAccessor {\n    public formControl: AbstractControl;\n    public touched: WritableSignal<boolean> = signal(false);\n\n    protected injector: Injector;\n\n    private ignore = '{{{{INITIAL_VALUE_IGNORE}}}}';\n    private _value: WritableSignal<any> = signal(this.ignore);\n\n    public constructor() {\n        this.registerOnTouched(this.onTouched);\n    }\n\n    public get value(): any {\n        return this._value() != this.ignore ? this._value() : null;\n    };\n\n    public set value(v: any) {\n        if (this.hasValueChanges(v, this._value())) {\n            this._value.set(v);\n\n            this.onChange(v);\n\n            if (!this.formControl) {\n                this.formControl = this.getControl();\n            }\n\n            this.formControl?.markAsDirty();\n\n            this.change(v);\n        }\n    }\n\n    public writeValue(value: any): void {\n        if (value == this.ignore || !this.hasValueChanges(value, this._value())) {\n            return;\n        }\n\n        this._value.set(value);\n\n        this.onChange(value);\n        this.change(value);\n    }\n\n    public markAsPristine(): void {\n        this.formControl?.markAsPristine();\n    }\n\n    public markAsDirty(): void {\n        this.formControl?.markAsDirty();\n    }\n\n    public registerOnChange(fn: (_: any) => void): void {\n        this.onChange = fn;\n    }\n\n    public registerOnTouched(fn: () => void): void {\n        this.onTouched = fn;\n    }\n\n    public change(value: any) { };\n\n    public onChange = (_) => { };\n\n    public onTouched = () => {\n        if (!this.formControl) {\n            this.formControl = this.getControl();\n        }\n\n        this.touched.set(true);\n        this.formControl?.markAsTouched();\n    };\n\n    public isValid(): boolean {\n        if (!this.formControl) {\n            this.formControl = this.getControl();\n        }\n\n        if (this.formControl) {\n            this.formControl.markAsDirty();\n\n            return this.formControl.valid;\n        }\n\n        return true;\n    }\n\n    protected getControl(): AbstractControl {\n        try {\n            const ngControl = this.injector.get(NgControl, null);\n\n            return ngControl.control;\n        } catch {\n            return null;\n        }\n    }\n\n    private hasValueChanges(value1: any, value2: any): boolean {\n        return JSON.stringify(value1) != JSON.stringify(value2);\n    }\n}\n\nexport function NgtValueAccessorProvider(component: any) {\n    return {\n        provide: NG_VALUE_ACCESSOR,\n        useExisting: forwardRef(() => component),\n        multi: true,\n    };\n}\n","export function getEnumFromString(string: string, enumClass: any) {\n    if (string && enumClass && enumClass[string.toUpperCase()]) {\n        return enumClass[string.toUpperCase()];\n    }\n\n    throw new Error('Invalid enum [' + string + ']!');\n}\n","import { animate, state, style, transition, trigger } from '@angular/animations';\nimport {\n    AfterViewInit,\n    Component,\n    ElementRef,\n    Host,\n    Injector,\n    Input,\n    OnChanges,\n    OnDestroy,\n    Optional,\n    Renderer2,\n    Self,\n    SimpleChanges,\n    SkipSelf,\n    ViewChild,\n} from '@angular/core';\nimport { ControlContainer, NgForm } from '@angular/forms';\nimport { Subscription } from 'rxjs';\n\nimport { NgtControlValueAccessor, NgtValueAccessorProvider } from '../../../../base/ngt-control-value-accessor';\nimport { NgtStylizableDirective } from '../../../../directives/ngt-stylizable/ngt-stylizable.directive';\nimport { getEnumFromString } from '../../../../helpers/enum/enum';\nimport { NgtStylizableService } from '../../../../services/ngt-stylizable/ngt-stylizable.service';\nimport { NgtFormComponent } from '../ngt-form/ngt-form.component';\nimport { NgtSectionComponent } from '../../../ngt-section/ngt-section.component';\nimport { NgtModalComponent } from '../../../ngt-modal/ngt-modal.component';\n\nexport enum NgtCheckboxMode {\n    DEFAULT = 'DEFAULT',\n    TOGGLE = 'TOGGLE',\n    SIDE_TOGGLE = 'SIDE_TOGGLE',\n    RADIO = 'RADIO'\n}\n\n@Component({\n    selector: 'ngt-checkbox',\n    templateUrl: './ngt-checkbox.component.html',\n    providers: [\n        NgtValueAccessorProvider(NgtCheckboxComponent)\n    ],\n    viewProviders: [\n        { provide: ControlContainer, useExisting: NgForm }\n    ],\n    animations: [\n        trigger('slideLeftToRight', [\n            state('void', style({ transform: 'translateX(-4px) rotate(45deg)', opacity: 0 })),\n            transition(':enter', [\n                animate(200)\n            ])\n        ]),\n        trigger('slideRightToLeft', [\n            state('void', style({ transform: 'translateX(4px) rotate(45deg)', opacity: 0 })),\n            transition(':enter', [\n                animate(200)\n            ])\n        ])\n    ],\n    standalone: false\n})\nexport class NgtCheckboxComponent extends NgtControlValueAccessor implements AfterViewInit, OnChanges, OnDestroy {\n    @ViewChild('element', { static: true }) public element: ElementRef;\n\n    @Input() public label: string;\n    @Input() public shining: boolean = false;\n    @Input() public isDisabled: boolean = false;\n    @Input() public isClickDisabled: boolean = false;\n    @Input() public name: string;\n    @Input() public mode: NgtCheckboxMode = NgtCheckboxMode.DEFAULT;\n    @Input() public helpTitle: string;\n    @Input() public helpTextColor: string = 'text-green-500';\n    @Input() public helpText: string;\n    @Input() public helperAutoXReverse: boolean = true;\n\n    public ngtStyle: NgtStylizableService;\n\n    private subscriptions: Array<Subscription> = [];\n\n    public constructor(\n        private renderer: Renderer2,\n\n        @Optional() @Host()\n        public formContainer: ControlContainer,\n\n        @Self() @Optional()\n        private ngtStylizableDirective: NgtStylizableDirective,\n\n        @Optional() @SkipSelf()\n        private ngtForm: NgtFormComponent,\n\n        @Optional() @SkipSelf()\n        private ngtSection: NgtSectionComponent,\n\n        @Optional() @SkipSelf()\n        private ngtModal: NgtModalComponent,\n\n        protected override injector: Injector,\n    ) {\n        super();\n\n        if (this.ngtStylizableDirective) {\n            this.ngtStyle = this.ngtStylizableDirective.getNgtStylizableService();\n        } else {\n            this.ngtStyle = new NgtStylizableService();\n        }\n\n        this.ngtStyle.load(this.injector, 'NgtCheckbox', {\n            h: 'h-6',\n            w: 'w-6',\n            text: 'text-sm',\n            fontCase: '',\n            color: {\n                bg: 'bg-gray-500',\n                text: 'text-gray-500',\n                border: 'border-gray-500',\n            }\n        });\n    }\n\n    public ngAfterViewInit(): void {\n        this.renderer.listen(this.element.nativeElement, 'change', (value) => {\n            this.onNativeChange(this.element.nativeElement.checked);\n        });\n    }\n\n    public ngOnChanges(changes: SimpleChanges): void {\n        if (changes.mode) {\n            this.mode = getEnumFromString(changes.mode.currentValue, NgtCheckboxMode);\n        }\n    }\n\n    public ngOnDestroy() {\n        this.destroySubscriptions();\n    }\n\n    public change(value) {\n        if (this.hasChangesBetweenModels()) {\n            this.element.nativeElement.checked = value;\n        }\n    }\n\n    public onNativeChange(value) {\n        if (this.hasChangesBetweenModels()) {\n            this.value = value;\n        }\n    }\n\n    public hasChangesBetweenModels() {\n        return this.element.nativeElement.checked !== this.value;\n    }\n\n    public isToggleMode() {\n        return this.mode === NgtCheckboxMode.TOGGLE;\n    }\n\n    public isSideToggleMode(): boolean {\n        return this.mode === NgtCheckboxMode.SIDE_TOGGLE;\n    }\n\n    public isDefaultMode() {\n        return this.mode === NgtCheckboxMode.DEFAULT;\n    }\n\n    public isRadioMode() {\n        return this.mode === NgtCheckboxMode.RADIO;\n    }\n\n    public disabled(): boolean {\n        return this.isDisabled || this.isDisabledByParent();\n    }\n\n    private isDisabledByParent(): boolean {\n        return this.ngtForm?.isDisabled\n            || this.ngtSection?.isDisabledState()\n            || this.ngtModal?.isDisabledState();\n    }\n\n    private destroySubscriptions() {\n        this.subscriptions.forEach(subscription => subscription.unsubscribe());\n        this.subscriptions = [];\n    }\n}\n","<label class=\"flex items-center {{ disabled() ? 'cursor-not-allowed opacity-50' : 'cursor-pointer' }}\"\n    [class.flex-col]='isToggleMode()' style=\"max-width: max-content;\">\n    <input type=\"checkbox\" [name]='name' class=\"hidden\" ([ngModel])='value' [disabled]=\"disabled() || isClickDisabled\"\n        #element>\n\n    <span *ngIf=\"isToggleMode() && label\" class=\"flex\">\n        <span class=\"{{ ngtStyle.compile(['text', 'fontCase']) }} mb-2\">{{ label }}</span>\n\n        <ngt-helper *ngIf=\"helpText\" [helpTitle]=\"helpTitle\" [iconColor]=\"helpTextColor\"\n            [autoXReverse]=\"helperAutoXReverse\" class=\"ml-1\">\n            {{ helpText }}\n        </ngt-helper>\n    </span>\n\n    <ng-container *ngIf=\"isDefaultMode()\">\n        <div style=\"transition: background-color .2s ease-out\" class=\"{{ value ? ngtStyle.compile(['color.bg']) : 'bg-white' }}  {{ ngtStyle.compile(['h', 'w']) }}\n                    shadow rounded border border-gray-400 {{ !shining ? 'flex justify-center' : 'hidden' }}\">\n            <svg class=\"fill-current self-center text-white pointer-events-none\" xmlns=\"http://www.w3.org/2000/svg\"\n                viewBox=\"0 0 20 20\">\n                <path d=\"M0 11l2-2 5 5L18 3l2 2L7 18z\" />\n            </svg>\n        </div>\n    </ng-container>\n\n    <ng-container *ngIf=\"isRadioMode()\">\n        <div style=\"transition: background-color .2s ease-out\"\n            class=\"{{ value ? ngtStyle.compile(['color.border', 'color.text']) : 'border-gray-500' }}\n                    shadow w-6 h-6 rounded-full border-2 border-gray-400 {{ !shining ? 'flex justify-center' : 'hidden' }}\">\n            <svg *ngIf=\"value\" class=\"fill-current self-center h-3\" xmlns=\"http://www.w3.org/2000/svg\"\n                viewBox=\"0 0 29.107 29.107\">\n                <path\n                    d=\"M14.554 0C6.561 0 0 6.562 0 14.552c0 7.996 6.561 14.555 14.554 14.555 7.996 0 14.553-6.559 14.553-14.555C29.106 6.562 22.55 0 14.554 0z\" />\n            </svg>\n        </div>\n    </ng-container>\n\n    <ng-container *ngIf=\"isToggleMode() || isSideToggleMode()\">\n        <div class=\"shadow w-14 h-7 rounded-full border border-gray-400 {{ shining ? 'hidden' : 'flex' }}\"\n            [class.justify-end]=\"value\" style=\"padding: 1px;\">\n            <div *ngIf=\"value\"\n                class=\"flex text-sm text-white {{ ngtStyle.compile(['color.bg']) }} pointer-events-none rounded-full px-1.5 py-2\"\n                @slideLeftToRight>\n                <svg class=\"fill-current self-center\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\">\n                    <path d=\"M0 11l2-2 5 5L18 3l2 2L7 18z\" />\n                </svg>\n            </div>\n\n            <div *ngIf=\"!value\" class=\"flex text-xl text-white bg-gray-300 pointer-events-none rounded-full px-1 py-3\"\n                @slideRightToLeft>\n                <svg class=\"fill-current self-center\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n                    <path class=\"heroicon-ui\"\n                        d=\"M16.24 14.83a1 1 0 0 1-1.41 1.41L12 13.41l-2.83 2.83a1 1 0 0 1-1.41-1.41L10.59 12 7.76 9.17a1 1 0 0 1 1.41-1.41L12 10.59l2.83-2.83a1 1 0 0 1 1.41 1.41L13.41 12l2.83 2.83z\" />\n                </svg>\n            </div>\n        </div>\n    </ng-container>\n\n    <ng-container *ngIf='label && !shining && !isToggleMode()'>\n        <span class=\"{{ ngtStyle.compile(['text', 'fontCase']) }} ml-2\">{{ label }}</span>\n\n        <ngt-helper *ngIf=\"helpText\" [helpTitle]=\"helpTitle\" [iconColor]=\"helpTextColor\"\n            [autoXReverse]=\"helperAutoXReverse\" class=\"ml-1\">\n            {{ helpText }}\n        </ngt-helper>\n    </ng-container>\n</label>\n\n<ng-container *ngIf='shining'>\n    <div class=\"flex\">\n        <ngt-shining class=\"w-16 h-12\"></ngt-shining>\n    </div>\n</ng-container>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { NgtHelperComponent } from '../../../ngt-helper/ngt-helper.component';\nimport { NgtShiningModule } from '../../../ngt-shining/ngt-shining.module';\nimport { NgtCheckboxComponent } from './ngt-checkbox.component';\n\n@NgModule({\n    declarations: [NgtCheckboxComponent],\n    exports: [NgtCheckboxComponent],\n    imports: [\n        CommonModule,\n        NgtShiningModule,\n        NgtHelperComponent,\n    ]\n})\nexport class NgtCheckboxModule { }\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { NgtFormComponent } from './ngt-form.component';\nimport { NgtFormValidationMessageComponent } from './ngt-form-validation-message/ngt-form-validation-message.component';\n\n@NgModule({\n    imports: [\n        CommonModule,\n        NgtFormValidationMessageComponent,\n    ],\n    declarations: [\n        NgtFormComponent,\n    ],\n    exports: [\n        NgtFormComponent,\n        NgtFormValidationMessageComponent\n    ]\n\n})\nexport class NgtFormModule { }\n","import { Component, Input, Optional, SkipSelf } from '@angular/core';\nimport { ControlContainer, FormGroupDirective, UntypedFormControl } from '@angular/forms';\n\nimport { NgtTranslateService } from '../../services/http/ngt-translate.service';\n\n@Component({\n    selector: 'ngt-validation',\n    templateUrl: './ngt-validation.component.html',\n    standalone: false\n})\nexport class NgtValidationComponent {\n    @Input({ required: true }) public control: UntypedFormControl;\n    @Input() public container: ControlContainer;\n    @Input() public minValue: number;\n    @Input() public minLength: number;\n    @Input() public minItems: number;\n\n    public constructor(\n        @Optional()\n        public ngtTranslateService: NgtTranslateService,\n\n        @Optional() @SkipSelf()\n        private formGroup: FormGroupDirective,\n    ) { }\n\n    public get isSubmitted(): boolean {\n        if (this.formGroup) {\n            return this.formGroup.submitted;\n        }\n\n        return this.container?.['submitted'];\n    }\n\n    public get isDirty(): boolean {\n        return this.control?.dirty;\n    }\n\n    public get isTouched(): boolean {\n        return this.control?.touched;\n    }\n\n    public shouldShowError(error: string): boolean {\n        return this.hasError(error) && (this.isTouched || this.isSubmitted);\n    }\n\n    private hasError(error: string): boolean {\n        return this.control?.errors?.[error];\n    }\n}\n","<div type=\"hidden\" class=\"text-xxs text-red-700 font-bold\">\n    @if (shouldShowError('maxlength')) {\n        <span class=\"help-block has-error\">\n            {{ ngtTranslateService.ngtValidationMaxCharactersExceded }}\n        </span>\n    }\n\n    @if (shouldShowError('required')) {\n        <span class=\"help-block has-error\">\n            {{ ngtTranslateService.ngtValidationRequiredField }}\n        </span>\n    }\n\n    @if (shouldShowError('email')) {\n        <span class=\"help-block has-error\">\n            {{ ngtTranslateService.ngtValidationInvalidEmail }}\n        </span>\n    }\n\n    @if (shouldShowError('login')) {\n        <span class=\"help-block has-error\">\n            {{ ngtTranslateService.ngtValidationLogin }}\n        </span>\n    }\n\n    @if (shouldShowError('invalid_password')) {\n        <span class=\"help-block has-error\">\n            {{ ngtTranslateService.ngtValidationInvalidPassword }}\n        </span>\n    }\n\n    @if (shouldShowError('unique')) {\n        <span class=\"help-block has-error\">\n            {{ ngtTranslateService.ngtValidationAlreadyExists }}\n        </span>\n    }\n\n    @if (shouldShowError('cnpj')) {\n        <span class=\"help-block has-error\">\n            {{ ngtTranslateService.ngtValidationInvalidCnpj }}\n        </span>\n    }\n\n    @if (shouldShowError('cpf')) {\n        <span class=\"help-block has-error\">\n            {{ ngtTranslateService.ngtValidationInvalidCpf }}\n        </span>\n    }\n\n    @if (shouldShowError('password')) {\n        <span class=\"help-block has-error\">\n            {{ ngtTranslateService.ngtValidationPasswordRequiredMinCharacters }}\n        </span>\n    }\n\n    @if (shouldShowError('match')) {\n        <span class=\"help-block has-error\">\n            {{ ngtTranslateService.ngtValidationFieldsNotMatch }}\n        </span>\n    }\n\n    @if (shouldShowError('invalidDate')) {\n        <span class=\"help-block has-error\">\n            {{ ngtTranslateService.ngtValidationInvalidDate }}\n        </span>\n    }\n\n    @if (shouldShowError('time')) {\n        <span class=\"help-block has-error\">\n            {{ ngtTranslateService.ngtValidationInvalidPrevision }}\n        </span>\n    }\n\n    @if (shouldShowError('externalServerDependency')) {\n        <span class=\"help-block has-error\">\n            {{ ngtTranslateService.ngtValidationExternalServerUnavailable }}\n        </span>\n    }\n\n    @if (shouldShowError('minValue')) {\n        <span class=\"help-block has-error\">\n            {{ ngtTranslateService.ngtValidationValueMustBeGreaterThan(minValue) }}\n        </span>\n    }\n\n    @if (shouldShowError('minlength')) {\n        @if (minLength) {\n            <span class=\"help-block has-error\">\n                {{ ngtTranslateService.ngtValidationMinLengthField(minLength) }}\n            </span>\n        } @else if (minItems) {\n            <span class=\"help-block has-error\">\n                {{ ngtTranslateService.ngtValidationMinItemsField(minItems) }}\n            </span>\n        }\n    }\n\n    @if (shouldShowError('invalid_custom_validator')) {\n        <span class=\"help-block has-error\">\n            {{ control.errors.invalid_custom_validator }}\n        </span>\n    }\n</div>","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { NgtValidationComponent } from './ngt-validation.component';\n\n@NgModule({\n    declarations: [NgtValidationComponent],\n    exports: [NgtValidationComponent],\n    imports: [\n        CommonModule\n    ]\n})\nexport class NgtValidationModule { }\n","import { ElementRef } from '@angular/core';\nimport Inputmask from 'inputmask/dist/inputmask.es6.js';\n\nexport enum InputMaskEnum {\n    CPF = 'cpf',\n    CNPJ = 'cnpj',\n    CUIT = 'cuit',\n    RUT = 'rut',\n    CPF_CNPJ = 'cnpj-cpf',\n    CPF_CNPJ_RUT = 'cnpj-cpf-rut',\n    DECIMAL = 'decimal',\n    CELLPHONE = 'cellphone',\n    PLATE = 'plate',\n    CEP = 'cep',\n    INTEGER = 'integer',\n    NUMERIC_STRING = 'numeric-string',\n    TIME = 'time',\n    INTERNATIONAL_PHONE = 'international-phone',\n    DATE = 'date'\n}\n\nexport function applyInputMask(element: ElementRef, mask: InputMaskEnum, parameters?: any): void {\n    Inputmask(mask, parameters).mask(element);\n}\n\nexport function removeInputMask(element: ElementRef): void {\n    Inputmask.remove(element);\n}\n","/**\n * Validates a Brazilian CNPJ (Cadastro Nacional da Pessoa Jurídica) number.\n * CNPJ is a unique identifier for companies in Brazil.\n *\n * @param value - The CNPJ value to validate (can include formatting characters)\n * @returns true if the CNPJ is valid, false otherwise\n *\n * @example\n * validateCNPJ('11.222.333/0001-81'); // returns true or false\n * validateCNPJ('11222333000181');     // returns true or false\n */\nexport function validateCNPJ(value: any): boolean {\n    if (!value) {\n        return false;\n    }\n\n    // Validation weights for CNPJ verification digits\n    const weights = [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];\n\n    // Remove non-digit characters\n    const cleanedValue = value.replace(/[^\\d]/g, '');\n\n    // Check if CNPJ has exactly 14 digits\n    if (cleanedValue.length !== 14) {\n        return false;\n    }\n\n    // Check if all digits are the same (invalid CNPJ)\n    if (/^(\\d)\\1{13}$/.test(cleanedValue)) {\n        return false;\n    }\n\n    // Validate first verification digit\n    let sum = 0;\n\n    for (let i = 0; i < 12; i++) {\n        sum += parseInt(cleanedValue[i]) * weights[i + 1];\n    }\n\n    const firstDigit = sum % 11 < 2 ? 0 : 11 - (sum % 11);\n\n    if (parseInt(cleanedValue[12]) !== firstDigit) {\n        return false;\n    }\n\n    // Validate second verification digit\n    sum = 0;\n\n    for (let i = 0; i < 13; i++) {\n        sum += parseInt(cleanedValue[i]) * weights[i];\n    }\n\n    const secondDigit = sum % 11 < 2 ? 0 : 11 - (sum % 11);\n\n    if (parseInt(cleanedValue[13]) !== secondDigit) {\n        return false;\n    }\n\n    return true;\n}\n\n/**\n * Validates a Brazilian CPF (Cadastro de Pessoas Físicas) number.\n * CPF is a unique identifier for individuals in Brazil.\n *\n * @param value - The CPF value to validate (can include formatting characters)\n * @returns true if the CPF is valid, false otherwise\n *\n * @example\n * validateCPF('123.456.789-09'); // returns true or false\n * validateCPF('12345678909');    // returns true or false\n */\nexport function validateCPF(value: any): boolean {\n    if (!value) {\n        return false;\n    }\n\n    // Remove non-digit characters\n    const cleanedValue = value.replace(/[^\\d]/g, '');\n\n    // Check if CPF has exactly 11 digits\n    if (cleanedValue.length !== 11) {\n        return false;\n    }\n\n    // Check if all digits are the same (invalid CPF)\n    if (/^(\\d)\\1{10}$/.test(cleanedValue)) {\n        return false;\n    }\n\n    // Validate first verification digit\n    let sum = 0;\n\n    for (let i = 0; i < 9; i++) {\n        sum += parseInt(cleanedValue[i]) * (10 - i);\n    }\n\n    const firstDigit = sum % 11 < 2 ? 0 : 11 - (sum % 11);\n\n    if (parseInt(cleanedValue[9]) !== firstDigit) {\n        return false;\n    }\n\n    // Validate second verification digit\n    sum = 0;\n\n    for (let i = 0; i < 10; i++) {\n        sum += parseInt(cleanedValue[i]) * (11 - i);\n    }\n\n    const secondDigit = sum % 11 < 2 ? 0 : 11 - (sum % 11);\n\n    if (parseInt(cleanedValue[10]) !== secondDigit) {\n        return false;\n    }\n\n    return true;\n}\n","import {\n    ChangeDetectorRef,\n    Component,\n    ElementRef,\n    EventEmitter,\n    Host,\n    Injector,\n    Input,\n    OnDestroy,\n    OnInit,\n    Optional,\n    Output,\n    Renderer2,\n    Self,\n    SimpleChanges,\n    SkipSelf,\n    TemplateRef,\n    ViewChild,\n} from '@angular/core';\nimport { AbstractControl, AsyncValidatorFn, ControlContainer, NgForm, Validators } from '@angular/forms';\nimport { Subscription } from 'rxjs';\n\nimport { NgtControlValueAccessor, NgtValueAccessorProvider } from '../../../../base/ngt-control-value-accessor';\nimport { NgtStylizableDirective } from '../../../../directives/ngt-stylizable/ngt-stylizable.directive';\nimport { applyInputMask, InputMaskEnum, removeInputMask } from '../../../../helpers/input-mask/input-mask.helper';\nimport {\n    NgtHttpFindExistingResourceInterface,\n    NgtHttpFindExistingResourceResponse,\n    NgtHttpResourceService,\n} from '../../../../services/http/ngt-http-resource.service';\nimport { NgtHttpValidationResponse, NgtHttpValidationService } from '../../../../services/http/ngt-http-validation.service';\nimport { NgtTranslateService } from '../../../../services/http/ngt-translate.service';\nimport { NgtStylizableService } from '../../../../services/ngt-stylizable/ngt-stylizable.service';\nimport { NgtFormComponent } from '../ngt-form/ngt-form.component';\nimport { NgtSectionComponent } from '../../../ngt-section/ngt-section.component';\nimport { NgtModalComponent } from '../../../ngt-modal/ngt-modal.component';\nimport { validateCNPJ, validateCPF } from '../../../../helpers/validators/validation.helper';\n\n@Component({\n    selector: 'ngt-input',\n    templateUrl: './ngt-input.component.html',\n    styleUrls: ['./ngt-input.component.css'],\n    providers: [\n        NgtValueAccessorProvider(NgtInputComponent),\n    ],\n    viewProviders: [\n        { provide: ControlContainer, useExisting: NgForm }\n    ],\n    standalone: false\n})\nexport class NgtInputComponent extends NgtControlValueAccessor implements OnInit, OnDestroy {\n    @ViewChild(\"element\", { static: true }) public element: ElementRef;\n\n    // Visual\n    @Input() public label: string;\n    @Input() public placeholder: string = '';\n    @Input() public shining: boolean;\n    @Input() public loading: boolean;\n    @Input() public helpTitle: string;\n    @Input() public helpTextColor: string = 'text-green-500';\n    @Input() public helpText: string;\n    @Input() public innerLeftIcon: string;\n    @Input() public innerLeftIconColor: string;\n    @Input() public innerRightIcon: string;\n    @Input() public innerRightIconColor: string;\n    @Input() public decimalMaskPrecision: number = 2;\n    @Input() public showCharactersLength: boolean = false;\n    @Input() public uppercase: boolean = false;\n    @Input() public customInnerContentTemplate: TemplateRef<any>;\n    @Input() public helperReverseYPosition: boolean;\n    @Input() public helperAutoXReverse: boolean = true;\n\n    //Behavior\n    @Input() public isDisabled: boolean;\n    @Input() public isReadonly: boolean;\n    @Input() public showRoundedIcon: boolean;\n    @Input() public type: string = 'text';\n    @Input() public name: string;\n    @Input() public mask: string;\n    @Input() public focus: boolean;\n    @Input() public allowClear: boolean;\n    @Input() public jit: boolean;\n    @Input() public useInputEvent: boolean;\n\n    //Validations\n    @Input() public findExistingResource: NgtHttpFindExistingResourceInterface;\n    @Input() public allowPhoneValidation: boolean;\n    @Input() public validatePassword: boolean;\n    @Input() public passwordableId: string;\n    @Input() public passwordPolicyId: string;\n    @Input() public isRequired: boolean;\n    @Input() public uniqueResource: any;\n    @Input() public minValue: number;\n    @Input() public maxValue: number;\n    @Input() public maxLength: number;\n    @Input() public minLength: number;\n    @Input() public match: string;\n    @Input() public multipleOf: number;\n    @Input() public validateMinValueOnMask: boolean;\n    @Input() public externalServerDependency: boolean;\n    @Input() public customValidator: () => AsyncValidatorFn;\n\n    @Output() public onClickLeftIcon: EventEmitter<any> = new EventEmitter<any>();\n    @Output() public onClickRightIcon: EventEmitter<any> = new EventEmitter<any>();\n    @Output() public validatePhoneResult: EventEmitter<any> = new EventEmitter<any>();\n    @Output() public onValueChange: EventEmitter<string | number> = new EventEmitter();\n\n    public maxTotalCharsCount: number;\n    public existingResourceId: string;\n    public componentReady: boolean;\n    public inputProperties: {\n        htmlType?: string;\n        length?: number;\n    } = {};\n\n    public ngtStyle: NgtStylizableService;\n\n    private emailValidatorTimeout: any;\n    private passwordValidatorTimeout: any;\n    private phoneValidatorTimeout: any;\n    private uniqueValidatorTimeout: any;\n    private searchExistingResourceTimeout: any;\n    private subscriptions: Array<Subscription> = [];\n\n    public constructor(\n        private renderer: Renderer2,\n        private changeDetector: ChangeDetectorRef,\n\n        @Self() @Optional()\n        private ngtStylizableDirective: NgtStylizableDirective,\n\n        @Optional() @Host()\n        public formContainer: ControlContainer,\n\n        @Optional() @SkipSelf()\n        private ngtFormComponent: NgtFormComponent,\n\n        @Optional() @SkipSelf()\n        private ngtValidationService: NgtHttpValidationService,\n\n        @Optional() @SkipSelf()\n        private ngtResourceService: NgtHttpResourceService,\n\n        @Optional() @SkipSelf()\n        private ngtForm: NgtFormComponent,\n\n        @Optional() @SkipSelf()\n        private ngtSection: NgtSectionComponent,\n\n        @Optional() @SkipSelf()\n        private ngtModal: NgtModalComponent,\n\n        protected override injector: Injector,\n\n        @Optional()\n        public ngtTranslateService: NgtTranslateService\n    ) {\n        super();\n\n        if (this.ngtFormComponent) {\n            this.shining = this.ngtFormComponent.isShining();\n\n            this.subscriptions.push(\n                this.ngtFormComponent.onShiningChange.subscribe((shining: boolean) => {\n                    this.shining = shining;\n                })\n            );\n        }\n\n        if (this.ngtStylizableDirective) {\n            this.ngtStyle = this.ngtStylizableDirective.getNgtStylizableService();\n        } else {\n            this.ngtStyle = new NgtStylizableService();\n        }\n\n        this.ngtStyle.load(this.injector, 'NgtInput', {\n            h: 'h-12',\n            rounded: 'rounded',\n            text: 'text-sm',\n            font: 'font-normal',\n            color: {\n                border: 'border-gray-400 focus:border-gray-700',\n                bg: 'bg-bg-white focus:bg-white',\n                text: 'text-gray-800'\n            }\n        });\n    }\n\n    public ngOnInit() {\n        if (!this.formContainer) {\n            console.error(\"The element must be inside a <form #form='ngForm'> tag!\", this.element.nativeElement);\n        }\n\n        if (!this.name) {\n            console.error(\"The element must contain a name attribute!\", this.element.nativeElement);\n        } else {\n            setTimeout(() => {\n                this.componentReady = true;\n                this.changeDetector.detectChanges();\n\n                setTimeout(() => {\n                    this.initComponent();\n                    this.changeDetector.detectChanges();\n\n                    if (!this.getElementTitle() || this.getElementTitle() === 'null') {\n                        this.element.nativeElement.parentElement.parentElement.title = '';\n                    }\n\n                    this.changeDetector.detectChanges();\n                });\n            }, 500);\n        }\n    }\n\n    public ngOnChanges(changes: SimpleChanges) {\n        this.setupMasks(changes.mask ? changes.mask.previousValue : null);\n\n        if (changes.match || changes.isRequired || changes.type || changes.mask || changes.minValue) {\n            this.updateValidations();\n        }\n    }\n\n    public ngOnDestroy() {\n        this.destroySubscriptions();\n    }\n\n    public onNativeChange() {\n        if (this.hasChangesBetweenModels()) {\n            this.value = this.removeMasks(this.getNativeValue());\n        }\n    }\n\n    public change(value: any) {\n        if (value && typeof value === 'string' && this.mask == 'decimal') {\n            value = parseFloat(value);\n        }\n\n        if (!this.getNativeValue() || (this.validateMinValueOnMask)) {\n            this.element.nativeElement.value = value ?? '';\n        }\n\n        if (!value && value !== 0) {\n            this.clearInput();\n        }\n\n        let nativeValue = this.getNativeValue();\n\n        if (this.mask) {\n            let ngModelValue = this.removeMasks(nativeValue);\n\n            if (nativeValue && ngModelValue != this.value) {\n                this.value = ngModelValue;\n            }\n\n            if (\n                (this.mask == InputMaskEnum.CELLPHONE || this.mask == InputMaskEnum.INTERNATIONAL_PHONE)\n                && this.allowPhoneValidation && this.value\n            ) {\n                this.validatePhone();\n            }\n        } else {\n            let ngModelValue = this.removeMasks(value);\n\n            if (value && ngModelValue != value) {\n                this.value = ngModelValue;\n            }\n\n            if (this.value != nativeValue) {\n                this.element.nativeElement.value = ngModelValue;\n            }\n        }\n\n        if (this.componentReady) {\n            this.onValueChange.emit(this.value);\n        }\n\n        if (this.ngtResourceService && this.findExistingResource && this.value) {\n            this.searchExistingResource();\n        }\n    }\n\n    public setFocus() {\n        setTimeout(() => {\n            this.element.nativeElement.focus();\n        }, 200);\n    }\n\n    public clearInput(event?: Event) {\n        if (event) {\n            event.stopPropagation();\n        }\n\n        this.element.nativeElement.value = '';\n        this.value = '';\n\n        this.markAsPristine();\n    }\n\n    public restorePlaceholder(): void {\n        setTimeout(() => this.element.nativeElement.placeholder = this.placeholder);\n    }\n\n    public showPassword() {\n        this.element.nativeElement.type = 'text';\n        this.changeDetector.detectChanges();\n    }\n\n    public hidePassword() {\n        this.element.nativeElement.type = 'password';\n        this.changeDetector.detectChanges();\n    }\n\n    public getInputPaddings() {\n        let paddingClass: string = '';\n\n        if (this.innerLeftIcon || this.customInnerContentTemplate) {\n            paddingClass += 'pl-10 pr-4 ';\n        } else {\n            paddingClass += 'px-4 ';\n        }\n\n        if (this.innerRightIcon || this.allowClear || this.type == 'password') {\n            if (this.allowClear && this.value && (this.innerRightIcon || this.type == 'password')) {\n                paddingClass += 'pr-10 ';\n            } else {\n                paddingClass += 'pr-8 ';\n            }\n        }\n\n        return paddingClass;\n    }\n\n    public getRemainingCharacters() {\n        if (this.element?.nativeElement?.value?.length) {\n            if ((this.maxTotalCharsCount - this.element.nativeElement.value.length) > 0) {\n                return this.maxTotalCharsCount - this.element.nativeElement.value.length;\n            } else {\n                return 0;\n            }\n        }\n\n        return this.maxTotalCharsCount;\n    }\n\n    public hasFocus(): boolean {\n        return document.activeElement === this.element.nativeElement;\n    }\n\n    public disabled(): boolean {\n        return this.isDisabled || this.isDisabledByParent();\n    }\n\n    private initComponent() {\n        if (this.formContainer && this.formContainer.control && (this.formControl = this.formContainer.control.get(this.name))) {\n            if (this.focus) {\n                this.setFocus();\n            }\n\n            let watch = \"change\";\n\n            if (this.jit) {\n                watch += \" keyup keydown keypress\";\n            }\n\n            watch.split(' ').forEach((evt) => {\n                this.renderer.listen(this.element.nativeElement, evt, () => {\n                    let nativeValue = this.removeMasks(this.getNativeValue());\n\n                    if (this.value != nativeValue) {\n                        this.value = nativeValue;\n                    }\n                });\n            });\n\n            this.renderer.listen(this.element.nativeElement, \"keydown\", (event) => {\n                if (this.element.nativeElement && this.element.nativeElement.value && this.element.nativeElement.value.length >= this.maxLength) {\n                    // Backspace and delete\n                    if (event.keyCode != 8 && event.keyCode != 46) {\n                        event.preventDefault();\n\n                        return false;\n                    }\n                }\n            });\n\n            this.maxTotalCharsCount = this.maxLength;\n            this.updateValidations();\n\n            if (this.match) {\n                this.renderer.listen(this.element.nativeElement, \"keypress\", () => {\n                    this.matchValidator();\n                });\n            }\n\n            if (this.value) {\n                this.formControl.markAsDirty();\n            } else {\n                this.formControl.markAsPristine();\n            }\n        }\n\n        this.setupProperties();\n    }\n\n    private updateValidations() {\n        if (!this.formControl) {\n            return;\n        }\n\n        const syncValidators = [];\n\n        if (this.type == 'email') {\n            syncValidators.push(Validators.email);\n        }\n\n        if (this.isRequired) {\n            syncValidators.push(Validators.required);\n        }\n\n        if (this.maxLength) {\n            syncValidators.push(Validators.maxLength(this.maxLength));\n        }\n\n        if (this.minLength) {\n            syncValidators.push(Validators.minLength(this.minLength));\n        }\n\n        if (this.mask == 'cnpj-cpf' || this.mask == 'cnpj-cpf-rut' || this.mask == 'cpf') {\n            syncValidators.push(this.cnpjCpfValidator());\n        }\n\n        if (this.mask == 'time') {\n            syncValidators.push(this.timeValidator());\n        }\n\n        if (this.match) {\n            syncValidators.push(this.matchValidator());\n        }\n\n        if (this.minValue !== undefined) {\n            syncValidators.push(this.minValueValidator());\n        }\n\n        if (this.multipleOf) {\n            syncValidators.push(this.multipleOfValidator());\n        }\n\n        if (this.externalServerDependency) {\n            syncValidators.push(this.externalServerDependencyValidator());\n        }\n\n        setTimeout(() => {\n            this.formControl.setValidators(syncValidators);\n\n            const asyncValidators = [];\n\n            if (this.uniqueResource) {\n                asyncValidators.push(this.uniqueValidator());\n            }\n\n            if (this.type == 'email' && this.hasEmailServiceValidation()) {\n                asyncValidators.push(this.emailValidator());\n            }\n\n            if (this.type == 'login' && this.hasEmailServiceValidation()) {\n                asyncValidators.push(this.emailValidator(true));\n            }\n\n            if (this.type == 'password' && this.validatePassword && this.hasPasswordValidation()) {\n                asyncValidators.push(this.passwordValidator());\n            }\n\n            if (this.customValidator) {\n                asyncValidators.push(this.customValidator());\n            }\n\n            this.formControl.setAsyncValidators(asyncValidators);\n            this.formControl.updateValueAndValidity();\n        });\n    }\n\n    private setupMasks(previousMask?: string) {\n        if (this.mask != previousMask && !this.mask) {\n            removeInputMask(this.element.nativeElement);\n\n            return this.clearInput();\n        }\n\n        let masks = {\n            [InputMaskEnum.CPF]: {\n                mask: ['999.999.999-99'],\n                showMaskOnHover: false\n            },\n            [InputMaskEnum.CNPJ]: {\n                mask: ['99.999.999/9999-99'],\n                showMaskOnHover: false\n            },\n            [InputMaskEnum.CUIT]: {\n                mask: ['99-99999999-9'],\n                clearMaskOnLostFocus: false\n            },\n            [InputMaskEnum.RUT]: {\n                mask: ['999999999999'],\n                clearMaskOnLostFocus: false\n            },\n            [InputMaskEnum.CPF_CNPJ_RUT]: {\n                mask: ['999.999.999-99', '999999999999', '99.999.999/9999-99'],\n                keepStatic: true,\n                showMaskOnHover: false\n            },\n            [InputMaskEnum.CPF_CNPJ]: {\n                mask: ['999.999.999-99', '99.999.999/9999-99'],\n                keepStatic: true,\n                showMaskOnHover: false\n            },\n            [InputMaskEnum.DECIMAL]: {\n                digits: this.decimalMaskPrecision,\n                groupSeparator: '.',\n                radixPoint: ',',\n                autoGroup: true,\n                repeat: 16,\n                rightAlign: false,\n                max: this.maxValue,\n                showMaskOnHover: false\n            },\n            [InputMaskEnum.CELLPHONE]: {\n                mask: ['(99) 999-999', '(99) 9999-9999', '(99) 99999-9999'],\n                keepStatic: true,\n                showMaskOnHover: false\n            },\n            [InputMaskEnum.INTERNATIONAL_PHONE]: {\n                mask: ['+999 99 999-999', '+99 (99) 9999-9999', '+99 (99) 99999-9999', '+999 (99) 9999-9999', '+999 (99) 99999-9999'],\n                keepStatic: true,\n                showMaskOnHover: false\n            },\n            [InputMaskEnum.PLATE]: {\n                mask: ['AAA-9&99'],\n                keepStatic: true,\n                showMaskOnHover: false\n            },\n            [InputMaskEnum.CEP]: {\n                mask: ['99999-999'],\n                showMaskOnHover: false\n            },\n            [InputMaskEnum.INTEGER]: {\n                max: this.maxValue,\n                min: this.validateMinValueOnMask ? this.minValue : undefined,\n                rightAlign: false,\n                showMaskOnHover: false\n            },\n            [InputMaskEnum.NUMERIC_STRING]: {\n                regex: \"[0-9]*\",\n                showMaskOnHover: false\n            },\n            [InputMaskEnum.TIME]: '99:99',\n        };\n\n        if (this.mask == InputMaskEnum.DECIMAL) {\n            applyInputMask(this.element.nativeElement, InputMaskEnum.DECIMAL, masks[this.mask]);\n        } else if (this.mask == InputMaskEnum.INTEGER) {\n            applyInputMask(this.element.nativeElement, InputMaskEnum.INTEGER, masks[this.mask]);\n        } else {\n            applyInputMask(this.element.nativeElement, masks[this.mask]);\n        }\n    }\n\n    private setupProperties() {\n        let props = {\n            shortText: {\n                htmlType: \"text\",\n                length: 30\n            },\n            text: {\n                htmlType: \"text\",\n                length: 100\n            },\n            longText: {\n                htmlType: \"text\",\n                length: 150\n            },\n            extraLongText: {\n                htmlType: \"text\",\n                length: 300\n            },\n            customText: {\n                htmlType: \"text\",\n                length: this.maxLength\n            },\n            password: {\n                htmlType: \"password\",\n                length: 150\n            },\n            email: {\n                htmlType: \"text\",\n                length: 100,\n            },\n            decimal: {\n                htmlType: \"text\",\n                length: 9,\n            }\n        };\n\n        if (this.type in props) {\n            this.inputProperties = props[this.type];\n            this.maxLength = this.inputProperties.length;\n        } else {\n            console.warn(\"Type [\" + this.type + \"] is not a valid tail-form-input type!\", this.element.nativeElement);\n        }\n    }\n\n    private minValueValidator() {\n        return (control: AbstractControl) => parseFloat(control.value) < this.minValue ? { 'minValue': true } : null;\n    }\n\n    private multipleOfValidator() {\n        return (control: AbstractControl) => {\n            if (control.value) {\n                return (control.value % this.multipleOf !== 0) ? { 'multipleOf': true } : null;\n            }\n        };\n    }\n\n    private externalServerDependencyValidator() {\n        // TODO: Validar tempo de requisição\n        return (control: AbstractControl) => !control.value ? { 'externalServerDependency': true } : null;\n    }\n\n    private timeValidator() {\n        const regexExp = new RegExp('^(0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$');\n\n        return (control: AbstractControl) => {\n            if (control.value) {\n                if (regexExp.test(control.value)) {\n                    return null;\n                } else {\n                    return { 'time': true };\n                }\n            }\n        };\n    }\n\n    private cnpjCpfValidator() {\n        return (control: AbstractControl) => {\n            if (!control.value) {\n                return null;\n            }\n\n            if (control.value && control.value.length <= 11) {\n                if (validateCPF(control.value)) {\n                    return null;\n                } else {\n                    return { 'cpf': true };\n                }\n            } else if (control.value && control.value.length == 12) {\n                return null;\n            } else {\n                if (control.value && validateCNPJ(control.value)) {\n                    return null;\n                } else {\n                    return { 'cnpj': true };\n                }\n            }\n        };\n    }\n\n    private matchValidator() {\n        return (control: AbstractControl) => {\n            if (this.value != this.match) {\n                return { 'match': true };\n            } else {\n                return null;\n            }\n        };\n    }\n\n    private emailValidator(isLoginValidation: boolean = false): AsyncValidatorFn {\n        return (control: AbstractControl) => {\n            if (this.emailValidatorTimeout) {\n                clearTimeout(this.emailValidatorTimeout);\n            }\n\n            if (this.value) {\n                return new Promise((resolve) => {\n                    this.emailValidatorTimeout = setTimeout(() => {\n                        this.loading = true;\n\n                        this.ngtValidationService.emailValidation(this.value)\n                            .then((response: NgtHttpValidationResponse) => {\n                                this.loading = false;\n\n                                if (isLoginValidation) {\n                                    resolve(response.valid ? { 'login': true } : null);\n                                }\n\n                                resolve(response.valid ? null : { 'email': true });\n                            })\n                            .catch(() => {\n                                this.loading = false;\n                                resolve(null);\n                            });\n                    }, 500);\n                });\n            }\n\n            return Promise.resolve(null);\n        };\n    }\n\n    private passwordValidator(): AsyncValidatorFn {\n        return (control: AbstractControl) => {\n            if (this.passwordValidatorTimeout) {\n                clearTimeout(this.passwordValidatorTimeout);\n            }\n\n            if (this.value) {\n                return new Promise((resolve) => {\n                    this.passwordValidatorTimeout = setTimeout(() => {\n                        this.loading = true;\n\n                        this.ngtValidationService.passwordValidation(this.value, this.passwordableId, this.passwordPolicyId)\n                            .then((response: NgtHttpValidationResponse) => {\n                                this.loading = false;\n\n                                resolve(response.valid ? null : { 'invalid_password': true });\n                            })\n                            .catch(() => {\n                                this.loading = false;\n\n                                resolve(null);\n                            });\n                    }, 500);\n                });\n            }\n\n            return Promise.resolve(null);\n        };\n    }\n\n    private async searchExistingResource(): Promise<void> {\n        if (this.searchExistingResourceTimeout) {\n            clearTimeout(this.searchExistingResourceTimeout);\n        }\n\n        this.searchExistingResourceTimeout = setTimeout(() => {\n            this.loading = true;\n            this.findExistingResource.value = this.value;\n\n            this.ngtResourceService.findExisting(this.findExistingResource)\n                .then((response: NgtHttpFindExistingResourceResponse) => this.existingResourceId = response.id)\n                .catch(() => this.existingResourceId = null)\n                .finally(() => this.loading = false);\n        }, 500);\n    }\n\n    private async validatePhone(): Promise<void> {\n        if (this.phoneValidatorTimeout) {\n            clearTimeout(this.phoneValidatorTimeout);\n        }\n\n        this.phoneValidatorTimeout = setTimeout(() => {\n            this.loading = true;\n\n            this.ngtValidationService.phoneValidation(this.value)\n                .then((response: any) => this.validatePhoneResult.emit(response))\n                .finally(() => this.loading = false);\n        });\n    }\n\n    private uniqueValidator(): AsyncValidatorFn {\n        if (!this.ngtValidationService) {\n            throw new Error(\"In order to use unique validation you must provide a implementation for NgtHttpValidationService class!\");\n        }\n\n        return (control: AbstractControl) => {\n            if (this.uniqueValidatorTimeout) {\n                clearTimeout(this.uniqueValidatorTimeout);\n            }\n\n            if (this.value && this.uniqueResource) {\n                return new Promise((resolve) => {\n                    this.uniqueValidatorTimeout = setTimeout(() => {\n                        this.loading = true;\n\n                        this.ngtValidationService.unique(this.uniqueResource, this.value).then((response: NgtHttpValidationResponse) => {\n                            this.loading = false;\n\n                            resolve(response.valid ? null : { 'unique': true });\n                        }).catch(() => {\n                            this.loading = false;\n                            resolve(null);\n                        });\n                    }, 500);\n                });\n            }\n\n            return Promise.resolve(null);\n        };\n    }\n\n    private getNativeValue() {\n        return this.element.nativeElement.value;\n    }\n\n    private getElementTitle(): string {\n        return this.element.nativeElement.parentElement.parentElement.title;\n    }\n\n    private removeMasks(value: string) {\n        if (this.mask == \"decimal\") {\n            value = (value + \"\")\n                .replace(/\\./g, '')\n                .replace(',', '.');\n        } else if (this.mask == \"cnpj-cpf\" || this.mask == \"cpf\" || this.mask == \"cnpj\" || this.mask == \"cnpj-cpf-rut\" || this.mask == \"cuit\") {\n            value = (value + \"\")\n                .replace(/[^\\d]/g, '');\n        } else if (\n            this.mask == InputMaskEnum.CELLPHONE\n            || this.mask == InputMaskEnum.INTERNATIONAL_PHONE\n        ) {\n            value = (value + \"\")\n                .replace('(', '')\n                .replace(')', '')\n                .replace(' ', '')\n                .replace(' ', '')\n                .replace('-', '')\n                .replace('+', '');\n        }\n\n        return value;\n    }\n\n    private hasEmailServiceValidation(): boolean {\n        return typeof this.ngtValidationService?.emailValidation === 'function';\n    }\n\n    private hasPasswordValidation(): boolean {\n        return typeof this.ngtValidationService?.passwordValidation === 'function';\n    }\n\n    private isDisabledByParent(): boolean {\n        return this.ngtForm?.isDisabled\n            || this.ngtSection?.isDisabledState()\n            || this.ngtModal?.isDisabledState();\n    }\n\n    private hasChangesBetweenModels(): boolean {\n        return this.removeMasks(this.getNativeValue()) !== this.value;\n    }\n\n    private destroySubscriptions() {\n        this.subscriptions.forEach(subscription => subscription.unsubscribe());\n        this.subscriptions = [];\n    }\n}\n","<label *ngIf=\"label\" class=\"mb-2 flex {{ ngtStyle.compile(['color.text', 'text', 'font']) }}\" [hidden]='shining'>\n    <span class=\"truncate\" [title]=\"label\">\n        {{ label }}:\n    </span>\n\n    <span *ngIf=\"isRequired\" class=\"text-red-500 font-bold text-md ml-1\">*</span>\n\n    <ngt-helper *ngIf=\"helpText\" [helpTitle]=\"helpTitle\" [iconColor]=\"helpTextColor\"\n        [helperReverseYPosition]=\"helperReverseYPosition\" [autoXReverse]=\"helperAutoXReverse\" class=\"ml-1\">\n        <span [innerHtml]=\"helpText\"></span>\n    </ngt-helper>\n</label>\n\n<div class=\"{{ shining ? 'hidden' : 'flex relative'}}\">\n    <input autocomplete=\"new-password\"\n        class=\"flex border appearance-none focus:outline-none leading-tight w-full {{ getInputPaddings() }} {{ ngtStyle.compile(['h', 'text', 'color.border', 'color.bg', 'color.text', 'rounded', 'cursor']) }}\"\n        [disabled]=\"disabled()\" [readonly]=\"isReadonly || loading\" [placeholder]=\"placeholder\"\n        [style]=\"uppercase ? 'text-transform: uppercase!important':''\"\n        [ngClass]=\"{'input-has-error border-red-700': formControl?.errors && (formControl?.dirty || (formContainer && formContainer['submitted']))}\"\n        [attr.type]=\"inputProperties.htmlType\" (mouseleave)=\"restorePlaceholder()\" (focusout)=\"restorePlaceholder()\"\n        (input)=\"useInputEvent ? onNativeChange() : null\" (change)=\"!useInputEvent ? onNativeChange() : null\" #element>\n    <span *ngIf=\"innerLeftIcon\"\n        class=\"absolute self-center px-2 {{ innerLeftIconColor }} {{ onClickLeftIcon ? 'cursor-pointer' : '' }}\"\n        (click)=\"onClickLeftIcon.emit()\">\n\n        <ngt-svg *ngIf=\"!showRoundedIcon\" class=\"text-xs fill-current\" [src]='innerLeftIcon'></ngt-svg>\n        <img *ngIf=\"showRoundedIcon\" class=\"rounded-full h-4\" [src]='innerLeftIcon'>\n    </span>\n\n    <div *ngIf=\"customInnerContentTemplate\" class=\"absolute self-center px-2\">\n        <ng-container [ngTemplateOutlet]=\"customInnerContentTemplate\"></ng-container>\n    </div>\n\n    <div class=\"flex absolute h-full justify-end right-0 w-auto\">\n        <span *ngIf=\"!disabled() && allowClear && value && !loading\"\n            class=\"self-center right-0 px-2 text-red-400 cursor-pointer\" (click)='clearInput($event)'>\n            <svg class=\"fill-current self-center\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n                <path\n                    d=\"M19.1 17.2l-5.3-5.3 5.3-5.3-1.8-1.8-5.3 5.4-5.3-5.3-1.8 1.7 5.3 5.3-5.3 5.3L6.7 19l5.3-5.3 5.3 5.3 1.8-1.8z\" />\n            </svg>\n        </span>\n\n        <span *ngIf=\"loading\" class=\"self-center right-0 px-2 text-gray-500\">\n            <div class=\"div-loader\"></div>\n        </span>\n\n        <span *ngIf=\"type == 'password' && value\" class=\"self-center px-2 cursor-pointer\">\n            <svg *ngIf=\"element.type == 'password'\" class=\"fill-current\" xmlns=\"http://www.w3.org/2000/svg\"\n                viewBox=\"0 0 20 20\" (click)='showPassword()'>\n                <path\n                    d=\"M.2 10a11 11 0 0 1 19.6 0A11 11 0 0 1 .2 10zm9.8 4a4 4 0 1 0 0-8 4 4 0 0 0 0 8zm0-2a2 2 0 1 1 0-4 2 2 0 0 1 0 4z\" />\n            </svg>\n\n            <svg *ngIf=\"element.type == 'text'\" class=\"fill-current\" xmlns=\"http://www.w3.org/2000/svg\"\n                viewBox=\"0 0 20 20\" (click)='hidePassword()'>\n                <path\n                    d=\"M12.81 4.36l-1.77 1.78a4 4 0 0 0-4.9 4.9l-2.76 2.75C2.06 12.79.96 11.49.2 10a11 11 0 0 1 12.6-5.64zm3.8 1.85c1.33 1 2.43 2.3 3.2 3.79a11 11 0 0 1-12.62 5.64l1.77-1.78a4 4 0 0 0 4.9-4.9l2.76-2.75zm-.25-3.99l1.42 1.42L3.64 17.78l-1.42-1.42L16.36 2.22z\" />\n            </svg>\n        </span>\n\n        <span *ngIf=\"innerRightIcon && type != 'password'\"\n            class=\"self-center px-2 {{ innerRightIconColor }}  {{ onClickRightIcon ? 'cursor-pointer' : '' }}\"\n            (click)=\"onClickRightIcon.emit()\">\n            <ngt-svg class=\"text-xxs fill-current\" [src]='innerRightIcon'></ngt-svg>\n        </span>\n    </div>\n</div>\n\n<ng-container *ngIf=\"showCharactersLength && maxTotalCharsCount && !shining\">\n    <p class=\"text-xxs mt-1\">\n        {{ ngtTranslateService.ngtTextAreaRemainingCharacters }}:\n        <span class=\"font-semibold\">{{ getRemainingCharacters() }}</span>\n    </p>\n</ng-container>\n\n<ng-container *ngIf='shining'>\n    <div class=\"flex\">\n        <ngt-shining class=\"{{ ngtStyle.compile(['h']) }} w-full\"></ngt-shining>\n    </div>\n</ng-container>\n\n<input *ngIf='componentReady' type=\"hidden\" [ngModel]=\"value\" [name]=\"name\" [value]=\"value\">\n\n<ng-content></ng-content>\n\n<ngt-validation [control]=\"formControl\" [container]=\"formContainer\" [minValue]='minValue' [minLength]='minLength'>\n</ngt-validation>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { NgtFormModule } from '../ngt-form/ngt-form.module';\nimport { NgtHelperComponent } from '../../../ngt-helper/ngt-helper.component';\nimport { NgtShiningModule } from '../../../ngt-shining/ngt-shining.module';\nimport { NgtSvgModule } from '../../../ngt-svg/ngt-svg.module';\nimport { NgtValidationModule } from '../../../ngt-validation/ngt-validation.module';\nimport { NgtInputComponent } from './ngt-input.component';\n\n@NgModule({\n    declarations: [NgtInputComponent],\n    exports: [NgtInputComponent],\n    imports: [\n        CommonModule,\n        FormsModule,\n        ReactiveFormsModule,\n        NgtValidationModule,\n        NgtShiningModule,\n        NgtSvgModule,\n        NgtFormModule,\n        NgtHelperComponent\n    ]\n})\nexport class NgtInputModule { }\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { NgtModalBodyComponent } from './ngt-modal-body/ngt-modal-body.component';\nimport { NgtModalFooterComponent } from './ngt-modal-footer/ngt-modal-footer.component';\nimport { NgtModalHeaderComponent } from './ngt-modal-header/ngt-modal-header.component';\nimport { NgtModalComponent } from './ngt-modal.component';\n\n@NgModule({\n    declarations: [\n        NgtModalComponent,\n        NgtModalHeaderComponent,\n        NgtModalBodyComponent,\n        NgtModalFooterComponent\n    ],\n    exports: [\n        NgtModalComponent,\n        NgtModalHeaderComponent,\n        NgtModalBodyComponent,\n        NgtModalFooterComponent\n    ],\n    imports: [\n        CommonModule\n    ]\n})\nexport class NgtModalModule { }\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n    selector: '[ngt-select-option]',\n    standalone: false\n})\nexport class NgtSelectOptionTmp {\n    public constructor(public template: TemplateRef<any>) { }\n}\n\n@Directive({\n    selector: '[ngt-select-option-selected]',\n    standalone: false\n})\nexport class NgtSelectOptionSelectedTmp {\n    public constructor(public template: TemplateRef<any>) { }\n}\n\n@Directive({\n    selector: '[ngt-select-header]',\n    standalone: false\n})\nexport class NgtSelectHeaderTmp {\n    public constructor(public template: TemplateRef<any>) { }\n}\n","export function delay(ms: number) {\n    return new Promise(resolve => setTimeout(resolve, ms));\n}\n","import {\n    ChangeDetectorRef,\n    Component,\n    ContentChild,\n    DoCheck,\n    EventEmitter,\n    Host,\n    Injector,\n    Input,\n    OnChanges,\n    OnDestroy,\n    OnInit,\n    Optional,\n    Output,\n    Self,\n    SimpleChanges,\n    SkipSelf,\n    TemplateRef,\n    ViewChild,\n    ViewEncapsulation,\n} from '@angular/core';\nimport { AbstractControl, ControlContainer, NgForm } from '@angular/forms';\nimport { DropdownPosition, NgOption, NgSelectComponent } from '@ng-select/ng-select';\nimport { Observable, Observer, Subject, Subscription } from 'rxjs';\n\nimport { NgtControlValueAccessor, NgtValueAccessorProvider } from '../../../../base/ngt-control-value-accessor';\nimport { NgtStylizableDirective } from '../../../../directives/ngt-stylizable/ngt-stylizable.directive';\nimport { getEnumFromString } from '../../../../helpers/enum/enum';\nimport { uuid } from '../../../../helpers/uuid';\nimport { NgtHttpResponse, NgtHttpService } from '../../../../services/http/ngt-http.service';\nimport { NgtTranslateService } from '../../../../services/http/ngt-translate.service';\nimport { NgtStylizableService } from '../../../../services/ngt-stylizable/ngt-stylizable.service';\nimport { NgtFormComponent } from '../ngt-form/ngt-form.component';\nimport { NgtSectionComponent } from '../../../ngt-section/ngt-section.component';\nimport { NgtSelectHeaderTmp, NgtSelectOptionSelectedTmp, NgtSelectOptionTmp } from './ngt-select.directive';\nimport { NgtModalComponent } from '../../../ngt-modal/ngt-modal.component';\nimport { delay } from '../../../../helpers/promise/promise-helper';\n\nexport enum NgtSelectDropdownPanelHeight {\n    AUTO = 'auto',\n    XS = 'xs',\n    MD = 'md',\n    SM = 'sm',\n    LG = 'lg',\n    XL = 'xl'\n}\n\n@Component({\n    selector: 'ngt-select',\n    templateUrl: './ngt-select.component.html',\n    styleUrls: ['./ngt-select.component.css'],\n    providers: [\n        NgtValueAccessorProvider(NgtSelectComponent)\n    ],\n    viewProviders: [\n        { provide: ControlContainer, useExisting: NgForm }\n    ],\n    encapsulation: ViewEncapsulation.None,\n    standalone: false\n})\nexport class NgtSelectComponent extends NgtControlValueAccessor implements OnChanges, OnDestroy, OnInit, DoCheck {\n    @ViewChild(NgSelectComponent, { static: true }) public ngSelectComponent: NgSelectComponent;\n    @ContentChild(NgtSelectOptionTmp, { read: TemplateRef }) public ngtOptionTemplate: TemplateRef<any>;\n    @ContentChild(NgtSelectOptionSelectedTmp, { read: TemplateRef }) public ngtOptionSelectedTemplate: TemplateRef<any>;\n    @ContentChild(NgtSelectHeaderTmp, { read: TemplateRef }) public ngtSelectHeaderTemplate: TemplateRef<any>;\n\n    /** Visual */\n    @Input() public label: string = '';\n    @Input() public labelIcon: string;\n    @Input() public labelIconColor: string;\n    @Input() public helpTitle: string;\n    @Input() public helpText: string;\n    @Input() public helpTextColor: string = 'text-green-500';\n    @Input() public shining = false;\n    @Input() public loading: boolean = false;\n    @Input() public loadingText: string = '';\n    @Input() public notFoundText: string = '';\n    @Input() public dropdownPosition = 'auto';\n    @Input() public typeToSearchText: string = '';\n    @Input() public clearAllTooltip: string = '';\n    @Input() public placeholder: string = '';\n    @Input() public createText: string = '';\n    @Input() public labelForId: string = '';\n    @Input() public dropdownPanelMinHeight: NgtSelectDropdownPanelHeight = NgtSelectDropdownPanelHeight.AUTO;\n    @Input() public helperReverseYPosition: boolean;\n    @Input() public helperAutoXReverse: boolean = true;\n\n    /** Behavior */\n    @Input() public name: string;\n    @Input() public autoLoad: boolean;\n    @Input() public allowCreate: boolean | Promise<any> | Function = false;\n    @Input() public allowOriginalItemsUnselect: boolean = true;\n    @Input() public isDisabled: boolean = false;\n    @Input() public isReadonly: boolean = false;\n    @Input() public remoteResource: any;\n    @Input() public hideSelected: boolean;\n    @Input() public bindLabel: string = 'name';\n    @Input() public bindValue: string;\n    @Input() public items: Array<any> | Observable<any> = [];\n    @Input() public inputAttrs: { [key: string]: string };\n    @Input() public closeOnSelect: boolean = true;\n    @Input() public clearable: boolean = true;\n    @Input() public groupBy: string | Function = null;\n    @Input() public maxSelectedItems: number;\n    @Input() public multiple: boolean = false;\n    @Input() public searchable: boolean = true;\n    @Input() public clearSearchOnAdd: boolean = true;\n    @Input() public virtualScroll: boolean = true;\n    @Input() public tabIndex: number;\n    @Input() public typeahead: Subject<any>;\n    @Input() public guessCompareWith: boolean = true;\n    @Input() public autoSelectUniqueOption: boolean = false;\n    @Input() public groupValue: (groupKey: string, cildren: any[]) => Object;\n    @Input() public trackBy: (item: any) => any;\n    @Input() public sortSelectedItemsFn: (a: any, b: any) => any;\n    @Input() public isAllowedToRemoveFn: (a: any) => boolean;\n\n    /** Validation */\n    @Input() public isRequired: boolean = false;\n\n    @Output() public onLoadRemoteResource: EventEmitter<any> = new EventEmitter<any>();\n    @Output() public onSelectedItemRemove: EventEmitter<any> = new EventEmitter<any>();\n    @Output() public onClear: EventEmitter<void> = new EventEmitter<void>();\n    @Output() public onClose: EventEmitter<void> = new EventEmitter<void>();\n\n    public nativeName = uuid();\n    public ngtStyle: NgtStylizableService;\n    public ngSelectItems: any;\n    public nativeValue: any;\n    public componentReady: boolean = false;\n    public wasClicked: boolean;\n\n    private ngSearchObserver: Observer<any>;\n    private originalPerPage = 15;\n    private subscriptions: Array<Subscription> = [];\n    private originalItems: Array<any>;\n\n    private currentState = {\n        filters: {},\n        sort: {\n            field: '',\n            direction: ''\n        },\n        pagination: {\n            count: null,\n            page: 1,\n            pages: null,\n            total: null,\n            from: null,\n            to: null,\n            per_page: null\n        }\n    };\n\n    private searchTimeout: any;\n    private hadFirstItemsLoad: boolean;\n\n    public constructor(\n        @Optional() @Self()\n        public ngtStylizableDirective: NgtStylizableDirective,\n\n        @Optional() @Host()\n        public formContainer: ControlContainer,\n\n        @Optional()\n        public ngtTranslateService: NgtTranslateService,\n\n        private ngtHttp: NgtHttpService,\n        private changeDetector: ChangeDetectorRef,\n\n        @Optional() @SkipSelf()\n        private ngtForm: NgtFormComponent,\n\n        @Optional() @SkipSelf()\n        private ngtSection: NgtSectionComponent,\n\n        @Optional() @SkipSelf()\n        private ngtModal: NgtModalComponent,\n\n        protected override injector: Injector,\n    ) {\n        super();\n\n        if (this.ngtStylizableDirective) {\n            this.ngtStyle = this.ngtStylizableDirective.getNgtStylizableService();\n        } else {\n            this.ngtStyle = new NgtStylizableService();\n        }\n\n        this.ngtStyle.load(this.injector, 'NgtSelect', {\n            h: 'h-12',\n            text: 'text-sm',\n            fontCase: '',\n            color: {\n                bg: 'bg-white'\n            }\n        });\n    }\n\n    @Input() public compareWith = (a: any, b: any) => a === b;\n\n    public ngOnInit() {\n        if (!this.formContainer) {\n            console.error(\"The element must be inside a <form #form='ngForm'> tag!\");\n        }\n\n        if (!this.name) {\n            console.error(\"The element must contain a name attribute!\");\n        }\n\n        if (!this.multiple && this.isRequired) {\n            this.clearable = false;\n        }\n\n        if (this.multiple) {\n            this.closeOnSelect = false;\n        }\n\n        setTimeout(() => {\n            this.componentReady = true;\n            this.initComponentValidation();\n        }, 500);\n\n        this.ngSelectItems = new Observable((observer) => {\n            this.ngSearchObserver = observer;\n            observer.next([]);\n        });\n    }\n\n    public ngAfterViewInit() {\n        this.bindInnerInputUniqueId();\n\n        this.bindSubscriptions();\n    }\n\n    public ngOnChanges(changes: SimpleChanges): void {\n        if (changes.isRequired) {\n            this.updateValidations();\n        }\n\n        if (changes.remoteResource || changes.items) {\n            this.initNgSelectItems();\n        }\n\n        if (changes.dropdownPanelMinHeight) {\n            this.dropdownPanelMinHeight = getEnumFromString(changes.dropdownPanelMinHeight.currentValue, NgtSelectDropdownPanelHeight);\n        }\n    }\n\n    public ngDoCheck(): void {\n        if (!this.hadFirstItemsLoad && this.canLoadItems()) {\n            this.hadFirstItemsLoad = true;\n\n            this.initNgSelectItems();\n\n            setTimeout(() => {\n                this.replaceShowAddTag();\n\n                this.ngSelectComponent.itemsList.mapSelectedItems();\n\n                if (!this.getElementTitle() || this.getElementTitle() === 'null') {\n                    this.ngSelectComponent.element.parentElement.parentElement.parentElement.title = '';\n                }\n\n                this.originalItems = this.ngSelectComponent.selectedItems?.map((element) => element.value);\n\n                this.changeDetector.detectChanges();\n            }, 500);\n        }\n    }\n\n    public ngOnDestroy() {\n        this.destroySubscriptions();\n    }\n\n    public onOpen(): void {\n        const parentElements = document.querySelectorAll('#ngtSelectParentContainer');\n\n        if (this.dropdownPosition == 'auto' && parentElements?.length) {\n            const parentContainer = parentElements[parentElements.length - 1];\n\n            this.calculateDropdownPosition(parentContainer);\n        }\n    }\n\n    public removeItem(event: Event, item: any) {\n        event.preventDefault();\n        event.stopPropagation();\n\n        return this.ngSelectComponent.clearItem(item);\n    }\n\n    public refresh() {\n        this.initNgSelectItems();\n        this.initComponentValidation();\n    }\n\n    public reset() {\n        this.value = undefined;\n        this.nativeValue = undefined;\n        this.refresh();\n    }\n\n    public setFocus() {\n        setTimeout(() => {\n            this.ngSelectComponent.focus();\n        });\n    }\n\n    public onClearSelect() {\n        if (!this.nativeValue) {\n            this.markAsPristine();\n        }\n\n        this.currentState.filters = {};\n\n        this.onClear.emit();\n    }\n\n    public onRemoveSelectedItem(item: NgOption) {\n        if (this.cantRemoveItem(item.value)) {\n            setTimeout(() => this.ngSelectComponent.select(item));\n\n            return;\n        }\n\n        this.onSelectedItemRemove.emit(item.value);\n    }\n\n    public getFilterInputValue() {\n        let inputField = this.ngSelectComponent.searchInput ?\n            this.ngSelectComponent.searchInput :\n            this.ngSelectComponent['searchInput'];\n\n        if (\n            inputField &&\n            inputField.nativeElement\n        ) {\n            return inputField.nativeElement.value;\n        }\n    }\n\n    public itemSearchFn = (term: string, item: any) => {\n        if (this.remoteResource) {\n            return null;\n        }\n\n        let formattedValue;\n\n        if (typeof item == 'string') {\n            formattedValue = item;\n        }\n\n        if (!this.bindLabel) {\n            return null;\n        }\n\n        if (typeof item['getAttribute'] == 'function') {\n            formattedValue = item.getAttribute([this.bindLabel]);\n        } else if (typeof item == 'object') {\n            formattedValue = item[this.bindLabel];\n        }\n\n        return formattedValue\n            ? formattedValue.toLocaleLowerCase().includes(term.toLocaleLowerCase())\n            : null;\n    };\n\n    public search(filters: any) {\n        this.currentState.filters = { ...this.currentState.filters, ...filters };\n\n        if (!this.remoteResource) {\n            return;\n        }\n\n        if (this.searchTimeout) {\n            clearTimeout(this.searchTimeout);\n        }\n\n        this.loading = true;\n        this.changeDetector.detectChanges();\n\n        this.searchTimeout = setTimeout(() => {\n            this.subscriptions.push(\n                this.ngtHttp\n                    .get(this.remoteResource, this.currentState.filters, this.currentState.pagination)\n                    .subscribe(\n                        (response: NgtHttpResponse) => {\n                            this.loading = false;\n\n                            this.bindCompareWithByResponse(response);\n\n                            this.ngSearchObserver.next(response.data);\n\n                            if (this.canAutoSelectUniqueOption(response)) {\n                                this.onNativeChange(response.data[0]);\n                            }\n\n                            this.onLoadRemoteResource.emit(response.data);\n\n                            this.currentState.pagination = response.meta.pagination;\n\n                            this.changeDetector.detectChanges();\n                        },\n                        (error) => {\n                            this.loading = false;\n                            this.changeDetector.detectChanges();\n                            console.error(error);\n                            this.ngSearchObserver.next([]);\n                        }\n                    )\n            );\n        }, 500);\n    }\n\n    public onNativeChange(value): void {\n        if (this.hasChangesBetweenModels(this.value, value)) {\n            this.value = this.sortSelectedItems(value);\n        }\n    }\n\n    public change(value): void {\n        if (this.hasChangesBetweenModels(value, this.nativeValue)) {\n            if (Array.isArray(value)) {\n                value = value.map((val) => val);\n            }\n\n            this.nativeValue = this.sortSelectedItems(value);\n\n            if (!value) {\n                this.markAsPristine();\n            }\n        }\n    }\n\n    public onScroll({ end }) {\n        let currentPerPage = this.currentState.pagination.per_page;\n        let maxItensInBackend = this.currentState.pagination.total;\n\n        if (end >= currentPerPage && end <= maxItensInBackend) {\n            this.currentState.pagination.per_page = parseInt(this.currentState.pagination.per_page) + this.originalPerPage;\n            this.search({});\n        }\n    }\n\n    public hasSelectedValue() {\n        return this.value && JSON.stringify(this.value);\n    }\n\n    public cantRemoveItem(itemValue: any): boolean {\n        return (!this.allowOriginalItemsUnselect && this.hadPreviousSelection(itemValue))\n            || (this.isAllowedToRemoveFn && !this.isAllowedToRemoveFn(itemValue));\n    }\n\n    public getSelectClass() {\n        let selectClass = this.dropdownPanelMinHeight ? 'ng-select-dropdown-panel-' + this.dropdownPanelMinHeight : 'ng-select-dropdown-panel-auto';\n\n        if (this.disabled()) {\n            selectClass += ' select-border-disabled';\n        } else if (this.formControl && this.formControl.errors && (this.formControl.dirty || (this.formContainer && this.formContainer['submitted']))) {\n            selectClass += ' select-border-error';\n        } else {\n            selectClass += ' select-border-normal';\n        }\n\n        if (this.multiple) {\n            selectClass += ` h-auto ${this.ngtStyle.compile(['color.bg', 'color.text'])}`;\n        } else {\n            selectClass += ` ${this.ngtStyle.compile(['h', 'color.bg', 'color.text'])}`;\n        }\n\n        return selectClass;\n    }\n\n    public disabled(): boolean {\n        return this.isDisabled || this.isDisabledByParent();\n    }\n\n    private async calculateDropdownPosition(parentContainer: Element): Promise<void> {\n        while (!this.componentReady || this.loading || this.ngSelectComponent.showNoItemsFound()) {\n            await delay(200);\n\n            if (this.ngSelectComponent.showNoItemsFound() && !this.loading && this.componentReady) {\n                break;\n            }\n        }\n\n        this.changeDetector.detectChanges();\n\n        setTimeout(() => {\n            const ngSelectElement = this.ngSelectComponent.element;\n            const ngSelectHeight = ngSelectElement.offsetHeight;\n            const ngSelectYPosition = ngSelectElement.getBoundingClientRect().y;\n\n            const dropdownHeight = this.ngSelectComponent.dropdownPanel.contentElementRef.nativeElement.offsetHeight;\n            const openedSelectHeight = ngSelectHeight + dropdownHeight;\n\n            const parentYPosition = parentContainer.getBoundingClientRect().y;\n            const ngSelectYPositionInsideParent = ngSelectYPosition - parentYPosition;\n\n            const openedSelectTotalHeight = openedSelectHeight + ngSelectYPositionInsideParent;\n            const parentContainerHeight = parentContainer.clientHeight;\n\n            const fitsOnTop = openedSelectHeight < ngSelectYPositionInsideParent;\n            const fitsOnBottom = openedSelectTotalHeight < parentContainerHeight;\n\n            const dropdownPosition: DropdownPosition = !fitsOnBottom && fitsOnTop\n                ? 'top'\n                : 'bottom';\n\n            (<any>this.ngSelectComponent.dropdownPanel['_currentPosition']) = dropdownPosition;\n\n            this.ngSelectComponent.dropdownPanel['_updateDropdownClass'](dropdownPosition);\n        });\n    }\n\n    private initNgSelectItems() {\n        if (this.remoteResource && this.canLoadItems()) {\n            this.ngSelectItems = new Observable(observer => {\n                this.ngSearchObserver = observer;\n                this.search({});\n            });\n\n            this.typeahead = new Subject();\n\n            this.subscriptions.push(\n                this.typeahead.subscribe((term) => {\n                    this.search({ term: term });\n                })\n            );\n        } else if (this.items instanceof Observable) {\n            this.ngSelectItems = this.items;\n        } else {\n            if (!this.items) {\n                this.items = [];\n            }\n\n            if (this.canAutoSelectUniqueOption()) {\n                this.onNativeChange(this.items[0]);\n            }\n\n            this.ngSelectItems = new Observable((observer) => {\n                this.ngSearchObserver = observer;\n                observer.next(this.items);\n            });\n        }\n    }\n\n    private initComponentValidation() {\n        if (this.formContainer && this.formContainer.control && (this.formControl = this.formContainer.control.get(this.name))) {\n            this.formControl = this.formContainer.control.get(this.name);\n            this.markAsPristine();\n            this.updateValidations();\n        }\n    }\n\n    private sortSelectedItems(value: any): any {\n        if (this.sortSelectedItemsFn && value instanceof Array && value.length > 1) {\n            return value.sort((a, b) => this.sortSelectedItemsFn(a, b));\n        }\n\n        return value;\n    }\n\n    private getElementTitle(): string {\n        return this.ngSelectComponent.element.parentElement.parentElement.parentElement.title;\n    }\n\n    private hasChangesBetweenModels(value, nativeValue) {\n        return JSON.stringify(value) !== JSON.stringify(nativeValue);\n    }\n\n    private updateValidations() {\n        if (!this.formControl) {\n            return;\n        }\n\n        let syncValidators = [];\n\n        if (this.isRequired) {\n            syncValidators.push(this.isRequiredValidator());\n        }\n\n        setTimeout(() => {\n            this.formControl.setValidators(syncValidators);\n            this.formControl.updateValueAndValidity();\n        });\n    }\n\n    private isRequiredValidator() {\n        return (control: AbstractControl) => {\n            if (this.multiple) {\n                if (Array.isArray(this.value) && this.value.length > 0) {\n                    return null;\n                }\n            } else if (control.value && JSON.stringify(control.value)) {\n                return null;\n            }\n\n            return { 'required': true };\n        };\n    }\n\n    private replaceShowAddTag() {\n        Object.defineProperty(this.ngSelectComponent, 'showAddTag', {\n            get: () => {\n                if (!this.ngSelectComponent['searchTerm']) {\n                    return false;\n                }\n\n                const term = this.ngSelectComponent['searchTerm'].toLocaleLowerCase();\n\n                return this.ngSelectComponent.addTag && !this.ngSelectComponent.loading\n                    && (!this.hasTermInFilteredItems(term) && (!this.hasTermInSelectedItems(term)\n                        || !this.ngSelectComponent.hideSelected && this.ngSelectComponent.isOpen));\n            }\n        });\n    }\n\n    private bindInnerInputUniqueId() {\n        const childInputs = this.ngSelectComponent.element.getElementsByTagName('input');\n\n        if (childInputs?.length) {\n            const innerInput = childInputs[0];\n\n            innerInput.id = uuid();\n        }\n    }\n\n    private bindCompareWithByResponse(response: NgtHttpResponse): void {\n        if (this.guessCompareWith) {\n            if (response.data?.length && typeof response.data[0]['getApiId'] === 'function') {\n                this.compareWith = (a: any, b: any) => a.getApiId() == b.getApiId();\n            } else {\n                this.compareWith = (a: any, b: any) => a === b;\n            }\n        }\n    }\n\n    private hasTermInFilteredItems(term: string) {\n        const filteredItems = this.ngSelectComponent.itemsList.filteredItems;\n\n        if (filteredItems?.length && this.isColoquentResource()) {\n            return filteredItems.some((element: any) => {\n                const elementValue = (<any>element.value).getAttribute(this.bindLabel);\n\n                return elementValue && elementValue.toLocaleLowerCase() === term;\n            });\n        }\n\n        return filteredItems.some((element: any) => {\n            const elementValue = (<any>element.value)[this.bindLabel];\n\n            return elementValue && elementValue.toLocaleLowerCase() === term;\n        });\n    }\n\n    private hasTermInSelectedItems(term: string) {\n        const selectedItems = this.ngSelectComponent.selectedItems;\n\n        if (selectedItems?.length && this.isColoquentResource()) {\n            return selectedItems.some((element: any) => {\n                const elementValue = (<any>element.value).getAttribute(this.bindLabel);\n\n                return elementValue && elementValue.toLocaleLowerCase() === term;\n            });\n        }\n\n        return selectedItems.some((element: any) => {\n            const elementValue = (<any>element.value)[this.bindLabel];\n\n            return elementValue && elementValue.toLocaleLowerCase() === term;\n        });\n    }\n\n    private hadPreviousSelection(item: any): boolean {\n        return !!this.originalItems?.find(element => this.compareWith(element, item));\n    }\n\n    private isColoquentResource() {\n        const items = this.ngSelectComponent.itemsList.items;\n\n        return items?.length && typeof items[0].value['getAttribute'] === 'function';\n    }\n\n    private canLoadItems(): boolean {\n        return this.autoLoad || (!this.disabled() && this.wasClicked);\n    }\n\n    private canAutoSelectUniqueOption(response?: NgtHttpResponse): boolean {\n        return !this.value && this.autoSelectUniqueOption\n            && (\n                (Array.isArray(response?.data) && response?.data?.length === 1)\n                || (!response && Array.isArray(this.items) && this.items?.length == 1)\n            );\n    }\n\n    private bindSubscriptions(): void {\n        if (this.ngtForm) {\n            this.shining = this.ngtForm.isShining();\n\n            this.subscriptions.push(\n                this.ngtForm.onShiningChange.subscribe((shining: boolean) => {\n                    this.shining = shining;\n                })\n            );\n        }\n\n        this.changeDetector.detectChanges();\n    }\n\n    private isDisabledByParent(): boolean {\n        return this.ngtForm?.isDisabled\n            || this.ngtSection?.isDisabledState()\n            || this.ngtModal?.isDisabledState();\n    }\n\n    private destroySubscriptions(): void {\n        this.subscriptions.forEach(subscription => subscription.unsubscribe());\n        this.subscriptions = [];\n    }\n}\n","<label *ngIf=\"label\" [hidden]='shining'\n    class=\"{{ shining ? '' : 'block' }} {{ ngtStyle.compile(['color.text', 'text', 'font', 'fontCase']) }} mb-2 flex\">\n    <ngt-svg *ngIf=\"labelIcon\" class=\"mr-1 {{labelIconColor}}\" src=\"{{labelIcon}}\"></ngt-svg>\n    \n    <span class=\"truncate\" [title]=\"label\">\n        {{ label }}:\n    </span>\n\n    <span class=\"text-red-500 font-bold text-md ml-1\" *ngIf=\"isRequired\">*</span>\n\n    <ngt-helper *ngIf=\"helpText\" [helpTitle]=\"helpTitle\" [iconColor]=\"helpTextColor\"\n        [helperReverseYPosition]=\"helperReverseYPosition\" [autoXReverse]=\"helperAutoXReverse\" class=\"ml-1\">\n        {{ helpText }}\n    </ngt-helper>\n</label>\n\n<div [hidden]='shining' class=\"{{ ngtStyle.compile(['text']) }} {{ getSelectClass() }} normal-case\"\n    style=\"min-height: 2.5rem;\">\n    <ng-select class=\"custom\" [(ngModel)]='nativeValue' [name]='nativeName' [addTag]='allowCreate'\n        [addTagText]=\"createText || ngtTranslateService.ngtSelectCreateText\" [bindLabel]=\"bindLabel\"\n        [multiple]=\"multiple\" [hideSelected]=\"hideSelected\" [typeahead]=\"typeahead\"\n        [notFoundText]=\"notFoundText || ngtTranslateService.ngtSelectNotFoundText\" [searchable]=\"searchable\"\n        [searchFn]=\"itemSearchFn\" [disabled]='disabled() || isReadonly' [clearable]=\"clearable && hasSelectedValue()\"\n        [closeOnSelect]=\"closeOnSelect\" [trackByFn]=\"trackBy\" [labelForId]=\"labelForId\"\n        [typeToSearchText]=\"typeToSearchText || ngtTranslateService.ngtSelectTypeToSearchText\"\n        [placeholder]=\"placeholder || ngtTranslateService.ngtSelectPlaceholder\" [dropdownPosition]=\"dropdownPosition\"\n        [groupBy]=\"groupBy\" [clearAllText]=\"clearAllTooltip || ngtTranslateService.ngtSelectClearAllTooltip\"\n        [clearSearchOnAdd]=\"clearSearchOnAdd\" [bindValue]=\"bindValue\" [virtualScroll]=\"virtualScroll\"\n        [loadingText]=\"loadingText || ngtTranslateService.ngtSelectLoadingText\" [maxSelectedItems]=\"maxSelectedItems\"\n        [tabIndex]=\"tabIndex\" [items]=\"ngSelectItems | async\" [groupValue]=\"groupValue\" [loading]=\"loading\"\n        [compareWith]='compareWith' [inputAttrs]=\"inputAttrs\" (scroll)=\"onScroll($event)\" (close)=\"onClose.emit()\"\n        (change)=\"onNativeChange($event)\" (clear)='onClearSelect()' (remove)='onRemoveSelectedItem($event)'\n        (open)=\"onOpen()\" (click)=\"wasClicked = true\">\n\n        <ng-template *ngIf='ngtSelectHeaderTemplate' ng-header-tmp>\n            <ng-template [ngTemplateOutlet]=\"ngtSelectHeaderTemplate\">\n            </ng-template>\n        </ng-template>\n\n        <ng-template ng-label-tmp let-item=\"item\">\n            <div class=\"flex w-full items-center pr-1\">\n                <ng-container *ngIf=\"multiple && !cantRemoveItem(item)\">\n                    <div class=\"ng-value-icon px-1 h-full border-r mr-2 {{ ngtStyle.compile(['color.text', 'text']) }} cursor-pointer\"\n                        (click)='removeItem($event, item)'>\n                        <svg class=\"ng-value-icon fill-current self-center\" xmlns=\"http://www.w3.org/2000/svg\"\n                            viewBox=\"0 0 24 24\">\n                            <path\n                                d=\"M19.1 17.2l-5.3-5.3 5.3-5.3-1.8-1.8-5.3 5.4-5.3-5.3-1.8 1.7 5.3 5.3-5.3 5.3L6.7 19l5.3-5.3 5.3 5.3 1.8-1.8z\" />\n                        </svg>\n                    </div>\n                </ng-container>\n\n                <ng-template *ngIf='ngtOptionSelectedTemplate' [ngTemplateOutlet]=\"ngtOptionSelectedTemplate\"\n                    [ngTemplateOutletContext]=\"{ item: item }\">\n                </ng-template>\n\n                <ng-template *ngIf='!ngtOptionSelectedTemplate' [ngTemplateOutlet]=\"ngtOptionTemplate\"\n                    [ngTemplateOutletContext]=\"{ item: item }\">\n                </ng-template>\n            </div>\n        </ng-template>\n\n        <ng-template ng-option-tmp let-item=\"item\" let-index=\"index\" let-search=\"searchTerm\">\n            <ng-template [ngTemplateOutlet]=\"ngtOptionTemplate\"\n                [ngTemplateOutletContext]=\"{ item: item, index: index, searchTerm: search }\">\n            </ng-template>\n        </ng-template>\n    </ng-select>\n</div>\n\n<ng-container *ngIf='shining'>\n    <div class=\"flex\">\n        <ngt-shining class=\"{{ ngtStyle.compile(['h']) }} w-full\"></ngt-shining>\n    </div>\n</ng-container>\n\n<ngt-validation [control]=\"formControl\" [container]=\"formContainer\"></ngt-validation>\n\n<input *ngIf='componentReady' type='hidden' [ngModel]=\"value\" [name]=\"name\" [value]=\"value\">","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { NgSelectModule } from '@ng-select/ng-select';\n\nimport { NgtFormModule } from '../ngt-form/ngt-form.module';\nimport { NgtHelperComponent } from '../../../ngt-helper/ngt-helper.component';\nimport { NgtShiningModule } from '../../../ngt-shining/ngt-shining.module';\nimport { NgtSvgModule } from '../../../ngt-svg/ngt-svg.module';\nimport { NgtValidationModule } from '../../../ngt-validation/ngt-validation.module';\nimport { NgtSelectComponent } from './ngt-select.component';\nimport { NgtSelectHeaderTmp, NgtSelectOptionSelectedTmp, NgtSelectOptionTmp } from './ngt-select.directive';\n\n@NgModule({\n    declarations: [\n        NgtSelectComponent,\n        NgtSelectOptionTmp,\n        NgtSelectOptionSelectedTmp,\n        NgtSelectHeaderTmp\n    ],\n    exports: [\n        NgtSelectComponent,\n        NgtSelectOptionTmp,\n        NgtSelectOptionSelectedTmp,\n        NgtSelectHeaderTmp\n    ],\n    imports: [\n        CommonModule,\n        FormsModule,\n        NgSelectModule,\n        NgtValidationModule,\n        NgtFormModule,\n        NgtShiningModule,\n        NgtHelperComponent,\n        NgtSvgModule\n    ]\n})\nexport class NgtSelectModule { }\n","import { Component, EventEmitter, Injector, Input, Optional, Output } from '@angular/core';\n\nimport { NgtHttpMeta, NgtHttpPagination } from '../../services/http/ngt-http.service';\nimport { NgtTranslateService } from '../../services/http/ngt-translate.service';\nimport { NgtStylizableService } from '../../services/ngt-stylizable/ngt-stylizable.service';\n\n@Component({\n    selector: 'ngt-pagination',\n    templateUrl: './ngt-pagination.component.html',\n    standalone: false\n})\nexport class NgtPaginationComponent {\n    @Input() public pagesInterval: number;\n\n    @Output() public onPageChange: EventEmitter<number> = new EventEmitter();\n    @Output() public onPerPageChange: EventEmitter<number> = new EventEmitter();\n\n    /** Styles */\n    public ngtPaginationActivePageButtonStyle: NgtStylizableService;\n    public ngtPaginationNextPreviousButtonStyle: NgtStylizableService;\n    public ngtPaginationNextPreviousSectionButtonStyle: NgtStylizableService;\n    public ngtPaginationFirstLastButtonStyle: NgtStylizableService;\n    public ngtPaginationPageButtonStyle: NgtStylizableService;\n\n    public sectionStartPage: number;\n    public sectionEndPage: number;\n    public displayNextSectionButton: boolean;\n    public displayPreviousSectionButton: boolean;\n    public displayPagination: boolean = true;\n\n    public pagination: NgtHttpPagination = {\n        count: null,\n        page: 1,\n        pages: null,\n        total: null,\n        from: null,\n        to: null,\n        per_page: null\n    };\n\n    public pages = [];\n\n    public registersPerPageOptions = [\n        5, 10, 15, 30, 50, 100\n    ];\n\n    public currentRegistersPerPage: number = 15;\n\n    public constructor(\n        private injector: Injector,\n        @Optional()\n        public ngtTranslateService: NgtTranslateService\n    ) {\n        this.ngtPaginationNextPreviousButtonStyle = new NgtStylizableService();\n        this.ngtPaginationNextPreviousSectionButtonStyle = new NgtStylizableService();\n        this.ngtPaginationFirstLastButtonStyle = new NgtStylizableService();\n        this.ngtPaginationActivePageButtonStyle = new NgtStylizableService();\n        this.ngtPaginationPageButtonStyle = new NgtStylizableService();\n\n        this.ngtPaginationNextPreviousButtonStyle.load(this.injector, 'NgtPaginationNextPreviousButton', {\n            h: 'h-6',\n            w: 'w-6',\n            color: {\n                text: 'text-white',\n                bg: 'bg-gray-700'\n            }\n        });\n\n        this.ngtPaginationNextPreviousSectionButtonStyle.load(this.injector, 'NgtPaginationNextPreviousButton', {\n            h: 'h-6',\n            w: 'w-6',\n            color: {\n                text: 'text-white',\n                bg: 'bg-gray-300'\n            }\n        });\n\n        this.ngtPaginationFirstLastButtonStyle.load(this.injector, 'NgtPaginationFirstLastButton', {\n            h: 'h-6',\n            w: 'w-6',\n            color: {\n                text: 'text-white',\n                bg: 'bg-gray-900'\n            }\n        });\n\n        this.ngtPaginationActivePageButtonStyle.load(this.injector, 'NgtPaginationActivePageButton', {\n            h: 'h-6',\n            w: 'w-6',\n            color: {\n                text: 'text-white',\n                bg: 'bg-gray-500'\n            }\n        });\n\n        this.ngtPaginationPageButtonStyle.load(this.injector, 'NgtPaginationPageButton', {\n            h: 'h-6',\n            w: 'w-6',\n            color: {\n                text: 'text-white',\n                bg: 'bg-gray-300'\n            }\n        });\n    }\n\n    public onRegistersPerPageChange(value: any) {\n        if (value && this.pagination.per_page != value) {\n            this.pagination.per_page = value;\n            this.currentRegistersPerPage = value;\n\n            this.onPerPageChange.emit(value);\n        }\n    }\n\n    public async goToPage(page: number) {\n        this.onPageChange.emit(page);\n    }\n\n    public async goToPreviousPage() {\n        if ((this.pagination.page - 1) > 0) {\n            return this.goToPage(this.pagination.page - 1);\n        }\n    }\n\n    public async goToNextPage() {\n        if ((this.pagination.page + 1) <= this.pagination.pages) {\n            return this.goToPage(this.pagination.page + 1);\n        }\n    }\n\n    public async goToPreviousSection() {\n        return this.goToPage(this.sectionStartPage - 1);\n    }\n\n    public async goToNextSection() {\n        return this.goToPage(this.sectionEndPage + 1);\n    }\n\n    public async goToFirstPage() {\n        if (this.pagination.page != 1) {\n            return this.goToPage(1);\n        }\n    }\n\n    public async goToLastPage() {\n        if (this.pagination.page != this.pagination.pages) {\n            return this.goToPage(this.pagination.pages);\n        }\n    }\n\n    public getCurrentPage() {\n        return this.pagination.page;\n    }\n\n    public getPagination() {\n        return this.pagination;\n    }\n\n    public proccessPagination(meta: NgtHttpMeta) {\n        this.pages = [];\n        this.pagination = meta.pagination;\n\n        this.sectionStartPage = Math.floor((this.pagination.page - 1) / this.pagesInterval) * this.pagesInterval + 1;\n        this.sectionEndPage = this.sectionStartPage + (this.pagesInterval - 1);\n\n        const totalPages = this.pagination.pages;\n\n        for (let i = this.sectionStartPage; i <= this.sectionEndPage && i <= totalPages; i++) {\n            this.pages.push(i);\n        }\n\n        this.bindDisplayedButtonSections(this.sectionStartPage, this.sectionEndPage, totalPages);\n        this.displayPagination = true;\n    }\n\n    public resetPagination() {\n        this.pagination = {\n            count: null,\n            page: 1,\n            pages: null,\n            total: null,\n            from: null,\n            to: null,\n            per_page: null\n        };\n    }\n\n    private bindDisplayedButtonSections(sectionStartPage: number, sectionEndPage: number, totalPages: number) {\n        this.displayPreviousSectionButton = sectionStartPage > 1;\n        this.displayNextSectionButton = sectionEndPage < totalPages;\n    }\n}\n","<div class=\"{{ displayPagination ? 'flex' : 'hidden' }} items-center w-full h-full relative\">\n    <ul class=\"flex justify-start\">\n        <!-- FIRST -->\n        <li (click)='goToFirstPage()' class=\"mr-2\">\n            <ngt-action [ngtStyle]='ngtPaginationFirstLastButtonStyle' [forceEnable]=\"true\">\n                <svg class=\"fill-current\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n                    aria-hidden=\"true\" focusable=\"false\"\n                    style=\"-ms-transform: rotate(360deg); -webkit-transform: rotate(360deg); transform: rotate(360deg);\"\n                    preserveAspectRatio=\"xMidYMid meet\" viewBox=\"0 0 24 24\">\n                    <path\n                        d=\"M18.41 7.41L17 6l-6 6l6 6l1.41-1.41L13.83 12l4.58-4.59m-6 0L11 6l-6 6l6 6l1.41-1.41L7.83 12l4.58-4.59z\" />\n                </svg>\n            </ngt-action>\n        </li>\n\n        <!-- PREVIOUS -->\n        <li (click)='goToPreviousPage()' class=\"mr-2\">\n            <ngt-action [ngtStyle]='ngtPaginationNextPreviousButtonStyle' [forceEnable]=\"true\">\n                <svg class=\"fill-current\" xmlns=\"http://www.w3.org/2000/svg\"\n                    style=\"-ms-transform: rotate(360deg); -webkit-transform: rotate(360deg); transform: rotate(360deg);\"\n                    preserveAspectRatio=\"xMidYMid meet\" viewBox=\"0 0 24 24\">\n                    <path d=\"M15.41 16.58L10.83 12l4.58-4.59L14 6l-6 6l6 6l1.41-1.42z\" />\n                </svg>\n            </ngt-action>\n        </li>\n\n        <!-- PREVIOUS SECTION -->\n        <li *ngIf=\"displayPreviousSectionButton\" (click)='goToPreviousSection()' class=\"mr-2\">\n            <ngt-action [ngtStyle]='ngtPaginationNextPreviousSectionButtonStyle' [forceEnable]=\"true\">\n                <svg class=\"fill-current\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\">\n                    <path\n                        d=\"M4 12a2 2 0 1 1 0-4 2 2 0 0 1 0 4zm6 0a2 2 0 1 1 0-4 2 2 0 0 1 0 4zm6 0a2 2 0 1 1 0-4 2 2 0 0 1 0 4z\" />\n                </svg>\n            </ngt-action>\n        </li>\n\n        <ng-container *ngFor='let page of pages'>\n            <ng-container *ngIf='page == pagination.page'>\n                <li class=\"mr-2\">\n                    <ngt-action class=\"text-xs\" [ngtStyle]='ngtPaginationActivePageButtonStyle' [forceEnable]=\"true\">\n                        {{ page }}\n                    </ngt-action>\n                </li>\n            </ng-container>\n\n            <ng-container *ngIf='page !== pagination.page'>\n                <li (click)='goToPage(page)' class=\"mr-2\">\n                    <ngt-action class=\"text-xs\" [ngtStyle]='ngtPaginationPageButtonStyle' [forceEnable]=\"true\">\n                        {{ page }}\n                    </ngt-action>\n                </li>\n            </ng-container>\n\n        </ng-container>\n\n        <!-- NEXT SECTION -->\n        <li *ngIf=\"displayNextSectionButton\" (click)='goToNextSection()' class=\"mr-2\">\n            <ngt-action [ngtStyle]='ngtPaginationNextPreviousSectionButtonStyle' [forceEnable]=\"true\">\n                <svg class=\"fill-current\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\">\n                    <path\n                        d=\"M4 12a2 2 0 1 1 0-4 2 2 0 0 1 0 4zm6 0a2 2 0 1 1 0-4 2 2 0 0 1 0 4zm6 0a2 2 0 1 1 0-4 2 2 0 0 1 0 4z\" />\n                </svg>\n            </ngt-action>\n        </li>\n\n        <!-- NEXT -->\n        <li (click)='goToNextPage()' class=\"mr-2\">\n            <ngt-action [ngtStyle]='ngtPaginationNextPreviousButtonStyle' [forceEnable]=\"true\">\n                <svg class=\"fill-current\" xmlns=\"http://www.w3.org/2000/svg\"\n                    style=\"-ms-transform: rotate(360deg); -webkit-transform: rotate(360deg); transform: rotate(360deg);\"\n                    preserveAspectRatio=\"xMidYMid meet\" viewBox=\"0 0 24 24\">\n                    <path d=\"M8.59 16.58L13.17 12L8.59 7.41L10 6l6 6l-6 6l-1.41-1.42z\" />\n                </svg>\n            </ngt-action>\n        </li>\n\n        <!-- LAST -->\n        <li (click)='goToLastPage()' class=\"mr-2\">\n            <ngt-action [ngtStyle]='ngtPaginationFirstLastButtonStyle' [forceEnable]=\"true\">\n                <svg class=\"fill-current\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n                    aria-hidden=\"true\" focusable=\"false\"\n                    style=\"-ms-transform: rotate(360deg); -webkit-transform: rotate(360deg); transform: rotate(360deg);\"\n                    preserveAspectRatio=\"xMidYMid meet\" viewBox=\"0 0 24 24\">\n                    <path\n                        d=\"M5.59 7.41L7 6l6 6l-6 6l-1.41-1.41L10.17 12L5.59 7.41m6 0L13 6l6 6l-6 6l-1.41-1.41L16.17 12l-4.58-4.59z\" />\n                </svg>\n            </ngt-action>\n        </li>\n    </ul>\n\n    <!-- REGISTERS PER PAGE -->\n    <div class=\"flex items-center w-auto absolute right-0\">\n        <ngt-select class='block w-20 left-0' [searchable]='false' [clearable]='false' dropdownPosition='top'\n            [items]='registersPerPageOptions' name='registersPerPageSelect' [(ngModel)]=\"currentRegistersPerPage\"\n            h='h-auto' (ngModelChange)='onRegistersPerPageChange($event)' ngt-stylizable>\n            <ng-template let-item=\"item\" let-index=\"index\" ngt-select-option>\n                {{ item ? item : '' }}\n            </ng-template>\n        </ngt-select>\n\n        <P class=\"text-xs ml-2\">\n            {{ ngtTranslateService.ngtPagination(pagination.from, pagination.to, pagination.total) }}\n        </P>\n    </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { NgtStylizableModule } from '../../directives/ngt-stylizable/ngt-stylizable.module';\nimport { NgtActionModule } from '../ngt-action/ngt-action.module';\nimport { NgtSelectModule } from '../forms/template-driven/ngt-select/ngt-select.module';\nimport { NgtPaginationComponent } from './ngt-pagination.component';\n\n@NgModule({\n    declarations: [NgtPaginationComponent],\n    exports: [NgtPaginationComponent],\n    imports: [\n        CommonModule,\n        FormsModule,\n        NgtStylizableModule,\n        NgtActionModule,\n        NgtSelectModule,\n    ]\n})\nexport class NgtPaginationModule { }\n","import { Component, Injector, Input, Optional, Self } from '@angular/core';\n\nimport { NgtStylizableDirective } from '../../directives/ngt-stylizable/ngt-stylizable.directive';\nimport { NgtStylizableService } from '../../services/ngt-stylizable/ngt-stylizable.service';\n\n@Component({\n    selector: 'ngt-tag',\n    templateUrl: './ngt-tag.component.html',\n    standalone: false\n})\nexport class NgtTagComponent {\n    @Input() public icon: string;\n\n    public ngtStyle: NgtStylizableService;\n\n    public constructor(\n        private injector: Injector,\n        @Self() @Optional() private ngtStylizableDirective: NgtStylizableDirective,\n    ) {\n        if (this.ngtStylizableDirective) {\n            this.ngtStyle = this.ngtStylizableDirective.getNgtStylizableService();\n        } else {\n            this.ngtStyle = new NgtStylizableService();\n        }\n\n        this.ngtStyle.load(this.injector, 'Tag', {\n            color: {\n                bg: 'bg-gray-500',\n                text: 'text-white'\n            }\n        });\n    }\n}\n","<button type=\"button\"\n    class=\"rounded-full w-full cursor-pointer font-semibold focus:outline-none block px-4 text-xs {{ ngtStyle.compile(['color.bg', 'color.text']) }}\">\n    <span class=\"flex items-center justify-center\">\n        <ng-content></ng-content>\n        <ngt-svg *ngIf=\"icon\" [src]='icon' class=\"fill-current self-center pl-1\"></ngt-svg>\n\n        <span *ngIf=\"!icon\" class=\"text-sm\">\n            <svg class=\"fill-current self-center pl-1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 30 30\">\n                <path\n                    d=\"M15 3C8.373 3 3 8.373 3 15s5.373 12 12 12 12-5.373 12-12S21.627 3 15 3zm4.707 15.293a.999.999 0 11-1.414 1.414L15 16.414l-3.293 3.293a.997.997 0 01-1.414 0 .999.999 0 010-1.414L13.586 15l-3.293-3.293a.999.999 0 111.414-1.414L15 13.586l3.293-3.293a.999.999 0 111.414 1.414L16.414 15l3.293 3.293z\" />\n            </svg>\n        </span>\n    </span>\n</button>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { NgtSvgModule } from '../ngt-svg/ngt-svg.module';\nimport { NgtTagComponent } from './ngt-tag.component';\n\n@NgModule({\n    declarations: [NgtTagComponent],\n    exports: [NgtTagComponent],\n    imports: [\n        CommonModule,\n        NgtSvgModule\n    ]\n})\nexport class NgtTagModule { }\n","import {\n    ChangeDetectorRef,\n    Component,\n    ElementRef,\n    EventEmitter,\n    Injector,\n    Input,\n    OnDestroy,\n    OnInit,\n    Optional,\n    Output,\n    SimpleChanges,\n    TemplateRef,\n    ViewChild,\n    WritableSignal,\n    signal,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { getEnumFromString } from '../../helpers/enum/enum';\nimport { NgtHttpPagination, NgtHttpResponse, NgtHttpService } from '../../services/http/ngt-http.service';\nimport { NgtTranslateService } from '../../services/http/ngt-translate.service';\nimport { NgtInputComponent } from '../forms/template-driven/ngt-input/ngt-input.component';\nimport { NgtModalComponent } from '../ngt-modal/ngt-modal.component';\nimport { NgtPaginationComponent } from '../ngt-pagination/ngt-pagination.component';\nimport { NgtStylizableService } from '../../services/ngt-stylizable/ngt-stylizable.service';\n\nexport enum NgtDatatableType {\n    REMOTE = 'REMOTE',\n    FIXED = 'FIXED'\n}\n\nexport enum NgtDatatableSearchType {\n    DEFAULT = 'DEFAULT',\n    SILENT = 'SILENT',\n}\n\nexport enum NgtDatatableParam {\n    STAY_IN_PAGE = 1,\n    RESET_PAGE = 0,\n    ENABLE_LOADER = 1,\n    DISABLE_LOADER = 0\n}\n\nexport class NgtCheckedElement {\n    public id: string;\n    public checked: boolean;\n    public reference: any;\n}\n\nexport class NgtCustomFilter {\n    public term: string;\n    public tagValue: string;\n    public tagLabel?: string;\n}\n\n@Component({\n    selector: 'ngt-datatable',\n    templateUrl: './ngt-datatable.component.html',\n    styleUrls: ['./ngt-datatable.component.css'],\n    standalone: false\n})\nexport class NgtDatatableComponent implements OnInit, OnDestroy {\n    @ViewChild('table', { static: true }) public table: ElementRef;\n    @ViewChild('ngtPagination', { static: true }) public ngtPagination: NgtPaginationComponent;\n    @ViewChild('searchModal', { static: true }) public searchModal: NgtModalComponent;\n\n    @Input() public remoteResource: any;\n    @Input() public type: NgtDatatableType = NgtDatatableType.REMOTE;\n    @Input() public filterTagBgColor: string = 'bg-blue-500';\n    @Input() public filterTagMargin: string = 'mb-4';\n    @Input() public paginationMargin: string = 'mt-2 md:mt-8';\n    @Input() public inputSearch: NgtInputComponent;\n    @Input() public searchDelay: number = 500;\n    @Input() public searchTermMinLength: number = 1;\n    @Input() public searchTermOnEnter: boolean = true;\n    @Input() public defaultFilters: any = {};\n    @Input() public filtersDescription = {};\n    @Input() public canSelectAllRegisters: boolean = false;\n    @Input() public headBgColor: string;\n\n    @Output() public onDataChange: EventEmitter<any> = new EventEmitter();\n    @Output() public onClearFilter: EventEmitter<any> = new EventEmitter();\n    @Output() public onClearSelectedElements: EventEmitter<any> = new EventEmitter();\n    @Output() public onSelectedElementsChange: EventEmitter<Array<NgtCheckedElement>> = new EventEmitter();\n    @Output() public onToogleAllCheckboxes: EventEmitter<any> = new EventEmitter();\n    @Output() public onToogleCheckbox: EventEmitter<NgtCheckedElement> = new EventEmitter();\n    @Output() public onSelectAllRegisters: EventEmitter<void> = new EventEmitter();\n    @Output() public onOpenSearchModal: EventEmitter<string> = new EventEmitter();\n    @Output() public onSearch: EventEmitter<any> = new EventEmitter();\n\n    public searchModalTemplate: TemplateRef<any>;\n    public data = [];\n    public cleaningFilter = false;\n    public componentReady = false;\n    public filtersTranslated = [];\n    public emptyStateVisible: boolean;\n    public columnCount = [];\n    public hasSelectedAllElements: boolean;\n    public selectedElements: Array<NgtCheckedElement> = [];\n\n    public readonly loadingSignal: WritableSignal<boolean> = signal(false);\n\n    public filterModalStyle: NgtStylizableService = new NgtStylizableService();\n\n    private searching: boolean;\n    private searchTimeout: any;\n    private subscriptions: Array<Subscription> = [];\n    private currentState = {\n        filters: {\n            defaultFilters: {},\n            silentFilters: {},\n            qualifiedFilters: {},\n        },\n        sort: {\n            field: '',\n            direction: ''\n        }\n    };\n\n    public constructor(\n        private injector: Injector,\n        private ngtHttpService: NgtHttpService,\n        private changeDetector: ChangeDetectorRef,\n        @Optional()\n        public ngtTranslateService: NgtTranslateService\n    ) {\n        this.filterModalStyle.load(this.injector, 'FilterModal', {\n            w: 'md:max-w-md',\n            py: 'py-4',\n            px: 'px-6',\n            border: 'border border-teal-500',\n            overflow: 'overflow-visible',\n            color: {}\n        });\n    }\n\n    public get loading(): boolean {\n        return this.loadingSignal();\n    }\n\n    public set loading(value: boolean) {\n        this.loadingSignal.set(value);\n    }\n\n    public ngOnInit() {\n        if (this.table && this.table.nativeElement && this.table.nativeElement.rows\n            && this.table.nativeElement.rows[0] && this.table.nativeElement.rows[0].cells) {\n            this.columnCount = this.table.nativeElement.rows[0].cells;\n        }\n\n        if (this.inputSearch) {\n            this.initSearchWithInput();\n        }\n\n        this.initCheckboxEvent();\n\n        if (this.searchDelay == 500) {\n            this.searchDelay = this.injector.get('NgtDatatableSearchDelay', 500);\n        }\n\n        if (this.searchTermMinLength == 1) {\n            this.searchTermMinLength = this.injector.get('NgtDatatableSearchTermMinLength', 1);\n        }\n    }\n\n    public ngOnDestroy() {\n        this.destroySubscriptions();\n    }\n\n    public setSearchModalTemplate(template: TemplateRef<any>) {\n        this.searchModalTemplate = template;\n    }\n\n    public openSearchModal(reference?: string) {\n        this.searchModal.open();\n        this.onOpenSearchModal.emit(reference);\n    }\n\n    public clearSelectedElements() {\n        this.selectedElements = [];\n        this.onClearSelectedElements.emit();\n    }\n\n    public getCurrentState() {\n        return this.currentState;\n    }\n\n    public init() {\n        this.componentReady = true;\n    }\n\n    public async search(\n        filters: Object,\n        searchType: NgtDatatableSearchType = NgtDatatableSearchType.DEFAULT,\n        applyDelayOnSearch: boolean = true\n    ) {\n        if (this.canApplyFilters(filters)) {\n            this.onSearch.emit(filters);\n\n            if (searchType == NgtDatatableSearchType.DEFAULT) {\n                this.currentState.filters.defaultFilters = { ...this.currentState.filters.defaultFilters, ...filters };\n            } else {\n                this.currentState.filters.silentFilters = { ...this.currentState.filters.silentFilters, ...filters };\n            }\n\n            this.applyFiltersDescription();\n\n            return this.apply(1, applyDelayOnSearch);\n        }\n    }\n\n    public async sort(field: any, direction: any) {\n        this.currentState.sort = {\n            field: field,\n            direction: direction\n        };\n\n        return this.apply(this.ngtPagination.getCurrentPage());\n    }\n\n    public async refresh(stayInPage: NgtDatatableParam = NgtDatatableParam.RESET_PAGE, loader: NgtDatatableParam = NgtDatatableParam.ENABLE_LOADER) {\n        return this.apply(\n            stayInPage ? this.ngtPagination.getCurrentPage() : 1,\n            false,\n            loader\n        ).then(() => !this.data?.length && stayInPage ? this.apply(1, false) : null);\n    }\n\n    public getData() {\n        return this.data;\n    }\n\n    public getCurrentSort() {\n        return this.currentState.sort;\n    }\n\n    public setPerPage(perPage: number) {\n        this.ngtPagination.onRegistersPerPageChange(perPage);\n    }\n\n    public applyFiltersDescription() {\n        if (!this.cleaningFilter) {\n            this.filtersTranslated = [];\n\n            for (let reference in this.currentState.filters.defaultFilters) {\n                if (this.filtersDescription[reference] && this.currentState.filters.defaultFilters[reference]) {\n                    this.filtersTranslated.push({\n                        reference: reference,\n                        value: this.currentState.filters.defaultFilters[reference],\n                        translation: this.filtersDescription[reference]\n                    });\n                }\n            }\n        }\n    }\n\n    public setFilterDescription(reference: string, description: string) {\n        this.filtersDescription[reference] = description;\n    }\n\n    public async removeFilter(reference?: string, refresh: boolean = true): Promise<void> {\n        return new Promise(resolve => {\n            if (reference && !this.hasAppliedFilter(reference)) {\n                return resolve();\n            }\n\n            this.cleaningFilter = true;\n\n            if (!reference) {\n                this.currentState.filters.defaultFilters = {};\n                this.currentState.filters.silentFilters = {};\n                this.filtersTranslated = [];\n            } else {\n                delete this.currentState.filters.defaultFilters[reference];\n                delete this.currentState.filters.silentFilters[reference];\n\n                this.filtersTranslated = this.filtersTranslated.filter(element => element && element.reference !== reference);\n            }\n\n            this.onClearFilter.emit(reference);\n\n            if (this.inputSearch && (reference === 'term' || !reference)) {\n                this.inputSearch.clearInput();\n            }\n\n            if (refresh) {\n                return this.apply(this.ngtPagination.getCurrentPage(), false)\n                    .then(() => {\n                        this.cleaningFilter = false;\n\n                        resolve();\n                    });\n            }\n\n            resolve();\n        });\n    }\n\n    public hasAppliedFilter(filter: Object | NgtCustomFilter | string): boolean {\n        const reference: string = typeof filter === 'string' ? filter : Object.keys(filter ?? {})[0];\n        const appliedFilters = this.currentState.filters.qualifiedFilters;\n\n        return !!Object.keys(appliedFilters).find(key => key == reference);\n    }\n\n    public hasAppliedFilters(searchType: NgtDatatableSearchType = NgtDatatableSearchType.DEFAULT) {\n        let appliedFilters = {};\n\n        if (searchType == NgtDatatableSearchType.DEFAULT) {\n            appliedFilters = this.currentState.filters.defaultFilters;\n        } else if (searchType == NgtDatatableSearchType.SILENT) {\n            appliedFilters = this.currentState.filters.silentFilters;\n        } else {\n            appliedFilters = { ...this.currentState.filters.defaultFilters, ...this.currentState.filters.silentFilters };\n        }\n\n        return !!Object.values(appliedFilters)?.find(filter => !!filter);\n    }\n\n    public ngOnChanges(changes: SimpleChanges) {\n        if (changes.inputSearch) {\n            if (changes.inputSearch.currentValue) {\n                this.initSearchWithInput();\n            }\n        }\n\n        if (changes.type) {\n            this.type = getEnumFromString(changes.type.currentValue, NgtDatatableType);\n        }\n    }\n\n    public async apply(page = 1, applyDelayOnSearch: boolean = true, loader: NgtDatatableParam = NgtDatatableParam.ENABLE_LOADER) {\n        return new Promise<void>(resolve => {\n            if (!this.componentReady) {\n                return resolve();\n            } else if (this.searchTimeout) {\n                clearTimeout(this.searchTimeout);\n            }\n\n            this.ngtPagination.displayPagination = false;\n            this.selectedElements = [];\n\n            if (this.type === NgtDatatableType.REMOTE) {\n                if (this.remoteResource) {\n                    if (loader) {\n                        this.loading = true;\n                        this.bindVisibilityAttributes();\n                    }\n\n                    if (applyDelayOnSearch) {\n                        this.searchTimeout = setTimeout(() => {\n                            this.loadData(page).then(() => resolve());\n                        }, this.searchDelay);\n                    } else {\n                        this.loadData(page).then(() => resolve());\n                    }\n                } else {\n                    console.error('The property [remoteResource] needs to be present to be able to make remote search');\n                }\n            } else if (this.type == NgtDatatableType.FIXED) {\n                this.bindVisibilityAttributes();\n\n                resolve();\n            }\n        });\n    }\n\n    public getTagFilterValue(filter: any): string {\n        const filtersTag = this.getFiltersTagArray(filter);\n\n        return filtersTag.length > 1\n            ? filtersTag[0] + \" +\"\n            : filtersTag[0];\n    }\n\n    public getTitle(filter: any): string {\n        const filtersTag = this.getFiltersTagArray(filter);\n\n        return filtersTag.length > 1\n            ? filtersTag.slice(1).join(\",\")\n            : '';\n    }\n\n    private getFiltersTagArray(filter: any): string[] {\n        const tag = filter?.value?.tagValue ? filter.value.tagValue : filter.value;\n\n        return tag.split(\",\");\n    }\n\n    private loadData(page: number) {\n        return new Promise<void>((resolve, reject) => {\n            const pagination: NgtHttpPagination = { ...this.ngtPagination.getPagination(), ...{ page: page } };\n\n            this.currentState.filters.qualifiedFilters = this.getQualifiedFilters();\n            this.searching = true;\n\n            if (this.inputSearch) {\n                this.inputSearch.isDisabled = true;\n            }\n\n            this.subscriptions.push(\n                this.ngtHttpService.get(\n                    this.remoteResource, this.currentState.filters.qualifiedFilters, pagination, this.currentState.sort\n                ).subscribe(\n                    (response: NgtHttpResponse) => {\n                        this.proccessRemoteResponse(response.data);\n\n                        if (response.meta) {\n                            this.ngtPagination.proccessPagination(response.meta);\n                        }\n\n                        this.searching = false;\n                        this.loading = false;\n\n                        if (this.inputSearch) {\n                            this.inputSearch.isDisabled = false;\n                        }\n\n                        this.onDataChange.emit(this.data);\n                        this.bindVisibilityAttributes();\n\n                        resolve();\n                    },\n                    (error) => {\n                        console.error(error);\n                        this.loading = false;\n                        this.inputSearch.isDisabled = false;\n                        this.changeDetector.detectChanges();\n\n                        reject();\n                    }\n                )\n            );\n        });\n    }\n\n    private getQualifiedFilters() {\n        const qualifiedFilters = {};\n        const requestedFilters = { ...this.currentState.filters.defaultFilters, ...this.currentState.filters.silentFilters };\n\n        if (requestedFilters) {\n            for (const reference in requestedFilters) {\n                if (Object.prototype.hasOwnProperty.call(requestedFilters, reference)) {\n                    const filter = requestedFilters[reference];\n\n                    if (this.isValidFilter(filter, reference)) {\n                        if (filter instanceof NgtCustomFilter) {\n                            if (filter.tagLabel) {\n                                this.filtersDescription[reference] = filter.tagLabel;\n                                this.applyFiltersDescription();\n                            }\n\n                            qualifiedFilters[reference] = filter.term;\n                        } else {\n                            qualifiedFilters[reference] = filter;\n                        }\n                    }\n                }\n            }\n        }\n\n        return qualifiedFilters;\n    }\n\n    private bindVisibilityAttributes() {\n        this.changeDetector.detectChanges();\n\n        if (this.type == NgtDatatableType.REMOTE && !this.data.length && !this.loading) {\n            this.emptyStateVisible = true;\n        } else if (this.type == NgtDatatableType.FIXED) {\n            this.emptyStateVisible = false;\n        } else {\n            this.emptyStateVisible = false;\n        }\n\n        this.changeDetector.detectChanges();\n    }\n\n    private proccessRemoteResponse(response: any) {\n        this.data = response;\n    }\n\n    private initSearchWithInput() {\n        this.subscriptions.push(\n            this.inputSearch.onValueChange.subscribe((value: string) => {\n                if (this.currentState.filters.defaultFilters['term']) {\n                    if (!value) {\n                        this.removeFilter('term');\n                    } else if (value.length < this.searchTermMinLength) {\n                        delete this.currentState.filters.defaultFilters['term'];\n\n                        this.search({ term: '' });\n                    }\n                }\n\n                if (value.length >= this.searchTermMinLength) {\n                    this.search({ term: value });\n                }\n            })\n        );\n\n        if (this.searchTermOnEnter) {\n            this.inputSearch.element.nativeElement.addEventListener('keydown', (event: any) => {\n                event.stopImmediatePropagation();\n\n                if (event.keyCode == 13) {\n                    if (this.inputSearch.value && this.inputSearch.value.length >= this.searchTermMinLength) {\n                        this.apply(1, false);\n                    }\n                }\n            });\n        }\n    }\n\n    private initCheckboxEvent() {\n        this.subscriptions.push(\n            this.onToogleCheckbox.subscribe((checkedElement: NgtCheckedElement) => {\n                this.selectedElements = this.selectedElements.filter(item => item.id !== checkedElement.id);\n\n                if (checkedElement.checked) {\n                    this.selectedElements.push(checkedElement);\n                }\n\n                this.onSelectedElementsChange.emit(this.selectedElements);\n            })\n        );\n\n        this.subscriptions.push(\n            this.onSelectAllRegisters.subscribe(() => {\n                this.hasSelectedAllElements = !this.hasSelectedAllElements;\n\n                if (!this.hasSelectedAllElements) {\n                    this.selectedElements = [];\n                }\n            })\n        );\n    }\n\n    private canApplyFilters(filters: Object): boolean {\n        if (!this.searching) {\n            for (const reference in filters) {\n                if (this.isValidFilter(filters[reference], reference)) {\n                    return true;\n                }\n            }\n        }\n\n        return false;\n    }\n\n    private isValidFilter(filter: string | NgtCustomFilter, reference: string): boolean {\n        const hasValue: boolean = !!((filter instanceof NgtCustomFilter && filter.term) || filter);\n        const isApplied: boolean = this.hasAppliedFilter(reference);\n\n        return isApplied || (!isApplied && hasValue);\n    }\n\n    private destroySubscriptions() {\n        this.subscriptions.forEach(subscription => subscription.unsubscribe());\n        this.subscriptions = [];\n    }\n}\n","<div class=\"w-full\">\n    <div class=\"flex flex-wrap w-full\">\n        <ngt-tag *ngIf=\"hasAppliedFilters()\" class=\"w-full sm:w-auto {{ filterTagMargin }}\"\n            [class.sm:mr-4]=\"filterTagMargin == 'mb-4'\" color.bg=\"bg-red-500\" (click)=\"removeFilter()\" ngt-stylizable>\n            Limpar Filtros\n        </ngt-tag>\n\n        <ng-container *ngIf=\"hasAppliedFilters()\">\n            <ng-container *ngFor=\"let filter of filtersTranslated\">\n                <ngt-tag class=\"w-full sm:w-auto {{ filterTagMargin }}\" [class.sm:mr-4]=\"filterTagMargin == 'mb-4'\"\n                    [color.bg]=\"filterTagBgColor\" (click)=\"removeFilter(filter.reference)\" ngt-stylizable\n                    [title]=\"getTitle(filter)\">\n                    {{ filter.translation + ': ' + getTagFilterValue(filter) }}\n                </ngt-tag>\n            </ng-container>\n        </ng-container>\n    </div>\n\n    <table style=\"display: table;\" class=\"text-left w-full border-collapse table-responsive\" #table>\n        <ng-content></ng-content>\n    </table>\n\n    <p *ngIf=\"emptyStateVisible\" class=\"mt-8 mx-auto self-center text-center text-xl\">\n        {{ ngtTranslateService.ngtDatatableNoDataFound }}\n    </p>\n\n    <div *ngIf=\"loadingSignal()\">\n        <div *ngFor=\"let i of [1, 2, 3, 4]\" class=\"flex w-full mt-3\">\n            <ng-container *ngIf=\"columnCount.length >= 2\">\n                <ng-container *ngFor=\"let j of columnCount; let last = last\">\n                    <ng-container *ngIf=\"last\">\n                        <ngt-shining class=\"h-10 w-full\"></ngt-shining>\n                    </ng-container>\n\n                    <ng-container *ngIf=\"!last\">\n                        <ngt-shining class=\"h-10 w-full mr-10\"></ngt-shining>\n                    </ng-container>\n                </ng-container>\n            </ng-container>\n\n            <ng-container *ngIf=\"columnCount.length < 2\">\n                <ngt-shining class=\"h-10 w-full\"></ngt-shining>\n                <ngt-shining class=\"h-10 w-full mr-10 ml-10\"></ngt-shining>\n                <ngt-shining class=\"h-10 w-full\"></ngt-shining>\n            </ng-container>\n        </div>\n    </div>\n</div>\n\n<div class=\"clearfix {{ paginationMargin }}\" [hidden]='!data || data.length == 0'>\n    <ngt-pagination [pagesInterval]='4' (onPageChange)='apply($event, false)' (onPerPageChange)='apply(1, false)'\n        #ngtPagination>\n    </ngt-pagination>\n</div>\n\n<ngt-modal [customLayout]=\"true\" [isDisabled]=\"false\" [ngtStyle]=\"filterModalStyle\" #searchModal>\n    <ng-container *ngTemplateOutlet=\"searchModalTemplate\"></ng-container>\n</ngt-modal>","import { Component, ElementRef, Injector, Optional, Self } from '@angular/core';\n\nimport { NgtStylizableDirective } from '../../../directives/ngt-stylizable/ngt-stylizable.directive';\nimport { NgtStylizableService } from '../../../services/ngt-stylizable/ngt-stylizable.service';\n\n@Component({\n    selector: '[ngt-tbody]',\n    templateUrl: './ngt-tbody.component.html',\n    standalone: false\n})\nexport class NgtTbodyComponent {\n    public ngtStyle: NgtStylizableService;\n\n    public constructor(\n        private injector: Injector,\n        private hostElement: ElementRef,\n        @Self() @Optional() private ngtStylizableDirective: NgtStylizableDirective,\n    ) {\n        this.bindNgtStyle();\n    }\n\n    private bindNgtStyle() {\n        if (this.ngtStylizableDirective) {\n            this.ngtStyle = this.ngtStylizableDirective.getNgtStylizableService();\n        } else {\n            this.ngtStyle = new NgtStylizableService();\n        }\n\n        this.ngtStyle.load(this.injector, 'NgtTbody', {\n            color: {\n                bg: 'bg-white',\n                text: '',\n                border: ''\n            }\n        });\n\n        this.hostElement.nativeElement.classList += this.ngtStyle.compile([\n            'h',\n            'px',\n            'py',\n            'pb',\n            'pl',\n            'pr',\n            'pt',\n            'mb',\n            'ml',\n            'mr',\n            'mt',\n            'border',\n            'color.bg',\n            'color.text',\n            'color.border',\n            'text',\n            'font',\n        ]);\n    }\n}\n","<ng-content></ng-content>","import {\n    Component,\n    ElementRef,\n    EventEmitter,\n    Injector,\n    Input,\n    OnDestroy,\n    Optional,\n    Output,\n    Self,\n    SkipSelf,\n    ViewChild,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { NgtStylizableDirective } from '../../../directives/ngt-stylizable/ngt-stylizable.directive';\nimport { uuid } from '../../../helpers/uuid';\nimport { NgtStylizableService } from '../../../services/ngt-stylizable/ngt-stylizable.service';\nimport { NgtCheckboxComponent } from '../../forms/template-driven/ngt-checkbox/ngt-checkbox.component';\nimport { NgtDatatableComponent } from '../ngt-datatable.component';\n\n@Component({\n    selector: '[ngt-td-check]',\n    templateUrl: './ngt-td-check.component.html',\n    standalone: false\n})\nexport class NgtTdCheckComponent implements OnDestroy {\n    @ViewChild(NgtCheckboxComponent, { static: true }) public checkbox: NgtCheckboxComponent;\n    @Input() public reference: any;\n    @Input() public isDisabled: boolean;\n    @Input() public checked: boolean = false;\n    @Output() public onCheckboxInit: EventEmitter<any> = new EventEmitter();\n\n    public ngtStyle: NgtStylizableService;\n\n    private id: string = uuid();\n    private subscriptions: Array<Subscription> = [];\n    private isFirstChange: boolean = true;\n\n    public constructor(\n        private injector: Injector,\n        private hostElement: ElementRef,\n        @Self() @Optional() private ngtStylizableDirective: NgtStylizableDirective,\n        @Optional() @SkipSelf()\n        private ngtDataTable: NgtDatatableComponent\n    ) {\n        this.bindNgtStyle();\n    }\n\n    public ngAfterContentInit(): void {\n        if (this.ngtDataTable) {\n            this.subscriptions.push(\n                this.ngtDataTable.onToogleAllCheckboxes.subscribe((checked: boolean) => {\n                    this.checked = checked;\n                })\n            );\n\n            this.subscriptions.push(\n                this.ngtDataTable.onClearSelectedElements.subscribe(() => {\n                    this.checked = false;\n                })\n            );\n\n            this.onCheckboxInit.emit({\n                id: this.id,\n                checked: this.checked,\n                reference: this.reference\n            });\n        }\n    }\n\n    public ngOnDestroy(): void {\n        this.destroySubscriptions();\n    }\n\n    public onCheckboxChange(checked: boolean): void {\n        if (this.ngtDataTable && !this.isFirstChange) {\n            this.ngtDataTable.onToogleCheckbox.emit({\n                id: this.id,\n                checked: checked,\n                reference: this.reference\n            });\n        }\n\n        this.isFirstChange = false;\n    }\n\n    private bindNgtStyle(): void {\n        if (this.ngtStylizableDirective) {\n            this.ngtStyle = this.ngtStylizableDirective.getNgtStylizableService();\n        } else {\n            this.ngtStyle = new NgtStylizableService();\n        }\n\n        this.ngtStyle.load(this.injector, 'NgtTdCheck', {\n            py: 'py-4',\n            px: 'px-6',\n            text: 'text-center',\n            border: 'border-b',\n            color: {\n                border: ''\n            }\n        });\n\n        this.hostElement.nativeElement.classList += this.ngtStyle.compile([\n            'h',\n            'px',\n            'py',\n            'pb',\n            'pl',\n            'pr',\n            'pt',\n            'mb',\n            'ml',\n            'mr',\n            'mt',\n            'border',\n            'color.border',\n        ]);\n    }\n\n    private destroySubscriptions(): void {\n        this.subscriptions.forEach(subscription => subscription.unsubscribe());\n        this.subscriptions = [];\n    }\n}\n","<ngt-checkbox [(ngModel)]='checked' [isDisabled]=\"isDisabled\" (ngModelChange)='onCheckboxChange($event)'></ngt-checkbox>\n<ng-content></ng-content>","import { Component, ElementRef, Injector, Optional, Self } from '@angular/core';\n\nimport { NgtStylizableDirective } from '../../../directives/ngt-stylizable/ngt-stylizable.directive';\nimport { NgtStylizableService } from '../../../services/ngt-stylizable/ngt-stylizable.service';\n\n@Component({\n    selector: '[ngt-td]',\n    templateUrl: './ngt-td.component.html',\n    standalone: false\n})\nexport class NgtTdComponent {\n    public ngtStyle: NgtStylizableService;\n\n    public constructor(\n        private injector: Injector,\n        private hostElement: ElementRef,\n        @Self() @Optional() private ngtStylizableDirective: NgtStylizableDirective,\n    ) {\n        this.bindNgtStyle();\n    }\n\n    private bindNgtStyle() {\n        if (this.ngtStylizableDirective) {\n            this.ngtStyle = this.ngtStylizableDirective.getNgtStylizableService();\n        } else {\n            this.ngtStyle = new NgtStylizableService();\n        }\n\n        this.ngtStyle.load(this.injector, 'NgtTd', {\n            py: 'py-4',\n            px: 'px-5',\n            border: 'border-b',\n            break: 'break-words',\n            color: {\n                bg: '',\n                text: '',\n                border: ''\n            }\n        });\n\n        this.hostElement.nativeElement.classList += this.ngtStyle.compile([\n            'h',\n            'px',\n            'py',\n            'pb',\n            'pl',\n            'pr',\n            'pt',\n            'mb',\n            'ml',\n            'mr',\n            'mt',\n            'border',\n            'color.bg',\n            'color.text',\n            'color.border',\n            'text',\n            'font',\n            'break'\n        ]);\n    }\n}\n","<ng-content></ng-content>","import {\n    AfterContentInit, Component, ElementRef, Injector, OnDestroy, Optional, Self, SkipSelf, ViewChild\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { NgtTranslateService } from '../../../services/http/ngt-translate.service';\n\nimport { NgtStylizableDirective } from '../../../directives/ngt-stylizable/ngt-stylizable.directive';\nimport { NgtStylizableService } from '../../../services/ngt-stylizable/ngt-stylizable.service';\nimport { NgtCheckboxComponent } from '../../forms/template-driven/ngt-checkbox/ngt-checkbox.component';\nimport { NgtDatatableComponent } from '../ngt-datatable.component';\n\n@Component({\n    selector: '[ngt-th-check]',\n    templateUrl: './ngt-th-check.component.html',\n    standalone: false\n})\nexport class NgtThCheckComponent implements AfterContentInit, OnDestroy {\n    @ViewChild(NgtCheckboxComponent) public ngtCheckbox: NgtCheckboxComponent;\n\n    public checked = false;\n    public ngtStyle: NgtStylizableService;\n    public hasSelectedAllCheckboxes: boolean;\n\n    private subscriptions: Array<Subscription> = [];\n\n    public constructor(\n        private injector: Injector,\n        private hostElement: ElementRef,\n\n        @Self() @Optional()\n        private ngtStylizableDirective: NgtStylizableDirective,\n\n        @Optional() @SkipSelf()\n        private ngtDataTable: NgtDatatableComponent,\n\n        @Optional()\n        public ngtTranslateService: NgtTranslateService,\n    ) {\n        this.bindNgtStyle();\n\n        if (this.hasSelectedAllElements()) {\n            this.checked = true;\n            this.hasSelectedAllCheckboxes = true;\n        }\n    }\n\n    public getSelectAllElementsCheckboxStyle(): string {\n        return this.hasSelectedAllElements()\n            ? `${this.ngtCheckbox?.ngtStyle.compile(['color.bg'])} text-white`\n            : `hover:${this.ngtCheckbox?.ngtStyle.compile(['color.bg'])} hover:text-white bg-white`;\n    }\n\n    public hasSelectedAllElements(): boolean {\n        return this.ngtDataTable?.hasSelectedAllElements;\n    }\n\n    public canSelectAllFilter(): boolean {\n        return this.ngtDataTable?.canSelectAllRegisters;\n    }\n\n    public getPaginationTotal(): number {\n        return this.ngtDataTable?.ngtPagination?.getPagination()?.total;\n    }\n\n    public onToggleSelectAllElements(): void {\n        this.ngtDataTable?.onSelectAllRegisters.emit();\n    }\n\n    public ngAfterContentInit() {\n        if (this.ngtDataTable) {\n            this.subscriptions.push(\n                this.ngtDataTable.onDataChange.subscribe(() => {\n                    this.checked = false;\n                })\n            );\n\n            this.subscriptions.push(\n                this.ngtDataTable.onClearSelectedElements.subscribe(() => {\n                    this.checked = false;\n                })\n            );\n        }\n    }\n\n    public ngOnDestroy() {\n        this.destroySubscriptions();\n    }\n\n    public onCheckboxChange(checked: boolean) {\n        if (this.ngtDataTable) {\n            this.ngtDataTable.onToogleAllCheckboxes.emit(checked);\n            this.hasSelectedAllCheckboxes = checked;\n            this.checked = checked;\n\n            if (!checked && this.hasSelectedAllElements()) {\n                this.hasSelectedAllCheckboxes = true;\n                this.checked = true;\n            }\n        }\n    }\n\n    private bindNgtStyle() {\n        if (this.ngtStylizableDirective) {\n            this.ngtStyle = this.ngtStylizableDirective.getNgtStylizableService();\n        } else {\n            this.ngtStyle = new NgtStylizableService();\n        }\n\n        this.ngtStyle.load(this.injector, 'NgtThCheck', {\n            py: 'py-4',\n            px: 'px-6',\n            text: 'text-center',\n            border: 'border-b',\n            color: {\n                border: '',\n                bg: 'bg-gray-500',\n                text: 'text-white'\n            }\n        });\n\n        this.hostElement.nativeElement.classList += this.ngtStyle.compile([\n            'h',\n            'px',\n            'py',\n            'pb',\n            'pl',\n            'pr',\n            'pt',\n            'mb',\n            'ml',\n            'mr',\n            'mt',\n            'border',\n            'color.border',\n            'color.bg',\n            'color.text'\n        ]);\n    }\n\n    private destroySubscriptions() {\n        this.subscriptions.forEach(subscription => subscription.unsubscribe());\n        this.subscriptions = [];\n    }\n}\n","<ng-container *ngIf=\"canSelectAllFilter(); else default\">\n    <div class=\"flex items-center content-center relative w-10\">\n        <ngt-checkbox [(ngModel)]='checked' (ngModelChange)='onCheckboxChange($event)'\n            (click)=\"$event.stopPropagation()\">\n        </ngt-checkbox>\n\n        <div *ngIf=\"hasSelectedAllCheckboxes\" class=\"rounded-md border border-gray-400 p-1 ml-1 cursor-pointer relative\"\n            [ngClass]=\"getSelectAllElementsCheckboxStyle()\"\n            [title]=\"hasSelectedAllElements() ? ngtTranslateService.ngtDatatableClearSelection : ngtTranslateService.ngtDatatableSelectAllRegisters\"\n            (click)=\"onToggleSelectAllElements()\">\n            <svg class=\"fill-current self-center h-4\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\">\n                <path\n                    d=\"M342.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L160 178.7l-57.4-57.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l80 80c12.5 12.5 32.8 12.5 45.3 0l160-160zm96 128c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L160 402.7 54.6 297.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l128 128c12.5 12.5 32.8 12.5 45.3 0l256-256z\" />\n            </svg>\n\n            <div *ngIf=\"hasSelectedAllElements()\"\n                class=\"rounded-xl absolute top-0 text-xs right-0 -mt-5 -mr-2 py-1 px-2 text-center text-white bg-blue-500\">\n                {{ getPaginationTotal() }}\n            </div>\n        </div>\n    </div>\n</ng-container>\n\n<ng-template #default>\n    <ngt-checkbox [(ngModel)]='checked' (ngModelChange)='onCheckboxChange($event)' (click)=\"$event.stopPropagation()\">\n    </ngt-checkbox>\n</ng-template>\n\n<ng-content></ng-content>\n","import {\n    AfterViewInit,\n    Component,\n    ElementRef,\n    EventEmitter,\n    Injector,\n    Input,\n    OnChanges,\n    OnDestroy,\n    Optional,\n    Output,\n    Self,\n    SimpleChanges,\n    SkipSelf,\n    TemplateRef,\n    ViewChild,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { NgtStylizableDirective } from '../../../directives/ngt-stylizable/ngt-stylizable.directive';\nimport { NgtStylizableService } from '../../../services/ngt-stylizable/ngt-stylizable.service';\nimport { NgtInputComponent } from '../../forms/template-driven/ngt-input/ngt-input.component';\nimport { NgtDatatableComponent } from '../ngt-datatable.component';\n\n@Component({\n    selector: '[ngt-th]',\n    templateUrl: './ngt-th.component.html',\n    standalone: false\n})\nexport class NgtThComponent implements OnChanges, OnDestroy, AfterViewInit {\n    @ViewChild('searchInput') public searchInput: NgtInputComponent;\n    @ViewChild('modal', { static: true }) public modal: TemplateRef<any>;\n\n    @Input() public reference: string;\n    @Input() public sortReference: string;\n    @Input() public modalWidth: string = 'md:max-w-md';\n    @Input() public searchModalOverflow: string = 'overflow-visible';\n    @Input() public sortable: boolean;\n    @Input() public searchable: boolean;\n    @Input() public hasCustomSearch: boolean = false;\n    @Input() public searchLabel: string;\n    @Input() public searchIcon: string;\n    @Input() public sortableTooltip: NgtSortableTooltip = {\n        ascending: 'Ordenar de Z a A',\n        descending: 'Limpar ordenação',\n        unordered: 'Ordenar de A a Z'\n    };\n\n    @Output() public onEnableSearch = new EventEmitter();\n\n    public inputFocused: boolean = false;\n    public isCurrentSort = false;\n    public sortDirection = '';\n    public searchTerm: any;\n    public customSearchTerm: any;\n\n    public ngtStyle: NgtStylizableService;\n    public filterModalHeaderStyle: NgtStylizableService = new NgtStylizableService();\n    public filterModalBodyStyle: NgtStylizableService = new NgtStylizableService();\n\n    private subscriptions: Array<Subscription> = [];\n\n    public constructor(\n        private injector: Injector,\n        private hostElement: ElementRef,\n        @Self() @Optional() private ngtStylizableDirective: NgtStylizableDirective,\n        @Optional() @SkipSelf()\n        public ngtDataTable: NgtDatatableComponent\n    ) {\n        if (this.checkDataTable()) {\n            this.subscriptions.push(\n                this.ngtDataTable.onDataChange.subscribe(() => {\n                    this.isCurrentSort = this.ngtDataTable.getCurrentSort().field == this.getSortReference();\n\n                    if (this.isCurrentSort) {\n                        this.sortDirection = this.ngtDataTable.getCurrentSort().direction;\n                    }\n                })\n            );\n\n            this.subscriptions.push(\n                this.ngtDataTable.onClearFilter.subscribe((reference) => {\n                    if (reference == this.reference || !reference) {\n                        this.searchTerm = '';\n                        this.customSearchTerm = null;\n                    }\n                })\n            );\n        }\n\n        this.bindNgtStyle();\n    }\n\n    public ngOnChanges(changes: SimpleChanges) {\n        if (changes.searchLabel && this.checkDataTable) {\n            this.ngtDataTable.setFilterDescription(this.reference, this.searchLabel);\n        }\n    }\n\n    public ngAfterViewInit(): void {\n        this.applyHeadBgColor();\n    }\n\n    public ngOnDestroy() {\n        this.destroySubscriptions();\n    }\n\n    public async sort() {\n        if (this.sortable && this.checkDataTable() && this.checkReference()) {\n            let sortDirection = this.getNextSortDirection();\n\n            if (sortDirection) {\n                await this.ngtDataTable.sort(this.getSortReference(), sortDirection);\n            } else {\n                this.ngtDataTable.sort('', '');\n            }\n\n            this.sortDirection = sortDirection;\n        }\n    }\n\n    public enableSearch(event: any) {\n        event.stopPropagation();\n\n        this.ngtDataTable.searchModal.ngtStyle.w = this.modalWidth;\n        this.ngtDataTable.searchModal.ngtStyle.overflow = this.searchModalOverflow;\n\n        this.ngtDataTable.setSearchModalTemplate(this.modal);\n        this.ngtDataTable.openSearchModal(this.reference);\n\n        setTimeout(() => {\n            if (this.searchInput) {\n                this.searchInput.setFocus();\n            }\n        }, 100);\n\n        this.onEnableSearch.emit();\n    }\n\n    public search(term: any) {\n        if (!this.hasCustomSearch && this.searchTerm === undefined\n            && this.customSearchTerm === undefined && !term) {\n            return;\n        }\n\n        if (this.searchable && this.reference) {\n            let filter = {};\n\n            filter[this.reference] = term;\n            this.ngtDataTable.search(filter);\n        }\n    }\n\n    public customSearch(term: any) {\n        this.customSearchTerm = term;\n    }\n\n    public getTooltip() {\n        if (this.sortable && this.sortableTooltip) {\n            if (this.sortDirection == 'asc') {\n                return this.sortableTooltip.ascending;\n            } else if (this.sortDirection == 'desc') {\n                return this.sortableTooltip.descending;\n            }\n\n            return this.sortableTooltip.unordered;\n        }\n\n        return '';\n    }\n\n    private getSortReference() {\n        return this.sortReference ? this.sortReference : this.reference;\n    }\n\n    private checkDataTable() {\n        if (!this.ngtDataTable) {\n            console.error('The [ngt-th] must be inside of a [ngt-datatable]');\n\n            return false;\n        }\n\n        return true;\n    }\n\n    private checkReference() {\n        if (!this.reference && !this.sortReference) {\n            console.error('The [ngt-th] must have a [reference] or a [sortReference] property to be able to sort');\n\n            return false;\n        }\n\n        return true;\n    }\n\n    private getNextSortDirection() {\n        switch (this.sortDirection) {\n            case 'asc': return 'desc';\n            case 'desc': return '';\n            case '': return 'asc';\n        }\n    }\n\n    private bindNgtStyle() {\n        if (this.ngtStylizableDirective) {\n            this.ngtStyle = this.ngtStylizableDirective.getNgtStylizableService();\n        } else {\n            this.ngtStyle = new NgtStylizableService();\n        }\n\n        this.ngtStyle.load(this.injector, 'NgtTh', {\n            py: 'py-4',\n            px: 'px-6',\n            font: 'font-bold',\n            text: 'text-sm',\n            border: 'border-b',\n            justifyContent: 'justify-center',\n            color: {\n                bg: '',\n                text: '',\n                border: ''\n            }\n        });\n\n        this.hostElement.nativeElement.classList += this.ngtStyle.compile([\n            'h',\n            'px',\n            'py',\n            'pb',\n            'pl',\n            'pr',\n            'pt',\n            'mb',\n            'ml',\n            'mr',\n            'mt',\n            'border',\n            'color.bg',\n            'color.text',\n            'color.border',\n            'text',\n            'font',\n        ]);\n\n        this.filterModalHeaderStyle.load(this.injector, 'FilterModalHeader', {\n            pb: 'pb-3',\n            color: {}\n        });\n\n        this.filterModalBodyStyle.load(this.injector, 'FilterModalBody', {\n            px: 'px-0',\n            py: 'py-0'\n        });\n    }\n\n    private applyHeadBgColor(): void {\n        const headBgColor = (this.ngtDataTable && this.ngtDataTable.headBgColor);\n\n        if (headBgColor) {\n            const element = this.hostElement.nativeElement;\n\n            Array.from(element.classList).forEach((cls: string) => {\n                if (cls.startsWith('bg-')) {\n                    element.classList.remove(cls);\n                }\n            });\n\n            element.classList.add(headBgColor);\n        }\n    }\n\n    private destroySubscriptions() {\n        this.subscriptions.forEach(subscription => subscription.unsubscribe());\n        this.subscriptions = [];\n    }\n}\n\nexport interface NgtSortableTooltip {\n    ascending: string;\n    descending: string;\n    unordered: string;\n}\n","<div class=\"flex items-center w-full {{ ngtStyle.compile(['justifyContent']) }}\" [title]=\"getTooltip()\" (click)='sort()'\n    [class.cursor-pointer]='sortable'>\n    <ng-content></ng-content>\n    <ng-container *ngIf='sortable && isCurrentSort'>\n        <svg *ngIf=\"sortDirection == 'asc'\" class=\"fill-current self-center cursor-pointer ml-1\"\n            xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\">\n            <path d=\"M9.293 12.95l.707.707L15.657 8l-1.414-1.414L10 10.828 5.757 6.586 4.343 8z\" />\n        </svg>\n\n        <svg *ngIf=\"sortDirection == 'desc'\" class=\"fill-current self-center cursor-pointer ml-1\"\n            xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\">\n            <path d=\"M10.707 7.05L10 6.343 4.343 12l1.414 1.414L10 9.172l4.243 4.242L15.657 12z\" />\n        </svg>\n    </ng-container>\n\n    <ng-container *ngIf='searchable'>\n        <div (click)='enableSearch($event)' class=\"float-right ml-2\" title=\"Filtrar\">\n            <ngt-action class=\"text-lg\" h='h-6' w='w-6' [forceEnable]=\"true\" ngt-stylizable>\n                <svg class=\"fill-current self-center\" viewBox=\"0 0 1792 1792\" xmlns=\"http://www.w3.org/2000/svg\">\n                    <path\n                        d=\"M1595 295q17 41-14 70l-493 493v742q0 42-39 59-13 5-25 5-27 0-45-19l-256-256q-19-19-19-45V858L211 365q-31-29-14-70 17-39 59-39h1280q42 0 59 39z\" />\n                </svg>\n            </ngt-action>\n        </div>\n    </ng-container>\n</div>\n\n<ng-template #modal>\n    <ngt-modal-header [disableDefaultCloses]=\"ngtDataTable.searchModal.disableDefaultCloses\"\n        [ngtStyle]=\"filterModalHeaderStyle\" (onClose)=\"ngtDataTable.searchModal.close()\">\n        <ngt-svg *ngIf=\"searchIcon\" [src]=\"searchIcon\" class=\"text-sm\">\n        </ngt-svg>\n\n        <svg *ngIf=\"!searchIcon\" class=\"fill-current self-center text-sm\" viewBox=\"0 0 12 12\"\n            xmlns=\"http://www.w3.org/2000/svg\">\n            <path\n                d=\"M7.0042 6.84417L11.8042 2.04417V-0.355835H-0.195801V2.04417L4.6042 6.84417V11.6442L7.0042 9.24417V6.84417Z\" />\n        </svg>\n\n        <span *ngIf=\"searchLabel\" class=\"font-semibold text-sm ml-2\">\n            {{ searchLabel }}\n        </span>\n\n        <ng-content select='[customSearchHeader]'></ng-content>\n    </ngt-modal-header>\n\n    <ngt-modal-body [isDisabled]=\"false\" [ngtStyle]=\"filterModalBodyStyle\">\n        <ngt-input *ngIf=\"!hasCustomSearch\" jit='true' [(ngModel)]='searchTerm' (ngModelChange)='search($event)'\n            placeholder='Pesquisar...' name='{{ reference }}_filter' #searchInput>\n        </ngt-input>\n\n        <div [hidden]='!hasCustomSearch'>\n            <ng-content select='[customSearch]'></ng-content>\n        </div>\n    </ngt-modal-body>\n</ng-template>","import { AfterViewInit, Component, ElementRef, Injector, Optional, Self, SkipSelf } from '@angular/core';\n\nimport { NgtStylizableDirective } from '../../../directives/ngt-stylizable/ngt-stylizable.directive';\nimport { NgtStylizableService } from '../../../services/ngt-stylizable/ngt-stylizable.service';\nimport { NgtDatatableComponent } from '../ngt-datatable.component';\n\n@Component({\n    selector: '[ngt-thead]',\n    templateUrl: './ngt-thead.component.html',\n    standalone: false\n})\nexport class NgtTheadComponent implements AfterViewInit {\n    public ngtStyle: NgtStylizableService;\n\n    public constructor(\n        private injector: Injector,\n        private hostElement: ElementRef,\n        @Self() @Optional() private ngtStylizableDirective: NgtStylizableDirective,\n        @SkipSelf() @Optional() private ngtDatatable: NgtDatatableComponent,\n    ) {\n        if (this.ngtStylizableDirective) {\n            this.ngtStyle = this.ngtStylizableDirective.getNgtStylizableService();\n        } else {\n            this.ngtStyle = new NgtStylizableService();\n        }\n\n        this.ngtStyle.load(this.injector, 'NgtThead', {\n            color: {\n                bg: 'bg-gray-200',\n                text: '',\n                border: ''\n            }\n        });\n\n        this.hostElement.nativeElement.classList += this.ngtStyle.compile([\n            'h',\n            'px',\n            'py',\n            'pb',\n            'pl',\n            'pr',\n            'pt',\n            'mb',\n            'ml',\n            'mr',\n            'mt',\n            'border',\n            'color.bg',\n            'color.text',\n            'color.border',\n            'text',\n            'font',\n            'rounded'\n        ]);\n    }\n\n    public ngAfterViewInit(): void {\n        this.applyHeadBgColor();\n    }\n\n    private applyHeadBgColor(): void {\n        const headBgColor = (this.ngtDatatable && this.ngtDatatable.headBgColor) || 'bg-gray-200';\n        const element = this.hostElement.nativeElement;\n\n        Array.from(element.classList).forEach((cls: string) => {\n            if (cls.startsWith('bg-')) {\n                element.classList.remove(cls);\n            }\n        });\n\n        element.classList.add(headBgColor);\n    }\n}\n","<ng-content></ng-content>","import {\n    Component,\n    ElementRef,\n    HostBinding,\n    Injector,\n    Input,\n    Optional,\n    Self,\n    SkipSelf,\n    ViewEncapsulation,\n} from '@angular/core';\n\nimport { NgtStylizableDirective } from '../../../directives/ngt-stylizable/ngt-stylizable.directive';\nimport { NgtStylizableService } from '../../../services/ngt-stylizable/ngt-stylizable.service';\nimport { NgtTbodyComponent } from '../ngt-tbody/ngt-tbody.component';\nimport { NgtTheadComponent } from '../ngt-thead/ngt-thead.component';\n\n@Component({\n    selector: '[ngt-tr]',\n    templateUrl: './ngt-tr.component.html',\n    styleUrls: ['./ngt-tr.component.css'],\n    encapsulation: ViewEncapsulation.None,\n    standalone: false\n})\nexport class NgtTrComponent {\n    @HostBinding('class.evenStripped') @Input() public evenStripped: boolean;\n    @HostBinding('class.oddStripped') @Input() public oddStripped: boolean;\n\n    public ngtStyle: NgtStylizableService;\n\n    public constructor(\n        private injector: Injector,\n        private hostElement: ElementRef,\n        @SkipSelf() @Optional() private ngtThead: NgtTheadComponent,\n        @SkipSelf() @Optional() private ngtTbody: NgtTbodyComponent,\n        @Self() @Optional() private ngtStylizableDirective: NgtStylizableDirective,\n    ) {\n        if (this.ngtStylizableDirective) {\n            this.ngtStyle = this.ngtStylizableDirective.getNgtStylizableService();\n        } else {\n            this.ngtStyle = new NgtStylizableService();\n        }\n\n        this.ngtStyle.load(this.injector, 'NgtTr', {\n            border: 'border-r border-t md:border-r-0 md:border-t-0',\n            color: {\n                bg: '',\n                text: '',\n                border: ''\n            }\n        }, [this.getInheritanceStyles()]);\n\n        this.hostElement.nativeElement.classList += this.ngtStyle.compile([\n            'h',\n            'px',\n            'py',\n            'pb',\n            'pl',\n            'pr',\n            'pt',\n            'mb',\n            'ml',\n            'mr',\n            'mt',\n            'border',\n            'color.bg',\n            'color.text',\n            'color.border',\n            'text',\n            'font',\n        ]);\n    }\n\n    private getInheritanceStyles() {\n        if (this.ngtThead) {\n            return 'NgtTheadStyle';\n        } else if (this.ngtTbody) {\n            return 'NgtTbodyStyle';\n        }\n\n        return '';\n    }\n}\n","<ng-content></ng-content>","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { NgtStylizableModule } from '../../directives/ngt-stylizable/ngt-stylizable.module';\nimport { NgtActionModule } from '../ngt-action/ngt-action.module';\nimport { NgtCheckboxModule } from '../forms/template-driven/ngt-checkbox/ngt-checkbox.module';\nimport { NgtInputModule } from '../forms/template-driven/ngt-input/ngt-input.module';\nimport { NgtModalModule } from '../ngt-modal/ngt-modal.module';\nimport { NgtPaginationModule } from '../ngt-pagination/ngt-pagination.module';\nimport { NgtShiningModule } from '../ngt-shining/ngt-shining.module';\nimport { NgtTagModule } from '../ngt-tag/ngt-tag.module';\nimport { NgtDatatableComponent } from './ngt-datatable.component';\nimport { NgtTbodyComponent } from './ngt-tbody/ngt-tbody.component';\nimport { NgtTdCheckComponent } from './ngt-td-check/ngt-td-check.component';\nimport { NgtTdComponent } from './ngt-td/ngt-td.component';\nimport { NgtThCheckComponent } from './ngt-th-check/ngt-th-check.component';\nimport { NgtThComponent } from './ngt-th/ngt-th.component';\nimport { NgtTheadComponent } from './ngt-thead/ngt-thead.component';\nimport { NgtTrComponent } from './ngt-tr/ngt-tr.component';\nimport { NgtSvgModule } from '../ngt-svg/ngt-svg.module';\n\n@NgModule({\n    declarations: [\n        NgtDatatableComponent,\n        NgtTbodyComponent,\n        NgtTdComponent,\n        NgtTdCheckComponent,\n        NgtThComponent,\n        NgtThCheckComponent,\n        NgtTheadComponent,\n        NgtTrComponent\n    ],\n    exports: [\n        NgtDatatableComponent,\n        NgtTbodyComponent,\n        NgtTdComponent,\n        NgtTdCheckComponent,\n        NgtThComponent,\n        NgtThCheckComponent,\n        NgtTheadComponent,\n        NgtTrComponent\n    ],\n    imports: [\n        CommonModule,\n        FormsModule,\n        NgtShiningModule,\n        NgtPaginationModule,\n        NgtCheckboxModule,\n        NgtInputModule,\n        NgtModalModule,\n        NgtTagModule,\n        NgtActionModule,\n        NgtStylizableModule,\n        NgtSvgModule\n    ]\n})\nexport class NgtDatatableModule { }\n","import { Component, Injector, Optional, Self } from '@angular/core';\n\nimport { NgtStylizableDirective } from '../../../directives/ngt-stylizable/ngt-stylizable.directive';\nimport { NgtStylizableService } from '../../../services/ngt-stylizable/ngt-stylizable.service';\n\n@Component({\n    selector: 'ngt-portlet-body',\n    templateUrl: './ngt-portlet-body.component.html',\n    standalone: false\n})\nexport class NgtPortletBodyComponent {\n    public ngtStyle: NgtStylizableService;\n\n    public constructor(\n        private injector: Injector,\n        @Self() @Optional() private ngtStylizableDirective: NgtStylizableDirective,\n    ) {\n        if (this.ngtStylizableDirective) {\n            this.ngtStyle = this.ngtStylizableDirective.getNgtStylizableService();\n        } else {\n            this.ngtStyle = new NgtStylizableService();\n        }\n\n        this.ngtStyle.load(this.injector, 'NgtPortletBody', {\n            color: {\n                text: 'text-black'\n            },\n            py: 'py-6',\n            px: 'px-4 md:px-8'\n        }, ['NgtPortletStyle']);\n    }\n}\n","<div class=\"{{ ngtStyle.compile(['color.text', 'color.bg', 'py', 'px']) }}\">\n    <ng-content></ng-content>\n</div>\n","import { Component, Injector, Optional, Self } from '@angular/core';\n\nimport { NgtStylizableDirective } from '../../../directives/ngt-stylizable/ngt-stylizable.directive';\nimport { NgtStylizableService } from '../../../services/ngt-stylizable/ngt-stylizable.service';\n\n@Component({\n    selector: 'ngt-portlet-footer',\n    templateUrl: './ngt-portlet-footer.component.html',\n    standalone: false\n})\nexport class NgtPortletFooterComponent {\n    public ngtStyle: NgtStylizableService;\n\n    public constructor(\n        private injector: Injector,\n        @Self() @Optional() private ngtStylizableDirective: NgtStylizableDirective,\n    ) {\n        if (this.ngtStylizableDirective) {\n            this.ngtStyle = this.ngtStylizableDirective.getNgtStylizableService();\n        } else {\n            this.ngtStyle = new NgtStylizableService();\n        }\n\n        this.ngtStyle.load(this.injector, 'NgtPortletFooter', {\n            px: 'px-6',\n            py: 'py-3',\n            color: {\n                bg: 'bg-gray-200',\n                text: 'text-black'\n            }\n        }, ['NgtPortletStyle']);\n    }\n}\n","<div class=\"block w-full {{ ngtStyle.compile(['color.text', 'color.bg', 'px', 'py', 'pb']) }}\">\n    <div class=\"block w-full\">\n        <ng-content></ng-content>\n    </div>\n\n    <div class=\"block md:float-left w-full md:w-auto\">\n        <ng-content select=\"[left-footer]\"></ng-content>\n    </div>\n\n    <div class=\"block md:float-right w-full md:w-auto\">\n        <ng-content select=\"[right-footer]\"></ng-content>\n    </div>\n</div>","import { Component, Injector, Input, Optional, Self } from '@angular/core';\n\nimport { NgtStylizableDirective } from '../../../directives/ngt-stylizable/ngt-stylizable.directive';\nimport { NgtStylizableService } from '../../../services/ngt-stylizable/ngt-stylizable.service';\n\n@Component({\n    selector: 'ngt-portlet-header',\n    templateUrl: './ngt-portlet-header.component.html',\n    standalone: false\n})\nexport class NgtPortletHeaderComponent {\n    @Input() public caption: string = '';\n    @Input() public icon: string = '';\n    @Input() public iconSize: string = 'text-xl';\n    @Input() public helperTitle: string = '';\n    @Input() public helperText: string = '';\n    @Input() public helperIconColor: string = '';\n\n    public ngtStyle: NgtStylizableService;\n\n    public constructor(\n        private injector: Injector,\n        @Self() @Optional() private ngtStylizableDirective: NgtStylizableDirective,\n    ) {\n        if (this.ngtStylizableDirective) {\n            this.ngtStyle = this.ngtStylizableDirective.getNgtStylizableService();\n        } else {\n            this.ngtStyle = new NgtStylizableService();\n        }\n\n        this.ngtStyle.load(this.injector, 'NgtPortletHeader', {\n            h: 'h-auto',\n            w: 'w-auto',\n            text: 'text-xl',\n            font: 'font-medium',\n            border: 'border-b',\n            px: 'px-4',\n            color: {}\n        }, ['NgtPortletStyle']);\n    }\n}\n","<div [class]=\"ngtStyle.compile(['h', 'color.text', 'color.bg', 'border', 'text'])\">\n    <div class=\"flex flex-wrap md:flex-nowrap h-full relative {{ ngtStyle.compile(['px']) }} py-2\">\n        <div *ngIf=\"caption || icon\" class=\"flex md:whitespace-nowrap items-center gap-2\">\n            <ngt-svg *ngIf=\"icon\" [src]=\"icon\" [class]=\"iconSize\"></ngt-svg>\n\n            <div class=\"flex self-center gap-1 {{ ngtStyle.compile(['font']) }}\">\n                {{ caption }}\n\n                <ngt-helper *ngIf=\"helperText\" [helpTitle]=\"helperTitle\" class=\"mt-1\" [iconColor]=\"helperIconColor\">\n                    {{ helperText }}\n                </ngt-helper>\n            </div>\n        </div>\n\n        <div [hidden]='!leftHeader?.children[0]?.children?.length'\n            class=\"self-center {{ ngtStyle.compile(['position', 'w']) }}\" #leftHeader>\n            <ng-content select=\"[left-header]\"></ng-content>\n        </div>\n\n        <div [hidden]='!header?.children[0]?.children?.length'\n            class=\"self-center {{ ngtStyle.compile(['position', 'w']) }}\" #header>\n            <ng-content select=\"[header]\"></ng-content>\n        </div>\n\n        <div class=\"{{ !rightHeader?.children[0]?.children?.length ? 'hidden' : 'flex justify-end ml-auto self-center' }} {{ ngtStyle.compile(['position', 'w']) }}\"\n            #rightHeader>\n            <ng-content select=\"[right-header]\"></ng-content>\n        </div>\n    </div>\n</div>","import { animate, state, style, transition, trigger } from '@angular/animations';\nimport { Component, Injector, Input, Optional, Self } from '@angular/core';\n\nimport { NgtStylizableDirective } from '../../directives/ngt-stylizable/ngt-stylizable.directive';\nimport { NgtStylizableService } from '../../services/ngt-stylizable/ngt-stylizable.service';\n\n@Component({\n    selector: 'ngt-portlet',\n    templateUrl: './ngt-portlet.component.html',\n    animations: [\n        trigger('fadeUp', [\n            state('void', style({ transform: 'translateY(20px)', opacity: 0 })),\n            transition(':enter', [\n                animate(500)\n            ])\n        ])\n    ],\n    standalone: false\n})\nexport class NgtPortletComponent {\n    @Input() public caption: string;\n    @Input() public icon: string = null;\n    @Input() public customLayout: boolean = false;\n    @Input() public withFooter: boolean = false;\n    @Input() public withBody: boolean = true;\n    @Input() public helpTitle: string = '';\n    @Input() public helpText: string = '';\n    @Input() public helpIconColor: string = '';\n\n    public ngtStyle: NgtStylizableService;\n\n    public constructor(\n        private injector: Injector,\n        @Self() @Optional() private ngtStylizableDirective: NgtStylizableDirective,\n    ) {\n        if (this.ngtStylizableDirective) {\n            this.ngtStyle = this.ngtStylizableDirective.getNgtStylizableService();\n        } else {\n            this.ngtStyle = new NgtStylizableService();\n        }\n\n        this.ngtStyle.load(this.injector, 'NgtPortlet', {\n            h: 'h-auto',\n            shadow: 'shadow',\n            color: {}\n        });\n    }\n}\n","<div class=\"w-full {{ ngtStyle.compile(['h', 'color.bg', 'color.text', 'p', 'px', 'py', 'pl', 'pr', 'pt', 'pb', 'm', 'mx', 'my', 'ml', 'mr', 'mt', 'mb', 'shadow']) }}\"\n    @fadeUp>\n    <div *ngIf=\"!customLayout\">\n        <ngt-portlet-header [icon]='icon' [caption]='caption' [helperText]=\"helpText\" [helperTitle]=\"helpTitle\"\n            [helperIconColor]=\"helpIconColor\">\n            <div right-header>\n                <ng-content select='[right-header]'></ng-content>\n            </div>\n\n            <div left-header>\n                <ng-content select='[left-header]'></ng-content>\n            </div>\n\n            <div header>\n                <ng-content select='[header]'></ng-content>\n            </div>\n        </ngt-portlet-header>\n    </div>\n\n    <ng-container *ngIf=\"!customLayout && withBody\">\n        <ngt-portlet-body>\n            <ng-content select='[body]'></ng-content>\n        </ngt-portlet-body>\n    </ng-container>\n\n    <ng-container *ngIf=\"!customLayout && withFooter\">\n        <ngt-portlet-footer>\n            <div right-footer>\n                <ng-content select='[right-footer]'></ng-content>\n            </div>\n\n            <div left-footer>\n                <ng-content select='[left-footer]'></ng-content>\n            </div>\n\n            <div footer>\n                <ng-content select='[footer]'></ng-content>\n            </div>\n        </ngt-portlet-footer>\n    </ng-container>\n\n    <ng-content></ng-content>\n</div>","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { NgtHelperComponent } from '../ngt-helper/ngt-helper.component';\nimport { NgtSvgModule } from '../ngt-svg/ngt-svg.module';\nimport { NgtPortletBodyComponent } from './ngt-portlet-body/ngt-portlet-body.component';\nimport { NgtPortletFooterComponent } from './ngt-portlet-footer/ngt-portlet-footer.component';\nimport { NgtPortletHeaderComponent } from './ngt-portlet-header/ngt-portlet-header.component';\nimport { NgtPortletComponent } from './ngt-portlet.component';\n\n@NgModule({\n    declarations: [\n        NgtPortletComponent,\n        NgtPortletHeaderComponent,\n        NgtPortletBodyComponent,\n        NgtPortletFooterComponent\n    ],\n    exports: [\n        NgtPortletComponent,\n        NgtPortletHeaderComponent,\n        NgtPortletBodyComponent,\n        NgtPortletFooterComponent\n    ],\n    imports: [\n        CommonModule,\n        NgtSvgModule,\n        NgtHelperComponent\n    ]\n})\nexport class NgtPortletModule { }\n","export enum Size {\n    AUTO = 'AUTO',\n    XS = 'XS',\n    SM = 'SM',\n    MD = 'MD',\n    XL = 'XL',\n    FULL = 'FULL'\n};\n","import { Component, Injector, Input, Optional, Self } from '@angular/core';\n\nimport { NgtStylizableDirective } from '../../directives/ngt-stylizable/ngt-stylizable.directive';\nimport { NgtStylizableService } from '../../services/ngt-stylizable/ngt-stylizable.service';\n\n@Component({\n    selector: 'ngt-content',\n    templateUrl: './ngt-content.component.html',\n    standalone: false\n})\nexport class NgtContentComponent {\n    @Input() public ngtStyle: NgtStylizableService;\n\n    public constructor(\n        private injector: Injector,\n        @Self() @Optional() private tailStylizableDirective: NgtStylizableDirective\n    ) {\n        if (this.tailStylizableDirective) {\n            this.ngtStyle = this.tailStylizableDirective.getNgtStylizableService();\n        } else {\n            this.ngtStyle = new NgtStylizableService();\n        }\n\n        this.ngtStyle.load(this.injector, 'Content', {\n            color: {}\n        });\n    }\n}\n","<div class=\"flex flex-col\">\n    <div class='flex-grow {{ ngtStyle.compile([\"color.bg\"]) }}'>\n        <ng-content></ng-content>\n    </div>\n</div>","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { NgtContentComponent } from './ngt-content.component';\n\n@NgModule({\n    declarations: [NgtContentComponent],\n    exports: [NgtContentComponent],\n    imports: [\n        CommonModule\n    ]\n})\nexport class NgtContentModule { }\n","import { animate, state, style, transition, trigger } from '@angular/animations';\nimport { Component, EventEmitter, HostListener, Output, TemplateRef } from '@angular/core';\n\nexport enum NgtPopoverPosition {\n    DEFAULT = 'TOP',\n    TOP = 'TOP',\n    BOTTOM = 'BOTTOM',\n}\n\n@Component({\n    selector: 'ngt-popover-tooltip',\n    templateUrl: './ngt-popover-tooltip.component.html',\n    animations: [\n        trigger('enterAnimation', [\n            state('void', style({ transform: 'translateY(-20px)', opacity: 0 })),\n            transition(':enter', [\n                animate(200)\n            ])\n        ]),\n    ],\n    standalone: false\n})\nexport class NgtPopoverTooltipComponent {\n    @Output() public onMouseHoverEvent: EventEmitter<void> = new EventEmitter();\n    @Output() public onMouseLeaveEvent: EventEmitter<void> = new EventEmitter();\n\n    public popover: string;\n    public popoverTemplate: TemplateRef<any>;\n    public position: NgtPopoverPosition = NgtPopoverPosition.DEFAULT;\n    public positionX: number;\n    public positionY: number;\n\n    public positionClasses: any = {\n        [NgtPopoverPosition.TOP]: '-mt-10',\n        [NgtPopoverPosition.BOTTOM]: '-mb-10',\n    };\n\n    public popoverTemplateStyle: string = 'text-xxs';\n\n    @HostListener('mouseleave')\n    public onMouseLeave(): void {\n        this.onMouseLeaveEvent.emit();\n    }\n\n    @HostListener('mouseenter')\n    public onMouseEnter(): void {\n        this.onMouseHoverEvent.emit();\n    }\n}\n","<div class=\"bg-white rounded-lg shadow-2xl border border-gray-200 absolute max-w-7xl\"\n    [ngClass]=\"positionClasses[position]\" [style.left.px]=\"positionX\" [style.top.px]=\"positionY\"\n    style=\"z-index: 999999 !important; width: max-content !important;\" (click)=\"$event.stopPropagation()\"\n    @enterAnimation>\n\n    <div *ngIf=\"!popoverTemplate; else showTemplate\"\n        class=\"px-2 py-1 text-gray-700 whitespace-nowrap {{popoverTemplateStyle}}\">\n        {{ popover }}\n    </div>\n\n    <ng-template #showTemplate>\n        <ng-container [ngTemplateOutlet]=\"popoverTemplate\"></ng-container>\n    </ng-template>\n</div>","import {\n    Component, ElementRef, EventEmitter, Injector, Input, Optional, Output, Self, ViewChild\n} from '@angular/core';\n\nimport { NgtStylizableDirective } from '../../directives/ngt-stylizable/ngt-stylizable.directive';\nimport { NgtTranslateService } from '../../services/http/ngt-translate.service';\nimport { NgtStylizableService } from '../../services/ngt-stylizable/ngt-stylizable.service';\n\nexport enum NgtPopoverOpenMethod {\n    CLICK = 'CLICK',\n    POPOVER_CLICK = 'POPOVER_CLICK',\n    RIGHT_CLICK = 'RIGHT_CLICK',\n    HOVER = 'HOVER'\n}\n\n@Component({\n    selector: 'ngt-popover',\n    templateUrl: './ngt-popover.component.html',\n    standalone: false\n})\n\nexport class NgtPopoverComponent {\n    @ViewChild('dropdownRef', { static: true }) public dropdownRef: ElementRef;\n    @ViewChild('hostDiv') public hostDiv: ElementRef;\n\n    @Input() public closeTimeout: number;\n    @Input() public openMethod: string = NgtPopoverOpenMethod.HOVER;\n\n    @Input() public closeOnClick: boolean;\n    @Input() public placeOnBottom: boolean;\n    @Input() public placeOnLeft: boolean;\n\n    @Output() public onClick: EventEmitter<any> = new EventEmitter();\n\n    public ngtStyle: NgtStylizableService;\n\n    public stylesToCompile: Array<string> = ['h', 'w', 'px', 'py', 'm', 'mx', 'my', 'shadow', 'text', 'border', 'color.border', 'color.bg', 'color.text'];\n\n    private clickTimeout;\n\n    public constructor(\n        @Optional() @Self()\n        public ngtStylizableDirective: NgtStylizableDirective,\n        @Optional()\n        public ngtTranslateService: NgtTranslateService,\n        private injector: Injector,\n    ) {\n        if (this.ngtStylizableDirective) {\n            this.ngtStyle = this.ngtStylizableDirective.getNgtStylizableService();\n        } else {\n            this.ngtStyle = new NgtStylizableService();\n        }\n\n        this.ngtStyle.load(this.injector, 'NgtPopover', {\n            text: 'text-sm',\n            fontCase: '',\n            py: 'py-3',\n            px: 'px-2',\n            border: 'border',\n            color: {\n                border: 'border-gray-400',\n                text: 'text-black',\n                bg: 'bg-white'\n            },\n        });\n    }\n\n    public fireClickEvent(): void {\n        if (this.clickTimeout) {\n            clearTimeout(this.clickTimeout);\n        }\n\n        this.clickTimeout = setTimeout(() => {\n            this.onClick.emit();\n\n            const event = new MouseEvent('click', { bubbles: true });\n\n            event.preventDefault();\n            event.stopPropagation();\n\n            this.hostDiv.nativeElement.dispatchEvent(event);\n        }, 500);\n    }\n}\n","<ngt-dropdown class=\"flex w-full hover:opacity-100\" [closeOnClick]=\"closeOnClick\" [openMethod]=\"openMethod\"\n            [autoYReverse]=\"false\" [reverseXPosition]=\"!placeOnLeft\" [reverseYPosition]=\"!placeOnBottom\"\n            [closeTimeout]=\"closeTimeout\" (onHostClick)=\"fireClickEvent()\" #dropdownRef>\n    <div #hostDiv host>\n        <ng-content></ng-content>\n    </div>\n\n    <div class=\"bg-gray-100 text-sm rounded-lg hover:opacity-100 text-gray-800 shadow-lg -mb-4\"\n        [ngClass]=\"ngtStyle.compile(stylesToCompile)\" container>\n\n        <ng-content select=\"[popover-content]\"></ng-content>\n    </div>\n</ngt-dropdown>\n","import {\n    ComponentRef,\n    Directive,\n    ElementRef,\n    HostListener,\n    Input,\n    OnDestroy,\n    TemplateRef,\n    ViewContainerRef,\n} from '@angular/core';\n\nimport { Subscription } from 'rxjs';\nimport { NgtPopoverPosition, NgtPopoverTooltipComponent } from './ngt-popover-tooltip/ngt-popover-tooltip.component';\nimport { NgtPopoverOpenMethod } from './ngt-popover.component';\n\n@Directive({\n    selector: '[ngt-popover]',\n    standalone: false\n})\nexport class NgtPopoverDirective implements OnDestroy {\n    @Input() public ngtPopoverContent: string;\n    @Input() public ngtPopoverTemplate: TemplateRef<any>;\n    @Input() public ngtPopoverPosition: NgtPopoverPosition = NgtPopoverPosition.DEFAULT;\n    @Input() public ngtPopoverTemplateStyle: string = 'text-xxs';\n\n    @Input() public dismissDelay: number = 1000;\n    @Input() public showDelay: number = 1000;\n    @Input() public closeOnClick: boolean;\n    @Input() public openMethod: 'HOVER' | 'CLICK' = NgtPopoverOpenMethod.HOVER;\n\n    private componentRef: ComponentRef<NgtPopoverTooltipComponent> = null;\n    private dismissTimeoutInstance: any;\n    private showTimeoutInstance: any;\n\n    private toolTipMouseHoverSubscription: Subscription;\n    private toolTipMouseLeaveSubscription: Subscription;\n\n    public constructor(\n        private elementRef: ElementRef,\n        private viewContainerRef: ViewContainerRef\n    ) { }\n\n    @HostListener('click')\n    public onClick(): void {\n        if (this.openMethod != NgtPopoverOpenMethod.CLICK) {\n            return;\n        }\n\n        if (!this.componentRef) {\n            this.createPopover();\n\n            return;\n        }\n\n        this.destroy();\n    }\n\n    @HostListener('document:click', ['$event.target'])\n    public onDocumentClick(target: HTMLElement) {\n        if (\n            this.closeOnClick\n            && !this.componentRef?.location?.nativeElement?.contains(target)\n            && target !== this.elementRef.nativeElement\n            && target !== this.componentRef?.location?.nativeElement\n        ) {\n            this.destroy();\n        }\n    }\n\n    @HostListener('mouseleave')\n    public onMouseLeave(): void {\n        if (this.showTimeoutInstance) {\n            clearTimeout(this.showTimeoutInstance);\n        }\n\n        if (this.closeOnClick) {\n            return;\n        }\n\n        if (this.dismissTimeoutInstance) {\n            clearTimeout(this.dismissTimeoutInstance);\n        }\n\n        this.dismissTimeoutInstance = setTimeout(() => this.destroy(), this.dismissDelay);\n    }\n\n    @HostListener('mouseenter')\n    public onMouseEnter(): void {\n        if (this.componentRef || this.openMethod != NgtPopoverOpenMethod.HOVER) {\n            return;\n        }\n\n        this.showTimeoutInstance = setTimeout(() => this.createPopover(), this.showDelay);\n    }\n\n    public ngOnDestroy(): void {\n        this.destroy();\n    }\n\n    private createPopover(): void {\n        this.componentRef = this.viewContainerRef.createComponent(NgtPopoverTooltipComponent);\n\n        this.setupPopoverComponent();\n    }\n\n    private destroy(): void {\n        this.toolTipMouseHoverSubscription?.unsubscribe();\n        this.toolTipMouseLeaveSubscription?.unsubscribe();\n        this.componentRef?.destroy();\n        this.componentRef = null;\n    }\n\n    private setupPopoverComponent(): void {\n        if (!this.componentRef) {\n            return;\n        }\n\n        const rect = this.elementRef.nativeElement.getBoundingClientRect();\n\n        this.componentRef.instance.positionX = rect.left;\n        this.componentRef.instance.positionY = (this.ngtPopoverPosition === NgtPopoverPosition.TOP)\n            ? rect.top\n            : rect.bottom;\n\n        this.componentRef.instance.popover = this.ngtPopoverContent;\n        this.componentRef.instance.popoverTemplate = this.ngtPopoverTemplate;\n        this.componentRef.instance.position = this.ngtPopoverPosition;\n        this.componentRef.instance.popoverTemplateStyle = this.ngtPopoverTemplateStyle;\n\n        this.bindSubscriptions();\n\n        document.body.appendChild(this.componentRef.location.nativeElement);\n    }\n\n    private bindSubscriptions(): void {\n        this.toolTipMouseHoverSubscription = this.componentRef.instance\n            .onMouseHoverEvent\n            .subscribe(() => {\n                if (this.dismissTimeoutInstance) {\n                    clearTimeout(this.dismissTimeoutInstance);\n                }\n            });\n\n        this.toolTipMouseLeaveSubscription = this.componentRef.instance\n            .onMouseLeaveEvent\n            .subscribe(() => this.onMouseLeave());\n    }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { NgtPopoverTooltipComponent } from './ngt-popover-tooltip/ngt-popover-tooltip.component';\nimport { NgtPopoverComponent } from './ngt-popover.component';\nimport { NgtPopoverDirective } from './ngt-popover.directive';\nimport { NgtDropdownComponent } from '../ngt-dropdown/ngt-dropdown.component';\n\n@NgModule({\n    exports: [\n        NgtPopoverComponent,\n        NgtPopoverDirective\n    ],\n    declarations: [\n        NgtPopoverComponent,\n        NgtPopoverTooltipComponent,\n        NgtPopoverDirective\n    ],\n    imports: [\n        CommonModule,\n        NgtDropdownComponent\n    ]\n})\nexport class NgtPopoverModule { }\n","import { Component, EventEmitter, Output, TemplateRef } from '@angular/core';\n\n@Component({\n    selector: 'ngt-context-menu',\n    templateUrl: './ngt-context-menu.component.html',\n    standalone: false\n})\n\nexport class NgtContextMenuComponent {\n    @Output() public onMenuItemClick: EventEmitter<NgtContextMenuOptionInterface> = new EventEmitter();\n    @Output() public onTemplateClick: EventEmitter<void> = new EventEmitter();\n\n    public positionX: number;\n    public positionY: number;\n\n    public menuTemplate: TemplateRef<any>;\n    public menuItems: NgtContextMenuOptionInterface[] = [];\n\n    public hasOptions(): boolean {\n        return !this.menuTemplate && !!this.menuItems?.length;\n    }\n}\n\nexport interface NgtContextMenuOptionInterface {\n    caption: string;\n    background_color?: string;\n    icon?: string;\n    value: string;\n    disabled?: boolean;\n}\n","<div class=\"absolute max-w-7xl -mr-10 -mb-10\" style=\"z-index: 999999 !important; width: max-content !important;\"\n    [style.left.px]=\"positionX\" [style.top.px]=\"positionY\" (click)=\"$event.stopPropagation()\">\n\n    <ng-container *ngIf=\"hasOptions(); else showTemplate\">\n        <ul class=\"cursor-pointer rounded-xl bg-white border border-gray-200 shadow-2xl\">\n            <li *ngFor=\"let item of menuItems; last as isLast; first as isFirst\"\n                class=\"flex items-center w-full px-4 py-2 gap-3 text-sm\" [class.text-gray-700]=\"!item.disabled\"\n                [class.text-gray-400]=\"item.disabled\" [class.cursor-not-allowed]=\"item.disabled\"\n                [class.rounded-b-xl]=\"isLast\" [class.rounded-t-xl]=\"isFirst\"\n                [ngClass]=\"item.disabled ? '' : (item.background_color || 'hover:bg-green-500')\"\n                (click)=\"!item.disabled && onMenuItemClick.emit(item)\">\n\n                <ngt-svg *ngIf=\"item.icon\" class=\"text-lg\" [src]=\"item.icon\"></ngt-svg>\n                {{ item.caption }}\n            </li>\n        </ul>\n    </ng-container>\n\n    <ng-template #showTemplate>\n        <div class=\"block rounded-lg bg-white border border-gray-200 w-full h-auto shadow-2xl\"\n            (click)=\"onTemplateClick.emit()\">\n            <ng-container [ngTemplateOutlet]=\"menuTemplate\"></ng-container>\n        </div>\n    </ng-template>\n</div>\n","import {\n    ChangeDetectorRef,\n    ComponentRef,\n    Directive,\n    EventEmitter,\n    HostListener,\n    Input,\n    OnDestroy,\n    Output,\n    TemplateRef,\n    ViewContainerRef,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { NgtContextMenuComponent, NgtContextMenuOptionInterface } from './ngt-context-menu.component';\n\n@Directive({\n    selector: '[ngt-contextmenu]',\n    standalone: false\n})\nexport class NgtContextMenuDirective implements OnDestroy {\n    @Output() public onNgtContextMenuClick: EventEmitter<NgtContextMenuOptionInterface> = new EventEmitter();\n    @Output() public onOpenNgtContextMenu: EventEmitter<NgtContextMenuComponent> = new EventEmitter();\n\n    @Input() public ngtContextMenuOptions: NgtContextMenuOptionInterface[];\n    @Input() public ngtContextMenuTemplate: TemplateRef<any>;\n\n    private componentRef: ComponentRef<NgtContextMenuComponent> = null;\n    private menuItemClickSubscription: Subscription;\n    private templateClickSubscription: Subscription;\n\n    public constructor(\n        private viewContainerRef: ViewContainerRef,\n        private changeDetector: ChangeDetectorRef,\n    ) { }\n\n    @HostListener('contextmenu', ['$event'])\n    public onContextMenu(event: MouseEvent) {\n        event.preventDefault();\n\n        setTimeout(() => {\n            this.destroy();\n            this.createComponent(event);\n        }, 50);\n    }\n\n    @HostListener('document:contextmenu', ['$event'])\n    public onDocumentContextMenuClick(event: MouseEvent) {\n        event.preventDefault();\n\n        this.destroy();\n        this.changeDetector.detectChanges();\n    }\n\n    @HostListener('document:click')\n    public onDocumentClick() {\n        this.destroy();\n    }\n\n    @HostListener('click')\n    public onClick() {\n        this.destroy();\n    }\n\n    public ngOnDestroy(): void {\n        this.destroy();\n    }\n\n    private createComponent(event: MouseEvent): void {\n        this.componentRef = this.viewContainerRef.createComponent(NgtContextMenuComponent);\n\n        this.componentRef.instance.positionX = event.clientX;\n        this.componentRef.instance.positionY = event.clientY;\n        this.componentRef.instance.menuItems = this.ngtContextMenuOptions;\n        this.componentRef.instance.menuTemplate = this.ngtContextMenuTemplate;\n\n        this.bindSubscriptions();\n\n        document.body.appendChild(this.componentRef.location.nativeElement);\n\n        this.onOpenNgtContextMenu.emit(this.componentRef.instance);\n    }\n\n    private bindSubscriptions(): void {\n        this.menuItemClickSubscription = this.componentRef.instance\n            .onMenuItemClick\n            .subscribe((event) => {\n                this.onNgtContextMenuClick.emit(event);\n\n                this.destroy();\n            });\n\n        this.templateClickSubscription = this.componentRef.instance\n            .onTemplateClick\n            .subscribe((event) => this.destroy());\n    }\n\n    private destroy(): void {\n        this.menuItemClickSubscription?.unsubscribe();\n        this.templateClickSubscription?.unsubscribe();\n        this.componentRef?.destroy();\n\n        this.componentRef = null;\n    }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { NgtSvgModule } from '../ngt-svg/ngt-svg.module';\nimport { NgtContextMenuComponent } from './ngt-context-menu.component';\nimport { NgtContextMenuDirective } from './ngt-context-menu.directive';\n\n@NgModule({\n    declarations: [\n        NgtContextMenuDirective,\n        NgtContextMenuComponent,\n    ],\n    exports: [\n        NgtContextMenuDirective,\n        NgtContextMenuComponent,\n    ],\n    imports: [\n        CommonModule,\n        NgtSvgModule\n    ],\n})\nexport class NgtContextMenuModule { }\n","import { animate, AnimationStyleMetadata, state, style, transition, trigger } from '@angular/animations';\n\nexport function slideLeftToRightAnimation(name: string, duration: any, customStyle?: AnimationStyleMetadata) {\n    return trigger(name, [\n        state('void', customStyle ? customStyle : style({ transform: 'translateX(-50px)', opacity: 0 })),\n        transition(':enter, :leave', [\n            animate(duration)\n        ])\n    ]);\n}\n\nexport function slideRightToLeftAnimation(name: string, duration: any, customStyle?: AnimationStyleMetadata) {\n    return trigger(name, [\n        state('void', customStyle ? customStyle : style({ transform: 'translateX(50px)', opacity: 0 })),\n        transition(':enter, :leave', [\n            animate(duration)\n        ])\n    ]);\n}\n\nexport function fadeDownAnimation(name: string, duration: any, customStyle?: AnimationStyleMetadata) {\n    return trigger(name, [\n        state('void', customStyle ? customStyle : style({ transform: 'translateY(-20px)', opacity: 0 })),\n        transition(':enter, :leave', [\n            animate(duration)\n        ])\n    ]);\n}\n\nexport function fadeUpAnimation(name: string, duration: any, customStyle?: AnimationStyleMetadata) {\n    return trigger(name, [\n        state('void', customStyle ? customStyle : style({ transform: 'translateY(20px)', opacity: 0 })),\n        transition(':enter, :leave', [\n            animate(duration)\n        ])\n    ]);\n}\n","import {\n    AfterViewInit,\n    Component,\n    ElementRef,\n    HostListener,\n    Injector,\n    Input,\n    Optional,\n    Self,\n    SimpleChanges,\n    ViewChild,\n} from '@angular/core';\n\nimport { fadeDownAnimation } from '../../animations/ngt-angular-animations';\nimport { NgtStylizableDirective } from '../../directives/ngt-stylizable/ngt-stylizable.directive';\nimport { Size } from '../../enums/size.enum';\nimport { getEnumFromString } from '../../helpers/enum/enum';\nimport { NgtStylizableService } from '../../services/ngt-stylizable/ngt-stylizable.service';\n\n@Component({\n    selector: 'ngt-sidenav',\n    templateUrl: './ngt-sidenav.component.html',\n    animations: [\n        fadeDownAnimation('fadeDownAnimation', 600)\n    ],\n    standalone: false\n})\n\nexport class NgtSidenavComponent implements AfterViewInit {\n    @ViewChild('sideMenu', { static: true }) public sideMenuRef: ElementRef;\n    @ViewChild('container', { static: true }) public containerRef: ElementRef;\n\n    @Input() public size: Size = Size.XS;\n    @Input() public initVisible: boolean = false;\n    @Input() public closeMenuOnMobileView: boolean = true;\n\n    public visible: boolean = false;\n    public open: boolean = false;\n    public isMenuContracted: boolean = false;\n    public ngtStyle: NgtStylizableService;\n\n    private screenWidth: number;\n\n    public constructor(\n        private injector: Injector,\n        @Self() @Optional() private ngtStyleDirective: NgtStylizableDirective,\n    ) {\n        if (this.ngtStyleDirective) {\n            this.ngtStyle = this.ngtStyleDirective.getNgtStylizableService();\n        } else {\n            this.ngtStyle = new NgtStylizableService();\n        }\n\n        this.ngtStyle.load(this.injector, 'Sidenav', {\n            h: 'md:h-auto h-screen',\n            color: {}\n        });\n\n        this.bindScreenSize();\n    }\n\n    @HostListener('window:resize', ['$event'])\n    public bindScreenSize(event?) {\n        this.screenWidth = window.innerWidth;\n    }\n\n    public ngAfterViewInit() {\n        if (this.initVisible) {\n            setTimeout(() => {\n                this.visible = true;\n            });\n        }\n    }\n\n    public ngOnChanges(changes: SimpleChanges) {\n        if (changes.size) {\n            this.size = getEnumFromString(changes.size.currentValue, Size);\n        }\n    }\n\n    public toggleMenu() {\n        if (this.open) {\n            this.closeMenu();\n        } else {\n            this.openMenu();\n        }\n    }\n\n    public closeMenu() {\n        this.open = false;\n    }\n\n    public openMenu() {\n        this.open = true;\n    }\n\n    public getNavSize() {\n        switch (this.size) {\n            case Size.AUTO: return 'md:w-auto w-4/12';\n            case Size.XS: return 'md:w-1/12 w-4/12';\n            case Size.SM: return 'md:w-2/12 w-5/12';\n            case Size.MD: return 'md:w-4/12 w-6/12';\n            case Size.XL: return 'md:w-6/12 w-full';\n            case Size.FULL: return 'w-full';\n        }\n    }\n\n    public getContainerSize() {\n        if (!this.visible) {\n            return 'w-full';\n        }\n\n        if (this.isMobileView()) {\n            return 'w-full';\n        }\n\n        switch (this.size) {\n            case Size.AUTO: return 'w-full';\n            case Size.XS: return 'md:w-11/12 w-full';\n            case Size.SM: return 'md:w-10/12 w-full';\n            case Size.MD: return 'md:w-8/12 w-full';\n            case Size.XL: return 'md:w-6/12 w-full';\n            case Size.FULL: return 'w-full';\n        }\n    }\n\n    public toggleMenuSize(size: Size) {\n        if (this.isMenuContracted) {\n            this.size = size;\n            this.isMenuContracted = false;\n        } else {\n            this.size = Size.AUTO;\n            this.isMenuContracted = true;\n        }\n    }\n\n    public isMobileView() {\n        if (!this.closeMenuOnMobileView) {\n            return false;\n        }\n\n        return this.screenWidth < 1024;\n    }\n}\n","<div class=\"flex h-full w-full\">\n    <ng-container *ngIf=\"visible\">\n        <div class=\"{{ getNavSize() }} {{ ngtStyle.compile(['color.bg', 'h']) }} {{ open ? 'block' : 'hidden' }} top-auto fixed {{ isMobileView() ? '' : 'sm:static sm:block' }}\"\n            @fadeDownAnimation #sideMenu>\n            <ng-content select='[sideMenu]'></ng-content>\n        </div>\n\n        <ng-container *ngIf=\"open\">\n            <button (click)='closeMenu()' tabindex=\"-1\"\n                class=\"fixed z-30 inset-0 h-full w-full bg-black opacity-50 cursor-default\">\n            </button>\n        </ng-container>\n    </ng-container>\n\n    <div class=\"flex-wrap {{ getContainerSize() }} overflow-auto\" #container>\n        <ng-content></ng-content>\n    </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { NgtSidenavComponent } from './ngt-sidenav.component';\n\n@NgModule({\n    declarations: [NgtSidenavComponent],\n    exports: [NgtSidenavComponent],\n    imports: [\n        CommonModule\n    ]\n})\nexport class NgtSidenavModule { }\n","import { Component, ElementRef, Injector, Input, Optional, Self, ViewChild } from '@angular/core';\n\nimport { NgtStylizableDirective } from '../../directives/ngt-stylizable/ngt-stylizable.directive';\nimport { NgtStylizableService } from '../../services/ngt-stylizable/ngt-stylizable.service';\n\n@Component({\n    selector: 'ngt-header-nav',\n    templateUrl: './ngt-header-nav.component.html',\n    standalone: false\n})\nexport class NgtHeaderNavComponent {\n    @ViewChild('element', { static: true }) public element: ElementRef;\n\n    @Input() public ngtStyle: NgtStylizableService;\n\n    public constructor(\n        private injector: Injector,\n        @Self() @Optional() private ngtStylizableDirective: NgtStylizableDirective\n    ) {\n        if (this.ngtStylizableDirective) {\n            this.ngtStyle = this.ngtStylizableDirective.getNgtStylizableService();\n        } else {\n            this.ngtStyle = new NgtStylizableService();\n        }\n\n        this.ngtStyle.load(this.injector, 'HeaderNav', {\n            h: 'h-auto',\n            color: {}\n        });\n    }\n\n    public ngAfterViewInit() {\n        this.element.nativeElement.classList.add('tail-animate-fade-up');\n    }\n}\n","<section class=\"flex\">\n    <nav class=\"w-full relative {{ ngtStyle.compile(['color.bg']) }}\" #element>\n      <div class=\"h-full\">\n        <!-- Float Left -->\n        <div class=\"float-left flex\">\n          <ng-content select=\"[left-header]\"></ng-content>\n        </div>\n  \n        <!-- Float Right -->\n        <div class=\"float-right flex h-full\">\n          <ng-content select=\"[right-header]\"></ng-content>\n        </div>\n  \n        <!-- Fallback -->\n        <ng-content></ng-content>\n      </div>\n    </nav>\n</section>","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { NgtHeaderNavComponent } from './ngt-header-nav.component';\n\n@NgModule({\n    declarations: [NgtHeaderNavComponent],\n    exports: [NgtHeaderNavComponent],\n    imports: [\n        CommonModule\n    ]\n})\nexport class NgtHeaderNavModule { }\n","import { animate, state, style, transition, trigger } from '@angular/animations';\nimport { Component, Injector, Input, Optional, Self } from '@angular/core';\n\nimport { NgtStylizableDirective } from '../../directives/ngt-stylizable/ngt-stylizable.directive';\nimport { NgtStylizableService } from '../../services/ngt-stylizable/ngt-stylizable.service';\n\nexport interface NgtFloatingButtonMenu {\n    name?: string;\n    type: NgtFloatingButtonType;\n    icon?: string;\n    tooltip?: string;\n    externalLink?: boolean;\n    url?: string;\n    action?: Function;\n}\n\nexport enum NgtFloatingButtonType {\n    NAVIGATION = 'NAVIGATION',\n    ACTION = 'ACTION'\n}\n\n@Component({\n    selector: 'ngt-floating-button',\n    templateUrl: './ngt-floating-button.component.html',\n    animations: [\n        trigger('fadeY', [\n            state('void', style({ opacity: 0, transform: 'translateY(10px)' })),\n            transition(':enter, :leave', [\n                animate(300)\n            ])\n        ]),\n        trigger('openClose', [\n            state('open', style({\n                transform: 'rotate(180deg)'\n            })),\n            state('closed', style({\n                transform: 'rotate(-180deg)'\n            })),\n            transition('open => closed', [\n                animate('0.5s ease-in')\n            ]),\n            transition('closed => open', [\n                animate('0.5s ease-in')\n            ]),\n        ]),\n    ],\n    standalone: false\n})\nexport class NgtFloatingButtonComponent {\n    @Input() public menus: Array<NgtFloatingButtonMenu>;\n    @Input() public icon: string;\n    @Input() public label: string;\n    @Input() public withAnimation: boolean = false;\n\n    public isOpen: boolean = false;\n    public ngtStyle: NgtStylizableService;\n\n    public constructor(\n        private injector: Injector,\n        @Self() @Optional() private ngtStylizableDirective: NgtStylizableDirective,\n    ) {\n        if (this.ngtStylizableDirective) {\n            this.ngtStyle = this.ngtStylizableDirective.getNgtStylizableService();\n        } else {\n            this.ngtStyle = new NgtStylizableService();\n        }\n\n        this.ngtStyle.load(this.injector, 'NgtFloatingButton', {\n            color: {\n                bg: 'bg-blue-500',\n                text: 'text-white',\n            },\n            px: 'px-4',\n            py: 'py-4',\n            h: 'h-12',\n            w: 'w-12'\n        });\n    }\n\n    public toggleMenu() {\n        this.isOpen = !(this.isOpen);\n    }\n\n    public openExternalLink(url: string) {\n        window.open(url, \"_blank\");\n        this.toggleMenu();\n    }\n\n    public onClick(event: Event, menu: NgtFloatingButtonMenu) {\n        event.stopPropagation();\n        this.toggleMenu();\n\n        if (typeof menu.action === 'function') {\n            return menu.action();\n        }\n\n        throw new Error('Action must be a function!');\n    }\n\n    public isTypeAction(menu: NgtFloatingButtonMenu) {\n        return menu.type == NgtFloatingButtonType.ACTION;\n    }\n\n    public isTypeNavigation(menu: NgtFloatingButtonMenu) {\n        return menu.type == NgtFloatingButtonType.NAVIGATION;\n    }\n}\n","<button (click)=\"toggleMenu()\" *ngIf=\"isOpen\" tabindex=\"-1\"\n    class=\"fixed z-10 inset-0 h-full w-full bg-black opacity-0 cursor-default\"></button>\n\n<div class=\"{{ ngtStyle.compile(['w']) }} rounded-full relative z-20\" *ngIf=\"isOpen\" @fadeY>\n    <ng-container *ngFor=\"let menu of menus; let i = index\">\n        <div class=\"my-2 rounded-full shadow-xl\">\n            <a *ngIf=\"isTypeNavigation(menu)\" [routerLink]=\"menu.externalLink ? null : menu.url\"\n                (click)='menu.externalLink ? openExternalLink(menu.url) : toggleMenu()' title=\"{{ menu.tooltip }}\"\n                class=\"{{ ngtStyle.compile(['h', 'w', 'color.bg', 'color.text']) }} flex items-center justify-center rounded-full hover:opacity-75\">\n                <span *ngIf=\"menu.name\"\n                    class=\"text-xs font-semibold {{ menu.icon ? 'pr-2' : '' }}\">{{ menu.name }}</span>\n                <ngt-svg *ngIf=\"menu.icon\" [src]='menu.icon' class=\"fill-current\"></ngt-svg>\n            </a>\n\n            <div *ngIf=\"isTypeAction(menu)\" title=\"{{ menu.tooltip }}\" (click)='onClick($event, menu)'\n                class=\"{{ ngtStyle.compile(['h', 'w', 'color.bg', 'color.text']) }} flex items-center justify-center rounded-full hover:opacity-75 cursor-pointer\">\n                <span *ngIf=\"menu.name\"\n                    class=\"text-xs font-semibold {{ menu.icon ? 'pr-2' : '' }}\">{{ menu.name }}</span>\n                <ngt-svg *ngIf=\"menu.icon\" [src]='menu.icon' class=\"fill-current\"></ngt-svg>\n            </div>\n        </div>\n    </ng-container>\n</div>\n\n<!-- Abrir menu -->\n<div (click)=\"toggleMenu()\"\n    class=\"flex z-20 justify-center {{ ngtStyle.compile(['h', 'w', 'color.bg', 'color.text', 'px', 'py']) }} focus:outline-none hover:opacity-75 cursor-pointer rounded-full outline-none\">\n    <span *ngIf=\"label\"\n        class=\"{{ icon ? 'pr-2' : '' }} self-center text-center text-xs font-semibold w-full\">{{ label }}</span>\n    <ngt-svg *ngIf=\"icon\" [@openClose]=\"withAnimation ? isOpen ? 'open' : 'closed' : ''\" [src]='icon'\n        class=\"fill-current\"></ngt-svg>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\n\nimport { NgtSvgModule } from '../ngt-svg/ngt-svg.module';\nimport { NgtFloatingButtonComponent } from './ngt-floating-button.component';\n\n@NgModule({\n    declarations: [NgtFloatingButtonComponent],\n    exports: [NgtFloatingButtonComponent],\n    imports: [\n        CommonModule,\n        RouterModule,\n        NgtSvgModule\n    ]\n})\nexport class NgtFloatingButtonModule { }\n","import {\n    AfterViewInit,\n    Component,\n    ElementRef,\n    Host,\n    Input,\n    OnDestroy,\n    Optional,\n    Renderer2,\n    SkipSelf,\n    ViewChild,\n} from '@angular/core';\nimport { ControlContainer, NgForm } from '@angular/forms';\nimport { Subscription } from 'rxjs';\n\nimport { NgtControlValueAccessor, NgtValueAccessorProvider } from '../../../../base/ngt-control-value-accessor';\nimport { NgtFormComponent } from '../ngt-form/ngt-form.component';\n\nexport enum NgtSliderColorSchemeEnum {\n    PRIMARY = 'primary',\n    SUCCESS = 'success',\n    WARNING = 'warning',\n    DANGER = 'danger'\n};\n\n@Component({\n    selector: 'ngt-slider',\n    templateUrl: './ngt-slider.component.html',\n    styleUrls: ['./ngt-slider.component.css'],\n    providers: [\n        NgtValueAccessorProvider(NgtSliderComponent),\n    ],\n    viewProviders: [\n        { provide: ControlContainer, useExisting: NgForm }\n    ],\n    standalone: false\n})\nexport class NgtSliderComponent extends NgtControlValueAccessor implements AfterViewInit, OnDestroy {\n    @ViewChild('element', { static: true }) public element: ElementRef;\n    @ViewChild('display', { static: true }) public display: ElementRef;\n\n    @Input() public label: string;\n    @Input() public shining: boolean;\n    @Input() public isDisabled: boolean;\n    @Input() public showPercentageSymbol: boolean;\n    @Input() public name: string;\n    @Input() public min: string = '0';\n    @Input() public max: string = '100';\n    @Input() public step: string = '1';\n    @Input() public color: NgtSliderColorSchemeEnum = NgtSliderColorSchemeEnum.PRIMARY;\n\n    private subscriptions: Array<Subscription> = [];\n\n    public constructor(\n        @Optional() @Host()\n        public formContainer: ControlContainer,\n        private renderer: Renderer2,\n        @Optional() @SkipSelf()\n        private ngtFormComponent: NgtFormComponent,\n    ) {\n        super();\n\n        if (this.ngtFormComponent) {\n            this.shining = this.ngtFormComponent.isShining();\n\n            this.subscriptions.push(\n                this.ngtFormComponent.onShiningChange.subscribe((shining: boolean) => {\n                    this.shining = shining;\n                })\n            );\n        }\n    }\n\n    public ngAfterViewInit() {\n        this.renderer.listen(this.element.nativeElement, 'change', () => {\n            this.onNativeChange(this.element.nativeElement.value);\n        });\n    }\n\n    public ngOnDestroy() {\n        this.destroySubscriptions();\n    }\n\n    public change(value: boolean) {\n        this.element.nativeElement.value = value;\n    }\n\n    public onNativeChange(value: boolean) {\n        this.value = value;\n    }\n\n    private destroySubscriptions() {\n        this.subscriptions.forEach(subscription => subscription.unsubscribe());\n        this.subscriptions = [];\n    }\n}\n","<div class=\"flex flex-col\">\n    <span *ngIf='label && !shining' class=\"text-sm mb-2\">{{ label }}:</span>\n\n    <div class=\"{{ shining ? 'hidden' : 'flex' }} items-center\">\n        <input class=\"block w-full cursor-pointer overflow-hidden appearance-none bg-gray-400 {{color}}\"\n            [class.cursor-not-allowed]=\"isDisabled\" type=\"range\" [name]='name' ([ngModel])='value' [min]='min'\n            [max]='max' [step]='step' [disabled]=\"isDisabled\" #element>\n\n        <span id='display' class=\"text-xs ml-2 font-semibold\" #display>{{ value }}</span>\n        <span *ngIf=\"showPercentageSymbol\" class=\"text-xs font-semibold\">%</span>\n    </div>\n</div>\n\n<ng-container *ngIf='shining'>\n    <div class=\"flex\">\n        <ngt-shining class=\"w-full h-6\"></ngt-shining>\n    </div>\n</ng-container>","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { NgtShiningModule } from '../../../ngt-shining/ngt-shining.module';\nimport { NgtSliderComponent } from './ngt-slider.component';\n\n@NgModule({\n    declarations: [NgtSliderComponent],\n    exports: [NgtSliderComponent],\n    imports: [\n        CommonModule,\n        NgtShiningModule,\n    ]\n})\nexport class NgtSliderModule { }\n","import { Component, EventEmitter, Output } from '@angular/core';\n\nimport { NgtRadioButtonComponent } from '../ngt-radio-button.component';\n\n@Component({\n    selector: '[ngt-radio-button-container]',\n    templateUrl: './ngt-radio-button-container.component.html',\n    standalone: false\n})\nexport class NgtRadioButtonContainerComponent {\n    @Output() public onActiveRadioButtonChange = new EventEmitter();\n\n    public setActiveRadioButton(activeRadioButton: NgtRadioButtonComponent) {\n        this.onActiveRadioButtonChange.emit(activeRadioButton);\n    }\n}\n","<ng-content></ng-content>","import {\n    AfterViewInit,\n    Component,\n    ElementRef,\n    Host,\n    Injector,\n    Input,\n    OnDestroy,\n    Optional,\n    Renderer2,\n    Self,\n    SkipSelf,\n    ViewChild,\n} from '@angular/core';\nimport { ControlContainer, NgForm } from '@angular/forms';\nimport { Subscription } from 'rxjs';\n\nimport { NgtControlValueAccessor, NgtValueAccessorProvider } from '../../../../base/ngt-control-value-accessor';\nimport { NgtStylizableDirective } from '../../../../directives/ngt-stylizable/ngt-stylizable.directive';\nimport { NgtStylizableService } from '../../../../services/ngt-stylizable/ngt-stylizable.service';\nimport { NgtFormComponent } from '../ngt-form/ngt-form.component';\nimport { NgtSectionComponent } from '../../../ngt-section/ngt-section.component';\nimport { NgtRadioButtonContainerComponent } from './ngt-radio-button-container/ngt-radio-button-container.component';\nimport { NgtModalComponent } from '../../../ngt-modal/ngt-modal.component';\n\n@Component({\n    selector: 'ngt-radio-button',\n    templateUrl: './ngt-radio-button.component.html',\n    styleUrls: ['./ngt-radio-button.component.css'],\n    providers: [\n        NgtValueAccessorProvider(NgtRadioButtonComponent),\n    ],\n    viewProviders: [\n        { provide: ControlContainer, useExisting: NgForm }\n    ],\n    standalone: false\n})\nexport class NgtRadioButtonComponent extends NgtControlValueAccessor implements AfterViewInit, OnDestroy {\n    @ViewChild('element', { static: true }) public element: ElementRef;\n\n    @Input() public label: string;\n    @Input() public name: string;\n    @Input() public shining: boolean;\n    @Input() public isSelectable: boolean = true;\n    @Input() public isDisabled: boolean;\n    @Input() public selectedHexColor: string;\n\n    @Input() public helpTitle: string;\n    @Input() public helpTextColor: string = 'text-green-500';\n    @Input() public helpText: string;\n    @Input() public helperReverseYPosition: boolean;\n    @Input() public helperAutoXReverse: boolean = true;\n\n    public ngtStyle: NgtStylizableService;\n\n    private subscriptions: Array<Subscription> = [];\n\n    public constructor(\n        private renderer: Renderer2,\n\n        @Self() @Optional()\n        private ngtStylizableDirective: NgtStylizableDirective,\n\n        @Optional() @SkipSelf()\n        private ngtForm: NgtFormComponent,\n\n        @Optional() @SkipSelf()\n        private ngtSection: NgtSectionComponent,\n\n        @Optional() @SkipSelf()\n        private ngtModal: NgtModalComponent,\n\n        @Optional() @SkipSelf()\n        private ngtRadioButtonContainer: NgtRadioButtonContainerComponent,\n\n        protected override injector: Injector,\n\n        @Optional() @Host()\n        public formContainer: ControlContainer\n    ) {\n        super();\n\n        if (this.ngtRadioButtonContainer) {\n            this.subscriptions.push(\n                this.ngtRadioButtonContainer.onActiveRadioButtonChange.subscribe((activeRadioButton: NgtRadioButtonComponent) => {\n                    this.value = (activeRadioButton.name === this.name);\n                })\n            );\n        }\n\n        if (this.ngtStylizableDirective) {\n            this.ngtStyle = this.ngtStylizableDirective.getNgtStylizableService();\n        } else {\n            this.ngtStyle = new NgtStylizableService();\n        }\n\n        this.ngtStyle.load(this.injector, 'NgtCheckbox', {\n            color: {\n                text: 'text-gray-500',\n                border: 'border-gray-500',\n            }\n        });\n    }\n\n    public ngAfterViewInit() {\n        this.renderer.listen(this.element.nativeElement, 'change', (value) => {\n            this.onNativeChange(this.element.nativeElement.checked);\n        });\n    }\n\n    public ngOnDestroy() {\n        this.destroySubscriptions();\n    }\n\n    public change(value: boolean) {\n        if (value) {\n            this.element.nativeElement.checked = value;\n\n            if (this.ngtRadioButtonContainer) {\n                this.ngtRadioButtonContainer.setActiveRadioButton(this);\n            }\n        }\n    }\n\n    public onNativeChange(value: boolean) {\n        this.value = value ? value : !value;\n\n        if (this.ngtRadioButtonContainer) {\n            this.ngtRadioButtonContainer.setActiveRadioButton(this);\n        }\n    }\n\n    public disabled(): boolean {\n        return this.isDisabled || this.isDisabledByParent();\n    }\n\n    public getStyle(): string {\n        let baseStyle = 'width: 20px; height: 20px;';\n\n        if (this.selectedHexColor) {\n            baseStyle += ` color: ${this.selectedHexColor}`;\n        }\n\n        return baseStyle;\n    }\n\n    private isDisabledByParent(): boolean {\n        return this.ngtForm?.isDisabled\n            || this.ngtSection?.isDisabledState()\n            || this.ngtModal?.isDisabledState();\n    }\n\n    private destroySubscriptions() {\n        this.subscriptions.forEach(subscription => subscription.unsubscribe());\n        this.subscriptions = [];\n    }\n}\n","<label\n    class=\"inline-flex items-center {{ disabled() || !isSelectable ? 'cursor-not-allowed opacity-50' : 'cursor-pointer' }}\">\n    <input type=\"checkbox\" [name]='name' class=\"hidden\" ([ngModel])='value' [disabled]='disabled() || !isSelectable'\n        #element>\n\n    <div class=\"{{ value ? ngtStyle.compile(['color.border', 'color.text']) : 'border-gray-500' }}\n                    shadow rounded-full border border-gray-400 text-sm {{ !shining ? 'flex justify-center items-center' : 'hidden' }}\"\n        [style]=\"getStyle()\">\n\n        <div style=\"width: 14px; height: 14px;\">\n            <svg *ngIf=\"value\" class=\"fill-current\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 29.107 29.107\">\n\n                <path\n                    d=\"M14.554 0C6.561 0 0 6.562 0 14.552c0 7.996 6.561 14.555 14.554 14.555 7.996 0 14.553-6.559 14.553-14.555C29.106 6.562 22.55 0 14.554 0z\" />\n            </svg>\n        </div>\n    </div>\n\n    <span *ngIf='label && !shining' class=\"text-xs ml-2\" [class.line-through]='!isSelectable'>\n        {{ label }}\n    </span>\n\n    <ngt-helper *ngIf=\"helpText\" class=\"ml-1\" [helpTitle]=\"helpTitle\" [iconColor]=\"helpTextColor\"\n        [autoXReverse]=\"helperAutoXReverse\" [helperReverseYPosition]=\"helperReverseYPosition\">\n        {{ helpText }}\n    </ngt-helper>\n</label>\n\n<ng-container *ngIf='shining'>\n    <div class=\"flex\">\n        <ngt-shining class=\"w-16 h-12\"></ngt-shining>\n    </div>\n</ng-container>","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { NgtHelperComponent } from '../../../ngt-helper/ngt-helper.component';\nimport { NgtShiningModule } from '../../../ngt-shining/ngt-shining.module';\nimport { NgtRadioButtonContainerComponent } from './ngt-radio-button-container/ngt-radio-button-container.component';\nimport { NgtRadioButtonComponent } from './ngt-radio-button.component';\n\n@NgModule({\n    declarations: [NgtRadioButtonComponent, NgtRadioButtonContainerComponent],\n    exports: [NgtRadioButtonComponent, NgtRadioButtonContainerComponent],\n    imports: [\n        CommonModule,\n        NgtShiningModule,\n        NgtHelperComponent\n    ]\n})\nexport class NgtRadioButtonModule { }\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { NgtStylizableModule } from '../../directives/ngt-stylizable/ngt-stylizable.module';\nimport { NgtHelperComponent } from '../ngt-helper/ngt-helper.component';\nimport { NgtSvgModule } from '../ngt-svg/ngt-svg.module';\nimport { NgtSectionComponent } from './ngt-section.component';\n\n@NgModule({\n    declarations: [NgtSectionComponent],\n    exports: [NgtSectionComponent],\n    imports: [\n        CommonModule,\n        NgtStylizableModule,\n        NgtSvgModule,\n        NgtHelperComponent\n    ]\n})\nexport class NgtSectionModule { }\n","import {\n    Component,\n    ElementRef,\n    Host,\n    Injector,\n    Input,\n    OnDestroy,\n    OnInit,\n    Optional,\n    output,\n    Renderer2,\n    Self,\n    SkipSelf,\n    ViewChild,\n} from '@angular/core';\nimport { ControlContainer, NgForm, Validators } from '@angular/forms';\nimport { Subscription } from 'rxjs';\n\nimport { NgtControlValueAccessor, NgtValueAccessorProvider } from '../../../../base/ngt-control-value-accessor';\nimport { NgtStylizableDirective } from '../../../../directives/ngt-stylizable/ngt-stylizable.directive';\nimport { NgtTranslateService } from '../../../../services/http/ngt-translate.service';\nimport { NgtStylizableService } from '../../../../services/ngt-stylizable/ngt-stylizable.service';\nimport { NgtFormComponent } from '../ngt-form/ngt-form.component';\n\n@Component({\n    selector: 'ngt-textarea',\n    templateUrl: './ngt-textarea.component.html',\n    providers: [\n        NgtValueAccessorProvider(NgtTextareaComponent),\n    ],\n    viewProviders: [\n        { provide: ControlContainer, useExisting: NgForm }\n    ],\n    standalone: false\n})\nexport class NgtTextareaComponent extends NgtControlValueAccessor implements OnInit, OnDestroy {\n    @ViewChild(\"element\", { static: true }) public element: ElementRef;\n\n    // Visual\n    @Input() public label: string = \"\";\n    @Input() public placeholder: string = \"\";\n    @Input() public rows: string = \"3\";\n    @Input() public showCharactersLength: boolean = false;\n    @Input() public helpTitle: string;\n    @Input() public helpText: string;\n    @Input() public helpTextColor: string = 'text-green-500';\n    @Input() public shining: boolean = false;\n\n    // Behavior\n    @Input() public name: string;\n    @Input() public isDisabled: boolean = false;\n    @Input() public isReadonly: boolean = false;\n    @Input() public jit: boolean = false;\n    @Input() public focus: boolean = false;\n\n    // Validation\n    @Input() public isRequired: boolean = false;\n    @Input() public maxLength: number = 300;\n\n    public readonly onValueChange = output<string>();\n\n    public componentReady = false;\n    public ngtStyle: NgtStylizableService;\n\n    private subscriptions: Array<Subscription> = [];\n\n    public constructor(\n        @Self() @Optional() private ngtStylizableDirective: NgtStylizableDirective,\n        @Optional() @Host()\n        public formContainer: ControlContainer,\n        @Optional() @SkipSelf()\n        private ngtFormComponent: NgtFormComponent,\n        private renderer: Renderer2,\n\n        protected override injector: Injector,\n\n        @Optional()\n        public ngtTranslateService: NgtTranslateService\n    ) {\n        super();\n\n        if (this.ngtFormComponent) {\n            this.shining = this.ngtFormComponent.isShining();\n\n            this.subscriptions.push(\n                this.ngtFormComponent.onShiningChange.subscribe((shining: boolean) => {\n                    this.shining = shining;\n                })\n            );\n        }\n\n        if (this.ngtStylizableDirective) {\n            this.ngtStyle = this.ngtStylizableDirective.getNgtStylizableService();\n        } else {\n            this.ngtStyle = new NgtStylizableService();\n        }\n\n        this.ngtStyle.load(this.injector, 'NgtTextarea', {\n            text: 'text-sm',\n            font: 'font-normal',\n            color: {\n                border: 'border-gray-400 focus:border-gray-700',\n                bg: 'bg-bg-white focus:bg-white',\n                text: 'text-gray-800'\n            }\n        });\n    }\n\n    public ngOnChanges(changes) {\n        if (changes.isRequired) {\n            this.updateValidations();\n        }\n    }\n\n    public ngOnInit() {\n        if (!this.formContainer) {\n            console.warn(\"The element must be inside a <form #form='ngForm'> tag!\", this.element.nativeElement);\n        }\n\n        if (!this.name) {\n            console.warn(\"The element must contain a name attribute!\", this.element.nativeElement);\n        } else {\n            setTimeout(() => {\n                this.componentReady = true;\n\n                setTimeout(() => {\n                    this.initComponent();\n                });\n            }, 500);\n        }\n    }\n\n    public ngOnDestroy() {\n        this.destroySubscriptions();\n    }\n\n    public setFocus() {\n        setTimeout(() => {\n            this.element.nativeElement.focus();\n        }, 200);\n    }\n\n    public clear() {\n        this.element.nativeElement.value = '';\n        this.value = '';\n    }\n\n    public change(value) {\n        let nativeValue = this.getNativeValue();\n        let ngModelValue = value ? value : '';\n\n        if (this.componentReady) {\n            this.onValueChange.emit(this.value);\n        }\n\n        if (this.value != nativeValue) {\n            this.element.nativeElement.value = ngModelValue;\n        }\n    }\n\n    public getRemainingCharacters() {\n        if (this.element.nativeElement && this.element.nativeElement.value && this.element.nativeElement.value.length) {\n            if ((this.maxLength - this.element.nativeElement.value.length) > 0) {\n                return this.maxLength - this.element.nativeElement.value.length;\n            } else {\n                return 0;\n            }\n        }\n\n        return this.maxLength;\n    }\n\n    private initComponent() {\n        if (this.formContainer && this.formContainer.control && (this.formControl = this.formContainer.control.get(this.name))) {\n            if (this.focus) {\n                this.setFocus();\n            }\n\n            let watch = \"change\";\n\n            if (this.jit) {\n                watch += \" keyup keydown keypress\";\n            }\n\n            watch.split(' ').forEach((evt) => {\n                this.renderer.listen(this.element.nativeElement, evt, () => {\n                    let nativeValue = this.getNativeValue();\n\n                    if (this.value != nativeValue) {\n                        this.value = nativeValue;\n                    }\n                });\n            });\n\n            this.renderer.listen(this.element.nativeElement, \"keydown\", (event) => {\n                if (this.element.nativeElement && this.element.nativeElement.value && this.element.nativeElement.value.length >= this.maxLength) {\n                    // Backspace and delete\n                    if (event.keyCode != 8 && event.keyCode != 46) {\n                        event.preventDefault();\n\n                        return false;\n                    }\n                }\n            });\n\n            this.updateValidations();\n\n            if (this.value) {\n                this.formControl.markAsDirty();\n            } else {\n                this.formControl.markAsPristine();\n            }\n        } else {\n            console.warn(\"The element must contain a ngModel property\", this.element.nativeElement);\n        }\n    }\n\n    private updateValidations() {\n        if (!this.formControl) {\n            return;\n        }\n\n        let syncValidators = [];\n\n        if (this.isRequired) {\n            syncValidators.push(Validators.required);\n        }\n\n        if (this.maxLength) {\n            syncValidators.push(Validators.maxLength(this.maxLength));\n        }\n\n        setTimeout(() => {\n            this.formControl.setValidators(syncValidators);\n            this.formControl.updateValueAndValidity();\n        });\n    }\n\n    private getNativeValue() {\n        return this.element.nativeElement.value;\n    }\n\n    private destroySubscriptions() {\n        this.subscriptions.forEach(subscription => subscription.unsubscribe());\n        this.subscriptions = [];\n    }\n}\n","<label class=\"{{ shining ? '' : 'block' }} mb-2 flex {{ ngtStyle.compile(['text', 'font', 'color.text']) }}\"\n    *ngIf=\"label\" [hidden]='shining'>\n    <span class=\"truncate\" [title]=\"label\">\n        {{ label }}:\n    </span>\n\n    <span class=\"text-red-500 font-bold text-md ml-1\" *ngIf=\"isRequired\">*</span>\n\n    <ngt-helper *ngIf=\"helpText\" [helpTitle]=\"helpTitle\" [iconColor]=\"helpTextColor\" class=\"ml-1\">\n        {{ helpText }}\n    </ngt-helper>\n</label>\n\n<div class=\"flex flex-col\">\n    <div class=\"{{ shining ? '' : 'flex'}}\" [hidden]='shining'>\n        <textarea [rows]='rows' autocomplete=\"new-password\" attr.type=\"text\"\n            class=\"appearance-none block border focus:outline-none leading-tight text-xs px-3 py-3 rounded w-full {{ ngtStyle.compile(['h', 'color.border', 'color.bg', 'color.text']) }}\"\n            [disabled]=\"isDisabled\" [readonly]=\"isReadonly\" placeholder=\"{{ placeholder ? placeholder : ''}}\"\n            [ngClass]=\"{'textarea-has-error border-red-700': formControl?.errors && (formControl?.dirty || (formContainer && formContainer['submitted']))}\"\n            #element>\n        </textarea>\n    </div>\n\n    <ng-container *ngIf=\"showCharactersLength && !shining\">\n        <p class=\"text-xxs mt-1\">\n            {{ ngtTranslateService.ngtTextAreaRemainingCharacters }}: <span class=\"font-semibold\">\n                {{ getRemainingCharacters() }}\n            </span>\n        </p>\n    </ng-container>\n</div>\n\n<ng-container *ngIf='shining'>\n    <div class=\"flex\">\n        <ngt-shining class=\"h-10 w-full\"></ngt-shining>\n    </div>\n</ng-container>\n\n<input *ngIf='componentReady' class=\"text-xs\" type=\"hidden\" [ngModel]=\"value\" [name]=\"name\" [value]=\"value\">\n\n<ng-content></ng-content>\n<ngt-validation [control]=\"formControl\" [container]=\"formContainer\"></ngt-validation>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { NgtFormModule } from '../ngt-form/ngt-form.module';\nimport { NgtHelperComponent } from '../../../ngt-helper/ngt-helper.component';\nimport { NgtShiningModule } from '../../../ngt-shining/ngt-shining.module';\nimport { NgtValidationModule } from '../../../ngt-validation/ngt-validation.module';\nimport { NgtTextareaComponent } from './ngt-textarea.component';\n\n@NgModule({\n    declarations: [NgtTextareaComponent],\n    exports: [NgtTextareaComponent],\n    imports: [\n        CommonModule,\n        FormsModule,\n        ReactiveFormsModule,\n        NgtValidationModule,\n        NgtShiningModule,\n        NgtHelperComponent,\n        NgtFormModule\n    ]\n})\nexport class NgtTextareaModule { }\n","import {\n    Component,\n    Host,\n    Injector,\n    Input,\n    OnDestroy,\n    OnInit,\n    Optional,\n    output,\n    Self,\n    SimpleChanges,\n    SkipSelf,\n    ViewChild,\n    ViewEncapsulation,\n} from '@angular/core';\nimport { ControlContainer, NgForm, Validators } from '@angular/forms';\nimport { english } from 'flatpickr/dist/l10n/default.js';\nimport { Portuguese } from 'flatpickr/dist/l10n/pt.js';\nimport moment from 'moment';\nimport { FlatpickrOptions } from 'ev-date-picker';\nimport { EvDatePickerComponent } from 'ev-date-picker/ev-date-picker.component';\nimport { Subscription } from 'rxjs';\n\nimport { NgtControlValueAccessor, NgtValueAccessorProvider } from '../../../../base/ngt-control-value-accessor';\nimport { NgtStylizableDirective } from '../../../../directives/ngt-stylizable/ngt-stylizable.directive';\nimport { getEnumFromString } from '../../../../helpers/enum/enum';\nimport { applyInputMask, InputMaskEnum } from '../../../../helpers/input-mask/input-mask.helper';\nimport { uuid } from '../../../../helpers/uuid';\nimport { NgtStylizableService } from '../../../../services/ngt-stylizable/ngt-stylizable.service';\nimport { NgtFormComponent } from '../ngt-form/ngt-form.component';\nimport { NgtSectionComponent } from '../../../ngt-section/ngt-section.component';\nimport { NgtModalComponent } from '../../../ngt-modal/ngt-modal.component';\n\nexport enum NgtDateLocale {\n    BRAZIL = 'BRAZIL',\n    US = 'US'\n}\n\nexport enum NgtDateMode {\n    SINGLE = 'SINGLE',\n    RANGE = 'RANGE'\n}\n\n@Component({\n    selector: 'ngt-date',\n    templateUrl: './ngt-date.component.html',\n    styleUrls: ['./ngt-date.component.css'],\n    encapsulation: ViewEncapsulation.None,\n    providers: [\n        NgtValueAccessorProvider(NgtDateComponent),\n    ],\n    viewProviders: [\n        { provide: ControlContainer, useExisting: NgForm }\n    ],\n    standalone: false\n})\nexport class NgtDateComponent extends NgtControlValueAccessor implements OnInit, OnDestroy {\n    @ViewChild('evDatePicker', { static: true }) public evDatePicker: EvDatePickerComponent;\n\n    // Visual\n    @Input() public label: string = '';\n    @Input() public placeholder: string = 'dd/mm/yyyy';\n    @Input() public helpTitle: string;\n    @Input() public helpText: string;\n    @Input() public helpTextColor: string = 'text-green-500';\n    @Input() public shining = false;\n    @Input() public dateFormat: string = 'd/m/Y H:i';\n    @Input() public dateFormatNgModel = 'YYYY-MM-DD HH:mm:00';\n    @Input() public showCalendarIcon: boolean = false;\n    @Input() public helperReverseYPosition: boolean;\n\n    // Behavior\n    @Input() public name: string;\n    @Input() public isDisabled: boolean = false;\n    @Input() public isReadonly: boolean = false;\n    @Input() public mode: NgtDateMode;\n    @Input() public time_24hr: boolean = true;\n    @Input() public enableTime: boolean = true;\n    @Input() public noCalendar: boolean = false;\n    @Input() public minuteIncrement: number = 1;\n    @Input() public allowInput: boolean = false;\n    @Input() public locale: NgtDateLocale = NgtDateLocale.BRAZIL;\n    @Input() public allowClear: boolean = true;\n    @Input() public minDate: string;\n    @Input() public maxDate: string;\n    @Input() public defaultDate: string;\n\n    // Validation\n    @Input() public isRequired: boolean = false;\n\n    public readonly onValueChange = output<any>();\n\n    public ngtStyle: NgtStylizableService;\n    public dateConfig: FlatpickrOptions;\n    public nativeValue: any;\n    public componentReady = false;\n    public nativeName = uuid();\n    public inputProperties: {\n        htmlType?: string;\n        length?: number;\n    } = {};\n\n    private subscriptions: Array<Subscription> = [];\n    private lastInputedDateString: string;\n\n    public constructor(\n        @Optional() @Host()\n        public formContainer: ControlContainer,\n\n        @Self() @Optional()\n        private ngtStylizableDirective: NgtStylizableDirective,\n\n        @Optional() @SkipSelf()\n        private ngtForm: NgtFormComponent,\n\n        @Optional() @SkipSelf()\n        private ngtSection: NgtSectionComponent,\n\n        @Optional() @SkipSelf()\n        private ngtModal: NgtModalComponent,\n\n        protected override injector: Injector,\n    ) {\n        super();\n\n        if (this.ngtForm) {\n            this.shining = this.ngtForm.isShining();\n\n            this.subscriptions.push(\n                this.ngtForm.onShiningChange.subscribe((shining: boolean) => {\n                    this.shining = shining;\n                })\n            );\n        }\n\n        if (this.ngtStylizableDirective) {\n            this.ngtStyle = this.ngtStylizableDirective.getNgtStylizableService();\n        } else {\n            this.ngtStyle = new NgtStylizableService();\n        }\n\n        this.ngtStyle.load(this.injector, 'NgtDate', {\n            h: 'h-10',\n            text: 'text-xs',\n            px: 'px-4',\n            fontCase: '',\n            color: {\n                text: 'text-gray-800'\n            }\n        });\n    }\n\n    public ngOnChanges(changes: SimpleChanges) {\n        if (changes.isRequired) {\n            this.updateValidations();\n        }\n\n        if (changes.mode) {\n            this.mode = getEnumFromString(changes.mode.currentValue, NgtDateMode);\n        }\n\n        if (changes.locale) {\n            this.locale = getEnumFromString(changes.locale.currentValue, NgtDateLocale);\n        }\n    }\n\n    public ngOnInit() {\n        this.dateConfig = {\n            dateFormat: this.dateFormat,\n            mode: this.getDateMode(),\n            minuteIncrement: this.minuteIncrement,\n            minDate: this.minDate,\n            maxDate: this.maxDate,\n            time_24hr: this.time_24hr,\n            enableTime: this.enableTime,\n            noCalendar: this.noCalendar,\n            allowInput: this.allowInput && !this.enableTime,\n            locale: this.getLocale(),\n            onChange: (selectedDates, dateStr, instance) => this.onNativeChange(selectedDates, dateStr, instance, true),\n            onClose: (selectedDates, dateStr, instance) => this.onNativeChange(selectedDates, dateStr, instance, false),\n        };\n\n        if (!this.formContainer) {\n            console.error(\"The element must be inside a <form #form='ngForm'> tag!\");\n        }\n\n        if (!this.name) {\n            console.error(\"The element must contain a name attribute!\");\n        } else {\n            setTimeout(() => {\n                this.componentReady = true;\n                setTimeout(() => {\n                    this.initComponent();\n                });\n            }, 500);\n        }\n    }\n\n    public ngOnDestroy() {\n        this.evDatePicker.flatpickr['calendarContainer']?.remove();\n\n        this.destroySubscriptions();\n    }\n\n    public clearInput(clearInstance = false) {\n        this.value = '';\n        this.nativeValue = '';\n\n        if (this.evDatePicker && clearInstance) {\n            this.evDatePicker.setDateFromInput('');\n        }\n    }\n\n    public change(value: any) {\n        if (this.componentReady) {\n            this.onValueChange.emit(this.value);\n        }\n\n        if (!value || (value instanceof Object && !Object.keys(value).length)) {\n            return this.clearInput();\n        }\n\n        if (value && value != this.nativeValue) {\n            let firstValue = moment(value);\n\n            if ((value instanceof Object && Object.keys(value).length) || (value instanceof Array && value.length)) {\n                firstValue = moment(value[0]);\n\n                if (value.length == 2) {\n                    let secondValue = moment(value[1]);\n\n                    if (firstValue.isValid() && secondValue.isValid()) {\n                        return (<any>this.evDatePicker.flatpickr).setDate([\n                            firstValue.format(this.getMomentDateFormat()),\n                            secondValue.format(this.getMomentDateFormat())\n                        ], true, this.dateFormat);\n                    }\n                }\n            }\n\n            if (firstValue.isValid()) {\n                return (<any>this.evDatePicker.flatpickr).setDate(firstValue.format(this.getMomentDateFormat()), true, this.dateFormat);\n            }\n\n            this.evDatePicker.setDateFromInput('');\n            this.clearInput();\n        }\n    }\n\n    public onNativeChange(value: any, dateStr: string, instance: any, triggerClose: boolean) {\n        if (dateStr && this.allowInput && !this.enableTime && dateStr != this.lastInputedDateString) {\n            this.lastInputedDateString = dateStr;\n\n            return this.change(this.convertDateToAmericanFormat(dateStr));\n        }\n\n        if (!value || (value instanceof Object && !Object.keys(value).length)) {\n            if (triggerClose) {\n                instance.close();\n            }\n\n            return this.clearInput();\n        }\n\n        if (this.mode == NgtDateMode.RANGE) {\n            this.nativeValue = [];\n\n            value.forEach(element => {\n                element = moment(element);\n\n                if (element && element.isValid()) {\n                    this.nativeValue.push(element.format(this.dateFormatNgModel));\n                }\n            });\n        } else if (value[0]) {\n            value = moment(value[0]);\n\n            if (value && value.isValid()) {\n                this.nativeValue = value.format(this.dateFormatNgModel);\n            }\n        }\n\n        if (this.value != this.nativeValue) {\n            this.value = this.nativeValue;\n        }\n    }\n\n    public getNativeValue() {\n        let nativeValue: any = this.nativeValue;\n\n        if (nativeValue && nativeValue.format) {\n            nativeValue = nativeValue.format(this.dateFormatNgModel);\n        }\n\n        return nativeValue;\n    }\n\n    public getFormattedNativeValue() {\n        let nativeValue: any = this.nativeValue;\n\n        if (nativeValue && Array.isArray(nativeValue)) {\n            let formattedNativeValue: string = '';\n\n            nativeValue.forEach(element => {\n                element = moment(element);\n\n                if (element.format && !this.enableTime) {\n                    formattedNativeValue += element.format('DD/MM/YYYY') + ' ';\n                } else if (element.format && this.enableTime) {\n                    formattedNativeValue += element.format('DD/MM/YYYY HH:mm:00') + ' ';\n                }\n            });\n\n            return formattedNativeValue;\n        } else if (this.dateFormat == 'H:i') {\n            return nativeValue;\n        } else if (nativeValue) {\n            nativeValue = moment(nativeValue);\n\n            if (nativeValue.format && !this.enableTime) {\n                return nativeValue.format('DD/MM/YYYY') + ' ';\n            } else if (nativeValue.format && this.enableTime) {\n                return nativeValue.format('DD/MM/YYYY HH:mm:00') + ' ';\n            }\n        }\n\n        return this.placeholder;\n    }\n\n    public hasErrors(): boolean {\n        return this.formControl?.errors && (this.formControl?.dirty || (this.formContainer && this.formContainer['submitted']));\n    }\n\n    public disabled(): boolean {\n        return this.isDisabled || this.isDisabledByParent();\n    }\n\n    private initComponent() {\n        if (this.formContainer && this.formContainer.control && (this.formControl = this.formContainer.control.get(this.name))) {\n            if (this.defaultDate && !this.value) {\n                this.value = moment(this.defaultDate).format(this.dateFormatNgModel);\n            }\n\n            this.updateValidations();\n\n            if (this.value) {\n                this.formControl.markAsDirty();\n            } else {\n                this.formControl.markAsPristine();\n            }\n\n            if (this.allowInput && !this.enableTime) {\n                this.setupDateInputMask();\n            }\n        }\n    }\n\n    private setupDateInputMask(): void {\n        if (this.locale == NgtDateLocale.BRAZIL) {\n            return applyInputMask(this.evDatePicker.flatpickr['input'], InputMaskEnum.DATE, { mask: '99/99/9999' });\n        }\n\n        if (this.locale == NgtDateLocale.US) {\n            return applyInputMask(this.evDatePicker.flatpickr['input'], InputMaskEnum.DATE, { mask: '9999-99-99' });\n        }\n    }\n\n    private updateValidations() {\n        if (!this.formControl) {\n            return;\n        }\n\n        let syncValidators = [];\n\n        if (this.isRequired) {\n            syncValidators.push(Validators.required);\n        }\n\n        setTimeout(() => {\n            this.formControl.setValidators(syncValidators);\n            this.formControl.updateValueAndValidity();\n        });\n    }\n\n    private getLocale() {\n        return this.locale == NgtDateLocale.US\n            ? english\n            : Portuguese;\n    }\n\n    private getDateMode() {\n        if (this.mode) {\n            if (this.mode == NgtDateMode.RANGE) {\n                return 'range';\n            }\n        }\n\n        return 'single';\n    }\n\n    private getMomentDateFormat() {\n        let dateFormat = '';\n\n        for (let i = 0; i < this.dateFormat.length; i++) {\n            switch (this.dateFormat.charAt(i)) {\n                case 'd':\n                    dateFormat += 'DD';\n                    break;\n                case 'm':\n                    dateFormat += 'MM';\n                    break;\n                case 'M':\n                    dateFormat += 'MMM';\n                    break;\n                case 'Y':\n                    dateFormat += 'YYYY';\n                    break;\n                case '/':\n                    dateFormat += '/';\n                    break;\n                case '-':\n                    dateFormat += '-';\n                    break;\n                case ':':\n                    dateFormat += ':';\n                    break;\n                case 'H':\n                    dateFormat += 'HH';\n                    break;\n                case 'i':\n                    dateFormat += 'mm';\n                    break;\n                case 's':\n                    dateFormat += 'ss';\n                    break;\n                default:\n                    if (this.dateFormat.charAt(i) != '.') {\n                        dateFormat += this.dateFormat.charAt(i);\n                    }\n            }\n        }\n\n        return dateFormat ? dateFormat : 'DD/MM/YYYY HH:mm:00';\n    }\n\n    private convertDateToAmericanFormat(dateTimeString: string): string {\n        if (this.locale == NgtDateLocale.US) {\n            return dateTimeString;\n        }\n\n        const splittedDate: Array<string> = dateTimeString.split('/');\n\n        return `${splittedDate[2]}-${splittedDate[1]}-${splittedDate[0]}`;\n    }\n\n    private isDisabledByParent(): boolean {\n        return this.ngtForm?.isDisabled\n            || this.ngtSection?.isDisabledState()\n            || this.ngtModal?.isDisabledState();\n    }\n\n    private destroySubscriptions() {\n        this.subscriptions.forEach(subscription => subscription.unsubscribe());\n        this.subscriptions = [];\n    }\n}\n","<label *ngIf=\"label\" class=\"{{ shining ? '' : 'block' }} mb-2 {{ngtStyle.compile(['text', 'fontCase'])}} flex\"\n    [hidden]='shining'>\n    <span class=\"truncate\" [title]=\"label\">\n        {{ label }}:\n    </span>\n\n    <span *ngIf=\"isRequired\" class=\"text-red-500 font-bold text-xxs ml-1\">*</span>\n\n    <ngt-helper *ngIf=\"helpText\" class=\"ml-1\" [helpTitle]=\"helpTitle\" [iconColor]=\"helpTextColor\"\n        [helperReverseYPosition]=\"helperReverseYPosition\">\n        {{ helpText }}\n    </ngt-helper>\n</label>\n\n<div [hidden]=\"shining || disabled() || isReadonly\" class=\"relative\">\n    <div class=\"overflow-hidden border {{ ngtStyle.compile(['h', 'color.text', 'px', 'py', 'text', 'rounded', 'color.text', 'color.bg', 'color.border']) }}\"\n        [class.border-error]=\"hasErrors()\">\n        <ev-date-picker class=\"block h-full w-full\" [config]=\"dateConfig\" disabled=\"true\" [placeholder]=\"placeholder\"\n            #evDatePicker>\n        </ev-date-picker>\n\n        <div *ngIf=\"allowClear && value\"\n            class=\"flex h-full absolute items-center right-0 top-0 w-auto cursor-pointer {{ showCalendarIcon ? 'mr-5' : 'mr-2' }}\"\n            (click)=\"clearInput(true)\">\n            <svg class=\"fill-current text-red-400\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n                <path\n                    d=\"M19.1 17.2l-5.3-5.3 5.3-5.3-1.8-1.8-5.3 5.4-5.3-5.3-1.8 1.7 5.3 5.3-5.3 5.3L6.7 19l5.3-5.3 5.3 5.3 1.8-1.8z\" />\n            </svg>\n        </div>\n\n        <div *ngIf=\"showCalendarIcon\"\n            class=\"flex h-full absolute items-center right-0 top-0 w-auto cursor-pointer mr-2\">\n            <svg class=\"fill-current text-sm\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n                <path\n                    d=\"M19,4H17V3a1,1,0,0,0-2,0V4H9V3A1,1,0,0,0,7,3V4H5A3,3,0,0,0,2,7V19a3,3,0,0,0,3,3H19a3,3,0,0,0,3-3V7A3,3,0,0,0,19,4Zm1,15a1,1,0,0,1-1,1H5a1,1,0,0,1-1-1V12H20Zm0-9H4V7A1,1,0,0,1,5,6H7V7A1,1,0,0,0,9,7V6h6V7a1,1,0,0,0,2,0V6h2a1,1,0,0,1,1,1Z\" />\n            </svg>\n        </div>\n    </div>\n</div>\n\n<ng-container *ngIf=\"shining\">\n    <div class=\"flex\">\n        <ngt-shining class=\"h-10 w-full\"></ngt-shining>\n    </div>\n</ng-container>\n\n<ng-container *ngIf=\"disabled() || isReadonly\">\n    <div\n        class=\"{{disabled() ? 'disabledDiv' : ''}} {{ngtStyle.compile(['h'])}} w-full text-xs px-4 rounded appearance-none flex items-center border border-gray-400\">\n        {{ getFormattedNativeValue() }}\n    </div>\n</ng-container>\n\n<input *ngIf=\"componentReady\" type=\"hidden\" [ngModel]=\"value\" [name]=\"name\" [value]=\"value\">\n\n<ng-content></ng-content>\n<ngt-validation [control]=\"formControl\" [container]=\"formContainer\"></ngt-validation>","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { EvDatePickerModule } from 'ev-date-picker';\nimport { NgtHelperComponent } from '../../../ngt-helper/ngt-helper.component';\nimport { NgtShiningModule } from '../../../ngt-shining/ngt-shining.module';\nimport { NgtValidationModule } from '../../../ngt-validation/ngt-validation.module';\nimport { NgtDateComponent } from './ngt-date.component';\n\n@NgModule({\n    declarations: [NgtDateComponent],\n    exports: [NgtDateComponent],\n    imports: [\n        CommonModule,\n        FormsModule,\n        EvDatePickerModule,\n        NgtValidationModule,\n        NgtShiningModule,\n        NgtHelperComponent,\n    ]\n})\nexport class NgtDateModule { }\n","import {\n    AfterViewInit,\n    ChangeDetectorRef,\n    Component,\n    effect,\n    Injector,\n    Input,\n    OnChanges,\n    OnDestroy,\n    Optional,\n    Self,\n    SimpleChanges,\n    SkipSelf,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { NgtStylizableDirective } from '../../directives/ngt-stylizable/ngt-stylizable.directive';\nimport { NgtStylizableService } from '../../services/ngt-stylizable/ngt-stylizable.service';\nimport { NgtFormComponent } from '../forms/template-driven/ngt-form/ngt-form.component';\nimport { NgtReactiveFormComponent } from '../forms/reactive/ngt-reactive-form/ngt-reactive-form.component';\nimport { NgtModalComponent } from '../ngt-modal/ngt-modal.component';\nimport { NgtSectionComponent } from '../ngt-section/ngt-section.component';\n\n@Component({\n    selector: 'ngt-button',\n    templateUrl: './ngt-button.component.html',\n    styleUrls: ['./ngt-button.component.css'],\n    standalone: false\n})\nexport class NgtButtonComponent implements AfterViewInit, OnChanges, OnDestroy {\n    @Input() public href: string;\n    @Input() public type: string = 'success';\n    @Input() public link: boolean;\n    @Input() public loading: boolean;\n    @Input() public isDisabled: boolean;\n    @Input() public forceEnable: boolean;\n    @Input() public noSubmit: boolean;\n\n    public ngtStyle: NgtStylizableService;\n\n    private subscriptions: Array<Subscription> = [];\n\n    public constructor(\n        private changeDetector: ChangeDetectorRef,\n        private injector: Injector,\n\n        @Optional() @SkipSelf()\n        private ngtForm: NgtFormComponent,\n\n        @Optional() @SkipSelf()\n        private ngtReactiveForm: NgtReactiveFormComponent,\n\n        @Optional() @SkipSelf()\n        private ngtSection: NgtSectionComponent,\n\n        @Optional() @SkipSelf()\n        private ngtModal: NgtModalComponent,\n\n        @Self() @Optional()\n        private ngtStylizableDirective: NgtStylizableDirective,\n    ) {\n        if (this.ngtStylizableDirective) {\n            this.ngtStyle = this.ngtStylizableDirective.getNgtStylizableService();\n        } else {\n            this.ngtStyle = new NgtStylizableService();\n        }\n\n        this.ngtStyle.load(this.injector, 'NgtButton', {\n            px: 'px-2',\n            py: 'py-1',\n            text: 'text-xs',\n            font: 'font-normal',\n            w: 'w-full',\n            h: 'h-full',\n            rounded: 'rounded'\n        });\n\n        effect(() => {\n            if (this.ngtReactiveForm) {\n                this.loading = this.ngtReactiveForm.loading();\n            }\n        });\n    }\n\n    public onClick(event: Event): void {\n        if (this.disabled() || this.loading) {\n            event.preventDefault();\n            event.stopPropagation();\n        }\n    }\n\n    public ngAfterViewInit(): void {\n        this.bindSubscriptions();\n    }\n\n    public ngOnChanges(changes: SimpleChanges) {\n        if (changes.type) {\n            if (changes.type.currentValue == 'success') {\n                this.ngtStyle.load(this.injector, 'NgtSuccessButton', {\n                    color: {\n                        bg: 'bg-green-500',\n                        text: 'text-white text-xs',\n                    }\n                });\n            } else if (changes.type.currentValue == 'warning') {\n                this.ngtStyle.load(this.injector, 'NgtWarningButton', {\n                    color: {\n                        bg: 'bg-orange-500',\n                        text: 'text-white text-xs',\n                    }\n                });\n            } else if (changes.type.currentValue == 'danger') {\n                this.ngtStyle.load(this.injector, 'NgtDangerButton', {\n                    color: {\n                        bg: 'bg-red-500',\n                        text: 'text-white text-xs',\n                    }\n                });\n            } else {\n                this.ngtStyle.load(this.injector, 'NgtInfoButton', {\n                    color: {\n                        bg: 'bg-blue-500',\n                        text: 'text-white text-xs',\n                    }\n                });\n            }\n        }\n    }\n\n    public disabled(): boolean {\n        return !this.forceEnable && (this.isDisabled || this.isDisabledByParent());\n    }\n\n    public ngOnDestroy(): void {\n        this.destroySubscriptions();\n    }\n\n    private bindSubscriptions(): void {\n        if (this.ngtForm) {\n            this.loading = this.ngtForm.isLoading();\n\n            this.changeDetector.detectChanges();\n\n            this.subscriptions.push(\n                this.ngtForm.onLoadingChange.subscribe((loading: boolean) => {\n                    this.loading = loading;\n                })\n            );\n        }\n    }\n\n    private isDisabledByParent(): boolean {\n        return this.ngtForm?.isDisabled\n            || this.ngtReactiveForm?.isDisabledState()\n            || this.ngtSection?.isDisabledState()\n            || this.ngtModal?.isDisabledState();\n    }\n\n    private destroySubscriptions(): void {\n        this.subscriptions.forEach(subscription => subscription.unsubscribe());\n        this.subscriptions = [];\n    }\n}\n","<ng-template #content>\n    <ng-content></ng-content>\n</ng-template>\n\n<div class=\"relative {{ngtStyle.compile(['w', 'h'])}}\" (click)='onClick($event)'>\n    <ng-container *ngIf='!link'>\n        <button [ngClass]=\"{ 'disabled-button': disabled(), 'loading-button': loading }\" [disabled]=\"disabled()\"\n            [type]=\"(loading || disabled() || noSubmit) ? 'button' : 'submit'\"\n            class=\"flex justify-center items-center focus:outline-none cursor-pointer {{ ngtStyle.compile(['color.bg', 'color.text', 'color.border', 'px', 'py', 'border', 'text', 'font', 'w', 'h', 'rounded']) }}\">\n            <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n\n            <span *ngIf=\"loading\" class=\"ml-2\">\n                <div class=\"div-loader h-5 w-5\"></div>\n            </span>\n        </button>\n    </ng-container>\n\n    <ng-container *ngIf='link'>\n        <a [routerLink]='href ? href : null' [ngClass]=\"{ 'disabled-button': disabled(), 'loading-button': loading }\"\n            class=\"flex justify-center items-center focus:outline-none cursor-pointer {{ ngtStyle.compile(['color.bg', 'color.text', 'color.border', 'px', 'py', 'border', 'text', 'font','w', 'h', 'rounded']) }}\">\n            <span class=\"w-full\">\n                <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n            </span>\n\n            <span *ngIf=\"loading\" class=\"ml-1\">\n                <div class=\"div-loader\"></div>\n            </span>\n        </a>\n    </ng-container>\n\n    <legend *ngIf=\"forceEnable\" class=\"absolute top-0 cursor-pointer hover:opacity-25 hover:bg-gray-100 {{ ngtStyle.compile(['w', 'h']) }}\"\n        (click)='onClick($event)'>\n    </legend>\n</div>","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\n\nimport { NgtFormModule } from '../forms/template-driven/ngt-form/ngt-form.module';\nimport { NgtButtonComponent } from './ngt-button.component';\n\n@NgModule({\n    declarations: [NgtButtonComponent],\n    exports: [NgtButtonComponent],\n    imports: [\n        CommonModule,\n        RouterModule,\n        NgtFormModule\n    ]\n})\nexport class NgtButtonModule { }\n","import {\n    ChangeDetectorRef,\n    Component,\n    ElementRef,\n    EventEmitter,\n    Host,\n    HostListener,\n    Injector,\n    Input,\n    OnChanges,\n    OnDestroy,\n    OnInit,\n    Optional,\n    Output,\n    Self,\n    SimpleChanges,\n    SkipSelf,\n    TemplateRef,\n    ViewChild,\n    ViewEncapsulation,\n} from '@angular/core';\nimport { AbstractControl, ControlContainer, NgForm } from '@angular/forms';\nimport { Subscription } from 'rxjs';\n\nimport { NgtControlValueAccessor, NgtValueAccessorProvider } from '../../../../base/ngt-control-value-accessor';\nimport { NgtStylizableDirective } from '../../../../directives/ngt-stylizable/ngt-stylizable.directive';\nimport { uuid } from '../../../../helpers/uuid';\nimport { NgtHttpPagination, NgtHttpResponse, NgtHttpService } from '../../../../services/http/ngt-http.service';\nimport { NgtTranslateService } from '../../../../services/http/ngt-translate.service';\nimport { NgtStylizableService } from '../../../../services/ngt-stylizable/ngt-stylizable.service';\nimport { NgtFormComponent } from '../ngt-form/ngt-form.component';\nimport { NgtInputComponent } from '../ngt-input/ngt-input.component';\nimport { NgtSectionComponent } from '../../../ngt-section/ngt-section.component';\nimport { NgtModalComponent } from '../../../ngt-modal/ngt-modal.component';\n\n@Component({\n    selector: 'ngt-multi-select',\n    templateUrl: './ngt-multi-select.component.html',\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./ngt-multi-select.component.css'],\n    providers: [\n        NgtValueAccessorProvider(NgtMultiSelectComponent)\n    ],\n    viewProviders: [\n        { provide: ControlContainer, useExisting: NgForm }\n    ],\n    standalone: false\n})\nexport class NgtMultiSelectComponent extends NgtControlValueAccessor implements OnInit, OnDestroy, OnChanges {\n    @ViewChild('containerRef') public containerRef: ElementRef;\n    @ViewChild('inputSearch') public inputSearch: NgtInputComponent;\n    @ViewChild('elementCheckboxTemplate') public elementCheckboxTemplate: TemplateRef<any>;\n\n    /** Visual */\n    @Input() public customOptionTemplate: TemplateRef<any>;\n    @Input() public customHeaderTemplate: TemplateRef<any>;\n    @Input() public label: string;\n    @Input() public helpTitle: string;\n    @Input() public helpText: string;\n    @Input() public helpTextColor: string = 'text-green-500';\n    @Input() public helperReverseYPosition: boolean;\n    @Input() public helperAutoXReverse: boolean = true;\n    @Input() public shining: boolean = false;\n    @Input() public loading: boolean = false;\n\n    /** Behavior */\n    @Input() public bindLabel: string | Function = 'name';\n    @Input() public bindSearch: string = 'name';\n    @Input() public itemsPerPage: number = 15;\n    @Input() public name: string;\n    @Input() public remoteResource: any;\n    @Input() public items: Array<any> = [];\n    @Input() public searchable: boolean = true;\n    @Input() public allowOriginalItemsUnselect: boolean = true;\n    @Input() public allowSelectAll: boolean = true;\n    @Input() public allowDisplayOnlySelected: boolean = true;\n    @Input() public autoSelectUniqueOption: boolean;\n\n    /** Validation */\n    @Input() public isRequired: boolean;\n    @Input() public isDisabled: boolean;\n\n    @Output() public onDataChange: EventEmitter<Array<NgtSelectContainerSelectableElementInterface>> = new EventEmitter();\n\n    public searchTerm: string = '';\n    public searchInputName: string = uuid();\n\n    public selectAllCheckboxName: string = uuid();\n    public displayOnlySelectedName: string = uuid();\n\n    public selectedElements: Array<NgtSelectContainerSelectableElementInterface> = [];\n    public itemsTotal: number;\n    public selectAllCheckbox: boolean;\n    public displayOnlySelected: boolean;\n\n    public nativeName: string = uuid();\n    public nativeValue: any;\n\n    public ngtStyle: NgtStylizableService;\n    public selectableElements: Array<NgtSelectContainerSelectableElementInterface> = [];\n    public selectableElementsOnSearch: Array<NgtSelectContainerSelectableElementInterface> = [];\n    public componentReady: boolean;\n\n    private pagination: NgtHttpPagination = {\n        count: null,\n        page: 1,\n        pages: null,\n        total: null,\n        from: null,\n        to: null,\n        per_page: null\n    };\n\n    private subscriptions: Array<Subscription> = [];\n    private inSearch: boolean;\n    private searchTimeout: any;\n    private previousSearchTerm: string = '';\n    private becameVisible: boolean;\n    private selectableResourcesCount: number;\n    private originalItems: Array<NgtSelectContainerSelectableElementInterface>;\n\n    public constructor(\n        private ngtHttpService: NgtHttpService,\n        private changeDetector: ChangeDetectorRef,\n\n        @Optional() @SkipSelf()\n        private ngtForm: NgtFormComponent,\n\n        @Optional() @SkipSelf()\n        private ngtSection: NgtSectionComponent,\n\n        @Optional() @SkipSelf()\n        private ngtModal: NgtModalComponent,\n\n        @Optional() @Self()\n        private ngtStylizableDirective: NgtStylizableDirective,\n\n        protected override injector: Injector,\n\n        @Optional() @Host()\n        public formContainer: ControlContainer,\n\n        @Optional()\n        public ngtTranslateService: NgtTranslateService\n    ) {\n        super();\n\n        if (this.ngtForm) {\n            this.shining = this.ngtForm.isShining();\n\n            this.subscriptions.push(\n                this.ngtForm.onShiningChange.subscribe((shining: boolean) => {\n                    this.shining = shining;\n                })\n            );\n        }\n\n        if (this.ngtStylizableDirective) {\n            this.ngtStyle = this.ngtStylizableDirective.getNgtStylizableService();\n        } else {\n            this.ngtStyle = new NgtStylizableService();\n        }\n\n        this.ngtStyle.load(this.injector, 'NgtMultiSelect', { h: 'h-64' });\n    }\n\n    @HostListener('scroll', ['$event'])\n    public onScroll(event: any): void {\n        const isScrollEnd = event.target.scrollTop && event.target.offsetHeight + event.target.scrollTop >= (event.target.scrollHeight - 30);\n\n        if (isScrollEnd && !this.loading && !this.displayOnlySelected && this.selectableElements?.length\n            && this.pagination.per_page < this.pagination.total) {\n            const currentPerPage = typeof this.pagination.per_page === 'string'\n                ? Number.parseInt(this.pagination.per_page)\n                : this.pagination.per_page;\n\n            setTimeout(() => this.loadData(currentPerPage + this.itemsPerPage, this.searchTerm));\n        }\n    }\n\n    public ngOnInit(): void {\n        if (!this.formContainer) {\n            console.error(\"The element must be inside a <form #form='ngForm'> tag!\");\n        }\n\n        if (!this.name) {\n            console.error(\"The element must contain a name attribute!\");\n        }\n    }\n\n    public ngDoCheck(): void {\n        if (!this.becameVisible && !this.isHidden()) {\n            this.becameVisible = true;\n\n            this.loadData().then(() => {\n                this.initComponentValidation();\n\n                if (this.canAutoSelectUniqueOption()) {\n                    this.selectableElements[0].isSelected = true;\n\n                    this.onNativeChange(this.selectableElements[0]);\n                }\n\n                this.originalItems = [...this.selectedElements];\n            });\n        }\n    }\n\n    public ngOnChanges(changes: SimpleChanges): void {\n        if (changes.isRequired && this.componentReady) {\n            this.updateValidations();\n        }\n\n        if (changes.isDisabled) {\n            this.displayOnlySelected = this.disabled();\n        }\n\n        if (changes.items) {\n            this.bindSelectableElements(changes.items.currentValue);\n\n            this.componentReady = true;\n\n            if (this.canAutoSelectUniqueOption()) {\n                this.selectableElements[0].isSelected = true;\n\n                this.onNativeChange(this.selectableElements[0]);\n            }\n        }\n\n        if (changes.remoteResource && this.becameVisible) {\n            this.loadData().then(() => {\n                this.initComponentValidation();\n\n                if (this.canAutoSelectUniqueOption()) {\n                    this.selectableElements[0].isSelected = true;\n\n                    this.onNativeChange(this.selectableElements[0]);\n                }\n            });\n        }\n\n        if (changes.itemsPerPage) {\n            this.pagination.per_page = changes.itemsPerPage.currentValue;\n        }\n    }\n\n    public ngOnDestroy(): void {\n        this.destroySubscriptions();\n    }\n\n    public setFocus(): void {\n        setTimeout(() => this.inputSearch.setFocus());\n    }\n\n    public async refresh(itemsPerPage?: number, searchTerm?: string): Promise<void> {\n        this.itemsPerPage = itemsPerPage !== undefined ? itemsPerPage : this.itemsPerPage;\n        this.searchTerm = searchTerm !== undefined ? searchTerm : this.searchTerm;\n\n        return this.loadData(this.itemsPerPage, this.searchTerm);\n    }\n\n    public reset(): void {\n        this.value = [];\n        this.nativeValue = [];\n        this.selectedElements = [];\n        this.refresh();\n    }\n\n    public selectAll(): void {\n        if (this.allowSelectAll && !this.loading && !this.disabled()) {\n            this.selectAllCheckbox = !this.selectAllCheckbox;\n\n            this.value = [];\n            this.nativeValue = [];\n            this.selectedElements = this.allowOriginalItemsUnselect ? [] : [...this.originalItems];\n\n            const perpage = this.selectAllCheckbox ? this.pagination.total : this.itemsPerPage;\n\n            this.loadData(perpage, this.searchTerm)\n                .then(() => {\n                    this.containerRef?.nativeElement?.scrollTo({ top: 0 });\n\n                    this.selectableElements.forEach(\n                        element => element.isSelected = this.selectAllCheckbox || this.isSelectedElement(element)\n                    );\n\n                    if (this.selectAllCheckbox) {\n                        this.selectedElements = this.selectableElements;\n                    }\n                });\n        }\n    }\n\n    public selectElements(elements: Array<any>): void {\n        if (!this.disabled()) {\n            const elementIds = this.isColoquentResources() ? elements.map(element => element.getApiId()) : elements;\n\n            this.selectableElements.forEach(\n                (selectableElement: NgtSelectContainerSelectableElementInterface) => {\n                    const value = selectableElement.value;\n\n                    if (\n                        !selectableElement.isSelected\n                        && (\n                            (this.isColoquentResources() && elementIds.includes(value.getApiId()))\n                            || elementIds.includes(value)\n                        )\n                    ) {\n                        selectableElement.isSelected = true;\n\n                        this.handleElementSelection(selectableElement);\n                    }\n                }\n            );\n        }\n    }\n\n    public toggleItem(selectableElement: NgtSelectContainerSelectableElementInterface, event?: Event): void {\n        event?.stopImmediatePropagation();\n\n        if (!this.disabled() && this.canSelectItem(selectableElement)) {\n            selectableElement.isSelected = !selectableElement.isSelected;\n\n            this.handleElementSelection(selectableElement);\n        }\n    }\n\n    public onNativeChange(selectableElement: NgtSelectContainerSelectableElementInterface): void {\n        if (this.componentReady) {\n            this.handleElementSelection(selectableElement);\n\n            if (this.hasChangesBetweenBindings(this.value, this.selectedElements)) {\n                this.value = this.selectedElements.map(e => e.value);\n            }\n        }\n    }\n\n    public change(selectedElements: Array<any>): void {\n        if (this.hasChangesBetweenBindings(selectedElements, this.selectedElements)) {\n            if (this.selectableElements?.length) {\n                this.bindSelectedElements(selectedElements);\n\n                this.selectableElements.filter(element => this.isSelectedElement(element))\n                    .forEach(element => element.isSelected = true);\n\n                this.selectableElementsOnSearch.filter(element => this.isSelectedElement(element))\n                    .forEach(element => element.isSelected = true);\n            } else {\n                this.selectedElements = selectedElements?.map(\n                    element => ({ uuid: uuid(), isSelected: true, value: element })\n                ) ?? [];\n\n                this.changeDetector.detectChanges();\n            }\n\n            if (!selectedElements?.length) {\n                this.markAsPristine();\n            }\n        }\n    }\n\n    public search(term: string): void {\n        if (!this.componentReady || term === undefined || term === null || term === this.previousSearchTerm || this.loading) {\n            return;\n        }\n\n        if (this.searchTimeout) {\n            clearTimeout(this.searchTimeout);\n        }\n\n        this.searchTimeout = setTimeout(() => {\n            this.previousSearchTerm = term;\n            this.selectAllCheckbox = this.selectedElements?.length == this.selectableResourcesCount;\n\n            if (!term) {\n                this.inSearch = false;\n\n                if (this.items?.length) {\n                    return;\n                }\n            }\n\n            this.inSearch = true;\n\n            if (this.items?.length) {\n                const normalizedTerm = term.toLowerCase().trim();\n\n                this.selectableElementsOnSearch = this.selectableElements.filter(item => {\n                    const value = String(this.getSelectableElementValue(item) ?? '').toLowerCase();\n\n                    return value.includes(normalizedTerm);\n                });\n            } else {\n                this.loadData(this.itemsPerPage, term);\n            }\n        }, 500);\n    }\n\n    public getSelectableElements(): Array<any> {\n        if (this.inSearch && this.items?.length) {\n            return this.selectableElementsOnSearch;\n        } else if (this.displayOnlySelected) {\n            return this.selectedElements;\n        }\n\n        return this.selectableElements;\n    }\n\n    public getSelectableElementValue(selectableItem: any): string {\n        if (typeof this.bindLabel === 'function') {\n            return this.bindLabel(selectableItem.value);\n        } else if (typeof selectableItem.value['getAttribute'] === 'function') {\n            return selectableItem.value.getAttribute(this.bindLabel);\n        }\n\n        return selectableItem.value[this.bindLabel];\n    }\n\n    public hasValidationErrors(): boolean {\n        return this.formControl?.errors && (\n            this.formControl.dirty || (this.formContainer && this.formContainer['submitted'])\n        );\n    }\n\n    public canSelectItem(item: NgtSelectContainerSelectableElementInterface): boolean {\n        return !this.disabled()\n            && (\n                this.allowOriginalItemsUnselect\n                || !this.originalItems?.some(originalItem => originalItem.uuid == item.uuid)\n            );\n    }\n\n    public disabled(): boolean {\n        return this.isDisabled || this.isDisabledByParent();\n    }\n\n    private handleElementSelection(selectableElement: NgtSelectContainerSelectableElementInterface): void {\n        if (selectableElement.isSelected && !this.isSelectedElement(selectableElement)) {\n            this.selectedElements.push(selectableElement);\n        } else if (!selectableElement.isSelected && this.isSelectedElement(selectableElement)) {\n            this.selectedElements = this.selectedElements.filter(\n                selectedElement => selectedElement.uuid !== selectableElement.uuid\n            );\n\n            this.onNativeChange(selectableElement);\n\n            if (this.displayOnlySelected && !this.selectedElements.length) {\n                this.displayOnlySelected = false;\n            }\n        }\n    }\n\n    private async loadData(perpage: number = this.itemsPerPage, searchTerm?: string): Promise<void> {\n        return new Promise<void>((resolve, reject) => {\n            if (this.remoteResource) {\n                if (this.loading) {\n                    return resolve();\n                }\n\n                if (perpage == this.itemsPerPage) {\n                    this.containerRef?.nativeElement?.scrollTo({ top: 0 });\n                }\n\n                this.selectableElements = [];\n                this.loading = true;\n                this.itemsPerPage = perpage;\n\n                const pagination: NgtHttpPagination = { ...this.pagination, ...{ per_page: perpage } };\n                const filters = searchTerm ? { [this.bindSearch]: searchTerm } : null;\n\n                this.subscriptions.push(\n                    this.ngtHttpService.get(\n                        this.remoteResource, filters, pagination\n                    ).subscribe(\n                        (response: NgtHttpResponse) => {\n                            this.bindSelectableElements(response.data);\n\n                            this.pagination = response.meta.pagination;\n                            this.itemsTotal = this.pagination.total;\n                            this.loading = false;\n\n                            if (!this.selectableResourcesCount && !searchTerm) {\n                                this.selectableResourcesCount = this.pagination.total;\n                            }\n\n                            this.onDataChange.emit(this.selectableElements);\n                            this.componentReady = true;\n                            this.changeDetector.detectChanges();\n\n                            setTimeout(() => this.displayOnlySelected = this.disabled());\n\n                            resolve();\n                        },\n                        (error) => {\n                            console.error(error);\n                            this.loading = false;\n                            this.changeDetector.detectChanges();\n\n                            reject();\n                        }\n                    )\n                );\n            } else {\n                console.error('The property [remoteResource] needs to be present to be able to make remote search');\n            }\n        });\n    }\n\n    private bindSelectableElements(data: Array<any>): void {\n        const formattedElements: Array<NgtSelectContainerSelectableElementInterface> = [];\n\n        data.forEach(item => {\n            const alreadySelected = this.findSelectedElement(item);\n\n            if (alreadySelected) {\n                formattedElements.push(alreadySelected);\n            } else {\n                formattedElements.push({ uuid: uuid(), isSelected: false, value: item });\n            }\n        });\n\n        this.selectableElements = formattedElements;\n    }\n\n    private bindSelectedElements(selectedElements: Array<any>): void {\n        this.selectableElements.forEach(selectableElement => {\n            const shouldBeSelected: boolean = !!selectedElements?.find(\n                selectedElement => this.compareWith(selectedElement, selectableElement.value)\n            );\n\n            if (shouldBeSelected) {\n                selectableElement.isSelected = true;\n                this.handleElementSelection(selectableElement);\n            }\n        });\n    }\n\n    private initComponentValidation(): void {\n        if (this.formContainer?.control && (this.formControl = this.formContainer.control.get(this.name))) {\n            this.formControl = this.formContainer.control.get(this.name);\n            this.markAsPristine();\n            this.updateValidations();\n        }\n    }\n\n    private updateValidations(): void {\n        const syncValidators = [];\n\n        if (this.isRequired) {\n            syncValidators.push(this.isRequiredValidator());\n        }\n\n        setTimeout(() => {\n            this.formControl.setValidators(syncValidators);\n            this.formControl.updateValueAndValidity();\n        });\n    }\n\n    private isRequiredValidator(): any {\n        return (control: AbstractControl) => {\n            if (Array.isArray(this.value) && this.value.length > 0) {\n                return null;\n            }\n\n            return { 'required': true };\n        };\n    }\n\n    private findSelectedElement(item: any): any {\n        return this.selectedElements.find(selectedElement => this.compareWith(selectedElement.value, item));\n    }\n\n    private compareWith(a: any, b: any): boolean {\n        if (typeof a['getApiId'] === 'function' && typeof b['getApiId'] === 'function') {\n            return a.getApiId() == b.getApiId();\n        } else if (a.id && b.id) {\n            return a.id == b.id;\n        }\n\n        return JSON.stringify(a) === JSON.stringify(b);\n    }\n\n    private hasChangesBetweenBindings(value: Array<any>, nativeValue: Array<any>): boolean {\n        if (value?.length && !value[0].uuid) {\n            nativeValue = nativeValue.map(element => element.value);\n        }\n\n        return JSON.stringify(value) !== JSON.stringify(nativeValue);\n    }\n\n    private isSelectedElement(selectableElement: NgtSelectContainerSelectableElementInterface): boolean {\n        return !!this.selectedElements.find(selectedElement => selectedElement.uuid === selectableElement.uuid);\n    }\n\n    private canAutoSelectUniqueOption(): boolean {\n        return this.autoSelectUniqueOption\n            && (!this.value || !this.value?.length)\n            && this.selectableElements?.length == 1;\n    }\n\n    private isHidden(): boolean {\n        return !this.containerRef?.nativeElement.offsetParent;\n    }\n\n    private isColoquentResources(): boolean {\n        return this.selectableElements?.length && typeof this.selectableElements[0].value['getApiId'] === 'function';\n    }\n\n    private isDisabledByParent(): boolean {\n        return this.ngtForm?.isDisabled\n            || this.ngtSection?.isDisabledState()\n            || this.ngtModal?.isDisabledState();\n    }\n\n    private destroySubscriptions(): void {\n        this.subscriptions.forEach(subscription => subscription.unsubscribe());\n        this.subscriptions = [];\n    }\n}\n\nexport interface NgtSelectContainerSelectableElementInterface {\n    uuid: string;\n    isSelected: boolean;\n    value: any;\n}\n","<label *ngIf=\"label && !shining\" class=\"flex text-xs\" [class.mb-2]='!hasValidationErrors()'>\n    <span class=\"truncate\" [title]=\"label\">\n        {{ label }}:\n    </span>\n\n    <span *ngIf=\"isRequired\" class=\"text-red-500 font-bold text-xs ml-1\">*</span>\n\n    <ngt-helper *ngIf=\"helpText\" [helpTitle]=\"helpTitle\" [iconColor]=\"helpTextColor\"\n        [helperReverseYPosition]=\"helperReverseYPosition\" [autoXReverse]=\"helperAutoXReverse\" class=\"ml-1\">\n        {{ helpText }}\n    </ngt-helper>\n</label>\n\n<ngt-validation [hidden]='shining' class=\"block mb-1\" [control]='formControl' [container]='formContainer'>\n</ngt-validation>\n\n<div class=\"{{ shining ? 'hidden' : 'flex flex-col' }} border w-full rounded {{ ngtStyle.compile(['h']) }}\"\n    style=\"min-height: 13rem;\" [class.border-red-500]='hasValidationErrors()' [class.disabled-background]='disabled()'>\n    <div *ngIf=\"allowSelectAll || searchable\" class=\"flex items-center w-full p-2 border-b\">\n        <ngt-checkbox *ngIf=\"allowSelectAll\" class=\"flex\" title=\"Selecionar todos\" [isDisabled]='loading || disabled()'\n            [label]=\"!searchable ? 'Selecionar todos' : ''\" [(ngModel)]=\"selectAllCheckbox\"\n            [name]=\"selectAllCheckboxName\" [isClickDisabled]='true' h='h-4' w='w-4' (click)='selectAll()'\n            ngt-stylizable>\n        </ngt-checkbox>\n\n        <ngt-input *ngIf=\"searchable\" class=\"block w-full\" [class.pl-2]=\"allowSelectAll\" [name]='searchInputName'\n            [(ngModel)]='searchTerm' placeholder='Buscar...' [allowClear]='true' [jit]='true' h='h-10'\n            (ngModelChange)='search($event)' [loading]='loading' [isDisabled]='disabled()' ngt-stylizable #inputSearch>\n        </ngt-input>\n    </div>\n\n    <div *ngIf=\"loading\" class=\"flex flex-col gap-3 px-3 h-full w-full cursor-wait\">\n        <ngt-shining class=\"h-10 w-full\"></ngt-shining>\n        <ngt-shining class=\"h-10 w-full\"></ngt-shining>\n        <ngt-shining class=\"h-10 w-full\"></ngt-shining>\n        <ngt-shining class=\"h-10 w-full\"></ngt-shining>\n    </div>\n\n    <div class=\"w-full overflow-y-auto text-xs {{ loading ? 'hidden' : 'flex flex-col' }}\" (scroll)='onScroll($event)'\n        #containerRef>\n        <ng-container *ngIf=\"customHeaderTemplate\" [ngTemplateOutlet]=\"customHeaderTemplate\">\n        </ng-container>\n\n        <ng-container *ngFor=\"let element of getSelectableElements(); let i = index\">\n            <div class=\"flex w-full items-center hover:bg-gray-200 {{ disabled() ? 'cursor-not-allowed' : 'cursor-pointer' }}\"\n                [class.p-2]='!customOptionTemplate' (click)='toggleItem(element, $event)'>\n                <ng-template let-element #elementCheckboxTemplate>\n                    <ngt-checkbox class=\"flex pr-2\" [name]='element.uuid' [(ngModel)]=\"element.isSelected\"\n                        (ngModelChange)='onNativeChange(element)' [isClickDisabled]='true'\n                        [isDisabled]='!canSelectItem(element)' h='h-5' w='w-5' (click)='toggleItem(element, $event)'\n                        ngt-stylizable>\n                    </ngt-checkbox>\n                </ng-template>\n\n                <ng-template let-element #defaultOptionTemplate>\n                    {{ getSelectableElementValue(element) }}\n                </ng-template>\n\n                <ng-container *ngIf=\"!customOptionTemplate\" [ngTemplateOutlet]=\"elementCheckboxTemplate\"\n                    [ngTemplateOutletContext]=\"{ $implicit: element }\">\n                </ng-container>\n\n                <ng-container [ngTemplateOutlet]=\"customOptionTemplate || defaultOptionTemplate\"\n                    [ngTemplateOutletContext]=\"{ $implicit: element, index: i }\">\n                </ng-container>\n            </div>\n        </ng-container>\n\n        <p *ngIf=\"!getSelectableElements()?.length\" class=\"text-center mt-4\">\n            {{ ngtTranslateService.ngtMultiSelectNoDataFound }}\n        </p>\n    </div>\n</div>\n\n<div *ngIf=\"allowDisplayOnlySelected\" class=\"{{ shining ? 'hidden' : 'flex' }} w-full items-center mt-2\">\n    <span class=\"text-xs mr-4\">\n        {{ selectedElements?.length || 0 }} / {{ itemsTotal || 0 }}\n    </span>\n\n    <ngt-checkbox class=\"flex\" label=\"Visualizar selecionados\" [name]='displayOnlySelectedName'\n        [(ngModel)]=\"displayOnlySelected\" [isDisabled]='loading || disabled()' h='h-5' w='w-5' ngt-stylizable>\n    </ngt-checkbox>\n</div>\n\n<ngt-shining *ngIf='shining' class=\"block w-full {{ ngtStyle.compile(['h']) }}\" style=\"min-height: 16rem;\"\n    rounded='rounded' ngt-stylizable>\n</ngt-shining>\n\n<input *ngIf='componentReady' type='hidden' [ngModel]='value' [name]='name' [value]='value'>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { NgtStylizableModule } from '../../../../directives/ngt-stylizable/ngt-stylizable.module';\nimport { NgtCheckboxModule } from '../ngt-checkbox/ngt-checkbox.module';\nimport { NgtHelperComponent } from '../../../ngt-helper/ngt-helper.component';\nimport { NgtInputModule } from '../ngt-input/ngt-input.module';\nimport { NgtShiningModule } from '../../../ngt-shining/ngt-shining.module';\nimport { NgtValidationModule } from '../../../ngt-validation/ngt-validation.module';\nimport { NgtMultiSelectComponent } from './ngt-multi-select.component';\n\n@NgModule({\n    declarations: [\n        NgtMultiSelectComponent\n    ],\n    exports: [\n        NgtMultiSelectComponent\n    ],\n    imports: [\n        CommonModule,\n        FormsModule,\n        NgtValidationModule,\n        NgtShiningModule,\n        NgtHelperComponent,\n        NgtInputModule,\n        NgtCheckboxModule,\n        NgtStylizableModule\n    ]\n})\nexport class NgtMultiSelectModule { }\n","export interface NgtDropzoneFile {\n    downloadUrl: string;\n    previewUrl: string;\n    thumbnailUrl: string;\n    name: string;\n    mimeType: string;\n    fileSize: any;\n};\n\nexport enum NgtDropzoneFileTypeEnum {\n    DOC = 'DOC',\n    PDF = 'PDF',\n    XLS = 'XLS',\n    DWG = 'DWG',\n    OTHER = 'OTHER'\n}\n\nexport enum NgtDropzonePreviewType {\n    DEFAULT = 'DEFAULT',\n    IMAGE = 'IMAGE',\n    VIDEO = 'VIDEO'\n}\n\nexport enum NgtDropzoneErrorType {\n    DEFAULT = 'DEFAULT',\n    SIZE = 'SIZE',\n    NO_MULTIPLE = 'NO_MULTIPLE',\n    ITEMS_LIMIT = 'ITEMS_LIMIT',\n    TYPE = 'TYPE'\n}\n","import { ChangeDetectionStrategy, Component, computed, OnInit, Signal, signal, WritableSignal } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { NgxDropzoneModule, NgxDropzonePreviewComponent } from 'ngx-dropzone';\n\nimport { NgtDropzoneFileTypeEnum } from '../../../meta/ngt-dropzone.meta';\n\n@Component({\n    selector: 'custom-dropzone-preview',\n    templateUrl: './custom-dropzone-preview.component.html',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: true,\n    imports: [\n        CommonModule,\n        NgxDropzoneModule,\n    ],\n    providers: [\n        {\n            provide: NgxDropzonePreviewComponent,\n            useExisting: CustomDropzonePreviewComponent\n        }\n    ],\n})\nexport class CustomDropzonePreviewComponent extends NgxDropzonePreviewComponent implements OnInit {\n    /** Computed Signals */\n\n    public readonly fileType: Signal<NgtDropzoneFileTypeEnum> = computed(() => {\n        const file = this.fileSignal();\n\n        if (!file) {\n            return NgtDropzoneFileTypeEnum.OTHER;\n        }\n\n        if (file.type.includes('.sheet')) {\n            return NgtDropzoneFileTypeEnum.XLS;\n        }\n\n        if (file.type.includes('pdf')) {\n            return NgtDropzoneFileTypeEnum.PDF;\n        }\n\n        if (file.type.includes('.document')) {\n            return NgtDropzoneFileTypeEnum.DOC;\n        }\n\n        if (file.type.includes('.dwg')) {\n            return NgtDropzoneFileTypeEnum.DWG;\n        }\n\n        return NgtDropzoneFileTypeEnum.OTHER;\n    });\n\n    /** Internal Signals */\n\n    private readonly fileSignal: WritableSignal<File | null> = signal(null);\n\n    public constructor(public sanitizer: DomSanitizer) {\n        super(sanitizer);\n    }\n\n    public ngOnInit(): void {\n        if (!this.file) {\n            console.error('No file to read. Please provide a file using the [file] Input property.');\n\n            return;\n        }\n\n        this.fileSignal.set(this.file);\n    }\n}\n","<div class=\"flex flex-col items-center w-48 cursor-pointer hover:opacity-75\">\n    <div class=\"w-full flex justify-center border-2 rounded py-4 text-6xl\">\n        @if (fileType() === 'OTHER') {\n            <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n                <path class=\"heroicon-ui\" fill=\"#4a5568\"\n                    d=\"M6 2h9a1 1 0 0 1 .7.3l4 4a1 1 0 0 1 .3.7v13a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4c0-1.1.9-2 2-2zm9 2.41V7h2.59L15 4.41zM18 9h-3a2 2 0 0 1-2-2V4H6v16h12V9zm-2 7a1 1 0 0 1-1 1H9a1 1 0 0 1 0-2h6a1 1 0 0 1 1 1zm0-4a1 1 0 0 1-1 1H9a1 1 0 0 1 0-2h6a1 1 0 0 1 1 1zm-5-4a1 1 0 0 1-1 1H9a1 1 0 1 1 0-2h1a1 1 0 0 1 1 1z\" />\n            </svg>\n        }\n\n        @if (fileType() === 'DOC') {\n            <svg fill=\"#4a5568\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n                <path\n                    d=\"M14.4 0l-9.6 0c-1.33,0 -2.4,1.08 -2.4,2.4l0 19.2c0,1.33 1.07,2.4 2.4,2.4l14.4 0c1.33,0 2.4,-1.07 2.4,-2.4l0 -14.4 -7.2 -7.2 0 0zm4.8 21.6l-14.4 0 0 -19.2 8.4 0 0 6 6 0 0 13.2 0 0zm-0.78 -12l-2.52 10.8 -1.68 0 -2.16 -8.15 -2.16 8.15 -1.68 0 -2.64 -10.8 1.8 0 1.68 8.17 2.16 -8.17 1.56 0 2.16 8.17 1.68 -8.17 1.8 0z\" />\n            </svg>\n        }\n\n        @if (fileType() === 'XLS') {\n            <svg fill=\"#4a5568\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n                <path\n                    d=\"M14.4 0l-9.6 0c-1.33,0 -2.4,1.08 -2.4,2.4l0 19.2c0,1.33 1.07,2.4 2.4,2.4l14.4 0c1.33,0 2.4,-1.07 2.4,-2.4l0 -14.4 -7.2 -7.2 0 0zm4.8 21.6l-14.4 0 0 -19.2 8.4 0 0 6 6 0 0 13.2 0 0zm-6.12 -6.6l3.48 5.4 -2.16 0 -2.4 -4.08 -2.4 4.08 -2.16 0 3.48 -5.4 -3.48 -5.4 2.16 0 2.4 4.08 2.4 -4.08 2.16 0 -3.48 5.4z\" />\n            </svg>\n        }\n\n        @if (fileType() === 'PDF') {\n            <svg fill=\"#4a5568\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n                <path\n                    d=\"M14.4 0l7.2 7.2 0 14.4c0,1.32 -1.08,2.4 -2.4,2.4l-14.4 0c-1.32,0 -2.4,-1.08 -2.4,-2.4l0 -19.2c0,-1.32 1.08,-2.4 2.4,-2.4l9.6 0 0 0zm4.8 21.6l0 -13.2 -6 0 0 -6 -8.4 0 0 19.2 14.4 0 0 0zm-8.5 -9.23c-0.28,-0.92 -0.92,-3.87 0.76,-3.92 1.68,-0.05 0.58,3.74 0.58,3.74 0.46,1.79 2.42,3.07 2.42,3.07 0.6,-0.18 4.02,-0.57 3.54,1.21 -0.52,1.77 -4.2,0.1 -4.2,0.1 -2.34,0.17 -4.09,0.8 -4.09,0.8 -1.36,2.53 -2.94,3.63 -3.59,2.56 -0.8,-1.33 2.56,-3.04 2.56,-3.04 1.74,-2.83 2,-4.47 2.02,-4.52l0 0zm0.78 1.01c-0.48,1.56 -1.44,3.23 -1.44,3.23 1.02,-0.41 3.26,-0.88 3.26,-0.88 -1.37,-1.2 -1.79,-2.34 -1.82,-2.35l0 0zm3.77 2.6c0,0 2.1,0.79 2.15,0.47 0.08,-0.32 -1.6,-0.61 -2.15,-0.47l0 0zm-6.79 1.79c-0.93,0.36 -1.81,1.9 -1.6,1.9 0.22,0.01 1.1,-0.72 1.6,-1.9l0 0zm3.02 -6.66c0,-0.06 0.52,-2.01 0,-2.07 -0.36,-0.04 -0.01,2.02 0,2.07z\" />\n            </svg>\n        }\n\n        @if (fileType() === 'DWG') {\n            <svg version=\"1.0\" xmlns=\"http://www.w3.org/2000/svg\" width=\"512.000000pt\" height=\"512.000000pt\"\n                viewBox=\"0 0 512.000000 512.000000\" preserveAspectRatio=\"xMidYMid meet\">\n                <g transform=\"translate(0.000000,512.000000) scale(0.100000,-0.100000)\" fill=\"#4a5568\" stroke=\"none\">\n                    <path\n                        d=\"M830 5104 c-42 -18 -86 -58 -108 -99 -15 -27 -17 -109 -20 -871 l-3 -842 -92 -4 c-112 -5 -179 -32 -235 -92 -81 -88 -77 -39 -77 -946 0 -801 0 -805 21 -851 54 -116 140 -169 291 -177 l92 -5 3 -536 c3 -588 1 -562 65 -623 65 -62 -61 -58 1793 -58 1854 0 1728 -4 1793 58 64 61 62 35 65 623 l3 536 92 5 c151 8 237 61 291 177 21 46 21 50 21 851 0 907 4 858 -77 946 -56 60 -123 87 -235 92 l-93 4 -1 302 c-1 165 -4 312 -8 326 -8 30 -994 1160 -1033 1184 -24 15 -138 16 -1270 16 -1088 -1 -1247 -3 -1278 -16z m2400 -714 l0 -530 29 -32 29 -33 466 -3 466 -3 0 -249 0 -250 -1660 0 -1660 0 0 815 0 815 1165 0 1165 0 0 -530z m1093 -1516 c87 -16 127 -32 127 -48 -1 -17 -48 -197 -54 -203 -2 -3 -27 2 -54 11 -131 44 -323 40 -429 -9 -72 -33 -146 -110 -174 -182 -27 -72 -36 -204 -19 -282 26 -120 110 -221 217 -261 70 -26 193 -36 251 -21 l42 12 0 124 0 125 -95 0 -95 0 0 110 0 110 230 0 230 0 0 -320 0 -320 -27 -11 c-16 -6 -71 -20 -123 -32 -129 -29 -401 -31 -500 -4 -116 33 -189 74 -266 151 -114 114 -164 244 -164 426 0 265 115 460 331 563 52 25 117 50 144 57 122 30 283 31 428 4z m-3042 -12 c304 -82 457 -320 419 -653 -35 -312 -215 -491 -545 -544 -94 -16 -317 -20 -448 -9 l-77 7 0 602 0 603 83 10 c45 6 174 9 287 7 170 -2 218 -6 281 -23z m808 -34 c16 -81 96 -524 127 -705 15 -90 29 -161 31 -160 2 2 14 66 28 143 20 116 101 518 145 722 l12 52 147 0 147 0 28 -147 c67 -356 104 -564 116 -648 13 -92 29 -144 30 -95 0 42 47 310 107 608 l56 282 138 0 c77 0 139 -3 139 -7 0 -5 -217 -853 -301 -1175 l-10 -38 -149 0 c-133 0 -149 2 -154 18 -13 44 -127 653 -141 759 -9 65 -18 119 -19 120 -1 2 -12 -55 -24 -125 -13 -70 -55 -272 -94 -449 l-71 -323 -152 0 -151 0 -142 598 c-78 328 -142 603 -142 610 0 9 36 12 144 12 l145 0 10 -52z m2131 -2088 l0 -480 -1660 0 -1660 0 0 480 0 480 1660 0 1660 0 0 -480z\" />\n\n                    <path\n                        d=\"M923 2673 l-23 -4 0 -399 0 -399 43 -6 c60 -9 200 12 261 39 140 63 212 207 204 411 -3 86 -8 109 -34 165 -51 108 -128 167 -249 189 -57 11 -157 13 -202 4z\" />\n                </g>\n            </svg>\n        }\n    </div>\n</div>\n\n@if (removable) {\n    <ngx-dropzone-remove-badge (click)=\"_remove($event)\" style=\"top: -15px !important;\">\n    </ngx-dropzone-remove-badge>\n}","import {\n ChangeDetectionStrategy, Component, computed, effect, HostListener, input, output, Signal, signal, ViewChild, WritableSignal\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { EloverdeDocViewerComponent, EloverdeDocViewerModule } from 'eloverde-doc-viewer';\n\nimport { NgtTranslateService } from '../../../services/http/ngt-translate.service';\n\n@Component({\n    selector: 'ngt-dropzone-file-viewer',\n    styleUrls: ['./ngt-dropzone-file-viewer.component.css'],\n    templateUrl: './ngt-dropzone-file-viewer.component.html',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: true,\n    imports: [\n        CommonModule,\n        EloverdeDocViewerModule,\n    ],\n})\nexport class NgtDropzoneFileViewerComponent {\n    @ViewChild(EloverdeDocViewerComponent) public eloverdeDocViewer: EloverdeDocViewerComponent;\n\n    /** Visual Inputs */\n\n    public readonly url = input<string>();\n    public readonly fileName = input<string>();\n    public readonly fileSize = input<number>();\n    public readonly disableContent = input<string>('none');\n    public readonly canDownloadFile = input<boolean>(true);\n\n    /** Outputs */\n\n    public readonly onClose = output<void>();\n\n    /** Internal Signals */\n\n    public readonly canShowViewer: WritableSignal<boolean> = signal(false);\n    public readonly loading: WritableSignal<boolean> = signal(false);\n    public readonly maxFileSize: WritableSignal<number> = signal(30000000); /** 30 MB */\n\n    /** Computed Signals */\n\n    public readonly isFileTooLarge: Signal<boolean> = computed(\n        () => (this.fileSize() || 0) > this.maxFileSize()\n    );\n\n    public constructor(\n        public ngtTranslateService: NgtTranslateService\n    ) {\n        this.registerEffects();\n    }\n\n    @HostListener('window:keydown', ['$event'])\n    public keyEvent(event: KeyboardEvent): void {\n        if (event.code === 'Escape') {\n            this.canShowViewer.set(false);\n\n            setTimeout(() => this.onClose.emit(), 500);\n        }\n    }\n\n    public init(): void {\n        if ((this.fileSize() || 0) < this.maxFileSize()) {\n            this.loading.set(true);\n            this.canShowViewer.set(true);\n        }\n    }\n\n    public close(): void {\n        this.canShowViewer.set(false);\n\n        this.onClose.emit();\n    }\n\n    public handleClose(): void {\n        this.onClose.emit();\n    }\n\n    public downloadFile(): void {\n        const file = document.createElement('a');\n\n        file.target = '_blank';\n        file.href = this.url() || '';\n        file.setAttribute('download', this.fileName() || '');\n        file.click();\n    }\n\n    private registerEffects(): void {\n        effect(() => {\n            const size = this.fileSize();\n            const maxSize = this.maxFileSize();\n\n            if (size && size >= maxSize) {\n                this.canShowViewer.set(false);\n                this.loading.set(false);\n            }\n        });\n    }\n}\n","<div style=\"width:100%; height: 100%;\">\n    <div style=\"width:100%; height: 100%;\">\n        <div class=\"w-full py-5 pr-10\">\n            <div class=\"w-full flex justify-end text-2xl\">\n                @if (canDownloadFile()) {\n                    <div class=\"cursor-pointer\" (click)=\"downloadFile()\">\n                        <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\">\n                            <path fill=\"#fff\" d=\"M13 8V2H7v6H2l8 8 8-8h-5zM0 18h20v2H0v-2z\" />\n                        </svg>\n                    </div>\n                }\n\n                &nbsp;&nbsp;&nbsp;\n\n                <div class=\"cursor-pointer\" (click)=\"close()\">\n                    <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n                        <path fill=\"#fff\"\n                            d=\"M24 2.42l-2.42 -2.42 -9.58 9.58 -9.58 -9.58 -2.42 2.42 9.58 9.58 -9.58 9.58 2.42 2.42 9.58 -9.58 9.58 9.58 2.42 -2.42 -9.58 -9.58 9.58 -9.58z\" />\n                    </svg>\n                </div>\n\n            </div>\n\n            <div class=\"w-full justify-center text-center text-2xl font-mono text-white\">\n                {{ fileName() }}\n            </div>\n        </div>\n\n        @if (isFileTooLarge()) {\n            <div class=\"flex w-full h-full justify-center items-center\">\n                <div class=\"flex flex-col w-auto bg-gray-700 rounded-lg p-6\" style=\"max-width: 80%;\">\n                    <p class=\"text-white font-medium text-center w-full\">\n                        {{\n                        canDownloadFile()\n                        ? ngtTranslateService.ngtFileTooLargeForPreview\n                        : ngtTranslateService.ngtFileTooLargeForPreviewNoDownloadPermission\n                        }}\n                    </p>\n\n                    @if (canDownloadFile()) {\n                        <div class=\"cursor-pointer mt-5 text-2xl self-center border rounded p-2\"\n                            (click)=\"downloadFile()\">\n                            <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\">\n                                <path fill=\"#fff\" d=\"M13 8V2H7v6H2l8 8 8-8h-5zM0 18h20v2H0v-2z\" />\n                            </svg>\n                        </div>\n                    }\n                </div>\n            </div>\n        }\n\n        @if (canShowViewer()) {\n            <div class=\"px-10\" style=\"width:100%; height: 83%;\">\n                <eloverde-doc-viewer class=\"h-full w-full flex justify-center\" [url]=\"url()\" [disableContent]=\"disableContent()\"\n                    (loaded)=\"loading.set(false)\" (onClose)=\"handleClose()\">\n                </eloverde-doc-viewer>\n            </div>\n        }\n    </div>\n</div>\n\n@if (loading()) {\n    <div class=\"flex fixed inset-0 justify-center items-center w-full h-full cursor-wait z-50\">\n        <div class=\"div-loader\"></div>\n    </div>\n}","import {ChangeDetectionStrategy, Component, computed, input, output, Signal, ViewEncapsulation} from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { NgtDropzoneFile, NgtDropzoneFileTypeEnum } from '../../../meta/ngt-dropzone.meta';\n\n@Component({\n    selector: 'ngt-dropzone-view',\n    templateUrl: './ngt-dropzone-view.component.html',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: true,\n    imports: [\n        CommonModule,\n    ],\n})\nexport class NgtDropzoneViewComponent {\n    /** Visual Inputs */\n\n    public readonly resources = input<Array<NgtDropzoneFile>>([]);\n    public readonly dropzoneHeight = input<string>();\n    public readonly loading = input<boolean>(false);\n    public readonly placeholder = input<string>();\n\n    /** Outputs */\n\n    public readonly onImageClick = output<{ div: HTMLDivElement; index: number }>();\n    public readonly onFileClick = output<{ previewUrl: string; name: string; fileSize: number }>();\n\n    /** Computed Signals */\n\n    public readonly images: Signal<Array<NgtDropzoneFile>> = computed(\n        () => this.resources().filter((resource) => this.isImage(resource))\n    );\n\n    public readonly audios: Signal<Array<NgtDropzoneFile>> = computed(\n        () => this.resources().filter((resource) => this.isAudio(resource))\n    );\n\n    public readonly videos: Signal<Array<NgtDropzoneFile>> = computed(\n        () => this.resources().filter((resource) => this.isVideo(resource))\n    );\n\n    public readonly files: Signal<Array<NgtDropzoneFile>> = computed(\n        () => this.resources().filter((resource) => this.isFile(resource))\n    );\n\n    public readonly hasNoResources: Signal<boolean> = computed(\n        () => !this.loading() && !this.resources()?.length\n    );\n\n    /** Constants */\n\n    public readonly ngtDropzoneViewFileTypeEnum = NgtDropzoneFileTypeEnum;\n\n    public handleImageClick(index: number): void {\n        const imagesDiv = document.createElement('div');\n\n        this.images().forEach((image: NgtDropzoneFile) => {\n            const imageElement = document.createElement('img');\n\n            imageElement.src = image.previewUrl;\n\n            imagesDiv.appendChild(imageElement);\n        });\n\n        this.onImageClick.emit({ div: imagesDiv, index });\n    }\n\n    public handleFileClick(previewUrl: string, name: string, fileSize: number): void {\n        this.onFileClick.emit({ previewUrl, name, fileSize });\n    }\n\n    public getFileType(resource: NgtDropzoneFile): NgtDropzoneFileTypeEnum {\n        if (resource.mimeType.includes('.sheet')) {\n            return NgtDropzoneFileTypeEnum.XLS;\n        }\n\n        if (resource.mimeType.includes('pdf')) {\n            return NgtDropzoneFileTypeEnum.PDF;\n        }\n\n        if (resource.mimeType.includes('.document')) {\n            return NgtDropzoneFileTypeEnum.DOC;\n        }\n\n        return NgtDropzoneFileTypeEnum.OTHER;\n    }\n\n    public getFormattedFileSize(resource: any): string {\n        if (resource) {\n            let size = resource.size || resource.fileSize;\n\n            if (!size) {\n                if (resource.file && resource.file.size) {\n                    size = resource.file.size;\n                } else {\n                    size = 0;\n                }\n            }\n\n            if (parseFloat(size) > 1000000) {\n                return (parseFloat(size) / 1000000).toFixed(2) + ' Mb';\n            }\n\n            return Math.round(parseFloat(size) / 1000) + ' Kb';\n        }\n    }\n\n    private isImage(resource: NgtDropzoneFile): boolean {\n        return resource.mimeType.includes('image');\n    }\n\n    private isAudio(resource: NgtDropzoneFile): boolean {\n        return resource.mimeType.includes('audio');\n    }\n\n    private isVideo(resource: NgtDropzoneFile): boolean {\n        return resource.mimeType.includes('video');\n    }\n\n    private isFile(resource: NgtDropzoneFile): boolean {\n        return !this.isImage(resource) && !this.isAudio(resource) && !this.isVideo(resource);\n    }\n}\n","<div class=\"border-2 border-dotted border-gray-400 rounded p-2 flex items-center overflow-x-auto overflow-y-hidden\"\n    [ngStyle]=\"{ 'height': dropzoneHeight() }\">\n    @if (loading()) {\n        <div class=\"flex absolute justify-center items-center w-full h-full cursor-wait z-10\">\n            <div class=\"div-loader\"></div>\n        </div>\n    }\n\n    <div [class]=\"loading() ? 'hidden' : 'flex items-center'\">\n        @if (images().length) {\n            <div class=\"flex py-5\">\n                @for (image of images(); track image.previewUrl; let index = $index) {\n                    <div class=\"w-48 mr-8\">\n                        <div class=\"flex flex-col w-48 mx-4 cursor-pointer\"\n                            [title]=\"(image.name || '') + ' (' + getFormattedFileSize(image) + ')'\"\n                            (click)=\"handleImageClick(index)\">\n                            <img [src]=\"image.thumbnailUrl\" [alt]=\"image.name\" class=\"w-full h-32\">\n\n                            <p class=\"w-full truncate text-gray-500 text-center text-sm font-mono\">\n                                {{ image.name || '' }}\n                            </p>\n                        </div>\n                    </div>\n                }\n            </div>\n        }\n\n        @if (audios().length) {\n            @for (audio of audios(); track audio.previewUrl) {\n                <div class=\"flex flex-col w-48 mx-4 py-5\">\n                    <audio controls>\n                        <source [src]=\"audio.previewUrl\">\n                    </audio>\n\n                    <p class=\"w-full truncate text-gray-500 text-center text-sm font-mono\">\n                        {{ audio.name || '' }}\n                    </p>\n                </div>\n            }\n        }\n\n        @if (videos().length) {\n            @for (video of videos(); track video.previewUrl) {\n                <div class=\"flex flex-col w-48 mx-4 py-5\">\n                    <video width=\"240\" controls>\n                        <source [src]=\"video.previewUrl\">\n                    </video>\n\n                    <p class=\"w-full truncate text-gray-500 text-center text-sm font-mono\">\n                        {{ video.name || '' }}\n                    </p>\n                </div>\n            }\n        }\n\n        @if (files().length) {\n            @for (file of files(); track file.previewUrl) {\n                <div class=\"flex flex-col w-48 mr-6 cursor-pointer\"\n                    (click)=\"handleFileClick(file.previewUrl, file.name, file.fileSize)\">\n                    <div class=\"w-full flex justify-center border-2 rounded py-4 text-6xl\">\n                        @if (getFileType(file) === ngtDropzoneViewFileTypeEnum.OTHER) {\n                            <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n                                <path class=\"heroicon-ui\" fill=\"#4a5568\"\n                                    d=\"M6 2h9a1 1 0 0 1 .7.3l4 4a1 1 0 0 1 .3.7v13a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4c0-1.1.9-2 2-2zm9 2.41V7h2.59L15 4.41zM18 9h-3a2 2 0 0 1-2-2V4H6v16h12V9zm-2 7a1 1 0 0 1-1 1H9a1 1 0 0 1 0-2h6a1 1 0 0 1 1 1zm0-4a1 1 0 0 1-1 1H9a1 1 0 0 1 0-2h6a1 1 0 0 1 1 1zm-5-4a1 1 0 0 1-1 1H9a1 1 0 1 1 0-2h1a1 1 0 0 1 1 1z\" />\n                            </svg>\n                        }\n\n                        @if (getFileType(file) === ngtDropzoneViewFileTypeEnum.DOC) {\n                            <svg fill=\"#4a5568\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n                                <path\n                                    d=\"M14.4 0l-9.6 0c-1.33,0 -2.4,1.08 -2.4,2.4l0 19.2c0,1.33 1.07,2.4 2.4,2.4l14.4 0c1.33,0 2.4,-1.07 2.4,-2.4l0 -14.4 -7.2 -7.2 0 0zm4.8 21.6l-14.4 0 0 -19.2 8.4 0 0 6 6 0 0 13.2 0 0zm-0.78 -12l-2.52 10.8 -1.68 0 -2.16 -8.15 -2.16 8.15 -1.68 0 -2.64 -10.8 1.8 0 1.68 8.17 2.16 -8.17 1.56 0 2.16 8.17 1.68 -8.17 1.8 0z\" />\n                            </svg>\n                        }\n\n                        @if (getFileType(file) === ngtDropzoneViewFileTypeEnum.XLS) {\n                            <svg fill=\"#4a5568\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n                                <path\n                                    d=\"M14.4 0l-9.6 0c-1.33,0 -2.4,1.08 -2.4,2.4l0 19.2c0,1.33 1.07,2.4 2.4,2.4l14.4 0c1.33,0 2.4,-1.07 2.4,-2.4l0 -14.4 -7.2 -7.2 0 0zm4.8 21.6l-14.4 0 0 -19.2 8.4 0 0 6 6 0 0 13.2 0 0zm-6.12 -6.6l3.48 5.4 -2.16 0 -2.4 -4.08 -2.4 4.08 -2.16 0 3.48 -5.4 -3.48 -5.4 2.16 0 2.4 4.08 2.4 -4.08 2.16 0 -3.48 5.4z\" />\n                            </svg>\n                        }\n\n                        @if (getFileType(file) === ngtDropzoneViewFileTypeEnum.PDF) {\n                            <svg fill=\"#4a5568\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n                                <path\n                                    d=\"M14.4 0l7.2 7.2 0 14.4c0,1.32 -1.08,2.4 -2.4,2.4l-14.4 0c-1.32,0 -2.4,-1.08 -2.4,-2.4l0 -19.2c0,-1.32 1.08,-2.4 2.4,-2.4l9.6 0 0 0zm4.8 21.6l0 -13.2 -6 0 0 -6 -8.4 0 0 19.2 14.4 0 0 0zm-8.5 -9.23c-0.28,-0.92 -0.92,-3.87 0.76,-3.92 1.68,-0.05 0.58,3.74 0.58,3.74 0.46,1.79 2.42,3.07 2.42,3.07 0.6,-0.18 4.02,-0.57 3.54,1.21 -0.52,1.77 -4.2,0.1 -4.2,0.1 -2.34,0.17 -4.09,0.8 -4.09,0.8 -1.36,2.53 -2.94,3.63 -3.59,2.56 -0.8,-1.33 2.56,-3.04 2.56,-3.04 1.74,-2.83 2,-4.47 2.02,-4.52l0 0zm0.78 1.01c-0.48,1.56 -1.44,3.23 -1.44,3.23 1.02,-0.41 3.26,-0.88 3.26,-0.88 -1.37,-1.2 -1.79,-2.34 -1.82,-2.35l0 0zm3.77 2.6c0,0 2.1,0.79 2.15,0.47 0.08,-0.32 -1.6,-0.61 -2.15,-0.47l0 0zm-6.79 1.79c-0.93,0.36 -1.81,1.9 -1.6,1.9 0.22,0.01 1.1,-0.72 1.6,-1.9l0 0zm3.02 -6.66c0,-0.06 0.52,-2.01 0,-2.07 -0.36,-0.04 -0.01,2.02 0,2.07z\" />\n                            </svg>\n                        }\n                    </div>\n\n                    <p class=\"w-full truncate text-gray-500 text-center text-sm font-mono\">\n                        {{ file.name || '' }}\n                    </p>\n                </div>\n            }\n        }\n    </div>\n\n    @if (hasNoResources()) {\n        <div class=\"px-2 text-center w-full\">\n            {{ placeholder() }}\n        </div>\n    }\n</div>","import { Observable } from 'rxjs';\n\nexport abstract class NgtAttachmentHttpService {\n    public abstract preview(attachment: any): Observable<NgtAttachmentHttpResponse>;\n\n    public abstract download(attachment: any): Observable<any>;\n\n    public abstract upload(file: any, remoteResource?: any): Observable<any>;\n}\n\nexport interface NgtAttachmentHttpResponse {\n    data?: any;\n}\n","import {\n    AfterContentChecked,\n    ChangeDetectorRef,\n    Component,\n    ElementRef,\n    EventEmitter,\n    Host,\n    Injector,\n    Input,\n    OnDestroy,\n    OnInit,\n    Optional,\n    Output,\n    signal,\n    SimpleChanges,\n    SkipSelf,\n    ViewChild,\n    ViewEncapsulation,\n    WritableSignal,\n} from '@angular/core';\nimport { ControlContainer, NgForm, Validators } from '@angular/forms';\nimport { NgxDropzoneChangeEvent, NgxDropzoneComponent } from 'ngx-dropzone';\nimport { forkJoin, Subscription } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport Viewer from 'viewerjs';\n\nimport { NgtControlValueAccessor, NgtValueAccessorProvider } from '../../../../base/ngt-control-value-accessor';\nimport { getEnumFromString } from '../../../../helpers/enum/enum';\nimport { uuid } from '../../../../helpers/uuid';\nimport { NgtAttachmentHttpService } from '../../../../services/http/ngt-attachment-http.service';\nimport { NgtStylizableService } from '../../../../services/ngt-stylizable/ngt-stylizable.service';\nimport { NgtDropzoneFileViewerComponent } from '../../../shared/ngt-dropzone-file-viewer/ngt-dropzone-file-viewer.component';\nimport { NgtDropzoneErrorType, NgtDropzoneFile, NgtDropzonePreviewType } from '../../../../meta/ngt-dropzone.meta';\nimport { NgtFormComponent } from '../ngt-form/ngt-form.component';\nimport { NgtSectionComponent } from '../../../ngt-section/ngt-section.component';\nimport { NgtModalComponent } from '../../../ngt-modal/ngt-modal.component';\n\n@Component({\n    selector: 'ngt-dropzone',\n    templateUrl: './ngt-dropzone.component.html',\n    styleUrls: ['./ngt-dropzone.component.css'],\n    encapsulation: ViewEncapsulation.None,\n    providers: [\n        NgtValueAccessorProvider(NgtDropzoneComponent),\n    ],\n    viewProviders: [\n        { provide: ControlContainer, useExisting: NgForm }\n    ],\n    standalone: false\n})\nexport class NgtDropzoneComponent extends NgtControlValueAccessor implements OnInit, OnDestroy, AfterContentChecked {\n    @ViewChild('container') public container: ElementRef;\n    @ViewChild(NgxDropzoneComponent, { static: true }) public ngxDropzone: NgxDropzoneComponent;\n    @ViewChild(NgtDropzoneFileViewerComponent, { static: true }) public ngtDropzoneFileViewer: NgtDropzoneFileViewerComponent;\n\n    // Visual\n    @Input() public label: string;\n    @Input() public placeholder: string;\n    @Input() public helpTextColor: string = 'text-green-500';\n    @Input() public helpText: string;\n    @Input() public helpTitle: string;\n\n    // Behavior\n    @Input() public resources: Array<NgtDropzoneFile> = [];\n    @Input() public multipleSelection: boolean = false;\n    @Input() public itemsLimit: number;\n    @Input() public showFileName: boolean = false;\n    @Input() public disableClick: boolean = false;\n    @Input() public disabled: boolean = false;\n    @Input() public viewMode: boolean = false;\n    @Input() public removable: boolean = false;\n    @Input() public canDownloadFile: boolean = true;\n    @Input() public verticalExpandable: boolean = false;\n    @Input() public isRequired: boolean;\n    @Input() public hideNgxDropzone: boolean;\n    @Input() public acceptedFiles: string = '*' /** Mime type */;\n    @Input() public unacceptedFiles: string; /** Mime type */;\n    @Input() public maxFileSize: number; /** Bytes */;\n    @Input() public previewType: NgtDropzonePreviewType = NgtDropzonePreviewType.DEFAULT;\n    @Input() public name: string;\n    @Input() public remoteResource: any;\n\n    @Output() public onFileSelected: EventEmitter<NgxDropzoneChangeEvent> = new EventEmitter();\n    @Output() public onFileSelectError: EventEmitter<NgtDropzoneErrorType> = new EventEmitter();\n    @Output() public onFileUploadFail: EventEmitter<any> = new EventEmitter();\n    @Output() public onFileRemoved = new EventEmitter();\n    @Output() public onFileUploadInit = new EventEmitter();\n    @Output() public onFileUploaded = new EventEmitter();\n    @Output() public onFilePreviewLoaded = new EventEmitter();\n\n    public dropzoneHeight: string = '180px';\n    public uploadedResources = [];\n    public forceDisableClick: boolean = false;\n    public nativeValue = [];\n    public showNgtDropzoneFileViewer: boolean = false;\n    public componentReady = false;\n    public loading: boolean = false;\n    public ngtDropzoneLoaderStyle: NgtStylizableService;\n    public ngxElementId: string = uuid();\n    public imageViewerOptions: any = {\n        navbar: true,\n        toolbar: {\n            zoomIn: true,\n            zoomOut: true,\n            reset: true,\n            rotateLeft: true,\n            rotateRight: true,\n            prev: true,\n            next: true,\n        }\n    };\n\n    public fileViewerUrl: WritableSignal<string> = signal('');\n    public fileViewerFileName: WritableSignal<string> = signal('');\n    public fileViewerFileSize: WritableSignal<number> = signal(0);\n\n    private subscriptions: Array<Subscription> = [];\n\n    public constructor(\n        @Optional() @Host()\n        public formContainer: ControlContainer,\n\n        private changeDetector: ChangeDetectorRef,\n\n        @Optional() @SkipSelf()\n        private ngtAttachmentHttpService: NgtAttachmentHttpService,\n\n        @Optional() @SkipSelf()\n        private ngtForm: NgtFormComponent,\n\n        @Optional() @SkipSelf()\n        private ngtSection: NgtSectionComponent,\n\n        @Optional() @SkipSelf()\n        private ngtModal: NgtModalComponent,\n\n        protected override injector: Injector,\n    ) {\n        super();\n\n        this.ngtDropzoneLoaderStyle = new NgtStylizableService();\n\n        this.ngtDropzoneLoaderStyle.load(this.injector, 'NgtDropzoneLoader', {\n            h: 'h-8',\n            color: {\n                text: 'text-gray-600'\n            }\n        });\n    }\n\n    public ngOnChanges(changes: SimpleChanges) {\n        if (changes.previewType) {\n            this.previewType = getEnumFromString(changes.previewType.currentValue, NgtDropzonePreviewType);\n        }\n    }\n\n    public ngAfterContentChecked() {\n        if (this.container && this.container.nativeElement) {\n            this.dropzoneHeight = `${this.container.nativeElement.parentElement.offsetHeight}px`;\n\n            this.changeDetector.detectChanges();\n        }\n    }\n\n    public ngOnInit() {\n        setTimeout(() => {\n            this.componentReady = true;\n\n            setTimeout(() => {\n                this.initComponent();\n            });\n        }, 500);\n    }\n\n    public ngOnDestroy() {\n        this.destroySubscriptions();\n    }\n\n    public imagePreview(index) {\n        const images = this.uploadedResources.filter((resource) => this.isImage(resource));\n        const imagesDiv = document.createElement(\"div\");\n\n        images.forEach((image) => {\n            let imageElement = document.createElement(\"img\");\n\n            imageElement.src = image.file.url;\n\n            imagesDiv.appendChild(imageElement);\n        });\n\n        this.onImageClick(imagesDiv, index);\n    }\n\n    public onImageClick(element, index?) {\n        if (!this.viewMode) {\n            this.forceDisableClick = true;\n        }\n\n        const ngtDropzoneComponent = this;\n\n        if (index !== null && index !== undefined) {\n            this.imageViewerOptions = { ...this.imageViewerOptions, ...{ initialViewIndex: index } };\n        }\n\n        const viewer = new Viewer(element, {\n            ...this.imageViewerOptions, ...{\n                hidden() {\n                    ngtDropzoneComponent.forceDisableClick = false;\n                    viewer.destroy();\n                }\n            }\n        });\n\n        viewer.show();\n    }\n\n    public onFileClick(url: string, name: string, size: number) {\n        this.forceDisableClick = true;\n        this.showNgtDropzoneFileViewer = true;\n\n        this.fileViewerUrl.set(url);\n        this.fileViewerFileName.set(name);\n        this.fileViewerFileSize.set(size);\n\n        this.ngtDropzoneFileViewer.init();\n    }\n\n    public onCloseFileViewer(): void {\n        this.showNgtDropzoneFileViewer = false;\n        this.forceDisableClick = false;\n    }\n\n    public async onSelect(event: NgxDropzoneChangeEvent) {\n        if (event.rejectedFiles.length) {\n            for (const rejectedFile of <any>event.rejectedFiles) {\n                if (rejectedFile.reason == 'size') {\n                    this.onFileSelectError.emit(NgtDropzoneErrorType.SIZE);\n                    break;\n                } else if (rejectedFile.reason == 'no_multiple') {\n                    this.onFileSelectError.emit(NgtDropzoneErrorType.NO_MULTIPLE);\n                    break;\n                } else if (rejectedFile.reason == 'type') {\n                    this.onFileSelectError.emit(NgtDropzoneErrorType.TYPE);\n                    break;\n                } else {\n                    this.onFileSelectError.emit(NgtDropzoneErrorType.DEFAULT);\n                    break;\n                }\n            }\n        }\n\n        if (this.itemsLimit) {\n            if (this.itemsLimit == 1 && event.addedFiles\n                && event.addedFiles.length == this.itemsLimit && this.uploadedResources.length == this.itemsLimit) {\n                this.uploadedResources = [];\n            }\n\n            if (event.addedFiles\n                && event.addedFiles.length + this.uploadedResources.length <= this.itemsLimit) {\n                this.onFileSelected.emit(event);\n                this.uploadFiles(event.addedFiles);\n            } else {\n                this.onFileSelectError.emit(NgtDropzoneErrorType.ITEMS_LIMIT);\n            }\n        } else {\n            this.onFileSelected.emit(event);\n            this.uploadFiles(event.addedFiles);\n        }\n    }\n\n    public async uploadFiles(files: Array<File>) {\n        if (files && files.length) {\n            const temporaryFiles = [];\n            const temporaryAttachments = [];\n            const observables = [];\n            const unacceptedFiles = [];\n\n            this.loading = true;\n            this.onFileUploadInit.emit();\n\n            files.forEach(file => {\n                if (file.type.includes(this.unacceptedFiles)) {\n                    return unacceptedFiles.push(file);\n                }\n\n                observables.push(this.ngtAttachmentHttpService.upload(file, this.remoteResource).pipe(\n                    map((response: any) => {\n                        if (response && response.data) {\n                            if (response.data.attributes && response.data.attributes.data) {\n                                file['url'] = response.data.attributes.data.url;\n                            }\n\n                            temporaryFiles.push({\n                                id: response.data.id,\n                                size: file.size,\n                                file: file\n                            });\n                            response.data['loaded'] = true;\n                            temporaryAttachments.push(response.data);\n                        }\n                    })\n                ));\n            });\n\n            if (!observables.length && unacceptedFiles.length) {\n                this.loading = false;\n\n                return this.onFileSelectError.emit(NgtDropzoneErrorType.TYPE);\n            }\n\n            this.subscriptions.push(\n                forkJoin(observables).subscribe(\n                    (response) => {\n                        this.uploadedResources.push(...temporaryFiles);\n\n                        if (this.itemsLimit == 1) {\n                            this.onNativeChange([...temporaryAttachments]);\n                        } else {\n                            this.onNativeChange([...temporaryAttachments, ...this.nativeValue]);\n                        }\n\n                        this.onFileUploaded.emit();\n                        this.loading = false;\n\n                        if (unacceptedFiles.length) {\n                            this.onFileSelectError.emit(NgtDropzoneErrorType.TYPE);\n                        }\n\n                        setTimeout(() => this.changeDetector.detectChanges(), 500);\n                    },\n                    (error) => {\n                        this.onFileUploadFail.emit(error);\n                        this.loading = false;\n\n                        setTimeout(() => this.changeDetector.detectChanges(), 500);\n                    })\n            );\n        }\n    }\n\n    public async loadFilePreview(attachments: any) {\n        if (attachments && attachments.length && attachments[0]) {\n            let temporaryResource = [];\n            let observables = [];\n\n            attachments.forEach((attachment: any) => {\n                if (!(attachment instanceof File) && !attachment.loaded) {\n                    this.loading = true;\n\n                    attachment['loaded'] = true;\n\n                    observables.push(this.ngtAttachmentHttpService.preview(attachment)\n                        .pipe(\n                            map((response: any) => {\n                                temporaryResource.push({\n                                    id: response.data.getApiId(),\n                                    file: response.data.getAttribute('file')\n                                });\n                            })\n                        ));\n                }\n            });\n\n            this.subscriptions.push(\n                forkJoin(observables).subscribe(\n                    (response) => {\n                        this.uploadedResources.push(...temporaryResource);\n                        this.onNativeChange(attachments);\n                        this.onFilePreviewLoaded.emit();\n                        this.loading = false;\n\n                        setTimeout(() => this.changeDetector.detectChanges(), 500);\n                    },\n                    (error) => {\n                        this.loading = false;\n                    })\n            );\n        }\n    }\n\n    public onRemove(resource: any) {\n        this.uploadedResources.splice(this.uploadedResources.indexOf(resource), 1);\n        this.nativeValue = this.nativeValue.filter(element => element.id != resource.id);\n        this.onNativeChange(this.nativeValue);\n        this.onFileRemoved.emit(resource);\n    }\n\n    public isImage(resource: any) {\n        return this.previewType == 'IMAGE'\n            || (\n                resource.file?.type\n                && resource.file.type.includes('image')\n                && !resource.file.type.includes('dwg')\n            );\n    }\n\n    public isVideo(resource: any) {\n        return this.previewType == 'VIDEO' || (resource.file && resource.file.type && resource.file.type.includes('video'));\n    }\n\n    public isAudio(resource: any) {\n        return (resource.file && resource.file.type && resource.file.type.includes('audio'));\n    }\n\n    public isFile(resource: any) {\n        return !this.isImage(resource) && !this.isAudio(resource) && !this.isVideo(resource);\n    }\n\n    public getFormattedFileSize(resource: any) {\n        if (resource) {\n            let size = resource.size || resource.fileSize;\n\n            if (!size) {\n                if (resource.file && resource.file.size) {\n                    size = resource.file.size;\n                } else {\n                    size = 0;\n                }\n            }\n\n            if (parseFloat(size) > 1000000) {\n                return (parseFloat(size) / 1000000).toFixed(2) + ' Mb';\n            }\n\n            return Math.round(parseFloat(size) / 1000) + ' Kb';\n        }\n    }\n\n    public onNativeChange(value: any) {\n        if (value === undefined) {\n            this.value = [];\n            this.nativeValue = [];\n        } else {\n            this.nativeValue = value;\n\n            if (JSON.stringify(this.value) != JSON.stringify(this.nativeValue)) {\n                this.value = this.nativeValue;\n            }\n        }\n    }\n\n    public change(value: any) {\n        if (value && !this.viewMode) {\n            this.onNativeChange(Array.isArray(value) ? value : [value]);\n\n            if (this.componentReady) {\n                this.loadFilePreview(Array.isArray(value) ? value : [value]);\n            }\n        }\n    }\n\n    public downloadFile(attachment: any) {\n        this.ngtAttachmentHttpService.download(attachment).subscribe(() => { });\n    }\n\n    public reset() {\n        this.uploadedResources = [];\n        this.value = [];\n        this.nativeValue = [];\n        this.initComponent();\n    }\n\n    public openFileSelector() {\n        document.getElementById(this.ngxElementId).click();\n    }\n\n    public isDisabled(): boolean {\n        return this.disabled || this.isDisabledByParent();\n    }\n\n    private initComponent() {\n        if (this.viewMode) {\n            this.previewType = NgtDropzonePreviewType.DEFAULT;\n\n            return;\n        }\n\n        if (this.formContainer && this.formContainer.control\n            && (this.formControl = this.formContainer.control.get(this.name))) {\n            this.resetFilesLoad();\n            this.loadFilePreview(Array.isArray(this.value) ? this.value : [this.value]);\n            this.updateValidations();\n\n            if (this.value) {\n                this.formControl.markAsDirty();\n            } else {\n                this.formControl.markAsPristine();\n            }\n        }\n    }\n\n    private resetFilesLoad() {\n        if (Array.isArray(this.value)) {\n            this.value.forEach(element => {\n                if (element) {\n                    element['loaded'] = false;\n                }\n            });\n        }\n    }\n\n    private updateValidations() {\n        if (!this.formControl) {\n            return;\n        }\n\n        let syncValidators = [];\n\n        if (this.isRequired) {\n            syncValidators.push(Validators.required);\n        }\n\n        syncValidators.push();\n\n        setTimeout(() => {\n            this.formControl.setValidators(syncValidators);\n            this.formControl.updateValueAndValidity();\n        });\n    }\n\n    private isDisabledByParent(): boolean {\n        return this.ngtForm?.isDisabled\n            || this.ngtSection?.isDisabledState()\n            || this.ngtModal?.isDisabledState();\n    }\n\n    private destroySubscriptions() {\n        this.subscriptions.forEach(subscription => subscription.unsubscribe());\n        this.subscriptions = [];\n    }\n}\n","<div class=\"flex flex-col h-full w-full\" #container>\n    <label *ngIf=\"label\" class=\"flex mb-2 text-sm\">\n        {{ label }}:\n\n        <span class=\"text-red-500 font-bold text-md ml-1\" *ngIf=\"isRequired\">*</span>\n\n        <ngt-helper *ngIf=\"helpText\" [helpTitle]=\"helpTitle\" [iconColor]=\"helpTextColor\" class=\"ml-1\">\n            {{ helpText }}\n        </ngt-helper>\n    </label>\n\n    <div *ngIf=\"!viewMode\" class=\"h-full w-full relative\">\n        <div *ngIf=\"loading && !hideNgxDropzone\"\n            class=\"flex absolute justify-center items-center w-full h-full cursor-wait z-10\">\n            <div class=\"div-loader\"></div>\n        </div>\n\n        <ngx-dropzone [id]=\"ngxElementId\" [multiple]='multipleSelection' [maxFileSize]='maxFileSize'\n            (change)='onSelect($event)' [class.single-attachment]='itemsLimit == 1' [accept]='acceptedFiles'\n            [disabled]='isDisabled() || loading' [expandable]='verticalExpandable'\n            [disableClick]='disableClick || forceDisableClick' [ngStyle]=\"{ 'height': dropzoneHeight }\"\n            [ngClass]=\"{ 'hidden':hideNgxDropzone }\" #ngxDropzone>\n            <ng-container *ngIf=\"!loading\">\n                <ngx-dropzone-label *ngIf=\"!uploadedResources?.length\" class=\"px-2\">\n                    {{ placeholder }}\n                </ngx-dropzone-label>\n\n                <ng-container *ngFor=\"let resource of uploadedResources; let index = index\">\n                    <div class=\"flex flex-col w-48 mx-4\"\n                        title=\"{{ resource?.file?.name || '' }} ({{ getFormattedFileSize(resource) }})\">\n                        <custom-dropzone-preview *ngIf=\"previewType == 'DEFAULT' && isFile(resource)\"\n                            [file]='resource.file' [removable]=\"removable\" (removed)=\"onRemove(resource)\"\n                            (click)=\"onFileClick(resource.file.url, resource.file.name, resource.file.size)\"\n                            ngProjectAs=\"ngx-dropzone-preview\">\n                        </custom-dropzone-preview>\n\n                        <div *ngIf=\"isImage(resource)\" class=\"cursor-pointer\" (click)=\"imagePreview(index)\" #gallery>\n                            <ngx-dropzone-image-preview class=\"image-preview-default-class\" [file]=\"resource.file\"\n                                [removable]=\"removable\" (removed)=\"onRemove(resource)\">\n                            </ngx-dropzone-image-preview>\n                        </div>\n\n                        <ngx-dropzone-video-preview *ngIf=\"isVideo(resource) || isAudio(resource)\"\n                            [file]=\"resource.file\" [removable]=\"removable\" (removed)=\"onRemove(resource)\">\n                        </ngx-dropzone-video-preview>\n\n                        <p *ngIf=\"showFileName\"\n                            class=\"w-full truncate text-gray-500 text-center text-sm font-mono mt-2\">\n                            {{ resource?.file?.name || '' }}\n                        </p>\n                    </div>\n                </ng-container>\n            </ng-container>\n        </ngx-dropzone>\n    </div>\n\n    <ngt-dropzone-view *ngIf=\"viewMode\" class=\"h-full w-full\" [resources]=\"resources\" [loading]=\"loading\"\n        [placeholder]=\"placeholder\" [dropzoneHeight]=\"dropzoneHeight\"\n        (onFileClick)=\"onFileClick($event.previewUrl, $event.name, $event.fileSize)\"\n        (onImageClick)=\"onImageClick($event.div, $event.index)\">\n    </ngt-dropzone-view>\n\n    <ngt-dropzone-file-viewer [hidden]=\"!showNgtDropzoneFileViewer\" [url]=\"fileViewerUrl()\"\n        [fileName]=\"fileViewerFileName()\" [fileSize]=\"fileViewerFileSize()\" (onClose)=\"onCloseFileViewer()\"\n        [canDownloadFile]=\"canDownloadFile\" [disableContent]=\"canDownloadFile ? 'none' : 'popout'\">\n    </ngt-dropzone-file-viewer>\n\n    <input *ngIf='componentReady' type=\"hidden\" [ngModel]=\"value\" [name]=\"name\" [value]=\"value\">\n    <ngt-validation [control]=\"formControl\" [container]=\"formContainer\"></ngt-validation>\n</div>","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { NgxDropzoneModule } from 'ngx-dropzone';\n\nimport { NgtHelperComponent } from '../../../ngt-helper/ngt-helper.component';\nimport { NgtSvgModule } from '../../../ngt-svg/ngt-svg.module';\nimport { NgtValidationModule } from '../../../ngt-validation/ngt-validation.module';\nimport { CustomDropzonePreviewComponent } from '../../../shared/custom-dropzone-preview/custom-dropzone-preview.component';\nimport { NgtDropzoneFileViewerComponent } from '../../../shared/ngt-dropzone-file-viewer/ngt-dropzone-file-viewer.component';\nimport { NgtDropzoneViewComponent } from '../../../shared/ngt-dropzone-view/ngt-dropzone-view.component';\nimport { NgtDropzoneComponent } from './ngt-dropzone.component';\n\n@NgModule({\n    exports: [NgtDropzoneComponent],\n    declarations: [\n        NgtDropzoneComponent,\n    ],\n    imports: [\n        CommonModule,\n        FormsModule,\n        NgtValidationModule,\n        NgxDropzoneModule,\n        NgtSvgModule,\n        NgtHelperComponent,\n        CustomDropzonePreviewComponent,\n        NgtDropzoneFileViewerComponent,\n        NgtDropzoneViewComponent,\n    ]\n})\nexport class NgtDropzoneModule { }\n","import { ElementRef, Injectable } from \"@angular/core\";\nimport { applyInputMask, InputMaskEnum } from '../../../../../helpers/input-mask/input-mask.helper';\n\nconst MASKS: {} = {\n    [InputMaskEnum.CPF]: {\n        mask: ['999.999.999-99'],\n        showMaskOnHover: false\n    },\n    [InputMaskEnum.CNPJ]: {\n        mask: ['99.999.999/9999-99'],\n        showMaskOnHover: false\n    },\n    [InputMaskEnum.CUIT]: {\n        mask: ['99-99999999-9'],\n        clearMaskOnLostFocus: false\n    },\n    [InputMaskEnum.RUT]: {\n        mask: ['999999999999'],\n        clearMaskOnLostFocus: false\n    },\n    [InputMaskEnum.CPF_CNPJ_RUT]: {\n        mask: ['999.999.999-99', '999999999999', '99.999.999/9999-99'],\n        keepStatic: true,\n        showMaskOnHover: false\n    },\n    [InputMaskEnum.CPF_CNPJ]: {\n        mask: ['999.999.999-99', '99.999.999/9999-99'],\n        keepStatic: true,\n        showMaskOnHover: false\n    },\n    [InputMaskEnum.DECIMAL]: {\n        groupSeparator: '.',\n        radixPoint: ',',\n        autoGroup: true,\n        repeat: 16,\n        rightAlign: false,\n        showMaskOnHover: false\n    },\n    [InputMaskEnum.CELLPHONE]: {\n        mask: ['(99) 999-999', '(99) 9999-9999', '(99) 99999-9999'],\n        keepStatic: true,\n        showMaskOnHover: false\n    },\n    [InputMaskEnum.INTERNATIONAL_PHONE]: {\n        mask: ['+999 99 999-999', '+99 (99) 9999-9999', '+99 (99) 99999-9999', '+999 (99) 9999-9999', '+999 (99) 99999-9999'],\n        keepStatic: true,\n        showMaskOnHover: false\n    },\n    [InputMaskEnum.PLATE]: {\n        mask: ['AAA-9&99'],\n        keepStatic: true,\n        showMaskOnHover: false\n    },\n    [InputMaskEnum.CEP]: {\n        mask: ['99999-999'],\n        showMaskOnHover: false\n    },\n    [InputMaskEnum.INTEGER]: {\n        rightAlign: false,\n        showMaskOnHover: false\n    },\n    [InputMaskEnum.NUMERIC_STRING]: {\n        regex: \"[0-9]*\",\n        showMaskOnHover: false\n    },\n    [InputMaskEnum.TIME]: '99:99',\n};\n\n@Injectable({ providedIn: null })\nexport class NgtReactiveInputMaskService {\n    private appliedMask: InputMaskEnum;\n\n    public applyMask(\n        mask: InputMaskEnum,\n        inputElement: ElementRef,\n        decimalMaskPrecision?: number,\n        maxValue?: number,\n        minValue?: number,\n        validateMinValueOnMask?: boolean\n    ): void {\n        this.appliedMask = mask;\n\n        MASKS[InputMaskEnum.DECIMAL]['digits'] = decimalMaskPrecision;\n        MASKS[InputMaskEnum.DECIMAL]['max'] = maxValue;\n\n        MASKS[InputMaskEnum.INTEGER]['max'] = maxValue;\n        MASKS[InputMaskEnum.INTEGER]['min'] = validateMinValueOnMask ? minValue : undefined;\n\n        if (mask === InputMaskEnum.DECIMAL) {\n            return applyInputMask(inputElement, InputMaskEnum.DECIMAL, MASKS[mask]);\n        }\n\n        if (mask === InputMaskEnum.INTEGER) {\n            return applyInputMask(inputElement, InputMaskEnum.INTEGER, MASKS[mask]);\n        }\n\n        if (mask) {\n            return applyInputMask(inputElement, MASKS[mask]);\n        }\n    }\n\n    public removeMask(value: string): string {\n        if (this.appliedMask == InputMaskEnum.DECIMAL) {\n            value = (value + \"\")\n                .replace(/\\./g, '')\n                .replace(',', '.');\n        }\n\n        if (\n            this.appliedMask === InputMaskEnum.CPF_CNPJ\n            || this.appliedMask === InputMaskEnum.CPF\n            || this.appliedMask === InputMaskEnum.CNPJ\n            || this.appliedMask === InputMaskEnum.CPF_CNPJ_RUT\n            || this.appliedMask === InputMaskEnum.CUIT\n        ) {\n            value = (value + \"\").replace(/[^\\d]/g, '');\n        }\n\n        if (\n            this.appliedMask === InputMaskEnum.CELLPHONE\n            || this.appliedMask === InputMaskEnum.INTERNATIONAL_PHONE\n        ) {\n            value = (value + \"\")\n                .replace('(', '')\n                .replace(')', '')\n                .replace(' ', '')\n                .replace(' ', '')\n                .replace('-', '')\n                .replace('+', '');\n        }\n\n        return value;\n    }\n}\n","import { Injectable } from \"@angular/core\";\nimport { AbstractControl, AsyncValidatorFn, ValidatorFn, Validators } from \"@angular/forms\";\n\nexport interface NgtReactiveFormValidationConfig {\n    match?: string;\n    minValue?: number;\n    maxValue?: number;\n    minLength?: number;\n    maxLength?: number;\n    isRequired?: boolean;\n    customSyncValidators?: ValidatorFn[];\n    customAsyncValidators?: AsyncValidatorFn[];\n}\n\n@Injectable({ providedIn: 'root' })\nexport class NgtReactiveFormValidationService {\n    public getSyncValidators(config: NgtReactiveFormValidationConfig): ValidatorFn[] {\n        const validators: ValidatorFn[] = [];\n\n        if (config.isRequired) {\n            validators.push(Validators.required);\n        }\n\n        if (config.maxLength) {\n            validators.push(Validators.maxLength(config.maxLength));\n        }\n\n        if (config.minLength) {\n            validators.push(Validators.minLength(config.minLength));\n        }\n\n        if (config.match) {\n            validators.push(this.matchValidator(config.match));\n        }\n\n        if (config.minValue !== undefined) {\n            validators.push(this.minValueValidator(config.minValue));\n        }\n\n        if (config.customSyncValidators?.length) {\n            validators.push(...config.customSyncValidators);\n        }\n\n        return validators;\n    }\n\n    public getAsyncValidators(config: NgtReactiveFormValidationConfig): AsyncValidatorFn[] {\n        const validators: AsyncValidatorFn[] = [];\n\n        if (config.customAsyncValidators?.length) {\n            validators.push(...config.customAsyncValidators);\n        }\n\n        return validators;\n    }\n\n    private matchValidator(match: string): ValidatorFn {\n        return (control: AbstractControl) => control.value !== match ? { 'match': true } : null;\n    }\n\n    private minValueValidator(minValue: number): ValidatorFn {\n        return (control: AbstractControl) => {\n            const value = parseFloat(control.value);\n\n            return !isNaN(value) && value < minValue ? { 'minValue': true } : null;\n        };\n    }\n}\n","import { Injectable, signal, WritableSignal } from \"@angular/core\";\n\n@Injectable({ providedIn: null })\nexport class NgtReactiveInputLoaderService {\n    public shining: WritableSignal<boolean> = signal(false);\n    public loading: WritableSignal<boolean> = signal(false);\n}\n","import { Injectable, Optional } from \"@angular/core\";\nimport { AbstractControl, AsyncValidatorFn, ValidatorFn, Validators } from \"@angular/forms\";\nimport { validateCNPJ, validateCPF } from \"../../../../../helpers/validators/validation.helper\";\nimport { NgtHttpValidationResponse, NgtHttpValidationService } from \"../../../../../services/http/ngt-http-validation.service\";\nimport { NgtReactiveInputLoaderService } from \"./ngt-reactive-input-loader.service\";\nimport { NgtReactiveFormValidationService } from \"../../../../../services/validation/ngt-reactive-form-validation.service\";\nimport { InputMaskEnum } from \"../../../../../helpers/input-mask/input-mask.helper\";\n\nexport interface NgtReactInputValidationConfig {\n    type: string;\n    mask: InputMaskEnum;\n    match: string;\n    minValue: number;\n    maxValue: number;\n    minLength: number;\n    maxLength: number;\n    isRequired: boolean;\n    validatePassword: boolean;\n    passwordableId: string;\n    passwordPolicyId: string;\n    uniqueResource: any;\n    customSyncValidators?: ValidatorFn[];\n    customAsyncValidators?: AsyncValidatorFn[];\n}\n\n@Injectable({ providedIn: null })\nexport class NgtReactiveInputValidationService {\n    private emailValidatorTimeout: NodeJS.Timeout;\n    private passwordValidatorTimeout: NodeJS.Timeout;\n    private uniqueValidatorTimeout: NodeJS.Timeout;\n\n    public constructor(\n        @Optional() private httpValidationService: NgtHttpValidationService,\n        private reactiveFormValidationService: NgtReactiveFormValidationService,\n        private loaderService: NgtReactiveInputLoaderService,\n    ) { }\n\n    public getSyncValidators(config: NgtReactInputValidationConfig): ValidatorFn[] {\n        const validators: ValidatorFn[] = [];\n\n        if (config.type === 'email') {\n            validators.push(Validators.email);\n        }\n\n        if (\n            config.mask === 'cnpj-cpf'\n            || config.mask === 'cnpj-cpf-rut'\n            || config.mask === 'cpf'\n        ) {\n            validators.push(this.cnpjCpfValidator());\n        }\n\n        if (config.mask === 'time') {\n            validators.push(this.timeValidator());\n        }\n\n        validators.push(\n            ...this.reactiveFormValidationService.getSyncValidators(config)\n        );\n\n        return validators;\n    }\n\n    public getAsyncValidators(config: NgtReactInputValidationConfig): AsyncValidatorFn[] {\n        const validators: AsyncValidatorFn[] = [];\n\n        if (this.httpValidationService) {\n            if (config.uniqueResource) {\n                validators.push(this.uniqueValidator(config.uniqueResource));\n            }\n\n            if (['email', 'login'].includes(config.type)) {\n                validators.push(this.emailValidator(config.type));\n            }\n\n            if (config.type === 'password' && config.validatePassword) {\n                validators.push(\n                    this.passwordValidator(config.passwordableId, config.passwordPolicyId)\n                );\n            }\n        }\n\n        validators.push(\n            ...this.reactiveFormValidationService.getAsyncValidators(config)\n        );\n\n        return validators;\n    }\n\n    public async validatePhone(phone: string): Promise<any> {\n        if (!this.httpValidationService) {\n            return;\n        }\n\n        return this.httpValidationService.phoneValidation(phone)\n            .then((result: any) => result);\n    }\n\n    public clearTimeouts(): void {\n        if (this.emailValidatorTimeout) {\n            clearTimeout(this.emailValidatorTimeout);\n            this.emailValidatorTimeout = null;\n        }\n\n        if (this.passwordValidatorTimeout) {\n            clearTimeout(this.passwordValidatorTimeout);\n            this.passwordValidatorTimeout = null;\n        }\n\n        if (this.uniqueValidatorTimeout) {\n            clearTimeout(this.uniqueValidatorTimeout);\n            this.uniqueValidatorTimeout = null;\n        }\n    }\n\n    private timeValidator(): ValidatorFn {\n        const regexExp = new RegExp('^(0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$');\n\n        return (control: AbstractControl) => control.value && !regexExp.test(control.value) ? { 'time': true } : null;\n    }\n\n    private cnpjCpfValidator(): ValidatorFn {\n        return (control: AbstractControl) => {\n            if (!control.value) {\n                return null;\n            }\n\n            const result = this.validateCpfCnpj(control.value);\n\n            if (result.valid) {\n                return null;\n            }\n\n            return { [result.type]: true };\n        };\n    }\n\n    private validateCpfCnpj(value: string): { valid: boolean; type?: 'cpf' | 'cnpj' } {\n        const cleanValue = value.replace(/[^\\d]/g, '');\n\n        if (cleanValue.length <= 11) {\n            return {\n                valid: validateCPF(cleanValue),\n                type: 'cpf'\n            };\n        } else if (cleanValue.length === 12) {\n            return { valid: true };\n        } else {\n            return {\n                valid: validateCNPJ(cleanValue),\n                type: 'cnpj'\n            };\n        }\n    }\n\n    private uniqueValidator(uniqueResource: any): AsyncValidatorFn {\n        return (control: AbstractControl) => {\n            if (this.uniqueValidatorTimeout) {\n                clearTimeout(this.uniqueValidatorTimeout);\n            }\n\n            if (control.value && uniqueResource) {\n                return new Promise((resolve) => {\n                    this.uniqueValidatorTimeout = setTimeout(() => {\n                        this.loaderService.loading.set(true);\n\n                        this.httpValidationService.unique(uniqueResource, control.value).then((response: NgtHttpValidationResponse) => {\n                            this.loaderService.loading.set(false);\n\n                            resolve(response.valid ? null : { 'unique': true });\n                        }).catch(() => {\n                            this.loaderService.loading.set(false);\n\n                            resolve(null);\n                        });\n                    }, 500);\n                });\n            }\n\n            return Promise.resolve(null);\n        };\n    }\n\n    private emailValidator(inputHtmlType: string): AsyncValidatorFn {\n        return (control: AbstractControl) => {\n            if (this.emailValidatorTimeout) {\n                clearTimeout(this.emailValidatorTimeout);\n            }\n\n            if (control.value) {\n                return new Promise((resolve) => {\n                    this.emailValidatorTimeout = setTimeout(() => {\n                        this.loaderService.loading.set(true);\n\n                        this.httpValidationService.emailValidation(control.value)\n                            .then((response: NgtHttpValidationResponse) => {\n                                this.loaderService.loading.set(false);\n\n                                if (inputHtmlType == 'login') {\n                                    return resolve(response.valid ? { 'login': true } : null);\n                                }\n\n                                resolve(response.valid ? null : { 'email': true });\n                            })\n                            .catch(() => {\n                                this.loaderService.loading.set(false);\n\n                                resolve(null);\n                            });\n                    }, 500);\n                });\n            }\n\n            return Promise.resolve(null);\n        };\n    }\n\n    private passwordValidator(\n        passwordableId: string,\n        passwordPolicyId: string\n    ): AsyncValidatorFn {\n        return (control: AbstractControl) => {\n            if (this.passwordValidatorTimeout) {\n                clearTimeout(this.passwordValidatorTimeout);\n            }\n\n            if (control.value) {\n                return new Promise((resolve) => {\n                    this.passwordValidatorTimeout = setTimeout(() => {\n                        this.loaderService.loading.set(true);\n\n                        this.httpValidationService.passwordValidation(\n                            control.value,\n                            passwordableId,\n                            passwordPolicyId\n                        )\n                            .then((response: NgtHttpValidationResponse) => {\n                                this.loaderService.loading.set(false);\n\n                                resolve(response.valid ? null : { 'invalid_password': true });\n                            })\n                            .catch(() => {\n                                this.loaderService.loading.set(false);\n\n                                resolve(null);\n                            });\n                    }, 500);\n                });\n            }\n\n            return Promise.resolve(null);\n        };\n    }\n}\n","import {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    computed,\n    effect,\n    ElementRef,\n    Injector,\n    input,\n    OnDestroy,\n    Optional,\n    output,\n    Renderer2,\n    Self,\n    Signal,\n    signal,\n    SkipSelf,\n    TemplateRef,\n    ViewChild,\n    WritableSignal,\n} from '@angular/core';\nimport { AsyncValidatorFn, ReactiveFormsModule, TouchedChangeEvent, ValidatorFn, ValueChangeEvent } from '@angular/forms';\nimport { Subscription } from 'rxjs';\nimport { CommonModule } from '@angular/common';\nimport { NgtShiningModule } from '../../../ngt-shining/ngt-shining.module';\nimport { NgtSvgModule } from '../../../ngt-svg/ngt-svg.module';\n\nimport { NgtStylizableDirective } from '../../../../directives/ngt-stylizable/ngt-stylizable.directive';\nimport { InputMaskEnum, removeInputMask } from '../../../../helpers/input-mask/input-mask.helper';\nimport {\n    NgtHttpFindExistingResourceInterface,\n    NgtHttpResourceService,\n} from '../../../../services/http/ngt-http-resource.service';\nimport { NgtTranslateService } from '../../../../services/http/ngt-translate.service';\nimport { NgtStylizableService } from '../../../../services/ngt-stylizable/ngt-stylizable.service';\nimport { NgtReactiveFormComponent } from '../ngt-reactive-form/ngt-reactive-form.component';\nimport { NgtSectionComponent } from '../../../ngt-section/ngt-section.component';\nimport { NgtModalComponent } from '../../../ngt-modal/ngt-modal.component';\nimport { NgtControlValueAccessor, NgtValueAccessorProvider } from '../../../../base/ngt-control-value-accessor';\nimport { NgtReactiveInputMaskService } from './services/ngt-reactive-input-mask.service';\nimport { NgtReactInputValidationConfig, NgtReactiveInputValidationService } from './services/ngt-reactive-input-validation.service';\nimport { NgtReactiveInputLoaderService } from './services/ngt-reactive-input-loader.service';\nimport { NgtValidationModule } from '../../../ngt-validation/ngt-validation.module';\nimport { NgtHelperComponent } from '../../../ngt-helper/ngt-helper.component';\n\n@Component({\n    selector: 'ngt-reactive-input',\n    templateUrl: './ngt-reactive-input.component.html',\n    styleUrls: ['./ngt-reactive-input.component.css'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: true,\n    providers: [\n        NgtValueAccessorProvider(NgtReactiveInputComponent),\n\n        NgtReactiveInputMaskService,\n        NgtReactiveInputValidationService,\n        NgtReactiveInputLoaderService,\n    ],\n    imports: [\n        CommonModule,\n        ReactiveFormsModule,\n        NgtShiningModule,\n        NgtSvgModule,\n        NgtValidationModule,\n        NgtHelperComponent,\n    ],\n})\nexport class NgtReactiveInputComponent extends NgtControlValueAccessor implements AfterViewInit, OnDestroy {\n    @ViewChild('inputElement', { static: true }) public inputElement: ElementRef;\n\n    /** Visual Inputs */\n\n    public readonly label = input<string>();\n    public readonly placeholder = input<string>('');\n\n    public readonly helpTitle = input<string>();\n    public readonly helpText = input<string>();\n    public readonly helpTextColor = input<string>('text-green-500');\n\n    public readonly innerLeftIcon = input<string>();\n    public readonly innerLeftIconColor = input<string>();\n    public readonly innerRightIcon = input<string>();\n    public readonly innerRightIconColor = input<string>();\n    public readonly customInnerContentTemplate = input<TemplateRef<any>>();\n\n    public readonly showCharactersLength = input<boolean>(false);\n    public readonly helperReverseYPosition = input<boolean>(false);\n    public readonly helperAutoXReverse = input<boolean>(true);\n    public readonly shining = input<boolean>(false);\n    public readonly loading = input<boolean>(false);\n\n    /** Behavior Inputs */\n\n    public readonly type = input<string>('text');\n    public readonly mask = input<InputMaskEnum>();\n    public readonly decimalMaskPrecision = input<number>(2);\n\n    public readonly isDisabled = input<boolean>(false);\n    public readonly isReadonly = input<boolean>(false);\n    public readonly focus = input<boolean>(false);\n    public readonly allowClear = input<boolean>(false);\n    public readonly roundedInnerIcon = input<boolean>(false);\n\n    /** Validation Inputs */\n\n    public readonly findExistingResource = input<NgtHttpFindExistingResourceInterface>();\n    public readonly uniqueResource = input<any>();\n\n    public readonly passwordableId = input<string>();\n    public readonly passwordPolicyId = input<string>();\n\n    public readonly match = input<string>();\n    public readonly customSyncValidators = input<ValidatorFn[]>();\n    public readonly customAsyncValidators = input<AsyncValidatorFn[]>();\n\n    public readonly validateMinValueOnMask = input<boolean>(false);\n    public readonly allowPhoneValidation = input<boolean>(false);\n    public readonly validatePassword = input<boolean>(false);\n\n    public readonly isRequired = input<boolean>(false);\n    public readonly minValue = input<number>();\n    public readonly maxValue = input<number>();\n    public readonly maxLength = input<number>();\n    public readonly minLength = input<number>();\n\n    public readonly uppercase = input<boolean>(false);\n\n    /** Outputs */\n\n    public readonly onClickLeftIcon = output<void>();\n    public readonly onClickRightIcon = output<void>();\n    public readonly validatePhoneResult = output<any>();\n    public readonly onValueChange = output<string | number>();\n\n    /** Computed Signals */\n\n    public readonly isShining: Signal<boolean> = computed(\n        () => this.shining() || this.loaderService.shining() || this.ngtForm.shining()\n    );\n\n    public readonly isLoading: Signal<boolean> = computed(\n        () => this.loading() || this.loaderService.loading()\n    );\n\n    public readonly isDisabledByParent: Signal<boolean> = computed(\n        () => this.ngtForm?.isDisabledState() || this.ngtSection?.isDisabledState() || this.ngtModal?.isDisabledState()\n    );\n\n    public readonly isDisabledState: Signal<boolean> = computed(\n        () => this.isDisabled() || this.isDisabledByParent()\n    );\n\n    public readonly currentValue: Signal<any> = computed(() => this.value);\n\n    public readonly inputPaddingClass: Signal<string> = computed(() =>\n        this.getInputPaddingClass()\n    );\n\n    public readonly shouldShowClearButton: Signal<boolean> = computed(() =>\n        this.getShouldShowClearButton()\n    );\n\n    public readonly shouldShowPasswordIcon: Signal<boolean> = computed(\n        () => this.type() === 'password' && this.currentValue()\n    );\n\n    public readonly shouldShowRightIcon: Signal<boolean> = computed(\n        () => this.innerRightIcon() && this.type() !== 'password'\n    );\n\n    public readonly remainingCharacters: Signal<number> = computed(() =>\n        this.getRemainingCharacters()\n    );\n\n    public readonly inputClasses: Signal<string> = computed(() =>\n        this.getInputClasses()\n    );\n\n    /** Other */\n\n    public existingResourceId: string;\n\n    /** Internal Control */\n\n    public readonly inputHtmlType: WritableSignal<string> = signal('');\n    public readonly maxLengthByHtmlType: WritableSignal<string> = signal('');\n    public ngtStyle: NgtStylizableService;\n\n    private phoneValidatorTimeout: NodeJS.Timeout;\n    private searchExistingResourceTimeout: NodeJS.Timeout;\n\n    private readonly formControlHasErrors: WritableSignal<boolean> = signal(false);\n    private readonly formControlIsDirty: WritableSignal<boolean> = signal(false);\n\n    private subscriptions: Subscription[] = [];\n    private listeners: Array<() => void> = [];\n\n    public constructor(\n        @Optional() @Self()\n        private ngtStylizableDirective: NgtStylizableDirective,\n\n        @Optional() @SkipSelf()\n        private ngtResourceService: NgtHttpResourceService,\n\n        @Optional()\n        private translateService: NgtTranslateService,\n\n        @Optional() @SkipSelf()\n        private ngtForm: NgtReactiveFormComponent,\n\n        @Optional() @SkipSelf()\n        private ngtSection: NgtSectionComponent,\n\n        @Optional() @SkipSelf()\n        private ngtModal: NgtModalComponent,\n\n        private validationService: NgtReactiveInputValidationService,\n        private maskService: NgtReactiveInputMaskService,\n        private loaderService: NgtReactiveInputLoaderService,\n\n        private renderer: Renderer2,\n        private changeDetector: ChangeDetectorRef,\n        protected override injector: Injector,\n    ) {\n        super();\n\n        this.setupNgtStylizable();\n\n        this.registerEffects();\n    }\n\n    public ngAfterViewInit(): void {\n        this.formControl = this.getControl();\n\n        this.setupComponent();\n\n        if (!this.getElementTitle() || this.getElementTitle() === 'null') {\n            this.inputElement.nativeElement.parentElement.parentElement.title = '';\n        }\n    }\n\n    public ngOnDestroy(): void {\n        this.clearTimeouts();\n\n        this.validationService.clearTimeouts();\n\n        this.destroySubscriptions();\n\n        this.destroyListeners();\n    }\n\n    public onNativeChange(): void {\n        if (this.hasChangesBetweenValues()) {\n            let value: string | number = this.maskService.removeMask(this.getNativeValue());\n\n            if (value && this.mask() == InputMaskEnum.DECIMAL) {\n                value = parseFloat(value);\n            }\n\n            this.value = value;\n        }\n    }\n\n    public change(value: string | number): void {\n        if (value && this.mask() == InputMaskEnum.DECIMAL) {\n            if (typeof value === 'number') {\n                value = value.toString();\n            }\n\n            value = value.replace('.', ',');\n        }\n\n        if (this.hasChangesBetweenValues()) {\n            this.setNativeValue(value ?? '');\n        }\n    }\n\n    public setFocus(): void {\n        this.inputElement.nativeElement.focus();\n    }\n\n    public clearInput(event?: Event): void {\n        event?.stopPropagation();\n\n        this.setNativeValue('');\n        this.value = '';\n    }\n\n    public restorePlaceholder(): void {\n        if (this.placeholder() && this.mask()) {\n            setTimeout(() => this.inputElement.nativeElement.placeholder = this.placeholder());\n        }\n    }\n\n    public showPassword(): void {\n        this.inputElement.nativeElement.type = 'text';\n        this.changeDetector.detectChanges();\n    }\n\n    public hidePassword(): void {\n        this.inputElement.nativeElement.type = 'password';\n        this.changeDetector.detectChanges();\n    }\n\n    public getTranslation(key: string): string {\n        return this.translateService[key];\n    }\n\n    public hasFocus(): boolean {\n        return document.activeElement === this.inputElement.nativeElement;\n    }\n\n    private setupComponent(): void {\n        this.setupValidators();\n\n        this.setupPropertiesByHtmlType();\n\n        this.setupSubscriptions();\n    }\n\n    private setupPropertiesByHtmlType(): void {\n        const currentType = this.type();\n\n        const props = {\n            shortText: {\n                htmlType: \"text\",\n                length: 30\n            },\n            text: {\n                htmlType: \"text\",\n                length: 100\n            },\n            longText: {\n                htmlType: \"text\",\n                length: 150\n            },\n            extraLongText: {\n                htmlType: \"text\",\n                length: 300\n            },\n            customText: {\n                htmlType: \"text\",\n                length: this.maxLength()\n            },\n            password: {\n                htmlType: \"password\",\n                length: 150\n            },\n            email: {\n                htmlType: \"text\",\n                length: 100,\n            },\n            decimal: {\n                htmlType: \"text\",\n                length: 9,\n            }\n        };\n\n        if (currentType in props) {\n            this.inputHtmlType.set(props[currentType]['htmlType']);\n            this.maxLengthByHtmlType.set(props[currentType]['length']);\n        } else {\n            console.warn(\"Type [\" + currentType + \"] is not a valid ngt-react-input type!\", this.inputElement.nativeElement);\n        }\n    }\n\n    private setupSubscriptions(): void {\n        if (this.formControl) {\n            this.subscriptions.push(\n                this.formControl.events.subscribe((event) => {\n                    if (event instanceof TouchedChangeEvent) {\n                        this.touched.set(event.touched);\n                    }\n\n                    if (event instanceof ValueChangeEvent) {\n                        this.onValueChange.emit(event.value);\n                    }\n\n                    this.formControlHasErrors.set(!!this.formControl?.errors);\n                    this.formControlIsDirty.set(this.formControl?.dirty);\n                })\n            );\n        }\n\n        const unlistenKeydown = this.renderer.listen(this.inputElement.nativeElement, \"keydown\", (event) => {\n            if (this.getNativeValue()?.length >= this.maxLength()) {\n                /** Backspace and delete */\n                if (event.keyCode != 8 && event.keyCode != 46) {\n                    event.preventDefault();\n\n                    return false;\n                }\n            }\n        });\n\n        this.listeners.push(unlistenKeydown);\n    }\n\n    private registerEffects(): void {\n        effect(() => {\n            if (this.focus()) {\n                setTimeout(() => this.setFocus());\n            }\n        });\n\n        effect(() => this.setupMask());\n\n        effect(() => this.setupValidators());\n\n        effect(() => {\n            const currentValue = this.currentValue();\n            const findResource = this.findExistingResource();\n\n            if (this.ngtResourceService && findResource && currentValue) {\n                this.searchExistingResource();\n            }\n        });\n\n        effect(() => {\n            const currentMask = this.mask();\n            const shouldValidate = this.allowPhoneValidation();\n            const currentValue = this.currentValue();\n\n            if (\n                [InputMaskEnum.CELLPHONE, InputMaskEnum.INTERNATIONAL_PHONE].includes(currentMask)\n                && shouldValidate\n                && currentValue\n            ) {\n                this.validatePhone();\n            }\n        });\n    }\n\n    private setupValidators(): void {\n        if (!this.formControl) {\n            return;\n        }\n\n        const config: NgtReactInputValidationConfig = {\n            type: this.type(),\n            mask: this.mask(),\n            match: this.match(),\n            minValue: this.minValue(),\n            maxValue: this.maxValue(),\n            minLength: this.minLength(),\n            maxLength: this.maxLength(),\n            isRequired: this.isRequired(),\n            validatePassword: this.validatePassword(),\n            passwordableId: this.passwordableId(),\n            passwordPolicyId: this.passwordPolicyId(),\n            uniqueResource: this.uniqueResource(),\n            customSyncValidators: this.customSyncValidators(),\n            customAsyncValidators: this.customAsyncValidators(),\n        };\n\n        const syncValidators = this.validationService.getSyncValidators(config);\n        const asyncValidators = this.validationService.getAsyncValidators(config);\n\n        this.formControl.setValidators(syncValidators);\n        this.formControl.setAsyncValidators(asyncValidators);\n        this.formControl.updateValueAndValidity();\n\n        if (this.value) {\n            this.markAsDirty();\n\n            this.formControlHasErrors.set(!!this.formControl.errors);\n            this.formControlIsDirty.set(true);\n        }\n    }\n\n    private setupMask(previousMask?: string): void {\n        const currentMask = this.mask();\n        const precision = this.decimalMaskPrecision();\n        const maxVal = this.maxValue();\n        const minVal = this.minValue();\n\n        if (!this.inputElement?.nativeElement) {\n            return;\n        }\n\n        if (currentMask != previousMask && !currentMask) {\n            removeInputMask(this.inputElement.nativeElement);\n\n            return this.clearInput();\n        }\n\n        if (!currentMask) {\n            return;\n        }\n\n        this.maskService.applyMask(\n            currentMask,\n            this.inputElement.nativeElement,\n            this.decimalMaskPrecision(),\n            this.maxValue(),\n            this.minValue(),\n            this.validateMinValueOnMask(),\n        );\n    }\n\n    private setupNgtStylizable(): void {\n        if (this.ngtStylizableDirective) {\n            this.ngtStyle = this.ngtStylizableDirective.getNgtStylizableService();\n        } else {\n            this.ngtStyle = new NgtStylizableService();\n        }\n\n        this.ngtStyle.load(this.injector, 'NgtInput', {\n            h: 'h-12',\n            rounded: 'rounded',\n            text: 'text-sm',\n            font: 'font-normal',\n            color: {\n                border: 'border-gray-400 focus:border-gray-700',\n                bg: 'bg-bg-white focus:bg-white',\n                text: 'text-gray-800'\n            }\n        });\n    }\n\n    private async searchExistingResource(): Promise<void> {\n        if (this.searchExistingResourceTimeout) {\n            clearTimeout(this.searchExistingResourceTimeout);\n        }\n\n        this.searchExistingResourceTimeout = setTimeout(() => {\n            this.loaderService.loading.set(true);\n\n            const resource = this.findExistingResource();\n\n            resource.value = this.value;\n\n            this.ngtResourceService.findExisting(resource)\n                .then((response: any) => {\n                    this.existingResourceId = response.id;\n                })\n                .catch(() => {\n                    this.existingResourceId = null;\n                })\n                .finally(() => {\n                    this.loaderService.loading.set(false);\n                    this.changeDetector.markForCheck();\n                });\n        }, 500);\n    }\n\n    private async validatePhone(): Promise<void> {\n        if (this.phoneValidatorTimeout) {\n            clearTimeout(this.phoneValidatorTimeout);\n        }\n\n        this.phoneValidatorTimeout = setTimeout(() => {\n            this.loaderService.loading.set(true);\n\n            this.validationService.validatePhone(this.value)\n                .then(result => this.validatePhoneResult.emit(result))\n                .finally(() => {\n                    this.loaderService.loading.set(false);\n                    this.changeDetector.markForCheck();\n                });\n        }, 500);\n    }\n\n    private setNativeValue(value: string | number): void {\n        this.inputElement.nativeElement.value = value;\n    }\n\n    private getNativeValue(): string {\n        return this.inputElement.nativeElement.value;\n    }\n\n    private getElementTitle(): string {\n        return this.inputElement.nativeElement.parentElement.parentElement.title;\n    }\n\n    private hasChangesBetweenValues(): boolean {\n        return this.maskService.removeMask(this.getNativeValue()) !== this.value;\n    }\n\n    private getInputPaddingClass(): string {\n        let padding = '';\n\n        if (this.innerLeftIcon() || this.customInnerContentTemplate()) {\n            padding += 'pl-10 ';\n        } else {\n            padding += 'px-4 ';\n        }\n\n        if (this.innerRightIcon() || this.allowClear() || this.type() === 'password') {\n            if (this.allowClear() && this.currentValue() && (this.innerRightIcon() || this.type() === 'password')) {\n                padding += 'pr-10';\n            } else {\n                padding += 'pr-8';\n            }\n        }\n\n        return padding.trim();\n    }\n\n    private getShouldShowClearButton(): boolean {\n        return !this.isDisabledState()\n            && this.allowClear()\n            && this.currentValue()\n            && !this.isLoading();\n    }\n\n    private getRemainingCharacters(): number {\n        if (!this.showCharactersLength() || !this.maxLength()) {\n            return null;\n        }\n\n        const currentLength = this.currentValue()?.length || 0;\n        const remaining = this.maxLength() - currentLength;\n\n        return remaining > 0 ? remaining : 0;\n    }\n\n    private getInputClasses(): string {\n        const classes: string[] = [\n            'flex border appearance-none focus:outline-none leading-tight w-full',\n            this.inputPaddingClass(),\n            this.ngtStyle.compile(['h', 'text', 'color.border', 'color.bg', 'color.text', 'rounded', 'cursor'])\n        ];\n\n        if (this.formControlHasErrors() && (this.formControlIsDirty() || this.touched())) {\n            classes.push('input-has-error border-red-700');\n        }\n\n        return classes.join(' ');\n    }\n\n    private destroySubscriptions(): void {\n        this.subscriptions.forEach(subscription => subscription.unsubscribe());\n        this.subscriptions = [];\n    }\n\n    private destroyListeners(): void {\n        this.listeners.forEach(unlisten => unlisten());\n        this.listeners = [];\n    }\n\n    private clearTimeouts(): void {\n        if (this.phoneValidatorTimeout) {\n            clearTimeout(this.phoneValidatorTimeout);\n            this.phoneValidatorTimeout = null;\n        }\n\n        if (this.searchExistingResourceTimeout) {\n            clearTimeout(this.searchExistingResourceTimeout);\n            this.searchExistingResourceTimeout = null;\n        }\n    }\n}\n","@if (label()) {\n    <label class=\"mb-2 flex {{ ngtStyle.compile(['color.text', 'text', 'font']) }}\" [hidden]='isShining()'>\n        <span class=\"truncate\" [title]=\"label()\">\n            {{ label() }}:\n        </span>\n\n        @if (isRequired()) {\n            <span class=\"text-red-500 font-bold text-md ml-1\">*</span>\n        }\n\n        @if (helpText()) {\n            <ngt-helper [helpTitle]=\"helpTitle()\" [iconColor]=\"helpTextColor()\" [helperReverseYPosition]=\"helperReverseYPosition()\"\n                [autoXReverse]=\"helperAutoXReverse()\" class=\"ml-1\">\n                <span [innerHtml]=\"helpText()\"></span>\n            </ngt-helper>\n        }\n    </label>\n}\n\n<div [class]=\"isShining() ? 'hidden' : 'flex relative w-full'\">\n    <input [class]=\"inputClasses()\" [disabled]=\"isDisabledState()\" [readonly]=\"isReadonly() || isLoading()\"\n        [placeholder]=\"placeholder()\" [style]=\"uppercase() ? 'text-transform: uppercase!important':''\"\n        autocomplete=\"new-password\" [attr.type]=\"inputHtmlType()\" (input)=\"onNativeChange()\" (blur)=\"onTouched()\"\n        (mouseleave)=\"restorePlaceholder()\" (focusout)=\"restorePlaceholder()\" #inputElement>\n\n    @if (innerLeftIcon()) {\n        <span class=\"absolute self-center px-2 {{ innerLeftIconColor() }}\" [class.cursor-pointer]=\"onClickLeftIcon\"\n            (click)=\"onClickLeftIcon.emit()\">\n\n            @if (roundedInnerIcon()) {\n                <img class=\"rounded-full h-4\" [src]='innerLeftIcon()'>\n            } @else {\n                <ngt-svg class=\"text-xs fill-current\" [src]='innerLeftIcon()'></ngt-svg>\n            }\n        </span>\n    }\n\n    @if (customInnerContentTemplate()) {\n        <div class=\"absolute self-center px-2\">\n            <ng-container [ngTemplateOutlet]=\"customInnerContentTemplate()\"></ng-container>\n        </div>\n    }\n\n    <div class=\"flex absolute h-full justify-end right-0 w-auto\">\n        @if (shouldShowClearButton()) {\n            <span class=\"self-center right-0 px-2 text-red-400 cursor-pointer\" (click)='clearInput($event)'>\n                <svg class=\"fill-current self-center\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n                    <path\n                        d=\"M19.1 17.2l-5.3-5.3 5.3-5.3-1.8-1.8-5.3 5.4-5.3-5.3-1.8 1.7 5.3 5.3-5.3 5.3L6.7 19l5.3-5.3 5.3 5.3 1.8-1.8z\" />\n                </svg>\n            </span>\n        }\n\n        @if (isLoading()) {\n            <span class=\"self-center right-0 px-2 text-gray-500\">\n                <div class=\"div-loader\"></div>\n            </span>\n        }\n\n        @if (shouldShowPasswordIcon()) {\n            <span class=\"self-center px-2 cursor-pointer\">\n                @if (inputElement.type == 'password') {\n                    <svg class=\"fill-current\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" (click)='showPassword()'>\n                        <path\n                            d=\"M.2 10a11 11 0 0 1 19.6 0A11 11 0 0 1 .2 10zm9.8 4a4 4 0 1 0 0-8 4 4 0 0 0 0 8zm0-2a2 2 0 1 1 0-4 2 2 0 0 1 0 4z\" />\n                    </svg>\n                } @else {\n                    <svg class=\"fill-current\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" (click)='hidePassword()'>\n                        <path\n                            d=\"M12.81 4.36l-1.77 1.78a4 4 0 0 0-4.9 4.9l-2.76 2.75C2.06 12.79.96 11.49.2 10a11 11 0 0 1 12.6-5.64zm3.8 1.85c1.33 1 2.43 2.3 3.2 3.79a11 11 0 0 1-12.62 5.64l1.77-1.78a4 4 0 0 0 4.9-4.9l2.76-2.75zm-.25-3.99l1.42 1.42L3.64 17.78l-1.42-1.42L16.36 2.22z\" />\n                    </svg>\n                }\n            </span>\n        }\n\n        @if (shouldShowRightIcon()) {\n            <span class=\"self-center px-2 {{ innerRightIconColor() }}\" [class.cursor-pointer]=\"onClickRightIcon\"\n                (click)=\"onClickRightIcon.emit()\">\n                <ngt-svg class=\"text-xxs fill-current\" [src]='innerRightIcon()'></ngt-svg>\n            </span>\n        }\n    </div>\n</div>\n\n@if (remainingCharacters() !== null) {\n    <p class=\"text-xxs mt-1\">\n        {{ getTranslation('ngtTextAreaRemainingCharacters') }}:\n        <span class=\"font-semibold\">{{ remainingCharacters() }}</span>\n    </p>\n}\n\n@if (isShining()) {\n    <ngt-shining class=\"block w-full {{ ngtStyle.compile(['h']) }}\"></ngt-shining>\n}\n\n<ng-content></ng-content>\n\n<ngt-validation [control]=\"formControl\" [minValue]='minValue()' [minLength]='minLength()'>\n</ngt-validation>","import { Injectable } from '@angular/core';\nimport { AsyncValidatorFn, ValidatorFn } from '@angular/forms';\nimport { NgtReactiveFormValidationService } from \"../../../../../services/validation/ngt-reactive-form-validation.service\";\n\nexport interface NgtReactiveTextareaValidationConfig {\n    isRequired?: boolean;\n    minLength?: number;\n    maxLength?: number;\n    customSyncValidators?: ValidatorFn[];\n    customAsyncValidators?: AsyncValidatorFn[];\n}\n\n@Injectable()\nexport class NgtReactiveTextareaValidationService {\n    public constructor(\n        private reactiveFormValidationService: NgtReactiveFormValidationService,\n    ) { }\n\n    public getSyncValidators(config: NgtReactiveTextareaValidationConfig): ValidatorFn[] {\n        const validators: ValidatorFn[] = [\n            ...this.reactiveFormValidationService.getSyncValidators(config)\n        ];\n\n        return validators;\n    }\n\n    public getAsyncValidators(config: NgtReactiveTextareaValidationConfig): AsyncValidatorFn[] {\n        const validators: AsyncValidatorFn[] = [];\n\n        if (config.customAsyncValidators) {\n            validators.push(...config.customAsyncValidators);\n        }\n\n        return validators;\n    }\n}\n","import {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    computed,\n    effect,\n    ElementRef,\n    Injector,\n    input,\n    NgZone,\n    OnDestroy,\n    Optional,\n    output,\n    Self,\n    Signal,\n    signal,\n    SkipSelf,\n    ViewChild,\n    WritableSignal,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AsyncValidatorFn, ReactiveFormsModule, TouchedChangeEvent, ValidatorFn, ValueChangeEvent } from '@angular/forms';\nimport { Subject, Subscription } from 'rxjs';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\n\nimport { NgtControlValueAccessor, NgtValueAccessorProvider } from '../../../../base/ngt-control-value-accessor';\nimport { NgtStylizableDirective } from '../../../../directives/ngt-stylizable/ngt-stylizable.directive';\nimport { NgtTranslateService } from '../../../../services/http/ngt-translate.service';\nimport { NgtStylizableService } from '../../../../services/ngt-stylizable/ngt-stylizable.service';\nimport { NgtReactiveFormComponent } from '../ngt-reactive-form/ngt-reactive-form.component';\nimport { NgtSectionComponent } from '../../../ngt-section/ngt-section.component';\nimport { NgtModalComponent } from '../../../ngt-modal/ngt-modal.component';\nimport { NgtShiningModule } from '../../../ngt-shining/ngt-shining.module';\nimport { NgtValidationModule } from '../../../ngt-validation/ngt-validation.module';\nimport { NgtReactiveTextareaValidationService, NgtReactiveTextareaValidationConfig } from './services/ngt-reactive-textarea-validation.service';\nimport { NgtHelperComponent } from '../../../ngt-helper/ngt-helper.component';\n\n@Component({\n    selector: 'ngt-reactive-textarea',\n    templateUrl: './ngt-reactive-textarea.component.html',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: true,\n    providers: [\n        NgtValueAccessorProvider(NgtReactiveTextareaComponent),\n        NgtReactiveTextareaValidationService,\n    ],\n    imports: [\n        CommonModule,\n        ReactiveFormsModule,\n        NgtShiningModule,\n        NgtValidationModule,\n        NgtHelperComponent,\n    ],\n})\nexport class NgtReactiveTextareaComponent extends NgtControlValueAccessor implements AfterViewInit, OnDestroy {\n    @ViewChild('textareaElement', { static: true }) public textareaElement: ElementRef;\n\n    /** Visual Inputs */\n\n    public readonly label = input<string>();\n    public readonly placeholder = input<string>('');\n    public readonly rows = input<string>('3');\n    public readonly helpTitle = input<string>();\n    public readonly helpText = input<string>();\n    public readonly helpTextColor = input<string>('text-green-500');\n    public readonly showCharactersLength = input<boolean>(false);\n    public readonly shining = input<boolean>(false);\n\n    /** Behavior Inputs */\n\n    public readonly isDisabled = input<boolean>(false);\n    public readonly isReadonly = input<boolean>(false);\n    public readonly focus = input<boolean>(false);\n\n    /** Validation Inputs */\n\n    public readonly isRequired = input<boolean>(false);\n    public readonly maxLength = input<number>(300);\n    public readonly minLength = input<number>();\n    public readonly customSyncValidators = input<ValidatorFn[]>();\n    public readonly customAsyncValidators = input<AsyncValidatorFn[]>();\n\n    /** Outputs */\n\n    public readonly onValueChange = output<string>();\n\n    /** Computed Signals */\n\n    public readonly isShining: Signal<boolean> = computed(\n        () => this.shining() || this.ngtReactiveForm?.shining()\n    );\n\n    public readonly isDisabledByParent: Signal<boolean> = computed(\n        () => this.ngtReactiveForm?.isDisabledState() || this.ngtSection?.isDisabledState() || this.ngtModal?.isDisabledState()\n    );\n\n    public readonly isDisabledState: Signal<boolean> = computed(\n        () => this.isDisabled() || this.isDisabledByParent()\n    );\n\n    public readonly currentValue: Signal<string> = computed(() => this.value);\n\n    public readonly remainingCharacters: Signal<number> = computed(() =>\n        this.getRemainingCharacters()\n    );\n\n    public readonly textareaClasses: Signal<string> = computed(() =>\n        this.getTextareaClasses()\n    );\n\n    /** Internal Control */\n\n    public ngtStyle: NgtStylizableService;\n\n    private readonly formControlHasErrors: WritableSignal<boolean> = signal(false);\n    private readonly formControlIsDirty: WritableSignal<boolean> = signal(false);\n\n    private inputSubject$ = new Subject<string>();\n    private isUserTyping = false;\n\n    private subscriptions: Subscription[] = [];\n    private listeners: Array<() => void> = [];\n\n    public constructor(\n        @Optional() @Self()\n        private ngtStylizableDirective: NgtStylizableDirective,\n\n        @Optional() @SkipSelf()\n        private ngtReactiveForm: NgtReactiveFormComponent,\n\n        @Optional() @SkipSelf()\n        private ngtSection: NgtSectionComponent,\n\n        @Optional() @SkipSelf()\n        private ngtModal: NgtModalComponent,\n\n        @Optional()\n        private translateService: NgtTranslateService,\n\n        private validationService: NgtReactiveTextareaValidationService,\n        private changeDetector: ChangeDetectorRef,\n        private ngZone: NgZone,\n\n        protected override injector: Injector,\n    ) {\n        super();\n\n        this.setupNgtStylizable();\n\n        this.registerEffects();\n    }\n\n    public ngAfterViewInit(): void {\n        this.formControl = this.getControl();\n\n        this.setupComponent();\n\n        this.changeDetector.detach();\n    }\n\n    public ngOnDestroy(): void {\n        this.destroySubscriptions();\n\n        this.destroyListeners();\n\n        this.inputSubject$.complete();\n\n        this.changeDetector.reattach();\n    }\n\n    public onNativeChange(): void {\n        if (this.hasChangesBetweenValues()) {\n            this.value = this.getNativeValue();\n        }\n    }\n\n    public change(value: string): void {\n        if (this.value != this.getNativeValue()) {\n            this.setNativeValue(value ?? '');\n        }\n    }\n\n    public setFocus(): void {\n        this.textareaElement.nativeElement.focus();\n    }\n\n    public clear(): void {\n        this.setNativeValue('');\n        this.value = '';\n    }\n\n    public getTranslation(key: string): string {\n        return this.translateService?.[key];\n    }\n\n    private setupComponent(): void {\n        this.setupValidators();\n\n        this.setupSubscriptions();\n\n        this.setupListeners();\n    }\n\n    private setupSubscriptions(): void {\n        if (this.formControl) {\n            this.subscriptions.push(\n                this.formControl.events.subscribe((event) => {\n                    if (this.isUserTyping) {\n                        return;\n                    }\n\n                    if (event instanceof TouchedChangeEvent) {\n                        this.touched.set(event.touched);\n                    }\n\n                    if (event instanceof ValueChangeEvent) {\n                        this.onValueChange.emit(event.value);\n                    }\n\n                    this.formControlHasErrors.set(!!this.formControl?.errors);\n                    this.formControlIsDirty.set(this.formControl?.dirty);\n\n                    if (event instanceof TouchedChangeEvent) {\n                        this.changeDetector.detectChanges();\n                    }\n                })\n            );\n        }\n\n        this.subscriptions.push(\n            this.inputSubject$\n                .pipe(\n                    debounceTime(100),\n                    distinctUntilChanged()\n                )\n                .subscribe(value => {\n                    this.isUserTyping = false;\n\n                    if (this.hasChangesBetweenValues()) {\n                        this.value = value;\n                    }\n\n                    this.changeDetector.detectChanges();\n                })\n        );\n    }\n\n    private setupListeners(): void {\n        const textarea = this.textareaElement.nativeElement;\n\n        this.ngZone.runOutsideAngular(() => {\n            const inputHandler = (event: Event) => {\n                this.isUserTyping = true;\n\n                const value = (event.target as HTMLTextAreaElement).value;\n\n                this.inputSubject$.next(value);\n            };\n\n            const keydownHandler = (event: KeyboardEvent) => {\n                const currentLength = (event.target as HTMLTextAreaElement).value?.length || 0;\n\n                if (currentLength >= this.maxLength()) {\n                    if (event.key !== 'Backspace' && event.key !== 'Delete') {\n                        event.preventDefault();\n\n                        return false;\n                    }\n                }\n            };\n\n            const blurHandler = () => {\n                this.isUserTyping = false;\n\n                this.ngZone.run(() => {\n                    this.onTouched();\n                    this.changeDetector.detectChanges();\n                });\n            };\n\n            const focusHandler = () => {\n                // Prevent default CD\n            };\n\n            textarea.addEventListener('input', inputHandler, { passive: true });\n            textarea.addEventListener('keydown', keydownHandler);\n            textarea.addEventListener('blur', blurHandler);\n            textarea.addEventListener('focus', focusHandler, { passive: true });\n\n            this.listeners.push(\n                () => textarea.removeEventListener('input', inputHandler),\n                () => textarea.removeEventListener('keydown', keydownHandler),\n                () => textarea.removeEventListener('blur', blurHandler),\n                () => textarea.removeEventListener('focus', focusHandler)\n            );\n        });\n\n        this.changeDetector.detectChanges();\n    }\n\n    private registerEffects(): void {\n        effect(() => {\n            if (this.focus()) {\n                setTimeout(() => this.setFocus());\n            }\n        });\n\n        effect(() => {\n            this.setupValidators();\n\n            this.changeDetector.detectChanges();\n        });\n    }\n\n    private setupValidators(): void {\n        if (!this.formControl) {\n            return;\n        }\n\n        const config: NgtReactiveTextareaValidationConfig = {\n            isRequired: this.isRequired(),\n            minLength: this.minLength(),\n            maxLength: this.maxLength(),\n            customSyncValidators: this.customSyncValidators(),\n            customAsyncValidators: this.customAsyncValidators(),\n        };\n\n        const syncValidators = this.validationService.getSyncValidators(config);\n        const asyncValidators = this.validationService.getAsyncValidators(config);\n\n        this.formControl.setValidators(syncValidators);\n        this.formControl.setAsyncValidators(asyncValidators);\n        this.formControl.updateValueAndValidity();\n\n        if (this.value) {\n            this.markAsDirty();\n\n            this.formControlHasErrors.set(!!this.formControl.errors);\n            this.formControlIsDirty.set(true);\n        }\n    }\n\n    private setupNgtStylizable(): void {\n        this.ngtStyle = this.ngtStylizableDirective\n            ? this.ngtStylizableDirective.getNgtStylizableService()\n            : new NgtStylizableService();\n\n        this.ngtStyle.load(this.injector, 'NgtTextarea', {\n            text: 'text-sm',\n            font: 'font-normal',\n            color: {\n                border: 'border-gray-400 focus:border-gray-700',\n                bg: 'bg-white focus:bg-white',\n                text: 'text-gray-800'\n            },\n            rounded: 'rounded'\n        });\n    }\n\n    private setNativeValue(value: string): void {\n        this.textareaElement.nativeElement.value = value;\n    }\n\n    private getNativeValue(): string {\n        return this.textareaElement.nativeElement.value;\n    }\n\n    private hasChangesBetweenValues(): boolean {\n        return this.getNativeValue() != this.value;\n    }\n\n    private getRemainingCharacters(): number {\n        if (!this.showCharactersLength() || !this.maxLength()) {\n            return null;\n        }\n\n        const currentLength = this.currentValue()?.length || 0;\n        const remaining = this.maxLength() - currentLength;\n\n        return remaining > 0 ? remaining : 0;\n    }\n\n    private getTextareaClasses(): string {\n        const classes: string[] = [\n            'flex border appearance-none focus:outline-none leading-tight w-full px-4 py-3',\n            this.ngtStyle.compile(['text', 'color.border', 'color.bg', 'color.text', 'rounded'])\n        ];\n\n        if (this.formControlHasErrors() && (this.formControlIsDirty() || this.touched())) {\n            classes.push('input-has-error border-red-700');\n        }\n\n        return classes.join(' ');\n    }\n\n    private destroySubscriptions(): void {\n        this.subscriptions.forEach(subscription => subscription.unsubscribe());\n        this.subscriptions = [];\n    }\n\n    private destroyListeners(): void {\n        this.listeners.forEach(unlisten => unlisten());\n        this.listeners = [];\n    }\n}\n","@if (label() && !isShining()) {\n    <label class=\"flex mb-2 {{ ngtStyle.compile(['text', 'font', 'color.text']) }}\">\n        <span class=\"truncate\" [title]=\"label()\">\n            {{ label() }}:\n        </span>\n\n        @if (isRequired()) {\n            <span class=\"text-red-500 font-bold text-md ml-1\">*</span>\n        }\n\n        @if (helpText()) {\n            <ngt-helper [helpTitle]=\"helpTitle()\" [iconColor]=\"helpTextColor()\" class=\"ml-1\">\n                {{ helpText() }}\n            </ngt-helper>\n        }\n    </label>\n}\n\n<div [class]=\"isShining() ? 'hidden' : 'flex flex-col'\">\n    <textarea [class]=\"textareaClasses()\" autocomplete=\"new-password\" [rows]=\"rows()\" [disabled]=\"isDisabledState()\"\n        [readonly]=\"isReadonly()\" [placeholder]=\"placeholder()\" #textareaElement></textarea>\n\n    @if (showCharactersLength() && remainingCharacters() !== null) {\n        <p class=\"text-xxs mt-1\">\n            {{ getTranslation('ngtTextAreaRemainingCharacters') }}:\n            <span class=\"font-semibold\">{{ remainingCharacters() }}</span>\n        </p>\n    }\n</div>\n\n@if (isShining()) {\n    <div class=\"flex\">\n        <ngt-shining class=\"h-10 w-full\"></ngt-shining>\n    </div>\n}\n\n<ng-content></ng-content>\n\n<ngt-validation [control]=\"formControl\" [minLength]=\"minLength()\"></ngt-validation>","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n    selector: '[ngt-reactive-select-option]',\n    standalone: true,\n})\nexport class NgtReactiveSelectOptionTemplate {\n    public constructor(public template: TemplateRef<any>) { }\n}\n\n@Directive({\n    selector: '[ngt-reactive-select-option-selected]',\n    standalone: true,\n})\nexport class NgtReactiveSelectOptionSelectedTemplate {\n    public constructor(public template: TemplateRef<any>) { }\n}\n\n@Directive({\n    selector: '[ngt-reactive-select-header]',\n    standalone: true,\n})\nexport class NgtReactiveSelectHeaderTemplate {\n    public constructor(public template: TemplateRef<any>) { }\n}\n","import { Injectable } from \"@angular/core\";\nimport { AbstractControl, ValidatorFn } from \"@angular/forms\";\n\nexport interface NgtReactiveSelectValidationConfig {\n    isRequired: boolean;\n    customSyncValidators?: ValidatorFn[];\n}\n\n@Injectable({ providedIn: null })\nexport class NgtReactiveSelectValidationService {\n    public getSyncValidators(config: NgtReactiveSelectValidationConfig): ValidatorFn[] {\n        const validators: ValidatorFn[] = [];\n\n        if (config.isRequired) {\n            validators.push(this.isRequiredValidator());\n        }\n\n        if (config.customSyncValidators?.length) {\n            validators.push(...config.customSyncValidators);\n        }\n\n        return validators;\n    }\n\n    private isRequiredValidator(): ValidatorFn {\n        return (control: AbstractControl) => {\n            if (Array.isArray(control.value)) {\n                return control.value.length > 0\n                    ? null\n                    : { 'required': true };\n            }\n\n            return control.value\n                ? null\n                : { 'required': true };\n        };\n    }\n}\n","import { Injectable, signal, WritableSignal } from \"@angular/core\";\nimport { AbstractControl } from \"@angular/forms\";\nimport { Observable , Subject } from \"rxjs\";\n\n@Injectable({ providedIn: null })\nexport class NgtReactiveSelectStateService {\n    public readonly ngSelectItems: WritableSignal<Observable<any>> = signal(null);\n    public readonly typeaheadSubject: WritableSignal<Subject<string>> = signal(new Subject());\n    public readonly formControlHasErrors: WritableSignal<boolean> = signal(false);\n    public readonly formControlIsDirty: WritableSignal<boolean> = signal(false);\n    public readonly wasClicked: WritableSignal<boolean> = signal(false);\n    public readonly hadFirstItemsLoad: WritableSignal<boolean> = signal(false);\n    public readonly loading: WritableSignal<boolean> = signal(false);\n    public readonly shining: WritableSignal<boolean> = signal(false);\n\n    public reset(): void {\n        this.formControlHasErrors.set(false);\n        this.formControlIsDirty.set(false);\n        this.wasClicked.set(false);\n        this.loading.set(false);\n        this.shining.set(false);\n    }\n\n    public updateFormControlState(control: AbstractControl): void {\n        if (!control) {\n            return;\n        }\n\n        this.formControlHasErrors.set(!!control.errors && Object.keys(control.errors).length > 0);\n        this.formControlIsDirty.set(control.dirty);\n    }\n\n    public setNgSelectItems(items: Observable<any>): void {\n        this.ngSelectItems.set(items);\n    }\n\n    public setTypeaheadSubject(subject: Subject<string>): void {\n        this.typeaheadSubject.set(subject);\n    }\n\n    public markAsClicked(): void {\n        this.wasClicked.set(true);\n    }\n\n    public markFirstItemsLoaded(): void {\n        this.hadFirstItemsLoad.set(true);\n    }\n}\n","import { Injectable, OutputEmitterRef } from \"@angular/core\";\nimport { Observer } from \"rxjs\";\nimport { NgtHttpResponse, NgtHttpService } from \"../../../../../services/http/ngt-http.service\";\nimport { NgtReactiveSelectStateService } from \"./ngt-reactive-select-state.service\";\n\nexport interface NgtReactiveSelectSearchConfig {\n    remoteResource: any;\n    guessCompareWith: boolean;\n    compareWith: (a: any, b: any) => boolean;\n    autoSelectUniqueOption: boolean;\n    currentValue: any;\n    ngSearchObserver: Observer<any>;\n    onNativeChange: Function;\n    onLoadRemoteResource: OutputEmitterRef<any>;\n}\n\n@Injectable({ providedIn: null })\nexport class NgtReactiveSelectSearchService {\n    private readonly searchState = {\n        filters: {},\n        sort: {\n            field: '',\n            direction: ''\n        },\n        pagination: {\n            count: null,\n            page: 1,\n            pages: null,\n            total: null,\n            from: null,\n            to: null,\n            per_page: null\n        }\n    };\n\n    private readonly originalPerPage = 15;\n\n    private searchTimeout: NodeJS.Timeout;\n\n    public constructor(\n        private ngtHttp: NgtHttpService,\n        private stateService: NgtReactiveSelectStateService,\n    ) { }\n\n    public loadRemoteData(config: NgtReactiveSelectSearchConfig, filters: any = {}): void {\n        this.searchState.filters = { ...this.searchState.filters, ...filters };\n\n        if (!config.remoteResource) {\n            console.error('You need to provide a remote resorce to make HTTP requests.');\n\n            return;\n        }\n\n        if (this.searchTimeout) {\n            clearTimeout(this.searchTimeout);\n        }\n\n        this.compareWithFn = config.compareWith;\n\n        this.stateService.loading.set(true);\n\n        this.searchTimeout = setTimeout(() => {\n            this.ngtHttp\n                .get(config.remoteResource, this.searchState.filters, this.searchState.pagination)\n                .subscribe({\n                    next: (response: NgtHttpResponse) => {\n                        this.bindCompareWithByResponse(response, config.guessCompareWith);\n\n                        config.ngSearchObserver.next(response.data);\n\n                        if (this.canAutoSelectUniqueOption(response, config)) {\n                            config.onNativeChange(response.data[0]);\n                        }\n\n                        config.onLoadRemoteResource.emit(response.data);\n\n                        this.searchState.pagination = response.meta.pagination;\n                    },\n\n                    error: (error) => {\n                        console.error(error);\n\n                        config.ngSearchObserver.next([]);\n                    },\n\n                    complete: () => {\n                        this.stateService.loading.set(false);\n                    }\n                });\n        }, 500);\n    }\n\n    public itemSearchFn(remoteResource: any, bindLabel: string) {\n        return (term: string, item: any) => {\n            if (remoteResource) {\n                return null;\n            }\n\n            let formattedValue: any;\n\n            if (typeof item == 'string') {\n                formattedValue = item;\n            }\n\n            if (!bindLabel) {\n                return null;\n            }\n\n            if (typeof item['getAttribute'] == 'function') {\n                formattedValue = item.getAttribute([bindLabel]);\n            } else if (typeof item == 'object') {\n                formattedValue = item[bindLabel];\n            }\n\n            return formattedValue\n                ? formattedValue.toLocaleLowerCase().includes(term.toLocaleLowerCase())\n                : null;\n        };\n    };\n\n    public handleScroll(end: number, searchCallback: () => void): void {\n        const currentPerPage = this.searchState.pagination.per_page;\n        const maxItemsInBackend = this.searchState.pagination.total;\n\n        if (end >= currentPerPage && end <= maxItemsInBackend) {\n            this.searchState.pagination.per_page = parseInt(\n                String(this.searchState.pagination.per_page)\n            ) + this.originalPerPage;\n\n            searchCallback();\n        }\n    }\n\n    public clearFilters(): void {\n        this.searchState.filters = {};\n    }\n\n    public clearSearchTimeout(): void {\n        if (this.searchTimeout) {\n            clearTimeout(this.searchTimeout);\n            this.searchTimeout = null;\n        }\n    }\n\n    public getCompareWithFn(): (a: any, b: any) => boolean {\n        return this.compareWithFn;\n    }\n\n    private compareWithFn: (a: any, b: any) => boolean = (a: any, b: any) => a === b;\n\n    private bindCompareWithByResponse(\n        response: NgtHttpResponse,\n        guessCompareWith: boolean,\n    ): void {\n        if (!guessCompareWith) {\n            return;\n        }\n\n        if (response.data?.length && typeof response.data[0]['getApiId'] === 'function') {\n            this.compareWithFn = (a: any, b: any) => a.getApiId() == b.getApiId();\n        } else {\n            this.compareWithFn = (a: any, b: any) => a === b;\n        }\n    }\n\n    private canAutoSelectUniqueOption(\n        response: NgtHttpResponse,\n        config: NgtReactiveSelectSearchConfig\n    ): boolean {\n        return !config.currentValue\n            && config.autoSelectUniqueOption\n            && Array.isArray(response?.data)\n            && response?.data?.length === 1;\n    }\n}\n","import { Injectable } from \"@angular/core\";\nimport { DropdownPosition, NgSelectComponent } from \"@ng-select/ng-select\";\nimport { delay } from \"../../../../../helpers/promise/promise-helper\";\nimport { NgtReactiveSelectStateService } from \"./ngt-reactive-select-state.service\";\n\n@Injectable({ providedIn: null })\nexport class NgtReactiveSelectDropdownService {\n    public constructor(\n        private stateService: NgtReactiveSelectStateService,\n    ) { }\n\n    public async calculateDropdownPosition(\n        ngSelectComponent: NgSelectComponent,\n        parentContainer: Element,\n    ): Promise<void> {\n        while (this.stateService.loading()) {\n            await delay(200);\n        }\n\n        setTimeout(() => {\n            const ngSelectElement = ngSelectComponent.element;\n            const ngSelectHeight = ngSelectElement.offsetHeight;\n            const ngSelectYPosition = ngSelectElement.getBoundingClientRect().y;\n\n            const dropdownHeight = ngSelectComponent.dropdownPanel.contentElementRef.nativeElement.offsetHeight;\n            const openedSelectHeight = ngSelectHeight + dropdownHeight;\n\n            const parentYPosition = parentContainer.getBoundingClientRect().y;\n            const ngSelectYPositionInsideParent = ngSelectYPosition - parentYPosition;\n\n            const openedSelectTotalHeight = openedSelectHeight + ngSelectYPositionInsideParent;\n            const parentContainerHeight = parentContainer.clientHeight;\n\n            const fitsOnTop = openedSelectHeight < ngSelectYPositionInsideParent;\n            const fitsOnBottom = openedSelectTotalHeight < parentContainerHeight;\n\n            const dropdownPosition: DropdownPosition = !fitsOnBottom && fitsOnTop\n                ? 'top'\n                : 'bottom';\n\n            (<any>ngSelectComponent.dropdownPanel['_currentPosition']) = dropdownPosition;\n\n            ngSelectComponent.dropdownPanel['_updateDropdownClass'](dropdownPosition);\n        });\n    }\n}\n","import { Injectable, signal, WritableSignal, OutputEmitterRef } from \"@angular/core\";\nimport { Observable, Observer, Subject } from \"rxjs\";\nimport { NgtReactiveSelectSearchService } from \"./ngt-reactive-select-search.service\";\n\nexport interface NgtReactiveSelectItemsConfig {\n    remoteResource: any;\n    items: any[] | Observable<any>;\n    autoSelectUniqueOption: boolean;\n    guessCompareWith: boolean;\n    compareWith: (a: any, b: any) => boolean;\n    currentValue: any;\n    canLoadItems: boolean;\n    ngSearchObserver: Observer<any>;\n    onNativeChange: (value: any) => void;\n    onLoadRemoteResource: OutputEmitterRef<any>;\n}\n\n@Injectable({ providedIn: null })\nexport class NgtReactiveSelectItemsService {\n    private originalItems: WritableSignal<any[]> = signal([]);\n    private typeaheadSubject: WritableSignal<Subject<string>> = signal(new Subject());\n    private ngSearchObserver: Observer<any> | null = null;\n\n    public constructor(\n        private searchService: NgtReactiveSelectSearchService,\n    ) { }\n\n    public initializeItems(config: NgtReactiveSelectItemsConfig): Observable<any> {\n        if (config.remoteResource && config.canLoadItems) {\n            const ngSelectItems = new Observable(observer => {\n                this.ngSearchObserver = observer;\n                config.ngSearchObserver = observer;\n\n                this.searchService.loadRemoteData(config);\n            });\n\n            const typeaheadSubject = new Subject<string>();\n\n            this.typeaheadSubject.set(typeaheadSubject);\n\n            return ngSelectItems;\n        }\n\n        if (config.items instanceof Observable) {\n            return config.items;\n        }\n\n        const itemsArray = Array.isArray(config.items) ? config.items : [];\n\n        const canAutoSelect = !config.currentValue\n            && config.autoSelectUniqueOption\n            && itemsArray.length === 1;\n\n        if (canAutoSelect) {\n            config.onNativeChange(itemsArray[0]);\n        }\n\n        return new Observable((observer) => {\n            this.ngSearchObserver = observer;\n            config.ngSearchObserver = observer;\n            observer.next(itemsArray);\n        });\n    }\n\n    public getNgSearchObserver(): Observer<any> {\n        return this.ngSearchObserver;\n    }\n\n    public getTypeaheadSubject(): Subject<string> {\n        return this.typeaheadSubject();\n    }\n\n    public sortSelectedItems(value: any, sortFn?: (a: any, b: any) => any): any {\n        if (sortFn && value instanceof Array && value.length > 1) {\n            return value.sort((a, b) => sortFn(a, b));\n        }\n\n        return value;\n    }\n\n    public setOriginalItems(items: any[]): void {\n        this.originalItems.set(items);\n    }\n\n    public getOriginalItems(): any[] {\n        return this.originalItems();\n    }\n\n    public hadPreviousSelection(\n        item: any,\n        compareWithFn: (a: any, b: any) => boolean\n    ): boolean {\n        return !!this.originalItems()?.find(element => compareWithFn(element, item));\n    }\n}\n","import { Injectable } from \"@angular/core\";\nimport { NgSelectComponent } from \"@ng-select/ng-select\";\nimport { NgtReactiveSelectStateService } from \"./ngt-reactive-select-state.service\";\n\nexport interface NgtReactiveSelectAddTagConfig {\n    ngSelectComponent: NgSelectComponent;\n    bindLabel: string;\n}\n\n@Injectable({ providedIn: null })\nexport class NgtReactiveSelectTagManagerService {\n    public constructor(\n        private stateService: NgtReactiveSelectStateService,\n    ) { }\n\n    public replaceShowAddTag(config: NgtReactiveSelectAddTagConfig): void {\n        Object.defineProperty(config.ngSelectComponent, 'showAddTag', {\n            get: () => {\n                if (!config.ngSelectComponent['searchTerm']) {\n                    return false;\n                }\n\n                const term = config.ngSelectComponent['searchTerm'].toLocaleLowerCase();\n\n                return config.ngSelectComponent.addTag && !this.stateService.loading()\n                    && (\n                        !this.hasTermInFilteredItems(config.ngSelectComponent, term, config.bindLabel)\n                        && (\n                            !this.hasTermInSelectedItems(config.ngSelectComponent, term, config.bindLabel)\n                            || (!config.ngSelectComponent.hideSelected && config.ngSelectComponent.isOpen)\n                        )\n                    );\n            }\n        });\n    }\n\n    private hasTermInFilteredItems(\n        ngSelectComponent: NgSelectComponent,\n        term: string,\n        bindLabel: string\n    ): boolean {\n        const filteredItems = ngSelectComponent.itemsList.filteredItems;\n\n        if (filteredItems?.length && this.isColoquentResource(ngSelectComponent)) {\n            return filteredItems.some((element: any) => {\n                const elementValue = (<any>element.value).getAttribute(bindLabel);\n\n                return elementValue && elementValue.toLocaleLowerCase() === term;\n            });\n        }\n\n        return filteredItems.some((element: any) => {\n            const elementValue = (<any>element.value)[bindLabel];\n\n            return elementValue && elementValue.toLocaleLowerCase() === term;\n        });\n    }\n\n    private hasTermInSelectedItems(\n        ngSelectComponent: NgSelectComponent,\n        term: string,\n        bindLabel: string\n    ): boolean {\n        const selectedItems = ngSelectComponent.selectedItems;\n\n        if (selectedItems?.length && this.isColoquentResource(ngSelectComponent)) {\n            return selectedItems.some((element: any) => {\n                const elementValue = (<any>element.value).getAttribute(bindLabel);\n\n                return elementValue && elementValue.toLocaleLowerCase() === term;\n            });\n        }\n\n        return selectedItems.some((element: any) => {\n            const elementValue = (<any>element.value)[bindLabel];\n\n            return elementValue && elementValue.toLocaleLowerCase() === term;\n        });\n    }\n\n    private isColoquentResource(ngSelectComponent: NgSelectComponent): boolean {\n        const items = ngSelectComponent.itemsList.items;\n\n        return items?.length && typeof items[0].value['getAttribute'] === 'function';\n    }\n}\n","import {\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    ContentChild,\n    Injector,\n    OnDestroy,\n    Optional,\n    Self,\n    Signal,\n    SkipSelf,\n    TemplateRef,\n    ViewChild,\n    computed,\n    effect,\n    input,\n    output,\n    untracked,\n} from '@angular/core';\nimport { ReactiveFormsModule, TouchedChangeEvent, ValidatorFn, ValueChangeEvent } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { NgOption, NgSelectComponent, NgSelectModule } from '@ng-select/ng-select';\nimport { Observable, Subject, Subscription } from 'rxjs';\n\nimport { NgtControlValueAccessor, NgtValueAccessorProvider } from '../../../../base/ngt-control-value-accessor';\nimport { NgtStylizableDirective } from '../../../../directives/ngt-stylizable/ngt-stylizable.directive';\nimport { NgtTranslateService } from '../../../../services/http/ngt-translate.service';\nimport { NgtStylizableService } from '../../../../services/ngt-stylizable/ngt-stylizable.service';\nimport { NgtReactiveFormComponent } from '../ngt-reactive-form/ngt-reactive-form.component';\nimport { NgtSectionComponent } from '../../../ngt-section/ngt-section.component';\nimport { NgtReactiveSelectHeaderTemplate, NgtReactiveSelectOptionSelectedTemplate, NgtReactiveSelectOptionTemplate } from './ngt-reactive-select.directive';\nimport { NgtModalComponent } from '../../../ngt-modal/ngt-modal.component';\nimport { NgtValidationModule } from '../../../ngt-validation/ngt-validation.module';\nimport { NgtShiningModule } from '../../../ngt-shining/ngt-shining.module';\nimport { NgtSvgModule } from '../../../ngt-svg/ngt-svg.module';\nimport { NgtReactiveSelectValidationService, NgtReactiveSelectValidationConfig } from './services/ngt-reactive-select-validation.service';\nimport { NgtReactiveSelectSearchService, NgtReactiveSelectSearchConfig } from './services/ngt-reactive-select-search.service';\nimport { NgtReactiveSelectDropdownService } from './services/ngt-reactive-select-dropdown.service';\nimport { NgtReactiveSelectStateService } from './services/ngt-reactive-select-state.service';\nimport { NgtReactiveSelectItemsConfig, NgtReactiveSelectItemsService } from './services/ngt-reactive-select-items.service';\nimport { NgtReactiveSelectTagManagerService } from './services/ngt-reactive-select-tag-manager.service';\nimport { NgtHelperComponent } from '../../../ngt-helper/ngt-helper.component';\n\nexport enum NgtReactSelectDropdownPanelHeight {\n    AUTO = 'auto',\n    XS = 'xs',\n    MD = 'md',\n    SM = 'sm',\n    LG = 'lg',\n    XL = 'xl'\n}\n\n@Component({\n    selector: 'ngt-reactive-select',\n    templateUrl: './ngt-reactive-select.component.html',\n    styleUrls: ['./ngt-reactive-select.component.css'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: true,\n    providers: [\n        NgtValueAccessorProvider(NgtReactiveSelectComponent),\n\n        NgtReactiveSelectValidationService,\n        NgtReactiveSelectSearchService,\n        NgtReactiveSelectItemsService,\n        NgtReactiveSelectDropdownService,\n        NgtReactiveSelectStateService,\n        NgtReactiveSelectTagManagerService,\n    ],\n    imports: [\n        CommonModule,\n        ReactiveFormsModule,\n        NgSelectModule,\n        NgtValidationModule,\n        NgtShiningModule,\n        NgtSvgModule,\n        NgtHelperComponent,\n\n        /** Directives */\n        NgtReactiveSelectOptionTemplate,\n        NgtReactiveSelectOptionSelectedTemplate,\n        NgtReactiveSelectHeaderTemplate,\n    ],\n})\nexport class NgtReactiveSelectComponent extends NgtControlValueAccessor implements OnDestroy {\n    @ViewChild(NgSelectComponent, { static: true }) public ngSelectComponent: NgSelectComponent;\n    @ContentChild(NgtReactiveSelectOptionTemplate, { read: TemplateRef }) public ngtOptionTemplate: TemplateRef<any>;\n    @ContentChild(NgtReactiveSelectOptionSelectedTemplate, { read: TemplateRef }) public ngtOptionSelectedTemplate: TemplateRef<any>;\n    @ContentChild(NgtReactiveSelectHeaderTemplate, { read: TemplateRef }) public ngtSelectHeaderTemplate: TemplateRef<any>;\n\n    /** Visual Inputs */\n\n    public readonly label = input<string>('');\n    public readonly labelIcon = input<string>();\n    public readonly labelIconColor = input<string>();\n    public readonly helpTitle = input<string>();\n    public readonly helpText = input<string>();\n    public readonly helpTextColor = input<string>('text-green-500');\n    public readonly shining = input<boolean>(false);\n    public readonly loading = input<boolean>(false);\n    public readonly loadingText = input<string>('');\n    public readonly notFoundText = input<string>('');\n    public readonly dropdownPosition = input<string>('auto');\n    public readonly typeToSearchText = input<string>('');\n    public readonly clearAllTooltip = input<string>('');\n    public readonly placeholder = input<string>('');\n    public readonly createText = input<string>('');\n    public readonly labelForId = input<string>('');\n    public readonly dropdownPanelMinHeight = input<NgtReactSelectDropdownPanelHeight>(NgtReactSelectDropdownPanelHeight.AUTO);\n    public readonly helperReverseYPosition = input<boolean>(false);\n    public readonly helperAutoXReverse = input<boolean>(true);\n\n    /** Behavior Inputs */\n\n    public readonly remoteResource = input<any>();\n    public readonly items = input<Array<any> | Observable<any>>([]);\n    public readonly bindLabel = input<string>('name');\n    public readonly bindValue = input<string>();\n    public readonly inputAttrs = input<{ [key: string]: string }>();\n    public readonly groupBy = input<string | Function>(null);\n    public readonly tabIndex = input<number>();\n    public readonly groupValue = input<(groupKey: string, cildren: any[]) => Object>();\n    public readonly trackByFn = input<(item: any) => any>();\n    public readonly isAllowedToRemoveFn = input<(a: any) => boolean>();\n    public readonly sortSelectedItemsFn = input<(a: any, b: any) => any>();\n    public readonly autoLoad = input<boolean>(false);\n    public readonly allowCreate = input<boolean | Promise<any> | Function>(false);\n    public readonly allowOriginalItemsUnselect = input<boolean>(true);\n    public readonly isDisabled = input<boolean>(false);\n    public readonly isReadonly = input<boolean>(false);\n    public readonly hideSelected = input<boolean>(false);\n    public readonly closeOnSelect = input<boolean>(true);\n    public readonly clearable = input<boolean>(true);\n    public readonly multiple = input<boolean>(false);\n    public readonly searchable = input<boolean>(true);\n    public readonly clearSearchOnAdd = input<boolean>(true);\n    public readonly virtualScroll = input<boolean>(true);\n    public readonly guessCompareWith = input<boolean>(true);\n    public readonly compareWith = input<(a: any, b: any) => boolean>((a: any, b: any) => a === b);\n    public readonly autoSelectUniqueOption = input<boolean>(false);\n    public readonly valueAsArray = input<boolean>(false);\n\n    /** Validation Inputs */\n\n    public readonly maxSelectedItems = input<number>();\n    public readonly customSyncValidators = input<ValidatorFn[]>();\n    public readonly isRequired = input<boolean>(false);\n\n    /** Outputs */\n\n    public readonly onLoadRemoteResource = output<any>();\n    public readonly onSelectedItemRemove = output<any>();\n    public readonly onClear = output<void>();\n    public readonly onToggleDropdown = output<boolean>();\n    public readonly onValueChange = output<any>();\n\n    /** Computed Signals */\n\n    public readonly isShining: Signal<boolean> = computed(\n        () => this.shining() || this.ngtReactForm?.shining() || this.stateService.shining()\n    );\n\n    public readonly isLoading: Signal<boolean> = computed(\n        () => this.loading() || this.stateService.loading()\n    );\n\n    public readonly isDisabledByParent: Signal<boolean> = computed(\n        () => this.ngtReactForm?.isDisabledState() || this.ngtSection?.isDisabledState() || this.ngtModal?.isDisabledState()\n    );\n\n    public readonly isDisabledState: Signal<boolean> = computed(\n        () => this.isDisabled() || this.isDisabledByParent() || this.isReadonly()\n    );\n\n    public readonly isClearable: Signal<boolean> = computed(\n        () => {\n            if (!this.multiple() && this.isRequired()) {\n                return false;\n            }\n\n            return this.clearable();\n        }\n    );\n\n    public readonly shouldCloseOnSelect: Signal<boolean> = computed(\n        () => this.multiple() ? false : this.closeOnSelect()\n    );\n\n    public readonly selectClasses: Signal<string> = computed(() => this.buildSelectClasses());\n\n    public readonly typeaheadSubject: Signal<Subject<any>> = computed(() => this.stateService.typeaheadSubject());\n\n    /** Other Public Properties */\n\n    public ngtStyle: NgtStylizableService;\n\n    /** Private Properties */\n\n    private nativeValue: any;\n    private subscriptions: Array<Subscription> = [];\n\n    public constructor(\n        @Optional() @Self()\n        public ngtStylizableDirective: NgtStylizableDirective,\n\n        @Optional()\n        public ngtTranslateService: NgtTranslateService,\n\n        @Optional() @SkipSelf()\n        private ngtReactForm: NgtReactiveFormComponent,\n\n        @Optional() @SkipSelf()\n        private ngtSection: NgtSectionComponent,\n\n        @Optional() @SkipSelf()\n        private ngtModal: NgtModalComponent,\n\n        private validationService: NgtReactiveSelectValidationService,\n        private searchService: NgtReactiveSelectSearchService,\n        private itemsService: NgtReactiveSelectItemsService,\n        private dropdownService: NgtReactiveSelectDropdownService,\n        private tagManagerService: NgtReactiveSelectTagManagerService,\n        private changeDetector: ChangeDetectorRef,\n\n        protected override injector: Injector,\n\n        public stateService: NgtReactiveSelectStateService,\n    ) {\n        super();\n\n        const initialItems = new Observable((observer) => {\n            observer.next([]);\n        });\n\n        this.stateService.setNgSelectItems(initialItems);\n\n        this.setupNgtStylizable();\n\n        this.registerEffects();\n    }\n\n    public ngAfterViewInit(): void {\n        this.formControl = this.getControl();\n\n        if (!this.getElementTitle() || this.getElementTitle() === 'null') {\n            this.ngSelectComponent.element.parentElement.parentElement.parentElement.title = '';\n        }\n\n        if (this.formControl) {\n            this.subscriptions.push(\n                this.formControl.events.subscribe((event) => {\n                    if (event instanceof TouchedChangeEvent) {\n                        this.touched.set(event.touched);\n                    }\n\n                    if (event instanceof ValueChangeEvent) {\n                        this.onValueChange.emit(event.value);\n                    }\n\n                    this.stateService.updateFormControlState(this.formControl);\n                })\n            );\n\n            this.setupValidators();\n        }\n    }\n\n    public ngOnDestroy(): void {\n        this.searchService.clearSearchTimeout();\n        this.destroySubscriptions();\n    }\n\n    public onOpen(): void {\n        this.onToggleDropdown.emit(true);\n\n        const parentElements = document.querySelectorAll('#ngtSelectParentContainer');\n\n        if (this.dropdownPosition() === 'auto' && parentElements?.length) {\n            const parentContainer = parentElements[parentElements.length - 1];\n\n            this.calculateDropdownPosition(parentContainer);\n        }\n    }\n\n    public onClose(): void {\n        this.onToggleDropdown.emit(false);\n    }\n\n    public onClearSelect(): void {\n        this.searchService.clearFilters();\n\n        this.onClear.emit();\n    }\n\n    public onRemoveSelectedItem(removedItem: any): void {\n        if (this.cantRemoveItem(removedItem)) {\n            const compareWithFn = this.getCompareWith();\n\n            const ngOption: NgOption = this.ngSelectComponent\n                .itemsList\n                .items\n                .find(item => compareWithFn(item.value, removedItem));\n\n            this.ngSelectComponent.select(ngOption);\n\n            return;\n        }\n\n        this.onSelectedItemRemove.emit(removedItem);\n    }\n\n    public onScroll({ end }: { end: number }): void {\n        this.searchService.handleScroll(\n            end,\n            () => this.loadRemoteData({})\n        );\n    }\n\n    public onNativeChange(value: any): void {\n        if (this.hasChangesBetweenValues(this.value, value)) {\n            value = this.sortSelectedItems(value);\n\n            if (value && this.valueAsArray() && !Array.isArray(value)) {\n                value = [value];\n            }\n\n            this.nativeValue = value;\n            this.value = value;\n        }\n    }\n\n    public change(value: any): void {\n        if (this.hasChangesBetweenValues(value, this.nativeValue)) {\n            if (value && this.valueAsArray() && !Array.isArray(value)) {\n                value = [value];\n            }\n\n            this.nativeValue = this.sortSelectedItems(value);\n\n            this.changeDetector.detectChanges();\n\n            const valueToNgSelect = !this.multiple() && this.valueAsArray() && this.nativeValue?.length\n                ? this.nativeValue[0]\n                : this.nativeValue;\n\n            this.ngSelectComponent.writeValue(valueToNgSelect);\n        }\n    }\n\n    public loadRemoteData(filters: any): void {\n        const config: NgtReactiveSelectSearchConfig = {\n            remoteResource: this.remoteResource(),\n            guessCompareWith: this.guessCompareWith(),\n            compareWith: this.compareWith(),\n            autoSelectUniqueOption: this.autoSelectUniqueOption(),\n            currentValue: this.value,\n            ngSearchObserver: this.itemsService.getNgSearchObserver(),\n            onNativeChange: this.onNativeChange,\n            onLoadRemoteResource: this.onLoadRemoteResource\n        };\n\n        this.searchService.loadRemoteData(config, filters);\n    }\n\n    public removeItem(event: Event, item: any): void {\n        event.preventDefault();\n        event.stopPropagation();\n\n        return this.ngSelectComponent.clearItem(item);\n    }\n\n    public refresh(): void {\n        this.initNgSelectItems();\n\n        this.setupValidators();\n    }\n\n    public reset(): void {\n        this.value = undefined;\n        this.nativeValue = undefined;\n        this.refresh();\n    }\n\n    public itemSearchFn(): (term: string, item: any) => any {\n        return this.searchService.itemSearchFn(this.remoteResource(), this.bindLabel());\n    }\n\n    public setFocus(): void {\n        setTimeout(() => this.ngSelectComponent.focus());\n    }\n\n    public getFilterInputValue(): string {\n        let inputField = this.ngSelectComponent.searchInput\n            ? this.ngSelectComponent.searchInput\n            : this.ngSelectComponent['searchInput'];\n\n        if (inputField?.nativeElement) {\n            return inputField.nativeElement.value;\n        }\n    }\n\n    public getCompareWith(): (a: any, b: any) => boolean {\n        return this.searchService.getCompareWithFn();\n    }\n\n    public hasSelectedValue(): string {\n        return this.value && JSON.stringify(this.value);\n    }\n\n    public cantRemoveItem(itemValue: any): boolean {\n        const isAllowedFn = this.isAllowedToRemoveFn();\n\n        return (!this.allowOriginalItemsUnselect() && this.hadPreviousSelection(itemValue))\n            || (isAllowedFn && !isAllowedFn(itemValue));\n    }\n\n    private initNgSelectItems(): void {\n        const config: NgtReactiveSelectItemsConfig = {\n            remoteResource: this.remoteResource(),\n            items: this.items(),\n            autoSelectUniqueOption: this.autoSelectUniqueOption(),\n            guessCompareWith: this.guessCompareWith(),\n            compareWith: this.getCompareWith(),\n            currentValue: this.value,\n            canLoadItems: this.canLoadItems(),\n            ngSearchObserver: null,\n            onNativeChange: (value: any) => this.onNativeChange(value),\n            onLoadRemoteResource: this.onLoadRemoteResource,\n        };\n\n        const ngSelectItems = this.itemsService.initializeItems(config);\n\n        if (config.remoteResource && config.canLoadItems) {\n            const typeaheadSubject = this.itemsService.getTypeaheadSubject();\n\n            this.stateService.setTypeaheadSubject(typeaheadSubject);\n\n            this.subscriptions.push(\n                typeaheadSubject.subscribe((term) => {\n                    this.loadRemoteData({ term: term });\n                })\n            );\n        }\n\n        this.stateService.setNgSelectItems(ngSelectItems);\n    }\n\n    private setupValidators(): void {\n        if (!this.formControl) {\n            return;\n        }\n\n        const config: NgtReactiveSelectValidationConfig = {\n            isRequired: this.isRequired(),\n            customSyncValidators: this.customSyncValidators(),\n        };\n\n        const syncValidators = this.validationService.getSyncValidators(config);\n\n        this.formControl.setValidators(syncValidators);\n        this.formControl.updateValueAndValidity();\n\n        if (this.value && (!Array.isArray(this.value) || this.value.length)) {\n            this.markAsDirty();\n\n            this.stateService.formControlHasErrors.set(!!this.formControl.errors);\n            this.stateService.formControlIsDirty.set(true);\n        }\n    }\n\n    private setupNgtStylizable(): void {\n        if (this.ngtStylizableDirective) {\n            this.ngtStyle = this.ngtStylizableDirective.getNgtStylizableService();\n        } else {\n            this.ngtStyle = new NgtStylizableService();\n        }\n\n        this.ngtStyle.load(this.injector, 'NgtSelect', {\n            h: 'h-12',\n            text: 'text-sm',\n            fontCase: '',\n            color: {\n                bg: 'bg-white'\n            }\n        });\n    }\n\n    private registerEffects(): void {\n        effect(() => {\n            const remoteResource = this.remoteResource();\n            const itemsList = this.items();\n\n            untracked(() => {\n                if (remoteResource || itemsList) {\n                    this.initNgSelectItems();\n                }\n            });\n        });\n\n        effect(() => {\n            if (this.isRequired()) {\n                this.setupValidators();\n            }\n        });\n\n        effect(() => {\n            if (!this.stateService.hadFirstItemsLoad() && this.canLoadItems() && this.ngSelectComponent) {\n                this.stateService.markFirstItemsLoaded();\n\n                this.initNgSelectItems();\n\n                this.tagManagerService.replaceShowAddTag({\n                    ngSelectComponent: this.ngSelectComponent,\n                    bindLabel: this.bindLabel()\n                });\n\n                this.ngSelectComponent.itemsList.mapSelectedItems();\n\n                const originalItems = this.ngSelectComponent.selectedItems?.map((element) => element.value);\n\n                this.itemsService.setOriginalItems(originalItems ?? []);\n            }\n        });\n    }\n\n    private async calculateDropdownPosition(parentContainer: Element): Promise<void> {\n        await this.dropdownService.calculateDropdownPosition(\n            this.ngSelectComponent,\n            parentContainer,\n        );\n    }\n\n    private buildSelectClasses(): string {\n        const minHeight = this.dropdownPanelMinHeight();\n\n        let selectClass = minHeight ? `ng-select-dropdown-panel-${minHeight}` : 'ng-select-dropdown-panel-auto';\n\n        if (this.isDisabledState()) {\n            selectClass += ' select-border-disabled';\n        } else if (this.stateService.formControlHasErrors() && (this.stateService.formControlIsDirty() || this.touched())) {\n            selectClass += ' select-border-error';\n        } else {\n            selectClass += ' select-border-normal';\n        }\n\n        if (this.multiple()) {\n            selectClass += ` h-auto ${this.ngtStyle.compile(['color.bg', 'color.text'])}`;\n        } else {\n            selectClass += ` ${this.ngtStyle.compile(['h', 'color.bg', 'color.text'])}`;\n        }\n\n        return selectClass;\n    }\n\n    private sortSelectedItems(value: any): any {\n        return this.itemsService.sortSelectedItems(value, this.sortSelectedItemsFn());\n    }\n\n    private getElementTitle(): string {\n        return this.ngSelectComponent.element.parentElement.parentElement.parentElement.title;\n    }\n\n    private hasChangesBetweenValues(a: any, b: any): boolean {\n        return JSON.stringify(a ?? null) !== JSON.stringify(b ?? null);\n    }\n\n    private hadPreviousSelection(item: any): boolean {\n        const compareWithFn = this.getCompareWith();\n\n        return this.itemsService.hadPreviousSelection(item, compareWithFn);\n    }\n\n    private canLoadItems(): boolean {\n        return this.autoLoad() || (!this.isDisabledState() && this.stateService.wasClicked());\n    }\n\n    private destroySubscriptions(): void {\n        this.subscriptions.forEach(subscription => subscription.unsubscribe());\n        this.subscriptions = [];\n    }\n}\n","@if (label() && !isShining()) {\n<label\n    class=\"{{ isShining() ? '' : 'block' }} {{ ngtStyle.compile(['color.text', 'text', 'font', 'fontCase']) }} mb-2 flex\">\n    @if (labelIcon()) {\n        <ngt-svg class=\"mr-1 {{labelIconColor()}}\" [src]=\"labelIcon()\"></ngt-svg>\n    }\n\n    <span class=\"truncate\" [title]=\"label()\">\n        {{ label() }}:\n    </span>\n\n    @if (isRequired()) {\n        <span class=\"text-red-500 font-bold text-md ml-1\">*</span>\n    }\n\n    @if (helpText()) {\n        <ngt-helper [helpTitle]=\"helpTitle()\" [iconColor]=\"helpTextColor()\"\n            [helperReverseYPosition]=\"helperReverseYPosition()\" [autoXReverse]=\"helperAutoXReverse()\" class=\"ml-1\">\n            {{ helpText() }}\n        </ngt-helper>\n    }\n</label>\n}\n\n<div [hidden]=\"isShining()\" class=\"{{ ngtStyle.compile(['text']) }} {{ selectClasses() }} normal-case\"\n    style=\"min-height: 2.5rem;\">\n    <ng-select class=\"custom\" [addTag]=\"allowCreate()\" [readonly]=\"isDisabledState()\"\n        [addTagText]=\"createText() || ngtTranslateService.ngtSelectCreateText\" [bindLabel]=\"bindLabel()\"\n        [multiple]=\"multiple()\" [hideSelected]=\"hideSelected()\" [typeahead]=\"typeaheadSubject()\"\n        [notFoundText]=\"notFoundText() || ngtTranslateService.ngtSelectNotFoundText\" [searchable]=\"searchable()\"\n        [searchFn]=\"itemSearchFn()\" [clearable]=\"isClearable() && hasSelectedValue()\"\n        [closeOnSelect]=\"shouldCloseOnSelect()\" [trackByFn]=\"trackByFn()\" [labelForId]=\"labelForId()\"\n        [typeToSearchText]=\"typeToSearchText() || ngtTranslateService.ngtSelectTypeToSearchText\"\n        [placeholder]=\"placeholder() || ngtTranslateService.ngtSelectPlaceholder\"\n        [dropdownPosition]=\"dropdownPosition()\" [groupBy]=\"groupBy()\"\n        [clearAllText]=\"clearAllTooltip() || ngtTranslateService.ngtSelectClearAllTooltip\"\n        [clearSearchOnAdd]=\"clearSearchOnAdd()\" [bindValue]=\"bindValue()\" [virtualScroll]=\"virtualScroll()\"\n        [loadingText]=\"loadingText() || ngtTranslateService.ngtSelectLoadingText\"\n        [maxSelectedItems]=\"maxSelectedItems()\" [tabIndex]=\"tabIndex()\" [items]=\"stateService.ngSelectItems() | async\"\n        [groupValue]=\"groupValue()\" [loading]=\"isLoading()\" [compareWith]=\"getCompareWith()\" [inputAttrs]=\"inputAttrs()\"\n        (scroll)=\"onScroll($event)\" (close)=\"onClose()\" (clear)=\"onClearSelect()\" \n        (remove)=\"onRemoveSelectedItem($event)\" (open)=\"onOpen()\" (change)=\"onNativeChange($event)\" \n        (blur)=\"onTouched()\" (click)=\"stateService.markAsClicked()\">\n\n        @if (ngtSelectHeaderTemplate) {\n            <ng-template ng-header-tmp>\n                <ng-template [ngTemplateOutlet]=\"ngtSelectHeaderTemplate\">\n                </ng-template>\n            </ng-template>\n        }\n\n        <ng-template ng-label-tmp let-item=\"item\">\n            <div class=\"flex w-full items-center pr-1\">\n                @if (multiple() && !cantRemoveItem(item)) {\n                    <div class=\"ng-value-icon px-1 h-full border-r mr-2 {{ ngtStyle.compile(['color.text', 'text']) }} cursor-pointer\"\n                        (click)=\"removeItem($event, item)\">\n                        <svg class=\"ng-value-icon fill-current self-center\" xmlns=\"http://www.w3.org/2000/svg\"\n                            viewBox=\"0 0 24 24\">\n                            <path\n                                d=\"M19.1 17.2l-5.3-5.3 5.3-5.3-1.8-1.8-5.3 5.4-5.3-5.3-1.8 1.7 5.3 5.3-5.3 5.3L6.7 19l5.3-5.3 5.3 5.3 1.8-1.8z\" />\n                        </svg>\n                    </div>\n                }\n\n                @if (ngtOptionSelectedTemplate) {\n                    <ng-template [ngTemplateOutlet]=\"ngtOptionSelectedTemplate\" [ngTemplateOutletContext]=\"{ item: item }\">\n                    </ng-template>\n                }\n\n                @if (!ngtOptionSelectedTemplate && ngtOptionTemplate) {\n                    <ng-template [ngTemplateOutlet]=\"ngtOptionTemplate\" [ngTemplateOutletContext]=\"{ item: item }\">\n                    </ng-template>\n                }\n            </div>\n        </ng-template>\n\n        <ng-template ng-option-tmp let-item=\"item\" let-index=\"index\" let-search=\"searchTerm\">\n            @if (ngtOptionTemplate) {\n                <ng-template [ngTemplateOutlet]=\"ngtOptionTemplate\"\n                    [ngTemplateOutletContext]=\"{ item: item, index: index, searchTerm: search }\">\n                </ng-template>\n            }\n        </ng-template>\n    </ng-select>\n</div>\n\n@if (isShining()) {\n    <div class=\"flex\">\n        <ngt-shining class=\"{{ ngtStyle.compile(['h']) }} w-full\"></ngt-shining>\n    </div>\n}\n\n<ngt-validation [control]=\"formControl\"></ngt-validation>","import { NgModule } from '@angular/core';\n\nimport { NgtReactiveSelectComponent } from './ngt-reactive-select.component';\nimport {\n    NgtReactiveSelectHeaderTemplate,\n    NgtReactiveSelectOptionSelectedTemplate,\n    NgtReactiveSelectOptionTemplate,\n} from './ngt-reactive-select.directive';\n\n@NgModule({\n    imports: [\n        NgtReactiveSelectComponent,\n        NgtReactiveSelectOptionTemplate,\n        NgtReactiveSelectOptionSelectedTemplate,\n        NgtReactiveSelectHeaderTemplate,\n    ],\n    exports: [\n        NgtReactiveSelectComponent,\n        NgtReactiveSelectOptionTemplate,\n        NgtReactiveSelectOptionSelectedTemplate,\n        NgtReactiveSelectHeaderTemplate,\n    ],\n})\nexport class NgtReactiveSelectModule { }\n","import { Injectable } from '@angular/core';\nimport moment from 'moment';\nimport { NgtReactiveDateLocale } from '../ngt-reactive-date.component';\n\n@Injectable({ providedIn: null })\nexport class NgtReactiveDateFormatterService {\n    public formatToDisplay(\n        value: string | string[],\n        enableTime: boolean,\n        dateFormat: string,\n        placeholder: string\n    ): string {\n        if (!value) {\n            return placeholder;\n        }\n\n        if (Array.isArray(value)) {\n            return this.formatArrayToDisplay(value, enableTime);\n        }\n\n        if (dateFormat === 'H:i') {\n            return value;\n        }\n\n        return this.formatSingleDateToDisplay(value, enableTime);\n    }\n\n    public convertFlatpickrToMomentFormat(flatpickrFormat: string): string {\n        let momentFormat = '';\n\n        const conversionMap: Record<string, string> = {\n            'd': 'DD',\n            'm': 'MM',\n            'M': 'MMM',\n            'Y': 'YYYY',\n            'H': 'HH',\n            'i': 'mm',\n            's': 'ss',\n            '/': '/',\n            '-': '-',\n            ':': ':',\n            ' ': ' '\n        };\n\n        for (const char of flatpickrFormat) {\n            const converted = conversionMap[char];\n\n            if (converted) {\n                momentFormat += converted;\n            } else if (char !== '.') {\n                momentFormat += char;\n            }\n        }\n\n        return momentFormat || 'DD/MM/YYYY HH:mm:00';\n    }\n\n    public convertDateByLocale(dateString: string, locale: NgtReactiveDateLocale): string {\n        if (locale == NgtReactiveDateLocale.US) {\n            return dateString;\n        }\n\n        return this.convertBrazilianToAmerican(dateString);\n    }\n\n    private convertBrazilianToAmerican(dateString: string): string {\n        const parts = dateString.split('/');\n\n        if (parts.length !== 3) {\n            return dateString;\n        }\n\n        return `${parts[2]}-${parts[1]}-${parts[0]}`;\n    }\n\n    private formatArrayToDisplay(dates: string[], enableTime: boolean): string {\n        const formatted = dates\n            .map(date => {\n                const momentDate = moment(date);\n\n                if (!momentDate.isValid()) {\n                    return null;\n                }\n\n                return enableTime\n                    ? momentDate.format('DD/MM/YYYY HH:mm:00')\n                    : momentDate.format('DD/MM/YYYY');\n            })\n            .filter(Boolean);\n\n        return formatted.join(' - ');\n    }\n\n    private formatSingleDateToDisplay(value: string | string[], enableTime: boolean): string {\n        const momentValue = moment(value);\n\n        if (!momentValue.isValid()) {\n            return '';\n        }\n\n        return enableTime\n            ? momentValue.format('DD/MM/YYYY HH:mm:00')\n            : momentValue.format('DD/MM/YYYY');\n    }\n}\n","import {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    Component,\n    computed,\n    effect,\n    Injector,\n    input,\n    OnDestroy,\n    OnInit,\n    Optional,\n    output,\n    Self,\n    Signal,\n    signal,\n    SkipSelf,\n    ViewChild,\n    ViewEncapsulation,\n    WritableSignal,\n} from '@angular/core';\nimport { ReactiveFormsModule, TouchedChangeEvent, ValidatorFn, Validators, ValueChangeEvent } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { english } from 'flatpickr/dist/l10n/default.js';\nimport { Portuguese } from 'flatpickr/dist/l10n/pt.js';\nimport moment from 'moment';\nimport { FlatpickrOptions, EvDatePickerComponent, EvDatePickerModule } from 'ev-date-picker';\n\nimport { Subscription } from 'rxjs';\nimport { NgtControlValueAccessor, NgtValueAccessorProvider } from '../../../../base/ngt-control-value-accessor';\nimport { NgtStylizableDirective } from '../../../../directives/ngt-stylizable/ngt-stylizable.directive';\nimport { applyInputMask, InputMaskEnum } from '../../../../helpers/input-mask/input-mask.helper';\nimport { NgtStylizableService } from '../../../../services/ngt-stylizable/ngt-stylizable.service';\nimport { NgtReactiveFormComponent } from '../ngt-reactive-form/ngt-reactive-form.component';\nimport { NgtSectionComponent } from '../../../ngt-section/ngt-section.component';\nimport { NgtModalComponent } from '../../../ngt-modal/ngt-modal.component';\nimport { NgtShiningModule } from '../../../ngt-shining/ngt-shining.module';\nimport { NgtValidationModule } from '../../../ngt-validation/ngt-validation.module';\nimport { NgtReactiveDateFormatterService } from './services/ngt-reactive-date-formatter.service';\nimport { NgtHelperComponent } from '../../../ngt-helper/ngt-helper.component';\n\nexport enum NgtReactiveDateLocale {\n    BRAZIL = 'BRAZIL',\n    US = 'US'\n}\n\nexport enum NgtReactiveDateMode {\n    SINGLE = 'SINGLE',\n    RANGE = 'RANGE'\n}\n\n@Component({\n    selector: 'ngt-reactive-date',\n    templateUrl: './ngt-reactive-date.component.html',\n    styleUrls: ['./ngt-reactive-date.component.css'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: true,\n    providers: [\n        NgtValueAccessorProvider(NgtReactiveDateComponent),\n\n        NgtReactiveDateFormatterService,\n    ],\n    imports: [\n        CommonModule,\n        ReactiveFormsModule,\n        EvDatePickerModule,\n        NgtShiningModule,\n        NgtValidationModule,\n        NgtHelperComponent,\n    ],\n})\nexport class NgtReactiveDateComponent extends NgtControlValueAccessor implements OnInit, AfterViewInit, OnDestroy {\n    @ViewChild('evDatePicker', { static: true }) public evDatePicker: EvDatePickerComponent;\n\n    /** Visual Inputs */\n\n    public readonly label = input<string>('');\n    public readonly placeholder = input<string>('dd/mm/yyyy');\n    public readonly helpTitle = input<string>();\n    public readonly helpText = input<string>();\n    public readonly helpTextColor = input<string>('text-green-500');\n    public readonly dateFormat = input<string>('d/m/Y H:i');\n    public readonly internalDateFormat = input<string>('YYYY-MM-DD HH:mm:00');\n    public readonly showCalendarIcon = input<boolean>(false);\n    public readonly helperReverseYPosition = input<boolean>(false);\n    public readonly shining = input<boolean>(false);\n\n    /** Behavior Inputs */\n\n    public readonly mode = input<NgtReactiveDateMode | string>(NgtReactiveDateMode.SINGLE);\n    public readonly locale = input<NgtReactiveDateLocale | string>(NgtReactiveDateLocale.BRAZIL);\n    public readonly minuteIncrement = input<number>(1);\n    public readonly defaultDate = input<string>();\n    public readonly minDate = input<string>();\n    public readonly maxDate = input<string>();\n    public readonly allowInput = input<boolean>(false);\n    public readonly allowClear = input<boolean>(true);\n    public readonly enableTime = input<boolean>(true);\n    public readonly time_24hr = input<boolean>(true);\n    public readonly noCalendar = input<boolean>(false);\n    public readonly isDisabled = input<boolean>(false);\n    public readonly isReadonly = input<boolean>(false);\n\n    /** Validation Inputs */\n\n    public readonly isRequired = input<boolean>(false);\n\n    /** Outputs */\n\n    public readonly onValueChange = output<string | string[]>();\n\n    /** Computed Signals */\n\n    public readonly isShining: Signal<boolean> = computed(\n        () => this.shining() || this.ngtForm?.shining()\n    );\n\n    public readonly isDisabledByParent: Signal<boolean> = computed(\n        () => this.ngtForm?.isDisabledState() || this.ngtSection?.isDisabledState() || this.ngtModal?.isDisabledState()\n    );\n\n    public readonly isDisabledState: Signal<boolean> = computed(\n        () => this.isDisabled() || this.isDisabledByParent()\n    );\n\n    public readonly isReadonlyState: Signal<boolean> = computed(\n        () => this.isReadonly() || this.isDisabledState()\n    );\n\n    public readonly currentValue: Signal<any> = computed(() => this.value);\n\n    public readonly shouldShowClearButton: Signal<boolean> = computed(\n        () => !this.isDisabledState() && this.allowClear() && this.currentValue()\n    );\n\n    public readonly formattedDisplayValue: Signal<string> = computed(() =>\n        this.getFormattedNativeValue()\n    );\n\n    public readonly containerClasses: Signal<string> = computed(() =>\n        this.getContainerClasses()\n    );\n\n    /** Internal Control */\n\n    public ngtStyle: NgtStylizableService;\n\n    public readonly dateConfig: WritableSignal<FlatpickrOptions> = signal(null);\n    public readonly nativeValue: WritableSignal<any> = signal(null);\n\n    private readonly formControlHasErrors: WritableSignal<boolean> = signal(false);\n    private readonly formControlIsDirty: WritableSignal<boolean> = signal(false);\n\n    private lastInputedDateString: string;\n    private subscriptions: Subscription[] = [];\n\n    public constructor(\n        @Self() @Optional()\n        private ngtStylizableDirective: NgtStylizableDirective,\n\n        @Optional() @SkipSelf()\n        private ngtForm: NgtReactiveFormComponent,\n\n        @Optional() @SkipSelf()\n        private ngtSection: NgtSectionComponent,\n\n        @Optional() @SkipSelf()\n        private ngtModal: NgtModalComponent,\n\n        private formatterService: NgtReactiveDateFormatterService,\n\n        protected override injector: Injector,\n    ) {\n        super();\n\n        this.setupNgtStylizable();\n\n        this.registerEffects();\n    }\n\n    public ngOnInit(): void {\n        this.setupDateConfig();\n    }\n\n    public ngAfterViewInit(): void {\n        this.formControl = this.getControl();\n\n        this.setupComponent();\n    }\n\n    public ngOnDestroy(): void {\n        this.evDatePicker?.flatpickr?.['calendarContainer']?.remove();\n\n        this.destroySubscriptions();\n    }\n\n    public change(value: string | string[]): void {\n        if (!value || (Array.isArray(value) && !value.length)) {\n            return this.clearInput();\n        }\n\n        if (value && this.hasChangeBetweenValues(value, this.nativeValue())) {\n            if (Array.isArray(value) && value.length == 2) {\n                const firstDate = moment(value[0]);\n                const secondDate = moment(value[1]);\n\n                if (firstDate.isValid() && secondDate.isValid()) {\n                    return this.setDateOnDatePicker(\n                        [\n                            firstDate.format(this.getMomentDateFormat()),\n                            secondDate.format(this.getMomentDateFormat())\n                        ]\n                    );\n                }\n\n                return;\n            }\n\n            const date = moment(value);\n\n            if (date.isValid()) {\n                return this.setDateOnDatePicker(\n                    date.format(this.getMomentDateFormat())\n                );\n            }\n\n            this.evDatePicker.setDateFromInput('');\n            this.clearInput();\n        }\n    }\n\n    public onNativeChange(value: any, dateStr: string, instance: any, triggerClose: boolean): void {\n        if (dateStr && this.allowInput() && !this.enableTime() && dateStr != this.lastInputedDateString) {\n            this.lastInputedDateString = dateStr;\n\n            return this.change(this.convertDateToAmericanFormat(dateStr));\n        }\n\n        if (!value || (value instanceof Object && !Object.keys(value).length)) {\n            if (triggerClose) {\n                instance.close();\n            }\n\n            return this.clearInput();\n        }\n\n        if (this.mode() == NgtReactiveDateMode.RANGE) {\n            const dateArray: string[] = [];\n\n            value.forEach(date => {\n                date = moment(date);\n\n                if (date?.isValid()) {\n                    dateArray.push(date.format(this.internalDateFormat()));\n                }\n            });\n\n            this.nativeValue.set(dateArray.length == 2 ? dateArray : []);\n        } else if (value[0]) {\n            const momentValue = moment(value[0]);\n\n            if (momentValue?.isValid()) {\n                this.nativeValue.set(momentValue.format(this.internalDateFormat()));\n            }\n        }\n\n        if (this.hasChangeBetweenValues(this.value, this.nativeValue())) {\n            this.value = this.nativeValue();\n\n            this.formControl.setValue(this.nativeValue());\n\n            this.onTouched();\n        }\n    }\n\n    public clearInput(event?: Event, clearInstance = false): void {\n        event?.stopPropagation();\n\n        if (this.hasChangeBetweenValues(this.value, '')) {\n            this.value = '';\n        }\n\n        if (this.hasChangeBetweenValues(this.nativeValue(), '')) {\n            this.nativeValue.set('');\n        }\n\n        if (this.hasChangeBetweenValues(this.formControl?.value, '')) {\n            this.formControl?.setValue('');\n        }\n\n        if (this.evDatePicker && clearInstance) {\n            this.evDatePicker.setDateFromInput('');\n        }\n    }\n\n    private setupComponent(): void {\n        this.setupValidators();\n        this.setupSubscriptions();\n\n        if (this.defaultDate() && !this.value) {\n            this.value = moment(this.defaultDate()).format(this.internalDateFormat());\n        }\n\n        if (this.allowInput() && !this.enableTime()) {\n            this.setupDateInputMask();\n        }\n    }\n\n    private setupDateConfig(): void {\n        this.dateConfig.set({\n            dateFormat: this.dateFormat(),\n            mode: this.getDateMode(),\n            minuteIncrement: this.minuteIncrement(),\n            minDate: this.minDate(),\n            maxDate: this.maxDate(),\n            time_24hr: this.time_24hr(),\n            enableTime: this.enableTime(),\n            noCalendar: this.noCalendar(),\n            allowInput: this.allowInput() && !this.enableTime(),\n            locale: this.getLocale(),\n            onChange: (selectedDates, dateStr, instance) => this.onNativeChange(selectedDates, dateStr, instance, true),\n            onClose: (selectedDates, dateStr, instance) => this.onNativeChange(selectedDates, dateStr, instance, false),\n        });\n    }\n\n    private setupSubscriptions(): void {\n        if (this.formControl) {\n            this.subscriptions.push(\n                this.formControl.events.subscribe((event) => {\n                    if (event instanceof TouchedChangeEvent) {\n                        this.touched.set(event.touched);\n                    }\n\n                    if (event instanceof ValueChangeEvent) {\n                        this.onValueChange.emit(event.value);\n                    }\n\n                    this.formControlHasErrors.set(!!this.formControl?.errors);\n                    this.formControlIsDirty.set(this.formControl?.dirty);\n                })\n            );\n        }\n    }\n\n    private registerEffects(): void {\n        effect(() => this.setupValidators());\n    }\n\n    private setupValidators(): void {\n        if (!this.formControl) {\n            return;\n        }\n\n        const syncValidators: ValidatorFn[] = [];\n\n        if (this.isRequired()) {\n            syncValidators.push(Validators.required);\n        }\n\n        this.formControl.setValidators(syncValidators);\n        this.formControl.updateValueAndValidity();\n\n        if (this.value) {\n            this.markAsDirty();\n\n            this.formControlHasErrors.set(!!this.formControl.errors);\n            this.formControlIsDirty.set(true);\n        }\n    }\n\n    private setupDateInputMask(): void {\n        if (this.locale() == NgtReactiveDateLocale.BRAZIL) {\n            return applyInputMask(this.evDatePicker.flatpickr['input'], InputMaskEnum.DATE, { mask: '99/99/9999' });\n        }\n\n        if (this.locale() == NgtReactiveDateLocale.US) {\n            return applyInputMask(this.evDatePicker.flatpickr['input'], InputMaskEnum.DATE, { mask: '9999-99-99' });\n        }\n    }\n\n    private setupNgtStylizable(): void {\n        this.ngtStyle = this.ngtStylizableDirective\n            ? this.ngtStylizableDirective.getNgtStylizableService()\n            : new NgtStylizableService();\n\n        this.ngtStyle.load(this.injector, 'NgtDate', {\n            h: 'h-10',\n            text: 'text-xs',\n            px: 'px-4',\n            py: 'py-0',\n            rounded: 'rounded',\n            fontCase: '',\n            color: {\n                text: 'text-gray-800',\n                bg: 'bg-white',\n                border: 'border-gray-400 focus:border-gray-700'\n            }\n        });\n    }\n\n    private setDateOnDatePicker(dates: string | string[]): void {\n        setTimeout(() => {\n            (<any>this.evDatePicker.flatpickr).setDate(\n                dates,\n                true,\n                this.dateFormat()\n            );\n        });\n    }\n\n    private convertDateToAmericanFormat(dateTimeString: string): string {\n        return this.formatterService.convertDateByLocale(dateTimeString, this.locale() as NgtReactiveDateLocale);\n    }\n\n    private getLocale() {\n        return this.locale() == NgtReactiveDateLocale.US\n            ? english\n            : Portuguese;\n    }\n\n    private getDateMode(): 'single' | 'range' {\n        return this.mode() == NgtReactiveDateMode.RANGE ? 'range' : 'single';\n    }\n\n    private getMomentDateFormat(): string {\n        return this.formatterService.convertFlatpickrToMomentFormat(this.dateFormat());\n    }\n\n    private getFormattedNativeValue(): string {\n        return this.formatterService.formatToDisplay(\n            this.nativeValue(),\n            this.enableTime(),\n            this.dateFormat(),\n            this.placeholder()\n        );\n    }\n\n    private getContainerClasses(): string {\n        const classes: string[] = [\n            'overflow-hidden border',\n            this.ngtStyle.compile(['h', 'color.text', 'px', 'py', 'text', 'rounded', 'color.bg', 'color.border'])\n        ];\n\n        if (this.formControlHasErrors() && (this.formControlIsDirty() || this.touched())) {\n            classes.push('border-error');\n        }\n\n        return classes.join(' ');\n    }\n\n    private hasChangeBetweenValues(a: any, b: any): boolean {\n        return JSON.stringify(a) != JSON.stringify(b);\n    }\n\n    private destroySubscriptions(): void {\n        this.subscriptions.forEach(subscription => subscription.unsubscribe());\n        this.subscriptions = [];\n    }\n}\n","@if (label() && !isShining()) {\n    <label class=\"flex mb-2 {{ ngtStyle.compile(['text', 'fontCase']) }}\">\n        <span class=\"truncate\" [title]=\"label()\">\n            {{ label() }}:\n        </span>\n\n        @if (isRequired()) {\n            <span class=\"text-red-500 font-bold text-xxs ml-1\">*</span>\n        }\n\n        @if (helpText()) {\n            <ngt-helper class=\"ml-1\" [helpTitle]=\"helpTitle()\" [iconColor]=\"helpTextColor()\"\n                [helperReverseYPosition]=\"helperReverseYPosition()\">\n                {{ helpText() }}\n            </ngt-helper>\n        }\n    </label>\n}\n\n<div [hidden]=\"isShining() || isReadonlyState()\" class=\"relative\">\n    <div [class]=\"containerClasses()\">\n        <ev-date-picker class=\"block h-full w-full\" [config]=\"dateConfig()\" [placeholder]=\"placeholder()\" #evDatePicker>\n        </ev-date-picker>\n\n        @if (shouldShowClearButton()) {\n            <div class=\"flex h-full absolute items-center right-0 top-0 w-auto cursor-pointer\"\n                [class.mr-5]=\"showCalendarIcon()\" [class.mr-2]=\"!showCalendarIcon()\" (click)=\"clearInput($event, true)\">\n                <svg class=\"fill-current text-red-400 w-4 h-4\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n                    <path\n                        d=\"M19.1 17.2l-5.3-5.3 5.3-5.3-1.8-1.8-5.3 5.4-5.3-5.3-1.8 1.7 5.3 5.3-5.3 5.3L6.7 19l5.3-5.3 5.3 5.3 1.8-1.8z\" />\n                </svg>\n            </div>\n        }\n\n        @if (showCalendarIcon()) {\n            <div class=\"flex h-full absolute items-center right-0 top-0 w-auto cursor-pointer mr-2\">\n                <svg class=\"fill-current text-gray-600 w-4 h-4\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n                    <path\n                        d=\"M19,4H17V3a1,1,0,0,0-2,0V4H9V3A1,1,0,0,0,7,3V4H5A3,3,0,0,0,2,7V19a3,3,0,0,0,3,3H19a3,3,0,0,0,3-3V7A3,3,0,0,0,19,4Zm1,15a1,1,0,0,1-1,1H5a1,1,0,0,1-1-1V12H20Zm0-9H4V7A1,1,0,0,1,5,6H7V7A1,1,0,0,0,9,7V6h6V7a1,1,0,0,0,2,0V6h2a1,1,0,0,1,1,1Z\" />\n                </svg>\n            </div>\n        }\n    </div>\n</div>\n\n@if (isShining()) {\n    <div class=\"flex\">\n        <ngt-shining class=\"h-10 w-full\"></ngt-shining>\n    </div>\n}\n\n@if (isReadonlyState()) {\n    <div class=\"w-full text-xs px-4 rounded appearance-none flex items-center border border-gray-400 {{ ngtStyle.compile(['h']) }}\"\n        [class.disabledDiv]=\"isDisabledState()\">\n        {{ formattedDisplayValue() }}\n    </div>\n}\n\n<ng-content></ng-content>\n\n<ngt-validation [control]=\"formControl\"></ngt-validation>","import { animate, state, style, transition, trigger } from '@angular/animations';\nimport { CommonModule } from '@angular/common';\nimport {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    Component,\n    computed,\n    ElementRef,\n    Injector,\n    input,\n    Optional,\n    output,\n    Self,\n    Signal,\n    SkipSelf,\n    ViewChild,\n} from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\n\nimport { NgtControlValueAccessor, NgtValueAccessorProvider } from '../../../../base/ngt-control-value-accessor';\nimport { NgtStylizableDirective } from '../../../../directives/ngt-stylizable/ngt-stylizable.directive';\nimport { NgtStylizableService } from '../../../../services/ngt-stylizable/ngt-stylizable.service';\nimport { NgtShiningModule } from '../../../ngt-shining/ngt-shining.module';\nimport { NgtSectionComponent } from '../../../ngt-section/ngt-section.component';\nimport { NgtModalComponent } from '../../../ngt-modal/ngt-modal.component';\nimport { NgtReactiveFormComponent } from '../ngt-reactive-form/ngt-reactive-form.component';\nimport { NgtHelperComponent } from '../../../ngt-helper/ngt-helper.component';\n\nexport enum NgtReactiveCheckboxMode {\n    DEFAULT = 'DEFAULT',\n    TOGGLE = 'TOGGLE',\n    SIDE_TOGGLE = 'SIDE_TOGGLE',\n    RADIO = 'RADIO'\n}\n\n@Component({\n    selector: 'ngt-reactive-checkbox',\n    templateUrl: './ngt-reactive-checkbox.component.html',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: true,\n    providers: [\n        NgtValueAccessorProvider(NgtReactiveCheckboxComponent)\n    ],\n    imports: [\n        CommonModule,\n        ReactiveFormsModule,\n        NgtShiningModule,\n        NgtHelperComponent,\n    ],\n    animations: [\n        trigger('slideLeftToRight', [\n            state('void', style({ transform: 'translateX(-4px) rotate(45deg)', opacity: 0 })),\n            transition(':enter', [\n                animate(200)\n            ])\n        ]),\n        trigger('slideRightToLeft', [\n            state('void', style({ transform: 'translateX(4px) rotate(45deg)', opacity: 0 })),\n            transition(':enter', [\n                animate(200)\n            ])\n        ])\n    ],\n})\nexport class NgtReactiveCheckboxComponent extends NgtControlValueAccessor implements AfterViewInit {\n    @ViewChild('checkboxElement', { static: true }) public checkboxElement: ElementRef;\n\n    /** Visual Inputs */\n\n    public readonly label = input<string>();\n    public readonly helpTitle = input<string>();\n    public readonly helpTextColor = input<string>('text-green-500');\n    public readonly helpText = input<string>();\n    public readonly helperAutoXReverse = input<boolean>(true);\n    public readonly shining = input<boolean>(false);\n\n    /** Behavior Inputs */\n\n    public readonly mode = input<NgtReactiveCheckboxMode>(NgtReactiveCheckboxMode.DEFAULT);\n    public readonly isDisabled = input<boolean>(false);\n    public readonly isClickDisabled = input<boolean>(false);\n\n    /** Outputs */\n\n    public readonly onValueChange = output<boolean>();\n\n    /** Computed Signals */\n\n    public readonly isDisabledByParent: Signal<boolean> = computed(\n        () => this.ngtForm?.isDisabledState() || this.ngtSection?.isDisabledState() || this.ngtModal?.isDisabledState()\n    );\n\n    public readonly isDisabledState: Signal<boolean> = computed(\n        () => this.isDisabled() || this.isDisabledByParent()\n    );\n\n    public readonly isShining: Signal<boolean> = computed(\n        () => this.shining() || this.ngtForm?.shining()\n    );\n\n    public readonly currentValue: Signal<any> = computed(() => this.value);\n\n    public readonly isToggleMode: Signal<boolean> = computed(\n        () => this.mode() == NgtReactiveCheckboxMode.TOGGLE\n    );\n\n    public readonly isSideToggleMode: Signal<boolean> = computed(\n        () => this.mode() == NgtReactiveCheckboxMode.SIDE_TOGGLE\n    );\n\n    public readonly isDefaultMode: Signal<boolean> = computed(\n        () => this.mode() == NgtReactiveCheckboxMode.DEFAULT\n    );\n\n    public readonly isRadioMode: Signal<boolean> = computed(\n        () => this.mode() == NgtReactiveCheckboxMode.RADIO\n    );\n\n    /** Other */\n\n    public ngtStyle: NgtStylizableService;\n\n    public constructor(\n        @Optional() @Self()\n        private ngtStylizableDirective: NgtStylizableDirective,\n\n        @Optional() @SkipSelf()\n        private ngtForm: NgtReactiveFormComponent,\n\n        @Optional() @SkipSelf()\n        private ngtSection: NgtSectionComponent,\n\n        @Optional() @SkipSelf()\n        private ngtModal: NgtModalComponent,\n\n        protected override injector: Injector,\n    ) {\n        super();\n\n        this.setupNgtStylizable();\n    }\n\n    public ngAfterViewInit(): void {\n        this.formControl = this.getControl();\n    }\n\n    public change(value: boolean | number | string): void {\n        if (this.hasChangeBetweenValues()) {\n            if (value == 0) {\n                value = false;\n                this.value = false;\n            }\n\n            this.setNativeValue(<boolean>value);\n        }\n    }\n\n    public onNativeChange(): void {\n        if (this.hasChangeBetweenValues()) {\n            this.value = this.getNativeValue();\n\n            this.onValueChange.emit(this.value);\n        }\n    }\n\n    private setupNgtStylizable(): void {\n        this.ngtStyle = this.ngtStylizableDirective\n            ? this.ngtStylizableDirective.getNgtStylizableService()\n            : new NgtStylizableService();\n\n        this.ngtStyle.load(this.injector, 'NgtCheckbox', {\n            h: 'h-6',\n            w: 'w-6',\n            text: 'text-sm',\n            fontCase: '',\n            color: {\n                bg: 'bg-gray-500',\n                text: 'text-gray-500',\n                border: 'border-gray-500',\n            }\n        });\n    }\n\n    private setNativeValue(value: boolean): void {\n        this.checkboxElement.nativeElement.checked = value;\n    }\n\n    private getNativeValue(): boolean {\n        return this.checkboxElement.nativeElement.checked;\n    }\n\n    private hasChangeBetweenValues(): boolean {\n        return this.getNativeValue() !== this.value;\n    }\n}\n","<label class=\"flex items-center {{ isDisabledState() ? 'cursor-not-allowed opacity-50' : 'cursor-pointer' }}\"\n    [class.flex-col]='isToggleMode()' style=\"max-width: max-content;\">\n    <input class=\"hidden\" type=\"checkbox\" [disabled]=\"isDisabledState() || isClickDisabled()\"\n        (change)=\"onNativeChange()\" #checkboxElement>\n\n    @if (isToggleMode() && label()) {\n        <span class=\"flex\">\n            <span class=\"{{ ngtStyle.compile(['text', 'fontCase']) }} mb-2\">{{ label() }}</span>\n\n            @if (helpText()) {\n                <ngt-helper [helpTitle]=\"helpTitle()\" [iconColor]=\"helpTextColor()\" [autoXReverse]=\"helperAutoXReverse()\"\n                    class=\"ml-1\">\n                    {{ helpText() }}\n                </ngt-helper>\n            }\n        </span>\n    }\n\n    @if (isDefaultMode()) {\n        <div style=\"transition: background-color .2s ease-out\" class=\"{{ currentValue() ? ngtStyle.compile(['color.bg']) : 'bg-white' }}  {{ ngtStyle.compile(['h', 'w']) }}\n                        shadow rounded border border-gray-400 {{ !isShining() ? 'flex justify-center' : 'hidden' }}\">\n            <svg class=\"fill-current self-center text-white pointer-events-none\" xmlns=\"http://www.w3.org/2000/svg\"\n                viewBox=\"0 0 20 20\">\n                <path d=\"M0 11l2-2 5 5L18 3l2 2L7 18z\" />\n            </svg>\n        </div>\n    }\n\n    @if (isRadioMode()) {\n        <div style=\"transition: background-color .2s ease-out\"\n            class=\"{{ currentValue() ? ngtStyle.compile(['color.border', 'color.text']) : 'border-gray-500' }}\n                        shadow w-6 h-6 rounded-full border-2 border-gray-400 {{ !isShining() ? 'flex justify-center' : 'hidden' }}\">\n            @if (currentValue()) {\n                <svg class=\"fill-current self-center h-3\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 29.107 29.107\">\n                    <path\n                        d=\"M14.554 0C6.561 0 0 6.562 0 14.552c0 7.996 6.561 14.555 14.554 14.555 7.996 0 14.553-6.559 14.553-14.555C29.106 6.562 22.55 0 14.554 0z\" />\n                </svg>\n            }\n        </div>\n    }\n\n    @if (isToggleMode() || isSideToggleMode()) {\n        <div class=\"shadow w-14 h-7 rounded-full border border-gray-400 {{ isShining() ? 'hidden' : 'flex' }}\"\n            [class.justify-end]=\"currentValue()\" style=\"padding: 1px;\">\n            @if (currentValue()) {\n                <div class=\"flex text-sm text-white {{ ngtStyle.compile(['color.bg']) }} pointer-events-none rounded-full px-1.5 py-2\"\n                    @slideLeftToRight>\n                    <svg class=\"fill-current self-center\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\">\n                        <path d=\"M0 11l2-2 5 5L18 3l2 2L7 18z\" />\n                    </svg>\n                </div>\n            }\n\n            @if (!currentValue()) {\n                <div class=\"flex text-xl text-white bg-gray-300 pointer-events-none rounded-full px-1 py-3\" @slideRightToLeft>\n                    <svg class=\"fill-current self-center\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n                        <path class=\"heroicon-ui\"\n                            d=\"M16.24 14.83a1 1 0 0 1-1.41 1.41L12 13.41l-2.83 2.83a1 1 0 0 1-1.41-1.41L10.59 12 7.76 9.17a1 1 0 0 1 1.41-1.41L12 10.59l2.83-2.83a1 1 0 0 1 1.41 1.41L13.41 12l2.83 2.83z\" />\n                    </svg>\n                </div>\n            }\n        </div>\n    }\n\n    @if (label() && !isShining() && !isToggleMode()) {\n        <span class=\"{{ ngtStyle.compile(['text', 'fontCase']) }} ml-2\">{{ label() }}</span>\n\n        @if (helpText()) {\n            <ngt-helper [helpTitle]=\"helpTitle()\" [iconColor]=\"helpTextColor()\" [autoXReverse]=\"helperAutoXReverse()\"\n                class=\"ml-1\">\n                {{ helpText() }}\n            </ngt-helper>\n        }\n    }\n</label>\n\n@if (isShining()) {\n    <div class=\"flex\">\n        <ngt-shining class=\"w-16 h-12\"></ngt-shining>\n    </div>\n}","import { ChangeDetectionStrategy, Component, output, OutputEmitterRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NgtReactiveRadioButtonComponent } from '../ngt-reactive-radio-button.component';\n\n@Component({\n    selector: '[ngt-reactive-radio-button-container]',\n    templateUrl: './ngt-reactive-radio-button-container.component.html',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: true,\n    imports: [\n        CommonModule,\n    ],\n})\nexport class NgtReactiveRadioButtonContainerComponent {\n    public readonly onActiveRadioButtonChange: OutputEmitterRef<NgtReactiveRadioButtonComponent> = output<NgtReactiveRadioButtonComponent>();\n\n    public setActiveRadioButton(activeRadioButton: NgtReactiveRadioButtonComponent): void {\n        this.onActiveRadioButtonChange.emit(activeRadioButton);\n    }\n}\n","<ng-content></ng-content>","import {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    Component,\n    computed,\n    ElementRef,\n    Injector,\n    input,\n    OnDestroy,\n    Optional,\n    output,\n    OutputRefSubscription,\n    Self,\n    Signal,\n    SkipSelf,\n    ViewChild,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\n\nimport { Subscription } from 'rxjs';\nimport { NgtControlValueAccessor, NgtValueAccessorProvider } from '../../../../base/ngt-control-value-accessor';\nimport { NgtStylizableDirective } from '../../../../directives/ngt-stylizable/ngt-stylizable.directive';\nimport { NgtStylizableService } from '../../../../services/ngt-stylizable/ngt-stylizable.service';\nimport { NgtReactiveFormComponent } from '../ngt-reactive-form/ngt-reactive-form.component';\nimport { NgtSectionComponent } from '../../../ngt-section/ngt-section.component';\nimport { NgtReactiveRadioButtonContainerComponent } from './ngt-reactive-radio-button-container/ngt-reactive-radio-button-container.component';\nimport { NgtModalComponent } from '../../../ngt-modal/ngt-modal.component';\nimport { NgtShiningModule } from '../../../ngt-shining/ngt-shining.module';\nimport { NgtSvgModule } from '../../../ngt-svg/ngt-svg.module';\nimport { uuid } from '../../../../helpers/uuid';\nimport { NgtHelperComponent } from '../../../ngt-helper/ngt-helper.component';\n\n@Component({\n    selector: 'ngt-reactive-radio-button',\n    templateUrl: './ngt-reactive-radio-button.component.html',\n    styleUrls: ['./ngt-reactive-radio-button.component.css'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: true,\n    providers: [\n        NgtValueAccessorProvider(NgtReactiveRadioButtonComponent),\n    ],\n    imports: [\n        CommonModule,\n        ReactiveFormsModule,\n        NgtShiningModule,\n        NgtSvgModule,\n        NgtHelperComponent,\n    ],\n})\nexport class NgtReactiveRadioButtonComponent extends NgtControlValueAccessor implements AfterViewInit, OnDestroy {\n    @ViewChild('radioBtnElement', { static: true }) public radioBtnElement: ElementRef;\n\n    /** Visual Inputs */\n\n    public readonly label = input<string>();\n    public readonly shining = input<boolean>(false);\n    public readonly selectedHexColor = input<string>();\n\n    public readonly helpTitle = input<string>();\n    public readonly helpTextColor = input<string>('text-green-500');\n    public readonly helpText = input<string>();\n    public readonly helperReverseYPosition = input<boolean>(false);\n    public readonly helperAutoXReverse = input<boolean>(true);\n\n    /** Behavior Inputs */\n\n    public readonly id = input<string>();\n    public readonly isSelectable = input<boolean>(true);\n    public readonly isDisabled = input<boolean>(false);\n\n    /** Outputs */\n\n    public readonly onValueChange = output<boolean>();\n\n    /** Computed Signals */\n\n    public readonly isShining: Signal<boolean> = computed(\n        () => this.shining() || this.ngtForm?.shining()\n    );\n\n    public readonly isDisabledByParent: Signal<boolean> = computed(\n        () => this.ngtForm?.isDisabledState() || this.ngtSection?.isDisabledState() || this.ngtModal?.isDisabledState()\n    );\n\n    public readonly isDisabledState: Signal<boolean> = computed(\n        () => this.isDisabled() || this.isDisabledByParent()\n    );\n\n    public readonly currentValue: Signal<any> = computed(() => this.value);\n\n    public readonly canInteract: Signal<boolean> = computed(\n        () => !this.isDisabledState() && this.isSelectable()\n    );\n\n    public readonly labelClasses: Signal<string> = computed(() =>\n        this.getLabelClasses()\n    );\n\n    public readonly radioStyle: Signal<string> = computed(() =>\n        this.getRadioStyle()\n    );\n\n    public readonly radioClasses: Signal<string> = computed(() =>\n        this.getRadioClasses()\n    );\n\n    /** Internal Control */\n\n    public ngtStyle: NgtStylizableService;\n\n    private uuid: string = uuid();\n    private subscriptions: Array<Subscription | OutputRefSubscription> = [];\n\n    public constructor(\n        @Self() @Optional()\n        private ngtStylizableDirective: NgtStylizableDirective,\n\n        @Optional() @SkipSelf()\n        private ngtForm: NgtReactiveFormComponent,\n\n        @Optional() @SkipSelf()\n        private ngtSection: NgtSectionComponent,\n\n        @Optional() @SkipSelf()\n        private ngtModal: NgtModalComponent,\n\n        @Optional() @SkipSelf()\n        private container: NgtReactiveRadioButtonContainerComponent,\n\n        protected override injector: Injector,\n    ) {\n        super();\n\n        this.setupNgtStylizable();\n    }\n\n    public ngAfterViewInit(): void {\n        this.formControl = this.getControl();\n\n        this.setupSubscriptions();\n    }\n\n    public ngOnDestroy(): void {\n        this.destroySubscritpions();\n    }\n\n    public onNativeChange(): void {\n        const value: boolean = this.getNativeValue();\n\n        if (this.value !== value) {\n            this.value = value;\n        }\n\n        if (this.formControl?.value !== value) {\n            this.formControl?.setValue(value);\n        }\n\n        if (value && this.container) {\n            this.container.setActiveRadioButton(this);\n        }\n    }\n\n    public change(value: boolean): void {\n        this.onValueChange.emit(value);\n\n        if (this.getNativeValue() !== value) {\n            this.setNativeValue(value);\n        }\n    }\n\n    public markAsActive(): void {\n        this.change(true);\n        this.onNativeChange();\n    }\n\n    private setupSubscriptions(): void {\n        if (this.container) {\n            const onActiveRadioButtonChange = this.container.onActiveRadioButtonChange\n                .subscribe((activeRadioButton: NgtReactiveRadioButtonComponent) => {\n                    const isActive = activeRadioButton.uuid === this.uuid;\n\n                    if (!isActive && this.value) {\n                        this.value = false;\n                        this.formControl?.setValue(false);\n                    }\n                });\n\n            this.subscriptions.push(onActiveRadioButtonChange);\n        }\n    }\n\n    private setupNgtStylizable(): void {\n        this.ngtStyle = this.ngtStylizableDirective\n            ? this.ngtStylizableDirective.getNgtStylizableService()\n            : new NgtStylizableService();\n\n        this.ngtStyle.load(this.injector, 'NgtRadioButton', {\n            color: {\n                text: 'text-gray-500',\n                border: 'border-gray-500',\n            }\n        });\n    }\n\n    private setNativeValue(value: boolean): void {\n        this.radioBtnElement.nativeElement.checked = value;\n    }\n\n    private getNativeValue(): boolean {\n        return this.radioBtnElement.nativeElement.checked;\n    }\n\n    private getLabelClasses(): string {\n        const classes: string[] = ['inline-flex items-center'];\n\n        if (this.isDisabledState() || !this.isSelectable()) {\n            classes.push('cursor-not-allowed opacity-50');\n        } else {\n            classes.push('cursor-pointer');\n        }\n\n        return classes.join(' ');\n    }\n\n    private getRadioStyle(): string {\n        let baseStyle = 'width: 20px; height: 20px;';\n\n        if (this.selectedHexColor()) {\n            baseStyle += ` color: ${this.selectedHexColor()}`;\n        }\n\n        return baseStyle;\n    }\n\n    private getRadioClasses(): string {\n        const classes: string[] = [\n            'shadow rounded-full border text-sm'\n        ];\n\n        if (!this.isShining()) {\n            classes.push('flex justify-center items-center');\n        } else {\n            classes.push('hidden');\n        }\n\n        if (this.currentValue()) {\n            classes.push(this.ngtStyle.compile(['color.border', 'color.text']));\n        } else {\n            classes.push('border-gray-500');\n        }\n\n        return classes.join(' ');\n    }\n\n    private destroySubscritpions(): void {\n        this.subscriptions.forEach(subscription => subscription.unsubscribe());\n        this.subscriptions = [];\n    }\n}\n","<label [class]=\"labelClasses()\">\n    <input class=\"hidden\" type=\"radio\" [disabled]='isDisabledState() || !isSelectable()' (change)=\"onNativeChange()\"\n        #radioBtnElement>\n\n    <div [class]=\"radioClasses()\" [style]=\"radioStyle()\">\n        <div style=\"width: 14px; height: 14px;\">\n            @if (currentValue()) {\n                <svg class=\"fill-current\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 29.107 29.107\">\n                    <path\n                        d=\"M14.554 0C6.561 0 0 6.562 0 14.552c0 7.996 6.561 14.555 14.554 14.555 7.996 0 14.553-6.559 14.553-14.555C29.106 6.562 22.55 0 14.554 0z\" />\n                </svg>\n            }\n        </div>\n    </div>\n\n    @if (label() && !isShining()) {\n        <span class=\"text-xs ml-2\" [class.line-through]='!isSelectable()'>\n            {{ label() }}\n        </span>\n    }\n\n    @if (helpText()) {\n        <ngt-helper class=\"ml-1\" [helpTitle]=\"helpTitle()\" [iconColor]=\"helpTextColor()\"\n            [autoXReverse]=\"helperAutoXReverse()\" [helperReverseYPosition]=\"helperReverseYPosition()\">\n            {{ helpText() }}\n        </ngt-helper>\n    }\n</label>\n\n@if (isShining()) {\n    <div class=\"flex\">\n        <ngt-shining class=\"w-16 h-12\"></ngt-shining>\n    </div>\n}","import { Injectable } from '@angular/core';\nimport { ValidatorFn, Validators } from '@angular/forms';\n\nexport interface NgtDropzoneValidationConfig {\n    minItems: number;\n    isRequired: boolean;\n    customSyncValidators?: ValidatorFn[];\n}\n\n@Injectable()\nexport class NgtReactiveDropzoneValidationService {\n    public getSyncValidators(config: NgtDropzoneValidationConfig): ValidatorFn[] {\n        const validators: ValidatorFn[] = [];\n\n        if (config.minItems) {\n            validators.push(Validators.minLength(config.minItems));\n        }\n\n        if (config.isRequired) {\n            validators.push(Validators.required);\n        }\n\n        if (config.customSyncValidators?.length) {\n            validators.push(...config.customSyncValidators);\n        }\n\n        return validators;\n    }\n}\n","import { Injectable } from '@angular/core';\nimport { forkJoin, lastValueFrom, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { NgtAttachmentHttpService } from '../../../../../services/http/ngt-attachment-http.service';\nimport { NgtDropzonePreviewType } from '../../../../../meta/ngt-dropzone.meta';\n\nexport interface UploadFilesResult {\n    uploadedFiles: any[];\n    uploadedAttachments: any[];\n    unacceptedFiles: File[];\n}\n\n@Injectable()\nexport class NgtReactiveDropzoneFileService {\n    public constructor(\n        private ngtAttachmentHttpService: NgtAttachmentHttpService\n    ) { }\n\n    public async uploadFiles(\n        files: File[],\n        remoteResource: any,\n        unacceptedFileType?: string\n    ): Promise<UploadFilesResult> {\n        const uploadedFiles: any[] = [];\n        const uploadedAttachments: any[] = [];\n        const observables: Observable<void>[] = [];\n        const unacceptedFiles: File[] = [];\n\n        files.forEach(file => {\n            if (unacceptedFileType && file.type.includes(unacceptedFileType)) {\n                unacceptedFiles.push(file);\n\n                return;\n            }\n\n            observables.push(\n                this.ngtAttachmentHttpService.upload(file, remoteResource)\n                    .pipe(\n                        map((response: any) => {\n                            if (response?.data) {\n                                if (response.data?.attributes?.data) {\n                                    file['url'] = response.data.attributes.data.url;\n                                }\n\n                                uploadedFiles.push({\n                                    id: response.data.id,\n                                    size: file.size,\n                                    file: file\n                                });\n\n                                response.data['loaded'] = true;\n\n                                uploadedAttachments.push(response.data);\n                            }\n                        })\n                    )\n            );\n        });\n\n        if (observables.length) {\n            await lastValueFrom(forkJoin(observables));\n        }\n\n        return { uploadedFiles, uploadedAttachments, unacceptedFiles };\n    }\n\n    public async loadFilePreview(attachments: any[]): Promise<any[]> {\n        const loadedResources: any[] = [];\n        const observables: Observable<void>[] = [];\n\n        attachments.forEach((attachment: any) => {\n            if (!(attachment instanceof File) && !attachment.loaded) {\n                attachment['loaded'] = true;\n\n                observables.push(\n                    this.ngtAttachmentHttpService.preview(attachment)\n                        .pipe(\n                            map((response: any) => {\n                                loadedResources.push({\n                                    id: response.data.getApiId(),\n                                    file: response.data.getAttribute('file')\n                                });\n                            })\n                        )\n                );\n            }\n        });\n\n        if (observables.length) {\n            await lastValueFrom(forkJoin(observables));\n        }\n\n        return loadedResources;\n    }\n\n    public downloadFile(attachment: any): Observable<any> {\n        return this.ngtAttachmentHttpService.download(attachment);\n    }\n\n    public isImage(resource: any, previewType: NgtDropzonePreviewType): boolean {\n        return previewType === NgtDropzonePreviewType.IMAGE\n            || (\n                resource.file?.type?.includes('image')\n                && !resource.file?.type?.includes('dwg')\n            );\n    }\n\n    public isVideo(resource: any, previewType: NgtDropzonePreviewType): boolean {\n        return previewType === NgtDropzonePreviewType.VIDEO\n            || resource.file?.type?.includes('video');\n    }\n\n    public isAudio(resource: any): boolean {\n        return resource.file?.type?.includes('audio');\n    }\n\n    public isFile(resource: any, previewType: NgtDropzonePreviewType): boolean {\n        return !this.isImage(resource, previewType)\n            && !this.isAudio(resource)\n            && !this.isVideo(resource, previewType);\n    }\n\n    public getFormattedFileSize(resource: any): string {\n        if (!resource) {\n            return '0 Kb';\n        }\n\n        let size = resource.size || resource.fileSize;\n\n        if (!size) {\n            size = resource.file?.size || 0;\n        }\n\n        const sizeInBytes = parseFloat(size);\n\n        if (sizeInBytes > 1000000) {\n            return (sizeInBytes / 1000000).toFixed(2) + ' Mb';\n        }\n\n        return Math.round(sizeInBytes / 1000) + ' Kb';\n    }\n\n    public resetFilesLoad(files: any[]): void {\n        if (Array.isArray(files)) {\n            files.forEach(file => {\n                if (file) {\n                    file['loaded'] = false;\n                }\n            });\n        }\n    }\n}\n","import { Injectable } from '@angular/core';\nimport { NgxDropzoneChangeEvent } from 'ngx-dropzone';\nimport { NgtDropzoneErrorType } from '../../../../../meta/ngt-dropzone.meta';\n\nexport interface ErrorValidationResult {\n    hasError: boolean;\n    errorType?: NgtDropzoneErrorType;\n}\n\n@Injectable()\nexport class NgtReactiveDropzoneErrorService {\n    public validateRejectedFiles(event: NgxDropzoneChangeEvent): ErrorValidationResult {\n        if (!event.rejectedFiles.length) {\n            return { hasError: false };\n        }\n\n        for (const rejectedFile of event.rejectedFiles as any) {\n            if (rejectedFile.reason === 'size') {\n                return { hasError: true, errorType: NgtDropzoneErrorType.SIZE };\n            }\n\n            if (rejectedFile.reason === 'no_multiple') {\n                return { hasError: true, errorType: NgtDropzoneErrorType.NO_MULTIPLE };\n            }\n\n            if (rejectedFile.reason === 'type') {\n                return { hasError: true, errorType: NgtDropzoneErrorType.TYPE };\n            }\n        }\n\n        return { hasError: true, errorType: NgtDropzoneErrorType.DEFAULT };\n    }\n\n    public validateItemsLimit(\n        addedFilesCount: number,\n        currentFilesCount: number,\n        itemsLimit: number\n    ): ErrorValidationResult {\n        if ((addedFilesCount + currentFilesCount) > itemsLimit) {\n            return { hasError: true, errorType: NgtDropzoneErrorType.ITEMS_LIMIT };\n        }\n\n        return { hasError: false };\n    }\n\n    public shouldClearExistingResources(\n        itemsLimit: number,\n        addedFilesCount: number,\n        currentFilesCount: number\n    ): boolean {\n        return itemsLimit === 1\n            && addedFilesCount === itemsLimit\n            && currentFilesCount === itemsLimit;\n    }\n}\n","import { Injectable } from '@angular/core';\nimport Viewer from 'viewerjs';\n\nexport interface ViewerConfig {\n    navbar?: boolean;\n    toolbar?: {\n        zoomIn?: boolean;\n        zoomOut?: boolean;\n        reset?: boolean;\n        rotateLeft?: boolean;\n        rotateRight?: boolean;\n        prev?: boolean;\n        next?: boolean;\n    };\n    initialViewIndex?: number;\n}\n\n@Injectable()\nexport class NgtReactiveDropzoneViewerService {\n    private readonly defaultConfig: ViewerConfig = {\n        navbar: true,\n        toolbar: {\n            zoomIn: true,\n            zoomOut: true,\n            reset: true,\n            rotateLeft: true,\n            rotateRight: true,\n            prev: true,\n            next: true,\n        }\n    };\n\n    public createImagePreview(resources: any[], filterCallback: (resource: any) => boolean): HTMLElement {\n        const images = resources.filter(filterCallback);\n        const imagesDiv = document.createElement('div');\n\n        images.forEach((image) => {\n            const imageElement = document.createElement('img');\n\n            imageElement.src = image.file.url;\n\n            imagesDiv.appendChild(imageElement);\n        });\n\n        return imagesDiv;\n    }\n\n    public showViewer(\n        element: HTMLElement,\n        index?: number,\n        onHidden?: () => void,\n        customConfig?: Partial<ViewerConfig>\n    ): Viewer {\n        const config = {\n            ...this.defaultConfig,\n            ...customConfig\n        };\n\n        if (index !== null && index !== undefined) {\n            config.initialViewIndex = index;\n        }\n\n        const viewer = new Viewer(\n            element,\n            {\n                ...config,\n                hidden: () => {\n                    if (onHidden) {\n                        onHidden();\n                    }\n\n                    viewer.destroy();\n                }\n            }\n        );\n\n        viewer.show();\n\n        return viewer;\n    }\n}\n","import { Injectable, signal, WritableSignal } from '@angular/core';\n\n@Injectable()\nexport class NgtReactiveDropzoneStateService {\n    // Visual State\n    public readonly dropzoneHeight: WritableSignal<string> = signal('180px');\n    public readonly showFileViewer: WritableSignal<boolean> = signal(false);\n\n    // Data State\n    public readonly uploadedResources: WritableSignal<any[]> = signal([]);\n    public readonly nativeValue: WritableSignal<any[]> = signal([]);\n\n    // Control State\n    public readonly forceDisableClick: WritableSignal<boolean> = signal(false);\n    public readonly componentReady: WritableSignal<boolean> = signal(false);\n    public readonly loading: WritableSignal<boolean> = signal(false);\n    public readonly shining: WritableSignal<boolean> = signal(false);\n\n    public reset(): void {\n        this.dropzoneHeight.set('180px');\n        this.uploadedResources.set([]);\n        this.nativeValue.set([]);\n        this.forceDisableClick.set(false);\n        this.loading.set(false);\n        this.shining.set(false);\n        this.showFileViewer.set(false);\n    }\n}\n","import {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    computed,\n    effect,\n    ElementRef,\n    Injector,\n    input,\n    Optional,\n    output,\n    Signal,\n    signal,\n    SkipSelf,\n    ViewChild,\n    WritableSignal,\n} from '@angular/core';\nimport { AsyncValidatorFn, ReactiveFormsModule, ValidatorFn } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { NgxDropzoneChangeEvent, NgxDropzoneComponent, NgxDropzoneModule } from 'ngx-dropzone';\n\nimport { NgtControlValueAccessor, NgtValueAccessorProvider } from '../../../../base/ngt-control-value-accessor';\nimport { uuid } from '../../../../helpers/uuid';\nimport { NgtDropzoneErrorType, NgtDropzoneFile, NgtDropzonePreviewType } from '../../../../meta/ngt-dropzone.meta';\nimport { NgtReactiveFormComponent } from '../ngt-reactive-form/ngt-reactive-form.component';\nimport { NgtSectionComponent } from '../../../ngt-section/ngt-section.component';\nimport { NgtModalComponent } from '../../../ngt-modal/ngt-modal.component';\nimport { NgtValidationModule } from '../../../ngt-validation/ngt-validation.module';\nimport { NgtReactiveDropzoneValidationService } from './services/ngt-reactive-dropzone-validation.service';\nimport { NgtReactiveDropzoneFileService, UploadFilesResult } from './services/ngt-reactive-dropzone-file.service';\nimport { ErrorValidationResult, NgtReactiveDropzoneErrorService } from './services/ngt-reactive-dropzone-error.service';\nimport { NgtReactiveDropzoneViewerService } from './services/ngt-reactive-dropzone-viewer.service';\nimport { NgtReactiveDropzoneStateService } from './services/ngt-reactive-dropzone-state.service';\nimport { CustomDropzonePreviewComponent } from '../../../shared/custom-dropzone-preview/custom-dropzone-preview.component';\nimport { NgtDropzoneFileViewerComponent } from '../../../shared/ngt-dropzone-file-viewer/ngt-dropzone-file-viewer.component';\nimport { NgtDropzoneViewComponent } from '../../../shared/ngt-dropzone-view/ngt-dropzone-view.component';\nimport { NgtHelperComponent } from '../../../ngt-helper/ngt-helper.component';\n\n@Component({\n    selector: 'ngt-reactive-dropzone',\n    templateUrl: './ngt-reactive-dropzone.component.html',\n    styleUrls: ['./ngt-reactive-dropzone.component.css'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: true,\n    providers: [\n        NgtValueAccessorProvider(NgtReactiveDropzoneComponent),\n\n        NgtReactiveDropzoneValidationService,\n        NgtReactiveDropzoneFileService,\n        NgtReactiveDropzoneErrorService,\n        NgtReactiveDropzoneViewerService,\n        NgtReactiveDropzoneStateService,\n    ],\n    imports: [\n        CommonModule,\n        ReactiveFormsModule,\n        NgxDropzoneModule,\n        NgtValidationModule,\n        NgtHelperComponent,\n\n        CustomDropzonePreviewComponent,\n        NgtDropzoneFileViewerComponent,\n        NgtDropzoneViewComponent,\n    ],\n})\nexport class NgtReactiveDropzoneComponent extends NgtControlValueAccessor implements AfterViewInit {\n    @ViewChild('container', { static: false }) public container: ElementRef;\n    @ViewChild(NgxDropzoneComponent, { static: true }) public ngxDropzone: NgxDropzoneComponent;\n    @ViewChild(NgtDropzoneFileViewerComponent, { static: true }) public fileViewer: NgtDropzoneFileViewerComponent;\n\n    /** Visual Inputs */\n\n    public readonly label = input<string>();\n    public readonly placeholder = input<string>('');\n    public readonly helpTextColor = input<string>('text-green-500');\n    public readonly helpText = input<string>();\n    public readonly helpTitle = input<string>();\n\n    /** Behavior Inputs */\n\n    public readonly resources = input<Array<NgtDropzoneFile>>([]);\n    public readonly multipleSelection = input<boolean>(false);\n    public readonly itemsLimit = input<number>();\n    public readonly showFileName = input<boolean>(false);\n    public readonly disableClick = input<boolean>(false);\n    public readonly isDisabled = input<boolean>(false);\n    public readonly viewMode = input<boolean>(false);\n    public readonly removable = input<boolean>(false);\n    public readonly canDownloadFile = input<boolean>(true);\n    public readonly verticalExpandable = input<boolean>(false);\n    public readonly hideNgxDropzone = input<boolean>(false);\n    public readonly acceptedFiles = input<string>('*'); /** Mime type */\n    public readonly unacceptedFiles = input<string>(); /** Mime type */\n    public readonly maxFileSize = input<number>(); /** Bytes */\n    public readonly previewType = input<NgtDropzonePreviewType>(NgtDropzonePreviewType.DEFAULT);\n    public readonly remoteResource = input<any>();\n\n    /** Validation Inputs */\n\n    public readonly minItems = input<number>();\n    public readonly isRequired = input<boolean>(false);\n    public readonly customSyncValidators = input<ValidatorFn[]>();\n    public readonly customAsyncValidators = input<AsyncValidatorFn[]>();\n\n    /** Outputs */\n\n    public readonly onFileSelected = output<NgxDropzoneChangeEvent>();\n    public readonly onFileSelectError = output<NgtDropzoneErrorType>();\n    public readonly onFileUploadFail = output<any>();\n    public readonly onFileRemoved = output<any>();\n    public readonly onFileUploadInit = output<void>();\n    public readonly onFileUploaded = output<void>();\n    public readonly onFilePreviewLoaded = output<void>();\n    public readonly onValueChange = output<any>();\n\n    /** Computed Signals */\n\n    public readonly isDisabledByParent: Signal<boolean> = computed(\n        () => this.ngtForm?.isDisabledState() || this.ngtSection?.isDisabledState() || this.ngtModal?.isDisabledState()\n    );\n\n    public readonly isDisabledState: Signal<boolean> = computed(\n        () => this.isDisabled() || this.isDisabledByParent()\n    );\n\n    public readonly shouldDisableClick: Signal<boolean> = computed(\n        () => this.disableClick() || this.stateService.forceDisableClick()\n    );\n\n    public readonly currentValue: Signal<any> = computed(() => this.value);\n\n    public readonly isLoading: Signal<boolean> = computed(\n        () => this.stateService.loading()\n    );\n\n    public readonly isShining: Signal<boolean> = computed(\n        () => this.stateService.shining() || this.ngtForm?.shining()\n    );\n\n    /** File Viewer */\n\n    public showFileViewer: WritableSignal<boolean> = signal(false);\n    public fileViewerUrl: WritableSignal<string> = signal('');\n    public fileViewerFileName: WritableSignal<string> = signal('');\n    public fileViewerFileSize: WritableSignal<number> = signal(0);\n\n    /** Internal Control */\n\n    public readonly ngxElementId: string = uuid();\n\n    public constructor(\n        @Optional() @SkipSelf()\n        private ngtForm: NgtReactiveFormComponent,\n\n        @Optional() @SkipSelf()\n        private ngtSection: NgtSectionComponent,\n\n        @Optional() @SkipSelf()\n        private ngtModal: NgtModalComponent,\n\n        private validationService: NgtReactiveDropzoneValidationService,\n        private fileService: NgtReactiveDropzoneFileService,\n        private errorService: NgtReactiveDropzoneErrorService,\n        private viewerService: NgtReactiveDropzoneViewerService,\n        private stateService: NgtReactiveDropzoneStateService,\n\n        private changeDetector: ChangeDetectorRef,\n        protected override injector: Injector,\n    ) {\n        super();\n\n        this.registerEffects();\n    }\n\n    public get dropzoneHeight(): string {\n        return this.stateService.dropzoneHeight();\n    }\n\n    public get uploadedResources(): any[] {\n        return this.stateService.uploadedResources();\n    }\n\n    public ngAfterViewInit(): void {\n        this.formControl = this.getControl();\n\n        this.setupComponent();\n\n        setTimeout(() => this.stateService.componentReady.set(true), 500);\n    }\n\n    public onSelectFiles(event: NgxDropzoneChangeEvent): void {\n        const errorResult: ErrorValidationResult = this.errorService.validateRejectedFiles(event);\n\n        if (errorResult.hasError) {\n            return this.onFileSelectError.emit(errorResult.errorType);\n        }\n\n        const limit = this.itemsLimit();\n\n        if (limit) {\n            const shouldClearExistingResources = this.errorService.shouldClearExistingResources(\n                limit,\n                event.addedFiles?.length || 0,\n                this.stateService.uploadedResources().length\n            );\n\n            if (shouldClearExistingResources) {\n                this.stateService.uploadedResources.set([]);\n            }\n\n            const limitResult: ErrorValidationResult = this.errorService.validateItemsLimit(\n                event.addedFiles?.length || 0,\n                this.stateService.uploadedResources().length,\n                limit\n            );\n\n            if (limitResult.hasError) {\n                return this.onFileSelectError.emit(limitResult.errorType);\n            }\n        }\n\n        this.onFileSelected.emit(event);\n\n        this.uploadFiles(event.addedFiles);\n    }\n\n    public onImageClick(element: HTMLElement, index?: number): void {\n        if (!this.viewMode()) {\n            this.stateService.forceDisableClick.set(true);\n        }\n\n        this.viewerService.showViewer(\n            element,\n            index,\n            () => this.stateService.forceDisableClick.set(false)\n        );\n    }\n\n    public onFileClick(url: string, name: string, size: number): void {\n        this.stateService.forceDisableClick.set(true);\n        this.showFileViewer.set(true);\n\n        this.fileViewerUrl.set(url);\n        this.fileViewerFileName.set(name);\n        this.fileViewerFileSize.set(size);\n\n        this.fileViewer.init();\n    }\n\n    public onCloseFileViewer(): void {\n        this.showFileViewer.set(false);\n        this.stateService.forceDisableClick.set(false);\n    }\n\n    public onRemove(resource: any): void {\n        this.stateService.uploadedResources.set(\n            this.stateService.uploadedResources().filter(r => r !== resource)\n        );\n\n        this.stateService.nativeValue.set(\n            this.stateService.nativeValue().filter(element => element.id !== resource.id)\n        );\n\n        this.onNativeChange(this.stateService.nativeValue());\n        this.onFileRemoved.emit(resource);\n    }\n\n    public reset(): void {\n        this.stateService.reset();\n        this.value = [];\n        this.setupComponent();\n    }\n\n    public openFileSelector(): void {\n        document.getElementById(this.ngxElementId)?.click();\n    }\n\n    public imagePreview(index: number): void {\n        const imagesDiv = this.viewerService.createImagePreview(\n            this.stateService.uploadedResources(),\n            (resource) => this.fileService.isImage(resource, this.previewType())\n        );\n\n        this.onImageClick(imagesDiv, index);\n    }\n\n    public onNativeChange(value: any): void {\n        this.stateService.nativeValue.set(value ?? []);\n\n        this.onValueChange.emit(value);\n\n        if (this.hasChangesBetweenValues(this.value, this.stateService.nativeValue())) {\n            this.onTouched();\n\n            this.value = this.stateService.nativeValue();\n        }\n    }\n\n    public change(value: any): void {\n        if (value && !this.viewMode()) {\n            value = Array.isArray(value) ? value : [value];\n\n            if (this.hasChangesBetweenValues(this.value, this.stateService.nativeValue())) {\n                this.onNativeChange(value);\n\n                if (!value?.length) {\n                    this.reset();\n                }\n            }\n\n            if (this.stateService.componentReady()) {\n                this.loadFilePreview(value);\n            }\n        }\n    }\n\n    public getFormattedFileSize(resource: any): string {\n        return this.fileService.getFormattedFileSize(resource);\n    }\n\n    public isImage(resource: any): boolean {\n        return this.fileService.isImage(resource, this.previewType());\n    }\n\n    public isVideo(resource: any): boolean {\n        return this.fileService.isVideo(resource, this.previewType());\n    }\n\n    public isAudio(resource: any): boolean {\n        return this.fileService.isAudio(resource);\n    }\n\n    public isFile(resource: any): boolean {\n        return this.fileService.isFile(resource, this.previewType());\n    }\n\n    private async uploadFiles(files: File[]): Promise<void> {\n        if (!files?.length) {\n            return;\n        }\n\n        this.stateService.loading.set(true);\n        this.onFileUploadInit.emit();\n\n        try {\n            const result: UploadFilesResult = await this.fileService.uploadFiles(\n                files,\n                this.remoteResource(),\n                this.unacceptedFiles()\n            );\n\n            setTimeout(() => this.changeDetector.detectChanges(), 500);\n\n            if (!result.uploadedFiles.length && result.unacceptedFiles.length) {\n                this.stateService.loading.set(false);\n\n                return this.onFileSelectError.emit(NgtDropzoneErrorType.TYPE);\n            }\n\n            this.stateService.uploadedResources.set([\n                ...this.stateService.uploadedResources(),\n                ...result.uploadedFiles\n            ]);\n\n            if (this.itemsLimit() === 1) {\n                this.onNativeChange([...result.uploadedAttachments]);\n            } else {\n                this.onNativeChange([\n                    ...result.uploadedAttachments,\n                    ...this.stateService.nativeValue()\n                ]);\n            }\n\n            this.onFileUploaded.emit();\n            this.stateService.loading.set(false);\n\n            if (result.unacceptedFiles.length) {\n                this.onFileSelectError.emit(NgtDropzoneErrorType.TYPE);\n            }\n        } catch (error) {\n            this.onFileUploadFail.emit(error);\n            this.stateService.loading.set(false);\n        }\n    }\n\n    private async loadFilePreview(attachments: any[]): Promise<void> {\n        if (!attachments?.length) {\n            return;\n        }\n\n        this.stateService.loading.set(true);\n\n        try {\n            const loadedResources: any[] = await this.fileService.loadFilePreview(attachments);\n\n            if (loadedResources.length) {\n                this.stateService.uploadedResources.set([\n                    ...this.stateService.uploadedResources(),\n                    ...loadedResources\n                ]);\n\n                this.onNativeChange(attachments);\n                this.onFilePreviewLoaded.emit();\n            }\n\n            this.stateService.loading.set(false);\n        } catch (error) {\n            this.stateService.loading.set(false);\n        }\n\n        setTimeout(() => this.changeDetector.detectChanges(), 500);\n    }\n\n    private registerEffects(): void {\n        effect(() => this.setupValidators());\n    }\n\n    private setupComponent(): void {\n        this.setupValidators();\n\n        if (this.value) {\n            this.fileService.resetFilesLoad(Array.isArray(this.value) ? this.value : [this.value]);\n            this.loadFilePreview(Array.isArray(this.value) ? this.value : [this.value]);\n        }\n    }\n\n    private setupValidators(): void {\n        if (!this.formControl) {\n            return;\n        }\n\n        const syncValidators = this.validationService.getSyncValidators({\n            minItems: this.minItems(),\n            isRequired: this.isRequired(),\n            customSyncValidators: this.customSyncValidators(),\n        });\n\n        const asyncValidators = this.customAsyncValidators() ?? [];\n\n        this.formControl.setValidators(syncValidators);\n        this.formControl.setAsyncValidators(asyncValidators);\n        this.formControl.updateValueAndValidity();\n\n        if (this.value) {\n            this.markAsDirty();\n        }\n    }\n\n    private hasChangesBetweenValues(a: any, b: any): boolean {\n        return JSON.stringify(a ?? null) !== JSON.stringify(b ?? null);\n    }\n}\n","<div class=\"flex flex-col h-full w-full\" #container>\n    @if (label()) {\n        <label class=\"flex mb-2 text-sm\">\n            {{ label() }}:\n\n            @if (isRequired()) {\n                <span class=\"text-red-500 font-bold text-md ml-1\">*</span>\n            }\n\n            @if (helpText()) {\n                <ngt-helper [helpTitle]=\"helpTitle()\" [iconColor]=\"helpTextColor()\" class=\"ml-1\">\n                    {{ helpText() }}\n                </ngt-helper>\n            }\n        </label>\n    }\n\n    @if (!viewMode()) {\n        <div class=\"h-full w-full relative\">\n            @if (isLoading() && !hideNgxDropzone()) {\n                <div class=\"flex absolute justify-center items-center w-full h-full cursor-wait z-10\">\n                    <div class=\"div-loader\"></div>\n                </div>\n            }\n\n            <ngx-dropzone [id]=\"ngxElementId\" [class.single-attachment]=\"itemsLimit() == 1\"\n                [ngStyle]=\"{ 'height': dropzoneHeight }\" [ngClass]=\"{ 'hidden': hideNgxDropzone() }\"\n                [multiple]=\"multipleSelection()\" [maxFileSize]=\"maxFileSize()\" [accept]=\"acceptedFiles()\"\n                [disabled]=\"isDisabledState() || isLoading()\" [expandable]=\"verticalExpandable()\"\n                [disableClick]=\"shouldDisableClick()\" (change)=\"onSelectFiles($event)\" #ngxDropzone>\n                @if (!isLoading()) {\n                    @if (!uploadedResources.length) {\n                        <ngx-dropzone-label class=\"px-2\">\n                            {{ placeholder() }}\n                        </ngx-dropzone-label>\n                    }\n\n                    @for (resource of uploadedResources; track resource.id; let index = $index) {\n                        <div class=\"flex flex-col w-48 mx-4\"\n                            [title]=\"(resource?.file?.name || '') + ' (' + getFormattedFileSize(resource) + ')'\">\n                            @if (previewType() == 'DEFAULT' && isFile(resource)) {\n                                <custom-dropzone-preview [file]=\"resource.file\" [removable]=\"removable()\" (removed)=\"onRemove(resource)\"\n                                    (click)=\"onFileClick(resource.file.url, resource.file.name, resource.file.size)\"\n                                    ngProjectAs=\"ngx-dropzone-preview\">\n                                </custom-dropzone-preview>\n                            }\n\n                            @if (isImage(resource)) {\n                                <div class=\"cursor-pointer\" (click)=\"imagePreview(index)\">\n                                    <ngx-dropzone-image-preview class=\"image-preview-default-class\" [file]=\"resource.file\"\n                                        [removable]=\"removable()\" (removed)=\"onRemove(resource)\">\n                                    </ngx-dropzone-image-preview>\n                                </div>\n                            }\n\n                            @if (isVideo(resource) || isAudio(resource)) {\n                                <ngx-dropzone-video-preview [file]=\"resource.file\" [removable]=\"removable()\"\n                                    (removed)=\"onRemove(resource)\">\n                                </ngx-dropzone-video-preview>\n                            }\n\n                            @if (showFileName()) {\n                                <p class=\"w-full truncate text-gray-500 text-center text-sm font-mono mt-2\">\n                                    {{ resource?.file?.name || '' }}\n                                </p>\n                            }\n                        </div>\n                    }\n                }\n            </ngx-dropzone>\n        </div>\n    }\n\n    @if (viewMode()) {\n        <ngt-dropzone-view class=\"h-full w-full\" [resources]=\"resources()\" [loading]=\"isLoading()\"\n            [placeholder]=\"placeholder()\" [dropzoneHeight]=\"dropzoneHeight\"\n            (onFileClick)=\"onFileClick($event.previewUrl, $event.name, $event.fileSize)\"\n            (onImageClick)=\"onImageClick($event.div, $event.index)\">\n        </ngt-dropzone-view>\n    }\n\n    <ngt-dropzone-file-viewer [hidden]=\"!showFileViewer()\" [url]=\"fileViewerUrl()\" [fileName]=\"fileViewerFileName()\"\n        [fileSize]=\"fileViewerFileSize()\" (onClose)=\"onCloseFileViewer()\" [canDownloadFile]=\"canDownloadFile()\"\n        [disableContent]=\"canDownloadFile() ? 'none' : 'popout'\">\n    </ngt-dropzone-file-viewer>\n\n    <ngt-validation [control]=\"formControl\" [minItems]=\"minItems()\"></ngt-validation>\n</div>","import {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    Component,\n    computed,\n    ElementRef,\n    Injector,\n    input,\n    Optional,\n    output,\n    Signal,\n    SkipSelf,\n    ViewChild,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\n\nimport { NgtControlValueAccessor, NgtValueAccessorProvider } from '../../../../base/ngt-control-value-accessor';\nimport { NgtReactiveFormComponent } from '../ngt-reactive-form/ngt-reactive-form.component';\nimport { NgtSectionComponent } from '../../../ngt-section/ngt-section.component';\nimport { NgtModalComponent } from '../../../ngt-modal/ngt-modal.component';\nimport { NgtShiningModule } from '../../../ngt-shining/ngt-shining.module';\n\nexport enum NgtReactiveSliderColorSchemeEnum {\n    PRIMARY = 'primary',\n    SUCCESS = 'success',\n    WARNING = 'warning',\n    DANGER = 'danger'\n}\n\n@Component({\n    selector: 'ngt-reactive-slider',\n    templateUrl: './ngt-reactive-slider.component.html',\n    styleUrls: ['./ngt-reactive-slider.component.css'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: true,\n    providers: [\n        NgtValueAccessorProvider(NgtReactiveSliderComponent),\n    ],\n    imports: [\n        CommonModule,\n        ReactiveFormsModule,\n        NgtShiningModule,\n    ],\n})\nexport class NgtReactiveSliderComponent extends NgtControlValueAccessor implements AfterViewInit {\n    @ViewChild('sliderElement', { static: true }) public sliderElement: ElementRef;\n\n    /** Visual Inputs */\n\n    public readonly label = input<string>();\n    public readonly shining = input<boolean>(false);\n    public readonly showPercentageSymbol = input<boolean>(false);\n    public readonly colorByValue = input<(value: number) => NgtReactiveSliderColorSchemeEnum>(() => NgtReactiveSliderColorSchemeEnum.PRIMARY);\n\n    /** Behavior Inputs */\n\n    public readonly isDisabled = input<boolean>(false);\n    public readonly min = input<number>(0);\n    public readonly max = input<number>(100);\n    public readonly step = input<number>(1);\n\n    /** Outputs */\n\n    public readonly onValueChange = output<number>();\n\n    /** Computed Signals */\n\n    public readonly isShining: Signal<boolean> = computed(\n        () => this.shining() || this.ngtForm?.shining()\n    );\n\n    public readonly isDisabledByParent: Signal<boolean> = computed(\n        () => this.ngtForm?.isDisabledState() || this.ngtSection?.isDisabledState() || this.ngtModal?.isDisabledState()\n    );\n\n    public readonly isDisabledState: Signal<boolean> = computed(\n        () => this.isDisabled() || this.isDisabledByParent()\n    );\n\n    public readonly sliderClasses: Signal<string> = computed(() => this.getSliderClasses());\n\n    public constructor(\n        @Optional() @SkipSelf()\n        private ngtForm: NgtReactiveFormComponent,\n\n        @Optional() @SkipSelf()\n        private ngtSection: NgtSectionComponent,\n\n        @Optional() @SkipSelf()\n        private ngtModal: NgtModalComponent,\n\n        protected override injector: Injector,\n    ) {\n        super();\n    }\n\n    public ngAfterViewInit(): void {\n        this.formControl = this.getControl();\n    }\n\n    public onNativeChange(): void {\n        if (this.hasChangesBetweenValues()) {\n            this.value = parseFloat(this.getNativeValue());\n        }\n    }\n\n    public change(value: number): void {\n        this.onValueChange.emit(value);\n\n        if (this.hasChangesBetweenValues()) {\n            this.formControl?.setValue(value ?? this.min());\n\n            this.setNativeValue(value ?? this.min());\n        }\n    }\n\n    private setNativeValue(value: number): void {\n        this.sliderElement.nativeElement.value = value;\n    }\n\n    private getNativeValue(): string {\n        return this.sliderElement.nativeElement.value;\n    }\n\n    private getSliderClasses(): string {\n        const classes: string[] = [\n            'block w-full cursor-pointer overflow-hidden appearance-none bg-gray-400 rounded',\n            this.colorByValue()(this.value),\n        ];\n\n        if (this.isDisabledState()) {\n            classes.push('cursor-not-allowed opacity-50');\n        }\n\n        return classes.join(' ');\n    }\n\n    private hasChangesBetweenValues(): boolean {\n        return this.getNativeValue() !== this.value;\n    }\n}\n","@if (label()) {\n    <label class=\"flex mb-2 text-sm\" [hidden]='isShining()'>\n        <span class=\"truncate\" [title]=\"label()\">\n            {{ label() }}:\n        </span>\n    </label>\n}\n\n<div [class]=\"isShining() ? 'hidden' : 'flex items-center'\">\n    <input [class]=\"sliderClasses()\" type=\"range\" [min]='min()' [max]='max()' [step]='step()'\n        [disabled]=\"isDisabledState()\" (change)=\"onNativeChange()\" (blur)=\"onTouched()\" #sliderElement>\n\n    <span class=\"text-xs ml-2 font-semibold\">{{ value || min() }}</span>\n\n    @if (showPercentageSymbol()) {\n        <span class=\"text-xs font-semibold\">%</span>\n    }\n</div>\n\n@if (isShining()) {\n    <ngt-shining class=\"block w-full h-6\"></ngt-shining>\n}\n\n<ng-content></ng-content>","/*\n * Public API Surface of ng-tailwind\n */\n\n/** Services */\n\n// NgtTranslateService\nexport * from './services/http/ngt-translate.service';\n\n// NgtHttpService\nexport * from './services/http/ngt-http.service';\n\n// NgtHttpValidationService\nexport * from './services/http/ngt-http-validation.service';\n\n// NgtHttpResourceService\nexport * from './services/http/ngt-http-resource.service';\n\n// NgtAbilityValidationService\nexport * from './services/validation/ngt-ability-validation.service';\n\n// NgtHttpFormService\nexport * from './services/http/ngt-http-form.service';\n\n/** Directives */\n\n// NgtStylizable\nexport * from './directives/ngt-stylizable/ngt-stylizable.module';\nexport * from './directives/ngt-stylizable/ngt-stylizable.directive';\n\n/** List Components */\n\n// NgtDatatable\nexport * from './components/ngt-datatable/ngt-datatable.module';\nexport * from './components/ngt-datatable/ngt-datatable.component';\nexport * from './components/ngt-datatable/ngt-tbody/ngt-tbody.component';\nexport * from './components/ngt-datatable/ngt-td/ngt-td.component';\nexport * from './components/ngt-datatable/ngt-td-check/ngt-td-check.component';\nexport * from './components/ngt-datatable/ngt-th/ngt-th.component';\nexport * from './components/ngt-datatable/ngt-th-check/ngt-th-check.component';\nexport * from './components/ngt-datatable/ngt-thead/ngt-thead.component';\nexport * from './components/ngt-datatable/ngt-tr/ngt-tr.component';\n\n// NgtPagination\nexport * from './components/ngt-pagination/ngt-pagination.module';\nexport * from './components/ngt-pagination/ngt-pagination.component';\n\n/** General Components */\n\n// NgtDropdown\nexport * from './components/ngt-dropdown/ngt-dropdown.component';\nexport * from './components/ngt-dropdown/ngt-dropdown-container/ngt-dropdown-container.component';\n\n// NgtTag\nexport * from './components/ngt-tag/ngt-tag.module';\nexport * from './components/ngt-tag/ngt-tag.component';\n\n// NgtAction\nexport * from './components/ngt-action/ngt-action.module';\nexport * from './components/ngt-action/ngt-action.component';\n\n// NgtModal\nexport * from './components/ngt-modal/ngt-modal.module';\nexport * from './components/ngt-modal/ngt-modal.component';\nexport * from './components/ngt-modal/ngt-modal-header/ngt-modal-header.component';\nexport * from './components/ngt-modal/ngt-modal-body/ngt-modal-body.component';\nexport * from './components/ngt-modal/ngt-modal-footer/ngt-modal-footer.component';\n\n// NgtPortlet\nexport * from './components/ngt-portlet/ngt-portlet.module';\nexport * from './components/ngt-portlet/ngt-portlet.component';\nexport * from './components/ngt-portlet/ngt-portlet-header/ngt-portlet-header.component';\nexport * from './components/ngt-portlet/ngt-portlet-body/ngt-portlet-body.component';\nexport * from './components/ngt-portlet/ngt-portlet-footer/ngt-portlet-footer.component';\nexport * from './enums/size.enum';\n\n//NgtContent\nexport * from './components/ngt-content/ngt-content.module';\nexport * from './components/ngt-content/ngt-content.component';\n\n// NgtHelper\nexport * from './components/ngt-helper/ngt-helper.component';\n\n// NgtPopover\nexport * from './components/ngt-popover/ngt-popover.module';\nexport * from './components/ngt-popover/ngt-popover.component';\nexport * from './components/ngt-popover/ngt-popover.directive';\n\n// NgtContextMenu\nexport * from './components/ngt-context-menu/ngt-context-menu.module';\nexport * from './components/ngt-context-menu/ngt-context-menu.component';\nexport * from './components/ngt-context-menu/ngt-context-menu.directive';\n\n// NgtSvg\nexport * from './components/ngt-svg/ngt-svg.module';\nexport * from './components/ngt-svg/ngt-svg.component';\n\n// NgtShining\nexport * from './components/ngt-shining/ngt-shining.module';\nexport * from './components/ngt-shining/ngt-shining.component';\n\n/** Navigation/Menu Components */\n\n// NgtSidenav\nexport * from './components/ngt-sidenav/ngt-sidenav.module';\nexport * from './components/ngt-sidenav/ngt-sidenav.component';\n\n// NgtHeaderNav\nexport * from './components/ngt-header-nav/ngt-header-nav.module';\nexport * from './components/ngt-header-nav/ngt-header-nav.component';\n\n/** Form Components */\n\n// NgtCheckbox\nexport * from './components/forms/template-driven/ngt-checkbox/ngt-checkbox.module';\nexport * from './components/forms/template-driven/ngt-checkbox/ngt-checkbox.component';\n\n// NgtFloatingButton\nexport * from './components/ngt-floating-button/ngt-floating-button.module';\nexport * from './components/ngt-floating-button/ngt-floating-button.component';\n\n// NgtSlider\nexport * from './components/forms/template-driven/ngt-slider/ngt-slider.module';\nexport * from './components/forms/template-driven/ngt-slider/ngt-slider.component';\n\n// NgtRadioButton\nexport * from './components/forms/template-driven/ngt-radio-button/ngt-radio-button.module';\nexport * from './components/forms/template-driven/ngt-radio-button/ngt-radio-button.component';\nexport * from './components/forms/template-driven/ngt-radio-button/ngt-radio-button-container/ngt-radio-button-container.component';\n\n// NgtSection\nexport * from './components/ngt-section/ngt-section.module';\nexport * from './components/ngt-section/ngt-section.component';\n\n/** Template-driven Form Components */\n\n// NgtTextarea\nexport * from './components/forms/template-driven/ngt-textarea/ngt-textarea.module';\nexport * from './components/forms/template-driven/ngt-textarea/ngt-textarea.component';\n\n// NgtDate\nexport * from './components/forms/template-driven/ngt-date/ngt-date.module';\nexport * from './components/forms/template-driven/ngt-date/ngt-date.component';\n\n// NgtButton\nexport * from './components/ngt-button/ngt-button.module';\nexport * from './components/ngt-button/ngt-button.component';\n\n// NgtInput\nexport * from './components/forms/template-driven/ngt-input/ngt-input.module';\nexport * from './components/forms/template-driven/ngt-input/ngt-input.component';\n\n// NgtSelect\nexport * from './components/forms/template-driven/ngt-select/ngt-select.module';\nexport * from './components/forms/template-driven/ngt-select/ngt-select.component';\nexport * from './components/forms/template-driven/ngt-select/ngt-select.directive';\n\n// NgtMultiSelect\nexport * from './components/forms/template-driven/ngt-multi-select/ngt-multi-select.module';\nexport * from './components/forms/template-driven/ngt-multi-select/ngt-multi-select.component';\n\n// NgtForm\nexport * from './components/forms/template-driven/ngt-form/ngt-form.module';\nexport * from './components/forms/template-driven/ngt-form/ngt-form.component';\nexport * from './components/forms/template-driven/ngt-form/ngt-form-validation-message/ngt-form-validation-message.component';\n\n// NgtDropzone\nexport * from './components/forms/template-driven/ngt-dropzone/ngt-dropzone.module';\nexport * from './components/forms/template-driven/ngt-dropzone/ngt-dropzone.component';\nexport * from './meta/ngt-dropzone.meta';\nexport * from './services/http/ngt-attachment-http.service';\n\n/** Reactive Form Components */\n\n// NgtReactiveForm\nexport * from './components/forms/reactive/ngt-reactive-form/ngt-reactive-form.component';\n\n// NgtReactiveInput\nexport * from './components/forms/reactive/ngt-reactive-input/ngt-reactive-input.component';\n\n// NgtReactiveTextarea\nexport * from './components/forms/reactive/ngt-reactive-textarea/ngt-reactive-textarea.component';\n\n// NgtReactiveSelect\nexport * from './components/forms/reactive/ngt-reactive-select/ngt-reactive-select.component';\nexport * from './components/forms/reactive/ngt-reactive-select/ngt-reactive-select.directive';\nexport * from './components/forms/reactive/ngt-reactive-select/ngt-reactive-select.module';\n\n// NgtReactiveDate\nexport * from './components/forms/reactive/ngt-reactive-date/ngt-reactive-date.component';\n\n// NgtReactiveCheckbox\nexport * from './components/forms/reactive/ngt-reactive-checkbox/ngt-reactive-checkbox.component';\n\n// NgtReactiveRadioButton\nexport * from './components/forms/reactive/ngt-reactive-radio-button/ngt-reactive-radio-button.component';\nexport * from './components/forms/reactive/ngt-reactive-radio-button/ngt-reactive-radio-button-container/ngt-reactive-radio-button-container.component';\n\n// NgtReactiveDropzone\nexport * from './components/forms/reactive/ngt-reactive-dropzone/ngt-reactive-dropzone.component';\n\n// NgtReactiveSlider\nexport * from './components/forms/reactive/ngt-reactive-slider/ngt-reactive-slider.component';\n\n/** Helpers */\n\n//NgtAnimations\nexport * from './animations/ngt-angular-animations';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.NgtTranslateService","i1","i3.NgtHttpFormService","i4.NgtAbilityValidationService","i5","i6.NgtFormValidationMessageComponent","i1.NgtAbilityValidationService","i2.NgtHttpFormService","i3","i1.NgtDropdownContainerComponent","i2","i1.NgtStylizableDirective","i2.NgtTranslateService","i3.NgtSvgComponent","i2.NgtAbilityValidationService","i4.NgtSvgComponent","i5.NgtHelperComponent","i4.NgtModalHeaderComponent","i5.NgtModalBodyComponent","i6.NgtModalFooterComponent","i2.NgtFormComponent","i3.NgtReactiveFormComponent","i4.NgtSectionComponent","i5.NgtModalComponent","i6.NgtModalBodyComponent","i7","i8","i9.NgtSvgComponent","i2.NgtStylizableDirective","i3.NgtFormComponent","i6","i7.NgtShiningComponent","i8.NgtHelperComponent","i4.NgtHttpValidationService","i5.NgtHttpResourceService","i6.NgtSectionComponent","i7.NgtModalComponent","i8.NgtTranslateService","i9","i10.NgtValidationComponent","i11.NgtShiningComponent","i12.NgtSvgComponent","i13.NgtHelperComponent","i3.NgtTranslateService","i4.NgtHttpService","i5.NgtFormComponent","i12.NgtHelperComponent","i13.NgtSvgComponent","i4.NgtStylizableDirective","i5.NgtActionComponent","i6.NgtSelectComponent","i7.NgtSelectOptionTmp","i1.NgtHttpService","i4.NgtShiningComponent","i5.NgtPaginationComponent","i6.NgtModalComponent","i7.NgtTagComponent","i8.NgtStylizableDirective","i2.NgtDatatableComponent","i4.NgtCheckboxComponent","i4","i6.NgtCheckboxComponent","i5.NgtInputComponent","i6.NgtModalHeaderComponent","i7.NgtModalBodyComponent","i8.NgtActionComponent","i1.NgtTheadComponent","i2.NgtTbodyComponent","i3.NgtStylizableDirective","i4.NgtHelperComponent","i3.NgtPortletHeaderComponent","i4.NgtPortletBodyComponent","i5.NgtPortletFooterComponent","i4.NgtDropdownComponent","i2.NgtSvgComponent","i3.NgtSectionComponent","i4.NgtModalComponent","i5.NgtRadioButtonContainerComponent","i8.NgtShiningComponent","i9.NgtHelperComponent","i4.NgtTranslateService","i6.NgtValidationComponent","i8.NgtValidationComponent","i9.NgtShiningComponent","i10.NgtHelperComponent","i1.NgtFormComponent","i2.NgtReactiveFormComponent","i5.NgtStylizableDirective","i7.NgtTranslateService","i9.NgtValidationComponent","i10.NgtShiningComponent","i11.NgtHelperComponent","i12.NgtInputComponent","i13.NgtCheckboxComponent","i2.NgtAttachmentHttpService","i7.NgtValidationComponent","i10.CustomDropzonePreviewComponent","i11.NgtDropzoneFileViewerComponent","i12.NgtDropzoneViewComponent","i1.NgtHttpValidationService","i2.NgtReactiveFormValidationService","i3.NgtReactiveInputLoaderService","i2.NgtHttpResourceService","i4.NgtReactiveFormComponent","i5.NgtSectionComponent","i7.NgtReactiveInputValidationService","i8.NgtReactiveInputMaskService","i9.NgtReactiveInputLoaderService","i10","i13.NgtValidationComponent","i1.NgtReactiveFormValidationService","i5.NgtTranslateService","i6.NgtReactiveTextareaValidationService","i2.NgtReactiveSelectStateService","i1.NgtReactiveSelectStateService","i1.NgtReactiveSelectSearchService","i6.NgtReactiveSelectValidationService","i7.NgtReactiveSelectSearchService","i8.NgtReactiveSelectItemsService","i9.NgtReactiveSelectDropdownService","i10.NgtReactiveSelectTagManagerService","i11.NgtReactiveSelectStateService","i12","i13","i14.NgtValidationComponent","i15.NgtShiningComponent","i16.NgtSvgComponent","i5.NgtReactiveDateFormatterService","i5.NgtShiningComponent","i5.NgtReactiveRadioButtonContainerComponent","i6.NgtShiningComponent","i1.NgtAttachmentHttpService","i1.NgtReactiveFormComponent","i2.NgtSectionComponent","i3.NgtModalComponent","i4.NgtReactiveDropzoneValidationService","i5.NgtReactiveDropzoneFileService","i6.NgtReactiveDropzoneErrorService","i7.NgtReactiveDropzoneViewerService","i8.NgtReactiveDropzoneStateService"],"mappings":"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"}