{"version":3,"file":"ngx-gilmapi-login.mjs","sources":["../../../projects/ui-angular-components/login/src/login.component.ts","../../../projects/ui-angular-components/login/src/login.component.html","../../../projects/ui-angular-components/login/src/login.module.ts","../../../projects/ui-angular-components/login/ngx-gilmapi-login.ts"],"sourcesContent":["import { HttpErrorResponse } from '@angular/common/http';\nimport { Component, inject, Inject, Optional, signal, Type, ViewEncapsulation } from '@angular/core';\nimport { FormBuilder, Validators } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\n\nimport { MessageService } from 'primeng/api';\n\nimport { LoginConfig, LoginCredentials, LoginServiceInterface } from './interfaces/login.interface';\n\n@Component({\n  selector: 'ngx-gmp-login',\n  templateUrl: './login.component.html',\n  styleUrls: ['./login.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  standalone: false,\n})\nexport class GmpLoginComponent {\n  fb = inject(FormBuilder);\n  router = inject(Router);\n  messageService = inject(MessageService);\n  activatedRoute = inject(ActivatedRoute);\n\n  private authService: LoginServiceInterface | null = null;\n  public welcomeContentComponent: Type<any> | null = null;\n  loginConfig: LoginConfig | null = null;\n\n  isLoading = signal<boolean>(false);\n  showPassword = signal<boolean>(false);\n\n  eyeOpenIcon = 'pi pi-eye';\n  eyeClosedIcon = 'pi pi-eye-slash';\n\n  loginForm = this.fb.group({\n    email: ['', [Validators.required, Validators.email]],\n    password: ['', [Validators.required]],\n  });\n\n  constructor(\n    @Optional() @Inject('AUTH_SERVICE') authService: LoginServiceInterface,\n    @Optional() @Inject('WELCOME_CONTENT_COMPONENT') welcomeContentComponent: Type<any>,\n    @Optional() @Inject('LOGIN_CONFIG') loginConfig: LoginConfig,\n  ) {\n    this.authService = authService;\n    this.welcomeContentComponent = welcomeContentComponent;\n    this.loginConfig = loginConfig;\n  }\n\n  togglePasswordVisibility() {\n    this.showPassword.update(current => !current);\n  }\n\n  goToRegister() {\n    if (this.loginConfig?.registerRoute) {\n      // Obtener los parámetros actuales de la ruta\n      const currentParams = this.activatedRoute.snapshot.queryParams;\n\n      // Navegar al registro con los parámetros actuales\n      this.router.navigate([this.loginConfig.registerRoute], {\n        queryParams: currentParams,\n      });\n    }\n  }\n\n  async signIn() {\n    this.isLoading.set(true);\n    if (!this.authService) {\n      this.messageService.add({\n        severity: 'error',\n        summary: 'Error de autenticación',\n        detail: 'No se encontró el servicio de autenticación. Por favor intente nuevamente.',\n        life: 5000,\n      });\n      return;\n    }\n    if (!this.loginForm.valid) {\n      this.messageService.add({\n        severity: 'error',\n        summary: 'Error de autenticación',\n        detail: 'Por favor ingrese un email y contraseña válidos.',\n        life: 5000,\n      });\n      return;\n    }\n    const credentials: LoginCredentials = {\n      email: this.loginForm.value.email ?? '',\n      password: this.loginForm.value.password ?? '',\n    };\n    this.authService.login(credentials).subscribe({\n      next: () => {\n        this.isLoading.set(false);\n      },\n      error: (error: HttpErrorResponse) => {\n        this.isLoading.set(false);\n        if (error.status === 401) {\n          this.messageService.add({\n            severity: 'error',\n            summary: 'Error de autenticación',\n            detail: 'Las credenciales ingresadas son inválidas. Por favor intente nuevamente.',\n            life: 5000,\n          });\n        } else {\n          this.messageService.add({\n            severity: 'error',\n            summary: 'Error',\n            detail: 'Ocurrió un problema al intentar ingresar. Por favor intente nuevamente más tarde.',\n            life: 5000,\n          });\n        }\n\n        console.error('Login error:', error);\n      },\n    });\n  }\n\n  resetForm() {\n    this.loginForm.reset();\n    this.loginForm.patchValue({\n      email: '',\n      password: '',\n    });\n  }\n}\n","<p-toast></p-toast>\n\n<div class=\"login-page\">\n  <!-- Card Container - only has card styling on large screens -->\n  <div class=\"login-card\">\n    <!-- Left side - Login Form -->\n    <div class=\"login-panel login-panel-form\">\n      <!-- Logo -->\n      @if(loginConfig?.logoUrl) {<div class=\"login-logo-wrap\">\n        <img [src]=\"loginConfig?.logoUrl\" class=\"login-logo\" alt=\"logo\" />\n      </div>\n      }\n\n      <!-- Login Header -->\n      <h1 class=\"login-title\">Ingreso</h1>\n\n      <!-- Login Form -->\n      <form [formGroup]=\"loginForm\" class=\"login-form fade-in\" (ngSubmit)=\"signIn()\">\n        <div class=\"form-group form-group-spaced\">\n          <label for=\"email\" class=\"login-label\">Email*</label>\n          <input\n            id=\"email\"\n            pInputText\n            type=\"text\"\n            class=\"input-field login-input\"\n            placeholder=\"Ingrese su email\"\n            formControlName=\"email\"\n          />\n        </div>\n\n        <div class=\"form-group form-group-tight\">\n          <label for=\"password\" class=\"login-label\">Contraseña *</label>\n          <div class=\"password-field-wrap\">\n            <input\n              id=\"password\"\n              pInputText\n              [type]=\"showPassword() ? 'text' : 'password'\"\n              class=\"input-field login-input login-input-password\"\n              placeholder=\"Ingrese su contraseña\"\n              formControlName=\"password\"\n            />\n            <button\n              type=\"button\"\n              class=\"password-toggle password-toggle-button\"\n              (click)=\"togglePasswordVisibility()\"\n            >\n              <i [class]=\"showPassword() ? eyeClosedIcon : eyeOpenIcon\"></i>\n            </button>\n          </div>\n        </div>\n\n        <div class=\"login-options-row\">\n          <div class=\"login-remember-row\">\n            <input\n              type=\"checkbox\"\n              id=\"remember\"\n              class=\"checkbox-field login-checkbox\"\n            />\n            <label for=\"remember\" class=\"login-checkbox-label\">Recordarme</label>\n          </div>\n          @if(loginConfig?.forgotPasswordRoute) {\n          <a [href]=\"loginConfig?.forgotPasswordRoute\" class=\"login-link\">¿Olvidó su contraseña?</a>\n          }\n        </div>\n\n        <button\n          type=\"submit\"\n          [class]=\"\n            'submit-button login-submit-button ' +\n            (isLoading() || !loginForm.valid\n              ? 'login-submit-button-disabled'\n              : 'login-submit-button-enabled')\n          \"\n          [disabled]=\"isLoading() || !loginForm.valid\"\n        >\n          @if(isLoading()) {\n          <span class=\"loading-inline\">\n            <i class=\"pi pi-spin pi-spinner loading-inline-icon\"></i>\n            Cargando...\n          </span>\n          } @else {\n          <span>Ingresar</span>\n          }\n        </button>\n\n        @if(loginConfig?.registerRoute) {\n        <div class=\"login-register-row\">\n          <span class=\"login-register-text\">\n            ¿No tiene una cuenta?\n            <a (click)=\"goToRegister()\" class=\"login-register-link\">\n              Registrarse\n            </a>\n          </span>\n        </div>\n        }\n      </form>\n    </div>\n\n    <!-- Right side - Welcome Content (Dynamic) -->\n    <div *ngIf=\"welcomeContentComponent\" class=\"login-panel login-panel-welcome welcome-content\">\n      <ng-container *ngComponentOutlet=\"welcomeContentComponent\"></ng-container>\n    </div>\n  </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport {\n  CUSTOM_ELEMENTS_SCHEMA,\n  NgModule,\n} from '@angular/core';\nimport {\n  FormsModule,\n  ReactiveFormsModule,\n} from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatInputModule } from '@angular/material/input';\nimport { RouterModule } from '@angular/router';\n\nimport { MessageService } from 'primeng/api';\nimport { ButtonModule } from 'primeng/button';\nimport { CheckboxModule } from 'primeng/checkbox';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { MessageModule } from 'primeng/message';\nimport { PasswordModule } from 'primeng/password';\nimport { RippleModule } from 'primeng/ripple';\nimport { ToastModule } from 'primeng/toast';\n\nimport { GmpLoginComponent } from './login.component';\n\n@NgModule({\n  declarations: [GmpLoginComponent],\n  imports: [\n    CommonModule,\n    FormsModule,\n    ReactiveFormsModule,\n    RouterModule.forChild([{ path: '', component: GmpLoginComponent }]),\n    MatButtonModule,\n    MatInputModule,\n    ButtonModule,\n    CheckboxModule,\n    InputTextModule,\n    PasswordModule,\n    RippleModule,\n    ToastModule,\n    MessageModule,\n  ],\n  providers: [MessageService],\n  schemas: [CUSTOM_ELEMENTS_SCHEMA],\n  exports: [GmpLoginComponent],\n})\nexport class GmpLoginModule {\n  constructor() {}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}