{"version":3,"file":"rolatech-angular-onboarding-agent-apply-start-page-C_lz97xJ.mjs","sources":["../../../../packages/angular-onboarding/src/lib/pages/agent-apply/agent-apply-start-page.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, computed, effect, inject, ViewEncapsulation } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { FormBuilder, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { CreateOnboardingApplicationRequest } from '@rolatech/angular-services';\nimport { OnboardingPageShell } from '../../components/onboarding/onboarding-page-shell';\nimport { AgentApplyFacade } from '../../store/agent-apply.facade';\n\n@Component({\n  selector: 'rolatech-agent-apply-start-page',\n  standalone: true,\n  imports: [ReactiveFormsModule, OnboardingPageShell],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  host: { class: 'block' },\n  template: `\n    <rolatech-onboarding-page-shell\n      [title]=\"title()\"\n      [subtitle]=\"subtitle()\"\n      [kicker]=\"kicker()\"\n    >\n      <form\n        [formGroup]=\"form\"\n        class=\"space-y-6 rounded-3xl border border-(--rt-border-color) bg-(--rt-base-background) p-6 shadow-sm\"\n      >\n        <div\n          class=\"rounded-2xl border border-(--rt-border-color) bg-(--rt-raised-background) px-4 py-3 text-sm text-(--rt-text-primary)\"\n        >\n          {{ introMessage() }}\n        </div>\n\n        <div class=\"grid gap-4 md:grid-cols-2\">\n          <label class=\"grid gap-2 md:col-span-2\">\n            <span class=\"text-sm font-medium text-(--rt-text-secondary)\">Applicant Type</span>\n            <select\n              formControlName=\"applicantType\"\n              class=\"h-11 rounded-xl border border-(--rt-border-color) bg-(--rt-raised-background) px-3 text-(--rt-text-primary)\"\n            >\n              <option value=\"INDIVIDUAL\">Individual</option>\n              <option value=\"COMPANY\">Corporate Partner</option>\n            </select>\n          </label>\n\n          <label class=\"grid gap-2 md:col-span-2\">\n            <span class=\"text-sm font-medium text-(--rt-text-secondary)\">Country</span>\n            <select\n              formControlName=\"countryCode\"\n              class=\"h-11 rounded-xl border border-(--rt-border-color) bg-(--rt-raised-background) px-3 text-(--rt-text-primary)\"\n            >\n              <option value=\"GB\">United Kingdom</option>\n              <option value=\"CN\">China</option>\n            </select>\n          </label>\n        </div>\n\n        @if (facade.error()) {\n          <p\n            class=\"mt-4 rounded-xl border border-(--rt-border-color) bg-(--rt-raised-background) px-3 py-2 text-sm text-rose-700\"\n          >\n            {{ facade.error() }}\n          </p>\n        }\n\n        <div class=\"mt-6 flex justify-end gap-3\">\n          @if (editing()) {\n            <button\n              type=\"button\"\n              class=\"rounded-xl border border-(--rt-border-color) bg-(--rt-base-background) px-5 py-2.5 text-sm font-semibold text-(--rt-text-secondary) transition hover:bg-(--rt-raised-background)\"\n              [disabled]=\"facade.loading()\"\n              (click)=\"backToForm()\"\n            >\n              Back to form\n            </button>\n          }\n\n          <button\n            type=\"button\"\n            class=\"rounded-xl bg-(--rt-brand-color) px-5 py-2.5 text-sm font-semibold text-(--rt-text-primary-inverse) transition hover:opacity-90 disabled:cursor-not-allowed disabled:opacity-60\"\n            [disabled]=\"form.invalid || facade.loading()\"\n            (click)=\"onStart()\"\n          >\n            {{ primaryActionLabel() }}\n          </button>\n        </div>\n      </form>\n    </rolatech-onboarding-page-shell>\n  `,\n})\nexport class AgentApplyStartPage {\n  readonly facade = inject(AgentApplyFacade);\n  private readonly fb = inject(FormBuilder);\n  private readonly router = inject(Router);\n  private readonly route = inject(ActivatedRoute);\n  private readonly paramMap = toSignal(this.route.paramMap, {\n    initialValue: this.route.snapshot.paramMap,\n  });\n\n  readonly applicationId = computed(\n    () =>\n      this.paramMap().get('applicationId') ??\n      this.route.snapshot.pathFromRoot\n        .map((item) => item.paramMap.get('applicationId'))\n        .find((value) => Boolean(value)) ??\n      null,\n  );\n  readonly editing = computed(() => Boolean(this.applicationId()));\n  readonly title = computed(() => (this.editing() ? 'Update Agent Application Start' : 'Apply to Join PrimeCasa'));\n  readonly subtitle = computed(() =>\n    this.editing()\n      ? 'Update the applicant type or operating region before you continue with the rest of the onboarding form.'\n      : 'Choose the applicant profile you are applying under. The onboarding form will adapt to the rules for your identity type and operating region.',\n  );\n  readonly kicker = computed(() => (this.editing() ? 'Application Setup' : 'Public Apply'));\n  readonly introMessage = computed(() =>\n    this.editing()\n      ? 'Changing the applicant type or country can change the required documents and validation rules for this application.'\n      : 'You can complete the application as a draft, leave the page, and continue later. Required document and VAT rules will change based on the choices below.',\n  );\n  readonly primaryActionLabel = computed(() => (this.editing() ? 'Save and continue' : 'Create Application Draft'));\n\n  readonly form = this.fb.nonNullable.group({\n    applicantType: ['INDIVIDUAL', [Validators.required]],\n    countryCode: ['GB', [Validators.required]],\n  });\n\n  constructor() {\n    effect(() => {\n      const applicationId = this.applicationId();\n\n      if (!applicationId) {\n        return;\n      }\n\n      void this.facade.ensureLoaded(applicationId);\n    });\n\n    effect(() => {\n      if (!this.editing()) {\n        return;\n      }\n\n      const source = this.facade.detail() ?? this.facade.application();\n\n      if (!source) {\n        return;\n      }\n\n      this.form.patchValue(\n        {\n          applicantType: source.applicantType ?? 'INDIVIDUAL',\n          countryCode: source.countryCode ?? 'GB',\n        },\n        { emitEvent: false },\n      );\n    });\n  }\n\n  async onStart(): Promise<void> {\n    if (this.form.invalid) {\n      this.form.markAllAsTouched();\n      return;\n    }\n\n    const rawValue = this.form.getRawValue();\n    const payload: CreateOnboardingApplicationRequest = {\n      applicantType: rawValue.applicantType as CreateOnboardingApplicationRequest['applicantType'],\n      countryCode: rawValue.countryCode,\n      applicationId: this.applicationId() ?? undefined,\n    };\n    const response = await this.facade.start(payload);\n\n    if (!response) {\n      return;\n    }\n\n    if (response.kind === 'existing') {\n      await this.router.navigate(['/applications', response.applicationId]);\n      return;\n    }\n\n    if (this.editing()) {\n      await this.backToForm();\n      return;\n    }\n\n    await this.router.navigate([response.application.id, 'form'], { relativeTo: this.route });\n  }\n\n  async backToForm(): Promise<void> {\n    await this.router.navigate(['../form'], {\n      relativeTo: this.route,\n    });\n  }\n}\n"],"names":[],"mappings":"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"}