@rolatech/angular-onboarding 20.3.0-beta.2 → 20.3.0-beta.4
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.
- package/README.md +1 -1
- package/fesm2022/rolatech-angular-onboarding-admin-onboarding-detail-page-DREEMvoT.mjs +720 -0
- package/fesm2022/rolatech-angular-onboarding-admin-onboarding-detail-page-DREEMvoT.mjs.map +1 -0
- package/fesm2022/rolatech-angular-onboarding-admin-onboarding-index-page-DP7wffLd.mjs +313 -0
- package/fesm2022/rolatech-angular-onboarding-admin-onboarding-index-page-DP7wffLd.mjs.map +1 -0
- package/fesm2022/rolatech-angular-onboarding-agent-apply-form-page-y02hYlN_.mjs +446 -0
- package/fesm2022/rolatech-angular-onboarding-agent-apply-form-page-y02hYlN_.mjs.map +1 -0
- package/fesm2022/rolatech-angular-onboarding-agent-apply-result-page-CEL4nWb_.mjs +141 -0
- package/fesm2022/rolatech-angular-onboarding-agent-apply-result-page-CEL4nWb_.mjs.map +1 -0
- package/fesm2022/rolatech-angular-onboarding-agent-apply-review-page-DG_D03YW.mjs +453 -0
- package/fesm2022/rolatech-angular-onboarding-agent-apply-review-page-DG_D03YW.mjs.map +1 -0
- package/fesm2022/{rolatech-angular-onboarding-agent-apply-shell-page-DibWYeD1.mjs → rolatech-angular-onboarding-agent-apply-shell-page-CaTvnFzk.mjs} +27 -40
- package/fesm2022/rolatech-angular-onboarding-agent-apply-shell-page-CaTvnFzk.mjs.map +1 -0
- package/fesm2022/{rolatech-angular-onboarding-agent-apply-start-page-DC7gyOnS.mjs → rolatech-angular-onboarding-agent-apply-start-page-BfqO2YWB.mjs} +31 -29
- package/fesm2022/rolatech-angular-onboarding-agent-apply-start-page-BfqO2YWB.mjs.map +1 -0
- package/fesm2022/{rolatech-angular-onboarding-agent-onboarding-documents-page-DWBGTj5J.mjs → rolatech-angular-onboarding-agent-onboarding-documents-page-BKDYZE0e.mjs} +79 -6
- package/fesm2022/rolatech-angular-onboarding-agent-onboarding-documents-page-BKDYZE0e.mjs.map +1 -0
- package/fesm2022/rolatech-angular-onboarding.mjs +2251 -233
- package/fesm2022/rolatech-angular-onboarding.mjs.map +1 -1
- package/package.json +1 -1
- package/types/rolatech-angular-onboarding.d.ts +219 -12
- package/fesm2022/rolatech-angular-onboarding-admin-onboarding-detail-page-DKJQX3cs.mjs +0 -224
- package/fesm2022/rolatech-angular-onboarding-admin-onboarding-detail-page-DKJQX3cs.mjs.map +0 -1
- package/fesm2022/rolatech-angular-onboarding-admin-onboarding-index-page-BO4pC_NU.mjs +0 -206
- package/fesm2022/rolatech-angular-onboarding-admin-onboarding-index-page-BO4pC_NU.mjs.map +0 -1
- package/fesm2022/rolatech-angular-onboarding-agent-apply-banking-page-VYNfR4fy.mjs +0 -133
- package/fesm2022/rolatech-angular-onboarding-agent-apply-banking-page-VYNfR4fy.mjs.map +0 -1
- package/fesm2022/rolatech-angular-onboarding-agent-apply-financial-page-Ck3Rowke.mjs +0 -132
- package/fesm2022/rolatech-angular-onboarding-agent-apply-financial-page-Ck3Rowke.mjs.map +0 -1
- package/fesm2022/rolatech-angular-onboarding-agent-apply-profile-page-DNepDxHu.mjs +0 -122
- package/fesm2022/rolatech-angular-onboarding-agent-apply-profile-page-DNepDxHu.mjs.map +0 -1
- package/fesm2022/rolatech-angular-onboarding-agent-apply-qualification-page-CSwupuKt.mjs +0 -108
- package/fesm2022/rolatech-angular-onboarding-agent-apply-qualification-page-CSwupuKt.mjs.map +0 -1
- package/fesm2022/rolatech-angular-onboarding-agent-apply-review-page-DugCjfvK.mjs +0 -182
- package/fesm2022/rolatech-angular-onboarding-agent-apply-review-page-DugCjfvK.mjs.map +0 -1
- package/fesm2022/rolatech-angular-onboarding-agent-apply-shell-page-DibWYeD1.mjs.map +0 -1
- package/fesm2022/rolatech-angular-onboarding-agent-apply-start-page-DC7gyOnS.mjs.map +0 -1
- package/fesm2022/rolatech-angular-onboarding-agent-apply-submitted-page-BMkV2V8K.mjs +0 -55
- package/fesm2022/rolatech-angular-onboarding-agent-apply-submitted-page-BMkV2V8K.mjs.map +0 -1
- package/fesm2022/rolatech-angular-onboarding-agent-onboarding-documents-page-DWBGTj5J.mjs.map +0 -1
package/package.json
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { Routes, CanActivateFn, CanActivateChildFn } from '@angular/router';
|
|
2
2
|
import * as _angular_forms from '@angular/forms';
|
|
3
|
+
import { FormGroup } from '@angular/forms';
|
|
3
4
|
import * as _rolatech_angular_services from '@rolatech/angular-services';
|
|
4
|
-
import { OnboardingDocumentType, OnboardingApplicationResponse, OnboardingApplicationDetailResponse, OnboardingStatus, OnboardingDocumentResponse, OnboardingIssueResponse, CreateOnboardingApplicationRequest, OnboardingAdminListQuery, onboardingIssueTypeLabel, onboardingDocumentTypeLabel, OnboardingTimelineResponse } from '@rolatech/angular-services';
|
|
5
|
+
import { OnboardingDocumentType, OnboardingApplicationResponse, OnboardingApplicationDetailResponse, OnboardingStatus, OnboardingDocumentResponse, OnboardingIssueResponse, CreateOnboardingApplicationRequest, OnboardingAdminListQuery, onboardingIssueTypeLabel, onboardingDocumentTypeLabel, OnboardingTimelineResponse, OnboardingApplicantType, OnboardingVatMode, onboardingVatModeLabel } from '@rolatech/angular-services';
|
|
5
6
|
import * as _angular_core from '@angular/core';
|
|
7
|
+
import * as _angular_platform_browser from '@angular/platform-browser';
|
|
6
8
|
|
|
7
9
|
declare const AGENT_APPLY_ROUTES: Routes;
|
|
8
10
|
|
|
@@ -10,12 +12,14 @@ declare const AGENT_ONBOARDING_ROUTES: Routes;
|
|
|
10
12
|
|
|
11
13
|
declare const ADMIN_ONBOARDING_ROUTES: Routes;
|
|
12
14
|
|
|
13
|
-
type ApplyRouteStep = '
|
|
15
|
+
type ApplyRouteStep = 'form' | 'review' | 'result';
|
|
16
|
+
type ApplySectionKey = 'profile' | 'qualification' | 'financial' | 'banking';
|
|
14
17
|
interface ApplyStepCompletion {
|
|
15
18
|
profile: boolean;
|
|
16
19
|
qualification: boolean;
|
|
17
20
|
financial: boolean;
|
|
18
21
|
banking: boolean;
|
|
22
|
+
form: boolean;
|
|
19
23
|
}
|
|
20
24
|
interface ApplyStepNavItem {
|
|
21
25
|
label: string;
|
|
@@ -27,26 +31,50 @@ interface ApplyStepNavItem {
|
|
|
27
31
|
interface RequiredDocumentSpec {
|
|
28
32
|
type: OnboardingDocumentType;
|
|
29
33
|
label: string;
|
|
34
|
+
helperText?: string;
|
|
35
|
+
warning?: string;
|
|
36
|
+
}
|
|
37
|
+
type ApplyUploadStatus = 'idle' | 'uploading' | 'uploaded' | 'failed';
|
|
38
|
+
interface ApplyUploadState {
|
|
39
|
+
filename: string | null;
|
|
40
|
+
progress: number;
|
|
41
|
+
status: ApplyUploadStatus;
|
|
42
|
+
error: string | null;
|
|
30
43
|
}
|
|
31
44
|
|
|
32
45
|
declare class AgentApplyFacade {
|
|
33
46
|
private readonly onboardingService;
|
|
34
47
|
private readonly fb;
|
|
35
|
-
private
|
|
48
|
+
private readonly destroyRef;
|
|
36
49
|
readonly loading: _angular_core.WritableSignal<boolean>;
|
|
37
50
|
readonly saving: _angular_core.WritableSignal<boolean>;
|
|
38
51
|
readonly submitting: _angular_core.WritableSignal<boolean>;
|
|
39
52
|
readonly error: _angular_core.WritableSignal<string | null>;
|
|
53
|
+
readonly lastLocalDraftSavedAt: _angular_core.WritableSignal<string | null>;
|
|
40
54
|
readonly application: _angular_core.WritableSignal<OnboardingApplicationResponse | null>;
|
|
41
55
|
readonly detail: _angular_core.WritableSignal<OnboardingApplicationDetailResponse | null>;
|
|
56
|
+
readonly uploadStates: _angular_core.WritableSignal<Partial<Record<OnboardingDocumentType, ApplyUploadState>>>;
|
|
42
57
|
private readonly loadedApplicationId;
|
|
43
58
|
readonly applicationId: _angular_core.Signal<string | null>;
|
|
44
59
|
readonly status: _angular_core.Signal<OnboardingStatus | null>;
|
|
60
|
+
readonly applicantType: _angular_core.Signal<_rolatech_angular_services.OnboardingApplicantType>;
|
|
61
|
+
readonly companyCountry: _angular_core.Signal<string>;
|
|
62
|
+
readonly isCompany: _angular_core.Signal<boolean>;
|
|
63
|
+
readonly isIndividual: _angular_core.Signal<boolean>;
|
|
64
|
+
readonly isUkCompany: _angular_core.Signal<boolean>;
|
|
65
|
+
readonly isChinaCompany: _angular_core.Signal<boolean>;
|
|
66
|
+
readonly hasSubmittedState: _angular_core.Signal<boolean>;
|
|
67
|
+
readonly hasGeneralIssue: _angular_core.Signal<boolean>;
|
|
45
68
|
readonly documents: _angular_core.Signal<OnboardingDocumentResponse[]>;
|
|
46
69
|
readonly issues: _angular_core.Signal<OnboardingIssueResponse[]>;
|
|
47
70
|
readonly timeline: _angular_core.Signal<_rolatech_angular_services.OnboardingTimelineResponse[]>;
|
|
71
|
+
readonly fieldIssueComments: _angular_core.Signal<Record<string, string>>;
|
|
72
|
+
readonly documentIssueComments: _angular_core.Signal<Partial<Record<OnboardingDocumentType, string>>>;
|
|
48
73
|
readonly requiredDocuments: _angular_core.Signal<RequiredDocumentSpec[]>;
|
|
74
|
+
readonly hasActiveUploads: _angular_core.Signal<boolean>;
|
|
49
75
|
readonly completion: _angular_core.Signal<ApplyStepCompletion>;
|
|
76
|
+
readonly readyForReview: _angular_core.Signal<boolean>;
|
|
77
|
+
readonly canSubmit: _angular_core.Signal<boolean>;
|
|
50
78
|
readonly profileForm: _angular_forms.FormGroup<{
|
|
51
79
|
organizationName: _angular_forms.FormControl<string>;
|
|
52
80
|
contactName: _angular_forms.FormControl<string>;
|
|
@@ -64,22 +92,43 @@ declare class AgentApplyFacade {
|
|
|
64
92
|
sortCode: _angular_forms.FormControl<string>;
|
|
65
93
|
accountNumber: _angular_forms.FormControl<string>;
|
|
66
94
|
}>;
|
|
95
|
+
constructor();
|
|
67
96
|
start(request: CreateOnboardingApplicationRequest): Promise<OnboardingApplicationResponse | null>;
|
|
68
97
|
ensureLoaded(applicationId: string, force?: boolean): Promise<void>;
|
|
69
|
-
saveProfile(): Promise<boolean>;
|
|
70
|
-
saveFinancial(): Promise<boolean>;
|
|
71
|
-
saveBanking(): Promise<boolean>;
|
|
98
|
+
saveProfile(reload?: boolean): Promise<boolean>;
|
|
99
|
+
saveFinancial(reload?: boolean): Promise<boolean>;
|
|
100
|
+
saveBanking(reload?: boolean): Promise<boolean>;
|
|
101
|
+
saveFormProgress(): Promise<boolean>;
|
|
72
102
|
uploadDocument(documentType: OnboardingDocumentType, file: File, replacedDocumentId?: string | null): Promise<boolean>;
|
|
73
103
|
submit(): Promise<boolean>;
|
|
74
104
|
getDocument(documentType: OnboardingDocumentType): OnboardingDocumentResponse | null;
|
|
75
105
|
getIssueComment(documentType: OnboardingDocumentType): string | null;
|
|
106
|
+
getFieldIssueComment(fieldKey: string): string | null;
|
|
107
|
+
isFieldLocked(fieldKey: string): boolean;
|
|
108
|
+
isDocumentLocked(documentType: OnboardingDocumentType): boolean;
|
|
76
109
|
canAccessStep(step: ApplyRouteStep): boolean;
|
|
77
|
-
firstIncompleteStep(): Exclude<ApplyRouteStep, '
|
|
110
|
+
firstIncompleteStep(): Exclude<ApplyRouteStep, 'result'>;
|
|
111
|
+
uploadState(documentType: OnboardingDocumentType): ApplyUploadState;
|
|
112
|
+
expectedAccountHolderName(): string;
|
|
113
|
+
formatSortCode(value: string | null | undefined): string;
|
|
114
|
+
private setupAutosave;
|
|
115
|
+
private syncProfileValidators;
|
|
116
|
+
private syncFinancialRules;
|
|
78
117
|
private patchForms;
|
|
79
118
|
private isProfileComplete;
|
|
80
119
|
private isQualificationComplete;
|
|
81
120
|
private isFinancialComplete;
|
|
82
121
|
private isBankingComplete;
|
|
122
|
+
private accountHolderNameValidator;
|
|
123
|
+
private normalizeBankingFields;
|
|
124
|
+
private persistLocalDraft;
|
|
125
|
+
private restoreLocalDraft;
|
|
126
|
+
private clearLocalDraft;
|
|
127
|
+
private localDraftKey;
|
|
128
|
+
private setUploadState;
|
|
129
|
+
private uploadToSignedUrl;
|
|
130
|
+
private defaultCountryCode;
|
|
131
|
+
private onlyDigits;
|
|
83
132
|
private toErrorMessage;
|
|
84
133
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AgentApplyFacade, never>;
|
|
85
134
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AgentApplyFacade>;
|
|
@@ -131,6 +180,20 @@ declare class AdminOnboardingDetailFacade {
|
|
|
131
180
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AdminOnboardingDetailFacade>;
|
|
132
181
|
}
|
|
133
182
|
|
|
183
|
+
interface OnboardingReviewIssueOption {
|
|
184
|
+
key: string;
|
|
185
|
+
label: string;
|
|
186
|
+
comment: string;
|
|
187
|
+
requiresComment?: boolean;
|
|
188
|
+
placeholder?: string;
|
|
189
|
+
}
|
|
190
|
+
interface OnboardingReviewIssueDraft {
|
|
191
|
+
optionKey: string;
|
|
192
|
+
comment: string;
|
|
193
|
+
}
|
|
194
|
+
declare function onboardingFieldIssueOptions(fieldKey: string): OnboardingReviewIssueOption[];
|
|
195
|
+
declare function onboardingDocumentIssueOptions(documentType: OnboardingDocumentType): OnboardingReviewIssueOption[];
|
|
196
|
+
|
|
134
197
|
declare class AdminOnboardingReviewFacade {
|
|
135
198
|
private readonly onboardingAdminService;
|
|
136
199
|
readonly loading: _angular_core.WritableSignal<boolean>;
|
|
@@ -138,18 +201,48 @@ declare class AdminOnboardingReviewFacade {
|
|
|
138
201
|
readonly error: _angular_core.WritableSignal<string | null>;
|
|
139
202
|
readonly detail: _angular_core.WritableSignal<OnboardingApplicationDetailResponse | null>;
|
|
140
203
|
readonly reviewComment: _angular_core.WritableSignal<string>;
|
|
141
|
-
readonly
|
|
204
|
+
readonly fieldIssueDrafts: _angular_core.WritableSignal<Record<string, OnboardingReviewIssueDraft>>;
|
|
205
|
+
readonly documentIssueDrafts: _angular_core.WritableSignal<Partial<Record<OnboardingDocumentType, OnboardingReviewIssueDraft>>>;
|
|
206
|
+
readonly passedFields: _angular_core.WritableSignal<Record<string, boolean>>;
|
|
207
|
+
readonly passedDocuments: _angular_core.WritableSignal<Partial<Record<OnboardingDocumentType, boolean>>>;
|
|
208
|
+
readonly previewLoading: _angular_core.WritableSignal<boolean>;
|
|
209
|
+
readonly previewError: _angular_core.WritableSignal<string | null>;
|
|
210
|
+
readonly previewUrl: _angular_core.WritableSignal<string | null>;
|
|
211
|
+
readonly previewDocumentId: _angular_core.WritableSignal<string | null>;
|
|
212
|
+
readonly requiredDocuments: _angular_core.Signal<RequiredDocumentSpec[]>;
|
|
213
|
+
readonly existingFieldIssues: _angular_core.Signal<Record<string, string>>;
|
|
214
|
+
readonly existingDocumentIssues: _angular_core.Signal<Partial<Record<OnboardingDocumentType, string>>>;
|
|
215
|
+
readonly issueDrafts: _angular_core.Signal<_rolatech_angular_services.NeedMoreInfoOnboardingIssueRequest[]>;
|
|
216
|
+
readonly hasPendingIssues: _angular_core.Signal<boolean>;
|
|
142
217
|
load(applicationId: string): Promise<void>;
|
|
143
218
|
addFieldIssue(fieldKey: string, comment: string): void;
|
|
144
219
|
addDocumentIssue(documentType: OnboardingDocumentType, comment: string): void;
|
|
145
220
|
removeIssue(index: number): void;
|
|
146
221
|
setComment(value: string): void;
|
|
222
|
+
setFieldIssueDraft(fieldKey: string, draft: OnboardingReviewIssueDraft | string | null): void;
|
|
223
|
+
setDocumentIssueDraft(documentType: OnboardingDocumentType, draft: OnboardingReviewIssueDraft | string | null): void;
|
|
224
|
+
toggleFieldPassed(fieldKey: string, passed: boolean): void;
|
|
225
|
+
toggleDocumentPassed(documentType: OnboardingDocumentType, passed: boolean): void;
|
|
226
|
+
fieldDraft(fieldKey: string): OnboardingReviewIssueDraft | null;
|
|
227
|
+
documentDraft(documentType: OnboardingDocumentType): OnboardingReviewIssueDraft | null;
|
|
228
|
+
fieldDraftComment(fieldKey: string): string;
|
|
229
|
+
documentDraftComment(documentType: OnboardingDocumentType): string;
|
|
230
|
+
fieldPassed(fieldKey: string): boolean;
|
|
231
|
+
documentPassed(documentType: OnboardingDocumentType): boolean;
|
|
147
232
|
startReview(applicationId: string): Promise<boolean>;
|
|
148
233
|
requestMoreInfo(applicationId: string): Promise<boolean>;
|
|
149
234
|
approve(applicationId: string): Promise<boolean>;
|
|
150
235
|
fail(applicationId: string): Promise<boolean>;
|
|
236
|
+
openDocumentPreview(documentId: string): Promise<boolean>;
|
|
237
|
+
clearDocumentPreview(): void;
|
|
238
|
+
private clearFieldIssueDraft;
|
|
239
|
+
private clearDocumentIssueDraft;
|
|
240
|
+
private buildIssueDrafts;
|
|
241
|
+
private resetDrafts;
|
|
242
|
+
private normalizeDraft;
|
|
151
243
|
private runAction;
|
|
152
244
|
private toErrorMessage;
|
|
245
|
+
private toPreviewErrorMessage;
|
|
153
246
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AdminOnboardingReviewFacade, never>;
|
|
154
247
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AdminOnboardingReviewFacade>;
|
|
155
248
|
}
|
|
@@ -165,7 +258,7 @@ declare class OnboardingPageShell {
|
|
|
165
258
|
declare class OnboardingStatusBadge {
|
|
166
259
|
readonly status: _angular_core.InputSignal<OnboardingStatus | null>;
|
|
167
260
|
readonly label: _angular_core.Signal<string>;
|
|
168
|
-
readonly badgeClass: _angular_core.Signal<"border-
|
|
261
|
+
readonly badgeClass: _angular_core.Signal<"border-(--rt-border-color) bg-(--rt-raised-background) text-emerald-700" | "border-(--rt-border-color) bg-(--rt-raised-background) text-rose-700" | "border-(--rt-border-color) bg-(--rt-raised-background) text-amber-700" | "border-(--rt-border-color) bg-(--rt-raised-background) text-sky-700" | "border-(--rt-border-color) bg-(--rt-raised-background) text-(--rt-text-secondary)">;
|
|
169
262
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<OnboardingStatusBadge, never>;
|
|
170
263
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<OnboardingStatusBadge, "rolatech-onboarding-status-badge", never, { "status": { "alias": "status"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
171
264
|
}
|
|
@@ -182,17 +275,41 @@ declare class OnboardingDocumentUploader {
|
|
|
182
275
|
readonly helperText: _angular_core.InputSignal<string>;
|
|
183
276
|
readonly documentType: _angular_core.InputSignal<OnboardingDocumentType>;
|
|
184
277
|
readonly document: _angular_core.InputSignal<OnboardingDocumentResponse | null>;
|
|
278
|
+
readonly warning: _angular_core.InputSignal<string | null>;
|
|
185
279
|
readonly comment: _angular_core.InputSignal<string | null>;
|
|
186
280
|
readonly busy: _angular_core.InputSignal<boolean>;
|
|
281
|
+
readonly locked: _angular_core.InputSignal<boolean>;
|
|
282
|
+
readonly uploading: _angular_core.InputSignal<boolean>;
|
|
283
|
+
readonly progress: _angular_core.InputSignal<number>;
|
|
284
|
+
readonly pendingFilename: _angular_core.InputSignal<string | null>;
|
|
285
|
+
readonly uploadError: _angular_core.InputSignal<string | null>;
|
|
187
286
|
readonly acceptedTypes: _angular_core.InputSignal<string>;
|
|
287
|
+
readonly canPreview: _angular_core.InputSignal<boolean>;
|
|
288
|
+
readonly previewBusy: _angular_core.InputSignal<boolean>;
|
|
188
289
|
readonly fileSelected: _angular_core.OutputEmitterRef<{
|
|
189
290
|
documentType: OnboardingDocumentType;
|
|
190
291
|
file: File;
|
|
191
292
|
replacedDocumentId?: string;
|
|
192
293
|
}>;
|
|
294
|
+
readonly previewRequested: _angular_core.OutputEmitterRef<void>;
|
|
295
|
+
readonly buttonLabel: _angular_core.Signal<"Locked" | "Uploading..." | "Replace" | "Upload">;
|
|
193
296
|
onFileChange(event: Event): void;
|
|
194
297
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<OnboardingDocumentUploader, never>;
|
|
195
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<OnboardingDocumentUploader, "rolatech-onboarding-document-uploader", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; "helperText": { "alias": "helperText"; "required": false; "isSignal": true; }; "documentType": { "alias": "documentType"; "required": true; "isSignal": true; }; "document": { "alias": "document"; "required": false; "isSignal": true; }; "comment": { "alias": "comment"; "required": false; "isSignal": true; }; "busy": { "alias": "busy"; "required": false; "isSignal": true; }; "acceptedTypes": { "alias": "acceptedTypes"; "required": false; "isSignal": true; }; }, { "fileSelected": "fileSelected"; }, never, never, true, never>;
|
|
298
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<OnboardingDocumentUploader, "rolatech-onboarding-document-uploader", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; "helperText": { "alias": "helperText"; "required": false; "isSignal": true; }; "documentType": { "alias": "documentType"; "required": true; "isSignal": true; }; "document": { "alias": "document"; "required": false; "isSignal": true; }; "warning": { "alias": "warning"; "required": false; "isSignal": true; }; "comment": { "alias": "comment"; "required": false; "isSignal": true; }; "busy": { "alias": "busy"; "required": false; "isSignal": true; }; "locked": { "alias": "locked"; "required": false; "isSignal": true; }; "uploading": { "alias": "uploading"; "required": false; "isSignal": true; }; "progress": { "alias": "progress"; "required": false; "isSignal": true; }; "pendingFilename": { "alias": "pendingFilename"; "required": false; "isSignal": true; }; "uploadError": { "alias": "uploadError"; "required": false; "isSignal": true; }; "acceptedTypes": { "alias": "acceptedTypes"; "required": false; "isSignal": true; }; "canPreview": { "alias": "canPreview"; "required": false; "isSignal": true; }; "previewBusy": { "alias": "previewBusy"; "required": false; "isSignal": true; }; }, { "fileSelected": "fileSelected"; "previewRequested": "previewRequested"; }, never, never, true, never>;
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
declare class OnboardingDocumentPreviewDialog {
|
|
302
|
+
readonly open: _angular_core.InputSignal<boolean>;
|
|
303
|
+
readonly title: _angular_core.InputSignal<string | null>;
|
|
304
|
+
readonly subtitle: _angular_core.InputSignal<string | null>;
|
|
305
|
+
readonly url: _angular_core.InputSignal<string | null>;
|
|
306
|
+
readonly loading: _angular_core.InputSignal<boolean>;
|
|
307
|
+
readonly error: _angular_core.InputSignal<string | null>;
|
|
308
|
+
readonly closeRequested: _angular_core.OutputEmitterRef<void>;
|
|
309
|
+
private readonly sanitizer;
|
|
310
|
+
readonly safeUrl: _angular_core.Signal<_angular_platform_browser.SafeResourceUrl | null>;
|
|
311
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<OnboardingDocumentPreviewDialog, never>;
|
|
312
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<OnboardingDocumentPreviewDialog, "rolatech-onboarding-document-preview-dialog", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "subtitle": { "alias": "subtitle"; "required": false; "isSignal": true; }; "url": { "alias": "url"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; }, { "closeRequested": "closeRequested"; }, never, never, true, never>;
|
|
196
313
|
}
|
|
197
314
|
|
|
198
315
|
declare class OnboardingIssueList {
|
|
@@ -236,9 +353,99 @@ declare class OnboardingTimelineDrawer {
|
|
|
236
353
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<OnboardingTimelineDrawer, "rolatech-onboarding-timeline-drawer", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "items": { "alias": "items"; "required": false; "isSignal": true; }; "zIndex": { "alias": "zIndex"; "required": false; "isSignal": true; }; }, { "closeRequested": "closeRequested"; }, never, never, true, never>;
|
|
237
354
|
}
|
|
238
355
|
|
|
356
|
+
declare class OnboardingReviewIssuesBanner {
|
|
357
|
+
readonly issues: _angular_core.InputSignal<OnboardingIssueResponse[]>;
|
|
358
|
+
readonly status: _angular_core.InputSignal<OnboardingStatus | null>;
|
|
359
|
+
readonly unresolvedCount: _angular_core.Signal<number>;
|
|
360
|
+
readonly eyebrow: _angular_core.Signal<"More Information Required" | "Review Status">;
|
|
361
|
+
readonly title: _angular_core.Signal<"Review feedback is blocking resubmission." | "The application is now waiting on reviewer action.">;
|
|
362
|
+
readonly description: _angular_core.Signal<"Only the flagged fields and documents should be updated. Approved items stay read-only until review is complete." | "You can monitor status updates and any reviewer feedback from this flow.">;
|
|
363
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<OnboardingReviewIssuesBanner, never>;
|
|
364
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<OnboardingReviewIssuesBanner, "rolatech-onboarding-review-issues-banner", never, { "issues": { "alias": "issues"; "required": false; "isSignal": true; }; "status": { "alias": "status"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
declare class OnboardingQualificationUploadSection {
|
|
368
|
+
readonly documentSpecs: _angular_core.InputSignal<RequiredDocumentSpec[]>;
|
|
369
|
+
readonly documents: _angular_core.InputSignal<OnboardingDocumentResponse[]>;
|
|
370
|
+
readonly issueComments: _angular_core.InputSignal<Partial<Record<OnboardingDocumentType, string>>>;
|
|
371
|
+
readonly lockedDocuments: _angular_core.InputSignal<OnboardingDocumentType[]>;
|
|
372
|
+
readonly uploadStates: _angular_core.InputSignal<Partial<Record<OnboardingDocumentType, ApplyUploadState>>>;
|
|
373
|
+
readonly busy: _angular_core.InputSignal<boolean>;
|
|
374
|
+
readonly fileSelected: _angular_core.OutputEmitterRef<{
|
|
375
|
+
documentType: OnboardingDocumentType;
|
|
376
|
+
file: File;
|
|
377
|
+
replacedDocumentId?: string;
|
|
378
|
+
}>;
|
|
379
|
+
readonly uploadedRequiredCount: _angular_core.Signal<number>;
|
|
380
|
+
documentFor(documentType: OnboardingDocumentType): OnboardingDocumentResponse | null;
|
|
381
|
+
issueCommentFor(documentType: OnboardingDocumentType): string | null;
|
|
382
|
+
isLocked(documentType: OnboardingDocumentType): boolean;
|
|
383
|
+
uploadStateFor(documentType: OnboardingDocumentType): ApplyUploadState;
|
|
384
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<OnboardingQualificationUploadSection, never>;
|
|
385
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<OnboardingQualificationUploadSection, "rolatech-onboarding-qualification-upload-section", never, { "documentSpecs": { "alias": "documentSpecs"; "required": false; "isSignal": true; }; "documents": { "alias": "documents"; "required": false; "isSignal": true; }; "issueComments": { "alias": "issueComments"; "required": false; "isSignal": true; }; "lockedDocuments": { "alias": "lockedDocuments"; "required": false; "isSignal": true; }; "uploadStates": { "alias": "uploadStates"; "required": false; "isSignal": true; }; "busy": { "alias": "busy"; "required": false; "isSignal": true; }; }, { "fileSelected": "fileSelected"; }, never, never, true, never>;
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
declare class OnboardingVatSection {
|
|
389
|
+
readonly form: _angular_core.InputSignal<FormGroup<any>>;
|
|
390
|
+
readonly applicantType: _angular_core.InputSignal<OnboardingApplicantType>;
|
|
391
|
+
readonly companyCountry: _angular_core.InputSignal<string>;
|
|
392
|
+
readonly fieldLocks: _angular_core.InputSignal<Record<string, boolean>>;
|
|
393
|
+
readonly vatRateLabel: _angular_core.InputSignal<string>;
|
|
394
|
+
readonly issueComments: _angular_core.InputSignal<Record<string, string>>;
|
|
395
|
+
readonly isIndividual: _angular_core.Signal<boolean>;
|
|
396
|
+
readonly currentVatMode: _angular_core.Signal<OnboardingVatMode>;
|
|
397
|
+
readonly vatNumberValue: _angular_core.Signal<string>;
|
|
398
|
+
readonly sectionReadOnly: _angular_core.Signal<boolean>;
|
|
399
|
+
readonly vatModeLabel: typeof onboardingVatModeLabel;
|
|
400
|
+
fieldComment(fieldKey: string): string | null;
|
|
401
|
+
isFieldLocked(fieldKey: string): boolean;
|
|
402
|
+
hasError(controlName: string, errorCode: string): boolean;
|
|
403
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<OnboardingVatSection, never>;
|
|
404
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<OnboardingVatSection, "rolatech-onboarding-vat-section", never, { "form": { "alias": "form"; "required": true; "isSignal": true; }; "applicantType": { "alias": "applicantType"; "required": true; "isSignal": true; }; "companyCountry": { "alias": "companyCountry"; "required": true; "isSignal": true; }; "fieldLocks": { "alias": "fieldLocks"; "required": false; "isSignal": true; }; "vatRateLabel": { "alias": "vatRateLabel"; "required": false; "isSignal": true; }; "issueComments": { "alias": "issueComments"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
declare class OnboardingBankingSection {
|
|
408
|
+
readonly form: _angular_core.InputSignal<FormGroup<any>>;
|
|
409
|
+
readonly fieldLocks: _angular_core.InputSignal<Record<string, boolean>>;
|
|
410
|
+
readonly expectedAccountHolderName: _angular_core.InputSignal<string>;
|
|
411
|
+
readonly issueComments: _angular_core.InputSignal<Record<string, string>>;
|
|
412
|
+
fieldComment(fieldKey: string): string | null;
|
|
413
|
+
isFieldLocked(fieldKey: string): boolean;
|
|
414
|
+
hasError(controlName: string, errorCode: string): boolean;
|
|
415
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<OnboardingBankingSection, never>;
|
|
416
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<OnboardingBankingSection, "rolatech-onboarding-banking-section", never, { "form": { "alias": "form"; "required": true; "isSignal": true; }; "fieldLocks": { "alias": "fieldLocks"; "required": false; "isSignal": true; }; "expectedAccountHolderName": { "alias": "expectedAccountHolderName"; "required": false; "isSignal": true; }; "issueComments": { "alias": "issueComments"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
declare class OnboardingReviewRow {
|
|
420
|
+
readonly label: _angular_core.InputSignal<string>;
|
|
421
|
+
readonly value: _angular_core.InputSignal<string | null | undefined>;
|
|
422
|
+
readonly helper: _angular_core.InputSignal<string>;
|
|
423
|
+
readonly existingIssue: _angular_core.InputSignal<string | null>;
|
|
424
|
+
readonly issueOptions: _angular_core.InputSignal<OnboardingReviewIssueOption[]>;
|
|
425
|
+
readonly draftIssue: _angular_core.InputSignal<OnboardingReviewIssueDraft | null>;
|
|
426
|
+
readonly passed: _angular_core.InputSignal<boolean>;
|
|
427
|
+
readonly busy: _angular_core.InputSignal<boolean>;
|
|
428
|
+
readonly actionLabel: _angular_core.InputSignal<string | null>;
|
|
429
|
+
readonly actionDisabled: _angular_core.InputSignal<boolean>;
|
|
430
|
+
readonly selectedIssueKey: _angular_core.Signal<string>;
|
|
431
|
+
readonly activeIssueOption: _angular_core.Signal<OnboardingReviewIssueOption | null>;
|
|
432
|
+
readonly showCustomComment: _angular_core.Signal<boolean>;
|
|
433
|
+
readonly selectedPresetComment: _angular_core.Signal<string>;
|
|
434
|
+
readonly customCommentPlaceholder: _angular_core.Signal<string>;
|
|
435
|
+
readonly passButtonClass: _angular_core.Signal<"border-(--rt-border-color) bg-(--rt-raised-background) text-emerald-800" | "border-(--rt-border-color) bg-(--rt-base-background) text-(--rt-text-secondary)">;
|
|
436
|
+
readonly passedChange: _angular_core.OutputEmitterRef<boolean>;
|
|
437
|
+
readonly draftIssueChange: _angular_core.OutputEmitterRef<OnboardingReviewIssueDraft | null>;
|
|
438
|
+
readonly actionTriggered: _angular_core.OutputEmitterRef<void>;
|
|
439
|
+
togglePassed(): void;
|
|
440
|
+
onIssueSelectionChange(event: Event): void;
|
|
441
|
+
onCustomCommentChange(event: Event): void;
|
|
442
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<OnboardingReviewRow, never>;
|
|
443
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<OnboardingReviewRow, "rolatech-onboarding-review-row", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "helper": { "alias": "helper"; "required": false; "isSignal": true; }; "existingIssue": { "alias": "existingIssue"; "required": false; "isSignal": true; }; "issueOptions": { "alias": "issueOptions"; "required": false; "isSignal": true; }; "draftIssue": { "alias": "draftIssue"; "required": false; "isSignal": true; }; "passed": { "alias": "passed"; "required": false; "isSignal": true; }; "busy": { "alias": "busy"; "required": false; "isSignal": true; }; "actionLabel": { "alias": "actionLabel"; "required": false; "isSignal": true; }; "actionDisabled": { "alias": "actionDisabled"; "required": false; "isSignal": true; }; }, { "passedChange": "passedChange"; "draftIssueChange": "draftIssueChange"; "actionTriggered": "actionTriggered"; }, never, never, true, never>;
|
|
444
|
+
}
|
|
445
|
+
|
|
239
446
|
declare const applicationIdGuard: CanActivateFn;
|
|
240
447
|
|
|
241
448
|
declare const applyStepGuard: CanActivateChildFn;
|
|
242
449
|
|
|
243
|
-
export { ADMIN_ONBOARDING_ROUTES, AGENT_APPLY_ROUTES, AGENT_ONBOARDING_ROUTES, AdminOnboardingDetailFacade, AdminOnboardingListFacade, AdminOnboardingReviewFacade, AgentApplyFacade, AgentOnboardingFacade, OnboardingDocumentUploader, OnboardingIssueList, OnboardingPageShell, OnboardingStatusBadge, OnboardingStepNav, OnboardingSummaryCard, OnboardingTimeline, OnboardingTimelineDrawer, applicationIdGuard, applyStepGuard };
|
|
244
|
-
export type { ApplyRouteStep, ApplyStepCompletion, ApplyStepNavItem, RequiredDocumentSpec };
|
|
450
|
+
export { ADMIN_ONBOARDING_ROUTES, AGENT_APPLY_ROUTES, AGENT_ONBOARDING_ROUTES, AdminOnboardingDetailFacade, AdminOnboardingListFacade, AdminOnboardingReviewFacade, AgentApplyFacade, AgentOnboardingFacade, OnboardingBankingSection, OnboardingDocumentPreviewDialog, OnboardingDocumentUploader, OnboardingIssueList, OnboardingPageShell, OnboardingQualificationUploadSection, OnboardingReviewIssuesBanner, OnboardingReviewRow, OnboardingStatusBadge, OnboardingStepNav, OnboardingSummaryCard, OnboardingTimeline, OnboardingTimelineDrawer, OnboardingVatSection, applicationIdGuard, applyStepGuard, onboardingDocumentIssueOptions, onboardingFieldIssueOptions };
|
|
451
|
+
export type { ApplyRouteStep, ApplySectionKey, ApplyStepCompletion, ApplyStepNavItem, ApplyUploadState, ApplyUploadStatus, OnboardingReviewIssueDraft, OnboardingReviewIssueOption, RequiredDocumentSpec };
|
|
@@ -1,224 +0,0 @@
|
|
|
1
|
-
import * as i0 from '@angular/core';
|
|
2
|
-
import { inject, signal, computed, effect, ViewEncapsulation, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
3
|
-
import { toSignal } from '@angular/core/rxjs-interop';
|
|
4
|
-
import { ActivatedRoute, RouterLink } from '@angular/router';
|
|
5
|
-
import { onboardingApplicantTypeLabel, onboardingVatModeLabel } from '@rolatech/angular-services';
|
|
6
|
-
import { AdminOnboardingDetailFacade, OnboardingPageShell, OnboardingStatusBadge, OnboardingSummaryCard, OnboardingIssueList, OnboardingTimelineDrawer } from './rolatech-angular-onboarding.mjs';
|
|
7
|
-
|
|
8
|
-
class AdminOnboardingDetailPage {
|
|
9
|
-
facade = inject(AdminOnboardingDetailFacade);
|
|
10
|
-
timelineOpen = signal(false, ...(ngDevMode ? [{ debugName: "timelineOpen" }] : []));
|
|
11
|
-
route = inject(ActivatedRoute);
|
|
12
|
-
paramMap = toSignal(this.route.paramMap, {
|
|
13
|
-
initialValue: this.route.snapshot.paramMap,
|
|
14
|
-
});
|
|
15
|
-
subtitle = computed(() => {
|
|
16
|
-
const detail = this.facade.detail();
|
|
17
|
-
if (!detail) {
|
|
18
|
-
return 'Inspect onboarding data, documents, and review notes.';
|
|
19
|
-
}
|
|
20
|
-
return `${detail.organizationName || 'Unknown organization'} • ${detail.contactName || 'Unknown contact'}`;
|
|
21
|
-
}, ...(ngDevMode ? [{ debugName: "subtitle" }] : []));
|
|
22
|
-
profileItems = computed(() => {
|
|
23
|
-
const detail = this.facade.detail();
|
|
24
|
-
if (!detail) {
|
|
25
|
-
return [];
|
|
26
|
-
}
|
|
27
|
-
return [
|
|
28
|
-
{ label: 'Organization', value: detail.organizationName },
|
|
29
|
-
{ label: 'Contact name', value: detail.contactName },
|
|
30
|
-
{ label: 'Contact email', value: detail.contactEmail },
|
|
31
|
-
{ label: 'Contact phone', value: detail.contactPhone },
|
|
32
|
-
{ label: 'Country', value: detail.companyCountry },
|
|
33
|
-
{ label: 'Applicant type', value: onboardingApplicantTypeLabel(detail.applicantType) },
|
|
34
|
-
];
|
|
35
|
-
}, ...(ngDevMode ? [{ debugName: "profileItems" }] : []));
|
|
36
|
-
complianceItems = computed(() => {
|
|
37
|
-
const detail = this.facade.detail();
|
|
38
|
-
if (!detail) {
|
|
39
|
-
return [];
|
|
40
|
-
}
|
|
41
|
-
return [
|
|
42
|
-
{ label: 'VAT mode', value: onboardingVatModeLabel(detail.vatMode ?? null) },
|
|
43
|
-
{ label: 'VAT number', value: detail.vatNumber },
|
|
44
|
-
{ label: 'Bank', value: detail.bankName },
|
|
45
|
-
{ label: 'Account holder', value: detail.accountHolderName },
|
|
46
|
-
{ label: 'Sort code', value: detail.sortCode },
|
|
47
|
-
{ label: 'Account number', value: detail.accountNumber },
|
|
48
|
-
];
|
|
49
|
-
}, ...(ngDevMode ? [{ debugName: "complianceItems" }] : []));
|
|
50
|
-
constructor() {
|
|
51
|
-
effect(() => {
|
|
52
|
-
const applicationId = this.paramMap().get('applicationId');
|
|
53
|
-
if (!applicationId) {
|
|
54
|
-
return;
|
|
55
|
-
}
|
|
56
|
-
void this.facade.load(applicationId);
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
openTimeline() {
|
|
60
|
-
this.timelineOpen.set(true);
|
|
61
|
-
}
|
|
62
|
-
closeTimeline() {
|
|
63
|
-
this.timelineOpen.set(false);
|
|
64
|
-
}
|
|
65
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: AdminOnboardingDetailPage, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
66
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.1", type: AdminOnboardingDetailPage, isStandalone: true, selector: "rolatech-admin-onboarding-detail-page", host: { classAttribute: "block" }, providers: [AdminOnboardingDetailFacade], ngImport: i0, template: `
|
|
67
|
-
<rolatech-onboarding-page-shell title="Onboarding Application Detail" [subtitle]="subtitle()" kicker="Admin Console">
|
|
68
|
-
<div header-leading>
|
|
69
|
-
<a
|
|
70
|
-
[routerLink]="['../']"
|
|
71
|
-
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"
|
|
72
|
-
>
|
|
73
|
-
← Back
|
|
74
|
-
</a>
|
|
75
|
-
</div>
|
|
76
|
-
|
|
77
|
-
<div header-actions>
|
|
78
|
-
<rolatech-onboarding-status-badge [status]="facade.detail()?.status || null" />
|
|
79
|
-
</div>
|
|
80
|
-
|
|
81
|
-
@if (facade.error()) {
|
|
82
|
-
<div class="rounded-2xl border border-rose-200 bg-rose-50 px-4 py-3 text-sm text-rose-700">{{ facade.error() }}</div>
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
@if (facade.detail(); as detail) {
|
|
86
|
-
<section class="rounded-2xl border border-(--rt-border-color) bg-(--rt-base-background) p-5 shadow-sm">
|
|
87
|
-
<div class="flex flex-wrap items-center justify-between gap-3">
|
|
88
|
-
<p class="text-sm text-(--rt-text-secondary)">
|
|
89
|
-
Application ID: <span class="font-semibold text-(--rt-text-primary)">{{ detail.id }}</span>
|
|
90
|
-
</p>
|
|
91
|
-
<div class="flex flex-wrap items-center gap-2">
|
|
92
|
-
<button
|
|
93
|
-
type="button"
|
|
94
|
-
class="rounded-xl border border-(--rt-border-color) bg-(--rt-base-background) px-4 py-2 text-sm font-semibold text-(--rt-text-secondary) transition hover:bg-(--rt-raised-background)"
|
|
95
|
-
(click)="openTimeline()"
|
|
96
|
-
>
|
|
97
|
-
Timeline
|
|
98
|
-
</button>
|
|
99
|
-
<a
|
|
100
|
-
[routerLink]="['review']"
|
|
101
|
-
class="rounded-xl bg-(--rt-brand-color) px-4 py-2 text-sm font-semibold text-(--rt-text-primary-inverse) transition hover:opacity-90 cursor-pointer"
|
|
102
|
-
>
|
|
103
|
-
Open Review
|
|
104
|
-
</a>
|
|
105
|
-
</div>
|
|
106
|
-
</div>
|
|
107
|
-
</section>
|
|
108
|
-
|
|
109
|
-
<rolatech-onboarding-summary-card [title]="'Applicant Profile'" [items]="profileItems()" />
|
|
110
|
-
|
|
111
|
-
<rolatech-onboarding-summary-card [title]="'Compliance & Banking'" [items]="complianceItems()" />
|
|
112
|
-
|
|
113
|
-
<rolatech-onboarding-issue-list [issues]="detail.issues" />
|
|
114
|
-
} @else {
|
|
115
|
-
<div
|
|
116
|
-
class="rounded-2xl border border-(--rt-border-color) bg-(--rt-base-background) p-5 text-sm text-(--rt-text-secondary) shadow-sm"
|
|
117
|
-
>
|
|
118
|
-
Loading application details...
|
|
119
|
-
</div>
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
@if (facade.detail(); as detail) {
|
|
123
|
-
<rolatech-onboarding-timeline-drawer
|
|
124
|
-
floating
|
|
125
|
-
[open]="timelineOpen()"
|
|
126
|
-
[title]="'Application Timeline'"
|
|
127
|
-
[items]="detail.timeline"
|
|
128
|
-
[zIndex]="9100"
|
|
129
|
-
(closeRequested)="closeTimeline()"
|
|
130
|
-
/>
|
|
131
|
-
}
|
|
132
|
-
</rolatech-onboarding-page-shell>
|
|
133
|
-
`, 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"] }, { kind: "component", type: OnboardingSummaryCard, selector: "rolatech-onboarding-summary-card", inputs: ["title", "items"] }, { kind: "component", type: OnboardingIssueList, selector: "rolatech-onboarding-issue-list", inputs: ["issues"] }, { kind: "component", type: OnboardingTimelineDrawer, selector: "rolatech-onboarding-timeline-drawer", inputs: ["open", "title", "items", "zIndex"], outputs: ["closeRequested"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
134
|
-
}
|
|
135
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: AdminOnboardingDetailPage, decorators: [{
|
|
136
|
-
type: Component,
|
|
137
|
-
args: [{
|
|
138
|
-
selector: 'rolatech-admin-onboarding-detail-page',
|
|
139
|
-
standalone: true,
|
|
140
|
-
imports: [
|
|
141
|
-
RouterLink,
|
|
142
|
-
OnboardingPageShell,
|
|
143
|
-
OnboardingStatusBadge,
|
|
144
|
-
OnboardingSummaryCard,
|
|
145
|
-
OnboardingIssueList,
|
|
146
|
-
OnboardingTimelineDrawer,
|
|
147
|
-
],
|
|
148
|
-
providers: [AdminOnboardingDetailFacade],
|
|
149
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
150
|
-
encapsulation: ViewEncapsulation.None,
|
|
151
|
-
host: { class: 'block' },
|
|
152
|
-
template: `
|
|
153
|
-
<rolatech-onboarding-page-shell title="Onboarding Application Detail" [subtitle]="subtitle()" kicker="Admin Console">
|
|
154
|
-
<div header-leading>
|
|
155
|
-
<a
|
|
156
|
-
[routerLink]="['../']"
|
|
157
|
-
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"
|
|
158
|
-
>
|
|
159
|
-
← Back
|
|
160
|
-
</a>
|
|
161
|
-
</div>
|
|
162
|
-
|
|
163
|
-
<div header-actions>
|
|
164
|
-
<rolatech-onboarding-status-badge [status]="facade.detail()?.status || null" />
|
|
165
|
-
</div>
|
|
166
|
-
|
|
167
|
-
@if (facade.error()) {
|
|
168
|
-
<div class="rounded-2xl border border-rose-200 bg-rose-50 px-4 py-3 text-sm text-rose-700">{{ facade.error() }}</div>
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
@if (facade.detail(); as detail) {
|
|
172
|
-
<section class="rounded-2xl border border-(--rt-border-color) bg-(--rt-base-background) p-5 shadow-sm">
|
|
173
|
-
<div class="flex flex-wrap items-center justify-between gap-3">
|
|
174
|
-
<p class="text-sm text-(--rt-text-secondary)">
|
|
175
|
-
Application ID: <span class="font-semibold text-(--rt-text-primary)">{{ detail.id }}</span>
|
|
176
|
-
</p>
|
|
177
|
-
<div class="flex flex-wrap items-center gap-2">
|
|
178
|
-
<button
|
|
179
|
-
type="button"
|
|
180
|
-
class="rounded-xl border border-(--rt-border-color) bg-(--rt-base-background) px-4 py-2 text-sm font-semibold text-(--rt-text-secondary) transition hover:bg-(--rt-raised-background)"
|
|
181
|
-
(click)="openTimeline()"
|
|
182
|
-
>
|
|
183
|
-
Timeline
|
|
184
|
-
</button>
|
|
185
|
-
<a
|
|
186
|
-
[routerLink]="['review']"
|
|
187
|
-
class="rounded-xl bg-(--rt-brand-color) px-4 py-2 text-sm font-semibold text-(--rt-text-primary-inverse) transition hover:opacity-90 cursor-pointer"
|
|
188
|
-
>
|
|
189
|
-
Open Review
|
|
190
|
-
</a>
|
|
191
|
-
</div>
|
|
192
|
-
</div>
|
|
193
|
-
</section>
|
|
194
|
-
|
|
195
|
-
<rolatech-onboarding-summary-card [title]="'Applicant Profile'" [items]="profileItems()" />
|
|
196
|
-
|
|
197
|
-
<rolatech-onboarding-summary-card [title]="'Compliance & Banking'" [items]="complianceItems()" />
|
|
198
|
-
|
|
199
|
-
<rolatech-onboarding-issue-list [issues]="detail.issues" />
|
|
200
|
-
} @else {
|
|
201
|
-
<div
|
|
202
|
-
class="rounded-2xl border border-(--rt-border-color) bg-(--rt-base-background) p-5 text-sm text-(--rt-text-secondary) shadow-sm"
|
|
203
|
-
>
|
|
204
|
-
Loading application details...
|
|
205
|
-
</div>
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
@if (facade.detail(); as detail) {
|
|
209
|
-
<rolatech-onboarding-timeline-drawer
|
|
210
|
-
floating
|
|
211
|
-
[open]="timelineOpen()"
|
|
212
|
-
[title]="'Application Timeline'"
|
|
213
|
-
[items]="detail.timeline"
|
|
214
|
-
[zIndex]="9100"
|
|
215
|
-
(closeRequested)="closeTimeline()"
|
|
216
|
-
/>
|
|
217
|
-
}
|
|
218
|
-
</rolatech-onboarding-page-shell>
|
|
219
|
-
`,
|
|
220
|
-
}]
|
|
221
|
-
}], ctorParameters: () => [] });
|
|
222
|
-
|
|
223
|
-
export { AdminOnboardingDetailPage };
|
|
224
|
-
//# sourceMappingURL=rolatech-angular-onboarding-admin-onboarding-detail-page-DKJQX3cs.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rolatech-angular-onboarding-admin-onboarding-detail-page-DKJQX3cs.mjs","sources":["../../../../packages/angular-onboarding/src/lib/pages/admin-onboarding/admin-onboarding-detail-page.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, computed, effect, inject, signal, ViewEncapsulation } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { ActivatedRoute, RouterLink } from '@angular/router';\nimport { onboardingApplicantTypeLabel, onboardingVatModeLabel } from '@rolatech/angular-services';\nimport { OnboardingIssueList } from '../../components/onboarding/onboarding-issue-list';\nimport { OnboardingPageShell } from '../../components/onboarding/onboarding-page-shell';\nimport { OnboardingStatusBadge } from '../../components/onboarding/onboarding-status-badge';\nimport { OnboardingSummaryCard } from '../../components/onboarding/onboarding-summary-card';\nimport { OnboardingTimelineDrawer } from '../../components/onboarding/onboarding-timeline-drawer';\nimport { AdminOnboardingDetailFacade } from '../../store/admin-onboarding-detail.facade';\n\n@Component({\n selector: 'rolatech-admin-onboarding-detail-page',\n standalone: true,\n imports: [\n RouterLink,\n OnboardingPageShell,\n OnboardingStatusBadge,\n OnboardingSummaryCard,\n OnboardingIssueList,\n OnboardingTimelineDrawer,\n ],\n providers: [AdminOnboardingDetailFacade],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: { class: 'block' },\n template: `\n <rolatech-onboarding-page-shell title=\"Onboarding Application Detail\" [subtitle]=\"subtitle()\" kicker=\"Admin Console\">\n <div header-leading>\n <a\n [routerLink]=\"['../']\"\n 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\"\n >\n ← Back\n </a>\n </div>\n\n <div header-actions>\n <rolatech-onboarding-status-badge [status]=\"facade.detail()?.status || null\" />\n </div>\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 @if (facade.detail(); as detail) {\n <section class=\"rounded-2xl border border-(--rt-border-color) bg-(--rt-base-background) p-5 shadow-sm\">\n <div class=\"flex flex-wrap items-center justify-between gap-3\">\n <p class=\"text-sm text-(--rt-text-secondary)\">\n Application ID: <span class=\"font-semibold text-(--rt-text-primary)\">{{ detail.id }}</span>\n </p>\n <div class=\"flex flex-wrap items-center gap-2\">\n <button\n type=\"button\"\n class=\"rounded-xl border border-(--rt-border-color) bg-(--rt-base-background) px-4 py-2 text-sm font-semibold text-(--rt-text-secondary) transition hover:bg-(--rt-raised-background)\"\n (click)=\"openTimeline()\"\n >\n Timeline\n </button>\n <a\n [routerLink]=\"['review']\"\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 cursor-pointer\"\n >\n Open Review\n </a>\n </div>\n </div>\n </section>\n\n <rolatech-onboarding-summary-card [title]=\"'Applicant Profile'\" [items]=\"profileItems()\" />\n\n <rolatech-onboarding-summary-card [title]=\"'Compliance & Banking'\" [items]=\"complianceItems()\" />\n\n <rolatech-onboarding-issue-list [issues]=\"detail.issues\" />\n } @else {\n <div\n class=\"rounded-2xl border border-(--rt-border-color) bg-(--rt-base-background) p-5 text-sm text-(--rt-text-secondary) shadow-sm\"\n >\n Loading application details...\n </div>\n }\n\n @if (facade.detail(); as detail) {\n <rolatech-onboarding-timeline-drawer\n floating\n [open]=\"timelineOpen()\"\n [title]=\"'Application Timeline'\"\n [items]=\"detail.timeline\"\n [zIndex]=\"9100\"\n (closeRequested)=\"closeTimeline()\"\n />\n }\n </rolatech-onboarding-page-shell>\n `,\n})\nexport class AdminOnboardingDetailPage {\n readonly facade = inject(AdminOnboardingDetailFacade);\n readonly timelineOpen = signal(false);\n private readonly route = inject(ActivatedRoute);\n\n private readonly paramMap = toSignal(this.route.paramMap, {\n initialValue: this.route.snapshot.paramMap,\n });\n\n readonly subtitle = computed(() => {\n const detail = this.facade.detail();\n\n if (!detail) {\n return 'Inspect onboarding data, documents, and review notes.';\n }\n\n return `${detail.organizationName || 'Unknown organization'} • ${detail.contactName || 'Unknown contact'}`;\n });\n\n readonly profileItems = computed(() => {\n const detail = this.facade.detail();\n if (!detail) {\n return [];\n }\n\n return [\n { label: 'Organization', value: detail.organizationName },\n { label: 'Contact name', value: detail.contactName },\n { label: 'Contact email', value: detail.contactEmail },\n { label: 'Contact phone', value: detail.contactPhone },\n { label: 'Country', value: detail.companyCountry },\n { label: 'Applicant type', value: onboardingApplicantTypeLabel(detail.applicantType) },\n ];\n });\n\n readonly complianceItems = computed(() => {\n const detail = this.facade.detail();\n if (!detail) {\n return [];\n }\n\n return [\n { label: 'VAT mode', value: onboardingVatModeLabel(detail.vatMode ?? null) },\n { label: 'VAT number', value: detail.vatNumber },\n { label: 'Bank', value: detail.bankName },\n { label: 'Account holder', value: detail.accountHolderName },\n { label: 'Sort code', value: detail.sortCode },\n { label: 'Account number', value: detail.accountNumber },\n ];\n });\n\n constructor() {\n effect(() => {\n const applicationId = this.paramMap().get('applicationId');\n\n if (!applicationId) {\n return;\n }\n\n void this.facade.load(applicationId);\n });\n }\n\n openTimeline(): void {\n this.timelineOpen.set(true);\n }\n\n closeTimeline(): void {\n this.timelineOpen.set(false);\n }\n}\n"],"names":[],"mappings":"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"}
|