@rolatech/angular-onboarding 20.3.0-beta.2 → 20.3.0-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/fesm2022/rolatech-angular-onboarding-admin-onboarding-detail-page-DD-5SdjA.mjs +708 -0
  2. package/fesm2022/rolatech-angular-onboarding-admin-onboarding-detail-page-DD-5SdjA.mjs.map +1 -0
  3. package/fesm2022/rolatech-angular-onboarding-admin-onboarding-index-page-DP7wffLd.mjs +313 -0
  4. package/fesm2022/rolatech-angular-onboarding-admin-onboarding-index-page-DP7wffLd.mjs.map +1 -0
  5. package/fesm2022/rolatech-angular-onboarding-agent-apply-form-page-y02hYlN_.mjs +446 -0
  6. package/fesm2022/rolatech-angular-onboarding-agent-apply-form-page-y02hYlN_.mjs.map +1 -0
  7. package/fesm2022/rolatech-angular-onboarding-agent-apply-result-page-CEL4nWb_.mjs +141 -0
  8. package/fesm2022/rolatech-angular-onboarding-agent-apply-result-page-CEL4nWb_.mjs.map +1 -0
  9. package/fesm2022/rolatech-angular-onboarding-agent-apply-review-page-DG_D03YW.mjs +453 -0
  10. package/fesm2022/rolatech-angular-onboarding-agent-apply-review-page-DG_D03YW.mjs.map +1 -0
  11. package/fesm2022/{rolatech-angular-onboarding-agent-apply-shell-page-DibWYeD1.mjs → rolatech-angular-onboarding-agent-apply-shell-page-CaTvnFzk.mjs} +27 -40
  12. package/fesm2022/rolatech-angular-onboarding-agent-apply-shell-page-CaTvnFzk.mjs.map +1 -0
  13. package/fesm2022/{rolatech-angular-onboarding-agent-apply-start-page-DC7gyOnS.mjs → rolatech-angular-onboarding-agent-apply-start-page-BfqO2YWB.mjs} +31 -29
  14. package/fesm2022/rolatech-angular-onboarding-agent-apply-start-page-BfqO2YWB.mjs.map +1 -0
  15. package/fesm2022/{rolatech-angular-onboarding-agent-onboarding-documents-page-DWBGTj5J.mjs → rolatech-angular-onboarding-agent-onboarding-documents-page-BKDYZE0e.mjs} +79 -6
  16. package/fesm2022/rolatech-angular-onboarding-agent-onboarding-documents-page-BKDYZE0e.mjs.map +1 -0
  17. package/fesm2022/rolatech-angular-onboarding.mjs +2252 -234
  18. package/fesm2022/rolatech-angular-onboarding.mjs.map +1 -1
  19. package/package.json +1 -1
  20. package/types/rolatech-angular-onboarding.d.ts +219 -12
  21. package/fesm2022/rolatech-angular-onboarding-admin-onboarding-detail-page-DKJQX3cs.mjs +0 -224
  22. package/fesm2022/rolatech-angular-onboarding-admin-onboarding-detail-page-DKJQX3cs.mjs.map +0 -1
  23. package/fesm2022/rolatech-angular-onboarding-admin-onboarding-index-page-BO4pC_NU.mjs +0 -206
  24. package/fesm2022/rolatech-angular-onboarding-admin-onboarding-index-page-BO4pC_NU.mjs.map +0 -1
  25. package/fesm2022/rolatech-angular-onboarding-admin-onboarding-review-page-BERcLBeQ.mjs +0 -419
  26. package/fesm2022/rolatech-angular-onboarding-admin-onboarding-review-page-BERcLBeQ.mjs.map +0 -1
  27. package/fesm2022/rolatech-angular-onboarding-agent-apply-banking-page-VYNfR4fy.mjs +0 -133
  28. package/fesm2022/rolatech-angular-onboarding-agent-apply-banking-page-VYNfR4fy.mjs.map +0 -1
  29. package/fesm2022/rolatech-angular-onboarding-agent-apply-financial-page-Ck3Rowke.mjs +0 -132
  30. package/fesm2022/rolatech-angular-onboarding-agent-apply-financial-page-Ck3Rowke.mjs.map +0 -1
  31. package/fesm2022/rolatech-angular-onboarding-agent-apply-profile-page-DNepDxHu.mjs +0 -122
  32. package/fesm2022/rolatech-angular-onboarding-agent-apply-profile-page-DNepDxHu.mjs.map +0 -1
  33. package/fesm2022/rolatech-angular-onboarding-agent-apply-qualification-page-CSwupuKt.mjs +0 -108
  34. package/fesm2022/rolatech-angular-onboarding-agent-apply-qualification-page-CSwupuKt.mjs.map +0 -1
  35. package/fesm2022/rolatech-angular-onboarding-agent-apply-review-page-DugCjfvK.mjs +0 -182
  36. package/fesm2022/rolatech-angular-onboarding-agent-apply-review-page-DugCjfvK.mjs.map +0 -1
  37. package/fesm2022/rolatech-angular-onboarding-agent-apply-shell-page-DibWYeD1.mjs.map +0 -1
  38. package/fesm2022/rolatech-angular-onboarding-agent-apply-start-page-DC7gyOnS.mjs.map +0 -1
  39. package/fesm2022/rolatech-angular-onboarding-agent-apply-submitted-page-BMkV2V8K.mjs +0 -55
  40. package/fesm2022/rolatech-angular-onboarding-agent-apply-submitted-page-BMkV2V8K.mjs.map +0 -1
  41. package/fesm2022/rolatech-angular-onboarding-agent-onboarding-documents-page-DWBGTj5J.mjs.map +0 -1
@@ -1,206 +0,0 @@
1
- import * as i0 from '@angular/core';
2
- import { inject, ViewEncapsulation, ChangeDetectionStrategy, Component } from '@angular/core';
3
- import { RouterLink } from '@angular/router';
4
- import { onboardingStatusLabel } from '@rolatech/angular-services';
5
- import { AdminOnboardingListFacade, OnboardingPageShell, OnboardingStatusBadge } from './rolatech-angular-onboarding.mjs';
6
-
7
- class AdminOnboardingIndexPage {
8
- facade = inject(AdminOnboardingListFacade);
9
- statusLabel = onboardingStatusLabel;
10
- statuses = [
11
- 'DRAFT',
12
- 'IN_PROGRESS',
13
- 'SUBMITTED',
14
- 'IN_REVIEW',
15
- 'NEED_MORE_INFO',
16
- 'APPROVED',
17
- 'FAILED',
18
- ];
19
- constructor() {
20
- void this.facade.load();
21
- }
22
- onSearch(event) {
23
- const target = event.target;
24
- this.facade.setSearch(target.value);
25
- void this.facade.load();
26
- }
27
- onStatus(event) {
28
- const target = event.target;
29
- const status = target.value ? target.value : undefined;
30
- this.facade.setStatus(status);
31
- void this.facade.load();
32
- }
33
- async reload() {
34
- await this.facade.load();
35
- }
36
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: AdminOnboardingIndexPage, deps: [], target: i0.ɵɵFactoryTarget.Component });
37
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.1", type: AdminOnboardingIndexPage, isStandalone: true, selector: "rolatech-admin-onboarding-index-page", host: { classAttribute: "block" }, providers: [AdminOnboardingListFacade], ngImport: i0, template: `
38
- <rolatech-onboarding-page-shell
39
- title="Onboarding Applications"
40
- subtitle="Review incoming onboarding requests and triage approvals."
41
- kicker="Admin Console"
42
- >
43
- <section class="rounded-2xl border border-(--rt-border-color) bg-(--rt-base-background) p-5 shadow-sm">
44
- <div class="grid gap-3 md:grid-cols-3">
45
- <label class="grid gap-2">
46
- <span class="text-xs font-semibold uppercase tracking-wide text-(--rt-text-secondary)">Search</span>
47
- <input
48
- class="h-10 rounded-xl border border-(--rt-border-color) px-3"
49
- [value]="facade.filters().search || ''"
50
- (input)="onSearch($event)"
51
- placeholder="Organization or contact"
52
- />
53
- </label>
54
-
55
- <label class="grid gap-2">
56
- <span class="text-xs font-semibold uppercase tracking-wide text-(--rt-text-secondary)">Status</span>
57
- <select class="h-10 rounded-xl border border-(--rt-border-color) px-3" [value]="facade.filters().status || ''" (change)="onStatus($event)">
58
- <option value="">All</option>
59
- @for (status of statuses; track status) {
60
- <option [value]="status">{{ statusLabel(status) }}</option>
61
- }
62
- </select>
63
- </label>
64
-
65
- <div class="flex items-end justify-start md:justify-end">
66
- <button
67
- type="button"
68
- class="rounded-xl bg-(--rt-brand-color) px-4 py-2 text-sm font-semibold text-(--rt-text-primary-inverse) transition hover:opacity-90 disabled:cursor-not-allowed disabled:opacity-60"
69
- [disabled]="facade.loading()"
70
- (click)="reload()"
71
- >
72
- Refresh
73
- </button>
74
- </div>
75
- </div>
76
- </section>
77
-
78
- @if (facade.error()) {
79
- <div class="rounded-2xl border border-rose-200 bg-rose-50 px-4 py-3 text-sm text-rose-700">{{ facade.error() }}</div>
80
- }
81
-
82
- <section class="overflow-hidden rounded-2xl border border-(--rt-border-color) bg-(--rt-base-background) shadow-sm">
83
- <table class="min-w-full text-left text-sm">
84
- <thead class="border-b border-(--rt-border-color) bg-(--rt-raised-background) text-(--rt-text-secondary)">
85
- <tr>
86
- <th class="px-4 py-3 font-semibold">ID</th>
87
- <th class="px-4 py-3 font-semibold">Organization</th>
88
- <th class="px-4 py-3 font-semibold">Applicant</th>
89
- <th class="px-4 py-3 font-semibold">Status</th>
90
- </tr>
91
- </thead>
92
- <tbody>
93
- @for (item of facade.items(); track item.id) {
94
- <tr class="border-b border-(--rt-border-color) text-(--rt-text-secondary) last:border-b-0">
95
- <td class="px-4 py-3">
96
- <a [routerLink]="[item.id]" class="font-medium text-(--rt-text-primary) hover:underline cursor-pointer">{{ item.id }}</a>
97
- </td>
98
- <td class="px-4 py-3">{{ item.organizationName || '-' }}</td>
99
- <td class="px-4 py-3">{{ item.contactName || '-' }}</td>
100
- <td class="px-4 py-3">
101
- <rolatech-onboarding-status-badge [status]="item.status" />
102
- </td>
103
- </tr>
104
- }
105
- </tbody>
106
- </table>
107
-
108
- @if (facade.items().length === 0 && !facade.loading()) {
109
- <div class="px-4 py-6 text-sm text-(--rt-text-secondary)">No onboarding applications found.</div>
110
- }
111
- </section>
112
- </rolatech-onboarding-page-shell>
113
- `, isInline: true, dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: OnboardingPageShell, selector: "rolatech-onboarding-page-shell", inputs: ["title", "subtitle", "kicker"] }, { kind: "component", type: OnboardingStatusBadge, selector: "rolatech-onboarding-status-badge", inputs: ["status"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
114
- }
115
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: AdminOnboardingIndexPage, decorators: [{
116
- type: Component,
117
- args: [{
118
- selector: 'rolatech-admin-onboarding-index-page',
119
- standalone: true,
120
- imports: [RouterLink, OnboardingPageShell, OnboardingStatusBadge],
121
- providers: [AdminOnboardingListFacade],
122
- changeDetection: ChangeDetectionStrategy.OnPush,
123
- encapsulation: ViewEncapsulation.None,
124
- host: { class: 'block' },
125
- template: `
126
- <rolatech-onboarding-page-shell
127
- title="Onboarding Applications"
128
- subtitle="Review incoming onboarding requests and triage approvals."
129
- kicker="Admin Console"
130
- >
131
- <section class="rounded-2xl border border-(--rt-border-color) bg-(--rt-base-background) p-5 shadow-sm">
132
- <div class="grid gap-3 md:grid-cols-3">
133
- <label class="grid gap-2">
134
- <span class="text-xs font-semibold uppercase tracking-wide text-(--rt-text-secondary)">Search</span>
135
- <input
136
- class="h-10 rounded-xl border border-(--rt-border-color) px-3"
137
- [value]="facade.filters().search || ''"
138
- (input)="onSearch($event)"
139
- placeholder="Organization or contact"
140
- />
141
- </label>
142
-
143
- <label class="grid gap-2">
144
- <span class="text-xs font-semibold uppercase tracking-wide text-(--rt-text-secondary)">Status</span>
145
- <select class="h-10 rounded-xl border border-(--rt-border-color) px-3" [value]="facade.filters().status || ''" (change)="onStatus($event)">
146
- <option value="">All</option>
147
- @for (status of statuses; track status) {
148
- <option [value]="status">{{ statusLabel(status) }}</option>
149
- }
150
- </select>
151
- </label>
152
-
153
- <div class="flex items-end justify-start md:justify-end">
154
- <button
155
- type="button"
156
- class="rounded-xl bg-(--rt-brand-color) px-4 py-2 text-sm font-semibold text-(--rt-text-primary-inverse) transition hover:opacity-90 disabled:cursor-not-allowed disabled:opacity-60"
157
- [disabled]="facade.loading()"
158
- (click)="reload()"
159
- >
160
- Refresh
161
- </button>
162
- </div>
163
- </div>
164
- </section>
165
-
166
- @if (facade.error()) {
167
- <div class="rounded-2xl border border-rose-200 bg-rose-50 px-4 py-3 text-sm text-rose-700">{{ facade.error() }}</div>
168
- }
169
-
170
- <section class="overflow-hidden rounded-2xl border border-(--rt-border-color) bg-(--rt-base-background) shadow-sm">
171
- <table class="min-w-full text-left text-sm">
172
- <thead class="border-b border-(--rt-border-color) bg-(--rt-raised-background) text-(--rt-text-secondary)">
173
- <tr>
174
- <th class="px-4 py-3 font-semibold">ID</th>
175
- <th class="px-4 py-3 font-semibold">Organization</th>
176
- <th class="px-4 py-3 font-semibold">Applicant</th>
177
- <th class="px-4 py-3 font-semibold">Status</th>
178
- </tr>
179
- </thead>
180
- <tbody>
181
- @for (item of facade.items(); track item.id) {
182
- <tr class="border-b border-(--rt-border-color) text-(--rt-text-secondary) last:border-b-0">
183
- <td class="px-4 py-3">
184
- <a [routerLink]="[item.id]" class="font-medium text-(--rt-text-primary) hover:underline cursor-pointer">{{ item.id }}</a>
185
- </td>
186
- <td class="px-4 py-3">{{ item.organizationName || '-' }}</td>
187
- <td class="px-4 py-3">{{ item.contactName || '-' }}</td>
188
- <td class="px-4 py-3">
189
- <rolatech-onboarding-status-badge [status]="item.status" />
190
- </td>
191
- </tr>
192
- }
193
- </tbody>
194
- </table>
195
-
196
- @if (facade.items().length === 0 && !facade.loading()) {
197
- <div class="px-4 py-6 text-sm text-(--rt-text-secondary)">No onboarding applications found.</div>
198
- }
199
- </section>
200
- </rolatech-onboarding-page-shell>
201
- `,
202
- }]
203
- }], ctorParameters: () => [] });
204
-
205
- export { AdminOnboardingIndexPage };
206
- //# sourceMappingURL=rolatech-angular-onboarding-admin-onboarding-index-page-BO4pC_NU.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rolatech-angular-onboarding-admin-onboarding-index-page-BO4pC_NU.mjs","sources":["../../../../packages/angular-onboarding/src/lib/pages/admin-onboarding/admin-onboarding-index-page.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, inject, ViewEncapsulation } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { onboardingStatusLabel, OnboardingStatus } from '@rolatech/angular-services';\nimport { OnboardingPageShell } from '../../components/onboarding/onboarding-page-shell';\nimport { OnboardingStatusBadge } from '../../components/onboarding/onboarding-status-badge';\nimport { AdminOnboardingListFacade } from '../../store/admin-onboarding-list.facade';\n\n@Component({\n selector: 'rolatech-admin-onboarding-index-page',\n standalone: true,\n imports: [RouterLink, OnboardingPageShell, OnboardingStatusBadge],\n providers: [AdminOnboardingListFacade],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: { class: 'block' },\n template: `\n <rolatech-onboarding-page-shell\n title=\"Onboarding Applications\"\n subtitle=\"Review incoming onboarding requests and triage approvals.\"\n kicker=\"Admin Console\"\n >\n <section class=\"rounded-2xl border border-(--rt-border-color) bg-(--rt-base-background) p-5 shadow-sm\">\n <div class=\"grid gap-3 md:grid-cols-3\">\n <label class=\"grid gap-2\">\n <span class=\"text-xs font-semibold uppercase tracking-wide text-(--rt-text-secondary)\">Search</span>\n <input\n class=\"h-10 rounded-xl border border-(--rt-border-color) px-3\"\n [value]=\"facade.filters().search || ''\"\n (input)=\"onSearch($event)\"\n placeholder=\"Organization or contact\"\n />\n </label>\n\n <label class=\"grid gap-2\">\n <span class=\"text-xs font-semibold uppercase tracking-wide text-(--rt-text-secondary)\">Status</span>\n <select class=\"h-10 rounded-xl border border-(--rt-border-color) px-3\" [value]=\"facade.filters().status || ''\" (change)=\"onStatus($event)\">\n <option value=\"\">All</option>\n @for (status of statuses; track status) {\n <option [value]=\"status\">{{ statusLabel(status) }}</option>\n }\n </select>\n </label>\n\n <div class=\"flex items-end justify-start md:justify-end\">\n <button\n type=\"button\"\n class=\"rounded-xl bg-(--rt-brand-color) px-4 py-2 text-sm font-semibold text-(--rt-text-primary-inverse) transition hover:opacity-90 disabled:cursor-not-allowed disabled:opacity-60\"\n [disabled]=\"facade.loading()\"\n (click)=\"reload()\"\n >\n Refresh\n </button>\n </div>\n </div>\n </section>\n\n @if (facade.error()) {\n <div class=\"rounded-2xl border border-rose-200 bg-rose-50 px-4 py-3 text-sm text-rose-700\">{{ facade.error() }}</div>\n }\n\n <section class=\"overflow-hidden rounded-2xl border border-(--rt-border-color) bg-(--rt-base-background) shadow-sm\">\n <table class=\"min-w-full text-left text-sm\">\n <thead class=\"border-b border-(--rt-border-color) bg-(--rt-raised-background) text-(--rt-text-secondary)\">\n <tr>\n <th class=\"px-4 py-3 font-semibold\">ID</th>\n <th class=\"px-4 py-3 font-semibold\">Organization</th>\n <th class=\"px-4 py-3 font-semibold\">Applicant</th>\n <th class=\"px-4 py-3 font-semibold\">Status</th>\n </tr>\n </thead>\n <tbody>\n @for (item of facade.items(); track item.id) {\n <tr class=\"border-b border-(--rt-border-color) text-(--rt-text-secondary) last:border-b-0\">\n <td class=\"px-4 py-3\">\n <a [routerLink]=\"[item.id]\" class=\"font-medium text-(--rt-text-primary) hover:underline cursor-pointer\">{{ item.id }}</a>\n </td>\n <td class=\"px-4 py-3\">{{ item.organizationName || '-' }}</td>\n <td class=\"px-4 py-3\">{{ item.contactName || '-' }}</td>\n <td class=\"px-4 py-3\">\n <rolatech-onboarding-status-badge [status]=\"item.status\" />\n </td>\n </tr>\n }\n </tbody>\n </table>\n\n @if (facade.items().length === 0 && !facade.loading()) {\n <div class=\"px-4 py-6 text-sm text-(--rt-text-secondary)\">No onboarding applications found.</div>\n }\n </section>\n </rolatech-onboarding-page-shell>\n `,\n})\nexport class AdminOnboardingIndexPage {\n readonly facade = inject(AdminOnboardingListFacade);\n readonly statusLabel = onboardingStatusLabel;\n readonly statuses: OnboardingStatus[] = [\n 'DRAFT',\n 'IN_PROGRESS',\n 'SUBMITTED',\n 'IN_REVIEW',\n 'NEED_MORE_INFO',\n 'APPROVED',\n 'FAILED',\n ];\n\n constructor() {\n void this.facade.load();\n }\n\n onSearch(event: Event): void {\n const target = event.target as HTMLInputElement;\n this.facade.setSearch(target.value);\n void this.facade.load();\n }\n\n onStatus(event: Event): void {\n const target = event.target as HTMLSelectElement;\n const status = target.value ? (target.value as OnboardingStatus) : undefined;\n this.facade.setStatus(status);\n void this.facade.load();\n }\n\n async reload(): Promise<void> {\n await this.facade.load();\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1,419 +0,0 @@
1
- import * as i0 from '@angular/core';
2
- import { inject, effect, ViewEncapsulation, ChangeDetectionStrategy, Component } from '@angular/core';
3
- import { toSignal } from '@angular/core/rxjs-interop';
4
- import * as i1 from '@angular/forms';
5
- import { FormBuilder, Validators, ReactiveFormsModule } from '@angular/forms';
6
- import { ActivatedRoute, RouterLink } from '@angular/router';
7
- import { onboardingDocumentTypeLabel, onboardingIssueTypeLabel } from '@rolatech/angular-services';
8
- import { AdminOnboardingReviewFacade, OnboardingPageShell, OnboardingStatusBadge, OnboardingIssueList } from './rolatech-angular-onboarding.mjs';
9
-
10
- class AdminOnboardingReviewPage {
11
- facade = inject(AdminOnboardingReviewFacade);
12
- fb = inject(FormBuilder);
13
- route = inject(ActivatedRoute);
14
- documentTypeLabel = onboardingDocumentTypeLabel;
15
- issueTypeLabel = onboardingIssueTypeLabel;
16
- documentTypes = [
17
- 'PASSPORT',
18
- 'CERTIFICATE_OF_INCORPORATION',
19
- 'INDUSTRY_CERTIFICATE',
20
- 'PROOF_OF_ADDRESS',
21
- 'BANK_STATEMENT',
22
- 'OTHER',
23
- ];
24
- issueForm = this.fb.nonNullable.group({
25
- fieldKey: ['', [Validators.required]],
26
- documentType: ['PASSPORT', [Validators.required]],
27
- comment: ['', [Validators.required]],
28
- });
29
- paramMap = toSignal(this.route.paramMap, {
30
- initialValue: this.route.snapshot.paramMap,
31
- });
32
- constructor() {
33
- effect(() => {
34
- const applicationId = this.paramMap().get('applicationId');
35
- if (!applicationId) {
36
- return;
37
- }
38
- void this.facade.load(applicationId);
39
- });
40
- }
41
- setComment(event) {
42
- const target = event.target;
43
- this.facade.setComment(target.value);
44
- }
45
- addFieldIssue() {
46
- const value = this.issueForm.getRawValue();
47
- if (!value.comment || !value.fieldKey) {
48
- return;
49
- }
50
- this.facade.addFieldIssue(value.fieldKey, value.comment);
51
- }
52
- addDocumentIssue() {
53
- const value = this.issueForm.getRawValue();
54
- if (!value.comment || !value.documentType) {
55
- return;
56
- }
57
- this.facade.addDocumentIssue(value.documentType, value.comment);
58
- }
59
- async startReview() {
60
- const applicationId = this.paramMap().get('applicationId');
61
- if (!applicationId) {
62
- return;
63
- }
64
- await this.facade.startReview(applicationId);
65
- }
66
- async needMoreInfo() {
67
- const applicationId = this.paramMap().get('applicationId');
68
- if (!applicationId) {
69
- return;
70
- }
71
- await this.facade.requestMoreInfo(applicationId);
72
- }
73
- async approve() {
74
- const applicationId = this.paramMap().get('applicationId');
75
- if (!applicationId) {
76
- return;
77
- }
78
- await this.facade.approve(applicationId);
79
- }
80
- async fail() {
81
- const applicationId = this.paramMap().get('applicationId');
82
- if (!applicationId) {
83
- return;
84
- }
85
- await this.facade.fail(applicationId);
86
- }
87
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: AdminOnboardingReviewPage, deps: [], target: i0.ɵɵFactoryTarget.Component });
88
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.1", type: AdminOnboardingReviewPage, isStandalone: true, selector: "rolatech-admin-onboarding-review-page", host: { classAttribute: "block" }, providers: [AdminOnboardingReviewFacade], ngImport: i0, template: `
89
- <rolatech-onboarding-page-shell
90
- title="Onboarding Review Workspace"
91
- subtitle="Create actionable review notes and make a final decision."
92
- kicker="Admin Console"
93
- >
94
- <div header-leading>
95
- <a
96
- [routerLink]="['../']"
97
- class="inline-flex items-center rounded-xl border border-(--rt-border-color) bg-(--rt-base-background) px-3 py-2 text-sm font-medium text-(--rt-text-secondary) transition hover:bg-(--rt-raised-background) cursor-pointer"
98
- >
99
- &larr; Back
100
- </a>
101
- </div>
102
-
103
- <div header-actions>
104
- <rolatech-onboarding-status-badge [status]="facade.detail()?.status || null" />
105
- </div>
106
-
107
- @if (facade.error()) {
108
- <div class="rounded-2xl border border-rose-200 bg-rose-50 px-4 py-3 text-sm text-rose-700">{{ facade.error() }}</div>
109
- }
110
-
111
- @if (facade.detail(); as detail) {
112
- <section class="rounded-2xl border border-(--rt-border-color) bg-(--rt-base-background) p-6 shadow-sm">
113
- <h2 class="text-lg font-semibold text-(--rt-text-primary)">{{ detail.organizationName || 'Organization' }}</h2>
114
- <p class="mt-1 text-sm text-(--rt-text-secondary)">{{ detail.contactName }} • {{ detail.contactEmail }}</p>
115
-
116
- <label class="mt-6 grid gap-2">
117
- <span class="text-sm font-medium text-(--rt-text-secondary)">Review comment</span>
118
- <textarea
119
- class="min-h-28 rounded-xl border border-(--rt-border-color) px-3 py-2"
120
- [value]="facade.reviewComment()"
121
- (input)="setComment($event)"
122
- placeholder="Add a review summary or final decision context..."
123
- ></textarea>
124
- </label>
125
-
126
- <form
127
- [formGroup]="issueForm"
128
- class="mt-6 grid gap-3 rounded-xl border border-(--rt-border-color) bg-(--rt-raised-background) p-4 md:grid-cols-3"
129
- >
130
- <label class="grid gap-1">
131
- <span class="text-xs font-semibold uppercase tracking-wide text-(--rt-text-secondary)">Field key</span>
132
- <input
133
- formControlName="fieldKey"
134
- class="h-10 rounded-lg border border-(--rt-border-color) px-3"
135
- placeholder="financial.vatNumber"
136
- />
137
- </label>
138
-
139
- <label class="grid gap-1">
140
- <span class="text-xs font-semibold uppercase tracking-wide text-(--rt-text-secondary)">Document type</span>
141
- <select formControlName="documentType" class="h-10 rounded-lg border border-(--rt-border-color) px-3">
142
- @for (type of documentTypes; track type) {
143
- <option [value]="type">{{ documentTypeLabel(type) }}</option>
144
- }
145
- </select>
146
- </label>
147
-
148
- <label class="grid gap-1 md:col-span-3">
149
- <span class="text-xs font-semibold uppercase tracking-wide text-(--rt-text-secondary)">Issue comment</span>
150
- <input
151
- formControlName="comment"
152
- class="h-10 rounded-lg border border-(--rt-border-color) px-3"
153
- placeholder="Describe what needs correction"
154
- />
155
- </label>
156
-
157
- <div class="md:col-span-3 flex flex-wrap gap-2">
158
- <button
159
- type="button"
160
- class="rounded-lg border border-(--rt-border-color) px-3 py-2 text-sm font-medium text-(--rt-text-secondary) hover:bg-(--rt-base-background)"
161
- (click)="addFieldIssue()"
162
- >
163
- Add Field Issue
164
- </button>
165
- <button
166
- type="button"
167
- class="rounded-lg border border-(--rt-border-color) px-3 py-2 text-sm font-medium text-(--rt-text-secondary) hover:bg-(--rt-base-background)"
168
- (click)="addDocumentIssue()"
169
- >
170
- Add Document Issue
171
- </button>
172
- </div>
173
- </form>
174
-
175
- @if (facade.issueDrafts().length > 0) {
176
- <section class="mt-6 space-y-3">
177
- <h3 class="text-sm font-semibold uppercase tracking-wide text-(--rt-text-secondary)">Draft Issues</h3>
178
- @for (item of facade.issueDrafts(); track $index) {
179
- <article class="rounded-xl border border-(--rt-border-color) p-3">
180
- <p class="text-xs font-semibold uppercase tracking-wide text-(--rt-text-secondary)">{{ issueTypeLabel(item.issueType) }}</p>
181
- <p class="mt-1 text-sm text-(--rt-text-secondary)">
182
- {{ item.fieldKey || documentTypeLabel(item.documentType || null) }}
183
- </p>
184
- <p class="mt-1 text-sm text-(--rt-text-primary)">{{ item.comment }}</p>
185
- <button
186
- type="button"
187
- class="mt-2 text-xs font-semibold uppercase tracking-wide text-rose-700"
188
- (click)="facade.removeIssue($index)"
189
- >
190
- Remove
191
- </button>
192
- </article>
193
- }
194
- </section>
195
- }
196
-
197
- <div class="mt-8 flex flex-wrap gap-3">
198
- <button
199
- type="button"
200
- class="rounded-xl border border-(--rt-border-color) px-4 py-2 text-sm font-semibold text-(--rt-text-secondary) hover:bg-(--rt-raised-background)"
201
- [disabled]="facade.saving()"
202
- (click)="startReview()"
203
- >
204
- Start Review
205
- </button>
206
-
207
- <button
208
- type="button"
209
- class="rounded-xl border border-amber-300 bg-amber-50 px-4 py-2 text-sm font-semibold text-amber-800 hover:bg-amber-100"
210
- [disabled]="facade.saving()"
211
- (click)="needMoreInfo()"
212
- >
213
- Need More Info
214
- </button>
215
-
216
- <button
217
- type="button"
218
- class="rounded-xl border border-emerald-300 bg-emerald-50 px-4 py-2 text-sm font-semibold text-emerald-800 hover:bg-emerald-100"
219
- [disabled]="facade.saving()"
220
- (click)="approve()"
221
- >
222
- Approve
223
- </button>
224
-
225
- <button
226
- type="button"
227
- class="rounded-xl border border-rose-300 bg-rose-50 px-4 py-2 text-sm font-semibold text-rose-800 hover:bg-rose-100"
228
- [disabled]="facade.saving()"
229
- (click)="fail()"
230
- >
231
- Fail
232
- </button>
233
- </div>
234
- </section>
235
-
236
- <rolatech-onboarding-issue-list [issues]="detail.issues" />
237
- } @else {
238
- <div
239
- class="rounded-2xl border border-(--rt-border-color) bg-(--rt-base-background) p-5 text-sm text-(--rt-text-secondary) shadow-sm"
240
- >
241
- Loading review workspace...
242
- </div>
243
- }
244
- </rolatech-onboarding-page-shell>
245
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: OnboardingPageShell, selector: "rolatech-onboarding-page-shell", inputs: ["title", "subtitle", "kicker"] }, { kind: "component", type: OnboardingStatusBadge, selector: "rolatech-onboarding-status-badge", inputs: ["status"] }, { kind: "component", type: OnboardingIssueList, selector: "rolatech-onboarding-issue-list", inputs: ["issues"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
246
- }
247
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: AdminOnboardingReviewPage, decorators: [{
248
- type: Component,
249
- args: [{
250
- selector: 'rolatech-admin-onboarding-review-page',
251
- standalone: true,
252
- imports: [ReactiveFormsModule, RouterLink, OnboardingPageShell, OnboardingStatusBadge, OnboardingIssueList],
253
- providers: [AdminOnboardingReviewFacade],
254
- changeDetection: ChangeDetectionStrategy.OnPush,
255
- encapsulation: ViewEncapsulation.None,
256
- host: { class: 'block' },
257
- template: `
258
- <rolatech-onboarding-page-shell
259
- title="Onboarding Review Workspace"
260
- subtitle="Create actionable review notes and make a final decision."
261
- kicker="Admin Console"
262
- >
263
- <div header-leading>
264
- <a
265
- [routerLink]="['../']"
266
- class="inline-flex items-center rounded-xl border border-(--rt-border-color) bg-(--rt-base-background) px-3 py-2 text-sm font-medium text-(--rt-text-secondary) transition hover:bg-(--rt-raised-background) cursor-pointer"
267
- >
268
- &larr; Back
269
- </a>
270
- </div>
271
-
272
- <div header-actions>
273
- <rolatech-onboarding-status-badge [status]="facade.detail()?.status || null" />
274
- </div>
275
-
276
- @if (facade.error()) {
277
- <div class="rounded-2xl border border-rose-200 bg-rose-50 px-4 py-3 text-sm text-rose-700">{{ facade.error() }}</div>
278
- }
279
-
280
- @if (facade.detail(); as detail) {
281
- <section class="rounded-2xl border border-(--rt-border-color) bg-(--rt-base-background) p-6 shadow-sm">
282
- <h2 class="text-lg font-semibold text-(--rt-text-primary)">{{ detail.organizationName || 'Organization' }}</h2>
283
- <p class="mt-1 text-sm text-(--rt-text-secondary)">{{ detail.contactName }} • {{ detail.contactEmail }}</p>
284
-
285
- <label class="mt-6 grid gap-2">
286
- <span class="text-sm font-medium text-(--rt-text-secondary)">Review comment</span>
287
- <textarea
288
- class="min-h-28 rounded-xl border border-(--rt-border-color) px-3 py-2"
289
- [value]="facade.reviewComment()"
290
- (input)="setComment($event)"
291
- placeholder="Add a review summary or final decision context..."
292
- ></textarea>
293
- </label>
294
-
295
- <form
296
- [formGroup]="issueForm"
297
- class="mt-6 grid gap-3 rounded-xl border border-(--rt-border-color) bg-(--rt-raised-background) p-4 md:grid-cols-3"
298
- >
299
- <label class="grid gap-1">
300
- <span class="text-xs font-semibold uppercase tracking-wide text-(--rt-text-secondary)">Field key</span>
301
- <input
302
- formControlName="fieldKey"
303
- class="h-10 rounded-lg border border-(--rt-border-color) px-3"
304
- placeholder="financial.vatNumber"
305
- />
306
- </label>
307
-
308
- <label class="grid gap-1">
309
- <span class="text-xs font-semibold uppercase tracking-wide text-(--rt-text-secondary)">Document type</span>
310
- <select formControlName="documentType" class="h-10 rounded-lg border border-(--rt-border-color) px-3">
311
- @for (type of documentTypes; track type) {
312
- <option [value]="type">{{ documentTypeLabel(type) }}</option>
313
- }
314
- </select>
315
- </label>
316
-
317
- <label class="grid gap-1 md:col-span-3">
318
- <span class="text-xs font-semibold uppercase tracking-wide text-(--rt-text-secondary)">Issue comment</span>
319
- <input
320
- formControlName="comment"
321
- class="h-10 rounded-lg border border-(--rt-border-color) px-3"
322
- placeholder="Describe what needs correction"
323
- />
324
- </label>
325
-
326
- <div class="md:col-span-3 flex flex-wrap gap-2">
327
- <button
328
- type="button"
329
- class="rounded-lg border border-(--rt-border-color) px-3 py-2 text-sm font-medium text-(--rt-text-secondary) hover:bg-(--rt-base-background)"
330
- (click)="addFieldIssue()"
331
- >
332
- Add Field Issue
333
- </button>
334
- <button
335
- type="button"
336
- class="rounded-lg border border-(--rt-border-color) px-3 py-2 text-sm font-medium text-(--rt-text-secondary) hover:bg-(--rt-base-background)"
337
- (click)="addDocumentIssue()"
338
- >
339
- Add Document Issue
340
- </button>
341
- </div>
342
- </form>
343
-
344
- @if (facade.issueDrafts().length > 0) {
345
- <section class="mt-6 space-y-3">
346
- <h3 class="text-sm font-semibold uppercase tracking-wide text-(--rt-text-secondary)">Draft Issues</h3>
347
- @for (item of facade.issueDrafts(); track $index) {
348
- <article class="rounded-xl border border-(--rt-border-color) p-3">
349
- <p class="text-xs font-semibold uppercase tracking-wide text-(--rt-text-secondary)">{{ issueTypeLabel(item.issueType) }}</p>
350
- <p class="mt-1 text-sm text-(--rt-text-secondary)">
351
- {{ item.fieldKey || documentTypeLabel(item.documentType || null) }}
352
- </p>
353
- <p class="mt-1 text-sm text-(--rt-text-primary)">{{ item.comment }}</p>
354
- <button
355
- type="button"
356
- class="mt-2 text-xs font-semibold uppercase tracking-wide text-rose-700"
357
- (click)="facade.removeIssue($index)"
358
- >
359
- Remove
360
- </button>
361
- </article>
362
- }
363
- </section>
364
- }
365
-
366
- <div class="mt-8 flex flex-wrap gap-3">
367
- <button
368
- type="button"
369
- class="rounded-xl border border-(--rt-border-color) px-4 py-2 text-sm font-semibold text-(--rt-text-secondary) hover:bg-(--rt-raised-background)"
370
- [disabled]="facade.saving()"
371
- (click)="startReview()"
372
- >
373
- Start Review
374
- </button>
375
-
376
- <button
377
- type="button"
378
- class="rounded-xl border border-amber-300 bg-amber-50 px-4 py-2 text-sm font-semibold text-amber-800 hover:bg-amber-100"
379
- [disabled]="facade.saving()"
380
- (click)="needMoreInfo()"
381
- >
382
- Need More Info
383
- </button>
384
-
385
- <button
386
- type="button"
387
- class="rounded-xl border border-emerald-300 bg-emerald-50 px-4 py-2 text-sm font-semibold text-emerald-800 hover:bg-emerald-100"
388
- [disabled]="facade.saving()"
389
- (click)="approve()"
390
- >
391
- Approve
392
- </button>
393
-
394
- <button
395
- type="button"
396
- class="rounded-xl border border-rose-300 bg-rose-50 px-4 py-2 text-sm font-semibold text-rose-800 hover:bg-rose-100"
397
- [disabled]="facade.saving()"
398
- (click)="fail()"
399
- >
400
- Fail
401
- </button>
402
- </div>
403
- </section>
404
-
405
- <rolatech-onboarding-issue-list [issues]="detail.issues" />
406
- } @else {
407
- <div
408
- class="rounded-2xl border border-(--rt-border-color) bg-(--rt-base-background) p-5 text-sm text-(--rt-text-secondary) shadow-sm"
409
- >
410
- Loading review workspace...
411
- </div>
412
- }
413
- </rolatech-onboarding-page-shell>
414
- `,
415
- }]
416
- }], ctorParameters: () => [] });
417
-
418
- export { AdminOnboardingReviewPage };
419
- //# sourceMappingURL=rolatech-angular-onboarding-admin-onboarding-review-page-BERcLBeQ.mjs.map