@idsoftsource/initial-process 1.2.7 → 1.2.8
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.
|
@@ -1,31 +1,31 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { InjectionToken, inject, Injectable, Optional, Inject, EventEmitter, Output, Input, Directive, forwardRef, NgModule, Component, signal, Pipe, computed, effect, ElementRef, ViewChild } from '@angular/core';
|
|
3
|
-
import * as
|
|
3
|
+
import * as i11 from '@angular/common';
|
|
4
4
|
import { CommonModule } from '@angular/common';
|
|
5
|
-
import * as
|
|
5
|
+
import * as i8 from '@angular/forms';
|
|
6
6
|
import { NG_VALUE_ACCESSOR, COMPOSITION_BUFFER_MODE, Validators, FormControl, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
7
|
-
import * as
|
|
7
|
+
import * as i2 from '@angular/router';
|
|
8
8
|
import { RouterModule } from '@angular/router';
|
|
9
|
-
import { map, of, tap, Subscription, switchMap, finalize, catchError, EMPTY, Subject, firstValueFrom, takeUntil } from 'rxjs';
|
|
9
|
+
import { map, of, tap as tap$1, Subscription, switchMap, finalize, catchError, EMPTY, Subject, firstValueFrom, takeUntil } from 'rxjs';
|
|
10
10
|
import * as i1 from '@angular/common/http';
|
|
11
11
|
import { HttpClient, HttpParams, HttpHeaders, HttpErrorResponse } from '@angular/common/http';
|
|
12
12
|
import * as i7 from 'ngx-bootstrap/modal';
|
|
13
13
|
import * as i9 from '@auth0/auth0-angular';
|
|
14
14
|
import * as i6 from '@rangs/auth0-lib';
|
|
15
|
-
import * as
|
|
15
|
+
import * as i12 from '@ng-select/ng-select';
|
|
16
16
|
import { NgSelectModule } from '@ng-select/ng-select';
|
|
17
|
-
import * as
|
|
17
|
+
import * as i14 from 'ngx-bootstrap/accordion';
|
|
18
18
|
import { AccordionModule } from 'ngx-bootstrap/accordion';
|
|
19
19
|
import { ɵgetDOM as _getDOM } from '@angular/platform-browser';
|
|
20
20
|
import { createTextMaskInputElement } from 'text-mask-core/dist/textMaskCore';
|
|
21
21
|
import { trigger, state, transition, style, animate } from '@angular/animations';
|
|
22
|
-
import { tap
|
|
23
|
-
import * as
|
|
22
|
+
import { tap, shareReplay, debounceTime, distinctUntilChanged } from 'rxjs/operators';
|
|
23
|
+
import * as i12$1 from 'ngx-bootstrap/datepicker';
|
|
24
24
|
import { BsDatepickerModule } from 'ngx-bootstrap/datepicker';
|
|
25
25
|
import { ToastrService } from 'ngx-toastr';
|
|
26
|
-
import * as
|
|
26
|
+
import * as i12$2 from 'ngx-bootstrap/tooltip';
|
|
27
27
|
import { TooltipModule } from 'ngx-bootstrap/tooltip';
|
|
28
|
-
import * as
|
|
28
|
+
import * as i13 from 'ngx-bootstrap/tabs';
|
|
29
29
|
import { TabsModule } from 'ngx-bootstrap/tabs';
|
|
30
30
|
import { GoogleMapsModule } from '@angular/google-maps';
|
|
31
31
|
|
|
@@ -1358,6 +1358,87 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
1358
1358
|
args: [{ providedIn: 'root' }]
|
|
1359
1359
|
}] });
|
|
1360
1360
|
|
|
1361
|
+
const API_BASE_URL = new InjectionToken('API_BASE_URL');
|
|
1362
|
+
|
|
1363
|
+
const cachedStates$1 = new Map();
|
|
1364
|
+
class PostalCodeServices {
|
|
1365
|
+
httpClient;
|
|
1366
|
+
apiUrl;
|
|
1367
|
+
selectedCountryCode = 'US';
|
|
1368
|
+
endpoint = 'PostalCode';
|
|
1369
|
+
cachedStates = new Map();
|
|
1370
|
+
statesRequestCache = new Map();
|
|
1371
|
+
get url() {
|
|
1372
|
+
return `${this.endpoint}`;
|
|
1373
|
+
}
|
|
1374
|
+
constructor(httpClient, apiUrl) {
|
|
1375
|
+
this.httpClient = httpClient;
|
|
1376
|
+
this.apiUrl = apiUrl;
|
|
1377
|
+
}
|
|
1378
|
+
getCountryCode() {
|
|
1379
|
+
return this.selectedCountryCode;
|
|
1380
|
+
}
|
|
1381
|
+
GetStatesByCountryCode(countryCode) {
|
|
1382
|
+
const code = countryCode || 'US'; // ✅ normalize first
|
|
1383
|
+
// ✅ 1. Return from data cache
|
|
1384
|
+
if (cachedStates$1.has(code)) {
|
|
1385
|
+
return of(cachedStates$1.get(code));
|
|
1386
|
+
}
|
|
1387
|
+
// ✅ 2. Return existing request if in progress
|
|
1388
|
+
if (this.statesRequestCache.has(code)) {
|
|
1389
|
+
return this.statesRequestCache.get(code);
|
|
1390
|
+
}
|
|
1391
|
+
// ✅ 3. Make API call only once
|
|
1392
|
+
const request$ = this.httpClient
|
|
1393
|
+
.get(`${this.url}/GetStatesByCountryCode?countryCode=${code}`)
|
|
1394
|
+
.pipe(tap(states => cachedStates$1.set(code, states)), shareReplay(1) // 🔥 important
|
|
1395
|
+
);
|
|
1396
|
+
this.statesRequestCache.set(code, request$);
|
|
1397
|
+
return request$;
|
|
1398
|
+
}
|
|
1399
|
+
GetCountiesByState(countryCode, stateCode) {
|
|
1400
|
+
countryCode = 'US';
|
|
1401
|
+
return this.httpClient.get(`${this.url}/GetCountiesByState/${countryCode}/${stateCode}`);
|
|
1402
|
+
}
|
|
1403
|
+
getCountiesByStates(countryCode, stateCodes) {
|
|
1404
|
+
countryCode = 'US';
|
|
1405
|
+
return this.httpClient.post(`${this.url}/GetCountiesByStates/${countryCode}`, stateCodes);
|
|
1406
|
+
}
|
|
1407
|
+
GetZipcodesByCounty(countryCode, countyName) {
|
|
1408
|
+
countryCode = 'US';
|
|
1409
|
+
return this.httpClient.get(`${this.url}/GetZipcodesByCounty/${countryCode}/${countyName}`);
|
|
1410
|
+
}
|
|
1411
|
+
SearchZipcodeDetails(countryCode, zipCode) {
|
|
1412
|
+
countryCode = 'US';
|
|
1413
|
+
return this.httpClient.get(`${this.url}/SearchZipcodeDetails/${countryCode}/${zipCode}`);
|
|
1414
|
+
}
|
|
1415
|
+
GetNearestZipcodeDetails(countryCode, zipCode, totalCount) {
|
|
1416
|
+
countryCode = 'US';
|
|
1417
|
+
return this.httpClient.get(`${this.url}/GetNearestZipcodeDetails/${countryCode}/${zipCode}/${totalCount}`);
|
|
1418
|
+
}
|
|
1419
|
+
GetZipcodeDetails(countryCode, zipCode) {
|
|
1420
|
+
countryCode = 'US';
|
|
1421
|
+
return this.httpClient.get(`${this.url}/GetZipcodeDetails/${countryCode}/${zipCode}`);
|
|
1422
|
+
}
|
|
1423
|
+
GetZipcodeDetailsByCoordinate(countryCode, latitude, longitude) {
|
|
1424
|
+
countryCode = 'US';
|
|
1425
|
+
return this.httpClient.get(`${this.url}/GetZipcodeDetailsByCoordinate/${countryCode}/${latitude}/${longitude}`);
|
|
1426
|
+
}
|
|
1427
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: PostalCodeServices, deps: [{ token: i1.HttpClient }, { token: API_BASE_URL, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1428
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: PostalCodeServices, providedIn: 'root' });
|
|
1429
|
+
}
|
|
1430
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: PostalCodeServices, decorators: [{
|
|
1431
|
+
type: Injectable,
|
|
1432
|
+
args: [{
|
|
1433
|
+
providedIn: 'root',
|
|
1434
|
+
}]
|
|
1435
|
+
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: undefined, decorators: [{
|
|
1436
|
+
type: Optional
|
|
1437
|
+
}, {
|
|
1438
|
+
type: Inject,
|
|
1439
|
+
args: [API_BASE_URL]
|
|
1440
|
+
}] }] });
|
|
1441
|
+
|
|
1361
1442
|
class StepperComponent {
|
|
1362
1443
|
store;
|
|
1363
1444
|
steps = [
|
|
@@ -1380,7 +1461,7 @@ class StepperComponent {
|
|
|
1380
1461
|
}
|
|
1381
1462
|
}
|
|
1382
1463
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: StepperComponent, deps: [{ token: CredentialingStore }], target: i0.ɵɵFactoryTarget.Component });
|
|
1383
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: StepperComponent, isStandalone: false, selector: "app-stepper", ngImport: i0, template: "<div class=\"stepper-wrapper\">\r\n <div class=\"tabs\">\r\n <div\r\n *ngFor=\"let step of steps; let i = index\"\r\n class=\"tab\"\r\n [class.active]=\"store.currentStep() === i + 1\"\r\n [class.completed]=\"store.currentStep() > i + 1\"\r\n (click)=\"goToStep(i)\"\r\n >\r\n {{ step }}\r\n </div>\r\n <div class=\"align-items-center d-flex step-count\">\r\n Step {{ store.currentStep() }}/{{ steps.length }}\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".stepper-wrapper{display:flex;align-items:center}.stepper-wrapper .tabs{width:100%;display:flex}.stepper-wrapper .tabs .tab{padding:9px 36.4px;cursor:pointer;background-color:#f1f4fa;color:#4077ad;font-weight:500;transition:all .3s;text-align:center}.stepper-wrapper .tabs .tab.active,.stepper-wrapper .tabs .tab.completed{background-color:#4077ad;color:#fff}.stepper-wrapper .step-count{font-weight:500;color:#fff;background:#4077ad;width:10%;justify-content:center}@media screen and (max-width: 767px){.stepper-wrapper .tabs{width:100%;display:flex;flex-direction:column}.stepper-wrapper .step-count{width:100%;padding:8px}}\n"], dependencies: [{ kind: "directive", type:
|
|
1464
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: StepperComponent, isStandalone: false, selector: "app-stepper", ngImport: i0, template: "<div class=\"stepper-wrapper\">\r\n <div class=\"tabs\">\r\n <div\r\n *ngFor=\"let step of steps; let i = index\"\r\n class=\"tab\"\r\n [class.active]=\"store.currentStep() === i + 1\"\r\n [class.completed]=\"store.currentStep() > i + 1\"\r\n (click)=\"goToStep(i)\"\r\n >\r\n {{ step }}\r\n </div>\r\n <div class=\"align-items-center d-flex step-count\">\r\n Step {{ store.currentStep() }}/{{ steps.length }}\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".stepper-wrapper{display:flex;align-items:center}.stepper-wrapper .tabs{width:100%;display:flex}.stepper-wrapper .tabs .tab{padding:9px 36.4px;cursor:pointer;background-color:#f1f4fa;color:#4077ad;font-weight:500;transition:all .3s;text-align:center}.stepper-wrapper .tabs .tab.active,.stepper-wrapper .tabs .tab.completed{background-color:#4077ad;color:#fff}.stepper-wrapper .step-count{font-weight:500;color:#fff;background:#4077ad;width:10%;justify-content:center}@media screen and (max-width: 767px){.stepper-wrapper .tabs{width:100%;display:flex;flex-direction:column}.stepper-wrapper .step-count{width:100%;padding:8px}}\n"], dependencies: [{ kind: "directive", type: i11.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
|
|
1384
1465
|
}
|
|
1385
1466
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: StepperComponent, decorators: [{
|
|
1386
1467
|
type: Component,
|
|
@@ -1474,6 +1555,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
1474
1555
|
}]
|
|
1475
1556
|
}], ctorParameters: () => [{ type: i1.HttpClient }] });
|
|
1476
1557
|
|
|
1558
|
+
class UserService {
|
|
1559
|
+
userDetails = {};
|
|
1560
|
+
setUserDetails(data) {
|
|
1561
|
+
this.userDetails = data;
|
|
1562
|
+
}
|
|
1563
|
+
getUserDetails() {
|
|
1564
|
+
return this.userDetails;
|
|
1565
|
+
}
|
|
1566
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: UserService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1567
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: UserService, providedIn: 'root' });
|
|
1568
|
+
}
|
|
1569
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: UserService, decorators: [{
|
|
1570
|
+
type: Injectable,
|
|
1571
|
+
args: [{ providedIn: 'root' }]
|
|
1572
|
+
}] });
|
|
1573
|
+
|
|
1477
1574
|
class EducationStore {
|
|
1478
1575
|
userEducationService;
|
|
1479
1576
|
educations = signal([], ...(ngDevMode ? [{ debugName: "educations" }] : []));
|
|
@@ -1512,9 +1609,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
1512
1609
|
args: [{ providedIn: 'root' }]
|
|
1513
1610
|
}], ctorParameters: () => [{ type: UserEducationService }] });
|
|
1514
1611
|
|
|
1515
|
-
const
|
|
1516
|
-
|
|
1517
|
-
const cachedStates$1 = new Map();
|
|
1612
|
+
const cachedStates = new Map();
|
|
1518
1613
|
class CountryServices {
|
|
1519
1614
|
httpClient;
|
|
1520
1615
|
apiUrl;
|
|
@@ -1536,15 +1631,15 @@ class CountryServices {
|
|
|
1536
1631
|
return this.httpClient.get(`${this.url}/GetCountryDetail/${countryCode}`);
|
|
1537
1632
|
}
|
|
1538
1633
|
GetCountryCode(countryCode) {
|
|
1539
|
-
let country = cachedStates
|
|
1634
|
+
let country = cachedStates.get(countryCode);
|
|
1540
1635
|
if (country) {
|
|
1541
1636
|
return of(country);
|
|
1542
1637
|
}
|
|
1543
1638
|
else {
|
|
1544
1639
|
return this.httpClient
|
|
1545
1640
|
.get(`${this.url}/GetCountries`)
|
|
1546
|
-
.pipe(tap({
|
|
1547
|
-
next: (states) => cachedStates
|
|
1641
|
+
.pipe(tap$1({
|
|
1642
|
+
next: (states) => cachedStates.set(countryCode, states),
|
|
1548
1643
|
}));
|
|
1549
1644
|
}
|
|
1550
1645
|
}
|
|
@@ -1563,81 +1658,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
1563
1658
|
args: [API_BASE_URL]
|
|
1564
1659
|
}] }] });
|
|
1565
1660
|
|
|
1566
|
-
const cachedStates = new Map();
|
|
1567
|
-
class PostalCodeServices {
|
|
1568
|
-
httpClient;
|
|
1569
|
-
apiUrl;
|
|
1570
|
-
selectedCountryCode = 'US';
|
|
1571
|
-
endpoint = 'PostalCode';
|
|
1572
|
-
get url() {
|
|
1573
|
-
return `${this.endpoint}`;
|
|
1574
|
-
}
|
|
1575
|
-
constructor(httpClient, apiUrl) {
|
|
1576
|
-
this.httpClient = httpClient;
|
|
1577
|
-
this.apiUrl = apiUrl;
|
|
1578
|
-
}
|
|
1579
|
-
getCountryCode() {
|
|
1580
|
-
return this.selectedCountryCode;
|
|
1581
|
-
}
|
|
1582
|
-
GetStatesByCountryCode(countryCode) {
|
|
1583
|
-
let states = cachedStates.get(countryCode);
|
|
1584
|
-
if (!countryCode) {
|
|
1585
|
-
countryCode = 'US';
|
|
1586
|
-
}
|
|
1587
|
-
if (states) {
|
|
1588
|
-
return of(states);
|
|
1589
|
-
}
|
|
1590
|
-
else {
|
|
1591
|
-
return this.httpClient
|
|
1592
|
-
.get(`${this.url}/GetStatesByCountryCode?countryCode=${countryCode}`)
|
|
1593
|
-
.pipe(tap$1({
|
|
1594
|
-
next: (states) => cachedStates.set(countryCode, states),
|
|
1595
|
-
}));
|
|
1596
|
-
}
|
|
1597
|
-
}
|
|
1598
|
-
GetCountiesByState(countryCode, stateCode) {
|
|
1599
|
-
countryCode = 'US';
|
|
1600
|
-
return this.httpClient.get(`${this.url}/GetCountiesByState/${countryCode}/${stateCode}`);
|
|
1601
|
-
}
|
|
1602
|
-
getCountiesByStates(countryCode, stateCodes) {
|
|
1603
|
-
countryCode = 'US';
|
|
1604
|
-
return this.httpClient.post(`${this.url}/GetCountiesByStates/${countryCode}`, stateCodes);
|
|
1605
|
-
}
|
|
1606
|
-
GetZipcodesByCounty(countryCode, countyName) {
|
|
1607
|
-
countryCode = 'US';
|
|
1608
|
-
return this.httpClient.get(`${this.url}/GetZipcodesByCounty/${countryCode}/${countyName}`);
|
|
1609
|
-
}
|
|
1610
|
-
SearchZipcodeDetails(countryCode, zipCode) {
|
|
1611
|
-
countryCode = 'US';
|
|
1612
|
-
return this.httpClient.get(`${this.url}/SearchZipcodeDetails/${countryCode}/${zipCode}`);
|
|
1613
|
-
}
|
|
1614
|
-
GetNearestZipcodeDetails(countryCode, zipCode, totalCount) {
|
|
1615
|
-
countryCode = 'US';
|
|
1616
|
-
return this.httpClient.get(`${this.url}/GetNearestZipcodeDetails/${countryCode}/${zipCode}/${totalCount}`);
|
|
1617
|
-
}
|
|
1618
|
-
GetZipcodeDetails(countryCode, zipCode) {
|
|
1619
|
-
countryCode = 'US';
|
|
1620
|
-
return this.httpClient.get(`${this.url}/GetZipcodeDetails/${countryCode}/${zipCode}`);
|
|
1621
|
-
}
|
|
1622
|
-
GetZipcodeDetailsByCoordinate(countryCode, latitude, longitude) {
|
|
1623
|
-
countryCode = 'US';
|
|
1624
|
-
return this.httpClient.get(`${this.url}/GetZipcodeDetailsByCoordinate/${countryCode}/${latitude}/${longitude}`);
|
|
1625
|
-
}
|
|
1626
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: PostalCodeServices, deps: [{ token: i1.HttpClient }, { token: API_BASE_URL, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1627
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: PostalCodeServices, providedIn: 'root' });
|
|
1628
|
-
}
|
|
1629
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: PostalCodeServices, decorators: [{
|
|
1630
|
-
type: Injectable,
|
|
1631
|
-
args: [{
|
|
1632
|
-
providedIn: 'root',
|
|
1633
|
-
}]
|
|
1634
|
-
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: undefined, decorators: [{
|
|
1635
|
-
type: Optional
|
|
1636
|
-
}, {
|
|
1637
|
-
type: Inject,
|
|
1638
|
-
args: [API_BASE_URL]
|
|
1639
|
-
}] }] });
|
|
1640
|
-
|
|
1641
1661
|
const ANIMATION_TYPES = {
|
|
1642
1662
|
dualCircle: 'dualCircle',
|
|
1643
1663
|
scalingBars: 'scalingBars',
|
|
@@ -1736,7 +1756,7 @@ class Ng2LoadingSpinnerComponent {
|
|
|
1736
1756
|
|
|
1737
1757
|
<ng-container *ngTemplateOutlet="template"></ng-container>
|
|
1738
1758
|
</div>
|
|
1739
|
-
`, isInline: true, styles: [".backdrop{background-color:#0000004d;position:absolute;inset:0;z-index:2000}.wrapper{position:absolute;z-index:2001}.left{top:50%;left:5px;transform:translateY(-50%)}.right{top:50%;right:5px;transform:translateY(-50%)}.top{top:5px;left:50%;transform:translate(-50%)}.bottom{bottom:5px;left:50%;transform:translate(-50%)}.top-right{top:5px;right:5px}.top-left{top:5px;left:5px}.bottom-right{bottom:5px;right:5px}.bottom-left{bottom:5px;left:5px}.center{top:50%;left:50%;transform:translate(-50%,-50%)}.xs{font-size:.5rem}.sm{font-size:1rem}.md{font-size:1.5rem}.lg{font-size:2rem}.xl{font-size:2.5rem}.dual-circle{display:inline-block}.dual-circle:after{content:\" \";display:block;width:1.5em;height:1.5em;border-radius:50%;border:.1em solid currentColor;border-color:currentColor transparent currentColor transparent;animation:dual-cricle-anim 1.2s linear infinite}@keyframes dual-cricle-anim{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.center .scaling-bars,.top .scaling-bars,.bottom .scaling-bars{left:0}.left .scaling-bars,.top-left .scaling-bars,.top-bottom .scaling-bars{left:1.5em}.right .scaling-bars,.top-right .scaling-bars,.bottom-right .scaling-bars{right:1.5em}.scaling-bars,.scaling-bars:before,.scaling-bars:after{background:currentColor;-webkit-animation:scaling-bars-anim 1s infinite ease-in-out;animation:scaling-bars-anim 1s infinite ease-in-out;width:1em;height:2em}.scaling-bars{color:currentColor;text-indent:-9999em;position:relative;font-size:.5em;-webkit-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0);-webkit-animation-delay:-.16s;animation-delay:-.16s}.scaling-bars:before,.scaling-bars:after{position:absolute;top:0;content:\"\"}.scaling-bars:before{left:-1.5em;-webkit-animation-delay:-.32s;animation-delay:-.32s}.scaling-bars:after{left:1.5em}@-webkit-keyframes scaling-bars-anim{0%,80%,to{box-shadow:0 0;height:4em}40%{box-shadow:0 -2em;height:5em}}@keyframes scaling-bars-anim{0%,80%,to{box-shadow:0 0;height:4em}40%{box-shadow:0 -2em;height:5em}}.chasing-dots{color:currentColor;font-size:1.5em;text-indent:-9999em;overflow:hidden;width:1em;height:1em;border-radius:50%;position:relative;-webkit-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0);-webkit-animation:load6 1.7s infinite ease,round 1.7s infinite ease;animation:load6 1.7s infinite ease,round 1.7s infinite ease}@-webkit-keyframes load6{0%{box-shadow:0 -.83em 0 -.4em,0 -.83em 0 -.42em,0 -.83em 0 -.44em,0 -.83em 0 -.46em,0 -.83em 0 -.477em}5%,95%{box-shadow:0 -.83em 0 -.4em,0 -.83em 0 -.42em,0 -.83em 0 -.44em,0 -.83em 0 -.46em,0 -.83em 0 -.477em}10%,59%{box-shadow:0 -.83em 0 -.4em,-.087em -.825em 0 -.42em,-.173em -.812em 0 -.44em,-.256em -.789em 0 -.46em,-.297em -.775em 0 -.477em}20%{box-shadow:0 -.83em 0 -.4em,-.338em -.758em 0 -.42em,-.555em -.617em 0 -.44em,-.671em -.488em 0 -.46em,-.749em -.34em 0 -.477em}38%{box-shadow:0 -.83em 0 -.4em,-.377em -.74em 0 -.42em,-.645em -.522em 0 -.44em,-.775em -.297em 0 -.46em,-.82em -.09em 0 -.477em}to{box-shadow:0 -.83em 0 -.4em,0 -.83em 0 -.42em,0 -.83em 0 -.44em,0 -.83em 0 -.46em,0 -.83em 0 -.477em}}@keyframes load6{0%{box-shadow:0 -.83em 0 -.4em,0 -.83em 0 -.42em,0 -.83em 0 -.44em,0 -.83em 0 -.46em,0 -.83em 0 -.477em}5%,95%{box-shadow:0 -.83em 0 -.4em,0 -.83em 0 -.42em,0 -.83em 0 -.44em,0 -.83em 0 -.46em,0 -.83em 0 -.477em}10%,59%{box-shadow:0 -.83em 0 -.4em,-.087em -.825em 0 -.42em,-.173em -.812em 0 -.44em,-.256em -.789em 0 -.46em,-.297em -.775em 0 -.477em}20%{box-shadow:0 -.83em 0 -.4em,-.338em -.758em 0 -.42em,-.555em -.617em 0 -.44em,-.671em -.488em 0 -.46em,-.749em -.34em 0 -.477em}38%{box-shadow:0 -.83em 0 -.4em,-.377em -.74em 0 -.42em,-.645em -.522em 0 -.44em,-.775em -.297em 0 -.46em,-.82em -.09em 0 -.477em}to{box-shadow:0 -.83em 0 -.4em,0 -.83em 0 -.42em,0 -.83em 0 -.44em,0 -.83em 0 -.46em,0 -.83em 0 -.477em}}@-webkit-keyframes round{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes round{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.bouncing-dots{font-size:inherit;text-align:center}.bouncing-dots>div{width:1em;height:1em;background-color:currentColor;border-radius:100%;display:inline-block;-webkit-animation:sk-bouncedelay 1.4s infinite ease-in-out both;animation:sk-bouncedelay 1.4s infinite ease-in-out both}.bouncing-dots .bounce-1{-webkit-animation-delay:-.32s;animation-delay:-.32s}.bouncing-dots .bounce-2{-webkit-animation-delay:-.16s;animation-delay:-.16s}@-webkit-keyframes sk-bouncedelay{0%,80%,to{-webkit-transform:scale(0)}40%{-webkit-transform:scale(1)}}@keyframes sk-bouncedelay{0%,80%,to{-webkit-transform:scale(0);transform:scale(0)}40%{-webkit-transform:scale(1);transform:scale(1)}}.fading-circle{font-size:inherit;width:2em;height:2em;position:relative}.fading-circle .sk-circle{width:100%;height:100%;position:absolute;left:0;top:0}.fading-circle .sk-circle:before{content:\"\";display:block;margin:0 auto;width:15%;height:15%;background-color:currentColor;border-radius:100%;-webkit-animation:sk-circleFadeDelay 1.2s infinite ease-in-out both;animation:sk-circleFadeDelay 1.2s infinite ease-in-out both}.fading-circle .sk-circle2{-webkit-transform:rotate(30deg);-ms-transform:rotate(30deg);transform:rotate(30deg)}.fading-circle .sk-circle3{-webkit-transform:rotate(60deg);-ms-transform:rotate(60deg);transform:rotate(60deg)}.fading-circle .sk-circle4{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fading-circle .sk-circle5{-webkit-transform:rotate(120deg);-ms-transform:rotate(120deg);transform:rotate(120deg)}.fading-circle .sk-circle6{-webkit-transform:rotate(150deg);-ms-transform:rotate(150deg);transform:rotate(150deg)}.fading-circle .sk-circle7{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fading-circle .sk-circle8{-webkit-transform:rotate(210deg);-ms-transform:rotate(210deg);transform:rotate(210deg)}.fading-circle .sk-circle9{-webkit-transform:rotate(240deg);-ms-transform:rotate(240deg);transform:rotate(240deg)}.fading-circle .sk-circle10{-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fading-circle .sk-circle11{-webkit-transform:rotate(300deg);-ms-transform:rotate(300deg);transform:rotate(300deg)}.fading-circle .sk-circle12{-webkit-transform:rotate(330deg);-ms-transform:rotate(330deg);transform:rotate(330deg)}.fading-circle .sk-circle2:before{-webkit-animation-delay:-1.1s;animation-delay:-1.1s}.fading-circle .sk-circle3:before{-webkit-animation-delay:-1s;animation-delay:-1s}.fading-circle .sk-circle4:before{-webkit-animation-delay:-.9s;animation-delay:-.9s}.fading-circle .sk-circle5:before{-webkit-animation-delay:-.8s;animation-delay:-.8s}.fading-circle .sk-circle6:before{-webkit-animation-delay:-.7s;animation-delay:-.7s}.fading-circle .sk-circle7:before{-webkit-animation-delay:-.6s;animation-delay:-.6s}.fading-circle .sk-circle8:before{-webkit-animation-delay:-.5s;animation-delay:-.5s}.fading-circle .sk-circle9:before{-webkit-animation-delay:-.4s;animation-delay:-.4s}.fading-circle .sk-circle10:before{-webkit-animation-delay:-.3s;animation-delay:-.3s}.fading-circle .sk-circle11:before{-webkit-animation-delay:-.2s;animation-delay:-.2s}.fading-circle .sk-circle12:before{-webkit-animation-delay:-.1s;animation-delay:-.1s}@-webkit-keyframes sk-circleFadeDelay{0%,39%,to{opacity:0}40%{opacity:1}}@keyframes sk-circleFadeDelay{0%,39%,to{opacity:0}40%{opacity:1}}.half-circle{width:2em;height:2em;display:inline-block;border:.2em solid transparent;border-left-color:currentColor;border-top-color:currentColor;animation:rotate .6s infinite linear;border-radius:50%}@keyframes rotate{to{transform:rotate(1turn)}}.sk-cube-grid{width:2em;height:2em}.sk-cube-grid .sk-cube{width:33%;height:33%;float:left;-webkit-animation:sk-cubeGridScaleDelay 1.3s infinite ease-in-out;animation:sk-cubeGridScaleDelay 1.3s infinite ease-in-out}.sk-cube-grid .sk-cube1{-webkit-animation-delay:.2s;animation-delay:.2s}.sk-cube-grid .sk-cube2{-webkit-animation-delay:.3s;animation-delay:.3s}.sk-cube-grid .sk-cube3{-webkit-animation-delay:.4s;animation-delay:.4s}.sk-cube-grid .sk-cube4{-webkit-animation-delay:.1s;animation-delay:.1s}.sk-cube-grid .sk-cube5{-webkit-animation-delay:.2s;animation-delay:.2s}.sk-cube-grid .sk-cube6{-webkit-animation-delay:.3s;animation-delay:.3s}.sk-cube-grid .sk-cube7{-webkit-animation-delay:0s;animation-delay:0s}.sk-cube-grid .sk-cube8{-webkit-animation-delay:.1s;animation-delay:.1s}.sk-cube-grid .sk-cube9{-webkit-animation-delay:.2s;animation-delay:.2s}@-webkit-keyframes sk-cubeGridScaleDelay{0%,70%,to{-webkit-transform:scale3D(1,1,1);transform:scaleZ(1)}35%{-webkit-transform:scale3D(0,0,1);transform:scale3D(0,0,1)}}@keyframes sk-cubeGridScaleDelay{0%,70%,to{-webkit-transform:scale3D(1,1,1);transform:scaleZ(1)}35%{-webkit-transform:scale3D(0,0,1);transform:scale3D(0,0,1)}}\n"], dependencies: [{ kind: "directive", type:
|
|
1759
|
+
`, isInline: true, styles: [".backdrop{background-color:#0000004d;position:absolute;inset:0;z-index:2000}.wrapper{position:absolute;z-index:2001}.left{top:50%;left:5px;transform:translateY(-50%)}.right{top:50%;right:5px;transform:translateY(-50%)}.top{top:5px;left:50%;transform:translate(-50%)}.bottom{bottom:5px;left:50%;transform:translate(-50%)}.top-right{top:5px;right:5px}.top-left{top:5px;left:5px}.bottom-right{bottom:5px;right:5px}.bottom-left{bottom:5px;left:5px}.center{top:50%;left:50%;transform:translate(-50%,-50%)}.xs{font-size:.5rem}.sm{font-size:1rem}.md{font-size:1.5rem}.lg{font-size:2rem}.xl{font-size:2.5rem}.dual-circle{display:inline-block}.dual-circle:after{content:\" \";display:block;width:1.5em;height:1.5em;border-radius:50%;border:.1em solid currentColor;border-color:currentColor transparent currentColor transparent;animation:dual-cricle-anim 1.2s linear infinite}@keyframes dual-cricle-anim{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.center .scaling-bars,.top .scaling-bars,.bottom .scaling-bars{left:0}.left .scaling-bars,.top-left .scaling-bars,.top-bottom .scaling-bars{left:1.5em}.right .scaling-bars,.top-right .scaling-bars,.bottom-right .scaling-bars{right:1.5em}.scaling-bars,.scaling-bars:before,.scaling-bars:after{background:currentColor;-webkit-animation:scaling-bars-anim 1s infinite ease-in-out;animation:scaling-bars-anim 1s infinite ease-in-out;width:1em;height:2em}.scaling-bars{color:currentColor;text-indent:-9999em;position:relative;font-size:.5em;-webkit-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0);-webkit-animation-delay:-.16s;animation-delay:-.16s}.scaling-bars:before,.scaling-bars:after{position:absolute;top:0;content:\"\"}.scaling-bars:before{left:-1.5em;-webkit-animation-delay:-.32s;animation-delay:-.32s}.scaling-bars:after{left:1.5em}@-webkit-keyframes scaling-bars-anim{0%,80%,to{box-shadow:0 0;height:4em}40%{box-shadow:0 -2em;height:5em}}@keyframes scaling-bars-anim{0%,80%,to{box-shadow:0 0;height:4em}40%{box-shadow:0 -2em;height:5em}}.chasing-dots{color:currentColor;font-size:1.5em;text-indent:-9999em;overflow:hidden;width:1em;height:1em;border-radius:50%;position:relative;-webkit-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0);-webkit-animation:load6 1.7s infinite ease,round 1.7s infinite ease;animation:load6 1.7s infinite ease,round 1.7s infinite ease}@-webkit-keyframes load6{0%{box-shadow:0 -.83em 0 -.4em,0 -.83em 0 -.42em,0 -.83em 0 -.44em,0 -.83em 0 -.46em,0 -.83em 0 -.477em}5%,95%{box-shadow:0 -.83em 0 -.4em,0 -.83em 0 -.42em,0 -.83em 0 -.44em,0 -.83em 0 -.46em,0 -.83em 0 -.477em}10%,59%{box-shadow:0 -.83em 0 -.4em,-.087em -.825em 0 -.42em,-.173em -.812em 0 -.44em,-.256em -.789em 0 -.46em,-.297em -.775em 0 -.477em}20%{box-shadow:0 -.83em 0 -.4em,-.338em -.758em 0 -.42em,-.555em -.617em 0 -.44em,-.671em -.488em 0 -.46em,-.749em -.34em 0 -.477em}38%{box-shadow:0 -.83em 0 -.4em,-.377em -.74em 0 -.42em,-.645em -.522em 0 -.44em,-.775em -.297em 0 -.46em,-.82em -.09em 0 -.477em}to{box-shadow:0 -.83em 0 -.4em,0 -.83em 0 -.42em,0 -.83em 0 -.44em,0 -.83em 0 -.46em,0 -.83em 0 -.477em}}@keyframes load6{0%{box-shadow:0 -.83em 0 -.4em,0 -.83em 0 -.42em,0 -.83em 0 -.44em,0 -.83em 0 -.46em,0 -.83em 0 -.477em}5%,95%{box-shadow:0 -.83em 0 -.4em,0 -.83em 0 -.42em,0 -.83em 0 -.44em,0 -.83em 0 -.46em,0 -.83em 0 -.477em}10%,59%{box-shadow:0 -.83em 0 -.4em,-.087em -.825em 0 -.42em,-.173em -.812em 0 -.44em,-.256em -.789em 0 -.46em,-.297em -.775em 0 -.477em}20%{box-shadow:0 -.83em 0 -.4em,-.338em -.758em 0 -.42em,-.555em -.617em 0 -.44em,-.671em -.488em 0 -.46em,-.749em -.34em 0 -.477em}38%{box-shadow:0 -.83em 0 -.4em,-.377em -.74em 0 -.42em,-.645em -.522em 0 -.44em,-.775em -.297em 0 -.46em,-.82em -.09em 0 -.477em}to{box-shadow:0 -.83em 0 -.4em,0 -.83em 0 -.42em,0 -.83em 0 -.44em,0 -.83em 0 -.46em,0 -.83em 0 -.477em}}@-webkit-keyframes round{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes round{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.bouncing-dots{font-size:inherit;text-align:center}.bouncing-dots>div{width:1em;height:1em;background-color:currentColor;border-radius:100%;display:inline-block;-webkit-animation:sk-bouncedelay 1.4s infinite ease-in-out both;animation:sk-bouncedelay 1.4s infinite ease-in-out both}.bouncing-dots .bounce-1{-webkit-animation-delay:-.32s;animation-delay:-.32s}.bouncing-dots .bounce-2{-webkit-animation-delay:-.16s;animation-delay:-.16s}@-webkit-keyframes sk-bouncedelay{0%,80%,to{-webkit-transform:scale(0)}40%{-webkit-transform:scale(1)}}@keyframes sk-bouncedelay{0%,80%,to{-webkit-transform:scale(0);transform:scale(0)}40%{-webkit-transform:scale(1);transform:scale(1)}}.fading-circle{font-size:inherit;width:2em;height:2em;position:relative}.fading-circle .sk-circle{width:100%;height:100%;position:absolute;left:0;top:0}.fading-circle .sk-circle:before{content:\"\";display:block;margin:0 auto;width:15%;height:15%;background-color:currentColor;border-radius:100%;-webkit-animation:sk-circleFadeDelay 1.2s infinite ease-in-out both;animation:sk-circleFadeDelay 1.2s infinite ease-in-out both}.fading-circle .sk-circle2{-webkit-transform:rotate(30deg);-ms-transform:rotate(30deg);transform:rotate(30deg)}.fading-circle .sk-circle3{-webkit-transform:rotate(60deg);-ms-transform:rotate(60deg);transform:rotate(60deg)}.fading-circle .sk-circle4{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fading-circle .sk-circle5{-webkit-transform:rotate(120deg);-ms-transform:rotate(120deg);transform:rotate(120deg)}.fading-circle .sk-circle6{-webkit-transform:rotate(150deg);-ms-transform:rotate(150deg);transform:rotate(150deg)}.fading-circle .sk-circle7{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fading-circle .sk-circle8{-webkit-transform:rotate(210deg);-ms-transform:rotate(210deg);transform:rotate(210deg)}.fading-circle .sk-circle9{-webkit-transform:rotate(240deg);-ms-transform:rotate(240deg);transform:rotate(240deg)}.fading-circle .sk-circle10{-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fading-circle .sk-circle11{-webkit-transform:rotate(300deg);-ms-transform:rotate(300deg);transform:rotate(300deg)}.fading-circle .sk-circle12{-webkit-transform:rotate(330deg);-ms-transform:rotate(330deg);transform:rotate(330deg)}.fading-circle .sk-circle2:before{-webkit-animation-delay:-1.1s;animation-delay:-1.1s}.fading-circle .sk-circle3:before{-webkit-animation-delay:-1s;animation-delay:-1s}.fading-circle .sk-circle4:before{-webkit-animation-delay:-.9s;animation-delay:-.9s}.fading-circle .sk-circle5:before{-webkit-animation-delay:-.8s;animation-delay:-.8s}.fading-circle .sk-circle6:before{-webkit-animation-delay:-.7s;animation-delay:-.7s}.fading-circle .sk-circle7:before{-webkit-animation-delay:-.6s;animation-delay:-.6s}.fading-circle .sk-circle8:before{-webkit-animation-delay:-.5s;animation-delay:-.5s}.fading-circle .sk-circle9:before{-webkit-animation-delay:-.4s;animation-delay:-.4s}.fading-circle .sk-circle10:before{-webkit-animation-delay:-.3s;animation-delay:-.3s}.fading-circle .sk-circle11:before{-webkit-animation-delay:-.2s;animation-delay:-.2s}.fading-circle .sk-circle12:before{-webkit-animation-delay:-.1s;animation-delay:-.1s}@-webkit-keyframes sk-circleFadeDelay{0%,39%,to{opacity:0}40%{opacity:1}}@keyframes sk-circleFadeDelay{0%,39%,to{opacity:0}40%{opacity:1}}.half-circle{width:2em;height:2em;display:inline-block;border:.2em solid transparent;border-left-color:currentColor;border-top-color:currentColor;animation:rotate .6s infinite linear;border-radius:50%}@keyframes rotate{to{transform:rotate(1turn)}}.sk-cube-grid{width:2em;height:2em}.sk-cube-grid .sk-cube{width:33%;height:33%;float:left;-webkit-animation:sk-cubeGridScaleDelay 1.3s infinite ease-in-out;animation:sk-cubeGridScaleDelay 1.3s infinite ease-in-out}.sk-cube-grid .sk-cube1{-webkit-animation-delay:.2s;animation-delay:.2s}.sk-cube-grid .sk-cube2{-webkit-animation-delay:.3s;animation-delay:.3s}.sk-cube-grid .sk-cube3{-webkit-animation-delay:.4s;animation-delay:.4s}.sk-cube-grid .sk-cube4{-webkit-animation-delay:.1s;animation-delay:.1s}.sk-cube-grid .sk-cube5{-webkit-animation-delay:.2s;animation-delay:.2s}.sk-cube-grid .sk-cube6{-webkit-animation-delay:.3s;animation-delay:.3s}.sk-cube-grid .sk-cube7{-webkit-animation-delay:0s;animation-delay:0s}.sk-cube-grid .sk-cube8{-webkit-animation-delay:.1s;animation-delay:.1s}.sk-cube-grid .sk-cube9{-webkit-animation-delay:.2s;animation-delay:.2s}@-webkit-keyframes sk-cubeGridScaleDelay{0%,70%,to{-webkit-transform:scale3D(1,1,1);transform:scaleZ(1)}35%{-webkit-transform:scale3D(0,0,1);transform:scale3D(0,0,1)}}@keyframes sk-cubeGridScaleDelay{0%,70%,to{-webkit-transform:scale3D(1,1,1);transform:scaleZ(1)}35%{-webkit-transform:scale3D(0,0,1);transform:scale3D(0,0,1)}}\n"], dependencies: [{ kind: "directive", type: i11.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i11.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i11.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
|
|
1740
1760
|
}
|
|
1741
1761
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: Ng2LoadingSpinnerComponent, decorators: [{
|
|
1742
1762
|
type: Component,
|
|
@@ -2057,6 +2077,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
2057
2077
|
|
|
2058
2078
|
class EducationComponent {
|
|
2059
2079
|
userEducation;
|
|
2080
|
+
userService;
|
|
2060
2081
|
store;
|
|
2061
2082
|
workStore;
|
|
2062
2083
|
countryService;
|
|
@@ -2065,6 +2086,9 @@ class EducationComponent {
|
|
|
2065
2086
|
fb;
|
|
2066
2087
|
fileService;
|
|
2067
2088
|
http;
|
|
2089
|
+
originalFormValue;
|
|
2090
|
+
fileChanged = false;
|
|
2091
|
+
user;
|
|
2068
2092
|
uploadToAws = true;
|
|
2069
2093
|
educationForm;
|
|
2070
2094
|
providerId;
|
|
@@ -2093,8 +2117,9 @@ class EducationComponent {
|
|
|
2093
2117
|
}, ...(ngDevMode ? [{ debugName: "showpreview" }] : []));
|
|
2094
2118
|
maxDate = new Date();
|
|
2095
2119
|
userdata;
|
|
2096
|
-
constructor(userEducation, store, workStore, countryService, postalCodeService, tokenService, fb, fileService, http) {
|
|
2120
|
+
constructor(userEducation, userService, store, workStore, countryService, postalCodeService, tokenService, fb, fileService, http) {
|
|
2097
2121
|
this.userEducation = userEducation;
|
|
2122
|
+
this.userService = userService;
|
|
2098
2123
|
this.store = store;
|
|
2099
2124
|
this.workStore = workStore;
|
|
2100
2125
|
this.countryService = countryService;
|
|
@@ -2117,6 +2142,7 @@ class EducationComponent {
|
|
|
2117
2142
|
comments: [''],
|
|
2118
2143
|
reviewStatus: [ReviewStatus.Resolved]
|
|
2119
2144
|
});
|
|
2145
|
+
this.user = this.userService.getUserDetails();
|
|
2120
2146
|
await loadProfile();
|
|
2121
2147
|
const saved = profileSignal();
|
|
2122
2148
|
this.userdata = saved;
|
|
@@ -2125,6 +2151,61 @@ class EducationComponent {
|
|
|
2125
2151
|
this.workStore.loadFromApi(this.userId);
|
|
2126
2152
|
this.getcountry();
|
|
2127
2153
|
}
|
|
2154
|
+
selectFile(event) {
|
|
2155
|
+
this.fileData = event.target.files[0];
|
|
2156
|
+
if (this.fileData) {
|
|
2157
|
+
this.fileName = this.fileData.name;
|
|
2158
|
+
this.model.fileName = this.fileName;
|
|
2159
|
+
// ✅ mark change
|
|
2160
|
+
this.fileChanged = true;
|
|
2161
|
+
}
|
|
2162
|
+
}
|
|
2163
|
+
hasChanges() {
|
|
2164
|
+
const current = this.educationForm.getRawValue();
|
|
2165
|
+
const formattedCurrent = {
|
|
2166
|
+
...current,
|
|
2167
|
+
startDate: current.startDate
|
|
2168
|
+
? new Date(current.startDate).toISOString()
|
|
2169
|
+
: null,
|
|
2170
|
+
endDate: current.endDate
|
|
2171
|
+
? new Date(current.endDate).toISOString()
|
|
2172
|
+
: null
|
|
2173
|
+
};
|
|
2174
|
+
return (JSON.stringify(formattedCurrent) !== this.originalFormValue ||
|
|
2175
|
+
this.fileChanged);
|
|
2176
|
+
}
|
|
2177
|
+
removeFile() {
|
|
2178
|
+
// clear selected/new file
|
|
2179
|
+
this.fileData = null;
|
|
2180
|
+
// clear UI name
|
|
2181
|
+
this.fileName = null;
|
|
2182
|
+
// mark file as changed (IMPORTANT for API trigger)
|
|
2183
|
+
this.fileChanged = true;
|
|
2184
|
+
// clear existing file from model (this will send null to backend)
|
|
2185
|
+
this.model.fileId = null;
|
|
2186
|
+
this.model.fileUrl = null;
|
|
2187
|
+
this.model.fileName = null;
|
|
2188
|
+
}
|
|
2189
|
+
saveFile() {
|
|
2190
|
+
if (this.educationForm.invalid) {
|
|
2191
|
+
this.educationForm.markAllAsTouched();
|
|
2192
|
+
return;
|
|
2193
|
+
}
|
|
2194
|
+
// ✅ CRITICAL CHECK
|
|
2195
|
+
if (this.editingIndex >= 0 && !this.hasChanges()) {
|
|
2196
|
+
console.log('No changes → API skipped');
|
|
2197
|
+
this.isEditing.set(false);
|
|
2198
|
+
this.editingIndex = -1; // ✅ ADD THIS
|
|
2199
|
+
return;
|
|
2200
|
+
}
|
|
2201
|
+
this.proposalLoader = true;
|
|
2202
|
+
if (!this.fileData || !this.fileChanged) {
|
|
2203
|
+
this.saveAndContinue();
|
|
2204
|
+
}
|
|
2205
|
+
else {
|
|
2206
|
+
this.saveAWSFile();
|
|
2207
|
+
}
|
|
2208
|
+
}
|
|
2128
2209
|
getcountry() {
|
|
2129
2210
|
this.countryService.GetCountryCode('country').subscribe(result => {
|
|
2130
2211
|
this.countries = result;
|
|
@@ -2160,28 +2241,6 @@ class EducationComponent {
|
|
|
2160
2241
|
console.log("Formatted:", this.preferredStartDate);
|
|
2161
2242
|
}
|
|
2162
2243
|
}
|
|
2163
|
-
selectFile(event) {
|
|
2164
|
-
this.fileData = event.target.files[0];
|
|
2165
|
-
if (this.fileData) {
|
|
2166
|
-
this.fileName = this.fileData.name;
|
|
2167
|
-
this.model.fileName = this.fileName;
|
|
2168
|
-
}
|
|
2169
|
-
}
|
|
2170
|
-
saveFile() {
|
|
2171
|
-
if (this.educationForm.invalid) {
|
|
2172
|
-
this.educationForm.markAllAsTouched();
|
|
2173
|
-
return;
|
|
2174
|
-
}
|
|
2175
|
-
this.proposalLoader = true;
|
|
2176
|
-
if (!this.fileData) {
|
|
2177
|
-
this.saveAndContinue();
|
|
2178
|
-
}
|
|
2179
|
-
else {
|
|
2180
|
-
if (this.uploadToAws) {
|
|
2181
|
-
this.saveAWSFile();
|
|
2182
|
-
}
|
|
2183
|
-
}
|
|
2184
|
-
}
|
|
2185
2244
|
async saveAWSFile() {
|
|
2186
2245
|
const fileType = this.fileData.type;
|
|
2187
2246
|
const fileExtension = fileType.split('/')[1] || fileType.split('/')[0] || 'file';
|
|
@@ -2231,7 +2290,7 @@ class EducationComponent {
|
|
|
2231
2290
|
//userId: this.userId,
|
|
2232
2291
|
providerName: this.providerName,
|
|
2233
2292
|
targetProviderId: this.providerId,
|
|
2234
|
-
userName: this.
|
|
2293
|
+
userName: this.user.fullName,
|
|
2235
2294
|
courseName: fullValue.courseName,
|
|
2236
2295
|
courseType: fullValue.courseType,
|
|
2237
2296
|
instituteName: fullValue.instituteName,
|
|
@@ -2246,7 +2305,7 @@ class EducationComponent {
|
|
|
2246
2305
|
fileUrl: this.model?.fileUrl || null,
|
|
2247
2306
|
fileName: this.model?.fileName || null,
|
|
2248
2307
|
reviewStatus: fullValue.reviewStatus,
|
|
2249
|
-
userHeadShotUrl: this.
|
|
2308
|
+
userHeadShotUrl: this.user.headshotUrl,
|
|
2250
2309
|
};
|
|
2251
2310
|
if (this.editingIndex >= 0) {
|
|
2252
2311
|
this.userEducation.updateUserEducation(apiPayload).subscribe({
|
|
@@ -2326,21 +2385,33 @@ class EducationComponent {
|
|
|
2326
2385
|
const data = this.workStore.getExperience(index);
|
|
2327
2386
|
if (!data)
|
|
2328
2387
|
return;
|
|
2329
|
-
|
|
2388
|
+
const formValue = {
|
|
2330
2389
|
courseName: data.courseName,
|
|
2331
2390
|
courseType: data.courseType,
|
|
2332
2391
|
instituteName: data.instituteName,
|
|
2333
2392
|
country: data.country,
|
|
2334
2393
|
state: data.state,
|
|
2335
2394
|
city: data.city,
|
|
2336
|
-
startDate: new Date(data.startDate),
|
|
2337
|
-
endDate: new Date(data.endDate),
|
|
2395
|
+
startDate: data.startDate ? new Date(data.startDate).toISOString() : null,
|
|
2396
|
+
endDate: data.endDate ? new Date(data.endDate).toISOString() : null,
|
|
2338
2397
|
comments: data.comments,
|
|
2339
2398
|
reviewStatus: data.reviewStatus
|
|
2399
|
+
};
|
|
2400
|
+
// patch UI (Date object needed)
|
|
2401
|
+
this.educationForm.patchValue({
|
|
2402
|
+
...formValue,
|
|
2403
|
+
startDate: data.startDate ? new Date(data.startDate) : null,
|
|
2404
|
+
endDate: data.endDate ? new Date(data.endDate) : null
|
|
2340
2405
|
});
|
|
2406
|
+
// ✅ store original
|
|
2407
|
+
this.originalFormValue = JSON.stringify(formValue);
|
|
2408
|
+
// file
|
|
2341
2409
|
this.model.fileUrl = data.fileUrl;
|
|
2342
2410
|
this.model.fileName = data.fileName;
|
|
2343
2411
|
this.fileName = data.fileName;
|
|
2412
|
+
// ✅ IMPORTANT
|
|
2413
|
+
this.fileChanged = false;
|
|
2414
|
+
this.fileData = null;
|
|
2344
2415
|
this.editingIndex = index;
|
|
2345
2416
|
}
|
|
2346
2417
|
back() {
|
|
@@ -2349,13 +2420,13 @@ class EducationComponent {
|
|
|
2349
2420
|
nextStep() {
|
|
2350
2421
|
this.store.nextStep();
|
|
2351
2422
|
}
|
|
2352
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: EducationComponent, deps: [{ token: UserEducationService }, { token: CredentialingStore }, { token: EducationStore }, { token: CountryServices }, { token: PostalCodeServices }, { token: i6.TokenService }, { token:
|
|
2353
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: EducationComponent, isStandalone: false, selector: "app-education", inputs: { providerId: "providerId", providerName: "providerName", cloudfrontUrl: "cloudfrontUrl" }, ngImport: i0, template: "<div *ngIf=\"!showpreview()\">\r\n <div class=\"education-container\">\r\n <h3>Add Education</h3>\r\n <p class=\"hint\">\r\n Please list your educational history. This can cover anything from GED to college degree\r\n </p>\r\n <form [formGroup]=\"educationForm\">\r\n <div class=\"row\">\r\n <div class=\"field\">\r\n <div class=\"head\">General Equivalency Diploma / Degree</div>\r\n <input type=\"text\" placeholder=\"Enter your Diploma here\" formControlName=\"courseName\" />\r\n <small class=\"error\" *ngIf=\"educationForm.get('courseName')?.touched &&\r\n educationForm.get('courseName')?.hasError('required')\">\r\n Degree is required\r\n </small>\r\n </div>\r\n\r\n <div class=\"field\">\r\n <div class=\"head\">Diploma / Degree Type</div>\r\n <input type=\"text\" placeholder=\"Enter your Diploma / Degree Type\" formControlName=\"courseType\" />\r\n <small class=\"error\" *ngIf=\"educationForm.get('courseType')?.touched &&\r\n educationForm.get('courseType')?.hasError('required')\">\r\n Diploma / Degree Type is required\r\n </small>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"field full-width\">\r\n <div class=\"head\">Institution Name</div>\r\n <input type=\"text\" placeholder=\"Enter institution name here\" formControlName=\"instituteName\" />\r\n <small class=\"error\" *ngIf=\"educationForm.get('instituteName')?.touched &&\r\n educationForm.get('instituteName')?.hasError('required')\">\r\n Institution name is required\r\n </small>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"field\">\r\n <div class=\"head\">Country</div>\r\n <ng-select formControlName=\"country\" [items]=\"countries\" bindLabel=\"country\" bindValue=\"countryCode2\"\r\n [clearable]=\"false\" placeholder=\"Select Country\" (change)=\"onCountryChange($event)\">\r\n <ng-template ng-option-tmp let-item=\"item\" let-item$=\"item$\" let-index=\"index\">\r\n <input class=\"form-check-input\" type=\"checkbox\" [checked]=\"item$.selected\" readonly />\r\n {{ item.country }}\r\n </ng-template>\r\n <!-- <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\" let-item$=\"item$\" let-index=\"index\">\r\n <span class=\"ng-value-label\">\r\n {{item.country}}\r\n </span>\r\n <span class=\"ng-value-icon right\" (click)=\"clear(item)\" aria-hidden=\"true\">\r\n <img src=\"/assets/images/icons/close-sm-circle.svg\" class=\"close-btn-select\" />\r\n </span> \r\n </ng-template> -->\r\n </ng-select>\r\n </div>\r\n\r\n <div class=\"field\">\r\n <div class=\"head\">State</div>\r\n <ng-select formControlName=\"state\" [items]=\"states\" bindLabel=\"stateName\" bindValue=\"stateCode\"\r\n placeholder=\"Select State\">\r\n\r\n <ng-template ng-option-tmp let-item=\"item\" let-item$=\"item$\">\r\n <input class=\"form-check-input\" type=\"checkbox\" [checked]=\"item$.selected\" />\r\n {{ item.stateName }}\r\n </ng-template>\r\n\r\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\r\n <span class=\"ng-value-label\">\r\n {{ item.stateName }}\r\n </span>\r\n <span class=\"ng-value-icon right\" (click)=\"clear(item)\">\r\n <img src=\"/assets/images/icons/close-sm-circle.svg\" class=\"close-btn-select\" />\r\n </span>\r\n </ng-template>\r\n </ng-select>\r\n\r\n </div>\r\n </div>\r\n <div class=\"row form-row\">\r\n <div class=\"field city\">\r\n <div class=\"head\">City</div>\r\n <input type=\"text\" placeholder=\"Enter City here\" formControlName=\"city\" />\r\n <small class=\"error\" *ngIf=\"educationForm.get('city')?.touched &&\r\n educationForm.get('city')?.hasError('required')\">\r\n Enter City\r\n </small>\r\n </div>\r\n <div class=\"field date\">\r\n <div class=\"mb-3 head\">\r\n <div class=\"head\">Start Date</div>\r\n <input class=\"form-control date-time-filter\" placeholder=\"Start date\" [maxDate]=\"maxDate\" bsDatepicker [bsConfig]=\"{ adaptivePosition: true,showWeekNumbers: false, isAnimated: true, \r\n customTodayClass: !educationForm.get('startDate')?.value ? 'today-highlight' : '' }\"\r\n formControlName=\"startDate\" (bsValueChange)=\"onPreferredDateChange($event)\">\r\n <small class=\"error\" *ngIf=\"educationForm.get('startDate')?.touched &&\r\n educationForm.get('startDate')?.hasError('required')\">\r\n Start Date is required\r\n </small>\r\n \r\n </div>\r\n </div>\r\n\r\n <div class=\"field date\">\r\n <div class=\"mb-3 head\">\r\n <div class=\"head\">To Date</div>\r\n <input class=\"form-control date-time-filter\" placeholder=\"To date\" [maxDate]=\"maxDate\" bsDatepicker [bsConfig]=\"{ adaptivePosition: true,showWeekNumbers: false, isAnimated: true, \r\n customTodayClass: !educationForm.get('endDate')?.value ? 'today-highlight' : '' }\"\r\n formControlName=\"endDate\" (bsValueChange)=\"onPreferredDateChange($event)\">\r\n <small class=\"error\" *ngIf=\"educationForm.get('endDate')?.touched &&\r\n educationForm.get('endDate')?.hasError('required')\">\r\n To Date is required\r\n </small>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"field full-width\">\r\n <div class=\"head\">Comments</div>\r\n <textarea placeholder=\"Description\" formControlName=\"comments\">\r\n </textarea>\r\n </div>\r\n </div>\r\n </form>\r\n <div class=\"row\">\r\n <div class=\"upload-wrapper\">\r\n <p class=\"upload-title\">Upload</p>\r\n <p class=\"upload-subtitle\">Add documents such as Diploma, Degree</p>\r\n <button type=\"button\" class=\"upload-btn\" (click)=\"fileInput.click()\">\r\n Upload Documents\r\n </button>\r\n <input #fileInput type=\"file\" accept=\".pdf,.doc,.docx\" (change)=\"selectFile($event)\" hidden />\r\n <p class=\"file-name\" *ngIf=\"fileName\">\r\n Selected: {{ fileName }}\r\n </p>\r\n </div>\r\n </div>\r\n\r\n <div class=\"action\">\r\n <button type=\"button\" class=\"secondary\" (click)=\"back()\">Back</button>\r\n <div class=\"right-actions\"> \r\n <button type=\"button\" class=\"secondary\" (click)=\"nextStep()\" >\r\n Skip\r\n </button> \r\n <button type=\"button\" class=\"primary\" [disabled]=\"proposalLoader\" [ng2-loading]=\"proposalLoader\"\r\n (click)=\"saveFile()\">\r\n Continue\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"work-preview\" *ngIf=\"showpreview()\">\r\n <div class=\"preview-header\" >\r\n <h3>Education Preview</h3>\r\n </div>\r\n <div class=\"accordion\" >\r\n\r\n <div *ngFor=\"let exp of workStore.experiences(); let i = index\" style=\"margin-bottom: 20px;\"\r\n class=\"accordion-item border-0\">\r\n\r\n <!-- HEADER (preview) -->\r\n <h2 class=\"accordion-header\">\r\n <button class=\"accordion-button collapsed\" type=\"button\" data-bs-toggle=\"collapse\"\r\n [attr.data-bs-target]=\"'#edu_' + i\">\r\n\r\n <!-- LEFT : TITLE -->\r\n <span class=\"accordion-title\">\r\n {{ exp.courseName }}\r\n </span>\r\n\r\n <!-- RIGHT : EDIT ICON -->\r\n <span class=\"accordion-actions\">\r\n <img src=\"/assets/images/icons/edit-text.png\" class=\"edit-icon icon-color\"\r\n (click)=\"edit(i); $event.stopPropagation()\" alt=\"Edit\" />\r\n </span>\r\n\r\n </button>\r\n </h2>\r\n\r\n\r\n <!-- BODY -->\r\n <div [id]=\"'edu_' + i\" class=\"accordion-collapse collapse\" style=\"margin-bottom: 20px;\">\r\n <div class=\"accordion-body\">\r\n\r\n <!-- GRID DATA (2 or 3 columns) -->\r\n <div class=\"detail-grid\">\r\n\r\n <div>\r\n <strong>Course Name</strong><br />\r\n <span class=\"job-title\"> {{ exp.courseName }}</span>\r\n </div>\r\n <div>\r\n <strong>Course Type</strong><br />\r\n <span class=\"job-title\"> {{ exp.courseType }}</span>\r\n </div>\r\n <div>\r\n <strong>Institute Name</strong><br />\r\n <span class=\"job-title\"> {{ exp.instituteName }}</span>\r\n </div>\r\n <div>\r\n <strong>From Date</strong><br />\r\n <span class=\"job-title\"> {{ exp.startDate | date:'MM/dd/yyyy' }}</span>\r\n </div>\r\n <div>\r\n <strong>To Date</strong><br />\r\n <span class=\"job-title\"> {{ exp.endDate | date:'MM/dd/yyyy' }}</span>\r\n </div>\r\n <div>\r\n <strong>State</strong><br />\r\n <span class=\"job-title\"> {{ exp.state | stateName }}</span>\r\n </div> <div>\r\n <strong>City</strong><br />\r\n <span class=\"job-title\"> {{ exp.city }}</span>\r\n </div>\r\n \r\n <div *ngIf=\"exp.fileUrl\" class=\"full-width\">\r\n <strong>Document</strong><br />\r\n <a [href]=\"cloudfrontUrl+exp.fileUrl\" target=\"_blank\">\r\n <span class=\"job-title\"> {{ exp.fileName }}</span>\r\n </a>\r\n </div>\r\n </div>\r\n <div class=\"full-width mt-3\">\r\n <strong>Comments</strong><br />\r\n <span class=\"job-title\"> {{ exp.comments }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"actions\">\r\n <button type=\"button\" class=\"secondary\" (click)=\"back()\">Back</button>\r\n <div class=\"right-actions\">\r\n <button type=\"button\" class=\"primary add-btn\" (click)=\"add()\" style=\"background-color: #1f4d5f;\">\r\n Add More Educations\r\n </button>\r\n <button type=\"button\" class=\"primary\" (click)=\"nextStep()\">\r\n Continue\r\n </button>\r\n </div>\r\n </div>\r\n</div>", styles: [".education-container{max-width:1000px;margin:0 auto;padding:24px 16px;min-height:300px}h3{font-size:18px;font-weight:600;margin-bottom:4px}.hint{font-size:14px;color:#6b7280;margin-bottom:24px}.row{display:flex;margin-bottom:16px}.field{flex:1;display:flex;flex-direction:column}.field.full-width{flex:1 1 100%}input,select,textarea{padding:10px 12px;border:2px solid #d1d5db;border-radius:4px;font-size:13px;outline:none;box-sizing:border-box}::ng-deep .ng-select.ng-select-single .ng-select-container{height:45px}::ng-deep .ng-select.ng-select-single .ng-select-container .ng-value-container .ng-placeholder{top:10px}textarea{height:90px;resize:none}.error{margin-top:4px;font-size:12px;color:#dc2626}.actions{display:flex;justify-content:space-between;margin-top:24px}button{height:44px;min-width:120px;border-radius:4px;border:none;font-size:14px;cursor:pointer}button.primary{background-color:#4077ad;color:#fff}button.secondary{background-color:#f3f4f6;color:#374151}button:disabled{background-color:#9ca3af;cursor:not-allowed}.head{color:#6b7280;font-size:14px;font-weight:500;margin-bottom:5px}::ng-deep .today-highlight{color:#fff!important;background:#1e2541!important}.form-row{display:flex}.field{display:flex;flex-direction:column}.field.city{flex:0 0 50%}.field.date{flex:0 0 25%}::ng-deep .ng-select .ng-select-container .ng-value-container .ng-placeholder{color:#757575;font-size:14px}.close-btn-select{width:16px;height:16px;color:#00f;display:inline-block}.upload-wrapper{margin-top:37px}.upload-title{font-weight:600;margin-bottom:4px}.upload-subtitle{font-size:13px;color:#6c757d;margin-bottom:12px}.upload-btn{background-color:#1f4d5f;color:#fff;border:none;padding:10px 18px;border-radius:6px;font-size:14px;cursor:pointer}.upload-btn:hover{background-color:#173b4a}.file-name{margin-top:8px;font-size:13px;color:#495057}.right-actions{display:flex;gap:16px}.date-time-filter{padding-right:40px;background-image:url(/assets/images/icons/calendar.svg);background-repeat:no-repeat;background-position:right 12px center;background-size:18px 18px;cursor:pointer}.work-preview{max-width:1000px;padding:20px;margin:15px auto;background-color:#f4f6f8;font-family:Segoe UI,Arial,sans-serif}.preview-card{position:relative;background-color:#fff;border-radius:8px;box-shadow:0 3px 8px #0000001a;padding:20px 25px;margin-bottom:20px;margin-top:20px;transition:box-shadow .2s ease}.preview-card:hover{box-shadow:0 6px 15px #00000026}.edit-btn{position:absolute;top:15px;right:15px;width:20px;height:20px;cursor:pointer}.card-top h4{margin:0;font-size:18px;color:#1f4d5f}.card-top .job-title{display:block;font-size:14px;color:#555;margin-top:2px}.card-meta{margin:10px 0;font-size:13px;color:#777;display:flex;justify-content:space-between}.card-meta .dates{font-style:italic}.job-description{font-size:14px;color:#333;line-height:1.5;margin-bottom:8px}.file-link{font-size:13px;color:#4077ad;text-decoration:underline;display:inline-block;margin-top:5px}.actions{display:flex;justify-content:space-between;margin:50px 100px 20px}.action{display:flex;justify-content:space-between;margin:50px 0 20px}button.secondary{background-color:#e0e0e0;color:#6c757dc7;padding:8px 20px;border:none;border-radius:6px;cursor:pointer}button.primary{background-color:#4077ad;color:#fff;padding:8px 20px;border:none;border-radius:6px;cursor:pointer}@media (max-width: 600px){.preview-card{padding:15px}.edit-btn{top:10px;right:10px;width:18px;height:18px}.card-meta{flex-direction:column;gap:3px}}::ng-deep ng-dropdown-panel input[type=checkbox]{margin-right:0!important;padding:9px;margin-top:0}.form-check-input:checked{color:#fff!important;border-color:#2980b9!important;background-color:#2980b9!important}::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-option{font-size:14px}::ng-deep .ng-value-label{font-size:14px}::ng-deep .bs-datepicker-head{background-color:#1e2541!important}::ng-deep .theme-green .bs-datepicker-body table td span.selected,.theme-green .bs-datepicker-body table td.selected span,.theme-green .bs-datepicker-body table td span[class*=select-]:after,.theme-green .bs-datepicker-body table td[class*=select-] span:after{background-color:#1e2541!important}.icon-color{cursor:pointer;width:20px;height:20px;transition:transform .3s ease;filter:brightness(0) saturate(100%) invert(48%) sepia(8%) saturate(350%) hue-rotate(170deg) brightness(92%) contrast(88%)}.icon-color.edit{width:18px;height:18px}.detail-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.accordion-button{display:flex;align-items:center}.accordion-title{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.accordion-actions{display:flex;align-items:center;margin-right:12px}.edit-icon{cursor:pointer}::ng-deep .accordion-item:first-of-type>.accordion-header .accordion-button{margin-bottom:20px}.job-title{color:#6c757d;font-weight:400;font-size:14px}.preview-header{margin-left:400px}.accordion-item{margin:20px 100px}.add-btn{width:200px}@media screen and (max-width: 767px){.row{flex-direction:column;gap:12px}.right-actions{gap:9px;flex-direction:column-reverse}.preview-header{margin-left:0}.accordion{margin:20px 0}.actions,.action{gap:8px;display:flex;flex-direction:column-reverse}.accordion-item{margin:20px 0}.add-btn{width:unset}.actions{margin:50px 0 20px}}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i10.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "directive", type: i10.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }, { kind: "directive", type: i10.NgLabelTemplateDirective, selector: "[ng-label-tmp]" }, { kind: "directive", type: i11.BsDatepickerDirective, selector: "[bsDatepicker]", inputs: ["placement", "triggers", "outsideClick", "container", "outsideEsc", "isDisabled", "minDate", "maxDate", "ignoreMinMaxErrors", "minMode", "daysDisabled", "datesDisabled", "datesEnabled", "dateCustomClasses", "dateTooltipTexts", "isOpen", "bsValue", "bsConfig"], outputs: ["onShown", "onHidden", "bsValueChange"], exportAs: ["bsDatepicker"] }, { kind: "directive", type: i11.BsDatepickerInputDirective, selector: "input[bsDatepicker]" }, { kind: "directive", type: Ng2LoadingSpinnerDirective, selector: "[ng2-loading]", inputs: ["ng2-loading", "config", "template"] }, { kind: "pipe", type: i1$1.DatePipe, name: "date" }, { kind: "pipe", type: StateNamePipe, name: "stateName" }] });
|
|
2423
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: EducationComponent, deps: [{ token: UserEducationService }, { token: UserService }, { token: CredentialingStore }, { token: EducationStore }, { token: CountryServices }, { token: PostalCodeServices }, { token: i6.TokenService }, { token: i8.FormBuilder }, { token: FileService }, { token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Component });
|
|
2424
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: EducationComponent, isStandalone: false, selector: "app-education", inputs: { providerId: "providerId", providerName: "providerName", cloudfrontUrl: "cloudfrontUrl" }, ngImport: i0, template: "<div *ngIf=\"!showpreview()\">\r\n <div class=\"education-container\">\r\n <h3>Add Education</h3>\r\n <p class=\"hint\">\r\n Please list your educational history. This can cover anything from GED to college degree\r\n </p>\r\n <form [formGroup]=\"educationForm\">\r\n <div class=\"row\">\r\n <div class=\"field\">\r\n <div class=\"head\">General Equivalency Diploma / Degree</div>\r\n <input type=\"text\" placeholder=\"Enter your Diploma here\" formControlName=\"courseName\" />\r\n <small class=\"error\" *ngIf=\"educationForm.get('courseName')?.touched &&\r\n educationForm.get('courseName')?.hasError('required')\">\r\n Degree is required\r\n </small>\r\n </div>\r\n\r\n <div class=\"field\">\r\n <div class=\"head\">Diploma / Degree Type</div>\r\n <input type=\"text\" placeholder=\"Enter your Diploma / Degree Type\" formControlName=\"courseType\" />\r\n <small class=\"error\" *ngIf=\"educationForm.get('courseType')?.touched &&\r\n educationForm.get('courseType')?.hasError('required')\">\r\n Diploma / Degree Type is required\r\n </small>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"field full-width\">\r\n <div class=\"head\">Institution Name</div>\r\n <input type=\"text\" placeholder=\"Enter institution name here\" formControlName=\"instituteName\" />\r\n <small class=\"error\" *ngIf=\"educationForm.get('instituteName')?.touched &&\r\n educationForm.get('instituteName')?.hasError('required')\">\r\n Institution name is required\r\n </small>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"field\">\r\n <div class=\"head\">Country</div>\r\n <ng-select formControlName=\"country\" [items]=\"countries\" bindLabel=\"country\" bindValue=\"countryCode2\"\r\n [clearable]=\"false\" placeholder=\"Select Country\" (change)=\"onCountryChange($event)\">\r\n <ng-template ng-option-tmp let-item=\"item\" let-item$=\"item$\" let-index=\"index\">\r\n <input class=\"form-check-input\" type=\"checkbox\" [checked]=\"item$.selected\" readonly />\r\n {{ item.country }}\r\n </ng-template>\r\n <!-- <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\" let-item$=\"item$\" let-index=\"index\">\r\n <span class=\"ng-value-label\">\r\n {{item.country}}\r\n </span>\r\n <span class=\"ng-value-icon right\" (click)=\"clear(item)\" aria-hidden=\"true\">\r\n <img src=\"/assets/images/icons/close-sm-circle.svg\" class=\"close-btn-select\" />\r\n </span> \r\n </ng-template> -->\r\n </ng-select>\r\n </div>\r\n\r\n <div class=\"field\">\r\n <div class=\"head\">State</div>\r\n <ng-select formControlName=\"state\" [items]=\"states\" bindLabel=\"stateName\" bindValue=\"stateCode\"\r\n placeholder=\"Select State\">\r\n\r\n <ng-template ng-option-tmp let-item=\"item\" let-item$=\"item$\">\r\n <input class=\"form-check-input\" type=\"checkbox\" [checked]=\"item$.selected\" />\r\n {{ item.stateName }}\r\n </ng-template>\r\n\r\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\r\n <span class=\"ng-value-label\">\r\n {{ item.stateName }}\r\n </span>\r\n <span class=\"ng-value-icon right\" (click)=\"clear(item)\">\r\n <img src=\"/assets/images/icons/close-sm-circle.svg\" class=\"close-btn-select\" />\r\n </span>\r\n </ng-template>\r\n </ng-select>\r\n\r\n </div>\r\n </div>\r\n <div class=\"row form-row\">\r\n <div class=\"field city\">\r\n <div class=\"head\">City</div>\r\n <input type=\"text\" placeholder=\"Enter City here\" formControlName=\"city\" />\r\n <small class=\"error\" *ngIf=\"educationForm.get('city')?.touched &&\r\n educationForm.get('city')?.hasError('required')\">\r\n Enter City\r\n </small>\r\n </div>\r\n <div class=\"field date\">\r\n <div class=\"mb-3 head\">\r\n <div class=\"head\">Start Date</div>\r\n <input class=\"form-control date-time-filter\" placeholder=\"Start date\" [maxDate]=\"maxDate\" bsDatepicker [bsConfig]=\"{ adaptivePosition: true,showWeekNumbers: false, isAnimated: true, \r\n customTodayClass: !educationForm.get('startDate')?.value ? 'today-highlight' : '' }\"\r\n formControlName=\"startDate\" (bsValueChange)=\"onPreferredDateChange($event)\">\r\n <small class=\"error\" *ngIf=\"educationForm.get('startDate')?.touched &&\r\n educationForm.get('startDate')?.hasError('required')\">\r\n Start Date is required\r\n </small>\r\n \r\n </div>\r\n </div>\r\n\r\n <div class=\"field date\">\r\n <div class=\"mb-3 head\">\r\n <div class=\"head\">To Date</div>\r\n <input class=\"form-control date-time-filter\" placeholder=\"To date\" [maxDate]=\"maxDate\" bsDatepicker [bsConfig]=\"{ adaptivePosition: true,showWeekNumbers: false, isAnimated: true, \r\n customTodayClass: !educationForm.get('endDate')?.value ? 'today-highlight' : '' }\"\r\n formControlName=\"endDate\" (bsValueChange)=\"onPreferredDateChange($event)\">\r\n <small class=\"error\" *ngIf=\"educationForm.get('endDate')?.touched &&\r\n educationForm.get('endDate')?.hasError('required')\">\r\n To Date is required\r\n </small>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"field full-width\">\r\n <div class=\"head\">Comments</div>\r\n <textarea placeholder=\"Description\" formControlName=\"comments\">\r\n </textarea>\r\n </div>\r\n </div>\r\n </form>\r\n <div class=\"row\">\r\n <div class=\"upload-wrapper\">\r\n <p class=\"upload-title\">Upload</p>\r\n <p class=\"upload-subtitle\">Add documents such as Diploma, Degree</p>\r\n <button type=\"button\" class=\"upload-btn\" (click)=\"fileInput.click()\">\r\n Upload Documents\r\n </button>\r\n <input #fileInput type=\"file\" accept=\".pdf,.doc,.docx\" (change)=\"selectFile($event)\" hidden />\r\n <div class=\"file-name d-flex align-items-center\" *ngIf=\"fileName\">\r\n <span>Selected: {{ fileName }}</span>\r\n\r\n <span class=\"remove-file ms-2\" (click)=\"removeFile()\">\r\n \u274C\r\n </span>\r\n</div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"action\">\r\n <button type=\"button\" class=\"secondary\" (click)=\"back()\">Back</button>\r\n <div class=\"right-actions\"> \r\n <button type=\"button\" class=\"secondary\" (click)=\"nextStep()\" >\r\n Skip\r\n </button> \r\n <button type=\"button\" class=\"primary\" [disabled]=\"proposalLoader\" [ng2-loading]=\"proposalLoader\"\r\n (click)=\"saveFile()\">\r\n Continue\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"work-preview\" *ngIf=\"showpreview()\">\r\n <div class=\"preview-header\" >\r\n <h3>Education Preview</h3>\r\n </div>\r\n <div class=\"accordion\" >\r\n\r\n <div *ngFor=\"let exp of workStore.experiences(); let i = index\" style=\"margin-bottom: 20px;\"\r\n class=\"accordion-item border-0\">\r\n\r\n <!-- HEADER (preview) -->\r\n <h2 class=\"accordion-header\">\r\n <button class=\"accordion-button collapsed\" type=\"button\" data-bs-toggle=\"collapse\"\r\n [attr.data-bs-target]=\"'#edu_' + i\">\r\n\r\n <!-- LEFT : TITLE -->\r\n <span class=\"accordion-title\">\r\n {{ exp.courseName }}\r\n </span>\r\n\r\n <!-- RIGHT : EDIT ICON -->\r\n <span class=\"accordion-actions\">\r\n <img src=\"/assets/images/icons/edit-text.png\" class=\"edit-icon icon-color\"\r\n (click)=\"edit(i); $event.stopPropagation()\" alt=\"Edit\" />\r\n </span>\r\n\r\n </button>\r\n </h2>\r\n\r\n\r\n <!-- BODY -->\r\n <div [id]=\"'edu_' + i\" class=\"accordion-collapse collapse\" style=\"margin-bottom: 20px;\">\r\n <div class=\"accordion-body\">\r\n\r\n <!-- GRID DATA (2 or 3 columns) -->\r\n <div class=\"detail-grid\">\r\n\r\n <div>\r\n <strong>Course Name</strong><br />\r\n <span class=\"job-title\"> {{ exp.courseName }}</span>\r\n </div>\r\n <div>\r\n <strong>Course Type</strong><br />\r\n <span class=\"job-title\"> {{ exp.courseType }}</span>\r\n </div>\r\n <div>\r\n <strong>Institute Name</strong><br />\r\n <span class=\"job-title\"> {{ exp.instituteName }}</span>\r\n </div>\r\n <div>\r\n <strong>From Date</strong><br />\r\n <span class=\"job-title\"> {{ exp.startDate | date:'MM/dd/yyyy' }}</span>\r\n </div>\r\n <div>\r\n <strong>To Date</strong><br />\r\n <span class=\"job-title\"> {{ exp.endDate | date:'MM/dd/yyyy' }}</span>\r\n </div>\r\n <div>\r\n <strong>State</strong><br />\r\n <span class=\"job-title\"> {{ exp.state | stateName }}</span>\r\n </div> <div>\r\n <strong>City</strong><br />\r\n <span class=\"job-title\"> {{ exp.city }}</span>\r\n </div>\r\n \r\n <div *ngIf=\"exp.fileUrl\" class=\"full-width\">\r\n <strong>Document</strong><br />\r\n <a [href]=\"cloudfrontUrl+exp.fileUrl\" target=\"_blank\">\r\n <span class=\"job-title\"> {{ exp.fileName }}</span>\r\n </a>\r\n </div>\r\n </div>\r\n <div class=\"full-width mt-3\">\r\n <strong>Comments</strong><br />\r\n <span class=\"job-title\"> {{ exp.comments }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"actions\">\r\n <button type=\"button\" class=\"secondary\" (click)=\"back()\">Back</button>\r\n <div class=\"right-actions\">\r\n <button type=\"button\" class=\"primary add-btn\" (click)=\"add()\" style=\"background-color: #1f4d5f;\">\r\n Add More Educations\r\n </button>\r\n <button type=\"button\" class=\"primary\" (click)=\"nextStep()\">\r\n Continue\r\n </button>\r\n </div>\r\n </div>\r\n</div>", styles: [".education-container{max-width:1000px;margin:0 auto;padding:24px 16px;min-height:300px}h3{font-size:18px;font-weight:600;margin-bottom:4px}.hint{font-size:14px;color:#6b7280;margin-bottom:24px}.row{display:flex;margin-bottom:16px}.field{flex:1;display:flex;flex-direction:column}.field.full-width{flex:1 1 100%}input,select,textarea{padding:10px 12px;border:2px solid #d1d5db;border-radius:4px;font-size:13px;outline:none;box-sizing:border-box}::ng-deep .ng-select.ng-select-single .ng-select-container{height:45px}::ng-deep .ng-select.ng-select-single .ng-select-container .ng-value-container .ng-placeholder{top:10px}textarea{height:90px;resize:none}.error{margin-top:4px;font-size:12px;color:#dc2626}.actions{display:flex;justify-content:space-between;margin-top:24px}button{height:44px;min-width:120px;border-radius:4px;border:none;font-size:14px;cursor:pointer}button.primary{background-color:#4077ad;color:#fff}button.secondary{background-color:#f3f4f6;color:#374151}button:disabled{background-color:#9ca3af;cursor:not-allowed}.head{color:#6b7280;font-size:14px;font-weight:500;margin-bottom:5px}::ng-deep .today-highlight{color:#fff!important;background:#1e2541!important}.form-row{display:flex}.field{display:flex;flex-direction:column}.field.city{flex:0 0 50%}.field.date{flex:0 0 25%}::ng-deep .ng-select .ng-select-container .ng-value-container .ng-placeholder{color:#757575;font-size:14px}.close-btn-select{width:16px;height:16px;color:#00f;display:inline-block}.upload-wrapper{margin-top:37px}.upload-title{font-weight:600;margin-bottom:4px}.upload-subtitle{font-size:13px;color:#6c757d;margin-bottom:12px}.upload-btn{background-color:#1f4d5f;color:#fff;border:none;padding:10px 18px;border-radius:6px;font-size:14px;cursor:pointer}.upload-btn:hover{background-color:#173b4a}.file-name{margin-top:8px;font-size:13px;color:#495057}.right-actions{display:flex;gap:16px}.date-time-filter{padding-right:40px;background-image:url(/assets/images/icons/calendar.svg);background-repeat:no-repeat;background-position:right 12px center;background-size:18px 18px;cursor:pointer}.work-preview{max-width:1000px;padding:20px;margin:15px auto;background-color:#f4f6f8;font-family:Segoe UI,Arial,sans-serif}.preview-card{position:relative;background-color:#fff;border-radius:8px;box-shadow:0 3px 8px #0000001a;padding:20px 25px;margin-bottom:20px;margin-top:20px;transition:box-shadow .2s ease}.preview-card:hover{box-shadow:0 6px 15px #00000026}.edit-btn{position:absolute;top:15px;right:15px;width:20px;height:20px;cursor:pointer}.card-top h4{margin:0;font-size:18px;color:#1f4d5f}.card-top .job-title{display:block;font-size:14px;color:#555;margin-top:2px}.card-meta{margin:10px 0;font-size:13px;color:#777;display:flex;justify-content:space-between}.card-meta .dates{font-style:italic}.job-description{font-size:14px;color:#333;line-height:1.5;margin-bottom:8px}.file-link{font-size:13px;color:#4077ad;text-decoration:underline;display:inline-block;margin-top:5px}.actions{display:flex;justify-content:space-between;margin:50px 100px 20px}.action{display:flex;justify-content:space-between;margin:50px 0 20px}button.secondary{background-color:#e0e0e0;color:#6c757dc7;padding:8px 20px;border:none;border-radius:6px;cursor:pointer}button.primary{background-color:#4077ad;color:#fff;padding:8px 20px;border:none;border-radius:6px;cursor:pointer}@media (max-width: 600px){.preview-card{padding:15px}.edit-btn{top:10px;right:10px;width:18px;height:18px}.card-meta{flex-direction:column;gap:3px}}::ng-deep ng-dropdown-panel input[type=checkbox]{margin-right:0!important;padding:9px;margin-top:0}.form-check-input:checked{color:#fff!important;border-color:#2980b9!important;background-color:#2980b9!important}::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-option{font-size:14px}::ng-deep .ng-value-label{font-size:14px}::ng-deep .bs-datepicker-head{background-color:#1e2541!important}::ng-deep .theme-green .bs-datepicker-body table td span.selected,.theme-green .bs-datepicker-body table td.selected span,.theme-green .bs-datepicker-body table td span[class*=select-]:after,.theme-green .bs-datepicker-body table td[class*=select-] span:after{background-color:#1e2541!important}.icon-color{cursor:pointer;width:20px;height:20px;transition:transform .3s ease;filter:brightness(0) saturate(100%) invert(48%) sepia(8%) saturate(350%) hue-rotate(170deg) brightness(92%) contrast(88%)}.icon-color.edit{width:18px;height:18px}.detail-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.accordion-button{display:flex;align-items:center}.accordion-title{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.accordion-actions{display:flex;align-items:center;margin-right:12px}.edit-icon{cursor:pointer}::ng-deep .accordion-item:first-of-type>.accordion-header .accordion-button{margin-bottom:20px}.job-title{color:#6c757d;font-weight:400;font-size:14px}.preview-header{margin-left:400px}.accordion-item{margin:20px 100px}.add-btn{width:200px}@media screen and (max-width: 767px){.row{flex-direction:column;gap:12px}.right-actions{gap:9px;flex-direction:column-reverse}.preview-header{margin-left:0}.accordion{margin:20px 0}.actions,.action{gap:8px;display:flex;flex-direction:column-reverse}.accordion-item{margin:20px 0}.add-btn{width:unset}.actions{margin:50px 0 20px}}.remove-file{cursor:pointer;font-size:14px;color:red}\n"], dependencies: [{ kind: "directive", type: i11.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i8.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i8.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: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i8.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i8.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i12.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "directive", type: i12.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }, { kind: "directive", type: i12.NgLabelTemplateDirective, selector: "[ng-label-tmp]" }, { kind: "directive", type: i12$1.BsDatepickerDirective, selector: "[bsDatepicker]", inputs: ["placement", "triggers", "outsideClick", "container", "outsideEsc", "isDisabled", "minDate", "maxDate", "ignoreMinMaxErrors", "minMode", "daysDisabled", "datesDisabled", "datesEnabled", "dateCustomClasses", "dateTooltipTexts", "isOpen", "bsValue", "bsConfig"], outputs: ["onShown", "onHidden", "bsValueChange"], exportAs: ["bsDatepicker"] }, { kind: "directive", type: i12$1.BsDatepickerInputDirective, selector: "input[bsDatepicker]" }, { kind: "directive", type: Ng2LoadingSpinnerDirective, selector: "[ng2-loading]", inputs: ["ng2-loading", "config", "template"] }, { kind: "pipe", type: i11.DatePipe, name: "date" }, { kind: "pipe", type: StateNamePipe, name: "stateName" }] });
|
|
2354
2425
|
}
|
|
2355
2426
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: EducationComponent, decorators: [{
|
|
2356
2427
|
type: Component,
|
|
2357
|
-
args: [{ selector: 'app-education', standalone: false, template: "<div *ngIf=\"!showpreview()\">\r\n <div class=\"education-container\">\r\n <h3>Add Education</h3>\r\n <p class=\"hint\">\r\n Please list your educational history. This can cover anything from GED to college degree\r\n </p>\r\n <form [formGroup]=\"educationForm\">\r\n <div class=\"row\">\r\n <div class=\"field\">\r\n <div class=\"head\">General Equivalency Diploma / Degree</div>\r\n <input type=\"text\" placeholder=\"Enter your Diploma here\" formControlName=\"courseName\" />\r\n <small class=\"error\" *ngIf=\"educationForm.get('courseName')?.touched &&\r\n educationForm.get('courseName')?.hasError('required')\">\r\n Degree is required\r\n </small>\r\n </div>\r\n\r\n <div class=\"field\">\r\n <div class=\"head\">Diploma / Degree Type</div>\r\n <input type=\"text\" placeholder=\"Enter your Diploma / Degree Type\" formControlName=\"courseType\" />\r\n <small class=\"error\" *ngIf=\"educationForm.get('courseType')?.touched &&\r\n educationForm.get('courseType')?.hasError('required')\">\r\n Diploma / Degree Type is required\r\n </small>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"field full-width\">\r\n <div class=\"head\">Institution Name</div>\r\n <input type=\"text\" placeholder=\"Enter institution name here\" formControlName=\"instituteName\" />\r\n <small class=\"error\" *ngIf=\"educationForm.get('instituteName')?.touched &&\r\n educationForm.get('instituteName')?.hasError('required')\">\r\n Institution name is required\r\n </small>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"field\">\r\n <div class=\"head\">Country</div>\r\n <ng-select formControlName=\"country\" [items]=\"countries\" bindLabel=\"country\" bindValue=\"countryCode2\"\r\n [clearable]=\"false\" placeholder=\"Select Country\" (change)=\"onCountryChange($event)\">\r\n <ng-template ng-option-tmp let-item=\"item\" let-item$=\"item$\" let-index=\"index\">\r\n <input class=\"form-check-input\" type=\"checkbox\" [checked]=\"item$.selected\" readonly />\r\n {{ item.country }}\r\n </ng-template>\r\n <!-- <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\" let-item$=\"item$\" let-index=\"index\">\r\n <span class=\"ng-value-label\">\r\n {{item.country}}\r\n </span>\r\n <span class=\"ng-value-icon right\" (click)=\"clear(item)\" aria-hidden=\"true\">\r\n <img src=\"/assets/images/icons/close-sm-circle.svg\" class=\"close-btn-select\" />\r\n </span> \r\n </ng-template> -->\r\n </ng-select>\r\n </div>\r\n\r\n <div class=\"field\">\r\n <div class=\"head\">State</div>\r\n <ng-select formControlName=\"state\" [items]=\"states\" bindLabel=\"stateName\" bindValue=\"stateCode\"\r\n placeholder=\"Select State\">\r\n\r\n <ng-template ng-option-tmp let-item=\"item\" let-item$=\"item$\">\r\n <input class=\"form-check-input\" type=\"checkbox\" [checked]=\"item$.selected\" />\r\n {{ item.stateName }}\r\n </ng-template>\r\n\r\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\r\n <span class=\"ng-value-label\">\r\n {{ item.stateName }}\r\n </span>\r\n <span class=\"ng-value-icon right\" (click)=\"clear(item)\">\r\n <img src=\"/assets/images/icons/close-sm-circle.svg\" class=\"close-btn-select\" />\r\n </span>\r\n </ng-template>\r\n </ng-select>\r\n\r\n </div>\r\n </div>\r\n <div class=\"row form-row\">\r\n <div class=\"field city\">\r\n <div class=\"head\">City</div>\r\n <input type=\"text\" placeholder=\"Enter City here\" formControlName=\"city\" />\r\n <small class=\"error\" *ngIf=\"educationForm.get('city')?.touched &&\r\n educationForm.get('city')?.hasError('required')\">\r\n Enter City\r\n </small>\r\n </div>\r\n <div class=\"field date\">\r\n <div class=\"mb-3 head\">\r\n <div class=\"head\">Start Date</div>\r\n <input class=\"form-control date-time-filter\" placeholder=\"Start date\" [maxDate]=\"maxDate\" bsDatepicker [bsConfig]=\"{ adaptivePosition: true,showWeekNumbers: false, isAnimated: true, \r\n customTodayClass: !educationForm.get('startDate')?.value ? 'today-highlight' : '' }\"\r\n formControlName=\"startDate\" (bsValueChange)=\"onPreferredDateChange($event)\">\r\n <small class=\"error\" *ngIf=\"educationForm.get('startDate')?.touched &&\r\n educationForm.get('startDate')?.hasError('required')\">\r\n Start Date is required\r\n </small>\r\n \r\n </div>\r\n </div>\r\n\r\n <div class=\"field date\">\r\n <div class=\"mb-3 head\">\r\n <div class=\"head\">To Date</div>\r\n <input class=\"form-control date-time-filter\" placeholder=\"To date\" [maxDate]=\"maxDate\" bsDatepicker [bsConfig]=\"{ adaptivePosition: true,showWeekNumbers: false, isAnimated: true, \r\n customTodayClass: !educationForm.get('endDate')?.value ? 'today-highlight' : '' }\"\r\n formControlName=\"endDate\" (bsValueChange)=\"onPreferredDateChange($event)\">\r\n <small class=\"error\" *ngIf=\"educationForm.get('endDate')?.touched &&\r\n educationForm.get('endDate')?.hasError('required')\">\r\n To Date is required\r\n </small>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"field full-width\">\r\n <div class=\"head\">Comments</div>\r\n <textarea placeholder=\"Description\" formControlName=\"comments\">\r\n </textarea>\r\n </div>\r\n </div>\r\n </form>\r\n <div class=\"row\">\r\n <div class=\"upload-wrapper\">\r\n <p class=\"upload-title\">Upload</p>\r\n <p class=\"upload-subtitle\">Add documents such as Diploma, Degree</p>\r\n <button type=\"button\" class=\"upload-btn\" (click)=\"fileInput.click()\">\r\n Upload Documents\r\n </button>\r\n <input #fileInput type=\"file\" accept=\".pdf,.doc,.docx\" (change)=\"selectFile($event)\" hidden />\r\n <p class=\"file-name\" *ngIf=\"fileName\">\r\n Selected: {{ fileName }}\r\n </p>\r\n </div>\r\n </div>\r\n\r\n <div class=\"action\">\r\n <button type=\"button\" class=\"secondary\" (click)=\"back()\">Back</button>\r\n <div class=\"right-actions\"> \r\n <button type=\"button\" class=\"secondary\" (click)=\"nextStep()\" >\r\n Skip\r\n </button> \r\n <button type=\"button\" class=\"primary\" [disabled]=\"proposalLoader\" [ng2-loading]=\"proposalLoader\"\r\n (click)=\"saveFile()\">\r\n Continue\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"work-preview\" *ngIf=\"showpreview()\">\r\n <div class=\"preview-header\" >\r\n <h3>Education Preview</h3>\r\n </div>\r\n <div class=\"accordion\" >\r\n\r\n <div *ngFor=\"let exp of workStore.experiences(); let i = index\" style=\"margin-bottom: 20px;\"\r\n class=\"accordion-item border-0\">\r\n\r\n <!-- HEADER (preview) -->\r\n <h2 class=\"accordion-header\">\r\n <button class=\"accordion-button collapsed\" type=\"button\" data-bs-toggle=\"collapse\"\r\n [attr.data-bs-target]=\"'#edu_' + i\">\r\n\r\n <!-- LEFT : TITLE -->\r\n <span class=\"accordion-title\">\r\n {{ exp.courseName }}\r\n </span>\r\n\r\n <!-- RIGHT : EDIT ICON -->\r\n <span class=\"accordion-actions\">\r\n <img src=\"/assets/images/icons/edit-text.png\" class=\"edit-icon icon-color\"\r\n (click)=\"edit(i); $event.stopPropagation()\" alt=\"Edit\" />\r\n </span>\r\n\r\n </button>\r\n </h2>\r\n\r\n\r\n <!-- BODY -->\r\n <div [id]=\"'edu_' + i\" class=\"accordion-collapse collapse\" style=\"margin-bottom: 20px;\">\r\n <div class=\"accordion-body\">\r\n\r\n <!-- GRID DATA (2 or 3 columns) -->\r\n <div class=\"detail-grid\">\r\n\r\n <div>\r\n <strong>Course Name</strong><br />\r\n <span class=\"job-title\"> {{ exp.courseName }}</span>\r\n </div>\r\n <div>\r\n <strong>Course Type</strong><br />\r\n <span class=\"job-title\"> {{ exp.courseType }}</span>\r\n </div>\r\n <div>\r\n <strong>Institute Name</strong><br />\r\n <span class=\"job-title\"> {{ exp.instituteName }}</span>\r\n </div>\r\n <div>\r\n <strong>From Date</strong><br />\r\n <span class=\"job-title\"> {{ exp.startDate | date:'MM/dd/yyyy' }}</span>\r\n </div>\r\n <div>\r\n <strong>To Date</strong><br />\r\n <span class=\"job-title\"> {{ exp.endDate | date:'MM/dd/yyyy' }}</span>\r\n </div>\r\n <div>\r\n <strong>State</strong><br />\r\n <span class=\"job-title\"> {{ exp.state | stateName }}</span>\r\n </div> <div>\r\n <strong>City</strong><br />\r\n <span class=\"job-title\"> {{ exp.city }}</span>\r\n </div>\r\n \r\n <div *ngIf=\"exp.fileUrl\" class=\"full-width\">\r\n <strong>Document</strong><br />\r\n <a [href]=\"cloudfrontUrl+exp.fileUrl\" target=\"_blank\">\r\n <span class=\"job-title\"> {{ exp.fileName }}</span>\r\n </a>\r\n </div>\r\n </div>\r\n <div class=\"full-width mt-3\">\r\n <strong>Comments</strong><br />\r\n <span class=\"job-title\"> {{ exp.comments }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"actions\">\r\n <button type=\"button\" class=\"secondary\" (click)=\"back()\">Back</button>\r\n <div class=\"right-actions\">\r\n <button type=\"button\" class=\"primary add-btn\" (click)=\"add()\" style=\"background-color: #1f4d5f;\">\r\n Add More Educations\r\n </button>\r\n <button type=\"button\" class=\"primary\" (click)=\"nextStep()\">\r\n Continue\r\n </button>\r\n </div>\r\n </div>\r\n</div>", styles: [".education-container{max-width:1000px;margin:0 auto;padding:24px 16px;min-height:300px}h3{font-size:18px;font-weight:600;margin-bottom:4px}.hint{font-size:14px;color:#6b7280;margin-bottom:24px}.row{display:flex;margin-bottom:16px}.field{flex:1;display:flex;flex-direction:column}.field.full-width{flex:1 1 100%}input,select,textarea{padding:10px 12px;border:2px solid #d1d5db;border-radius:4px;font-size:13px;outline:none;box-sizing:border-box}::ng-deep .ng-select.ng-select-single .ng-select-container{height:45px}::ng-deep .ng-select.ng-select-single .ng-select-container .ng-value-container .ng-placeholder{top:10px}textarea{height:90px;resize:none}.error{margin-top:4px;font-size:12px;color:#dc2626}.actions{display:flex;justify-content:space-between;margin-top:24px}button{height:44px;min-width:120px;border-radius:4px;border:none;font-size:14px;cursor:pointer}button.primary{background-color:#4077ad;color:#fff}button.secondary{background-color:#f3f4f6;color:#374151}button:disabled{background-color:#9ca3af;cursor:not-allowed}.head{color:#6b7280;font-size:14px;font-weight:500;margin-bottom:5px}::ng-deep .today-highlight{color:#fff!important;background:#1e2541!important}.form-row{display:flex}.field{display:flex;flex-direction:column}.field.city{flex:0 0 50%}.field.date{flex:0 0 25%}::ng-deep .ng-select .ng-select-container .ng-value-container .ng-placeholder{color:#757575;font-size:14px}.close-btn-select{width:16px;height:16px;color:#00f;display:inline-block}.upload-wrapper{margin-top:37px}.upload-title{font-weight:600;margin-bottom:4px}.upload-subtitle{font-size:13px;color:#6c757d;margin-bottom:12px}.upload-btn{background-color:#1f4d5f;color:#fff;border:none;padding:10px 18px;border-radius:6px;font-size:14px;cursor:pointer}.upload-btn:hover{background-color:#173b4a}.file-name{margin-top:8px;font-size:13px;color:#495057}.right-actions{display:flex;gap:16px}.date-time-filter{padding-right:40px;background-image:url(/assets/images/icons/calendar.svg);background-repeat:no-repeat;background-position:right 12px center;background-size:18px 18px;cursor:pointer}.work-preview{max-width:1000px;padding:20px;margin:15px auto;background-color:#f4f6f8;font-family:Segoe UI,Arial,sans-serif}.preview-card{position:relative;background-color:#fff;border-radius:8px;box-shadow:0 3px 8px #0000001a;padding:20px 25px;margin-bottom:20px;margin-top:20px;transition:box-shadow .2s ease}.preview-card:hover{box-shadow:0 6px 15px #00000026}.edit-btn{position:absolute;top:15px;right:15px;width:20px;height:20px;cursor:pointer}.card-top h4{margin:0;font-size:18px;color:#1f4d5f}.card-top .job-title{display:block;font-size:14px;color:#555;margin-top:2px}.card-meta{margin:10px 0;font-size:13px;color:#777;display:flex;justify-content:space-between}.card-meta .dates{font-style:italic}.job-description{font-size:14px;color:#333;line-height:1.5;margin-bottom:8px}.file-link{font-size:13px;color:#4077ad;text-decoration:underline;display:inline-block;margin-top:5px}.actions{display:flex;justify-content:space-between;margin:50px 100px 20px}.action{display:flex;justify-content:space-between;margin:50px 0 20px}button.secondary{background-color:#e0e0e0;color:#6c757dc7;padding:8px 20px;border:none;border-radius:6px;cursor:pointer}button.primary{background-color:#4077ad;color:#fff;padding:8px 20px;border:none;border-radius:6px;cursor:pointer}@media (max-width: 600px){.preview-card{padding:15px}.edit-btn{top:10px;right:10px;width:18px;height:18px}.card-meta{flex-direction:column;gap:3px}}::ng-deep ng-dropdown-panel input[type=checkbox]{margin-right:0!important;padding:9px;margin-top:0}.form-check-input:checked{color:#fff!important;border-color:#2980b9!important;background-color:#2980b9!important}::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-option{font-size:14px}::ng-deep .ng-value-label{font-size:14px}::ng-deep .bs-datepicker-head{background-color:#1e2541!important}::ng-deep .theme-green .bs-datepicker-body table td span.selected,.theme-green .bs-datepicker-body table td.selected span,.theme-green .bs-datepicker-body table td span[class*=select-]:after,.theme-green .bs-datepicker-body table td[class*=select-] span:after{background-color:#1e2541!important}.icon-color{cursor:pointer;width:20px;height:20px;transition:transform .3s ease;filter:brightness(0) saturate(100%) invert(48%) sepia(8%) saturate(350%) hue-rotate(170deg) brightness(92%) contrast(88%)}.icon-color.edit{width:18px;height:18px}.detail-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.accordion-button{display:flex;align-items:center}.accordion-title{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.accordion-actions{display:flex;align-items:center;margin-right:12px}.edit-icon{cursor:pointer}::ng-deep .accordion-item:first-of-type>.accordion-header .accordion-button{margin-bottom:20px}.job-title{color:#6c757d;font-weight:400;font-size:14px}.preview-header{margin-left:400px}.accordion-item{margin:20px 100px}.add-btn{width:200px}@media screen and (max-width: 767px){.row{flex-direction:column;gap:12px}.right-actions{gap:9px;flex-direction:column-reverse}.preview-header{margin-left:0}.accordion{margin:20px 0}.actions,.action{gap:8px;display:flex;flex-direction:column-reverse}.accordion-item{margin:20px 0}.add-btn{width:unset}.actions{margin:50px 0 20px}}\n"] }]
|
|
2358
|
-
}], ctorParameters: () => [{ type: UserEducationService }, { type: CredentialingStore }, { type: EducationStore }, { type: CountryServices }, { type: PostalCodeServices }, { type: i6.TokenService }, { type:
|
|
2428
|
+
args: [{ selector: 'app-education', standalone: false, template: "<div *ngIf=\"!showpreview()\">\r\n <div class=\"education-container\">\r\n <h3>Add Education</h3>\r\n <p class=\"hint\">\r\n Please list your educational history. This can cover anything from GED to college degree\r\n </p>\r\n <form [formGroup]=\"educationForm\">\r\n <div class=\"row\">\r\n <div class=\"field\">\r\n <div class=\"head\">General Equivalency Diploma / Degree</div>\r\n <input type=\"text\" placeholder=\"Enter your Diploma here\" formControlName=\"courseName\" />\r\n <small class=\"error\" *ngIf=\"educationForm.get('courseName')?.touched &&\r\n educationForm.get('courseName')?.hasError('required')\">\r\n Degree is required\r\n </small>\r\n </div>\r\n\r\n <div class=\"field\">\r\n <div class=\"head\">Diploma / Degree Type</div>\r\n <input type=\"text\" placeholder=\"Enter your Diploma / Degree Type\" formControlName=\"courseType\" />\r\n <small class=\"error\" *ngIf=\"educationForm.get('courseType')?.touched &&\r\n educationForm.get('courseType')?.hasError('required')\">\r\n Diploma / Degree Type is required\r\n </small>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"field full-width\">\r\n <div class=\"head\">Institution Name</div>\r\n <input type=\"text\" placeholder=\"Enter institution name here\" formControlName=\"instituteName\" />\r\n <small class=\"error\" *ngIf=\"educationForm.get('instituteName')?.touched &&\r\n educationForm.get('instituteName')?.hasError('required')\">\r\n Institution name is required\r\n </small>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"field\">\r\n <div class=\"head\">Country</div>\r\n <ng-select formControlName=\"country\" [items]=\"countries\" bindLabel=\"country\" bindValue=\"countryCode2\"\r\n [clearable]=\"false\" placeholder=\"Select Country\" (change)=\"onCountryChange($event)\">\r\n <ng-template ng-option-tmp let-item=\"item\" let-item$=\"item$\" let-index=\"index\">\r\n <input class=\"form-check-input\" type=\"checkbox\" [checked]=\"item$.selected\" readonly />\r\n {{ item.country }}\r\n </ng-template>\r\n <!-- <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\" let-item$=\"item$\" let-index=\"index\">\r\n <span class=\"ng-value-label\">\r\n {{item.country}}\r\n </span>\r\n <span class=\"ng-value-icon right\" (click)=\"clear(item)\" aria-hidden=\"true\">\r\n <img src=\"/assets/images/icons/close-sm-circle.svg\" class=\"close-btn-select\" />\r\n </span> \r\n </ng-template> -->\r\n </ng-select>\r\n </div>\r\n\r\n <div class=\"field\">\r\n <div class=\"head\">State</div>\r\n <ng-select formControlName=\"state\" [items]=\"states\" bindLabel=\"stateName\" bindValue=\"stateCode\"\r\n placeholder=\"Select State\">\r\n\r\n <ng-template ng-option-tmp let-item=\"item\" let-item$=\"item$\">\r\n <input class=\"form-check-input\" type=\"checkbox\" [checked]=\"item$.selected\" />\r\n {{ item.stateName }}\r\n </ng-template>\r\n\r\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\r\n <span class=\"ng-value-label\">\r\n {{ item.stateName }}\r\n </span>\r\n <span class=\"ng-value-icon right\" (click)=\"clear(item)\">\r\n <img src=\"/assets/images/icons/close-sm-circle.svg\" class=\"close-btn-select\" />\r\n </span>\r\n </ng-template>\r\n </ng-select>\r\n\r\n </div>\r\n </div>\r\n <div class=\"row form-row\">\r\n <div class=\"field city\">\r\n <div class=\"head\">City</div>\r\n <input type=\"text\" placeholder=\"Enter City here\" formControlName=\"city\" />\r\n <small class=\"error\" *ngIf=\"educationForm.get('city')?.touched &&\r\n educationForm.get('city')?.hasError('required')\">\r\n Enter City\r\n </small>\r\n </div>\r\n <div class=\"field date\">\r\n <div class=\"mb-3 head\">\r\n <div class=\"head\">Start Date</div>\r\n <input class=\"form-control date-time-filter\" placeholder=\"Start date\" [maxDate]=\"maxDate\" bsDatepicker [bsConfig]=\"{ adaptivePosition: true,showWeekNumbers: false, isAnimated: true, \r\n customTodayClass: !educationForm.get('startDate')?.value ? 'today-highlight' : '' }\"\r\n formControlName=\"startDate\" (bsValueChange)=\"onPreferredDateChange($event)\">\r\n <small class=\"error\" *ngIf=\"educationForm.get('startDate')?.touched &&\r\n educationForm.get('startDate')?.hasError('required')\">\r\n Start Date is required\r\n </small>\r\n \r\n </div>\r\n </div>\r\n\r\n <div class=\"field date\">\r\n <div class=\"mb-3 head\">\r\n <div class=\"head\">To Date</div>\r\n <input class=\"form-control date-time-filter\" placeholder=\"To date\" [maxDate]=\"maxDate\" bsDatepicker [bsConfig]=\"{ adaptivePosition: true,showWeekNumbers: false, isAnimated: true, \r\n customTodayClass: !educationForm.get('endDate')?.value ? 'today-highlight' : '' }\"\r\n formControlName=\"endDate\" (bsValueChange)=\"onPreferredDateChange($event)\">\r\n <small class=\"error\" *ngIf=\"educationForm.get('endDate')?.touched &&\r\n educationForm.get('endDate')?.hasError('required')\">\r\n To Date is required\r\n </small>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"field full-width\">\r\n <div class=\"head\">Comments</div>\r\n <textarea placeholder=\"Description\" formControlName=\"comments\">\r\n </textarea>\r\n </div>\r\n </div>\r\n </form>\r\n <div class=\"row\">\r\n <div class=\"upload-wrapper\">\r\n <p class=\"upload-title\">Upload</p>\r\n <p class=\"upload-subtitle\">Add documents such as Diploma, Degree</p>\r\n <button type=\"button\" class=\"upload-btn\" (click)=\"fileInput.click()\">\r\n Upload Documents\r\n </button>\r\n <input #fileInput type=\"file\" accept=\".pdf,.doc,.docx\" (change)=\"selectFile($event)\" hidden />\r\n <div class=\"file-name d-flex align-items-center\" *ngIf=\"fileName\">\r\n <span>Selected: {{ fileName }}</span>\r\n\r\n <span class=\"remove-file ms-2\" (click)=\"removeFile()\">\r\n \u274C\r\n </span>\r\n</div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"action\">\r\n <button type=\"button\" class=\"secondary\" (click)=\"back()\">Back</button>\r\n <div class=\"right-actions\"> \r\n <button type=\"button\" class=\"secondary\" (click)=\"nextStep()\" >\r\n Skip\r\n </button> \r\n <button type=\"button\" class=\"primary\" [disabled]=\"proposalLoader\" [ng2-loading]=\"proposalLoader\"\r\n (click)=\"saveFile()\">\r\n Continue\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"work-preview\" *ngIf=\"showpreview()\">\r\n <div class=\"preview-header\" >\r\n <h3>Education Preview</h3>\r\n </div>\r\n <div class=\"accordion\" >\r\n\r\n <div *ngFor=\"let exp of workStore.experiences(); let i = index\" style=\"margin-bottom: 20px;\"\r\n class=\"accordion-item border-0\">\r\n\r\n <!-- HEADER (preview) -->\r\n <h2 class=\"accordion-header\">\r\n <button class=\"accordion-button collapsed\" type=\"button\" data-bs-toggle=\"collapse\"\r\n [attr.data-bs-target]=\"'#edu_' + i\">\r\n\r\n <!-- LEFT : TITLE -->\r\n <span class=\"accordion-title\">\r\n {{ exp.courseName }}\r\n </span>\r\n\r\n <!-- RIGHT : EDIT ICON -->\r\n <span class=\"accordion-actions\">\r\n <img src=\"/assets/images/icons/edit-text.png\" class=\"edit-icon icon-color\"\r\n (click)=\"edit(i); $event.stopPropagation()\" alt=\"Edit\" />\r\n </span>\r\n\r\n </button>\r\n </h2>\r\n\r\n\r\n <!-- BODY -->\r\n <div [id]=\"'edu_' + i\" class=\"accordion-collapse collapse\" style=\"margin-bottom: 20px;\">\r\n <div class=\"accordion-body\">\r\n\r\n <!-- GRID DATA (2 or 3 columns) -->\r\n <div class=\"detail-grid\">\r\n\r\n <div>\r\n <strong>Course Name</strong><br />\r\n <span class=\"job-title\"> {{ exp.courseName }}</span>\r\n </div>\r\n <div>\r\n <strong>Course Type</strong><br />\r\n <span class=\"job-title\"> {{ exp.courseType }}</span>\r\n </div>\r\n <div>\r\n <strong>Institute Name</strong><br />\r\n <span class=\"job-title\"> {{ exp.instituteName }}</span>\r\n </div>\r\n <div>\r\n <strong>From Date</strong><br />\r\n <span class=\"job-title\"> {{ exp.startDate | date:'MM/dd/yyyy' }}</span>\r\n </div>\r\n <div>\r\n <strong>To Date</strong><br />\r\n <span class=\"job-title\"> {{ exp.endDate | date:'MM/dd/yyyy' }}</span>\r\n </div>\r\n <div>\r\n <strong>State</strong><br />\r\n <span class=\"job-title\"> {{ exp.state | stateName }}</span>\r\n </div> <div>\r\n <strong>City</strong><br />\r\n <span class=\"job-title\"> {{ exp.city }}</span>\r\n </div>\r\n \r\n <div *ngIf=\"exp.fileUrl\" class=\"full-width\">\r\n <strong>Document</strong><br />\r\n <a [href]=\"cloudfrontUrl+exp.fileUrl\" target=\"_blank\">\r\n <span class=\"job-title\"> {{ exp.fileName }}</span>\r\n </a>\r\n </div>\r\n </div>\r\n <div class=\"full-width mt-3\">\r\n <strong>Comments</strong><br />\r\n <span class=\"job-title\"> {{ exp.comments }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"actions\">\r\n <button type=\"button\" class=\"secondary\" (click)=\"back()\">Back</button>\r\n <div class=\"right-actions\">\r\n <button type=\"button\" class=\"primary add-btn\" (click)=\"add()\" style=\"background-color: #1f4d5f;\">\r\n Add More Educations\r\n </button>\r\n <button type=\"button\" class=\"primary\" (click)=\"nextStep()\">\r\n Continue\r\n </button>\r\n </div>\r\n </div>\r\n</div>", styles: [".education-container{max-width:1000px;margin:0 auto;padding:24px 16px;min-height:300px}h3{font-size:18px;font-weight:600;margin-bottom:4px}.hint{font-size:14px;color:#6b7280;margin-bottom:24px}.row{display:flex;margin-bottom:16px}.field{flex:1;display:flex;flex-direction:column}.field.full-width{flex:1 1 100%}input,select,textarea{padding:10px 12px;border:2px solid #d1d5db;border-radius:4px;font-size:13px;outline:none;box-sizing:border-box}::ng-deep .ng-select.ng-select-single .ng-select-container{height:45px}::ng-deep .ng-select.ng-select-single .ng-select-container .ng-value-container .ng-placeholder{top:10px}textarea{height:90px;resize:none}.error{margin-top:4px;font-size:12px;color:#dc2626}.actions{display:flex;justify-content:space-between;margin-top:24px}button{height:44px;min-width:120px;border-radius:4px;border:none;font-size:14px;cursor:pointer}button.primary{background-color:#4077ad;color:#fff}button.secondary{background-color:#f3f4f6;color:#374151}button:disabled{background-color:#9ca3af;cursor:not-allowed}.head{color:#6b7280;font-size:14px;font-weight:500;margin-bottom:5px}::ng-deep .today-highlight{color:#fff!important;background:#1e2541!important}.form-row{display:flex}.field{display:flex;flex-direction:column}.field.city{flex:0 0 50%}.field.date{flex:0 0 25%}::ng-deep .ng-select .ng-select-container .ng-value-container .ng-placeholder{color:#757575;font-size:14px}.close-btn-select{width:16px;height:16px;color:#00f;display:inline-block}.upload-wrapper{margin-top:37px}.upload-title{font-weight:600;margin-bottom:4px}.upload-subtitle{font-size:13px;color:#6c757d;margin-bottom:12px}.upload-btn{background-color:#1f4d5f;color:#fff;border:none;padding:10px 18px;border-radius:6px;font-size:14px;cursor:pointer}.upload-btn:hover{background-color:#173b4a}.file-name{margin-top:8px;font-size:13px;color:#495057}.right-actions{display:flex;gap:16px}.date-time-filter{padding-right:40px;background-image:url(/assets/images/icons/calendar.svg);background-repeat:no-repeat;background-position:right 12px center;background-size:18px 18px;cursor:pointer}.work-preview{max-width:1000px;padding:20px;margin:15px auto;background-color:#f4f6f8;font-family:Segoe UI,Arial,sans-serif}.preview-card{position:relative;background-color:#fff;border-radius:8px;box-shadow:0 3px 8px #0000001a;padding:20px 25px;margin-bottom:20px;margin-top:20px;transition:box-shadow .2s ease}.preview-card:hover{box-shadow:0 6px 15px #00000026}.edit-btn{position:absolute;top:15px;right:15px;width:20px;height:20px;cursor:pointer}.card-top h4{margin:0;font-size:18px;color:#1f4d5f}.card-top .job-title{display:block;font-size:14px;color:#555;margin-top:2px}.card-meta{margin:10px 0;font-size:13px;color:#777;display:flex;justify-content:space-between}.card-meta .dates{font-style:italic}.job-description{font-size:14px;color:#333;line-height:1.5;margin-bottom:8px}.file-link{font-size:13px;color:#4077ad;text-decoration:underline;display:inline-block;margin-top:5px}.actions{display:flex;justify-content:space-between;margin:50px 100px 20px}.action{display:flex;justify-content:space-between;margin:50px 0 20px}button.secondary{background-color:#e0e0e0;color:#6c757dc7;padding:8px 20px;border:none;border-radius:6px;cursor:pointer}button.primary{background-color:#4077ad;color:#fff;padding:8px 20px;border:none;border-radius:6px;cursor:pointer}@media (max-width: 600px){.preview-card{padding:15px}.edit-btn{top:10px;right:10px;width:18px;height:18px}.card-meta{flex-direction:column;gap:3px}}::ng-deep ng-dropdown-panel input[type=checkbox]{margin-right:0!important;padding:9px;margin-top:0}.form-check-input:checked{color:#fff!important;border-color:#2980b9!important;background-color:#2980b9!important}::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-option{font-size:14px}::ng-deep .ng-value-label{font-size:14px}::ng-deep .bs-datepicker-head{background-color:#1e2541!important}::ng-deep .theme-green .bs-datepicker-body table td span.selected,.theme-green .bs-datepicker-body table td.selected span,.theme-green .bs-datepicker-body table td span[class*=select-]:after,.theme-green .bs-datepicker-body table td[class*=select-] span:after{background-color:#1e2541!important}.icon-color{cursor:pointer;width:20px;height:20px;transition:transform .3s ease;filter:brightness(0) saturate(100%) invert(48%) sepia(8%) saturate(350%) hue-rotate(170deg) brightness(92%) contrast(88%)}.icon-color.edit{width:18px;height:18px}.detail-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.accordion-button{display:flex;align-items:center}.accordion-title{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.accordion-actions{display:flex;align-items:center;margin-right:12px}.edit-icon{cursor:pointer}::ng-deep .accordion-item:first-of-type>.accordion-header .accordion-button{margin-bottom:20px}.job-title{color:#6c757d;font-weight:400;font-size:14px}.preview-header{margin-left:400px}.accordion-item{margin:20px 100px}.add-btn{width:200px}@media screen and (max-width: 767px){.row{flex-direction:column;gap:12px}.right-actions{gap:9px;flex-direction:column-reverse}.preview-header{margin-left:0}.accordion{margin:20px 0}.actions,.action{gap:8px;display:flex;flex-direction:column-reverse}.accordion-item{margin:20px 0}.add-btn{width:unset}.actions{margin:50px 0 20px}}.remove-file{cursor:pointer;font-size:14px;color:red}\n"] }]
|
|
2429
|
+
}], ctorParameters: () => [{ type: UserEducationService }, { type: UserService }, { type: CredentialingStore }, { type: EducationStore }, { type: CountryServices }, { type: PostalCodeServices }, { type: i6.TokenService }, { type: i8.FormBuilder }, { type: FileService }, { type: i1.HttpClient }], propDecorators: { providerId: [{
|
|
2359
2430
|
type: Input
|
|
2360
2431
|
}], providerName: [{
|
|
2361
2432
|
type: Input
|
|
@@ -2463,6 +2534,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
2463
2534
|
|
|
2464
2535
|
class CertificationComponent {
|
|
2465
2536
|
userDocumentService;
|
|
2537
|
+
userService;
|
|
2466
2538
|
store;
|
|
2467
2539
|
workStore;
|
|
2468
2540
|
tokenService;
|
|
@@ -2470,6 +2542,10 @@ class CertificationComponent {
|
|
|
2470
2542
|
fb;
|
|
2471
2543
|
fileService;
|
|
2472
2544
|
http;
|
|
2545
|
+
originalFormValue;
|
|
2546
|
+
states = [];
|
|
2547
|
+
fileChanged = false;
|
|
2548
|
+
user;
|
|
2473
2549
|
uploadToAws = true;
|
|
2474
2550
|
providerId;
|
|
2475
2551
|
providerName;
|
|
@@ -2491,7 +2567,6 @@ class CertificationComponent {
|
|
|
2491
2567
|
model = { fileId: null, fileUrl: null, fileName: null };
|
|
2492
2568
|
fileName;
|
|
2493
2569
|
preferredStartDate = null;
|
|
2494
|
-
states = [];
|
|
2495
2570
|
selectedCountry = 'US'; // ✅ default
|
|
2496
2571
|
selectedStates = null;
|
|
2497
2572
|
userName;
|
|
@@ -2502,8 +2577,9 @@ class CertificationComponent {
|
|
|
2502
2577
|
}, ...(ngDevMode ? [{ debugName: "showpreview" }] : []));
|
|
2503
2578
|
userdata;
|
|
2504
2579
|
maxDate = new Date();
|
|
2505
|
-
constructor(userDocumentService, store, workStore, tokenService, postalCodeService, fb, fileService, http) {
|
|
2580
|
+
constructor(userDocumentService, userService, store, workStore, tokenService, postalCodeService, fb, fileService, http) {
|
|
2506
2581
|
this.userDocumentService = userDocumentService;
|
|
2582
|
+
this.userService = userService;
|
|
2507
2583
|
this.store = store;
|
|
2508
2584
|
this.workStore = workStore;
|
|
2509
2585
|
this.tokenService = tokenService;
|
|
@@ -2528,6 +2604,7 @@ class CertificationComponent {
|
|
|
2528
2604
|
.subscribe(value => {
|
|
2529
2605
|
this.loadDocumentTypes(value || '');
|
|
2530
2606
|
});
|
|
2607
|
+
this.user = this.userService.getUserDetails();
|
|
2531
2608
|
await loadProfile();
|
|
2532
2609
|
const saved = profileSignal();
|
|
2533
2610
|
this.userdata = saved;
|
|
@@ -2535,7 +2612,7 @@ class CertificationComponent {
|
|
|
2535
2612
|
this.userId = await this.tokenService.getUserId();
|
|
2536
2613
|
this.workStore.loadFromApi(this.userId);
|
|
2537
2614
|
this.loadDocumentTypesDefault();
|
|
2538
|
-
this.getstates();
|
|
2615
|
+
// this.getstates();
|
|
2539
2616
|
}
|
|
2540
2617
|
loadDocumentTypes(searchText = '') {
|
|
2541
2618
|
this.userDocumentService
|
|
@@ -2589,16 +2666,87 @@ class CertificationComponent {
|
|
|
2589
2666
|
this.certificateForm.markAllAsTouched();
|
|
2590
2667
|
return;
|
|
2591
2668
|
}
|
|
2669
|
+
// ✅ STOP unnecessary API
|
|
2670
|
+
if (this.editingIndex >= 0 && !this.hasChanges()) {
|
|
2671
|
+
console.log('No changes → API skipped');
|
|
2672
|
+
this.isEditing.set(false);
|
|
2673
|
+
return;
|
|
2674
|
+
}
|
|
2592
2675
|
this.proposalLoader = true;
|
|
2593
|
-
if (!this.fileData) {
|
|
2676
|
+
if (!this.fileData || !this.fileChanged) {
|
|
2594
2677
|
this.saveAndContinue();
|
|
2595
2678
|
}
|
|
2596
2679
|
else {
|
|
2597
|
-
|
|
2598
|
-
|
|
2599
|
-
|
|
2680
|
+
this.saveAWSFile();
|
|
2681
|
+
}
|
|
2682
|
+
}
|
|
2683
|
+
edit(index) {
|
|
2684
|
+
this.isEditing.set(true);
|
|
2685
|
+
const data = this.workStore.getExperience(index);
|
|
2686
|
+
if (!data)
|
|
2687
|
+
return;
|
|
2688
|
+
const formValue = {
|
|
2689
|
+
number: data.number ? String(data.number) : null,
|
|
2690
|
+
issuedBy: data.issuedBy || null,
|
|
2691
|
+
issuedState: data.issuedState || null,
|
|
2692
|
+
issueDate: data.issueDate ? new Date(data.issueDate).toISOString() : null,
|
|
2693
|
+
expiryDate: data.expiryDate ? new Date(data.expiryDate).toISOString() : null,
|
|
2694
|
+
notes: data.notes || null,
|
|
2695
|
+
documentTypeId: data.documentTypeId || null
|
|
2696
|
+
};
|
|
2697
|
+
// UI patch
|
|
2698
|
+
this.certificateForm.patchValue({
|
|
2699
|
+
...formValue,
|
|
2700
|
+
issueDate: data.issueDate ? new Date(data.issueDate) : null,
|
|
2701
|
+
expiryDate: data.expiryDate ? new Date(data.expiryDate) : null
|
|
2702
|
+
});
|
|
2703
|
+
// ✅ store normalized original
|
|
2704
|
+
this.originalFormValue = formValue;
|
|
2705
|
+
this.selectedDocumentId = data.documentTypeId;
|
|
2706
|
+
this.selectedDocumentName = data.documentTypeName;
|
|
2707
|
+
this.model.fileUrl = data.fileUrl;
|
|
2708
|
+
this.model.fileName = data.fileName;
|
|
2709
|
+
this.fileName = data.fileName;
|
|
2710
|
+
this.fileChanged = false;
|
|
2711
|
+
this.fileData = null;
|
|
2712
|
+
this.editingIndex = index;
|
|
2713
|
+
}
|
|
2714
|
+
selectFile(event) {
|
|
2715
|
+
this.fileData = event.target.files[0];
|
|
2716
|
+
if (this.fileData) {
|
|
2717
|
+
this.fileName = this.fileData.name;
|
|
2718
|
+
this.model.fileName = this.fileName;
|
|
2719
|
+
this.fileChanged = true; // ✅ important
|
|
2600
2720
|
}
|
|
2601
2721
|
}
|
|
2722
|
+
removeFile() {
|
|
2723
|
+
this.fileData = null;
|
|
2724
|
+
this.fileName = null;
|
|
2725
|
+
this.model.fileId = null;
|
|
2726
|
+
this.model.fileUrl = null;
|
|
2727
|
+
this.model.fileName = null;
|
|
2728
|
+
this.fileChanged = true; // ✅ mark change
|
|
2729
|
+
}
|
|
2730
|
+
hasChanges() {
|
|
2731
|
+
const current = this.certificateForm.getRawValue();
|
|
2732
|
+
const normalize = (data) => ({
|
|
2733
|
+
number: data.number ? String(data.number) : null,
|
|
2734
|
+
issuedBy: data.issuedBy || null,
|
|
2735
|
+
issuedState: data.issuedState || null,
|
|
2736
|
+
issueDate: data.issueDate
|
|
2737
|
+
? new Date(data.issueDate).toISOString()
|
|
2738
|
+
: null,
|
|
2739
|
+
expiryDate: data.expiryDate
|
|
2740
|
+
? new Date(data.expiryDate).toISOString()
|
|
2741
|
+
: null,
|
|
2742
|
+
notes: data.notes || null,
|
|
2743
|
+
documentTypeId: this.selectedDocumentId || null
|
|
2744
|
+
});
|
|
2745
|
+
const formattedCurrent = normalize(current);
|
|
2746
|
+
const formattedOriginal = normalize(this.originalFormValue);
|
|
2747
|
+
return (JSON.stringify(formattedCurrent) !== JSON.stringify(formattedOriginal) ||
|
|
2748
|
+
this.fileChanged);
|
|
2749
|
+
}
|
|
2602
2750
|
async saveAWSFile() {
|
|
2603
2751
|
const fileType = this.fileData.type;
|
|
2604
2752
|
const fileExtension = fileType.split('/')[1] || fileType.split('/')[0] || 'file';
|
|
@@ -2652,7 +2800,7 @@ class CertificationComponent {
|
|
|
2652
2800
|
providerName: this.providerName,
|
|
2653
2801
|
targetProviderId: this.providerId,
|
|
2654
2802
|
//userId: this.userId,
|
|
2655
|
-
userName: this.
|
|
2803
|
+
userName: this.user.fullName,
|
|
2656
2804
|
number: fullValue.number ? fullValue.number : 0,
|
|
2657
2805
|
issuedState: fullValue.issuedState ? fullValue.issuedState : null,
|
|
2658
2806
|
issuedBy: fullValue.issuedBy,
|
|
@@ -2667,10 +2815,10 @@ class CertificationComponent {
|
|
|
2667
2815
|
status: 2,
|
|
2668
2816
|
mainType: 2,
|
|
2669
2817
|
forUser: 2,
|
|
2670
|
-
userHeadShotUrl: this.
|
|
2818
|
+
userHeadShotUrl: this.user.headshotUrl,
|
|
2671
2819
|
isPrimary: false,
|
|
2672
|
-
emailId: this.
|
|
2673
|
-
phoneNumber: this.
|
|
2820
|
+
emailId: this.user.email,
|
|
2821
|
+
phoneNumber: this.user.phoneNumber,
|
|
2674
2822
|
profileVisibility: true,
|
|
2675
2823
|
notify: true,
|
|
2676
2824
|
nationwide: false
|
|
@@ -2728,46 +2876,21 @@ class CertificationComponent {
|
|
|
2728
2876
|
this.certificateForm.reset();
|
|
2729
2877
|
this.fileName = null;
|
|
2730
2878
|
}
|
|
2731
|
-
edit(index) {
|
|
2732
|
-
this.isEditing.set(true);
|
|
2733
|
-
const data = this.workStore.getExperience(index);
|
|
2734
|
-
if (!data)
|
|
2735
|
-
return;
|
|
2736
|
-
this.certificateForm.patchValue({
|
|
2737
|
-
number: data.number,
|
|
2738
|
-
issuedBy: data.issuedBy,
|
|
2739
|
-
issuedState: data.issuedState,
|
|
2740
|
-
issueDate: data.issueDate ? new Date(data.issueDate) : null,
|
|
2741
|
-
expiryDate: data.expiryDate ? new Date(data.expiryDate) : null,
|
|
2742
|
-
notes: data.notes,
|
|
2743
|
-
});
|
|
2744
|
-
this.selectedDocumentId != data.documentTypeId;
|
|
2745
|
-
this.model.fileUrl = data.fileUrl;
|
|
2746
|
-
this.model.fileName = data.fileName;
|
|
2747
|
-
this.fileName = data.fileName;
|
|
2748
|
-
this.editingIndex = index;
|
|
2749
|
-
this.loadDocumentTypes();
|
|
2750
|
-
}
|
|
2751
|
-
selectFile(event) {
|
|
2752
|
-
this.fileData = event.target.files[0];
|
|
2753
|
-
if (this.fileData) {
|
|
2754
|
-
this.fileName = this.fileData.name;
|
|
2755
|
-
this.model.fileName = this.fileName;
|
|
2756
|
-
}
|
|
2757
|
-
}
|
|
2758
2879
|
back() {
|
|
2759
2880
|
this.store.previousStep();
|
|
2760
2881
|
}
|
|
2761
2882
|
nextStep() {
|
|
2762
2883
|
this.store.nextStep();
|
|
2763
2884
|
}
|
|
2764
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: CertificationComponent, deps: [{ token: UserDocumentService }, { token: CredentialingStore }, { token: CertificationStore }, { token: i6.TokenService }, { token: PostalCodeServices }, { token:
|
|
2765
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: CertificationComponent, isStandalone: false, selector: "app-certification", inputs: { providerId: "providerId", providerName: "providerName", cloudfrontUrl: "cloudfrontUrl" }, ngImport: i0, template: "<div class=\"education-container\" *ngIf=\"!showpreview()\">\r\n <h3>Add Certificates</h3>\r\n <p class=\"hint\">\r\n Recommended for your role\r\n </p>\r\n <div class=\"document-container\">\r\n <input type=\"text\" class=\"search-input\" placeholder=\"Search documents here...\" [formControl]=\"searchControl\" />\r\n\r\n <div class=\"grid\">\r\n <div *ngFor=\"let item of documentTypes\">\r\n <label class=\"checkbox-row\">\r\n <input type=\"checkbox\" [checked]=\"isChecked(item.id)\" (change)=\"toggleSelection(item, $event)\" />\r\n <span class=\"title\">{{ item.type }}</span>\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n <form [formGroup]=\"certificateForm\">\r\n <div class=\"row\" style=\"margin-top: 20px;\">\r\n <div class=\"field\">\r\n <div class=\"head\">Certificate Number</div>\r\n <input type=\"text\" placeholder=\"Enter your Certificate Number here\" formControlName=\"number\" />\r\n <small class=\"error\" *ngIf=\"certificateForm.get('number')?.touched &&\r\n certificateForm.get('number')?.hasError('required')\">\r\n Certificate number is required\r\n </small>\r\n </div>\r\n\r\n <div class=\"field\">\r\n <div class=\"head\">Certificate Issued By</div>\r\n <input type=\"text\" placeholder=\"Enter Certificate Issued By here\" formControlName=\"issuedBy\" />\r\n <small class=\"error\" *ngIf=\"certificateForm.get('issuedBy')?.touched &&\r\n certificateForm.get('issuedBy')?.hasError('required')\">\r\n Certificate issued by is required\r\n </small>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"field\">\r\n <div class=\"head\">Issued State</div>\r\n <ng-select formControlName=\"issuedState\" [items]=\"states\" bindLabel=\"stateName\" bindValue=\"stateCode\"\r\n placeholder=\"Select Issued State here\">\r\n <ng-template ng-option-tmp let-item=\"item\" let-item$=\"item$\">\r\n <input class=\"form-check-input\" type=\"checkbox\" [checked]=\"item$.selected\" />\r\n {{ item.stateName }}\r\n </ng-template>\r\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\r\n <span class=\"ng-value-label\">\r\n {{ item.stateName }}\r\n </span>\r\n <span class=\"ng-value-icon right\" (click)=\"clear(item)\">\r\n <img src=\"/assets/images/icons/close-sm-circle.svg\" class=\"close-btn-select\" />\r\n </span>\r\n </ng-template>\r\n </ng-select>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"field\">\r\n <div class=\"mb-3 head\">\r\n <div class=\"head\">Issued Date</div>\r\n <input class=\"form-control date-time-filter\" placeholder=\"Issued On\" [maxDate]=\"maxDate\" bsDatepicker [bsConfig]=\"{ adaptivePosition: true, showWeekNumbers: false,\r\n isAnimated: true, customTodayClass: !certificateForm.get('issueDate')?.value ? 'today-highlight' : '' }\"\r\n formControlName=\"issueDate\" (bsValueChange)=\"onPreferredDateChange($event)\">\r\n <small class=\"error\" *ngIf=\"certificateForm.get('issueDate')?.touched &&\r\n certificateForm.get('issueDate')?.hasError('required')\">\r\n Issued date is required\r\n </small>\r\n </div>\r\n </div>\r\n\r\n <div class=\"field\">\r\n <div class=\"mb-3 head\">\r\n <div class=\"head\">Expiration Date</div>\r\n <input class=\"form-control date-time-filter\" placeholder=\"Expired On\" [maxDate]=\"maxDate\" bsDatepicker [bsConfig]=\"{ adaptivePosition: true,showWeekNumbers: false, isAnimated: true, \r\n customTodayClass: !certificateForm.get('expiryDate')?.value ? 'today-highlight' : '' }\"\r\n formControlName=\"expiryDate\" (bsValueChange)=\"onPreferredDateChange($event)\">\r\n <small class=\"error\" *ngIf=\"certificateForm.get('expiryDate')?.touched &&\r\n certificateForm.get('expiryDate')?.hasError('required')\">\r\n Expiry date is required\r\n </small>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"field full-width\">\r\n <div class=\"head\">Comments</div>\r\n <textarea placeholder=\"Description\" formControlName=\"notes\">\r\n </textarea>\r\n </div>\r\n </div>\r\n </form>\r\n <div class=\"row\">\r\n <div class=\"upload-wrapper\">\r\n\r\n <p class=\"upload-title\">Upload</p>\r\n <p class=\"upload-subtitle\">Add certificates below</p>\r\n\r\n <button type=\"button\" class=\"upload-btn\" (click)=\"fileInput.click()\">\r\n Upload Certifications\r\n </button>\r\n\r\n <input #fileInput type=\"file\" accept=\".pdf,.doc,.docx\" (change)=\"selectFile($event)\" hidden />\r\n\r\n <p class=\"file-name\" *ngIf=\"fileName\">\r\n Selected: {{ fileName }}\r\n </p>\r\n\r\n </div>\r\n\r\n </div>\r\n <div class=\"action\">\r\n <button type=\"button\" class=\"secondary\" (click)=\"back()\">Back</button>\r\n <div class=\"right-actions\">\r\n <button type=\"button\" class=\"secondary\" (click)=\"nextStep()\">\r\n Skip\r\n </button>\r\n <button type=\"button\" class=\"primary\" [disabled]=\"proposalLoader\" [ng2-loading]=\"proposalLoader\"\r\n (click)=\"saveFile()\">\r\n Continue\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"work-preview\" *ngIf=\"showpreview()\">\r\n <div class=\"preview-header\" >\r\n <h3>Certifications Preview</h3>\r\n </div>\r\n <div class=\"accordion\" style=\"margin: 20px 100px;\">\r\n\r\n <div *ngFor=\"let exp of workStore.experiences(); let i = index\" style=\"margin-bottom: 20px;\"\r\n class=\"accordion-item border-0\">\r\n <h2 class=\"accordion-header\">\r\n <button class=\"accordion-button collapsed\" type=\"button\" data-bs-toggle=\"collapse\"\r\n [attr.data-bs-target]=\"'#edu_' + i\">\r\n <span class=\"accordion-title\">\r\n {{ exp.documentTypeName }}\r\n </span>\r\n <span class=\"accordion-actions\">\r\n <img src=\"/assets/images/icons/edit-text.png\" class=\"edit-icon icon-color\"\r\n (click)=\"edit(i); $event.stopPropagation()\" alt=\"Edit\" />\r\n </span>\r\n </button>\r\n </h2>\r\n\r\n\r\n <div [id]=\"'edu_' + i\" class=\"accordion-collapse collapse\" style=\"margin-bottom: 20px;\">\r\n <div class=\"accordion-body\">\r\n <div class=\"detail-grid\">\r\n <div>\r\n <strong>Certificate Name</strong><br />\r\n <span class=\"job-title\"> {{ exp.documentTypeName }}</span>\r\n </div>\r\n <div>\r\n <strong>Certificate Number</strong><br />\r\n <span class=\"job-title\"> {{ exp.number }}</span>\r\n </div>\r\n <div>\r\n <strong>Issued By</strong><br />\r\n <span class=\"job-title\"> {{ exp.issuedBy }}</span>\r\n </div>\r\n <div>\r\n <strong>Issued State</strong><br />\r\n <span class=\"job-title\"> {{ exp.issuedState | stateName }}</span>\r\n </div>\r\n <div>\r\n <strong>Issued Date</strong><br />\r\n <span class=\"job-title\"> {{ exp.issueDate | date:'MM/dd/yyyy' }} </span>\r\n </div>\r\n <div>\r\n <strong>Expiry Date</strong><br />\r\n <span class=\"job-title\"> {{ exp.expiryDate | date:'MM/dd/yyyy' }}</span>\r\n </div>\r\n\r\n <div *ngIf=\"exp.fileUrl\" class=\"full-width\">\r\n <strong>Document</strong><br />\r\n <a [href]=\"cloudfrontUrl+exp.fileUrl\" target=\"_blank\">\r\n <span class=\"job-title\"> {{ exp.fileName }}</span>\r\n </a>\r\n </div>\r\n </div>\r\n <div class=\"full-width mt-3\">\r\n <strong>Description</strong><br />\r\n <span class=\"job-title\"> {{ exp.notes }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"actions\">\r\n <button type=\"button\" class=\"secondary\" (click)=\"back()\">Back</button>\r\n <div class=\"right-actions\">\r\n <button type=\"button\" class=\"primary add-btn\" (click)=\"add()\" style=\"background-color: #1f4d5f;\">\r\n Add More Certifications\r\n </button>\r\n <button type=\"button\" class=\"primary\" (click)=\"nextStep()\">\r\n Continue\r\n </button>\r\n </div>\r\n </div>\r\n</div>", styles: [".education-container{max-width:1000px;margin:0 auto;padding:24px 16px;min-height:300px}h3{font-size:23px;font-weight:600;margin-bottom:4px}.hint{font-size:14px;color:#6b7280;margin-bottom:24px}.row{display:flex;margin-bottom:16px}.field{flex:1;display:flex;flex-direction:column}.field.full-width{flex:1 1 100%}input[type=text],input[type=email],input[type=number],input[type=password],select,textarea{padding:10px 12px;border:2px solid #d1d5db;border-radius:4px;font-size:13px;outline:none;box-sizing:border-box;color:#374151}::ng-deep .ng-select.ng-select-single .ng-select-container{height:45px}::ng-deep .ng-select.ng-select-single .ng-select-container .ng-value-container .ng-placeholder{top:10px}textarea{height:90px;resize:none}.error{margin-top:4px;font-size:12px;color:#dc2626}.actions{display:flex;justify-content:space-between;margin:70px 0 40px}button{height:44px;min-width:120px;border-radius:4px;border:none;font-size:14px;cursor:pointer}button.primary{background-color:#4077ad;color:#fff}button.secondary{background-color:#f3f4f6;color:#374151}button:disabled{background-color:#9ca3af;cursor:not-allowed}.head{color:#6b7280;font-size:14px;font-weight:500;margin-bottom:5px}::ng-deep .today-highlight{color:#fff!important;background:#1e2541!important}.form-row{display:flex}.field{display:flex;flex-direction:column}.field.city{flex:0 0 50%}.field.date{flex:0 0 25%}::ng-deep .ng-select .ng-select-container .ng-value-container .ng-placeholder{color:#757575;font-size:14px}.close-btn-select{width:16px;height:16px;color:#00f;display:inline-block}.upload-wrapper{margin-top:37px}.upload-title{font-weight:600;margin-bottom:4px}.upload-subtitle{font-size:13px;color:#6c757d;margin-bottom:12px}.upload-btn{background-color:#1f4d5f;color:#fff;border:none;padding:10px 18px;border-radius:6px;font-size:14px;cursor:pointer}.upload-btn:hover{background-color:#173b4a}.file-name{margin-top:8px;font-size:13px;color:#495057}.right-actions{display:flex;gap:16px}.date-time-filter{padding-right:40px;background-image:url(/assets/images/icons/calendar.svg);background-repeat:no-repeat;background-position:right 12px center;background-size:18px 18px;cursor:pointer}.document-container{max-width:1100px;margin:auto}.search-input{width:100%;max-width:400px;height:44px;margin-bottom:16px}.grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.card{display:flex;align-items:center;min-height:48px}.checkbox{margin-top:4px}.checkbox-row{display:flex;align-items:center;gap:8px;cursor:pointer}.content .title{font-weight:600;font-size:14px}.checkbox-row input{margin:0}.title{font-size:14px;font-weight:600}.content .desc{font-size:12px;color:#666;margin-top:4px}.save-btn{margin-top:20px;padding:10px 18px;border-radius:6px;border:none;background:#4077ad;color:#fff;cursor:pointer}@media (max-width: 1024px){.grid{grid-template-columns:repeat(2,1fr)}}@media (max-width: 600px){.grid{grid-template-columns:1fr}}::ng-deep ng-dropdown-panel input[type=checkbox]{margin-right:0!important;padding:9px;margin-top:0}.form-check-input:checked{color:#fff!important;border-color:#2980b9!important;background-color:#2980b9!important}::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-option{font-size:14px}::ng-deep .ng-value-label{font-size:14px}::ng-deep .bs-datepicker-head{background-color:#1e2541!important}::ng-deep .theme-green .bs-datepicker-body table td span.selected,.theme-green .bs-datepicker-body table td.selected span,.theme-green .bs-datepicker-body table td span[class*=select-]:after,.theme-green .bs-datepicker-body table td[class*=select-] span:after{background-color:#1e2541!important}.work-preview{max-width:1000px;padding:15px;margin:15px auto;background-color:#f4f6f8;font-family:Segoe UI,Arial,sans-serif}.preview-card{position:relative;background-color:#fff;border-radius:8px;box-shadow:0 3px 8px #0000001a;padding:20px 25px;margin-bottom:20px;transition:box-shadow .2s ease}.preview-card:hover{box-shadow:0 6px 15px #00000026}.edit-btn{position:absolute;top:15px;right:15px;width:20px;height:20px;cursor:pointer}.card-top h4{margin:0;font-size:18px;color:#1f4d5f}.card-top .job-title{display:block;font-size:14px;color:#555;margin-top:2px}.card-meta{margin:10px 0;font-size:13px;color:#777;display:flex;justify-content:space-between}.card-meta .dates{font-style:italic}.job-description{font-size:14px;color:#333;line-height:1.5;margin-bottom:8px}.file-link{font-size:13px;color:#4077ad;text-decoration:underline;display:inline-block;margin-top:5px}.actions{display:flex;justify-content:space-between;margin:50px 100px 20px}.action{display:flex;justify-content:space-between;margin:50px 0 20px}button.secondary{background-color:#e0e0e0;color:#6c757dc7;padding:8px 20px;border:none;border-radius:6px;cursor:pointer}button.primary{background-color:#4077ad;color:#fff;padding:8px 20px;border:none;border-radius:6px;cursor:pointer}@media (max-width: 600px){.preview-card{padding:15px}.edit-btn{top:10px;right:10px;width:18px;height:18px}.card-meta{flex-direction:column;gap:3px}}.icon-color{cursor:pointer;width:20px;height:20px;transition:transform .3s ease;filter:brightness(0) saturate(100%) invert(48%) sepia(8%) saturate(350%) hue-rotate(170deg) brightness(92%) contrast(88%)}.icon-color.edit{width:18px;height:18px}.detail-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.accordion-button{display:flex;align-items:center}.accordion-title{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.accordion-actions{display:flex;align-items:center;margin-right:12px}.edit-icon{cursor:pointer}::ng-deep .accordion-item:first-of-type>.accordion-header .accordion-button{margin-bottom:20px}.job-title{color:#6c757d;font-weight:400;font-size:14px}.preview-header{margin-left:350px}.accordion{margin:20px 100px}.add-btn{width:200px}@media screen and (max-width: 767px){.hint{margin-bottom:5px}.add-btn{width:unset}.date-time-filter{font-size:14px}.search-input{margin-bottom:0}.right-actions{gap:5px}.preview-header{margin-left:0}.accordion{margin:20px 0!important}.actions{flex-direction:column-reverse;gap:5px}.right-actions{gap:5px;flex-direction:column-reverse}.actions{margin:50px 0 20px}.action{flex-direction:column-reverse;gap:5px}}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i10.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "directive", type: i10.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }, { kind: "directive", type: i10.NgLabelTemplateDirective, selector: "[ng-label-tmp]" }, { kind: "directive", type: i11.BsDatepickerDirective, selector: "[bsDatepicker]", inputs: ["placement", "triggers", "outsideClick", "container", "outsideEsc", "isDisabled", "minDate", "maxDate", "ignoreMinMaxErrors", "minMode", "daysDisabled", "datesDisabled", "datesEnabled", "dateCustomClasses", "dateTooltipTexts", "isOpen", "bsValue", "bsConfig"], outputs: ["onShown", "onHidden", "bsValueChange"], exportAs: ["bsDatepicker"] }, { kind: "directive", type: i11.BsDatepickerInputDirective, selector: "input[bsDatepicker]" }, { kind: "directive", type: Ng2LoadingSpinnerDirective, selector: "[ng2-loading]", inputs: ["ng2-loading", "config", "template"] }, { kind: "pipe", type: i1$1.DatePipe, name: "date" }, { kind: "pipe", type: StateNamePipe, name: "stateName" }] });
|
|
2885
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: CertificationComponent, deps: [{ token: UserDocumentService }, { token: UserService }, { token: CredentialingStore }, { token: CertificationStore }, { token: i6.TokenService }, { token: PostalCodeServices }, { token: i8.FormBuilder }, { token: FileService }, { token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Component });
|
|
2886
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: CertificationComponent, isStandalone: false, selector: "app-certification", inputs: { states: "states", providerId: "providerId", providerName: "providerName", cloudfrontUrl: "cloudfrontUrl" }, ngImport: i0, template: "<div class=\"education-container\" *ngIf=\"!showpreview()\">\r\n <h3>Add Certificates</h3>\r\n <p class=\"hint\">\r\n Recommended for your role\r\n </p>\r\n <div class=\"document-container\">\r\n <input type=\"text\" class=\"search-input\" placeholder=\"Search documents here...\" [formControl]=\"searchControl\" />\r\n\r\n <div class=\"grid\">\r\n <div *ngFor=\"let item of documentTypes\">\r\n <label class=\"checkbox-row\">\r\n <input type=\"checkbox\" [checked]=\"isChecked(item.id)\" (change)=\"toggleSelection(item, $event)\" />\r\n <span class=\"title\">{{ item.type }}</span>\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n <form [formGroup]=\"certificateForm\">\r\n <div class=\"row\" style=\"margin-top: 20px;\">\r\n <div class=\"field\">\r\n <div class=\"head\">Certificate Number</div>\r\n <input type=\"text\" placeholder=\"Enter your Certificate Number here\" formControlName=\"number\" />\r\n <small class=\"error\" *ngIf=\"certificateForm.get('number')?.touched &&\r\n certificateForm.get('number')?.hasError('required')\">\r\n Certificate number is required\r\n </small>\r\n </div>\r\n\r\n <div class=\"field\">\r\n <div class=\"head\">Certificate Issued By</div>\r\n <input type=\"text\" placeholder=\"Enter Certificate Issued By here\" formControlName=\"issuedBy\" />\r\n <small class=\"error\" *ngIf=\"certificateForm.get('issuedBy')?.touched &&\r\n certificateForm.get('issuedBy')?.hasError('required')\">\r\n Certificate issued by is required\r\n </small>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"field\">\r\n <div class=\"head\">Issued State</div>\r\n <ng-select formControlName=\"issuedState\" [items]=\"states\" bindLabel=\"stateName\" bindValue=\"stateCode\"\r\n placeholder=\"Select Issued State here\">\r\n <ng-template ng-option-tmp let-item=\"item\" let-item$=\"item$\">\r\n <input class=\"form-check-input\" type=\"checkbox\" [checked]=\"item$.selected\" />\r\n {{ item.stateName }}\r\n </ng-template>\r\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\r\n <span class=\"ng-value-label\">\r\n {{ item.stateName }}\r\n </span>\r\n <span class=\"ng-value-icon right\" (click)=\"clear(item)\">\r\n <img src=\"/assets/images/icons/close-sm-circle.svg\" class=\"close-btn-select\" />\r\n </span>\r\n </ng-template>\r\n </ng-select>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"field\">\r\n <div class=\"mb-3 head\">\r\n <div class=\"head\">Issued Date</div>\r\n <input class=\"form-control date-time-filter\" placeholder=\"Issued On\" [maxDate]=\"maxDate\" bsDatepicker [bsConfig]=\"{ adaptivePosition: true, showWeekNumbers: false,\r\n isAnimated: true, customTodayClass: !certificateForm.get('issueDate')?.value ? 'today-highlight' : '' }\"\r\n formControlName=\"issueDate\" (bsValueChange)=\"onPreferredDateChange($event)\">\r\n <small class=\"error\" *ngIf=\"certificateForm.get('issueDate')?.touched &&\r\n certificateForm.get('issueDate')?.hasError('required')\">\r\n Issued date is required\r\n </small>\r\n </div>\r\n </div>\r\n\r\n <div class=\"field\">\r\n <div class=\"mb-3 head\">\r\n <div class=\"head\">Expiration Date</div>\r\n <input class=\"form-control date-time-filter\" placeholder=\"Expired On\" [maxDate]=\"maxDate\" bsDatepicker [bsConfig]=\"{ adaptivePosition: true,showWeekNumbers: false, isAnimated: true, \r\n customTodayClass: !certificateForm.get('expiryDate')?.value ? 'today-highlight' : '' }\"\r\n formControlName=\"expiryDate\" (bsValueChange)=\"onPreferredDateChange($event)\">\r\n <small class=\"error\" *ngIf=\"certificateForm.get('expiryDate')?.touched &&\r\n certificateForm.get('expiryDate')?.hasError('required')\">\r\n Expiry date is required\r\n </small>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"field full-width\">\r\n <div class=\"head\">Comments</div>\r\n <textarea placeholder=\"Description\" formControlName=\"notes\">\r\n </textarea>\r\n </div>\r\n </div>\r\n </form>\r\n <div class=\"row\">\r\n <div class=\"upload-wrapper\">\r\n\r\n <p class=\"upload-title\">Upload</p>\r\n <p class=\"upload-subtitle\">Add certificates below</p>\r\n\r\n <button type=\"button\" class=\"upload-btn\" (click)=\"fileInput.click()\">\r\n Upload Certifications\r\n </button>\r\n\r\n <input #fileInput type=\"file\" accept=\".pdf,.doc,.docx\" (change)=\"selectFile($event)\" hidden />\r\n\r\n <p class=\"file-name\" *ngIf=\"fileName\">\r\n Selected: {{ fileName }}\r\n <span class=\"remove-file\" style=\"cursor: pointer;\" (click)=\"removeFile()\">\u2716</span>\r\n</p>\r\n\r\n </div>\r\n\r\n </div>\r\n <div class=\"action\">\r\n <button type=\"button\" class=\"secondary\" (click)=\"back()\">Back</button>\r\n <div class=\"right-actions\">\r\n <button type=\"button\" class=\"secondary\" (click)=\"nextStep()\">\r\n Skip\r\n </button>\r\n <button type=\"button\" class=\"primary\" [disabled]=\"proposalLoader\" [ng2-loading]=\"proposalLoader\"\r\n (click)=\"saveFile()\">\r\n Continue\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"work-preview\" *ngIf=\"showpreview()\">\r\n <div class=\"preview-header\" >\r\n <h3>Certifications Preview</h3>\r\n </div>\r\n <div class=\"accordion\" style=\"margin: 20px 100px;\">\r\n\r\n <div *ngFor=\"let exp of workStore.experiences(); let i = index\" style=\"margin-bottom: 20px;\"\r\n class=\"accordion-item border-0\">\r\n <h2 class=\"accordion-header\">\r\n <button class=\"accordion-button collapsed\" type=\"button\" data-bs-toggle=\"collapse\"\r\n [attr.data-bs-target]=\"'#edu_' + i\">\r\n <span class=\"accordion-title\">\r\n {{ exp.documentTypeName }}\r\n </span>\r\n <span class=\"accordion-actions\">\r\n <img src=\"/assets/images/icons/edit-text.png\" class=\"edit-icon icon-color\"\r\n (click)=\"edit(i); $event.stopPropagation()\" alt=\"Edit\" />\r\n </span>\r\n </button>\r\n </h2>\r\n\r\n\r\n <div [id]=\"'edu_' + i\" class=\"accordion-collapse collapse\" style=\"margin-bottom: 20px;\">\r\n <div class=\"accordion-body\">\r\n <div class=\"detail-grid\">\r\n <div>\r\n <strong>Certificate Name</strong><br />\r\n <span class=\"job-title\"> {{ exp.documentTypeName }}</span>\r\n </div>\r\n <div>\r\n <strong>Certificate Number</strong><br />\r\n <span class=\"job-title\"> {{ exp.number }}</span>\r\n </div>\r\n <div>\r\n <strong>Issued By</strong><br />\r\n <span class=\"job-title\"> {{ exp.issuedBy }}</span>\r\n </div>\r\n <div>\r\n <strong>Issued State</strong><br />\r\n <span class=\"job-title\"> {{ exp.issuedState | stateName }}</span>\r\n </div>\r\n <div>\r\n <strong>Issued Date</strong><br />\r\n <span class=\"job-title\"> {{ exp.issueDate | date:'MM/dd/yyyy' }} </span>\r\n </div>\r\n <div>\r\n <strong>Expiry Date</strong><br />\r\n <span class=\"job-title\"> {{ exp.expiryDate | date:'MM/dd/yyyy' }}</span>\r\n </div>\r\n\r\n <div *ngIf=\"exp.fileUrl\" class=\"full-width\">\r\n <strong>Document</strong><br />\r\n <a [href]=\"cloudfrontUrl+exp.fileUrl\" target=\"_blank\">\r\n <span class=\"job-title\"> {{ exp.fileName }}</span>\r\n </a>\r\n </div>\r\n </div>\r\n <div class=\"full-width mt-3\">\r\n <strong>Description</strong><br />\r\n <span class=\"job-title\"> {{ exp.notes }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"actions\">\r\n <button type=\"button\" class=\"secondary\" (click)=\"back()\">Back</button>\r\n <div class=\"right-actions\">\r\n <button type=\"button\" class=\"primary add-btn\" (click)=\"add()\" style=\"background-color: #1f4d5f;\">\r\n Add More Certifications\r\n </button>\r\n <button type=\"button\" class=\"primary\" (click)=\"nextStep()\">\r\n Continue\r\n </button>\r\n </div>\r\n </div>\r\n</div>", styles: [".education-container{max-width:1000px;margin:0 auto;padding:24px 16px;min-height:300px}h3{font-size:23px;font-weight:600;margin-bottom:4px}.hint{font-size:14px;color:#6b7280;margin-bottom:24px}.row{display:flex;margin-bottom:16px}.field{flex:1;display:flex;flex-direction:column}.field.full-width{flex:1 1 100%}input[type=text],input[type=email],input[type=number],input[type=password],select,textarea{padding:10px 12px;border:2px solid #d1d5db;border-radius:4px;font-size:13px;outline:none;box-sizing:border-box;color:#374151}::ng-deep .ng-select.ng-select-single .ng-select-container{height:45px}::ng-deep .ng-select.ng-select-single .ng-select-container .ng-value-container .ng-placeholder{top:10px}textarea{height:90px;resize:none}.error{margin-top:4px;font-size:12px;color:#dc2626}.actions{display:flex;justify-content:space-between;margin:70px 0 40px}button{height:44px;min-width:120px;border-radius:4px;border:none;font-size:14px;cursor:pointer}button.primary{background-color:#4077ad;color:#fff}button.secondary{background-color:#f3f4f6;color:#374151}button:disabled{background-color:#9ca3af;cursor:not-allowed}.head{color:#6b7280;font-size:14px;font-weight:500;margin-bottom:5px}::ng-deep .today-highlight{color:#fff!important;background:#1e2541!important}.form-row{display:flex}.field{display:flex;flex-direction:column}.field.city{flex:0 0 50%}.field.date{flex:0 0 25%}::ng-deep .ng-select .ng-select-container .ng-value-container .ng-placeholder{color:#757575;font-size:14px}.close-btn-select{width:16px;height:16px;color:#00f;display:inline-block}.upload-wrapper{margin-top:37px}.upload-title{font-weight:600;margin-bottom:4px}.upload-subtitle{font-size:13px;color:#6c757d;margin-bottom:12px}.upload-btn{background-color:#1f4d5f;color:#fff;border:none;padding:10px 18px;border-radius:6px;font-size:14px;cursor:pointer}.upload-btn:hover{background-color:#173b4a}.file-name{margin-top:8px;font-size:13px;color:#495057}.right-actions{display:flex;gap:16px}.date-time-filter{padding-right:40px;background-image:url(/assets/images/icons/calendar.svg);background-repeat:no-repeat;background-position:right 12px center;background-size:18px 18px;cursor:pointer}.document-container{max-width:1100px;margin:auto}.search-input{width:100%;max-width:400px;height:44px;margin-bottom:16px}.grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.card{display:flex;align-items:center;min-height:48px}.checkbox{margin-top:4px}.checkbox-row{display:flex;align-items:center;gap:8px;cursor:pointer}.content .title{font-weight:600;font-size:14px}.checkbox-row input{margin:0}.title{font-size:14px;font-weight:600}.content .desc{font-size:12px;color:#666;margin-top:4px}.save-btn{margin-top:20px;padding:10px 18px;border-radius:6px;border:none;background:#4077ad;color:#fff;cursor:pointer}@media (max-width: 1024px){.grid{grid-template-columns:repeat(2,1fr)}}@media (max-width: 600px){.grid{grid-template-columns:1fr}}::ng-deep ng-dropdown-panel input[type=checkbox]{margin-right:0!important;padding:9px;margin-top:0}.form-check-input:checked{color:#fff!important;border-color:#2980b9!important;background-color:#2980b9!important}::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-option{font-size:14px}::ng-deep .ng-value-label{font-size:14px}::ng-deep .bs-datepicker-head{background-color:#1e2541!important}::ng-deep .theme-green .bs-datepicker-body table td span.selected,.theme-green .bs-datepicker-body table td.selected span,.theme-green .bs-datepicker-body table td span[class*=select-]:after,.theme-green .bs-datepicker-body table td[class*=select-] span:after{background-color:#1e2541!important}.work-preview{max-width:1000px;padding:15px;margin:15px auto;background-color:#f4f6f8;font-family:Segoe UI,Arial,sans-serif}.preview-card{position:relative;background-color:#fff;border-radius:8px;box-shadow:0 3px 8px #0000001a;padding:20px 25px;margin-bottom:20px;transition:box-shadow .2s ease}.preview-card:hover{box-shadow:0 6px 15px #00000026}.edit-btn{position:absolute;top:15px;right:15px;width:20px;height:20px;cursor:pointer}.card-top h4{margin:0;font-size:18px;color:#1f4d5f}.card-top .job-title{display:block;font-size:14px;color:#555;margin-top:2px}.card-meta{margin:10px 0;font-size:13px;color:#777;display:flex;justify-content:space-between}.card-meta .dates{font-style:italic}.job-description{font-size:14px;color:#333;line-height:1.5;margin-bottom:8px}.file-link{font-size:13px;color:#4077ad;text-decoration:underline;display:inline-block;margin-top:5px}.actions{display:flex;justify-content:space-between;margin:50px 100px 20px}.action{display:flex;justify-content:space-between;margin:50px 0 20px}button.secondary{background-color:#e0e0e0;color:#6c757dc7;padding:8px 20px;border:none;border-radius:6px;cursor:pointer}button.primary{background-color:#4077ad;color:#fff;padding:8px 20px;border:none;border-radius:6px;cursor:pointer}@media (max-width: 600px){.preview-card{padding:15px}.edit-btn{top:10px;right:10px;width:18px;height:18px}.card-meta{flex-direction:column;gap:3px}}.icon-color{cursor:pointer;width:20px;height:20px;transition:transform .3s ease;filter:brightness(0) saturate(100%) invert(48%) sepia(8%) saturate(350%) hue-rotate(170deg) brightness(92%) contrast(88%)}.icon-color.edit{width:18px;height:18px}.detail-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.accordion-button{display:flex;align-items:center}.accordion-title{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.accordion-actions{display:flex;align-items:center;margin-right:12px}.edit-icon{cursor:pointer}::ng-deep .accordion-item:first-of-type>.accordion-header .accordion-button{margin-bottom:20px}.job-title{color:#6c757d;font-weight:400;font-size:14px}.preview-header{margin-left:350px}.accordion{margin:20px 100px}.add-btn{width:200px}@media screen and (max-width: 767px){.hint{margin-bottom:5px}.add-btn{width:unset}.date-time-filter{font-size:14px}.search-input{margin-bottom:0}.right-actions{gap:5px}.preview-header{margin-left:0}.accordion{margin:20px 0!important}.actions{flex-direction:column-reverse;gap:5px}.right-actions{gap:5px;flex-direction:column-reverse}.actions{margin:50px 0 20px}.action{flex-direction:column-reverse;gap:5px}}.remove-file{margin-left:10px;cursor:pointer;color:red;font-weight:700}\n"], dependencies: [{ kind: "directive", type: i11.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i8.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i8.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: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i8.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i8.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i8.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i12.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "directive", type: i12.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }, { kind: "directive", type: i12.NgLabelTemplateDirective, selector: "[ng-label-tmp]" }, { kind: "directive", type: i12$1.BsDatepickerDirective, selector: "[bsDatepicker]", inputs: ["placement", "triggers", "outsideClick", "container", "outsideEsc", "isDisabled", "minDate", "maxDate", "ignoreMinMaxErrors", "minMode", "daysDisabled", "datesDisabled", "datesEnabled", "dateCustomClasses", "dateTooltipTexts", "isOpen", "bsValue", "bsConfig"], outputs: ["onShown", "onHidden", "bsValueChange"], exportAs: ["bsDatepicker"] }, { kind: "directive", type: i12$1.BsDatepickerInputDirective, selector: "input[bsDatepicker]" }, { kind: "directive", type: Ng2LoadingSpinnerDirective, selector: "[ng2-loading]", inputs: ["ng2-loading", "config", "template"] }, { kind: "pipe", type: i11.DatePipe, name: "date" }, { kind: "pipe", type: StateNamePipe, name: "stateName" }] });
|
|
2766
2887
|
}
|
|
2767
2888
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: CertificationComponent, decorators: [{
|
|
2768
2889
|
type: Component,
|
|
2769
|
-
args: [{ selector: 'app-certification', standalone: false, template: "<div class=\"education-container\" *ngIf=\"!showpreview()\">\r\n <h3>Add Certificates</h3>\r\n <p class=\"hint\">\r\n Recommended for your role\r\n </p>\r\n <div class=\"document-container\">\r\n <input type=\"text\" class=\"search-input\" placeholder=\"Search documents here...\" [formControl]=\"searchControl\" />\r\n\r\n <div class=\"grid\">\r\n <div *ngFor=\"let item of documentTypes\">\r\n <label class=\"checkbox-row\">\r\n <input type=\"checkbox\" [checked]=\"isChecked(item.id)\" (change)=\"toggleSelection(item, $event)\" />\r\n <span class=\"title\">{{ item.type }}</span>\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n <form [formGroup]=\"certificateForm\">\r\n <div class=\"row\" style=\"margin-top: 20px;\">\r\n <div class=\"field\">\r\n <div class=\"head\">Certificate Number</div>\r\n <input type=\"text\" placeholder=\"Enter your Certificate Number here\" formControlName=\"number\" />\r\n <small class=\"error\" *ngIf=\"certificateForm.get('number')?.touched &&\r\n certificateForm.get('number')?.hasError('required')\">\r\n Certificate number is required\r\n </small>\r\n </div>\r\n\r\n <div class=\"field\">\r\n <div class=\"head\">Certificate Issued By</div>\r\n <input type=\"text\" placeholder=\"Enter Certificate Issued By here\" formControlName=\"issuedBy\" />\r\n <small class=\"error\" *ngIf=\"certificateForm.get('issuedBy')?.touched &&\r\n certificateForm.get('issuedBy')?.hasError('required')\">\r\n Certificate issued by is required\r\n </small>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"field\">\r\n <div class=\"head\">Issued State</div>\r\n <ng-select formControlName=\"issuedState\" [items]=\"states\" bindLabel=\"stateName\" bindValue=\"stateCode\"\r\n placeholder=\"Select Issued State here\">\r\n <ng-template ng-option-tmp let-item=\"item\" let-item$=\"item$\">\r\n <input class=\"form-check-input\" type=\"checkbox\" [checked]=\"item$.selected\" />\r\n {{ item.stateName }}\r\n </ng-template>\r\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\r\n <span class=\"ng-value-label\">\r\n {{ item.stateName }}\r\n </span>\r\n <span class=\"ng-value-icon right\" (click)=\"clear(item)\">\r\n <img src=\"/assets/images/icons/close-sm-circle.svg\" class=\"close-btn-select\" />\r\n </span>\r\n </ng-template>\r\n </ng-select>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"field\">\r\n <div class=\"mb-3 head\">\r\n <div class=\"head\">Issued Date</div>\r\n <input class=\"form-control date-time-filter\" placeholder=\"Issued On\" [maxDate]=\"maxDate\" bsDatepicker [bsConfig]=\"{ adaptivePosition: true, showWeekNumbers: false,\r\n isAnimated: true, customTodayClass: !certificateForm.get('issueDate')?.value ? 'today-highlight' : '' }\"\r\n formControlName=\"issueDate\" (bsValueChange)=\"onPreferredDateChange($event)\">\r\n <small class=\"error\" *ngIf=\"certificateForm.get('issueDate')?.touched &&\r\n certificateForm.get('issueDate')?.hasError('required')\">\r\n Issued date is required\r\n </small>\r\n </div>\r\n </div>\r\n\r\n <div class=\"field\">\r\n <div class=\"mb-3 head\">\r\n <div class=\"head\">Expiration Date</div>\r\n <input class=\"form-control date-time-filter\" placeholder=\"Expired On\" [maxDate]=\"maxDate\" bsDatepicker [bsConfig]=\"{ adaptivePosition: true,showWeekNumbers: false, isAnimated: true, \r\n customTodayClass: !certificateForm.get('expiryDate')?.value ? 'today-highlight' : '' }\"\r\n formControlName=\"expiryDate\" (bsValueChange)=\"onPreferredDateChange($event)\">\r\n <small class=\"error\" *ngIf=\"certificateForm.get('expiryDate')?.touched &&\r\n certificateForm.get('expiryDate')?.hasError('required')\">\r\n Expiry date is required\r\n </small>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"field full-width\">\r\n <div class=\"head\">Comments</div>\r\n <textarea placeholder=\"Description\" formControlName=\"notes\">\r\n </textarea>\r\n </div>\r\n </div>\r\n </form>\r\n <div class=\"row\">\r\n <div class=\"upload-wrapper\">\r\n\r\n <p class=\"upload-title\">Upload</p>\r\n <p class=\"upload-subtitle\">Add certificates below</p>\r\n\r\n <button type=\"button\" class=\"upload-btn\" (click)=\"fileInput.click()\">\r\n Upload Certifications\r\n </button>\r\n\r\n <input #fileInput type=\"file\" accept=\".pdf,.doc,.docx\" (change)=\"selectFile($event)\" hidden />\r\n\r\n <p class=\"file-name\" *ngIf=\"fileName\">\r\n Selected: {{ fileName }}\r\n </p>\r\n\r\n </div>\r\n\r\n </div>\r\n <div class=\"action\">\r\n <button type=\"button\" class=\"secondary\" (click)=\"back()\">Back</button>\r\n <div class=\"right-actions\">\r\n <button type=\"button\" class=\"secondary\" (click)=\"nextStep()\">\r\n Skip\r\n </button>\r\n <button type=\"button\" class=\"primary\" [disabled]=\"proposalLoader\" [ng2-loading]=\"proposalLoader\"\r\n (click)=\"saveFile()\">\r\n Continue\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"work-preview\" *ngIf=\"showpreview()\">\r\n <div class=\"preview-header\" >\r\n <h3>Certifications Preview</h3>\r\n </div>\r\n <div class=\"accordion\" style=\"margin: 20px 100px;\">\r\n\r\n <div *ngFor=\"let exp of workStore.experiences(); let i = index\" style=\"margin-bottom: 20px;\"\r\n class=\"accordion-item border-0\">\r\n <h2 class=\"accordion-header\">\r\n <button class=\"accordion-button collapsed\" type=\"button\" data-bs-toggle=\"collapse\"\r\n [attr.data-bs-target]=\"'#edu_' + i\">\r\n <span class=\"accordion-title\">\r\n {{ exp.documentTypeName }}\r\n </span>\r\n <span class=\"accordion-actions\">\r\n <img src=\"/assets/images/icons/edit-text.png\" class=\"edit-icon icon-color\"\r\n (click)=\"edit(i); $event.stopPropagation()\" alt=\"Edit\" />\r\n </span>\r\n </button>\r\n </h2>\r\n\r\n\r\n <div [id]=\"'edu_' + i\" class=\"accordion-collapse collapse\" style=\"margin-bottom: 20px;\">\r\n <div class=\"accordion-body\">\r\n <div class=\"detail-grid\">\r\n <div>\r\n <strong>Certificate Name</strong><br />\r\n <span class=\"job-title\"> {{ exp.documentTypeName }}</span>\r\n </div>\r\n <div>\r\n <strong>Certificate Number</strong><br />\r\n <span class=\"job-title\"> {{ exp.number }}</span>\r\n </div>\r\n <div>\r\n <strong>Issued By</strong><br />\r\n <span class=\"job-title\"> {{ exp.issuedBy }}</span>\r\n </div>\r\n <div>\r\n <strong>Issued State</strong><br />\r\n <span class=\"job-title\"> {{ exp.issuedState | stateName }}</span>\r\n </div>\r\n <div>\r\n <strong>Issued Date</strong><br />\r\n <span class=\"job-title\"> {{ exp.issueDate | date:'MM/dd/yyyy' }} </span>\r\n </div>\r\n <div>\r\n <strong>Expiry Date</strong><br />\r\n <span class=\"job-title\"> {{ exp.expiryDate | date:'MM/dd/yyyy' }}</span>\r\n </div>\r\n\r\n <div *ngIf=\"exp.fileUrl\" class=\"full-width\">\r\n <strong>Document</strong><br />\r\n <a [href]=\"cloudfrontUrl+exp.fileUrl\" target=\"_blank\">\r\n <span class=\"job-title\"> {{ exp.fileName }}</span>\r\n </a>\r\n </div>\r\n </div>\r\n <div class=\"full-width mt-3\">\r\n <strong>Description</strong><br />\r\n <span class=\"job-title\"> {{ exp.notes }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"actions\">\r\n <button type=\"button\" class=\"secondary\" (click)=\"back()\">Back</button>\r\n <div class=\"right-actions\">\r\n <button type=\"button\" class=\"primary add-btn\" (click)=\"add()\" style=\"background-color: #1f4d5f;\">\r\n Add More Certifications\r\n </button>\r\n <button type=\"button\" class=\"primary\" (click)=\"nextStep()\">\r\n Continue\r\n </button>\r\n </div>\r\n </div>\r\n</div>", styles: [".education-container{max-width:1000px;margin:0 auto;padding:24px 16px;min-height:300px}h3{font-size:23px;font-weight:600;margin-bottom:4px}.hint{font-size:14px;color:#6b7280;margin-bottom:24px}.row{display:flex;margin-bottom:16px}.field{flex:1;display:flex;flex-direction:column}.field.full-width{flex:1 1 100%}input[type=text],input[type=email],input[type=number],input[type=password],select,textarea{padding:10px 12px;border:2px solid #d1d5db;border-radius:4px;font-size:13px;outline:none;box-sizing:border-box;color:#374151}::ng-deep .ng-select.ng-select-single .ng-select-container{height:45px}::ng-deep .ng-select.ng-select-single .ng-select-container .ng-value-container .ng-placeholder{top:10px}textarea{height:90px;resize:none}.error{margin-top:4px;font-size:12px;color:#dc2626}.actions{display:flex;justify-content:space-between;margin:70px 0 40px}button{height:44px;min-width:120px;border-radius:4px;border:none;font-size:14px;cursor:pointer}button.primary{background-color:#4077ad;color:#fff}button.secondary{background-color:#f3f4f6;color:#374151}button:disabled{background-color:#9ca3af;cursor:not-allowed}.head{color:#6b7280;font-size:14px;font-weight:500;margin-bottom:5px}::ng-deep .today-highlight{color:#fff!important;background:#1e2541!important}.form-row{display:flex}.field{display:flex;flex-direction:column}.field.city{flex:0 0 50%}.field.date{flex:0 0 25%}::ng-deep .ng-select .ng-select-container .ng-value-container .ng-placeholder{color:#757575;font-size:14px}.close-btn-select{width:16px;height:16px;color:#00f;display:inline-block}.upload-wrapper{margin-top:37px}.upload-title{font-weight:600;margin-bottom:4px}.upload-subtitle{font-size:13px;color:#6c757d;margin-bottom:12px}.upload-btn{background-color:#1f4d5f;color:#fff;border:none;padding:10px 18px;border-radius:6px;font-size:14px;cursor:pointer}.upload-btn:hover{background-color:#173b4a}.file-name{margin-top:8px;font-size:13px;color:#495057}.right-actions{display:flex;gap:16px}.date-time-filter{padding-right:40px;background-image:url(/assets/images/icons/calendar.svg);background-repeat:no-repeat;background-position:right 12px center;background-size:18px 18px;cursor:pointer}.document-container{max-width:1100px;margin:auto}.search-input{width:100%;max-width:400px;height:44px;margin-bottom:16px}.grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.card{display:flex;align-items:center;min-height:48px}.checkbox{margin-top:4px}.checkbox-row{display:flex;align-items:center;gap:8px;cursor:pointer}.content .title{font-weight:600;font-size:14px}.checkbox-row input{margin:0}.title{font-size:14px;font-weight:600}.content .desc{font-size:12px;color:#666;margin-top:4px}.save-btn{margin-top:20px;padding:10px 18px;border-radius:6px;border:none;background:#4077ad;color:#fff;cursor:pointer}@media (max-width: 1024px){.grid{grid-template-columns:repeat(2,1fr)}}@media (max-width: 600px){.grid{grid-template-columns:1fr}}::ng-deep ng-dropdown-panel input[type=checkbox]{margin-right:0!important;padding:9px;margin-top:0}.form-check-input:checked{color:#fff!important;border-color:#2980b9!important;background-color:#2980b9!important}::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-option{font-size:14px}::ng-deep .ng-value-label{font-size:14px}::ng-deep .bs-datepicker-head{background-color:#1e2541!important}::ng-deep .theme-green .bs-datepicker-body table td span.selected,.theme-green .bs-datepicker-body table td.selected span,.theme-green .bs-datepicker-body table td span[class*=select-]:after,.theme-green .bs-datepicker-body table td[class*=select-] span:after{background-color:#1e2541!important}.work-preview{max-width:1000px;padding:15px;margin:15px auto;background-color:#f4f6f8;font-family:Segoe UI,Arial,sans-serif}.preview-card{position:relative;background-color:#fff;border-radius:8px;box-shadow:0 3px 8px #0000001a;padding:20px 25px;margin-bottom:20px;transition:box-shadow .2s ease}.preview-card:hover{box-shadow:0 6px 15px #00000026}.edit-btn{position:absolute;top:15px;right:15px;width:20px;height:20px;cursor:pointer}.card-top h4{margin:0;font-size:18px;color:#1f4d5f}.card-top .job-title{display:block;font-size:14px;color:#555;margin-top:2px}.card-meta{margin:10px 0;font-size:13px;color:#777;display:flex;justify-content:space-between}.card-meta .dates{font-style:italic}.job-description{font-size:14px;color:#333;line-height:1.5;margin-bottom:8px}.file-link{font-size:13px;color:#4077ad;text-decoration:underline;display:inline-block;margin-top:5px}.actions{display:flex;justify-content:space-between;margin:50px 100px 20px}.action{display:flex;justify-content:space-between;margin:50px 0 20px}button.secondary{background-color:#e0e0e0;color:#6c757dc7;padding:8px 20px;border:none;border-radius:6px;cursor:pointer}button.primary{background-color:#4077ad;color:#fff;padding:8px 20px;border:none;border-radius:6px;cursor:pointer}@media (max-width: 600px){.preview-card{padding:15px}.edit-btn{top:10px;right:10px;width:18px;height:18px}.card-meta{flex-direction:column;gap:3px}}.icon-color{cursor:pointer;width:20px;height:20px;transition:transform .3s ease;filter:brightness(0) saturate(100%) invert(48%) sepia(8%) saturate(350%) hue-rotate(170deg) brightness(92%) contrast(88%)}.icon-color.edit{width:18px;height:18px}.detail-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.accordion-button{display:flex;align-items:center}.accordion-title{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.accordion-actions{display:flex;align-items:center;margin-right:12px}.edit-icon{cursor:pointer}::ng-deep .accordion-item:first-of-type>.accordion-header .accordion-button{margin-bottom:20px}.job-title{color:#6c757d;font-weight:400;font-size:14px}.preview-header{margin-left:350px}.accordion{margin:20px 100px}.add-btn{width:200px}@media screen and (max-width: 767px){.hint{margin-bottom:5px}.add-btn{width:unset}.date-time-filter{font-size:14px}.search-input{margin-bottom:0}.right-actions{gap:5px}.preview-header{margin-left:0}.accordion{margin:20px 0!important}.actions{flex-direction:column-reverse;gap:5px}.right-actions{gap:5px;flex-direction:column-reverse}.actions{margin:50px 0 20px}.action{flex-direction:column-reverse;gap:5px}}\n"] }]
|
|
2770
|
-
}], ctorParameters: () => [{ type: UserDocumentService }, { type: CredentialingStore }, { type: CertificationStore }, { type: i6.TokenService }, { type: PostalCodeServices }, { type:
|
|
2890
|
+
args: [{ selector: 'app-certification', standalone: false, template: "<div class=\"education-container\" *ngIf=\"!showpreview()\">\r\n <h3>Add Certificates</h3>\r\n <p class=\"hint\">\r\n Recommended for your role\r\n </p>\r\n <div class=\"document-container\">\r\n <input type=\"text\" class=\"search-input\" placeholder=\"Search documents here...\" [formControl]=\"searchControl\" />\r\n\r\n <div class=\"grid\">\r\n <div *ngFor=\"let item of documentTypes\">\r\n <label class=\"checkbox-row\">\r\n <input type=\"checkbox\" [checked]=\"isChecked(item.id)\" (change)=\"toggleSelection(item, $event)\" />\r\n <span class=\"title\">{{ item.type }}</span>\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n <form [formGroup]=\"certificateForm\">\r\n <div class=\"row\" style=\"margin-top: 20px;\">\r\n <div class=\"field\">\r\n <div class=\"head\">Certificate Number</div>\r\n <input type=\"text\" placeholder=\"Enter your Certificate Number here\" formControlName=\"number\" />\r\n <small class=\"error\" *ngIf=\"certificateForm.get('number')?.touched &&\r\n certificateForm.get('number')?.hasError('required')\">\r\n Certificate number is required\r\n </small>\r\n </div>\r\n\r\n <div class=\"field\">\r\n <div class=\"head\">Certificate Issued By</div>\r\n <input type=\"text\" placeholder=\"Enter Certificate Issued By here\" formControlName=\"issuedBy\" />\r\n <small class=\"error\" *ngIf=\"certificateForm.get('issuedBy')?.touched &&\r\n certificateForm.get('issuedBy')?.hasError('required')\">\r\n Certificate issued by is required\r\n </small>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"field\">\r\n <div class=\"head\">Issued State</div>\r\n <ng-select formControlName=\"issuedState\" [items]=\"states\" bindLabel=\"stateName\" bindValue=\"stateCode\"\r\n placeholder=\"Select Issued State here\">\r\n <ng-template ng-option-tmp let-item=\"item\" let-item$=\"item$\">\r\n <input class=\"form-check-input\" type=\"checkbox\" [checked]=\"item$.selected\" />\r\n {{ item.stateName }}\r\n </ng-template>\r\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\r\n <span class=\"ng-value-label\">\r\n {{ item.stateName }}\r\n </span>\r\n <span class=\"ng-value-icon right\" (click)=\"clear(item)\">\r\n <img src=\"/assets/images/icons/close-sm-circle.svg\" class=\"close-btn-select\" />\r\n </span>\r\n </ng-template>\r\n </ng-select>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"field\">\r\n <div class=\"mb-3 head\">\r\n <div class=\"head\">Issued Date</div>\r\n <input class=\"form-control date-time-filter\" placeholder=\"Issued On\" [maxDate]=\"maxDate\" bsDatepicker [bsConfig]=\"{ adaptivePosition: true, showWeekNumbers: false,\r\n isAnimated: true, customTodayClass: !certificateForm.get('issueDate')?.value ? 'today-highlight' : '' }\"\r\n formControlName=\"issueDate\" (bsValueChange)=\"onPreferredDateChange($event)\">\r\n <small class=\"error\" *ngIf=\"certificateForm.get('issueDate')?.touched &&\r\n certificateForm.get('issueDate')?.hasError('required')\">\r\n Issued date is required\r\n </small>\r\n </div>\r\n </div>\r\n\r\n <div class=\"field\">\r\n <div class=\"mb-3 head\">\r\n <div class=\"head\">Expiration Date</div>\r\n <input class=\"form-control date-time-filter\" placeholder=\"Expired On\" [maxDate]=\"maxDate\" bsDatepicker [bsConfig]=\"{ adaptivePosition: true,showWeekNumbers: false, isAnimated: true, \r\n customTodayClass: !certificateForm.get('expiryDate')?.value ? 'today-highlight' : '' }\"\r\n formControlName=\"expiryDate\" (bsValueChange)=\"onPreferredDateChange($event)\">\r\n <small class=\"error\" *ngIf=\"certificateForm.get('expiryDate')?.touched &&\r\n certificateForm.get('expiryDate')?.hasError('required')\">\r\n Expiry date is required\r\n </small>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"field full-width\">\r\n <div class=\"head\">Comments</div>\r\n <textarea placeholder=\"Description\" formControlName=\"notes\">\r\n </textarea>\r\n </div>\r\n </div>\r\n </form>\r\n <div class=\"row\">\r\n <div class=\"upload-wrapper\">\r\n\r\n <p class=\"upload-title\">Upload</p>\r\n <p class=\"upload-subtitle\">Add certificates below</p>\r\n\r\n <button type=\"button\" class=\"upload-btn\" (click)=\"fileInput.click()\">\r\n Upload Certifications\r\n </button>\r\n\r\n <input #fileInput type=\"file\" accept=\".pdf,.doc,.docx\" (change)=\"selectFile($event)\" hidden />\r\n\r\n <p class=\"file-name\" *ngIf=\"fileName\">\r\n Selected: {{ fileName }}\r\n <span class=\"remove-file\" style=\"cursor: pointer;\" (click)=\"removeFile()\">\u2716</span>\r\n</p>\r\n\r\n </div>\r\n\r\n </div>\r\n <div class=\"action\">\r\n <button type=\"button\" class=\"secondary\" (click)=\"back()\">Back</button>\r\n <div class=\"right-actions\">\r\n <button type=\"button\" class=\"secondary\" (click)=\"nextStep()\">\r\n Skip\r\n </button>\r\n <button type=\"button\" class=\"primary\" [disabled]=\"proposalLoader\" [ng2-loading]=\"proposalLoader\"\r\n (click)=\"saveFile()\">\r\n Continue\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"work-preview\" *ngIf=\"showpreview()\">\r\n <div class=\"preview-header\" >\r\n <h3>Certifications Preview</h3>\r\n </div>\r\n <div class=\"accordion\" style=\"margin: 20px 100px;\">\r\n\r\n <div *ngFor=\"let exp of workStore.experiences(); let i = index\" style=\"margin-bottom: 20px;\"\r\n class=\"accordion-item border-0\">\r\n <h2 class=\"accordion-header\">\r\n <button class=\"accordion-button collapsed\" type=\"button\" data-bs-toggle=\"collapse\"\r\n [attr.data-bs-target]=\"'#edu_' + i\">\r\n <span class=\"accordion-title\">\r\n {{ exp.documentTypeName }}\r\n </span>\r\n <span class=\"accordion-actions\">\r\n <img src=\"/assets/images/icons/edit-text.png\" class=\"edit-icon icon-color\"\r\n (click)=\"edit(i); $event.stopPropagation()\" alt=\"Edit\" />\r\n </span>\r\n </button>\r\n </h2>\r\n\r\n\r\n <div [id]=\"'edu_' + i\" class=\"accordion-collapse collapse\" style=\"margin-bottom: 20px;\">\r\n <div class=\"accordion-body\">\r\n <div class=\"detail-grid\">\r\n <div>\r\n <strong>Certificate Name</strong><br />\r\n <span class=\"job-title\"> {{ exp.documentTypeName }}</span>\r\n </div>\r\n <div>\r\n <strong>Certificate Number</strong><br />\r\n <span class=\"job-title\"> {{ exp.number }}</span>\r\n </div>\r\n <div>\r\n <strong>Issued By</strong><br />\r\n <span class=\"job-title\"> {{ exp.issuedBy }}</span>\r\n </div>\r\n <div>\r\n <strong>Issued State</strong><br />\r\n <span class=\"job-title\"> {{ exp.issuedState | stateName }}</span>\r\n </div>\r\n <div>\r\n <strong>Issued Date</strong><br />\r\n <span class=\"job-title\"> {{ exp.issueDate | date:'MM/dd/yyyy' }} </span>\r\n </div>\r\n <div>\r\n <strong>Expiry Date</strong><br />\r\n <span class=\"job-title\"> {{ exp.expiryDate | date:'MM/dd/yyyy' }}</span>\r\n </div>\r\n\r\n <div *ngIf=\"exp.fileUrl\" class=\"full-width\">\r\n <strong>Document</strong><br />\r\n <a [href]=\"cloudfrontUrl+exp.fileUrl\" target=\"_blank\">\r\n <span class=\"job-title\"> {{ exp.fileName }}</span>\r\n </a>\r\n </div>\r\n </div>\r\n <div class=\"full-width mt-3\">\r\n <strong>Description</strong><br />\r\n <span class=\"job-title\"> {{ exp.notes }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"actions\">\r\n <button type=\"button\" class=\"secondary\" (click)=\"back()\">Back</button>\r\n <div class=\"right-actions\">\r\n <button type=\"button\" class=\"primary add-btn\" (click)=\"add()\" style=\"background-color: #1f4d5f;\">\r\n Add More Certifications\r\n </button>\r\n <button type=\"button\" class=\"primary\" (click)=\"nextStep()\">\r\n Continue\r\n </button>\r\n </div>\r\n </div>\r\n</div>", styles: [".education-container{max-width:1000px;margin:0 auto;padding:24px 16px;min-height:300px}h3{font-size:23px;font-weight:600;margin-bottom:4px}.hint{font-size:14px;color:#6b7280;margin-bottom:24px}.row{display:flex;margin-bottom:16px}.field{flex:1;display:flex;flex-direction:column}.field.full-width{flex:1 1 100%}input[type=text],input[type=email],input[type=number],input[type=password],select,textarea{padding:10px 12px;border:2px solid #d1d5db;border-radius:4px;font-size:13px;outline:none;box-sizing:border-box;color:#374151}::ng-deep .ng-select.ng-select-single .ng-select-container{height:45px}::ng-deep .ng-select.ng-select-single .ng-select-container .ng-value-container .ng-placeholder{top:10px}textarea{height:90px;resize:none}.error{margin-top:4px;font-size:12px;color:#dc2626}.actions{display:flex;justify-content:space-between;margin:70px 0 40px}button{height:44px;min-width:120px;border-radius:4px;border:none;font-size:14px;cursor:pointer}button.primary{background-color:#4077ad;color:#fff}button.secondary{background-color:#f3f4f6;color:#374151}button:disabled{background-color:#9ca3af;cursor:not-allowed}.head{color:#6b7280;font-size:14px;font-weight:500;margin-bottom:5px}::ng-deep .today-highlight{color:#fff!important;background:#1e2541!important}.form-row{display:flex}.field{display:flex;flex-direction:column}.field.city{flex:0 0 50%}.field.date{flex:0 0 25%}::ng-deep .ng-select .ng-select-container .ng-value-container .ng-placeholder{color:#757575;font-size:14px}.close-btn-select{width:16px;height:16px;color:#00f;display:inline-block}.upload-wrapper{margin-top:37px}.upload-title{font-weight:600;margin-bottom:4px}.upload-subtitle{font-size:13px;color:#6c757d;margin-bottom:12px}.upload-btn{background-color:#1f4d5f;color:#fff;border:none;padding:10px 18px;border-radius:6px;font-size:14px;cursor:pointer}.upload-btn:hover{background-color:#173b4a}.file-name{margin-top:8px;font-size:13px;color:#495057}.right-actions{display:flex;gap:16px}.date-time-filter{padding-right:40px;background-image:url(/assets/images/icons/calendar.svg);background-repeat:no-repeat;background-position:right 12px center;background-size:18px 18px;cursor:pointer}.document-container{max-width:1100px;margin:auto}.search-input{width:100%;max-width:400px;height:44px;margin-bottom:16px}.grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.card{display:flex;align-items:center;min-height:48px}.checkbox{margin-top:4px}.checkbox-row{display:flex;align-items:center;gap:8px;cursor:pointer}.content .title{font-weight:600;font-size:14px}.checkbox-row input{margin:0}.title{font-size:14px;font-weight:600}.content .desc{font-size:12px;color:#666;margin-top:4px}.save-btn{margin-top:20px;padding:10px 18px;border-radius:6px;border:none;background:#4077ad;color:#fff;cursor:pointer}@media (max-width: 1024px){.grid{grid-template-columns:repeat(2,1fr)}}@media (max-width: 600px){.grid{grid-template-columns:1fr}}::ng-deep ng-dropdown-panel input[type=checkbox]{margin-right:0!important;padding:9px;margin-top:0}.form-check-input:checked{color:#fff!important;border-color:#2980b9!important;background-color:#2980b9!important}::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-option{font-size:14px}::ng-deep .ng-value-label{font-size:14px}::ng-deep .bs-datepicker-head{background-color:#1e2541!important}::ng-deep .theme-green .bs-datepicker-body table td span.selected,.theme-green .bs-datepicker-body table td.selected span,.theme-green .bs-datepicker-body table td span[class*=select-]:after,.theme-green .bs-datepicker-body table td[class*=select-] span:after{background-color:#1e2541!important}.work-preview{max-width:1000px;padding:15px;margin:15px auto;background-color:#f4f6f8;font-family:Segoe UI,Arial,sans-serif}.preview-card{position:relative;background-color:#fff;border-radius:8px;box-shadow:0 3px 8px #0000001a;padding:20px 25px;margin-bottom:20px;transition:box-shadow .2s ease}.preview-card:hover{box-shadow:0 6px 15px #00000026}.edit-btn{position:absolute;top:15px;right:15px;width:20px;height:20px;cursor:pointer}.card-top h4{margin:0;font-size:18px;color:#1f4d5f}.card-top .job-title{display:block;font-size:14px;color:#555;margin-top:2px}.card-meta{margin:10px 0;font-size:13px;color:#777;display:flex;justify-content:space-between}.card-meta .dates{font-style:italic}.job-description{font-size:14px;color:#333;line-height:1.5;margin-bottom:8px}.file-link{font-size:13px;color:#4077ad;text-decoration:underline;display:inline-block;margin-top:5px}.actions{display:flex;justify-content:space-between;margin:50px 100px 20px}.action{display:flex;justify-content:space-between;margin:50px 0 20px}button.secondary{background-color:#e0e0e0;color:#6c757dc7;padding:8px 20px;border:none;border-radius:6px;cursor:pointer}button.primary{background-color:#4077ad;color:#fff;padding:8px 20px;border:none;border-radius:6px;cursor:pointer}@media (max-width: 600px){.preview-card{padding:15px}.edit-btn{top:10px;right:10px;width:18px;height:18px}.card-meta{flex-direction:column;gap:3px}}.icon-color{cursor:pointer;width:20px;height:20px;transition:transform .3s ease;filter:brightness(0) saturate(100%) invert(48%) sepia(8%) saturate(350%) hue-rotate(170deg) brightness(92%) contrast(88%)}.icon-color.edit{width:18px;height:18px}.detail-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.accordion-button{display:flex;align-items:center}.accordion-title{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.accordion-actions{display:flex;align-items:center;margin-right:12px}.edit-icon{cursor:pointer}::ng-deep .accordion-item:first-of-type>.accordion-header .accordion-button{margin-bottom:20px}.job-title{color:#6c757d;font-weight:400;font-size:14px}.preview-header{margin-left:350px}.accordion{margin:20px 100px}.add-btn{width:200px}@media screen and (max-width: 767px){.hint{margin-bottom:5px}.add-btn{width:unset}.date-time-filter{font-size:14px}.search-input{margin-bottom:0}.right-actions{gap:5px}.preview-header{margin-left:0}.accordion{margin:20px 0!important}.actions{flex-direction:column-reverse;gap:5px}.right-actions{gap:5px;flex-direction:column-reverse}.actions{margin:50px 0 20px}.action{flex-direction:column-reverse;gap:5px}}.remove-file{margin-left:10px;cursor:pointer;color:red;font-weight:700}\n"] }]
|
|
2891
|
+
}], ctorParameters: () => [{ type: UserDocumentService }, { type: UserService }, { type: CredentialingStore }, { type: CertificationStore }, { type: i6.TokenService }, { type: PostalCodeServices }, { type: i8.FormBuilder }, { type: FileService }, { type: i1.HttpClient }], propDecorators: { states: [{
|
|
2892
|
+
type: Input
|
|
2893
|
+
}], providerId: [{
|
|
2771
2894
|
type: Input
|
|
2772
2895
|
}], providerName: [{
|
|
2773
2896
|
type: Input
|
|
@@ -3094,13 +3217,13 @@ class UtilsService {
|
|
|
3094
3217
|
}
|
|
3095
3218
|
return fileType;
|
|
3096
3219
|
}
|
|
3097
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: UtilsService, deps: [{ token: AlertService }, { token:
|
|
3220
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: UtilsService, deps: [{ token: AlertService }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
3098
3221
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: UtilsService, providedIn: "root" });
|
|
3099
3222
|
}
|
|
3100
3223
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: UtilsService, decorators: [{
|
|
3101
3224
|
type: Injectable,
|
|
3102
3225
|
args: [{ providedIn: "root" }]
|
|
3103
|
-
}], ctorParameters: () => [{ type: AlertService }, { type:
|
|
3226
|
+
}], ctorParameters: () => [{ type: AlertService }, { type: i2.Router }] });
|
|
3104
3227
|
|
|
3105
3228
|
class NgxStarsComponent {
|
|
3106
3229
|
maxStars = 5;
|
|
@@ -3256,7 +3379,7 @@ class NgxStarsComponent {
|
|
|
3256
3379
|
return `star-${starType}`;
|
|
3257
3380
|
}
|
|
3258
3381
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: NgxStarsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3259
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: NgxStarsComponent, isStandalone: false, selector: "ngx-stars", inputs: { maxStars: "maxStars", initialStars: "initialStars", readonly: "readonly", size: "size", color: "color", animation: "animation", animationSpeed: "animationSpeed", customPadding: "customPadding", wholeStars: "wholeStars", customStarIcons: "customStarIcons" }, outputs: { ratingOutput: "ratingOutput" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"stars-line\" (mouseleave)=\"readonly ? noop() : onStarsUnhover()\">\r\n <span class=\"star zero-star\" [ngStyle]=\"starSize()\" aria-hidden=\"true\" (click)=\"onZeroStarClick()\" (mousemove)=\"readonly ? noop() : onZeroStarHover()\"></span>\r\n <div *ngFor=\"let star of editableStars;\" [ngStyle]=\"starPadding()\" (click)=\"readonly ? noop() : onStarClick($event, star)\" (mousemove)=\"readonly ? noop() : onStarHover($event, star)\">\r\n <span class=\"star\" [ngClass]=\"star.classname\" [ngStyle]=\"starColorAndSize()\" aria-hidden=\"true\"></span>\r\n </div>\r\n</div>\r\n", styles: [".stars-line{display:flex;align-items:center;position:relative}.stars-line>div{z-index:999}.zero-star{color:transparent;position:absolute;left:-16px}span.star.star-empty{background-color:#c8cccc}span.star.star-full,span.star.star-half{background-color:#eec900}.star{display:inline-block;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.star-empty{-webkit-mask-image:url(\"data:image/svg+xml,%3Csvg aria-hidden='true' focusable='false' data-prefix='fas' data-icon='star' class='svg-inline--fa fa-star fa-w-18' role='img' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 576 512'%3E%3Cpath fill='currentColor' d='M259.3 17.8L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0z'%3E%3C/path%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml,%3Csvg aria-hidden='true' focusable='false' data-prefix='fas' data-icon='star' class='svg-inline--fa fa-star fa-w-18' role='img' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 576 512'%3E%3Cpath fill='currentColor' d='M259.3 17.8L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0z'%3E%3C/path%3E%3C/svg%3E\")}.star-half{-webkit-mask-image:url(\"data:image/svg+xml,%3C!-- had to hack this one's viewbox otherwise it didn't line up with the other two --%3E%3C!-- changed viewbox from '0 0 536 512' to '-20 0 576 512' --%3E%3Csvg aria-hidden='true' focusable='false' data-prefix='fas' data-icon='star-half-alt' class='svg-inline--fa fa-star-half-alt fa-w-17' role='img' xmlns='http://www.w3.org/2000/svg' viewBox='-20 0 576 512'%3E%3Cpath fill='currentColor' d='M508.55 171.51L362.18 150.2 296.77 17.81C290.89 5.98 279.42 0 267.95 0c-11.4 0-22.79 5.9-28.69 17.81l-65.43 132.38-146.38 21.29c-26.25 3.8-36.77 36.09-17.74 54.59l105.89 103-25.06 145.48C86.98 495.33 103.57 512 122.15 512c4.93 0 10-1.17 14.87-3.75l130.95-68.68 130.94 68.7c4.86 2.55 9.92 3.71 14.83 3.71 18.6 0 35.22-16.61 31.66-37.4l-25.03-145.49 105.91-102.98c19.04-18.5 8.52-50.8-17.73-54.6zm-121.74 123.2l-18.12 17.62 4.28 24.88 19.52 113.45-102.13-53.59-22.38-11.74.03-317.19 51.03 103.29 11.18 22.63 25.01 3.64 114.23 16.63-82.65 80.38z'%3E%3C/path%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml,%3C!-- had to hack this one's viewbox otherwise it didn't line up with the other two --%3E%3C!-- changed viewbox from '0 0 536 512' to '-20 0 576 512' --%3E%3Csvg aria-hidden='true' focusable='false' data-prefix='fas' data-icon='star-half-alt' class='svg-inline--fa fa-star-half-alt fa-w-17' role='img' xmlns='http://www.w3.org/2000/svg' viewBox='-20 0 576 512'%3E%3Cpath fill='currentColor' d='M508.55 171.51L362.18 150.2 296.77 17.81C290.89 5.98 279.42 0 267.95 0c-11.4 0-22.79 5.9-28.69 17.81l-65.43 132.38-146.38 21.29c-26.25 3.8-36.77 36.09-17.74 54.59l105.89 103-25.06 145.48C86.98 495.33 103.57 512 122.15 512c4.93 0 10-1.17 14.87-3.75l130.95-68.68 130.94 68.7c4.86 2.55 9.92 3.71 14.83 3.71 18.6 0 35.22-16.61 31.66-37.4l-25.03-145.49 105.91-102.98c19.04-18.5 8.52-50.8-17.73-54.6zm-121.74 123.2l-18.12 17.62 4.28 24.88 19.52 113.45-102.13-53.59-22.38-11.74.03-317.19 51.03 103.29 11.18 22.63 25.01 3.64 114.23 16.63-82.65 80.38z'%3E%3C/path%3E%3C/svg%3E\")}.star-full{-webkit-mask-image:url(\"data:image/svg+xml,%3Csvg aria-hidden='true' focusable='false' data-prefix='fas' data-icon='star' class='svg-inline--fa fa-star fa-w-18' role='img' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 576 512'%3E%3Cpath fill='currentColor' d='M259.3 17.8L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0z'%3E%3C/path%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml,%3Csvg aria-hidden='true' focusable='false' data-prefix='fas' data-icon='star' class='svg-inline--fa fa-star fa-w-18' role='img' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 576 512'%3E%3Cpath fill='currentColor' d='M259.3 17.8L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0z'%3E%3C/path%3E%3C/svg%3E\")}\n"], dependencies: [{ kind: "directive", type:
|
|
3382
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: NgxStarsComponent, isStandalone: false, selector: "ngx-stars", inputs: { maxStars: "maxStars", initialStars: "initialStars", readonly: "readonly", size: "size", color: "color", animation: "animation", animationSpeed: "animationSpeed", customPadding: "customPadding", wholeStars: "wholeStars", customStarIcons: "customStarIcons" }, outputs: { ratingOutput: "ratingOutput" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"stars-line\" (mouseleave)=\"readonly ? noop() : onStarsUnhover()\">\r\n <span class=\"star zero-star\" [ngStyle]=\"starSize()\" aria-hidden=\"true\" (click)=\"onZeroStarClick()\" (mousemove)=\"readonly ? noop() : onZeroStarHover()\"></span>\r\n <div *ngFor=\"let star of editableStars;\" [ngStyle]=\"starPadding()\" (click)=\"readonly ? noop() : onStarClick($event, star)\" (mousemove)=\"readonly ? noop() : onStarHover($event, star)\">\r\n <span class=\"star\" [ngClass]=\"star.classname\" [ngStyle]=\"starColorAndSize()\" aria-hidden=\"true\"></span>\r\n </div>\r\n</div>\r\n", styles: [".stars-line{display:flex;align-items:center;position:relative}.stars-line>div{z-index:999}.zero-star{color:transparent;position:absolute;left:-16px}span.star.star-empty{background-color:#c8cccc}span.star.star-full,span.star.star-half{background-color:#eec900}.star{display:inline-block;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.star-empty{-webkit-mask-image:url(\"data:image/svg+xml,%3Csvg aria-hidden='true' focusable='false' data-prefix='fas' data-icon='star' class='svg-inline--fa fa-star fa-w-18' role='img' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 576 512'%3E%3Cpath fill='currentColor' d='M259.3 17.8L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0z'%3E%3C/path%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml,%3Csvg aria-hidden='true' focusable='false' data-prefix='fas' data-icon='star' class='svg-inline--fa fa-star fa-w-18' role='img' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 576 512'%3E%3Cpath fill='currentColor' d='M259.3 17.8L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0z'%3E%3C/path%3E%3C/svg%3E\")}.star-half{-webkit-mask-image:url(\"data:image/svg+xml,%3C!-- had to hack this one's viewbox otherwise it didn't line up with the other two --%3E%3C!-- changed viewbox from '0 0 536 512' to '-20 0 576 512' --%3E%3Csvg aria-hidden='true' focusable='false' data-prefix='fas' data-icon='star-half-alt' class='svg-inline--fa fa-star-half-alt fa-w-17' role='img' xmlns='http://www.w3.org/2000/svg' viewBox='-20 0 576 512'%3E%3Cpath fill='currentColor' d='M508.55 171.51L362.18 150.2 296.77 17.81C290.89 5.98 279.42 0 267.95 0c-11.4 0-22.79 5.9-28.69 17.81l-65.43 132.38-146.38 21.29c-26.25 3.8-36.77 36.09-17.74 54.59l105.89 103-25.06 145.48C86.98 495.33 103.57 512 122.15 512c4.93 0 10-1.17 14.87-3.75l130.95-68.68 130.94 68.7c4.86 2.55 9.92 3.71 14.83 3.71 18.6 0 35.22-16.61 31.66-37.4l-25.03-145.49 105.91-102.98c19.04-18.5 8.52-50.8-17.73-54.6zm-121.74 123.2l-18.12 17.62 4.28 24.88 19.52 113.45-102.13-53.59-22.38-11.74.03-317.19 51.03 103.29 11.18 22.63 25.01 3.64 114.23 16.63-82.65 80.38z'%3E%3C/path%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml,%3C!-- had to hack this one's viewbox otherwise it didn't line up with the other two --%3E%3C!-- changed viewbox from '0 0 536 512' to '-20 0 576 512' --%3E%3Csvg aria-hidden='true' focusable='false' data-prefix='fas' data-icon='star-half-alt' class='svg-inline--fa fa-star-half-alt fa-w-17' role='img' xmlns='http://www.w3.org/2000/svg' viewBox='-20 0 576 512'%3E%3Cpath fill='currentColor' d='M508.55 171.51L362.18 150.2 296.77 17.81C290.89 5.98 279.42 0 267.95 0c-11.4 0-22.79 5.9-28.69 17.81l-65.43 132.38-146.38 21.29c-26.25 3.8-36.77 36.09-17.74 54.59l105.89 103-25.06 145.48C86.98 495.33 103.57 512 122.15 512c4.93 0 10-1.17 14.87-3.75l130.95-68.68 130.94 68.7c4.86 2.55 9.92 3.71 14.83 3.71 18.6 0 35.22-16.61 31.66-37.4l-25.03-145.49 105.91-102.98c19.04-18.5 8.52-50.8-17.73-54.6zm-121.74 123.2l-18.12 17.62 4.28 24.88 19.52 113.45-102.13-53.59-22.38-11.74.03-317.19 51.03 103.29 11.18 22.63 25.01 3.64 114.23 16.63-82.65 80.38z'%3E%3C/path%3E%3C/svg%3E\")}.star-full{-webkit-mask-image:url(\"data:image/svg+xml,%3Csvg aria-hidden='true' focusable='false' data-prefix='fas' data-icon='star' class='svg-inline--fa fa-star fa-w-18' role='img' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 576 512'%3E%3Cpath fill='currentColor' d='M259.3 17.8L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0z'%3E%3C/path%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml,%3Csvg aria-hidden='true' focusable='false' data-prefix='fas' data-icon='star' class='svg-inline--fa fa-star fa-w-18' role='img' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 576 512'%3E%3Cpath fill='currentColor' d='M259.3 17.8L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0z'%3E%3C/path%3E%3C/svg%3E\")}\n"], dependencies: [{ kind: "directive", type: i11.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i11.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i11.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
|
|
3260
3383
|
}
|
|
3261
3384
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: NgxStarsComponent, decorators: [{
|
|
3262
3385
|
type: Component,
|
|
@@ -3295,6 +3418,7 @@ class EditableStar {
|
|
|
3295
3418
|
class SkillsComponent {
|
|
3296
3419
|
skillSetService;
|
|
3297
3420
|
userSkillSetService;
|
|
3421
|
+
userService;
|
|
3298
3422
|
formBuilder;
|
|
3299
3423
|
utils;
|
|
3300
3424
|
roleContextService;
|
|
@@ -3304,6 +3428,7 @@ class SkillsComponent {
|
|
|
3304
3428
|
providerId;
|
|
3305
3429
|
providerName;
|
|
3306
3430
|
userdata;
|
|
3431
|
+
user;
|
|
3307
3432
|
tab;
|
|
3308
3433
|
showLoading;
|
|
3309
3434
|
showLoader = false;
|
|
@@ -3338,9 +3463,10 @@ class SkillsComponent {
|
|
|
3338
3463
|
isEditMode;
|
|
3339
3464
|
emailId = '';
|
|
3340
3465
|
userId = '';
|
|
3341
|
-
constructor(skillSetService, userSkillSetService, formBuilder, utils, roleContextService, store, tokenService) {
|
|
3466
|
+
constructor(skillSetService, userSkillSetService, userService, formBuilder, utils, roleContextService, store, tokenService) {
|
|
3342
3467
|
this.skillSetService = skillSetService;
|
|
3343
3468
|
this.userSkillSetService = userSkillSetService;
|
|
3469
|
+
this.userService = userService;
|
|
3344
3470
|
this.formBuilder = formBuilder;
|
|
3345
3471
|
this.utils = utils;
|
|
3346
3472
|
this.roleContextService = roleContextService;
|
|
@@ -3373,7 +3499,7 @@ class SkillsComponent {
|
|
|
3373
3499
|
targetProviderId: [this.providerId],
|
|
3374
3500
|
providerName: [this.providerName],
|
|
3375
3501
|
// userId: [this.userContext?.userId],
|
|
3376
|
-
userName: [this.
|
|
3502
|
+
userName: [this.user.fullName],
|
|
3377
3503
|
skillSetId: [skillSetId ?? null],
|
|
3378
3504
|
skillSetName: [skillName ?? null],
|
|
3379
3505
|
notes: [''],
|
|
@@ -3381,9 +3507,9 @@ class SkillsComponent {
|
|
|
3381
3507
|
starRating: [null, Validators.required],
|
|
3382
3508
|
profileVisibility: [false, Validators.required],
|
|
3383
3509
|
status: [RequestedStatus.InReview],
|
|
3384
|
-
emailId: [this.
|
|
3385
|
-
phoneNumber: [this.
|
|
3386
|
-
userHeadShotUrl: [this.
|
|
3510
|
+
emailId: [this.user.email],
|
|
3511
|
+
phoneNumber: [this.user.phoneNumber],
|
|
3512
|
+
userHeadShotUrl: [this.user.headshotUrl],
|
|
3387
3513
|
});
|
|
3388
3514
|
}
|
|
3389
3515
|
AddGroup(skillSetId, skillName) {
|
|
@@ -3392,7 +3518,7 @@ class SkillsComponent {
|
|
|
3392
3518
|
targetProviderId: [this.providerId],
|
|
3393
3519
|
providerName: [this.providerName],
|
|
3394
3520
|
//userId: [this.userContext?.userId],
|
|
3395
|
-
userName: [this.
|
|
3521
|
+
userName: [this.user.fullName],
|
|
3396
3522
|
skillSetId: [skillSetId],
|
|
3397
3523
|
skillSetName: [skillName],
|
|
3398
3524
|
notes: [this.copyData.notes],
|
|
@@ -3400,9 +3526,9 @@ class SkillsComponent {
|
|
|
3400
3526
|
starRating: [this.selectedTab.controls.starRating.value],
|
|
3401
3527
|
profileVisibility: [this.copyData.profileVisibility],
|
|
3402
3528
|
status: [RequestedStatus.InReview],
|
|
3403
|
-
emailId: [this.
|
|
3404
|
-
phoneNumber: [this.
|
|
3405
|
-
userHeadShotUrl: [this.
|
|
3529
|
+
emailId: [this.user.email],
|
|
3530
|
+
phoneNumber: [this.user.phoneNumber],
|
|
3531
|
+
userHeadShotUrl: [this.user.headshotUrl],
|
|
3406
3532
|
});
|
|
3407
3533
|
}
|
|
3408
3534
|
initialData() {
|
|
@@ -3421,9 +3547,9 @@ class SkillsComponent {
|
|
|
3421
3547
|
description: ['description'],
|
|
3422
3548
|
isPublic: [false, Validators.required],
|
|
3423
3549
|
isModified: [false],
|
|
3424
|
-
emailId: [this.
|
|
3425
|
-
phoneNumber: [this.
|
|
3426
|
-
userHeadShotUrl: [this.
|
|
3550
|
+
emailId: [this.user.email],
|
|
3551
|
+
phoneNumber: [this.user.phoneNumber],
|
|
3552
|
+
userHeadShotUrl: [this.user.headshotUrl],
|
|
3427
3553
|
});
|
|
3428
3554
|
}
|
|
3429
3555
|
getYears() {
|
|
@@ -3665,10 +3791,10 @@ class SkillsComponent {
|
|
|
3665
3791
|
this.showLoader = true;
|
|
3666
3792
|
if (this.userId) {
|
|
3667
3793
|
this.userSkillSetModels.forEach(element => {
|
|
3668
|
-
element.userHeadShotUrl = this.
|
|
3794
|
+
element.userHeadShotUrl = this.user.headshotUrl ?? '';
|
|
3669
3795
|
//element.userId = this.userId ?? '';
|
|
3670
3796
|
element.emailId = this.emailId ?? '';
|
|
3671
|
-
element.userName = this.
|
|
3797
|
+
element.userName = this.user.fullName;
|
|
3672
3798
|
element.forUser = ForUser.ForProducer;
|
|
3673
3799
|
});
|
|
3674
3800
|
}
|
|
@@ -3746,8 +3872,8 @@ class SkillsComponent {
|
|
|
3746
3872
|
ngOnDestroy() {
|
|
3747
3873
|
this.userSkillsSub?.unsubscribe();
|
|
3748
3874
|
}
|
|
3749
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SkillsComponent, deps: [{ token: SkillSetService }, { token: UserSkillSetService }, { token:
|
|
3750
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: SkillsComponent, isStandalone: false, selector: "app-skills", inputs: { providerId: "providerId", providerName: "providerName" }, ngImport: i0, template: "<!-- SKILL PREVIEW LIST -->\r\n<div class=\"skills-container\" *ngIf=\"store.stepView() === 'preview'\">\r\n <h5 class=\"title text-secondary\">Skills Preview</h5>\r\n <!-- <p class=\"subtitle\">First-time users should enter skillsets with Inspector Match, Once you setup skillsets in your\r\n business profile you can add skills under</p> -->\r\n <accordion [closeOthers]=\"true\" [isAnimated]=\"true\">\r\n <accordion-group *ngFor=\"let skill of userSkillsPreview\" #accGroup\r\n (isOpenChange)=\"onSkillAccordionChange(skill, $event)\">\r\n <!-- HEADER -->\r\n <div accordion-heading class=\"skill-preview-header\">\r\n <span class=\"fw-semibold text-secondary\">\r\n {{ skill.skillSetName }}\r\n </span>\r\n <div class=\"actions\">\r\n <ng-container *ngIf=\"!isEditMode || getSkillKey(model) !== getSkillKey(skill)\">\r\n <button type=\"button\" class=\"me-3\" (click)=\"editSkillFromPreview(skill, accGroup, $event)\">\r\n <img class=\"icon-color\" src=\"/assets/images/icons/edit-text.png\" alt=\"icon\" />\r\n </button>\r\n <img class=\"icon-color edit\" src=\"/assets/images/icons/arrow-down.svg\" alt=\"icon\"\r\n [class.rotate]=\"accGroup.isOpen\" />\r\n </ng-container>\r\n <ng-container *ngIf=\"isEditMode && getSkillKey(model) === getSkillKey(skill)\">\r\n <button class=\"back-btn edit me-3\" type=\"button\" (click)=\"backToSkill(accGroup)\">\r\n Cancel\r\n </button>\r\n <button class=\"continue-btn edit\" type=\"button\" (click)=\"saveUserSkillset()\" \r\n [disabled]=\"showLoader\">\r\n Update\r\n </button>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <!-- BODY -->\r\n <div class=\"skill-preview-body content-part\">\r\n <!-- DISPLAY MODE -->\r\n <div *ngIf=\"!isEditMode || model?.skillSetId !== skill.skillSetId\"\r\n class=\"d-flex justify-content-between align-items-center flex-wrap gap-3\">\r\n <div>\r\n <label>Service Provider</label> <br>\r\n {{ skill.providerName }}\r\n </div>\r\n <div>\r\n <label>Skill</label> <br>\r\n {{ skill.skillSetName }}\r\n </div>\r\n <div style=\"pointer-events: none;\">\r\n <label>Self Ability Rating</label> <br>\r\n <ngx-stars [initialStars]=\"skill.starRating/2\" [maxStars]=\"5\"></ngx-stars>\r\n </div>\r\n <div>\r\n <label class=\"mb-0 pb-0 label\">Years of Experience</label> <br>\r\n {{ skill?.year }}\r\n </div>\r\n <div>\r\n <label>Visible</label> <br>\r\n <input type=\"checkbox\" class=\"form-check-input\" [checked]=\"skill.profileVisibility\" disabled>\r\n </div>\r\n <div class=\"w-100 mt-3\">\r\n <label>Description</label> <br>\r\n {{ skill.notes }}\r\n </div>\r\n </div>\r\n <!-- EDIT MODE -->\r\n <div *ngIf=\"isEditMode && model?.skillSetId === skill.skillSetId\" [formGroup]=\"tab.at(0)\">\r\n <div class=\"d-flex justify-content-between align-items-center flex-wrap gap-3\">\r\n <div>\r\n <label>Service Provider</label> <br>\r\n {{ skill.providerName }}\r\n </div>\r\n <div>\r\n <label>Skill</label> <br>\r\n {{ skill.skillSetName }}\r\n </div>\r\n <div>\r\n <label>Self Ability Rating</label> <br>\r\n <ngx-stars *ngIf=\"tab.at(0)?.get('starRating')?.value !== null\" [key]=\"tab.at(0).get('starRating')?.value\"\r\n [initialStars]=\"(tab.at(0).get('starRating')?.value || 0) / 2\" [maxStars]=\"5\"\r\n (rate)=\"onEditRating($event)\">\r\n </ngx-stars>\r\n </div>\r\n <div style=\"width: 200px;\">\r\n <label class=\"mb-0 label pb-0\">Years of Experience</label> <br>\r\n <ng-select class=\"w-100\" [items]=\"expYears\" [searchable]=\"false\" [clearable]=\"false\" bindLabel=\"text\" formControlName=\"year\"\r\n [ngClass]=\"{ 'is-invalid': userSkillSubmitted && k?.year?.errors }\" bindValue=\"value\"\r\n [closeOnSelect]=\"true\" placeholder=\"Select\" id=\"reqStates\"></ng-select>\r\n </div>\r\n <div>\r\n <label>Visible</label> <br>\r\n <input class=\"form-check-input \" type=\"checkbox\" formControlName=\"profileVisibility\" role=\"switch\">\r\n </div>\r\n </div>\r\n <div class=\"mt-3\">\r\n <label>Description</label> <br>\r\n <textarea class=\"form-control\" rows=\"2\" formControlName=\"notes\" placeholder=\"Enter notes\"\r\n style=\"height: 80px;\"></textarea>\r\n </div>\r\n </div>\r\n </div>\r\n </accordion-group>\r\n </accordion>\r\n</div>\r\n\r\n<!-- Add part -->\r\n<div class=\"skills-container\" *ngIf=\"store.stepView() === 'add'\">\r\n <h2 class=\"title text-secondary\">Add Skills</h2>\r\n <p class=\"subtitle\">A minimum of 5 skills is needed</p>\r\n <div class=\"content-part\">\r\n <h6 class=\"text-secondary\"> {{ form?.value?.id ? \"Update Skill Category\" : \"Create Skill Category\" }}</h6>\r\n <div class=\"sub-section\">\r\n <div class=\"row mt-2\">\r\n <div class=\"col-12 col-md-12 col-sm-12\">\r\n <div class=\"search-part\">\r\n <input type=\"text\" placeholder=\"Search / Add Skillsets here\" [(ngModel)]=\"searchSkillQry\"\r\n (input)=\"getSkillSets()\" />\r\n <button class=\"btn\" (click)=\"createNewSkills()\" tooltip=\"Add Skillset\">\r\n <img src=\"/assets/images/icons/plus.svg\" alt=\"search\" class=\"create-plus\" width=\"18\"\r\n height=\"18\" />\r\n </button>\r\n </div>\r\n <div *ngIf=\"errMsg\" class=\"invalid-feedback is-invalid d-block\">\r\n Please Enter Skillsets Name\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"nameError\" class=\"invalid-feedback is-invalid d-block\">\r\n {{nameError}}\r\n </div>\r\n <div class=\"col skills-section\" [ngClass]=\"showLoading && !isEditMode ? 'loader':''\">\r\n <div class=\"row mt-2\" [ngStyle]=\"showLoader && !isEditMode ? {'min-height': '150px'} : {}\">\r\n <div class=\"col-12 col-md-4\" *ngFor=\"let skill of skillSets\">\r\n <div class=\"mt-2 gap-1 d-flex align-items-start\">\r\n <input \r\n type=\"checkbox\"\r\n [checked]=\"skill.selected\"\r\n (change)=\"onSelectedSkillsets($event, skill)\"\r\n id=\"{{skill.id}}\"\r\n name=\"{{skill.id}}\">\r\n<label class=\"text-title\" for=\"{{skill.id}}\">\r\n {{ skill.name }}\r\n</label>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n [ngClass]=\"{ 'loader': showLoading && !isEditMode,'pt-3': !showLoading && !isEditMode,'edit-mode': isEditMode}\">\r\n <!-- <loader [show]=\"showLoading\" [small]=\"true\"></loader> -->\r\n <tabset #tabSet>\r\n <tab (selectTab)=\"setTabGroup(group)\" *ngFor=\"let group of tab.controls; let index = index\"\r\n [label]=\"tabs[index]\" tab1 id={{tabs[index]}} #{{tabs[index]}}>\r\n <ng-template tabHeading *ngIf=\"!isEditMode\">\r\n <span class=\"text-secondary\">{{tabs[index]}}</span>\r\n <button class=\"btn btn-sm\" (click)=\"removeTab(index, group.controls.skillSetId.value)\">\r\n <img src=\"/assets/images/icons/close-x-mark.svg\" alt=\"search\" width=\"16px\" height=\"16px\" />\r\n </button>\r\n </ng-template>\r\n <div [formGroup]=\"group\" class=\"tab-card\">\r\n <div class=\"card-body\">\r\n <div class=\"row\">\r\n <div class=\"col-12 col-md-2 mt-1\">\r\n <label class=\"label\">Self Ability Rating</label>\r\n <ngx-stars [initialStars]=\"initialStarts\" (ratingOutput)=\"onRatingSet($event,index)\"\r\n [ngClass]=\"{ 'is-invalid': userSkillSubmitted && k?.starRating?.errors }\" [maxStars]=\"5\">\r\n </ngx-stars>\r\n <div *ngIf=\"userSkillSubmitted && k?.starRating?.errors\" class=\"invalid-feedback\"\r\n [ngClass]=\"{ 'is-invalid': userSkillSubmitted && k?.starRating?.errors }\">\r\n <div *ngIf=\"k?.starRating?.errors?.required\">Star\r\n Rating is\r\n required</div>\r\n </div>\r\n </div>\r\n <div class=\"col-12 col-md-4 mt-1\">\r\n <label class=\"label \">Years of Experience</label>\r\n <ng-select class=\"w-100\" [items]=\"expYears\" [searchable]=\"false\" [clearable]=\"false\" bindLabel=\"text\"\r\n formControlName=\"year\" [ngClass]=\"{ 'is-invalid': userSkillSubmitted && k?.year?.errors }\"\r\n bindValue=\"value\" [closeOnSelect]=\"true\" placeholder=\"Select\" id=\"reqStates\"\r\n (change)=\"onYearChange(group)\"></ng-select>\r\n\r\n <div *ngIf=\"userSkillSubmitted && k?.year?.errors\" class=\"invalid-feedback\"\r\n [ngClass]=\"{ 'is-invalid': userSkillSubmitted && k?.year?.errors }\">\r\n <div *ngIf=\"k?.year?.errors?.required\">Year is\r\n required</div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"col-12 col-md-4 mt-1 text-center\">\r\n <label class=\"label\">Profile\r\n Visibility</label><br />\r\n <input class=\"form-check-input \" type=\"checkbox\" formControlName=\"profileVisibility\" role=\"switch\">\r\n </div>\r\n\r\n <div class=\"col-12 col-md-2 mt-1\" *ngIf=\"tab.controls.length>1 && index == copyOptionIndex\">\r\n <label class=\"mb-2 label\">Copy to All Tabs</label>\r\n <input class=\"form-check-input\" type=\"checkbox\" (click)=\"setCopyToAllTabs(index,group.value)\"\r\n role=\"switch\">\r\n </div>\r\n </div>\r\n <div>\r\n <label class=\"label\">Description</label>\r\n <div class=\"col-12 col-md-12 mt-1\">\r\n <textarea placeholder=\"Description of your Skill here\" formControlName=\"notes\" class=\"form-control\"\r\n [ngClass]=\"{ 'is-invalid': userSkillSubmitted && k?.notes?.errors }\" rows=\"5\"></textarea>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </tab>\r\n </tabset>\r\n </div>\r\n <!-- <div class=\"row pt-3\">\r\n <div class=\"pt-3 text-end\">\r\n <button class=\"back-btn\" (click)=\"reset()\">Reset</button>\r\n </div>\r\n </div> -->\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<!-- Footer buttons -->\r\n<div class=\"skills-container last footer-actions\">\r\n <button class=\"back-btn\" (click)=\"back()\">Back</button>\r\n <div class=\"mb-res\">\r\n <button class=\"back-btn me-3\" *ngIf=\"store.stepView() === 'add'\" (click)=\"next()\">Skip</button>\r\n <button class=\"continue-btn add me-3\" *ngIf=\"store.stepView() === 'preview'\" (click)=\"store.goToAdd()\">\r\n Add More Skills\r\n </button>\r\n <button class=\"continue-btn\" (click)=\"onContinue()\" [disabled]=\"showLoader\" [ng2-loading]=\"showLoader\">\r\n Continue</button>\r\n </div>\r\n</div>", styles: ["@charset \"UTF-8\";.skills-container{max-width:1000px;margin:40px auto;min-height:300px}.skills-container.last{min-height:unset}.title{font-size:22px;margin-bottom:4px}.subtitle{font-size:13px;color:#777;margin-bottom:30px}.content-part{background:#fff}.content-part p,.content-part div{font-size:small}.content-part .card{margin-top:15px;background-color:#fff;border-radius:10px}.content-part .card .row{margin-top:-15px}.content-part .card .sub-section{padding:0 10px}.content-part .card .sub-section .title{font-size:16px;font-weight:400;color:var(--font-primary)}.content-part .card .sub-section .info-title{font-size:12px;font-weight:400;color:var(--font-primary);margin-left:5px}.content-part .card .sub-section .content{font-size:12px}.content-part .card .sub-section .subsection{font-weight:600;padding-top:10px;font-size:12px}.content-part .card .sub-section .subsection input{width:30%}.content-part .card .sub-section .icon{width:35px;filter:opacity(.5)}.content-part .tab-card{background-color:#fff;border-radius:5px;color:var(--font-primary);margin-top:15px}.content-part .tab-card .row{margin-top:2px}.content-part .search-part{width:100%;position:relative;border-radius:5px;border:1px solid #d3dae6;padding:10px 0 10px 15px;display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;height:45px}.content-part .search-part input{width:auto;flex:1;color:var(--font-dark);font-size:var(--font12-input);font-weight:400;border:none;background:none;outline:none}.content-part .search-part .btn{background:#1e2541;border-radius:5px;padding:5px;width:41px;height:36px;margin-right:3px}.content-part .search-part .btn img{filter:brightness(0) invert(1)}.content-part textarea{width:100%;height:100px;background:none}.content-part .skills-section{margin-left:5px}.content-part .skills-section .category-title{margin-bottom:5px;font-size:13px;font-weight:400;color:var(--font-primary);margin-left:5px}.content-part .skills-section .text-title{font-size:13px;margin-left:3px;color:var(--font-primary);display:contents}.content-part .skills-section input[type=checkbox]{border:2px solid #000!important;height:14px!important;width:15px!important;border-radius:2px!important;margin:2px}.content-part .skills-section input[type=checkbox]:checked{background-color:#000!important;border:2px solid #000!important}.content-part .skills-section input[type=checkbox]:checked:after{content:\"\\2713\";color:#fff;font-size:11px;position:relative;left:50%;bottom:-7px;transform:translate(-50%,-50%);font-weight:900;background:#000;width:15px;display:flex;justify-content:center;border:2px solid #000;height:14px;align-items:center;border-radius:2px}.content-part .form-check-input{width:43px;height:21px;margin:0 5px;background-color:#c7c7c7!important;background-image:url(/assets/images/icons/toogle-circle.svg);background-position:left 4px top 2px;background-size:15px;border:1px solid #c7c7c7;outline:none!important;box-shadow:none!important;border-radius:25px;cursor:pointer}.content-part .form-check-input:checked{background-position:right 4px top 2px;background-image:url(/assets/images/icons/toogle-circle.svg);background-color:#237b4b!important;border:1px solid #237b4b!important}::ng-deep .ng-select.ng-select-opened>.ng-select-container{background:#f1f4fa}::ng-deep .ng-select .ng-select-container{background:#f1f4fa;border:1px solid #ccc;border-radius:5px}.back-btn{font-size:12px;transition:.2s;border:none;height:auto;font-weight:600;min-width:6rem;background:#d3dae6;color:#fff;border-radius:5px;padding:6px 8px}.save-btn{font-size:12px;transition:.2s;border:none;height:auto;font-weight:600;min-width:6rem;background-color:#4077ad;color:#fff;border-radius:5px;padding:6px 8px}.create-btn{font-size:12px;transition:.2s;border:none;height:auto;font-weight:600;min-width:6rem;background-color:#4077ad;color:#fff;border-radius:5px;padding:6px 8px;height:40px;min-width:9rem}.form-control{color:#333;background:none!important;min-height:36px;font-size:small;height:43px}.form-control:focus{box-shadow:none!important}.close-popup{position:absolute;right:7px;top:4px;width:25px}.label{font-size:12px;font-weight:700;padding-bottom:8px}.form-control:focus{border:var(--bs-border-width) solid var(--bs-border-color)}::ng-deep .nav-link{color:#000!important}.loader{filter:blur(3px);height:40px}.edit-mode ::ng-deep .nav-tabs{display:none!important}.footer-actions{display:flex;justify-content:space-between;align-items:center;margin-top:100px}.skip-btn,.back-btn{background:#d3dae6;color:#6c757dc7;font-size:14px;border-radius:5px;padding:7px 23px;border:none;height:auto;font-weight:500;min-width:8rem;min-height:45px}.skip-btn.edit,.back-btn.edit{padding:5px 15px;min-height:20px;min-width:auto}.continue-btn{padding:7px 23px;background-color:#4077ad;color:#fff;border-radius:5px;min-width:8rem;min-height:45px;border:white}.continue-btn:disabled{background-color:#d1d5db;cursor:not-allowed}.continue-btn.edit{padding:5px 15px;min-height:20px;min-width:auto}.continue-btn.add{background-color:#2e5b70}.skill-preview-wrapper{margin-bottom:24px}.skill-preview-card{border-radius:12px;margin-bottom:12px;transition:box-shadow .35s ease,transform .25s ease,border-color .25s ease;overflow:hidden}::ng-deep accordion-group+accordion-group{margin-top:20px}.skill-preview-header{display:flex;justify-content:space-between;align-items:center;padding:10px 0}.icon-color{cursor:pointer;width:20px;height:20px;background:transparent;transition:transform .3s ease;filter:brightness(0) saturate(100%) invert(48%) sepia(8%) saturate(350%) hue-rotate(170deg) brightness(92%) contrast(88%)}.icon-color.edit{width:18px;height:18px}.rotate{transform:rotate(-180deg)}.skill-preview-body label{font-weight:500;font-size:13px;color:#6b7280}.skill-preview-body p{margin:0}@media screen and (max-width: 767px){.skills-container{padding:0 10px}.footer-actions{flex-direction:column-reverse;gap:5px;margin-top:65px}.back-btn{width:100%}.continue-btn{padding:10px 43px}.mb-res{display:flex;flex-direction:column-reverse;gap:5px;width:100%}}\n"], dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i3.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: i3.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i10.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "directive", type: Ng2LoadingSpinnerDirective, selector: "[ng2-loading]", inputs: ["ng2-loading", "config", "template"] }, { kind: "component", type: NgxStarsComponent, selector: "ngx-stars", inputs: ["maxStars", "initialStars", "readonly", "size", "color", "animation", "animationSpeed", "customPadding", "wholeStars", "customStarIcons"], outputs: ["ratingOutput"] }, { kind: "directive", type: i11$1.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "directive", type: i12.TabDirective, selector: "tab, [tab]", inputs: ["heading", "id", "disabled", "removable", "tabOrder", "customClass", "active"], outputs: ["selectTab", "deselect", "removed"], exportAs: ["tab"] }, { kind: "component", type: i12.TabsetComponent, selector: "tabset", inputs: ["vertical", "justified", "type"] }, { kind: "directive", type: i12.TabHeadingDirective, selector: "[tabHeading]" }, { kind: "component", type: i13.AccordionComponent, selector: "accordion", inputs: ["isAnimated", "closeOthers"] }, { kind: "component", type: i13.AccordionPanelComponent, selector: "accordion-group, accordion-panel", inputs: ["heading", "panelClass", "isDisabled", "isOpen"], outputs: ["isOpenChange"] }], animations: [
|
|
3875
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SkillsComponent, deps: [{ token: SkillSetService }, { token: UserSkillSetService }, { token: UserService }, { token: i8.UntypedFormBuilder }, { token: UtilsService }, { token: i6.RoleContextService }, { token: CredentialingStore }, { token: i6.TokenService }], target: i0.ɵɵFactoryTarget.Component });
|
|
3876
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: SkillsComponent, isStandalone: false, selector: "app-skills", inputs: { providerId: "providerId", providerName: "providerName" }, ngImport: i0, template: "<!-- SKILL PREVIEW LIST -->\r\n<div class=\"skills-container\" *ngIf=\"store.stepView() === 'preview'\">\r\n <h5 class=\"title text-secondary\">Skills Preview</h5>\r\n <!-- <p class=\"subtitle\">First-time users should enter skillsets with Inspector Match, Once you setup skillsets in your\r\n business profile you can add skills under</p> -->\r\n <accordion [closeOthers]=\"true\" [isAnimated]=\"true\">\r\n <accordion-group *ngFor=\"let skill of userSkillsPreview\" #accGroup\r\n (isOpenChange)=\"onSkillAccordionChange(skill, $event)\">\r\n <!-- HEADER -->\r\n <div accordion-heading class=\"skill-preview-header\">\r\n <span class=\"fw-semibold text-secondary\">\r\n {{ skill.skillSetName }}\r\n </span>\r\n <div class=\"actions\">\r\n <ng-container *ngIf=\"!isEditMode || getSkillKey(model) !== getSkillKey(skill)\">\r\n <button type=\"button\" class=\"me-3\" (click)=\"editSkillFromPreview(skill, accGroup, $event)\">\r\n <img class=\"icon-color\" src=\"/assets/images/icons/edit-text.png\" alt=\"icon\" />\r\n </button>\r\n <img class=\"icon-color edit\" src=\"/assets/images/icons/arrow-down.svg\" alt=\"icon\"\r\n [class.rotate]=\"accGroup.isOpen\" />\r\n </ng-container>\r\n <ng-container *ngIf=\"isEditMode && getSkillKey(model) === getSkillKey(skill)\">\r\n <button class=\"back-btn edit me-3\" type=\"button\" (click)=\"backToSkill(accGroup)\">\r\n Cancel\r\n </button>\r\n <button class=\"continue-btn edit\" type=\"button\" (click)=\"saveUserSkillset()\" \r\n [disabled]=\"showLoader\">\r\n Update\r\n </button>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <!-- BODY -->\r\n <div class=\"skill-preview-body content-part\">\r\n <!-- DISPLAY MODE -->\r\n <div *ngIf=\"!isEditMode || model?.skillSetId !== skill.skillSetId\"\r\n class=\"d-flex justify-content-between align-items-center flex-wrap gap-3\">\r\n <div>\r\n <label>Service Provider</label> <br>\r\n {{ skill.providerName }}\r\n </div>\r\n <div>\r\n <label>Skill</label> <br>\r\n {{ skill.skillSetName }}\r\n </div>\r\n <div style=\"pointer-events: none;\">\r\n <label>Self Ability Rating</label> <br>\r\n <ngx-stars [initialStars]=\"skill.starRating/2\" [maxStars]=\"5\"></ngx-stars>\r\n </div>\r\n <div>\r\n <label class=\"mb-0 pb-0 label\">Years of Experience</label> <br>\r\n {{ skill?.year }}\r\n </div>\r\n <div>\r\n <label>Visible</label> <br>\r\n <input type=\"checkbox\" class=\"form-check-input\" [checked]=\"skill.profileVisibility\" disabled>\r\n </div>\r\n <div class=\"w-100 mt-3\">\r\n <label>Description</label> <br>\r\n {{ skill.notes }}\r\n </div>\r\n </div>\r\n <!-- EDIT MODE -->\r\n <div *ngIf=\"isEditMode && model?.skillSetId === skill.skillSetId\" [formGroup]=\"tab.at(0)\">\r\n <div class=\"d-flex justify-content-between align-items-center flex-wrap gap-3\">\r\n <div>\r\n <label>Service Provider</label> <br>\r\n {{ skill.providerName }}\r\n </div>\r\n <div>\r\n <label>Skill</label> <br>\r\n {{ skill.skillSetName }}\r\n </div>\r\n <div>\r\n <label>Self Ability Rating</label> <br>\r\n <ngx-stars *ngIf=\"tab.at(0)?.get('starRating')?.value !== null\" [key]=\"tab.at(0).get('starRating')?.value\"\r\n [initialStars]=\"(tab.at(0).get('starRating')?.value || 0) / 2\" [maxStars]=\"5\"\r\n (rate)=\"onEditRating($event)\">\r\n </ngx-stars>\r\n </div>\r\n <div style=\"width: 200px;\">\r\n <label class=\"mb-0 label pb-0\">Years of Experience</label> <br>\r\n <ng-select class=\"w-100\" [items]=\"expYears\" [searchable]=\"false\" [clearable]=\"false\" bindLabel=\"text\" formControlName=\"year\"\r\n [ngClass]=\"{ 'is-invalid': userSkillSubmitted && k?.year?.errors }\" bindValue=\"value\"\r\n [closeOnSelect]=\"true\" placeholder=\"Select\" id=\"reqStates\"></ng-select>\r\n </div>\r\n <div>\r\n <label>Visible</label> <br>\r\n <input class=\"form-check-input \" type=\"checkbox\" formControlName=\"profileVisibility\" role=\"switch\">\r\n </div>\r\n </div>\r\n <div class=\"mt-3\">\r\n <label>Description</label> <br>\r\n <textarea class=\"form-control\" rows=\"2\" formControlName=\"notes\" placeholder=\"Enter notes\"\r\n style=\"height: 80px;\"></textarea>\r\n </div>\r\n </div>\r\n </div>\r\n </accordion-group>\r\n </accordion>\r\n</div>\r\n\r\n<!-- Add part -->\r\n<div class=\"skills-container\" *ngIf=\"store.stepView() === 'add'\">\r\n <h2 class=\"title text-secondary\">Add Skills</h2>\r\n <p class=\"subtitle\">A minimum of 5 skills is needed</p>\r\n <div class=\"content-part\">\r\n <h6 class=\"text-secondary\"> {{ form?.value?.id ? \"Update Skill Category\" : \"Create Skill Category\" }}</h6>\r\n <div class=\"sub-section\">\r\n <div class=\"row mt-2\">\r\n <div class=\"col-12 col-md-12 col-sm-12\">\r\n <div class=\"search-part\">\r\n <input type=\"text\" placeholder=\"Search / Add Skillsets here\" [(ngModel)]=\"searchSkillQry\"\r\n (input)=\"getSkillSets()\" />\r\n <button class=\"btn\" (click)=\"createNewSkills()\" tooltip=\"Add Skillset\">\r\n <img src=\"/assets/images/icons/plus.svg\" alt=\"search\" class=\"create-plus\" width=\"18\"\r\n height=\"18\" />\r\n </button>\r\n </div>\r\n <div *ngIf=\"errMsg\" class=\"invalid-feedback is-invalid d-block\">\r\n Please Enter Skillsets Name\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"nameError\" class=\"invalid-feedback is-invalid d-block\">\r\n {{nameError}}\r\n </div>\r\n <div class=\"col skills-section\" [ngClass]=\"showLoading && !isEditMode ? 'loader':''\">\r\n <div class=\"row mt-2\" [ngStyle]=\"showLoader && !isEditMode ? {'min-height': '150px'} : {}\">\r\n <div class=\"col-12 col-md-4\" *ngFor=\"let skill of skillSets\">\r\n <div class=\"mt-2 gap-1 d-flex align-items-start\">\r\n <input \r\n type=\"checkbox\"\r\n [checked]=\"skill.selected\"\r\n (change)=\"onSelectedSkillsets($event, skill)\"\r\n id=\"{{skill.id}}\"\r\n name=\"{{skill.id}}\">\r\n<label class=\"text-title\" for=\"{{skill.id}}\">\r\n {{ skill.name }}\r\n</label>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n [ngClass]=\"{ 'loader': showLoading && !isEditMode,'pt-3': !showLoading && !isEditMode,'edit-mode': isEditMode}\">\r\n <!-- <loader [show]=\"showLoading\" [small]=\"true\"></loader> -->\r\n <tabset #tabSet>\r\n <tab (selectTab)=\"setTabGroup(group)\" *ngFor=\"let group of tab.controls; let index = index\"\r\n [label]=\"tabs[index]\" tab1 id={{tabs[index]}} #{{tabs[index]}}>\r\n <ng-template tabHeading *ngIf=\"!isEditMode\">\r\n <span class=\"text-secondary\">{{tabs[index]}}</span>\r\n <button class=\"btn btn-sm\" (click)=\"removeTab(index, group.controls.skillSetId.value)\">\r\n <img src=\"/assets/images/icons/close-x-mark.svg\" alt=\"search\" width=\"16px\" height=\"16px\" />\r\n </button>\r\n </ng-template>\r\n <div [formGroup]=\"group\" class=\"tab-card\">\r\n <div class=\"card-body\">\r\n <div class=\"row\">\r\n <div class=\"col-12 col-md-2 mt-1\">\r\n <label class=\"label\">Self Ability Rating</label>\r\n <ngx-stars [initialStars]=\"initialStarts\" (ratingOutput)=\"onRatingSet($event,index)\"\r\n [ngClass]=\"{ 'is-invalid': userSkillSubmitted && k?.starRating?.errors }\" [maxStars]=\"5\">\r\n </ngx-stars>\r\n <div *ngIf=\"userSkillSubmitted && k?.starRating?.errors\" class=\"invalid-feedback\"\r\n [ngClass]=\"{ 'is-invalid': userSkillSubmitted && k?.starRating?.errors }\">\r\n <div *ngIf=\"k?.starRating?.errors?.required\">Star\r\n Rating is\r\n required</div>\r\n </div>\r\n </div>\r\n <div class=\"col-12 col-md-4 mt-1\">\r\n <label class=\"label \">Years of Experience</label>\r\n <ng-select class=\"w-100\" [items]=\"expYears\" [searchable]=\"false\" [clearable]=\"false\" bindLabel=\"text\"\r\n formControlName=\"year\" [ngClass]=\"{ 'is-invalid': userSkillSubmitted && k?.year?.errors }\"\r\n bindValue=\"value\" [closeOnSelect]=\"true\" placeholder=\"Select\" id=\"reqStates\"\r\n (change)=\"onYearChange(group)\"></ng-select>\r\n\r\n <div *ngIf=\"userSkillSubmitted && k?.year?.errors\" class=\"invalid-feedback\"\r\n [ngClass]=\"{ 'is-invalid': userSkillSubmitted && k?.year?.errors }\">\r\n <div *ngIf=\"k?.year?.errors?.required\">Year is\r\n required</div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"col-12 col-md-4 mt-1 text-center\">\r\n <label class=\"label\">Profile\r\n Visibility</label><br />\r\n <input class=\"form-check-input \" type=\"checkbox\" formControlName=\"profileVisibility\" role=\"switch\">\r\n </div>\r\n\r\n <div class=\"col-12 col-md-2 mt-1\" *ngIf=\"tab.controls.length>1 && index == copyOptionIndex\">\r\n <label class=\"mb-2 label\">Copy to All Tabs</label>\r\n <input class=\"form-check-input\" type=\"checkbox\" (click)=\"setCopyToAllTabs(index,group.value)\"\r\n role=\"switch\">\r\n </div>\r\n </div>\r\n <div>\r\n <label class=\"label\">Description</label>\r\n <div class=\"col-12 col-md-12 mt-1\">\r\n <textarea placeholder=\"Description of your Skill here\" formControlName=\"notes\" class=\"form-control\"\r\n [ngClass]=\"{ 'is-invalid': userSkillSubmitted && k?.notes?.errors }\" rows=\"5\"></textarea>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </tab>\r\n </tabset>\r\n </div>\r\n <!-- <div class=\"row pt-3\">\r\n <div class=\"pt-3 text-end\">\r\n <button class=\"back-btn\" (click)=\"reset()\">Reset</button>\r\n </div>\r\n </div> -->\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<!-- Footer buttons -->\r\n<div class=\"skills-container last footer-actions\">\r\n <button class=\"back-btn\" (click)=\"back()\">Back</button>\r\n <div class=\"mb-res\">\r\n <button class=\"back-btn me-3\" *ngIf=\"store.stepView() === 'add'\" (click)=\"next()\">Skip</button>\r\n <button class=\"continue-btn add me-3\" *ngIf=\"store.stepView() === 'preview'\" (click)=\"store.goToAdd()\">\r\n Add More Skills\r\n </button>\r\n <button class=\"continue-btn\" (click)=\"onContinue()\" [disabled]=\"showLoader\" [ng2-loading]=\"showLoader\">\r\n Continue</button>\r\n </div>\r\n</div>", styles: ["@charset \"UTF-8\";.skills-container{max-width:1000px;margin:40px auto;min-height:300px}.skills-container.last{min-height:unset}.title{font-size:22px;margin-bottom:4px}.subtitle{font-size:13px;color:#777;margin-bottom:30px}.content-part{background:#fff}.content-part p,.content-part div{font-size:small}.content-part .card{margin-top:15px;background-color:#fff;border-radius:10px}.content-part .card .row{margin-top:-15px}.content-part .card .sub-section{padding:0 10px}.content-part .card .sub-section .title{font-size:16px;font-weight:400;color:var(--font-primary)}.content-part .card .sub-section .info-title{font-size:12px;font-weight:400;color:var(--font-primary);margin-left:5px}.content-part .card .sub-section .content{font-size:12px}.content-part .card .sub-section .subsection{font-weight:600;padding-top:10px;font-size:12px}.content-part .card .sub-section .subsection input{width:30%}.content-part .card .sub-section .icon{width:35px;filter:opacity(.5)}.content-part .tab-card{background-color:#fff;border-radius:5px;color:var(--font-primary);margin-top:15px}.content-part .tab-card .row{margin-top:2px}.content-part .search-part{width:100%;position:relative;border-radius:5px;border:1px solid #d3dae6;padding:10px 0 10px 15px;display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;height:45px}.content-part .search-part input{width:auto;flex:1;color:var(--font-dark);font-size:var(--font12-input);font-weight:400;border:none;background:none;outline:none}.content-part .search-part .btn{background:#1e2541;border-radius:5px;padding:5px;width:41px;height:36px;margin-right:3px}.content-part .search-part .btn img{filter:brightness(0) invert(1)}.content-part textarea{width:100%;height:100px;background:none}.content-part .skills-section{margin-left:5px}.content-part .skills-section .category-title{margin-bottom:5px;font-size:13px;font-weight:400;color:var(--font-primary);margin-left:5px}.content-part .skills-section .text-title{font-size:13px;margin-left:3px;color:var(--font-primary);display:contents}.content-part .skills-section input[type=checkbox]{border:2px solid #000!important;height:14px!important;width:15px!important;border-radius:2px!important;margin:2px}.content-part .skills-section input[type=checkbox]:checked{background-color:#000!important;border:2px solid #000!important}.content-part .skills-section input[type=checkbox]:checked:after{content:\"\\2713\";color:#fff;font-size:11px;position:relative;left:50%;bottom:-7px;transform:translate(-50%,-50%);font-weight:900;background:#000;width:15px;display:flex;justify-content:center;border:2px solid #000;height:14px;align-items:center;border-radius:2px}.content-part .form-check-input{width:43px;height:21px;margin:0 5px;background-color:#c7c7c7!important;background-image:url(/assets/images/icons/toogle-circle.svg);background-position:left 4px top 2px;background-size:15px;border:1px solid #c7c7c7;outline:none!important;box-shadow:none!important;border-radius:25px;cursor:pointer}.content-part .form-check-input:checked{background-position:right 4px top 2px;background-image:url(/assets/images/icons/toogle-circle.svg);background-color:#237b4b!important;border:1px solid #237b4b!important}::ng-deep .ng-select.ng-select-opened>.ng-select-container{background:#f1f4fa}::ng-deep .ng-select .ng-select-container{background:#f1f4fa;border:1px solid #ccc;border-radius:5px}.back-btn{font-size:12px;transition:.2s;border:none;height:auto;font-weight:600;min-width:6rem;background:#d3dae6;color:#fff;border-radius:5px;padding:6px 8px}.save-btn{font-size:12px;transition:.2s;border:none;height:auto;font-weight:600;min-width:6rem;background-color:#4077ad;color:#fff;border-radius:5px;padding:6px 8px}.create-btn{font-size:12px;transition:.2s;border:none;height:auto;font-weight:600;min-width:6rem;background-color:#4077ad;color:#fff;border-radius:5px;padding:6px 8px;height:40px;min-width:9rem}.form-control{color:#333;background:none!important;min-height:36px;font-size:small;height:43px}.form-control:focus{box-shadow:none!important}.close-popup{position:absolute;right:7px;top:4px;width:25px}.label{font-size:12px;font-weight:700;padding-bottom:8px}.form-control:focus{border:var(--bs-border-width) solid var(--bs-border-color)}::ng-deep .nav-link{color:#000!important}.loader{filter:blur(3px);height:40px}.edit-mode ::ng-deep .nav-tabs{display:none!important}.footer-actions{display:flex;justify-content:space-between;align-items:center;margin-top:100px}.skip-btn,.back-btn{background:#d3dae6;color:#6c757dc7;font-size:14px;border-radius:5px;padding:7px 23px;border:none;height:auto;font-weight:500;min-width:8rem;min-height:45px}.skip-btn.edit,.back-btn.edit{padding:5px 15px;min-height:20px;min-width:auto}.continue-btn{padding:7px 23px;background-color:#4077ad;color:#fff;border-radius:5px;min-width:8rem;min-height:45px;border:white}.continue-btn:disabled{background-color:#d1d5db;cursor:not-allowed}.continue-btn.edit{padding:5px 15px;min-height:20px;min-width:auto}.continue-btn.add{background-color:#2e5b70}.skill-preview-wrapper{margin-bottom:24px}.skill-preview-card{border-radius:12px;margin-bottom:12px;transition:box-shadow .35s ease,transform .25s ease,border-color .25s ease;overflow:hidden}::ng-deep accordion-group+accordion-group{margin-top:20px}.skill-preview-header{display:flex;justify-content:space-between;align-items:center;padding:10px 0}.icon-color{cursor:pointer;width:20px;height:20px;background:transparent;transition:transform .3s ease;filter:brightness(0) saturate(100%) invert(48%) sepia(8%) saturate(350%) hue-rotate(170deg) brightness(92%) contrast(88%)}.icon-color.edit{width:18px;height:18px}.rotate{transform:rotate(-180deg)}.skill-preview-body label{font-weight:500;font-size:13px;color:#6b7280}.skill-preview-body p{margin:0}@media screen and (max-width: 767px){.skills-container{padding:0 10px}.footer-actions{flex-direction:column-reverse;gap:5px;margin-top:65px}.back-btn{width:100%}.continue-btn{padding:10px 43px}.mb-res{display:flex;flex-direction:column-reverse;gap:5px;width:100%}}\n"], dependencies: [{ kind: "directive", type: i11.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i11.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i11.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i8.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: i8.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i8.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i8.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i12.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "directive", type: Ng2LoadingSpinnerDirective, selector: "[ng2-loading]", inputs: ["ng2-loading", "config", "template"] }, { kind: "component", type: NgxStarsComponent, selector: "ngx-stars", inputs: ["maxStars", "initialStars", "readonly", "size", "color", "animation", "animationSpeed", "customPadding", "wholeStars", "customStarIcons"], outputs: ["ratingOutput"] }, { kind: "directive", type: i12$2.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "directive", type: i13.TabDirective, selector: "tab, [tab]", inputs: ["heading", "id", "disabled", "removable", "tabOrder", "customClass", "active"], outputs: ["selectTab", "deselect", "removed"], exportAs: ["tab"] }, { kind: "component", type: i13.TabsetComponent, selector: "tabset", inputs: ["vertical", "justified", "type"] }, { kind: "directive", type: i13.TabHeadingDirective, selector: "[tabHeading]" }, { kind: "component", type: i14.AccordionComponent, selector: "accordion", inputs: ["isAnimated", "closeOthers"] }, { kind: "component", type: i14.AccordionPanelComponent, selector: "accordion-group, accordion-panel", inputs: ["heading", "panelClass", "isDisabled", "isOpen"], outputs: ["isOpenChange"] }], animations: [
|
|
3751
3877
|
trigger('expandCollapse', [
|
|
3752
3878
|
state('open', style({
|
|
3753
3879
|
height: '*',
|
|
@@ -3786,7 +3912,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
3786
3912
|
transition('open <=> closed', animate('300ms ease'))
|
|
3787
3913
|
])
|
|
3788
3914
|
], template: "<!-- SKILL PREVIEW LIST -->\r\n<div class=\"skills-container\" *ngIf=\"store.stepView() === 'preview'\">\r\n <h5 class=\"title text-secondary\">Skills Preview</h5>\r\n <!-- <p class=\"subtitle\">First-time users should enter skillsets with Inspector Match, Once you setup skillsets in your\r\n business profile you can add skills under</p> -->\r\n <accordion [closeOthers]=\"true\" [isAnimated]=\"true\">\r\n <accordion-group *ngFor=\"let skill of userSkillsPreview\" #accGroup\r\n (isOpenChange)=\"onSkillAccordionChange(skill, $event)\">\r\n <!-- HEADER -->\r\n <div accordion-heading class=\"skill-preview-header\">\r\n <span class=\"fw-semibold text-secondary\">\r\n {{ skill.skillSetName }}\r\n </span>\r\n <div class=\"actions\">\r\n <ng-container *ngIf=\"!isEditMode || getSkillKey(model) !== getSkillKey(skill)\">\r\n <button type=\"button\" class=\"me-3\" (click)=\"editSkillFromPreview(skill, accGroup, $event)\">\r\n <img class=\"icon-color\" src=\"/assets/images/icons/edit-text.png\" alt=\"icon\" />\r\n </button>\r\n <img class=\"icon-color edit\" src=\"/assets/images/icons/arrow-down.svg\" alt=\"icon\"\r\n [class.rotate]=\"accGroup.isOpen\" />\r\n </ng-container>\r\n <ng-container *ngIf=\"isEditMode && getSkillKey(model) === getSkillKey(skill)\">\r\n <button class=\"back-btn edit me-3\" type=\"button\" (click)=\"backToSkill(accGroup)\">\r\n Cancel\r\n </button>\r\n <button class=\"continue-btn edit\" type=\"button\" (click)=\"saveUserSkillset()\" \r\n [disabled]=\"showLoader\">\r\n Update\r\n </button>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <!-- BODY -->\r\n <div class=\"skill-preview-body content-part\">\r\n <!-- DISPLAY MODE -->\r\n <div *ngIf=\"!isEditMode || model?.skillSetId !== skill.skillSetId\"\r\n class=\"d-flex justify-content-between align-items-center flex-wrap gap-3\">\r\n <div>\r\n <label>Service Provider</label> <br>\r\n {{ skill.providerName }}\r\n </div>\r\n <div>\r\n <label>Skill</label> <br>\r\n {{ skill.skillSetName }}\r\n </div>\r\n <div style=\"pointer-events: none;\">\r\n <label>Self Ability Rating</label> <br>\r\n <ngx-stars [initialStars]=\"skill.starRating/2\" [maxStars]=\"5\"></ngx-stars>\r\n </div>\r\n <div>\r\n <label class=\"mb-0 pb-0 label\">Years of Experience</label> <br>\r\n {{ skill?.year }}\r\n </div>\r\n <div>\r\n <label>Visible</label> <br>\r\n <input type=\"checkbox\" class=\"form-check-input\" [checked]=\"skill.profileVisibility\" disabled>\r\n </div>\r\n <div class=\"w-100 mt-3\">\r\n <label>Description</label> <br>\r\n {{ skill.notes }}\r\n </div>\r\n </div>\r\n <!-- EDIT MODE -->\r\n <div *ngIf=\"isEditMode && model?.skillSetId === skill.skillSetId\" [formGroup]=\"tab.at(0)\">\r\n <div class=\"d-flex justify-content-between align-items-center flex-wrap gap-3\">\r\n <div>\r\n <label>Service Provider</label> <br>\r\n {{ skill.providerName }}\r\n </div>\r\n <div>\r\n <label>Skill</label> <br>\r\n {{ skill.skillSetName }}\r\n </div>\r\n <div>\r\n <label>Self Ability Rating</label> <br>\r\n <ngx-stars *ngIf=\"tab.at(0)?.get('starRating')?.value !== null\" [key]=\"tab.at(0).get('starRating')?.value\"\r\n [initialStars]=\"(tab.at(0).get('starRating')?.value || 0) / 2\" [maxStars]=\"5\"\r\n (rate)=\"onEditRating($event)\">\r\n </ngx-stars>\r\n </div>\r\n <div style=\"width: 200px;\">\r\n <label class=\"mb-0 label pb-0\">Years of Experience</label> <br>\r\n <ng-select class=\"w-100\" [items]=\"expYears\" [searchable]=\"false\" [clearable]=\"false\" bindLabel=\"text\" formControlName=\"year\"\r\n [ngClass]=\"{ 'is-invalid': userSkillSubmitted && k?.year?.errors }\" bindValue=\"value\"\r\n [closeOnSelect]=\"true\" placeholder=\"Select\" id=\"reqStates\"></ng-select>\r\n </div>\r\n <div>\r\n <label>Visible</label> <br>\r\n <input class=\"form-check-input \" type=\"checkbox\" formControlName=\"profileVisibility\" role=\"switch\">\r\n </div>\r\n </div>\r\n <div class=\"mt-3\">\r\n <label>Description</label> <br>\r\n <textarea class=\"form-control\" rows=\"2\" formControlName=\"notes\" placeholder=\"Enter notes\"\r\n style=\"height: 80px;\"></textarea>\r\n </div>\r\n </div>\r\n </div>\r\n </accordion-group>\r\n </accordion>\r\n</div>\r\n\r\n<!-- Add part -->\r\n<div class=\"skills-container\" *ngIf=\"store.stepView() === 'add'\">\r\n <h2 class=\"title text-secondary\">Add Skills</h2>\r\n <p class=\"subtitle\">A minimum of 5 skills is needed</p>\r\n <div class=\"content-part\">\r\n <h6 class=\"text-secondary\"> {{ form?.value?.id ? \"Update Skill Category\" : \"Create Skill Category\" }}</h6>\r\n <div class=\"sub-section\">\r\n <div class=\"row mt-2\">\r\n <div class=\"col-12 col-md-12 col-sm-12\">\r\n <div class=\"search-part\">\r\n <input type=\"text\" placeholder=\"Search / Add Skillsets here\" [(ngModel)]=\"searchSkillQry\"\r\n (input)=\"getSkillSets()\" />\r\n <button class=\"btn\" (click)=\"createNewSkills()\" tooltip=\"Add Skillset\">\r\n <img src=\"/assets/images/icons/plus.svg\" alt=\"search\" class=\"create-plus\" width=\"18\"\r\n height=\"18\" />\r\n </button>\r\n </div>\r\n <div *ngIf=\"errMsg\" class=\"invalid-feedback is-invalid d-block\">\r\n Please Enter Skillsets Name\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"nameError\" class=\"invalid-feedback is-invalid d-block\">\r\n {{nameError}}\r\n </div>\r\n <div class=\"col skills-section\" [ngClass]=\"showLoading && !isEditMode ? 'loader':''\">\r\n <div class=\"row mt-2\" [ngStyle]=\"showLoader && !isEditMode ? {'min-height': '150px'} : {}\">\r\n <div class=\"col-12 col-md-4\" *ngFor=\"let skill of skillSets\">\r\n <div class=\"mt-2 gap-1 d-flex align-items-start\">\r\n <input \r\n type=\"checkbox\"\r\n [checked]=\"skill.selected\"\r\n (change)=\"onSelectedSkillsets($event, skill)\"\r\n id=\"{{skill.id}}\"\r\n name=\"{{skill.id}}\">\r\n<label class=\"text-title\" for=\"{{skill.id}}\">\r\n {{ skill.name }}\r\n</label>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n [ngClass]=\"{ 'loader': showLoading && !isEditMode,'pt-3': !showLoading && !isEditMode,'edit-mode': isEditMode}\">\r\n <!-- <loader [show]=\"showLoading\" [small]=\"true\"></loader> -->\r\n <tabset #tabSet>\r\n <tab (selectTab)=\"setTabGroup(group)\" *ngFor=\"let group of tab.controls; let index = index\"\r\n [label]=\"tabs[index]\" tab1 id={{tabs[index]}} #{{tabs[index]}}>\r\n <ng-template tabHeading *ngIf=\"!isEditMode\">\r\n <span class=\"text-secondary\">{{tabs[index]}}</span>\r\n <button class=\"btn btn-sm\" (click)=\"removeTab(index, group.controls.skillSetId.value)\">\r\n <img src=\"/assets/images/icons/close-x-mark.svg\" alt=\"search\" width=\"16px\" height=\"16px\" />\r\n </button>\r\n </ng-template>\r\n <div [formGroup]=\"group\" class=\"tab-card\">\r\n <div class=\"card-body\">\r\n <div class=\"row\">\r\n <div class=\"col-12 col-md-2 mt-1\">\r\n <label class=\"label\">Self Ability Rating</label>\r\n <ngx-stars [initialStars]=\"initialStarts\" (ratingOutput)=\"onRatingSet($event,index)\"\r\n [ngClass]=\"{ 'is-invalid': userSkillSubmitted && k?.starRating?.errors }\" [maxStars]=\"5\">\r\n </ngx-stars>\r\n <div *ngIf=\"userSkillSubmitted && k?.starRating?.errors\" class=\"invalid-feedback\"\r\n [ngClass]=\"{ 'is-invalid': userSkillSubmitted && k?.starRating?.errors }\">\r\n <div *ngIf=\"k?.starRating?.errors?.required\">Star\r\n Rating is\r\n required</div>\r\n </div>\r\n </div>\r\n <div class=\"col-12 col-md-4 mt-1\">\r\n <label class=\"label \">Years of Experience</label>\r\n <ng-select class=\"w-100\" [items]=\"expYears\" [searchable]=\"false\" [clearable]=\"false\" bindLabel=\"text\"\r\n formControlName=\"year\" [ngClass]=\"{ 'is-invalid': userSkillSubmitted && k?.year?.errors }\"\r\n bindValue=\"value\" [closeOnSelect]=\"true\" placeholder=\"Select\" id=\"reqStates\"\r\n (change)=\"onYearChange(group)\"></ng-select>\r\n\r\n <div *ngIf=\"userSkillSubmitted && k?.year?.errors\" class=\"invalid-feedback\"\r\n [ngClass]=\"{ 'is-invalid': userSkillSubmitted && k?.year?.errors }\">\r\n <div *ngIf=\"k?.year?.errors?.required\">Year is\r\n required</div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"col-12 col-md-4 mt-1 text-center\">\r\n <label class=\"label\">Profile\r\n Visibility</label><br />\r\n <input class=\"form-check-input \" type=\"checkbox\" formControlName=\"profileVisibility\" role=\"switch\">\r\n </div>\r\n\r\n <div class=\"col-12 col-md-2 mt-1\" *ngIf=\"tab.controls.length>1 && index == copyOptionIndex\">\r\n <label class=\"mb-2 label\">Copy to All Tabs</label>\r\n <input class=\"form-check-input\" type=\"checkbox\" (click)=\"setCopyToAllTabs(index,group.value)\"\r\n role=\"switch\">\r\n </div>\r\n </div>\r\n <div>\r\n <label class=\"label\">Description</label>\r\n <div class=\"col-12 col-md-12 mt-1\">\r\n <textarea placeholder=\"Description of your Skill here\" formControlName=\"notes\" class=\"form-control\"\r\n [ngClass]=\"{ 'is-invalid': userSkillSubmitted && k?.notes?.errors }\" rows=\"5\"></textarea>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </tab>\r\n </tabset>\r\n </div>\r\n <!-- <div class=\"row pt-3\">\r\n <div class=\"pt-3 text-end\">\r\n <button class=\"back-btn\" (click)=\"reset()\">Reset</button>\r\n </div>\r\n </div> -->\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<!-- Footer buttons -->\r\n<div class=\"skills-container last footer-actions\">\r\n <button class=\"back-btn\" (click)=\"back()\">Back</button>\r\n <div class=\"mb-res\">\r\n <button class=\"back-btn me-3\" *ngIf=\"store.stepView() === 'add'\" (click)=\"next()\">Skip</button>\r\n <button class=\"continue-btn add me-3\" *ngIf=\"store.stepView() === 'preview'\" (click)=\"store.goToAdd()\">\r\n Add More Skills\r\n </button>\r\n <button class=\"continue-btn\" (click)=\"onContinue()\" [disabled]=\"showLoader\" [ng2-loading]=\"showLoader\">\r\n Continue</button>\r\n </div>\r\n</div>", styles: ["@charset \"UTF-8\";.skills-container{max-width:1000px;margin:40px auto;min-height:300px}.skills-container.last{min-height:unset}.title{font-size:22px;margin-bottom:4px}.subtitle{font-size:13px;color:#777;margin-bottom:30px}.content-part{background:#fff}.content-part p,.content-part div{font-size:small}.content-part .card{margin-top:15px;background-color:#fff;border-radius:10px}.content-part .card .row{margin-top:-15px}.content-part .card .sub-section{padding:0 10px}.content-part .card .sub-section .title{font-size:16px;font-weight:400;color:var(--font-primary)}.content-part .card .sub-section .info-title{font-size:12px;font-weight:400;color:var(--font-primary);margin-left:5px}.content-part .card .sub-section .content{font-size:12px}.content-part .card .sub-section .subsection{font-weight:600;padding-top:10px;font-size:12px}.content-part .card .sub-section .subsection input{width:30%}.content-part .card .sub-section .icon{width:35px;filter:opacity(.5)}.content-part .tab-card{background-color:#fff;border-radius:5px;color:var(--font-primary);margin-top:15px}.content-part .tab-card .row{margin-top:2px}.content-part .search-part{width:100%;position:relative;border-radius:5px;border:1px solid #d3dae6;padding:10px 0 10px 15px;display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;height:45px}.content-part .search-part input{width:auto;flex:1;color:var(--font-dark);font-size:var(--font12-input);font-weight:400;border:none;background:none;outline:none}.content-part .search-part .btn{background:#1e2541;border-radius:5px;padding:5px;width:41px;height:36px;margin-right:3px}.content-part .search-part .btn img{filter:brightness(0) invert(1)}.content-part textarea{width:100%;height:100px;background:none}.content-part .skills-section{margin-left:5px}.content-part .skills-section .category-title{margin-bottom:5px;font-size:13px;font-weight:400;color:var(--font-primary);margin-left:5px}.content-part .skills-section .text-title{font-size:13px;margin-left:3px;color:var(--font-primary);display:contents}.content-part .skills-section input[type=checkbox]{border:2px solid #000!important;height:14px!important;width:15px!important;border-radius:2px!important;margin:2px}.content-part .skills-section input[type=checkbox]:checked{background-color:#000!important;border:2px solid #000!important}.content-part .skills-section input[type=checkbox]:checked:after{content:\"\\2713\";color:#fff;font-size:11px;position:relative;left:50%;bottom:-7px;transform:translate(-50%,-50%);font-weight:900;background:#000;width:15px;display:flex;justify-content:center;border:2px solid #000;height:14px;align-items:center;border-radius:2px}.content-part .form-check-input{width:43px;height:21px;margin:0 5px;background-color:#c7c7c7!important;background-image:url(/assets/images/icons/toogle-circle.svg);background-position:left 4px top 2px;background-size:15px;border:1px solid #c7c7c7;outline:none!important;box-shadow:none!important;border-radius:25px;cursor:pointer}.content-part .form-check-input:checked{background-position:right 4px top 2px;background-image:url(/assets/images/icons/toogle-circle.svg);background-color:#237b4b!important;border:1px solid #237b4b!important}::ng-deep .ng-select.ng-select-opened>.ng-select-container{background:#f1f4fa}::ng-deep .ng-select .ng-select-container{background:#f1f4fa;border:1px solid #ccc;border-radius:5px}.back-btn{font-size:12px;transition:.2s;border:none;height:auto;font-weight:600;min-width:6rem;background:#d3dae6;color:#fff;border-radius:5px;padding:6px 8px}.save-btn{font-size:12px;transition:.2s;border:none;height:auto;font-weight:600;min-width:6rem;background-color:#4077ad;color:#fff;border-radius:5px;padding:6px 8px}.create-btn{font-size:12px;transition:.2s;border:none;height:auto;font-weight:600;min-width:6rem;background-color:#4077ad;color:#fff;border-radius:5px;padding:6px 8px;height:40px;min-width:9rem}.form-control{color:#333;background:none!important;min-height:36px;font-size:small;height:43px}.form-control:focus{box-shadow:none!important}.close-popup{position:absolute;right:7px;top:4px;width:25px}.label{font-size:12px;font-weight:700;padding-bottom:8px}.form-control:focus{border:var(--bs-border-width) solid var(--bs-border-color)}::ng-deep .nav-link{color:#000!important}.loader{filter:blur(3px);height:40px}.edit-mode ::ng-deep .nav-tabs{display:none!important}.footer-actions{display:flex;justify-content:space-between;align-items:center;margin-top:100px}.skip-btn,.back-btn{background:#d3dae6;color:#6c757dc7;font-size:14px;border-radius:5px;padding:7px 23px;border:none;height:auto;font-weight:500;min-width:8rem;min-height:45px}.skip-btn.edit,.back-btn.edit{padding:5px 15px;min-height:20px;min-width:auto}.continue-btn{padding:7px 23px;background-color:#4077ad;color:#fff;border-radius:5px;min-width:8rem;min-height:45px;border:white}.continue-btn:disabled{background-color:#d1d5db;cursor:not-allowed}.continue-btn.edit{padding:5px 15px;min-height:20px;min-width:auto}.continue-btn.add{background-color:#2e5b70}.skill-preview-wrapper{margin-bottom:24px}.skill-preview-card{border-radius:12px;margin-bottom:12px;transition:box-shadow .35s ease,transform .25s ease,border-color .25s ease;overflow:hidden}::ng-deep accordion-group+accordion-group{margin-top:20px}.skill-preview-header{display:flex;justify-content:space-between;align-items:center;padding:10px 0}.icon-color{cursor:pointer;width:20px;height:20px;background:transparent;transition:transform .3s ease;filter:brightness(0) saturate(100%) invert(48%) sepia(8%) saturate(350%) hue-rotate(170deg) brightness(92%) contrast(88%)}.icon-color.edit{width:18px;height:18px}.rotate{transform:rotate(-180deg)}.skill-preview-body label{font-weight:500;font-size:13px;color:#6b7280}.skill-preview-body p{margin:0}@media screen and (max-width: 767px){.skills-container{padding:0 10px}.footer-actions{flex-direction:column-reverse;gap:5px;margin-top:65px}.back-btn{width:100%}.continue-btn{padding:10px 43px}.mb-res{display:flex;flex-direction:column-reverse;gap:5px;width:100%}}\n"] }]
|
|
3789
|
-
}], ctorParameters: () => [{ type: SkillSetService }, { type: UserSkillSetService }, { type:
|
|
3915
|
+
}], ctorParameters: () => [{ type: SkillSetService }, { type: UserSkillSetService }, { type: UserService }, { type: i8.UntypedFormBuilder }, { type: UtilsService }, { type: i6.RoleContextService }, { type: CredentialingStore }, { type: i6.TokenService }], propDecorators: { providerId: [{
|
|
3790
3916
|
type: Input
|
|
3791
3917
|
}], providerName: [{
|
|
3792
3918
|
type: Input
|
|
@@ -3838,6 +3964,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
3838
3964
|
|
|
3839
3965
|
class LicensesComponent {
|
|
3840
3966
|
userDocumentService;
|
|
3967
|
+
userService;
|
|
3841
3968
|
store;
|
|
3842
3969
|
workStore;
|
|
3843
3970
|
tokenService;
|
|
@@ -3848,6 +3975,10 @@ class LicensesComponent {
|
|
|
3848
3975
|
providerId;
|
|
3849
3976
|
providerName;
|
|
3850
3977
|
cloudfrontUrl;
|
|
3978
|
+
originalFormValue;
|
|
3979
|
+
fileChanged = false;
|
|
3980
|
+
user;
|
|
3981
|
+
states = [];
|
|
3851
3982
|
uploadToAws = true;
|
|
3852
3983
|
editingIndex = -1;
|
|
3853
3984
|
selectedDocumentTypeId = null;
|
|
@@ -3864,7 +3995,6 @@ class LicensesComponent {
|
|
|
3864
3995
|
model = { fileId: null, fileUrl: null, fileName: null };
|
|
3865
3996
|
fileName;
|
|
3866
3997
|
preferredStartDate = null;
|
|
3867
|
-
states = [];
|
|
3868
3998
|
selectedCountry = 'US';
|
|
3869
3999
|
selectedStates = null;
|
|
3870
4000
|
userName;
|
|
@@ -3875,8 +4005,9 @@ class LicensesComponent {
|
|
|
3875
4005
|
}, ...(ngDevMode ? [{ debugName: "showpreview" }] : []));
|
|
3876
4006
|
userdata;
|
|
3877
4007
|
maxDate = new Date();
|
|
3878
|
-
constructor(userDocumentService, store, workStore, tokenService, postalCodeService, fb, fileService, http) {
|
|
4008
|
+
constructor(userDocumentService, userService, store, workStore, tokenService, postalCodeService, fb, fileService, http) {
|
|
3879
4009
|
this.userDocumentService = userDocumentService;
|
|
4010
|
+
this.userService = userService;
|
|
3880
4011
|
this.store = store;
|
|
3881
4012
|
this.workStore = workStore;
|
|
3882
4013
|
this.tokenService = tokenService;
|
|
@@ -3901,6 +4032,7 @@ class LicensesComponent {
|
|
|
3901
4032
|
.subscribe(value => {
|
|
3902
4033
|
this.loadDocumentTypes(value || '');
|
|
3903
4034
|
});
|
|
4035
|
+
this.user = this.userService.getUserDetails();
|
|
3904
4036
|
await loadProfile();
|
|
3905
4037
|
const saved = profileSignal();
|
|
3906
4038
|
this.userdata = saved;
|
|
@@ -3908,7 +4040,7 @@ class LicensesComponent {
|
|
|
3908
4040
|
this.userId = await this.tokenService.getUserId();
|
|
3909
4041
|
this.workStore.loadFromApi(this.userId);
|
|
3910
4042
|
this.loadDocumentTypesDefault();
|
|
3911
|
-
this.getstates();
|
|
4043
|
+
// this.getstates();
|
|
3912
4044
|
}
|
|
3913
4045
|
loadDocumentTypes(searchText = '') {
|
|
3914
4046
|
this.userDocumentService
|
|
@@ -3959,16 +4091,90 @@ class LicensesComponent {
|
|
|
3959
4091
|
this.certificateForm.markAllAsTouched();
|
|
3960
4092
|
return;
|
|
3961
4093
|
}
|
|
4094
|
+
// ✅ SKIP API if no changes
|
|
4095
|
+
if (this.editingIndex >= 0 && !this.hasChanges()) {
|
|
4096
|
+
console.log('No changes → API skipped');
|
|
4097
|
+
this.isEditing.set(false);
|
|
4098
|
+
return;
|
|
4099
|
+
}
|
|
3962
4100
|
this.proposalLoader = true;
|
|
3963
|
-
|
|
4101
|
+
// ✅ If no file change → direct API
|
|
4102
|
+
if (!this.fileData || !this.fileChanged) {
|
|
3964
4103
|
this.saveAndContinue();
|
|
3965
4104
|
}
|
|
3966
4105
|
else {
|
|
3967
|
-
|
|
3968
|
-
|
|
3969
|
-
|
|
4106
|
+
// ✅ If file changed → upload
|
|
4107
|
+
this.saveAWSFile();
|
|
4108
|
+
}
|
|
4109
|
+
}
|
|
4110
|
+
edit(index) {
|
|
4111
|
+
this.isEditing.set(true);
|
|
4112
|
+
const data = this.workStore.getExperience(index);
|
|
4113
|
+
if (!data)
|
|
4114
|
+
return;
|
|
4115
|
+
const formValue = {
|
|
4116
|
+
number: data.number ? String(data.number) : null,
|
|
4117
|
+
issuedBy: data.issuedBy || null,
|
|
4118
|
+
issuedState: data.issuedState || null,
|
|
4119
|
+
issueDate: data.issueDate ? new Date(data.issueDate).toISOString() : null,
|
|
4120
|
+
expiryDate: data.expiryDate ? new Date(data.expiryDate).toISOString() : null,
|
|
4121
|
+
notes: data.notes || null,
|
|
4122
|
+
documentTypeId: data.documentTypeId || null
|
|
4123
|
+
};
|
|
4124
|
+
// UI patch
|
|
4125
|
+
this.certificateForm.patchValue({
|
|
4126
|
+
...formValue,
|
|
4127
|
+
issueDate: data.issueDate ? new Date(data.issueDate) : null,
|
|
4128
|
+
expiryDate: data.expiryDate ? new Date(data.expiryDate) : null
|
|
4129
|
+
});
|
|
4130
|
+
// ✅ store original
|
|
4131
|
+
this.originalFormValue = formValue;
|
|
4132
|
+
this.selectedDocumentId = data.documentTypeId;
|
|
4133
|
+
this.selectedDocumentName = data.documentTypeName;
|
|
4134
|
+
this.model.fileUrl = data.fileUrl;
|
|
4135
|
+
this.model.fileName = data.fileName;
|
|
4136
|
+
this.fileName = data.fileName;
|
|
4137
|
+
this.fileChanged = false;
|
|
4138
|
+
this.fileData = null;
|
|
4139
|
+
this.editingIndex = index;
|
|
4140
|
+
this.loadDocumentTypes();
|
|
4141
|
+
}
|
|
4142
|
+
selectFile(event) {
|
|
4143
|
+
this.fileData = event.target.files[0];
|
|
4144
|
+
if (this.fileData) {
|
|
4145
|
+
this.fileName = this.fileData.name;
|
|
4146
|
+
this.model.fileName = this.fileName;
|
|
4147
|
+
this.fileChanged = true; // ✅ important
|
|
3970
4148
|
}
|
|
3971
4149
|
}
|
|
4150
|
+
removeFile() {
|
|
4151
|
+
this.fileData = null;
|
|
4152
|
+
this.fileName = null;
|
|
4153
|
+
this.model.fileId = null;
|
|
4154
|
+
this.model.fileUrl = null;
|
|
4155
|
+
this.model.fileName = null;
|
|
4156
|
+
this.fileChanged = true;
|
|
4157
|
+
}
|
|
4158
|
+
hasChanges() {
|
|
4159
|
+
const current = this.certificateForm.getRawValue();
|
|
4160
|
+
const normalize = (data) => ({
|
|
4161
|
+
number: data.number ? String(data.number) : null,
|
|
4162
|
+
issuedBy: data.issuedBy || null,
|
|
4163
|
+
issuedState: data.issuedState || null,
|
|
4164
|
+
issueDate: data.issueDate
|
|
4165
|
+
? new Date(data.issueDate).toISOString()
|
|
4166
|
+
: null,
|
|
4167
|
+
expiryDate: data.expiryDate
|
|
4168
|
+
? new Date(data.expiryDate).toISOString()
|
|
4169
|
+
: null,
|
|
4170
|
+
notes: data.notes || null,
|
|
4171
|
+
documentTypeId: this.selectedDocumentId || null
|
|
4172
|
+
});
|
|
4173
|
+
const formattedCurrent = normalize(current);
|
|
4174
|
+
const formattedOriginal = normalize(this.originalFormValue);
|
|
4175
|
+
return (JSON.stringify(formattedCurrent) !== JSON.stringify(formattedOriginal) ||
|
|
4176
|
+
this.fileChanged);
|
|
4177
|
+
}
|
|
3972
4178
|
async saveAWSFile() {
|
|
3973
4179
|
const fileType = this.fileData.type;
|
|
3974
4180
|
const fileExtension = fileType.split('/')[1] || fileType.split('/')[0] || 'file';
|
|
@@ -4021,7 +4227,7 @@ class LicensesComponent {
|
|
|
4021
4227
|
targetProviderName: this.providerName,
|
|
4022
4228
|
providerId: this.providerId,
|
|
4023
4229
|
//userId: this.userId,
|
|
4024
|
-
userName: this.
|
|
4230
|
+
userName: this.user.fullName,
|
|
4025
4231
|
number: fullValue.number ? fullValue.number : 0,
|
|
4026
4232
|
issuedState: fullValue.issuedState ? fullValue.issuedState : null,
|
|
4027
4233
|
issuedBy: fullValue.issuedBy,
|
|
@@ -4036,10 +4242,10 @@ class LicensesComponent {
|
|
|
4036
4242
|
status: 2,
|
|
4037
4243
|
mainType: 1,
|
|
4038
4244
|
forUser: 2,
|
|
4039
|
-
userHeadShotUrl: this.
|
|
4245
|
+
userHeadShotUrl: this.user.headshotUrl,
|
|
4040
4246
|
isPrimary: false,
|
|
4041
|
-
emailId: this.
|
|
4042
|
-
phoneNumber: this.
|
|
4247
|
+
emailId: this.user.email,
|
|
4248
|
+
phoneNumber: this.user.phoneNumber,
|
|
4043
4249
|
profileVisibility: true,
|
|
4044
4250
|
notify: true,
|
|
4045
4251
|
nationwide: false
|
|
@@ -4097,33 +4303,6 @@ class LicensesComponent {
|
|
|
4097
4303
|
this.certificateForm.reset();
|
|
4098
4304
|
this.fileName = null;
|
|
4099
4305
|
}
|
|
4100
|
-
edit(index) {
|
|
4101
|
-
this.isEditing.set(true);
|
|
4102
|
-
const data = this.workStore.getExperience(index);
|
|
4103
|
-
if (!data)
|
|
4104
|
-
return;
|
|
4105
|
-
this.certificateForm.patchValue({
|
|
4106
|
-
number: data.number,
|
|
4107
|
-
issuedBy: data.issuedBy,
|
|
4108
|
-
issuedState: data.issuedState,
|
|
4109
|
-
issueDate: data.issueDate ? new Date(data.issueDate) : null,
|
|
4110
|
-
expiryDate: data.expiryDate ? new Date(data.expiryDate) : null,
|
|
4111
|
-
notes: data.notes,
|
|
4112
|
-
});
|
|
4113
|
-
this.selectedDocumentId = data.documentTypeId;
|
|
4114
|
-
this.model.fileUrl = data.fileUrl;
|
|
4115
|
-
this.model.fileName = data.fileName;
|
|
4116
|
-
this.fileName = data.fileName;
|
|
4117
|
-
this.editingIndex = index;
|
|
4118
|
-
this.loadDocumentTypes();
|
|
4119
|
-
}
|
|
4120
|
-
selectFile(event) {
|
|
4121
|
-
this.fileData = event.target.files[0];
|
|
4122
|
-
if (this.fileData) {
|
|
4123
|
-
this.fileName = this.fileData.name;
|
|
4124
|
-
this.model.fileName = this.fileName;
|
|
4125
|
-
}
|
|
4126
|
-
}
|
|
4127
4306
|
isChecked(id) {
|
|
4128
4307
|
return this.selectedDocumentId === id;
|
|
4129
4308
|
}
|
|
@@ -4133,18 +4312,20 @@ class LicensesComponent {
|
|
|
4133
4312
|
nextStep() {
|
|
4134
4313
|
this.store.nextStep();
|
|
4135
4314
|
}
|
|
4136
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: LicensesComponent, deps: [{ token: UserDocumentService }, { token: CredentialingStore }, { token: LicenseStore }, { token: i6.TokenService }, { token: PostalCodeServices }, { token:
|
|
4137
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: LicensesComponent, isStandalone: false, selector: "app-licenses", inputs: { providerId: "providerId", providerName: "providerName", cloudfrontUrl: "cloudfrontUrl" }, ngImport: i0, template: "<div class=\"education-container\" *ngIf=\"!showpreview()\">\r\n\r\n <h3>Add Licenses</h3>\r\n <p class=\"hint\">\r\n Recommended for your role\r\n </p>\r\n <div class=\"document-container\">\r\n <input type=\"text\" class=\"search-input\" placeholder=\"Search documents here...\" [formControl]=\"searchControl\" />\r\n <div class=\"grid\">\r\n <div *ngFor=\"let item of documentTypes\">\r\n <label class=\"checkbox-row\">\r\n <input type=\"checkbox\" [checked]=\"isChecked(item.id)\" (change)=\"toggleSelection(item, $event)\" />\r\n <span class=\"title\">{{ item.type }}</span>\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n <form [formGroup]=\"certificateForm\">\r\n <div class=\"row\" style=\"margin-top: 20px;\">\r\n <div class=\"field\">\r\n <div class=\"head\">License Number</div>\r\n <input type=\"text\" placeholder=\"Enter your License Number here\" formControlName=\"number\" />\r\n <small class=\"error\" *ngIf=\"certificateForm.get('number')?.touched &&\r\n certificateForm.get('number')?.hasError('required')\">\r\n License number is required\r\n </small>\r\n </div>\r\n\r\n <div class=\"field\">\r\n <div class=\"head\">License Issued By</div>\r\n <input type=\"text\" placeholder=\"Enter License Issued By here\" formControlName=\"issuedBy\" />\r\n <small class=\"error\" *ngIf=\"certificateForm.get('issuedBy')?.touched &&\r\n certificateForm.get('issuedBy')?.hasError('required')\">\r\n License issued by is required\r\n </small>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"field\">\r\n <div class=\"head\">Issued State</div>\r\n <ng-select formControlName=\"issuedState\" [items]=\"states\" bindLabel=\"stateName\" bindValue=\"stateCode\"\r\n placeholder=\"Select Issued State\">\r\n <ng-template ng-option-tmp let-item=\"item\" let-item$=\"item$\">\r\n <input class=\"form-check-input\" type=\"checkbox\" [checked]=\"item$.selected\" />\r\n {{ item.stateName }}\r\n </ng-template>\r\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\r\n <span class=\"ng-value-label\">\r\n {{ item.stateName }}\r\n </span>\r\n <span class=\"ng-value-icon right\" (click)=\"clear(item)\">\r\n <img src=\"/assets/images/icons/close-sm-circle.svg\" class=\"close-btn-select\" />\r\n </span>\r\n </ng-template>\r\n </ng-select>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"field\">\r\n <div class=\"mb-3 head\">\r\n <div class=\"head\">Issued Date</div>\r\n <input class=\"form-control date-time-filter\" placeholder=\"Issued On\" [maxDate]=\"maxDate\" bsDatepicker [bsConfig]=\"{ adaptivePosition: true, showWeekNumbers: false,\r\n isAnimated: true, customTodayClass: !certificateForm.get('issueDate')?.value ? 'today-highlight' : '' }\"\r\n formControlName=\"issueDate\" (bsValueChange)=\"onPreferredDateChange($event)\">\r\n <small class=\"error\" *ngIf=\"certificateForm.get('issueDate')?.touched &&\r\n certificateForm.get('issueDate')?.hasError('required')\">\r\n Issued date is required\r\n </small>\r\n </div>\r\n </div>\r\n\r\n <div class=\"field\">\r\n <div class=\"mb-3 head\">\r\n <div class=\"head\">Expiration Date</div>\r\n <input class=\"form-control date-time-filter\" placeholder=\"Expired On\" [maxDate]=\"maxDate\" bsDatepicker [bsConfig]=\"{ adaptivePosition: true,showWeekNumbers: false, isAnimated: true, \r\n customTodayClass: !certificateForm.get('expiryDate')?.value ? 'today-highlight' : '' }\"\r\n formControlName=\"expiryDate\" (bsValueChange)=\"onPreferredDateChange($event)\">\r\n <small class=\"error\" *ngIf=\"certificateForm.get('expiryDate')?.touched &&\r\n certificateForm.get('expiryDate')?.hasError('required')\">\r\n Expiry date is required\r\n </small>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"field full-width\">\r\n <div class=\"head\">Comments</div>\r\n <textarea placeholder=\"Description\" formControlName=\"notes\">\r\n </textarea>\r\n </div>\r\n </div>\r\n </form>\r\n <div class=\"row\">\r\n <div class=\"upload-wrapper\">\r\n <p class=\"upload-title\">Upload</p>\r\n <p class=\"upload-subtitle\">Add licenses below</p>\r\n <button type=\"button\" class=\"upload-btn\" (click)=\"fileInput.click()\">\r\n Upload Licenses\r\n </button>\r\n <input #fileInput type=\"file\" accept=\".pdf,.doc,.docx\" (change)=\"selectFile($event)\" hidden />\r\n <p class=\"file-name\" *ngIf=\"fileName\">\r\n Selected: {{ fileName }}\r\n </p>\r\n </div>\r\n </div>\r\n <div class=\"action\">\r\n <button type=\"button\" class=\"secondary\" (click)=\"back()\">Back</button>\r\n <div class=\"right-actions\">\r\n <button type=\"button\" class=\"secondary\" (click)=\"nextStep()\">\r\n Skip\r\n </button>\r\n <button type=\"button\" class=\"primary\" [disabled]=\"proposalLoader\" [ng2-loading]=\"proposalLoader\"\r\n (click)=\"saveFile()\">\r\n Continue\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"work-preview\" *ngIf=\"showpreview()\">\r\n <div class=\"preview-header\" >\r\n <h3>Licenses Preview</h3>\r\n </div>\r\n <div class=\"accordion\" style=\"margin: 20px 100px;\">\r\n <div *ngFor=\"let exp of workStore.experiences(); let i = index\" style=\"margin-bottom: 20px;\"\r\n class=\"accordion-item border-0\">\r\n\r\n <h2 class=\"accordion-header\">\r\n <button class=\"accordion-button collapsed\" type=\"button\" data-bs-toggle=\"collapse\"\r\n [attr.data-bs-target]=\"'#edu_' + i\">\r\n <span class=\"accordion-title\">\r\n {{ exp.documentTypeName }}\r\n </span>\r\n <span class=\"accordion-actions\">\r\n <img src=\"/assets/images/icons/edit-text.png\" class=\"edit-icon icon-color\"\r\n (click)=\"edit(i); $event.stopPropagation()\" alt=\"Edit\" />\r\n </span>\r\n </button>\r\n </h2>\r\n <div [id]=\"'edu_' + i\" class=\"accordion-collapse collapse\" style=\"margin-bottom: 20px;\">\r\n <div class=\"accordion-body\">\r\n <div class=\"detail-grid\">\r\n <div>\r\n <strong>License Name</strong><br />\r\n <span class=\"job-title\"> {{ exp.documentTypeName }}</span>\r\n </div>\r\n <div>\r\n <strong>License Number</strong><br />\r\n <span class=\"job-title\"> {{ exp.number }}</span>\r\n </div>\r\n <div>\r\n <strong>Issued By</strong><br />\r\n <span class=\"job-title\"> {{ exp.issuedBy }}</span>\r\n </div>\r\n <div>\r\n <strong>Issued State</strong><br />\r\n <span class=\"job-title\"> {{ exp.issuedState | stateName }}</span>\r\n </div>\r\n <div>\r\n <strong>Issued Date</strong><br />\r\n <span class=\"job-title\"> {{ exp.issueDate | date:'MM/dd/yyyy' }} </span>\r\n </div>\r\n <div>\r\n <strong>Expiry Date</strong><br />\r\n <span class=\"job-title\"> {{ exp.expiryDate | date:'MM/dd/yyyy' }}</span>\r\n </div>\r\n\r\n <div *ngIf=\"exp.fileUrl\" class=\"full-width\">\r\n <strong>Document</strong><br />\r\n <a [href]=\"cloudfrontUrl+exp.fileUrl\" target=\"_blank\">\r\n <span class=\"job-title\"> {{ exp.fileName }}</span>\r\n </a>\r\n </div>\r\n </div>\r\n <div class=\"full-width mt-3\">\r\n <strong>Description</strong><br />\r\n <span class=\"job-title\"> {{ exp.notes }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"actions\">\r\n <button type=\"button\" class=\"secondary\" (click)=\"back()\">Back</button>\r\n <div class=\"right-actions\">\r\n <button type=\"button\" class=\"primary add-btn\" (click)=\"add()\" style=\"background-color: #1f4d5f;\">\r\n Add More Licenses\r\n </button>\r\n <button type=\"button\" class=\"primary\" (click)=\"nextStep()\">\r\n Continue\r\n </button>\r\n </div>\r\n </div>\r\n</div>", styles: [".education-container{max-width:1000px;margin:0 auto;padding:24px 16px;min-height:300px}h3{font-size:23px;font-weight:600;margin-bottom:4px}.hint{font-size:14px;color:#6b7280;margin-bottom:24px}.row{display:flex;margin-bottom:16px}.field{flex:1;display:flex;flex-direction:column}.field.full-width{flex:1 1 100%}input[type=text],input[type=email],input[type=number],input[type=password],select,textarea{padding:10px 12px;border:2px solid #d1d5db;border-radius:4px;font-size:13px;outline:none;box-sizing:border-box;color:#374151}::ng-deep .ng-select.ng-select-single .ng-select-container{height:45px}::ng-deep .ng-select.ng-select-single .ng-select-container .ng-value-container .ng-placeholder{top:10px}textarea{height:90px;resize:none}.error{margin-top:4px;font-size:12px;color:#dc2626}.actions{display:flex;justify-content:space-between;margin:70px 0 40px}button{height:44px;min-width:120px;border-radius:4px;border:none;font-size:14px;cursor:pointer}button.primary{background-color:#4077ad;color:#fff}button.secondary{background-color:#f3f4f6;color:#374151}button:disabled{background-color:#9ca3af;cursor:not-allowed}.head{color:#6b7280;font-size:14px;font-weight:500;margin-bottom:5px}::ng-deep .today-highlight{color:#fff!important;background:#1e2541!important}.form-row{display:flex}.field{display:flex;flex-direction:column}.field.city{flex:0 0 50%}.field.date{flex:0 0 25%}::ng-deep .ng-select .ng-select-container .ng-value-container .ng-placeholder{color:#757575;font-size:14px}.close-btn-select{width:16px;height:16px;color:#00f;display:inline-block}.upload-wrapper{margin-top:37px}.upload-title{font-weight:600;margin-bottom:4px}.upload-subtitle{font-size:13px;color:#6c757d;margin-bottom:12px}.upload-btn{background-color:#1f4d5f;color:#fff;border:none;padding:10px 18px;border-radius:6px;font-size:14px;cursor:pointer}.upload-btn:hover{background-color:#173b4a}.file-name{margin-top:8px;font-size:13px;color:#495057}.right-actions{display:flex;gap:16px}.date-time-filter{padding-right:40px;background-image:url(/assets/images/icons/calendar.svg);background-repeat:no-repeat;background-position:right 12px center;background-size:18px 18px;cursor:pointer}.document-container{max-width:1100px;margin:auto}.search-input{width:100%;max-width:400px;height:44px;margin-bottom:16px}.grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.card{display:flex;align-items:center;min-height:48px}.checkbox{margin-top:4px}.checkbox-row{display:flex;align-items:center;gap:8px;cursor:pointer}.content .title{font-weight:600;font-size:14px}.checkbox-row input{margin:0}.title{font-size:14px;font-weight:600}.content .desc{font-size:12px;color:#666;margin-top:4px}.save-btn{margin-top:20px;padding:10px 18px;border-radius:6px;border:none;background:#4077ad;color:#fff;cursor:pointer}@media (max-width: 1024px){.grid{grid-template-columns:repeat(2,1fr)}}@media (max-width: 600px){.grid{grid-template-columns:1fr}}::ng-deep ng-dropdown-panel input[type=checkbox]{margin-right:0!important;padding:9px;margin-top:0}.form-check-input:checked{color:#fff!important;border-color:#2980b9!important;background-color:#2980b9!important}::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-option{font-size:14px}::ng-deep .ng-value-label{font-size:14px}::ng-deep .bs-datepicker-head{background-color:#1e2541!important}::ng-deep .theme-green .bs-datepicker-body table td span.selected,.theme-green .bs-datepicker-body table td.selected span,.theme-green .bs-datepicker-body table td span[class*=select-]:after,.theme-green .bs-datepicker-body table td[class*=select-] span:after{background-color:#1e2541!important}.work-preview{max-width:1000px;padding:20px;margin:15px auto;background-color:#f4f6f8;font-family:Segoe UI,Arial,sans-serif}.preview-card{position:relative;background-color:#fff;border-radius:8px;box-shadow:0 3px 8px #0000001a;padding:20px 25px;margin-bottom:20px;transition:box-shadow .2s ease}.preview-card:hover{box-shadow:0 6px 15px #00000026}.edit-btn{position:absolute;top:15px;right:15px;width:20px;height:20px;cursor:pointer}.card-top h4{margin:0;font-size:18px;color:#1f4d5f}.card-top .job-title{display:block;font-size:14px;color:#555;margin-top:2px}.card-meta{margin:10px 0;font-size:13px;color:#777;display:flex;justify-content:space-between}.card-meta .dates{font-style:italic}.job-description{font-size:14px;color:#333;line-height:1.5;margin-bottom:8px}.file-link{font-size:13px;color:#4077ad;text-decoration:underline;display:inline-block;margin-top:5px}.actions{display:flex;justify-content:space-between;margin:50px 100px 20px}.action{display:flex;justify-content:space-between;margin:50px 0 20px}button.secondary{background-color:#e0e0e0;color:#6c757dc7;padding:8px 20px;border:none;border-radius:6px;cursor:pointer}button.primary{background-color:#4077ad;color:#fff;padding:8px 20px;border:none;border-radius:6px;cursor:pointer}@media (max-width: 600px){.preview-card{padding:15px}.edit-btn{top:10px;right:10px;width:18px;height:18px}.card-meta{flex-direction:column;gap:3px}}.icon-color{cursor:pointer;width:20px;height:20px;transition:transform .3s ease;filter:brightness(0) saturate(100%) invert(48%) sepia(8%) saturate(350%) hue-rotate(170deg) brightness(92%) contrast(88%)}.icon-color.edit{width:18px;height:18px}.detail-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.accordion-button{display:flex;align-items:center}.accordion-title{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.accordion-actions{display:flex;align-items:center;margin-right:12px}.edit-icon{cursor:pointer}::ng-deep .accordion-item:first-of-type>.accordion-header .accordion-button{margin-bottom:20px}.job-title{color:#6c757d;font-weight:400;font-size:14px}.preview-header{margin-left:350px}.accordion{margin:20px 100px}.add-btn{width:200px}@media screen and (max-width: 767px){.hint{margin-bottom:7px}.date-time-filter{font-size:14px}.search-input{margin-bottom:0}.right-actions{gap:5px}.preview-header{margin-left:0}.accordion{margin:20px 0!important}.actions{flex-direction:column-reverse;gap:7px;margin:50px 0 20px}.right-actions{gap:5px;flex-direction:column-reverse}.add-btn{width:unset}.action{display:flex;flex-direction:column-reverse;gap:5px}}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i10.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "directive", type: i10.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }, { kind: "directive", type: i10.NgLabelTemplateDirective, selector: "[ng-label-tmp]" }, { kind: "directive", type: i11.BsDatepickerDirective, selector: "[bsDatepicker]", inputs: ["placement", "triggers", "outsideClick", "container", "outsideEsc", "isDisabled", "minDate", "maxDate", "ignoreMinMaxErrors", "minMode", "daysDisabled", "datesDisabled", "datesEnabled", "dateCustomClasses", "dateTooltipTexts", "isOpen", "bsValue", "bsConfig"], outputs: ["onShown", "onHidden", "bsValueChange"], exportAs: ["bsDatepicker"] }, { kind: "directive", type: i11.BsDatepickerInputDirective, selector: "input[bsDatepicker]" }, { kind: "directive", type: Ng2LoadingSpinnerDirective, selector: "[ng2-loading]", inputs: ["ng2-loading", "config", "template"] }, { kind: "pipe", type: i1$1.DatePipe, name: "date" }, { kind: "pipe", type: StateNamePipe, name: "stateName" }] });
|
|
4315
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: LicensesComponent, deps: [{ token: UserDocumentService }, { token: UserService }, { token: CredentialingStore }, { token: LicenseStore }, { token: i6.TokenService }, { token: PostalCodeServices }, { token: i8.FormBuilder }, { token: FileService }, { token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Component });
|
|
4316
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: LicensesComponent, isStandalone: false, selector: "app-licenses", inputs: { providerId: "providerId", providerName: "providerName", cloudfrontUrl: "cloudfrontUrl", states: "states" }, ngImport: i0, template: "<div class=\"education-container\" *ngIf=\"!showpreview()\">\r\n\r\n <h3>Add Licenses</h3>\r\n <p class=\"hint\">\r\n Recommended for your role\r\n </p>\r\n <div class=\"document-container\">\r\n <input type=\"text\" class=\"search-input\" placeholder=\"Search documents here...\" [formControl]=\"searchControl\" />\r\n <div class=\"grid\">\r\n <div *ngFor=\"let item of documentTypes\">\r\n <label class=\"checkbox-row\">\r\n <input type=\"checkbox\" [checked]=\"isChecked(item.id)\" (change)=\"toggleSelection(item, $event)\" />\r\n <span class=\"title\">{{ item.type }}</span>\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n <form [formGroup]=\"certificateForm\">\r\n <div class=\"row\" style=\"margin-top: 20px;\">\r\n <div class=\"field\">\r\n <div class=\"head\">License Number</div>\r\n <input type=\"text\" placeholder=\"Enter your License Number here\" formControlName=\"number\" />\r\n <small class=\"error\" *ngIf=\"certificateForm.get('number')?.touched &&\r\n certificateForm.get('number')?.hasError('required')\">\r\n License number is required\r\n </small>\r\n </div>\r\n\r\n <div class=\"field\">\r\n <div class=\"head\">License Issued By</div>\r\n <input type=\"text\" placeholder=\"Enter License Issued By here\" formControlName=\"issuedBy\" />\r\n <small class=\"error\" *ngIf=\"certificateForm.get('issuedBy')?.touched &&\r\n certificateForm.get('issuedBy')?.hasError('required')\">\r\n License issued by is required\r\n </small>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"field\">\r\n <div class=\"head\">Issued State</div>\r\n <ng-select formControlName=\"issuedState\" [items]=\"states\" bindLabel=\"stateName\" bindValue=\"stateCode\"\r\n placeholder=\"Select Issued State\">\r\n <ng-template ng-option-tmp let-item=\"item\" let-item$=\"item$\">\r\n <input class=\"form-check-input\" type=\"checkbox\" [checked]=\"item$.selected\" />\r\n {{ item.stateName }}\r\n </ng-template>\r\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\r\n <span class=\"ng-value-label\">\r\n {{ item.stateName }}\r\n </span>\r\n <span class=\"ng-value-icon right\" (click)=\"clear(item)\">\r\n <img src=\"/assets/images/icons/close-sm-circle.svg\" class=\"close-btn-select\" />\r\n </span>\r\n </ng-template>\r\n </ng-select>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"field\">\r\n <div class=\"mb-3 head\">\r\n <div class=\"head\">Issued Date</div>\r\n <input class=\"form-control date-time-filter\" placeholder=\"Issued On\" [maxDate]=\"maxDate\" bsDatepicker [bsConfig]=\"{ adaptivePosition: true, showWeekNumbers: false,\r\n isAnimated: true, customTodayClass: !certificateForm.get('issueDate')?.value ? 'today-highlight' : '' }\"\r\n formControlName=\"issueDate\" (bsValueChange)=\"onPreferredDateChange($event)\">\r\n <small class=\"error\" *ngIf=\"certificateForm.get('issueDate')?.touched &&\r\n certificateForm.get('issueDate')?.hasError('required')\">\r\n Issued date is required\r\n </small>\r\n </div>\r\n </div>\r\n\r\n <div class=\"field\">\r\n <div class=\"mb-3 head\">\r\n <div class=\"head\">Expiration Date</div>\r\n <input class=\"form-control date-time-filter\" placeholder=\"Expired On\" [maxDate]=\"maxDate\" bsDatepicker [bsConfig]=\"{ adaptivePosition: true,showWeekNumbers: false, isAnimated: true, \r\n customTodayClass: !certificateForm.get('expiryDate')?.value ? 'today-highlight' : '' }\"\r\n formControlName=\"expiryDate\" (bsValueChange)=\"onPreferredDateChange($event)\">\r\n <small class=\"error\" *ngIf=\"certificateForm.get('expiryDate')?.touched &&\r\n certificateForm.get('expiryDate')?.hasError('required')\">\r\n Expiry date is required\r\n </small>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"field full-width\">\r\n <div class=\"head\">Comments</div>\r\n <textarea placeholder=\"Description\" formControlName=\"notes\">\r\n </textarea>\r\n </div>\r\n </div>\r\n </form>\r\n <div class=\"row\">\r\n <div class=\"upload-wrapper\">\r\n <p class=\"upload-title\">Upload</p>\r\n <p class=\"upload-subtitle\">Add licenses below</p>\r\n <button type=\"button\" class=\"upload-btn\" (click)=\"fileInput.click()\">\r\n Upload Licenses\r\n </button>\r\n <input #fileInput type=\"file\" accept=\".pdf,.doc,.docx\" (change)=\"selectFile($event)\" hidden />\r\n <p class=\"file-name\" *ngIf=\"fileName\">\r\n Selected: {{ fileName }}\r\n <span class=\"remove-file\" style=\"cursor: pointer;\" (click)=\"removeFile()\">\u2716</span>\r\n</p>\r\n </div>\r\n </div>\r\n <div class=\"action\">\r\n <button type=\"button\" class=\"secondary\" (click)=\"back()\">Back</button>\r\n <div class=\"right-actions\">\r\n <button type=\"button\" class=\"secondary\" (click)=\"nextStep()\">\r\n Skip\r\n </button>\r\n <button type=\"button\" class=\"primary\" [disabled]=\"proposalLoader\" [ng2-loading]=\"proposalLoader\"\r\n (click)=\"saveFile()\">\r\n Continue\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"work-preview\" *ngIf=\"showpreview()\">\r\n <div class=\"preview-header\" >\r\n <h3>Licenses Preview</h3>\r\n </div>\r\n <div class=\"accordion\" style=\"margin: 20px 100px;\">\r\n <div *ngFor=\"let exp of workStore.experiences(); let i = index\" style=\"margin-bottom: 20px;\"\r\n class=\"accordion-item border-0\">\r\n\r\n <h2 class=\"accordion-header\">\r\n <button class=\"accordion-button collapsed\" type=\"button\" data-bs-toggle=\"collapse\"\r\n [attr.data-bs-target]=\"'#edu_' + i\">\r\n <span class=\"accordion-title\">\r\n {{ exp.documentTypeName }}\r\n </span>\r\n <span class=\"accordion-actions\">\r\n <img src=\"/assets/images/icons/edit-text.png\" class=\"edit-icon icon-color\"\r\n (click)=\"edit(i); $event.stopPropagation()\" alt=\"Edit\" />\r\n </span>\r\n </button>\r\n </h2>\r\n <div [id]=\"'edu_' + i\" class=\"accordion-collapse collapse\" style=\"margin-bottom: 20px;\">\r\n <div class=\"accordion-body\">\r\n <div class=\"detail-grid\">\r\n <div>\r\n <strong>License Name</strong><br />\r\n <span class=\"job-title\"> {{ exp.documentTypeName }}</span>\r\n </div>\r\n <div>\r\n <strong>License Number</strong><br />\r\n <span class=\"job-title\"> {{ exp.number }}</span>\r\n </div>\r\n <div>\r\n <strong>Issued By</strong><br />\r\n <span class=\"job-title\"> {{ exp.issuedBy }}</span>\r\n </div>\r\n <div>\r\n <strong>Issued State</strong><br />\r\n <span class=\"job-title\"> {{ exp.issuedState | stateName }}</span>\r\n </div>\r\n <div>\r\n <strong>Issued Date</strong><br />\r\n <span class=\"job-title\"> {{ exp.issueDate | date:'MM/dd/yyyy' }} </span>\r\n </div>\r\n <div>\r\n <strong>Expiry Date</strong><br />\r\n <span class=\"job-title\"> {{ exp.expiryDate | date:'MM/dd/yyyy' }}</span>\r\n </div>\r\n\r\n <div *ngIf=\"exp.fileUrl\" class=\"full-width\">\r\n <strong>Document</strong><br />\r\n <a [href]=\"cloudfrontUrl+exp.fileUrl\" target=\"_blank\">\r\n <span class=\"job-title\"> {{ exp.fileName }}</span>\r\n </a>\r\n </div>\r\n </div>\r\n <div class=\"full-width mt-3\">\r\n <strong>Description</strong><br />\r\n <span class=\"job-title\"> {{ exp.notes }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"actions\">\r\n <button type=\"button\" class=\"secondary\" (click)=\"back()\">Back</button>\r\n <div class=\"right-actions\">\r\n <button type=\"button\" class=\"primary add-btn\" (click)=\"add()\" style=\"background-color: #1f4d5f;\">\r\n Add More Licenses\r\n </button>\r\n <button type=\"button\" class=\"primary\" (click)=\"nextStep()\">\r\n Continue\r\n </button>\r\n </div>\r\n </div>\r\n</div>", styles: [".education-container{max-width:1000px;margin:0 auto;padding:24px 16px;min-height:300px}h3{font-size:23px;font-weight:600;margin-bottom:4px}.hint{font-size:14px;color:#6b7280;margin-bottom:24px}.row{display:flex;margin-bottom:16px}.field{flex:1;display:flex;flex-direction:column}.field.full-width{flex:1 1 100%}input[type=text],input[type=email],input[type=number],input[type=password],select,textarea{padding:10px 12px;border:2px solid #d1d5db;border-radius:4px;font-size:13px;outline:none;box-sizing:border-box;color:#374151}::ng-deep .ng-select.ng-select-single .ng-select-container{height:45px}::ng-deep .ng-select.ng-select-single .ng-select-container .ng-value-container .ng-placeholder{top:10px}textarea{height:90px;resize:none}.error{margin-top:4px;font-size:12px;color:#dc2626}.actions{display:flex;justify-content:space-between;margin:70px 0 40px}button{height:44px;min-width:120px;border-radius:4px;border:none;font-size:14px;cursor:pointer}button.primary{background-color:#4077ad;color:#fff}button.secondary{background-color:#f3f4f6;color:#374151}button:disabled{background-color:#9ca3af;cursor:not-allowed}.head{color:#6b7280;font-size:14px;font-weight:500;margin-bottom:5px}::ng-deep .today-highlight{color:#fff!important;background:#1e2541!important}.form-row{display:flex}.field{display:flex;flex-direction:column}.field.city{flex:0 0 50%}.field.date{flex:0 0 25%}::ng-deep .ng-select .ng-select-container .ng-value-container .ng-placeholder{color:#757575;font-size:14px}.close-btn-select{width:16px;height:16px;color:#00f;display:inline-block}.upload-wrapper{margin-top:37px}.upload-title{font-weight:600;margin-bottom:4px}.upload-subtitle{font-size:13px;color:#6c757d;margin-bottom:12px}.upload-btn{background-color:#1f4d5f;color:#fff;border:none;padding:10px 18px;border-radius:6px;font-size:14px;cursor:pointer}.upload-btn:hover{background-color:#173b4a}.file-name{margin-top:8px;font-size:13px;color:#495057}.right-actions{display:flex;gap:16px}.date-time-filter{padding-right:40px;background-image:url(/assets/images/icons/calendar.svg);background-repeat:no-repeat;background-position:right 12px center;background-size:18px 18px;cursor:pointer}.document-container{max-width:1100px;margin:auto}.search-input{width:100%;max-width:400px;height:44px;margin-bottom:16px}.grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.card{display:flex;align-items:center;min-height:48px}.checkbox{margin-top:4px}.checkbox-row{display:flex;align-items:center;gap:8px;cursor:pointer}.content .title{font-weight:600;font-size:14px}.checkbox-row input{margin:0}.title{font-size:14px;font-weight:600}.content .desc{font-size:12px;color:#666;margin-top:4px}.save-btn{margin-top:20px;padding:10px 18px;border-radius:6px;border:none;background:#4077ad;color:#fff;cursor:pointer}@media (max-width: 1024px){.grid{grid-template-columns:repeat(2,1fr)}}@media (max-width: 600px){.grid{grid-template-columns:1fr}}::ng-deep ng-dropdown-panel input[type=checkbox]{margin-right:0!important;padding:9px;margin-top:0}.form-check-input:checked{color:#fff!important;border-color:#2980b9!important;background-color:#2980b9!important}::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-option{font-size:14px}::ng-deep .ng-value-label{font-size:14px}::ng-deep .bs-datepicker-head{background-color:#1e2541!important}::ng-deep .theme-green .bs-datepicker-body table td span.selected,.theme-green .bs-datepicker-body table td.selected span,.theme-green .bs-datepicker-body table td span[class*=select-]:after,.theme-green .bs-datepicker-body table td[class*=select-] span:after{background-color:#1e2541!important}.work-preview{max-width:1000px;padding:20px;margin:15px auto;background-color:#f4f6f8;font-family:Segoe UI,Arial,sans-serif}.preview-card{position:relative;background-color:#fff;border-radius:8px;box-shadow:0 3px 8px #0000001a;padding:20px 25px;margin-bottom:20px;transition:box-shadow .2s ease}.preview-card:hover{box-shadow:0 6px 15px #00000026}.edit-btn{position:absolute;top:15px;right:15px;width:20px;height:20px;cursor:pointer}.card-top h4{margin:0;font-size:18px;color:#1f4d5f}.card-top .job-title{display:block;font-size:14px;color:#555;margin-top:2px}.card-meta{margin:10px 0;font-size:13px;color:#777;display:flex;justify-content:space-between}.card-meta .dates{font-style:italic}.job-description{font-size:14px;color:#333;line-height:1.5;margin-bottom:8px}.file-link{font-size:13px;color:#4077ad;text-decoration:underline;display:inline-block;margin-top:5px}.actions{display:flex;justify-content:space-between;margin:50px 100px 20px}.action{display:flex;justify-content:space-between;margin:50px 0 20px}button.secondary{background-color:#e0e0e0;color:#6c757dc7;padding:8px 20px;border:none;border-radius:6px;cursor:pointer}button.primary{background-color:#4077ad;color:#fff;padding:8px 20px;border:none;border-radius:6px;cursor:pointer}@media (max-width: 600px){.preview-card{padding:15px}.edit-btn{top:10px;right:10px;width:18px;height:18px}.card-meta{flex-direction:column;gap:3px}}.icon-color{cursor:pointer;width:20px;height:20px;transition:transform .3s ease;filter:brightness(0) saturate(100%) invert(48%) sepia(8%) saturate(350%) hue-rotate(170deg) brightness(92%) contrast(88%)}.icon-color.edit{width:18px;height:18px}.detail-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.accordion-button{display:flex;align-items:center}.accordion-title{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.accordion-actions{display:flex;align-items:center;margin-right:12px}.edit-icon{cursor:pointer}::ng-deep .accordion-item:first-of-type>.accordion-header .accordion-button{margin-bottom:20px}.job-title{color:#6c757d;font-weight:400;font-size:14px}.preview-header{margin-left:350px}.accordion{margin:20px 100px}.add-btn{width:200px}@media screen and (max-width: 767px){.hint{margin-bottom:7px}.date-time-filter{font-size:14px}.search-input{margin-bottom:0}.right-actions{gap:5px}.preview-header{margin-left:0}.accordion{margin:20px 0!important}.actions{flex-direction:column-reverse;gap:7px;margin:50px 0 20px}.right-actions{gap:5px;flex-direction:column-reverse}.add-btn{width:unset}.action{display:flex;flex-direction:column-reverse;gap:5px}}.remove-file{margin-left:10px;cursor:pointer;color:red;font-weight:700}\n"], dependencies: [{ kind: "directive", type: i11.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i8.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i8.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: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i8.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i8.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i8.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i12.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "directive", type: i12.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }, { kind: "directive", type: i12.NgLabelTemplateDirective, selector: "[ng-label-tmp]" }, { kind: "directive", type: i12$1.BsDatepickerDirective, selector: "[bsDatepicker]", inputs: ["placement", "triggers", "outsideClick", "container", "outsideEsc", "isDisabled", "minDate", "maxDate", "ignoreMinMaxErrors", "minMode", "daysDisabled", "datesDisabled", "datesEnabled", "dateCustomClasses", "dateTooltipTexts", "isOpen", "bsValue", "bsConfig"], outputs: ["onShown", "onHidden", "bsValueChange"], exportAs: ["bsDatepicker"] }, { kind: "directive", type: i12$1.BsDatepickerInputDirective, selector: "input[bsDatepicker]" }, { kind: "directive", type: Ng2LoadingSpinnerDirective, selector: "[ng2-loading]", inputs: ["ng2-loading", "config", "template"] }, { kind: "pipe", type: i11.DatePipe, name: "date" }, { kind: "pipe", type: StateNamePipe, name: "stateName" }] });
|
|
4138
4317
|
}
|
|
4139
4318
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: LicensesComponent, decorators: [{
|
|
4140
4319
|
type: Component,
|
|
4141
|
-
args: [{ selector: 'app-licenses', standalone: false, template: "<div class=\"education-container\" *ngIf=\"!showpreview()\">\r\n\r\n <h3>Add Licenses</h3>\r\n <p class=\"hint\">\r\n Recommended for your role\r\n </p>\r\n <div class=\"document-container\">\r\n <input type=\"text\" class=\"search-input\" placeholder=\"Search documents here...\" [formControl]=\"searchControl\" />\r\n <div class=\"grid\">\r\n <div *ngFor=\"let item of documentTypes\">\r\n <label class=\"checkbox-row\">\r\n <input type=\"checkbox\" [checked]=\"isChecked(item.id)\" (change)=\"toggleSelection(item, $event)\" />\r\n <span class=\"title\">{{ item.type }}</span>\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n <form [formGroup]=\"certificateForm\">\r\n <div class=\"row\" style=\"margin-top: 20px;\">\r\n <div class=\"field\">\r\n <div class=\"head\">License Number</div>\r\n <input type=\"text\" placeholder=\"Enter your License Number here\" formControlName=\"number\" />\r\n <small class=\"error\" *ngIf=\"certificateForm.get('number')?.touched &&\r\n certificateForm.get('number')?.hasError('required')\">\r\n License number is required\r\n </small>\r\n </div>\r\n\r\n <div class=\"field\">\r\n <div class=\"head\">License Issued By</div>\r\n <input type=\"text\" placeholder=\"Enter License Issued By here\" formControlName=\"issuedBy\" />\r\n <small class=\"error\" *ngIf=\"certificateForm.get('issuedBy')?.touched &&\r\n certificateForm.get('issuedBy')?.hasError('required')\">\r\n License issued by is required\r\n </small>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"field\">\r\n <div class=\"head\">Issued State</div>\r\n <ng-select formControlName=\"issuedState\" [items]=\"states\" bindLabel=\"stateName\" bindValue=\"stateCode\"\r\n placeholder=\"Select Issued State\">\r\n <ng-template ng-option-tmp let-item=\"item\" let-item$=\"item$\">\r\n <input class=\"form-check-input\" type=\"checkbox\" [checked]=\"item$.selected\" />\r\n {{ item.stateName }}\r\n </ng-template>\r\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\r\n <span class=\"ng-value-label\">\r\n {{ item.stateName }}\r\n </span>\r\n <span class=\"ng-value-icon right\" (click)=\"clear(item)\">\r\n <img src=\"/assets/images/icons/close-sm-circle.svg\" class=\"close-btn-select\" />\r\n </span>\r\n </ng-template>\r\n </ng-select>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"field\">\r\n <div class=\"mb-3 head\">\r\n <div class=\"head\">Issued Date</div>\r\n <input class=\"form-control date-time-filter\" placeholder=\"Issued On\" [maxDate]=\"maxDate\" bsDatepicker [bsConfig]=\"{ adaptivePosition: true, showWeekNumbers: false,\r\n isAnimated: true, customTodayClass: !certificateForm.get('issueDate')?.value ? 'today-highlight' : '' }\"\r\n formControlName=\"issueDate\" (bsValueChange)=\"onPreferredDateChange($event)\">\r\n <small class=\"error\" *ngIf=\"certificateForm.get('issueDate')?.touched &&\r\n certificateForm.get('issueDate')?.hasError('required')\">\r\n Issued date is required\r\n </small>\r\n </div>\r\n </div>\r\n\r\n <div class=\"field\">\r\n <div class=\"mb-3 head\">\r\n <div class=\"head\">Expiration Date</div>\r\n <input class=\"form-control date-time-filter\" placeholder=\"Expired On\" [maxDate]=\"maxDate\" bsDatepicker [bsConfig]=\"{ adaptivePosition: true,showWeekNumbers: false, isAnimated: true, \r\n customTodayClass: !certificateForm.get('expiryDate')?.value ? 'today-highlight' : '' }\"\r\n formControlName=\"expiryDate\" (bsValueChange)=\"onPreferredDateChange($event)\">\r\n <small class=\"error\" *ngIf=\"certificateForm.get('expiryDate')?.touched &&\r\n certificateForm.get('expiryDate')?.hasError('required')\">\r\n Expiry date is required\r\n </small>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"field full-width\">\r\n <div class=\"head\">Comments</div>\r\n <textarea placeholder=\"Description\" formControlName=\"notes\">\r\n </textarea>\r\n </div>\r\n </div>\r\n </form>\r\n <div class=\"row\">\r\n <div class=\"upload-wrapper\">\r\n <p class=\"upload-title\">Upload</p>\r\n <p class=\"upload-subtitle\">Add licenses below</p>\r\n <button type=\"button\" class=\"upload-btn\" (click)=\"fileInput.click()\">\r\n Upload Licenses\r\n </button>\r\n <input #fileInput type=\"file\" accept=\".pdf,.doc,.docx\" (change)=\"selectFile($event)\" hidden />\r\n <p class=\"file-name\" *ngIf=\"fileName\">\r\n Selected: {{ fileName }}\r\n </p>\r\n </div>\r\n </div>\r\n <div class=\"action\">\r\n <button type=\"button\" class=\"secondary\" (click)=\"back()\">Back</button>\r\n <div class=\"right-actions\">\r\n <button type=\"button\" class=\"secondary\" (click)=\"nextStep()\">\r\n Skip\r\n </button>\r\n <button type=\"button\" class=\"primary\" [disabled]=\"proposalLoader\" [ng2-loading]=\"proposalLoader\"\r\n (click)=\"saveFile()\">\r\n Continue\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"work-preview\" *ngIf=\"showpreview()\">\r\n <div class=\"preview-header\" >\r\n <h3>Licenses Preview</h3>\r\n </div>\r\n <div class=\"accordion\" style=\"margin: 20px 100px;\">\r\n <div *ngFor=\"let exp of workStore.experiences(); let i = index\" style=\"margin-bottom: 20px;\"\r\n class=\"accordion-item border-0\">\r\n\r\n <h2 class=\"accordion-header\">\r\n <button class=\"accordion-button collapsed\" type=\"button\" data-bs-toggle=\"collapse\"\r\n [attr.data-bs-target]=\"'#edu_' + i\">\r\n <span class=\"accordion-title\">\r\n {{ exp.documentTypeName }}\r\n </span>\r\n <span class=\"accordion-actions\">\r\n <img src=\"/assets/images/icons/edit-text.png\" class=\"edit-icon icon-color\"\r\n (click)=\"edit(i); $event.stopPropagation()\" alt=\"Edit\" />\r\n </span>\r\n </button>\r\n </h2>\r\n <div [id]=\"'edu_' + i\" class=\"accordion-collapse collapse\" style=\"margin-bottom: 20px;\">\r\n <div class=\"accordion-body\">\r\n <div class=\"detail-grid\">\r\n <div>\r\n <strong>License Name</strong><br />\r\n <span class=\"job-title\"> {{ exp.documentTypeName }}</span>\r\n </div>\r\n <div>\r\n <strong>License Number</strong><br />\r\n <span class=\"job-title\"> {{ exp.number }}</span>\r\n </div>\r\n <div>\r\n <strong>Issued By</strong><br />\r\n <span class=\"job-title\"> {{ exp.issuedBy }}</span>\r\n </div>\r\n <div>\r\n <strong>Issued State</strong><br />\r\n <span class=\"job-title\"> {{ exp.issuedState | stateName }}</span>\r\n </div>\r\n <div>\r\n <strong>Issued Date</strong><br />\r\n <span class=\"job-title\"> {{ exp.issueDate | date:'MM/dd/yyyy' }} </span>\r\n </div>\r\n <div>\r\n <strong>Expiry Date</strong><br />\r\n <span class=\"job-title\"> {{ exp.expiryDate | date:'MM/dd/yyyy' }}</span>\r\n </div>\r\n\r\n <div *ngIf=\"exp.fileUrl\" class=\"full-width\">\r\n <strong>Document</strong><br />\r\n <a [href]=\"cloudfrontUrl+exp.fileUrl\" target=\"_blank\">\r\n <span class=\"job-title\"> {{ exp.fileName }}</span>\r\n </a>\r\n </div>\r\n </div>\r\n <div class=\"full-width mt-3\">\r\n <strong>Description</strong><br />\r\n <span class=\"job-title\"> {{ exp.notes }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"actions\">\r\n <button type=\"button\" class=\"secondary\" (click)=\"back()\">Back</button>\r\n <div class=\"right-actions\">\r\n <button type=\"button\" class=\"primary add-btn\" (click)=\"add()\" style=\"background-color: #1f4d5f;\">\r\n Add More Licenses\r\n </button>\r\n <button type=\"button\" class=\"primary\" (click)=\"nextStep()\">\r\n Continue\r\n </button>\r\n </div>\r\n </div>\r\n</div>", styles: [".education-container{max-width:1000px;margin:0 auto;padding:24px 16px;min-height:300px}h3{font-size:23px;font-weight:600;margin-bottom:4px}.hint{font-size:14px;color:#6b7280;margin-bottom:24px}.row{display:flex;margin-bottom:16px}.field{flex:1;display:flex;flex-direction:column}.field.full-width{flex:1 1 100%}input[type=text],input[type=email],input[type=number],input[type=password],select,textarea{padding:10px 12px;border:2px solid #d1d5db;border-radius:4px;font-size:13px;outline:none;box-sizing:border-box;color:#374151}::ng-deep .ng-select.ng-select-single .ng-select-container{height:45px}::ng-deep .ng-select.ng-select-single .ng-select-container .ng-value-container .ng-placeholder{top:10px}textarea{height:90px;resize:none}.error{margin-top:4px;font-size:12px;color:#dc2626}.actions{display:flex;justify-content:space-between;margin:70px 0 40px}button{height:44px;min-width:120px;border-radius:4px;border:none;font-size:14px;cursor:pointer}button.primary{background-color:#4077ad;color:#fff}button.secondary{background-color:#f3f4f6;color:#374151}button:disabled{background-color:#9ca3af;cursor:not-allowed}.head{color:#6b7280;font-size:14px;font-weight:500;margin-bottom:5px}::ng-deep .today-highlight{color:#fff!important;background:#1e2541!important}.form-row{display:flex}.field{display:flex;flex-direction:column}.field.city{flex:0 0 50%}.field.date{flex:0 0 25%}::ng-deep .ng-select .ng-select-container .ng-value-container .ng-placeholder{color:#757575;font-size:14px}.close-btn-select{width:16px;height:16px;color:#00f;display:inline-block}.upload-wrapper{margin-top:37px}.upload-title{font-weight:600;margin-bottom:4px}.upload-subtitle{font-size:13px;color:#6c757d;margin-bottom:12px}.upload-btn{background-color:#1f4d5f;color:#fff;border:none;padding:10px 18px;border-radius:6px;font-size:14px;cursor:pointer}.upload-btn:hover{background-color:#173b4a}.file-name{margin-top:8px;font-size:13px;color:#495057}.right-actions{display:flex;gap:16px}.date-time-filter{padding-right:40px;background-image:url(/assets/images/icons/calendar.svg);background-repeat:no-repeat;background-position:right 12px center;background-size:18px 18px;cursor:pointer}.document-container{max-width:1100px;margin:auto}.search-input{width:100%;max-width:400px;height:44px;margin-bottom:16px}.grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.card{display:flex;align-items:center;min-height:48px}.checkbox{margin-top:4px}.checkbox-row{display:flex;align-items:center;gap:8px;cursor:pointer}.content .title{font-weight:600;font-size:14px}.checkbox-row input{margin:0}.title{font-size:14px;font-weight:600}.content .desc{font-size:12px;color:#666;margin-top:4px}.save-btn{margin-top:20px;padding:10px 18px;border-radius:6px;border:none;background:#4077ad;color:#fff;cursor:pointer}@media (max-width: 1024px){.grid{grid-template-columns:repeat(2,1fr)}}@media (max-width: 600px){.grid{grid-template-columns:1fr}}::ng-deep ng-dropdown-panel input[type=checkbox]{margin-right:0!important;padding:9px;margin-top:0}.form-check-input:checked{color:#fff!important;border-color:#2980b9!important;background-color:#2980b9!important}::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-option{font-size:14px}::ng-deep .ng-value-label{font-size:14px}::ng-deep .bs-datepicker-head{background-color:#1e2541!important}::ng-deep .theme-green .bs-datepicker-body table td span.selected,.theme-green .bs-datepicker-body table td.selected span,.theme-green .bs-datepicker-body table td span[class*=select-]:after,.theme-green .bs-datepicker-body table td[class*=select-] span:after{background-color:#1e2541!important}.work-preview{max-width:1000px;padding:20px;margin:15px auto;background-color:#f4f6f8;font-family:Segoe UI,Arial,sans-serif}.preview-card{position:relative;background-color:#fff;border-radius:8px;box-shadow:0 3px 8px #0000001a;padding:20px 25px;margin-bottom:20px;transition:box-shadow .2s ease}.preview-card:hover{box-shadow:0 6px 15px #00000026}.edit-btn{position:absolute;top:15px;right:15px;width:20px;height:20px;cursor:pointer}.card-top h4{margin:0;font-size:18px;color:#1f4d5f}.card-top .job-title{display:block;font-size:14px;color:#555;margin-top:2px}.card-meta{margin:10px 0;font-size:13px;color:#777;display:flex;justify-content:space-between}.card-meta .dates{font-style:italic}.job-description{font-size:14px;color:#333;line-height:1.5;margin-bottom:8px}.file-link{font-size:13px;color:#4077ad;text-decoration:underline;display:inline-block;margin-top:5px}.actions{display:flex;justify-content:space-between;margin:50px 100px 20px}.action{display:flex;justify-content:space-between;margin:50px 0 20px}button.secondary{background-color:#e0e0e0;color:#6c757dc7;padding:8px 20px;border:none;border-radius:6px;cursor:pointer}button.primary{background-color:#4077ad;color:#fff;padding:8px 20px;border:none;border-radius:6px;cursor:pointer}@media (max-width: 600px){.preview-card{padding:15px}.edit-btn{top:10px;right:10px;width:18px;height:18px}.card-meta{flex-direction:column;gap:3px}}.icon-color{cursor:pointer;width:20px;height:20px;transition:transform .3s ease;filter:brightness(0) saturate(100%) invert(48%) sepia(8%) saturate(350%) hue-rotate(170deg) brightness(92%) contrast(88%)}.icon-color.edit{width:18px;height:18px}.detail-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.accordion-button{display:flex;align-items:center}.accordion-title{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.accordion-actions{display:flex;align-items:center;margin-right:12px}.edit-icon{cursor:pointer}::ng-deep .accordion-item:first-of-type>.accordion-header .accordion-button{margin-bottom:20px}.job-title{color:#6c757d;font-weight:400;font-size:14px}.preview-header{margin-left:350px}.accordion{margin:20px 100px}.add-btn{width:200px}@media screen and (max-width: 767px){.hint{margin-bottom:7px}.date-time-filter{font-size:14px}.search-input{margin-bottom:0}.right-actions{gap:5px}.preview-header{margin-left:0}.accordion{margin:20px 0!important}.actions{flex-direction:column-reverse;gap:7px;margin:50px 0 20px}.right-actions{gap:5px;flex-direction:column-reverse}.add-btn{width:unset}.action{display:flex;flex-direction:column-reverse;gap:5px}}\n"] }]
|
|
4142
|
-
}], ctorParameters: () => [{ type: UserDocumentService }, { type: CredentialingStore }, { type: LicenseStore }, { type: i6.TokenService }, { type: PostalCodeServices }, { type:
|
|
4320
|
+
args: [{ selector: 'app-licenses', standalone: false, template: "<div class=\"education-container\" *ngIf=\"!showpreview()\">\r\n\r\n <h3>Add Licenses</h3>\r\n <p class=\"hint\">\r\n Recommended for your role\r\n </p>\r\n <div class=\"document-container\">\r\n <input type=\"text\" class=\"search-input\" placeholder=\"Search documents here...\" [formControl]=\"searchControl\" />\r\n <div class=\"grid\">\r\n <div *ngFor=\"let item of documentTypes\">\r\n <label class=\"checkbox-row\">\r\n <input type=\"checkbox\" [checked]=\"isChecked(item.id)\" (change)=\"toggleSelection(item, $event)\" />\r\n <span class=\"title\">{{ item.type }}</span>\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n <form [formGroup]=\"certificateForm\">\r\n <div class=\"row\" style=\"margin-top: 20px;\">\r\n <div class=\"field\">\r\n <div class=\"head\">License Number</div>\r\n <input type=\"text\" placeholder=\"Enter your License Number here\" formControlName=\"number\" />\r\n <small class=\"error\" *ngIf=\"certificateForm.get('number')?.touched &&\r\n certificateForm.get('number')?.hasError('required')\">\r\n License number is required\r\n </small>\r\n </div>\r\n\r\n <div class=\"field\">\r\n <div class=\"head\">License Issued By</div>\r\n <input type=\"text\" placeholder=\"Enter License Issued By here\" formControlName=\"issuedBy\" />\r\n <small class=\"error\" *ngIf=\"certificateForm.get('issuedBy')?.touched &&\r\n certificateForm.get('issuedBy')?.hasError('required')\">\r\n License issued by is required\r\n </small>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"field\">\r\n <div class=\"head\">Issued State</div>\r\n <ng-select formControlName=\"issuedState\" [items]=\"states\" bindLabel=\"stateName\" bindValue=\"stateCode\"\r\n placeholder=\"Select Issued State\">\r\n <ng-template ng-option-tmp let-item=\"item\" let-item$=\"item$\">\r\n <input class=\"form-check-input\" type=\"checkbox\" [checked]=\"item$.selected\" />\r\n {{ item.stateName }}\r\n </ng-template>\r\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\r\n <span class=\"ng-value-label\">\r\n {{ item.stateName }}\r\n </span>\r\n <span class=\"ng-value-icon right\" (click)=\"clear(item)\">\r\n <img src=\"/assets/images/icons/close-sm-circle.svg\" class=\"close-btn-select\" />\r\n </span>\r\n </ng-template>\r\n </ng-select>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"field\">\r\n <div class=\"mb-3 head\">\r\n <div class=\"head\">Issued Date</div>\r\n <input class=\"form-control date-time-filter\" placeholder=\"Issued On\" [maxDate]=\"maxDate\" bsDatepicker [bsConfig]=\"{ adaptivePosition: true, showWeekNumbers: false,\r\n isAnimated: true, customTodayClass: !certificateForm.get('issueDate')?.value ? 'today-highlight' : '' }\"\r\n formControlName=\"issueDate\" (bsValueChange)=\"onPreferredDateChange($event)\">\r\n <small class=\"error\" *ngIf=\"certificateForm.get('issueDate')?.touched &&\r\n certificateForm.get('issueDate')?.hasError('required')\">\r\n Issued date is required\r\n </small>\r\n </div>\r\n </div>\r\n\r\n <div class=\"field\">\r\n <div class=\"mb-3 head\">\r\n <div class=\"head\">Expiration Date</div>\r\n <input class=\"form-control date-time-filter\" placeholder=\"Expired On\" [maxDate]=\"maxDate\" bsDatepicker [bsConfig]=\"{ adaptivePosition: true,showWeekNumbers: false, isAnimated: true, \r\n customTodayClass: !certificateForm.get('expiryDate')?.value ? 'today-highlight' : '' }\"\r\n formControlName=\"expiryDate\" (bsValueChange)=\"onPreferredDateChange($event)\">\r\n <small class=\"error\" *ngIf=\"certificateForm.get('expiryDate')?.touched &&\r\n certificateForm.get('expiryDate')?.hasError('required')\">\r\n Expiry date is required\r\n </small>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"field full-width\">\r\n <div class=\"head\">Comments</div>\r\n <textarea placeholder=\"Description\" formControlName=\"notes\">\r\n </textarea>\r\n </div>\r\n </div>\r\n </form>\r\n <div class=\"row\">\r\n <div class=\"upload-wrapper\">\r\n <p class=\"upload-title\">Upload</p>\r\n <p class=\"upload-subtitle\">Add licenses below</p>\r\n <button type=\"button\" class=\"upload-btn\" (click)=\"fileInput.click()\">\r\n Upload Licenses\r\n </button>\r\n <input #fileInput type=\"file\" accept=\".pdf,.doc,.docx\" (change)=\"selectFile($event)\" hidden />\r\n <p class=\"file-name\" *ngIf=\"fileName\">\r\n Selected: {{ fileName }}\r\n <span class=\"remove-file\" style=\"cursor: pointer;\" (click)=\"removeFile()\">\u2716</span>\r\n</p>\r\n </div>\r\n </div>\r\n <div class=\"action\">\r\n <button type=\"button\" class=\"secondary\" (click)=\"back()\">Back</button>\r\n <div class=\"right-actions\">\r\n <button type=\"button\" class=\"secondary\" (click)=\"nextStep()\">\r\n Skip\r\n </button>\r\n <button type=\"button\" class=\"primary\" [disabled]=\"proposalLoader\" [ng2-loading]=\"proposalLoader\"\r\n (click)=\"saveFile()\">\r\n Continue\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"work-preview\" *ngIf=\"showpreview()\">\r\n <div class=\"preview-header\" >\r\n <h3>Licenses Preview</h3>\r\n </div>\r\n <div class=\"accordion\" style=\"margin: 20px 100px;\">\r\n <div *ngFor=\"let exp of workStore.experiences(); let i = index\" style=\"margin-bottom: 20px;\"\r\n class=\"accordion-item border-0\">\r\n\r\n <h2 class=\"accordion-header\">\r\n <button class=\"accordion-button collapsed\" type=\"button\" data-bs-toggle=\"collapse\"\r\n [attr.data-bs-target]=\"'#edu_' + i\">\r\n <span class=\"accordion-title\">\r\n {{ exp.documentTypeName }}\r\n </span>\r\n <span class=\"accordion-actions\">\r\n <img src=\"/assets/images/icons/edit-text.png\" class=\"edit-icon icon-color\"\r\n (click)=\"edit(i); $event.stopPropagation()\" alt=\"Edit\" />\r\n </span>\r\n </button>\r\n </h2>\r\n <div [id]=\"'edu_' + i\" class=\"accordion-collapse collapse\" style=\"margin-bottom: 20px;\">\r\n <div class=\"accordion-body\">\r\n <div class=\"detail-grid\">\r\n <div>\r\n <strong>License Name</strong><br />\r\n <span class=\"job-title\"> {{ exp.documentTypeName }}</span>\r\n </div>\r\n <div>\r\n <strong>License Number</strong><br />\r\n <span class=\"job-title\"> {{ exp.number }}</span>\r\n </div>\r\n <div>\r\n <strong>Issued By</strong><br />\r\n <span class=\"job-title\"> {{ exp.issuedBy }}</span>\r\n </div>\r\n <div>\r\n <strong>Issued State</strong><br />\r\n <span class=\"job-title\"> {{ exp.issuedState | stateName }}</span>\r\n </div>\r\n <div>\r\n <strong>Issued Date</strong><br />\r\n <span class=\"job-title\"> {{ exp.issueDate | date:'MM/dd/yyyy' }} </span>\r\n </div>\r\n <div>\r\n <strong>Expiry Date</strong><br />\r\n <span class=\"job-title\"> {{ exp.expiryDate | date:'MM/dd/yyyy' }}</span>\r\n </div>\r\n\r\n <div *ngIf=\"exp.fileUrl\" class=\"full-width\">\r\n <strong>Document</strong><br />\r\n <a [href]=\"cloudfrontUrl+exp.fileUrl\" target=\"_blank\">\r\n <span class=\"job-title\"> {{ exp.fileName }}</span>\r\n </a>\r\n </div>\r\n </div>\r\n <div class=\"full-width mt-3\">\r\n <strong>Description</strong><br />\r\n <span class=\"job-title\"> {{ exp.notes }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"actions\">\r\n <button type=\"button\" class=\"secondary\" (click)=\"back()\">Back</button>\r\n <div class=\"right-actions\">\r\n <button type=\"button\" class=\"primary add-btn\" (click)=\"add()\" style=\"background-color: #1f4d5f;\">\r\n Add More Licenses\r\n </button>\r\n <button type=\"button\" class=\"primary\" (click)=\"nextStep()\">\r\n Continue\r\n </button>\r\n </div>\r\n </div>\r\n</div>", styles: [".education-container{max-width:1000px;margin:0 auto;padding:24px 16px;min-height:300px}h3{font-size:23px;font-weight:600;margin-bottom:4px}.hint{font-size:14px;color:#6b7280;margin-bottom:24px}.row{display:flex;margin-bottom:16px}.field{flex:1;display:flex;flex-direction:column}.field.full-width{flex:1 1 100%}input[type=text],input[type=email],input[type=number],input[type=password],select,textarea{padding:10px 12px;border:2px solid #d1d5db;border-radius:4px;font-size:13px;outline:none;box-sizing:border-box;color:#374151}::ng-deep .ng-select.ng-select-single .ng-select-container{height:45px}::ng-deep .ng-select.ng-select-single .ng-select-container .ng-value-container .ng-placeholder{top:10px}textarea{height:90px;resize:none}.error{margin-top:4px;font-size:12px;color:#dc2626}.actions{display:flex;justify-content:space-between;margin:70px 0 40px}button{height:44px;min-width:120px;border-radius:4px;border:none;font-size:14px;cursor:pointer}button.primary{background-color:#4077ad;color:#fff}button.secondary{background-color:#f3f4f6;color:#374151}button:disabled{background-color:#9ca3af;cursor:not-allowed}.head{color:#6b7280;font-size:14px;font-weight:500;margin-bottom:5px}::ng-deep .today-highlight{color:#fff!important;background:#1e2541!important}.form-row{display:flex}.field{display:flex;flex-direction:column}.field.city{flex:0 0 50%}.field.date{flex:0 0 25%}::ng-deep .ng-select .ng-select-container .ng-value-container .ng-placeholder{color:#757575;font-size:14px}.close-btn-select{width:16px;height:16px;color:#00f;display:inline-block}.upload-wrapper{margin-top:37px}.upload-title{font-weight:600;margin-bottom:4px}.upload-subtitle{font-size:13px;color:#6c757d;margin-bottom:12px}.upload-btn{background-color:#1f4d5f;color:#fff;border:none;padding:10px 18px;border-radius:6px;font-size:14px;cursor:pointer}.upload-btn:hover{background-color:#173b4a}.file-name{margin-top:8px;font-size:13px;color:#495057}.right-actions{display:flex;gap:16px}.date-time-filter{padding-right:40px;background-image:url(/assets/images/icons/calendar.svg);background-repeat:no-repeat;background-position:right 12px center;background-size:18px 18px;cursor:pointer}.document-container{max-width:1100px;margin:auto}.search-input{width:100%;max-width:400px;height:44px;margin-bottom:16px}.grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.card{display:flex;align-items:center;min-height:48px}.checkbox{margin-top:4px}.checkbox-row{display:flex;align-items:center;gap:8px;cursor:pointer}.content .title{font-weight:600;font-size:14px}.checkbox-row input{margin:0}.title{font-size:14px;font-weight:600}.content .desc{font-size:12px;color:#666;margin-top:4px}.save-btn{margin-top:20px;padding:10px 18px;border-radius:6px;border:none;background:#4077ad;color:#fff;cursor:pointer}@media (max-width: 1024px){.grid{grid-template-columns:repeat(2,1fr)}}@media (max-width: 600px){.grid{grid-template-columns:1fr}}::ng-deep ng-dropdown-panel input[type=checkbox]{margin-right:0!important;padding:9px;margin-top:0}.form-check-input:checked{color:#fff!important;border-color:#2980b9!important;background-color:#2980b9!important}::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-option{font-size:14px}::ng-deep .ng-value-label{font-size:14px}::ng-deep .bs-datepicker-head{background-color:#1e2541!important}::ng-deep .theme-green .bs-datepicker-body table td span.selected,.theme-green .bs-datepicker-body table td.selected span,.theme-green .bs-datepicker-body table td span[class*=select-]:after,.theme-green .bs-datepicker-body table td[class*=select-] span:after{background-color:#1e2541!important}.work-preview{max-width:1000px;padding:20px;margin:15px auto;background-color:#f4f6f8;font-family:Segoe UI,Arial,sans-serif}.preview-card{position:relative;background-color:#fff;border-radius:8px;box-shadow:0 3px 8px #0000001a;padding:20px 25px;margin-bottom:20px;transition:box-shadow .2s ease}.preview-card:hover{box-shadow:0 6px 15px #00000026}.edit-btn{position:absolute;top:15px;right:15px;width:20px;height:20px;cursor:pointer}.card-top h4{margin:0;font-size:18px;color:#1f4d5f}.card-top .job-title{display:block;font-size:14px;color:#555;margin-top:2px}.card-meta{margin:10px 0;font-size:13px;color:#777;display:flex;justify-content:space-between}.card-meta .dates{font-style:italic}.job-description{font-size:14px;color:#333;line-height:1.5;margin-bottom:8px}.file-link{font-size:13px;color:#4077ad;text-decoration:underline;display:inline-block;margin-top:5px}.actions{display:flex;justify-content:space-between;margin:50px 100px 20px}.action{display:flex;justify-content:space-between;margin:50px 0 20px}button.secondary{background-color:#e0e0e0;color:#6c757dc7;padding:8px 20px;border:none;border-radius:6px;cursor:pointer}button.primary{background-color:#4077ad;color:#fff;padding:8px 20px;border:none;border-radius:6px;cursor:pointer}@media (max-width: 600px){.preview-card{padding:15px}.edit-btn{top:10px;right:10px;width:18px;height:18px}.card-meta{flex-direction:column;gap:3px}}.icon-color{cursor:pointer;width:20px;height:20px;transition:transform .3s ease;filter:brightness(0) saturate(100%) invert(48%) sepia(8%) saturate(350%) hue-rotate(170deg) brightness(92%) contrast(88%)}.icon-color.edit{width:18px;height:18px}.detail-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.accordion-button{display:flex;align-items:center}.accordion-title{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.accordion-actions{display:flex;align-items:center;margin-right:12px}.edit-icon{cursor:pointer}::ng-deep .accordion-item:first-of-type>.accordion-header .accordion-button{margin-bottom:20px}.job-title{color:#6c757d;font-weight:400;font-size:14px}.preview-header{margin-left:350px}.accordion{margin:20px 100px}.add-btn{width:200px}@media screen and (max-width: 767px){.hint{margin-bottom:7px}.date-time-filter{font-size:14px}.search-input{margin-bottom:0}.right-actions{gap:5px}.preview-header{margin-left:0}.accordion{margin:20px 0!important}.actions{flex-direction:column-reverse;gap:7px;margin:50px 0 20px}.right-actions{gap:5px;flex-direction:column-reverse}.add-btn{width:unset}.action{display:flex;flex-direction:column-reverse;gap:5px}}.remove-file{margin-left:10px;cursor:pointer;color:red;font-weight:700}\n"] }]
|
|
4321
|
+
}], ctorParameters: () => [{ type: UserDocumentService }, { type: UserService }, { type: CredentialingStore }, { type: LicenseStore }, { type: i6.TokenService }, { type: PostalCodeServices }, { type: i8.FormBuilder }, { type: FileService }, { type: i1.HttpClient }], propDecorators: { providerId: [{
|
|
4143
4322
|
type: Input
|
|
4144
4323
|
}], providerName: [{
|
|
4145
4324
|
type: Input
|
|
4146
4325
|
}], cloudfrontUrl: [{
|
|
4147
4326
|
type: Input
|
|
4327
|
+
}], states: [{
|
|
4328
|
+
type: Input
|
|
4148
4329
|
}] } });
|
|
4149
4330
|
|
|
4150
4331
|
class ToolService {
|
|
@@ -4265,6 +4446,7 @@ class ToolsComponent {
|
|
|
4265
4446
|
toolService;
|
|
4266
4447
|
userToolService;
|
|
4267
4448
|
formBuilder;
|
|
4449
|
+
userService;
|
|
4268
4450
|
utils;
|
|
4269
4451
|
store;
|
|
4270
4452
|
tokenService;
|
|
@@ -4273,6 +4455,7 @@ class ToolsComponent {
|
|
|
4273
4455
|
roleData;
|
|
4274
4456
|
providerId;
|
|
4275
4457
|
providerName;
|
|
4458
|
+
user;
|
|
4276
4459
|
form;
|
|
4277
4460
|
submitted = false;
|
|
4278
4461
|
apiSubmit = false;
|
|
@@ -4309,10 +4492,11 @@ class ToolsComponent {
|
|
|
4309
4492
|
userToolsPreview = [];
|
|
4310
4493
|
userDetails;
|
|
4311
4494
|
userdata;
|
|
4312
|
-
constructor(toolService, userToolService, formBuilder, utils, store, tokenService, userDetailService, libConfig) {
|
|
4495
|
+
constructor(toolService, userToolService, formBuilder, userService, utils, store, tokenService, userDetailService, libConfig) {
|
|
4313
4496
|
this.toolService = toolService;
|
|
4314
4497
|
this.userToolService = userToolService;
|
|
4315
4498
|
this.formBuilder = formBuilder;
|
|
4499
|
+
this.userService = userService;
|
|
4316
4500
|
this.utils = utils;
|
|
4317
4501
|
this.store = store;
|
|
4318
4502
|
this.tokenService = tokenService;
|
|
@@ -4328,6 +4512,7 @@ class ToolsComponent {
|
|
|
4328
4512
|
async ngOnInit() {
|
|
4329
4513
|
this.userId = await this.tokenService?.getUserId();
|
|
4330
4514
|
this.emailId = await this.tokenService?.getUserEmail();
|
|
4515
|
+
this.user = this.userService.getUserDetails();
|
|
4331
4516
|
await loadProfile();
|
|
4332
4517
|
const saved = profileSignal();
|
|
4333
4518
|
this.userdata = saved;
|
|
@@ -4349,7 +4534,7 @@ class ToolsComponent {
|
|
|
4349
4534
|
targetProviderId: [this.providerId],
|
|
4350
4535
|
providerName: [this.providerName],
|
|
4351
4536
|
//userId: [this.userId],
|
|
4352
|
-
userName: [this.
|
|
4537
|
+
userName: [this.user.fullName],
|
|
4353
4538
|
toolId: [toolId],
|
|
4354
4539
|
toolName: [toolName],
|
|
4355
4540
|
starRating: [null, Validators.required],
|
|
@@ -4371,7 +4556,7 @@ class ToolsComponent {
|
|
|
4371
4556
|
targetProviderId: [this.providerId],
|
|
4372
4557
|
providerName: [this.providerName],
|
|
4373
4558
|
//userId: [this.userId],
|
|
4374
|
-
userName: [this.
|
|
4559
|
+
userName: [this.user.fullName],
|
|
4375
4560
|
toolId: [toolId],
|
|
4376
4561
|
toolName: [toolName],
|
|
4377
4562
|
starRating: [this.selectedTab.controls.starRating.value],
|
|
@@ -4678,10 +4863,10 @@ class ToolsComponent {
|
|
|
4678
4863
|
this.showLoader = true;
|
|
4679
4864
|
if (this.userId) {
|
|
4680
4865
|
this.userToolModels.forEach(element => {
|
|
4681
|
-
element.userHeadShotUrl = this.
|
|
4866
|
+
element.userHeadShotUrl = this.user.headshotUrl;
|
|
4682
4867
|
//element.userId = this.userId ?? '';
|
|
4683
4868
|
element.emailId = this.emailId ?? '';
|
|
4684
|
-
element.userName = this.
|
|
4869
|
+
element.userName = this.user.fullName;
|
|
4685
4870
|
element.forUser = ForUser.ForProducer;
|
|
4686
4871
|
});
|
|
4687
4872
|
}
|
|
@@ -4794,8 +4979,8 @@ class ToolsComponent {
|
|
|
4794
4979
|
}
|
|
4795
4980
|
});
|
|
4796
4981
|
}
|
|
4797
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ToolsComponent, deps: [{ token: ToolService }, { token: UserToolService }, { token:
|
|
4798
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: ToolsComponent, isStandalone: false, selector: "app-tools", inputs: { roleData: "roleData", providerId: "providerId", providerName: "providerName" }, ngImport: i0, template: "<!-- Tool PREVIEW LIST -->\r\n<div class=\"tools-container\" *ngIf=\"store.toolStepView() === 'preview'\">\r\n <h5 class=\"title text-secondary\">Tools Preview</h5>\r\n <!-- <p class=\"subtitle\">Add Tools</p> -->\r\n <accordion [closeOthers]=\"true\" [isAnimated]=\"true\">\r\n <accordion-group *ngFor=\"let tool of userToolsPreview\" #accGroup (isOpenChange)=\"onAccordionChange(tool, $event)\">\r\n <div accordion-heading class=\"skill-preview-header d-flex justify-content-between align-items-center\">\r\n <span class=\"fw-semibold text-secondary\">\r\n {{ tool.toolName }}\r\n </span>\r\n <div class=\"d-flex align-items-center gap-2\">\r\n <!-- EDIT MODE BUTTONS -->\r\n <ng-container *ngIf=\"isEditMode && editingToolKey === getToolKey(tool); else viewActions\">\r\n <button class=\"back-btn edit me-3\" type=\"button\" (click)=\"backTool(accGroup)\">\r\n Cancel\r\n </button>\r\n <button class=\"continue-btn edit\" type=\"button\" (click)=\"saveUserTools()\" \r\n [disabled]=\"showLoader\">\r\n Update\r\n </button>\r\n </ng-container>\r\n <!-- VIEW MODE ACTIONS -->\r\n <ng-template #viewActions>\r\n <button type=\"button\" class=\"me-3\" (click)=\"editToolFromPreview(tool, accGroup, $event)\">\r\n <img class=\"icon-color\" src=\"/assets/images/icons/edit-text.png\" />\r\n </button>\r\n <!-- Arrow (ngx controls click) -->\r\n <img class=\"icon-color edit\" src=\"/assets/images/icons/arrow-down.svg\" alt=\"icon\"\r\n [class.rotate]=\"accGroup.isOpen\" />\r\n </ng-template>\r\n </div>\r\n </div>\r\n <!-- BODY -->\r\n <div class=\"skill-preview-body content-part mt-3\">\r\n <ng-container *ngIf=\"!isEditMode || editingToolKey !== getToolKey(tool)\">\r\n <div class=\"row g-3 row-gap-2\">\r\n <div class=\"col-lg-3 col-md-4 col-sm-6 col-12\">\r\n <label>Service Provider</label>\r\n <div class=\"value\">{{ tool.providerName }}</div>\r\n </div>\r\n <div class=\"col-lg-3 col-md-4 col-sm-6 col-12\">\r\n <label>Manufacturer</label>\r\n <div class=\"value\">{{ tool.make }}</div>\r\n </div>\r\n <div class=\"col-lg-3 col-md-4 col-sm-6 col-12\">\r\n <label>Years of Experience</label>\r\n <div class=\"value\">{{ tool.year }}</div>\r\n </div>\r\n <div class=\"col-lg-3 col-md-4 col-sm-6 col-12\">\r\n <label>Self Ability Rating</label>\r\n <ngx-stars [initialStars]=\"tool.starRating\" [maxStars]=\"5\" style=\"pointer-events: none\">\r\n </ngx-stars>\r\n </div>\r\n <div class=\"col-lg-3 col-md-4 col-sm-6 col-12\">\r\n <label>Active</label><br />\r\n <input type=\"checkbox\" class=\"form-check-input\" [checked]=\"tool.profileVisibility\" disabled>\r\n </div>\r\n <div class=\"col-lg-3 col-md-4 col-sm-6 col-12\">\r\n <label>Tools / Equipment</label>\r\n <div class=\"value\">{{ tool.toolName }}</div>\r\n </div>\r\n <div class=\"col-lg-3 col-md-4 col-sm-6 col-12\">\r\n <label>Model</label>\r\n <div class=\"value\">{{ tool.model }}</div>\r\n </div>\r\n <div class=\"col-lg-3 col-md-4 col-sm-6 col-12\">\r\n <label>Serial Number</label>\r\n <div class=\"value\">{{ tool.serialNumber }}</div>\r\n </div>\r\n <div class=\"col-12\">\r\n <label>Description</label>\r\n <div class=\"value\">{{ tool.notes }}</div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <!-- Edit Mode -->\r\n <ng-container *ngIf=\"isEditMode && editingToolKey === getToolKey(tool)\" [formGroup]=\"tab.at(0)\">\r\n <div class=\"row g-3\">\r\n <div class=\"col-lg-3 col-md-4 col-sm-6 col-12\">\r\n <label>Service Provider</label>\r\n <div class=\"value\">{{ tool.providerName }}</div>\r\n </div>\r\n <div class=\"col-lg-3 col-md-4 col-sm-6 col-12\">\r\n <label>Manufacturer</label> <br />\r\n <input class=\"form-control\" type=\"text\" formControlName=\"make\">\r\n </div>\r\n <div class=\"col-lg-3 col-md-4 col-sm-6 col-12\">\r\n <label>Years of Experience</label>\r\n <ng-select class=\"w-100\" [items]=\"expYears\" bindLabel=\"text\" bindValue=\"value\" formControlName=\"year\"\r\n [clearable]=\"false\" [searchable]=\"false\" placeholder=\"Select\">\r\n </ng-select>\r\n </div>\r\n <div class=\"col-lg-3 col-md-4 col-sm-6 col-12\">\r\n <label>Self Ability Rating</label>\r\n <ngx-stars [initialStars]=\"(tab.at(0).get('starRating')?.value || 0) / 2\" [maxStars]=\"5\"\r\n (rate)=\"onRatingSets($event)\">\r\n </ngx-stars>\r\n </div>\r\n <div class=\"col-lg-3 col-md-4 col-sm-6 col-12\">\r\n <label>Active</label><br />\r\n <input class=\"form-check-input\" type=\"checkbox\" formControlName=\"profileVisibility\">\r\n </div>\r\n <div class=\"col-lg-3 col-md-4 col-sm-6 col-12\">\r\n <label>Tools / Equipment</label>\r\n <input class=\"form-control\" [value]=\"tool.toolName\" readonly>\r\n </div>\r\n <div class=\"col-lg-3 col-md-4 col-sm-6 col-12\">\r\n <label>Model</label>\r\n <input class=\"form-control\" formControlName=\"model\">\r\n </div>\r\n <div class=\"col-lg-3 col-md-4 col-sm-6 col-12\">\r\n <label>Serial Number</label>\r\n <input class=\"form-control\" formControlName=\"serialNumber\">\r\n </div>\r\n <div class=\"col-12\">\r\n <label>Description</label>\r\n <textarea class=\"form-control\" rows=\"2\" formControlName=\"notes\"></textarea>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </accordion-group>\r\n </accordion>\r\n</div>\r\n\r\n<!-- Tool LIST -->\r\n<div class=\"tools-container\" *ngIf=\"store.toolStepView() === 'add'\">\r\n <h3 class=\"text-secondary\">Add Tools</h3>\r\n <p class=\"info\">Manage specialty tools and equipment</p>\r\n <div class=\"content-part\">\r\n <h6 class=\"text-secondary\"> Add User Tool</h6>\r\n <div class=\"sub-section\">\r\n <div class=\"row mt-2\">\r\n <div class=\"col-12 col-md-12 col-sm-12 ps-lg-0\">\r\n <div class=\"search-part\" *ngIf=\"!isEditMode\">\r\n <input type=\"text\" placeholder=\"Search / Add Tools here\" [(ngModel)]=\"searchToolQry\" (input)=\"getTools()\" />\r\n <button class=\"btn\" (click)=\"createNewTools()\" tooltip=\"Add Tool\">\r\n <img src=\"/assets/images/icons/plus.svg\" alt=\"search\" class=\"create-plus\" width=\"18px\" height=\"18px\" />\r\n </button>\r\n </div>\r\n <div *ngIf=\"!searchToolQry && toolSubmittedValue\" class=\"invalid-feedback is-invalid d-block\">\r\n Please Enter Tools Name\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"nameError\" class=\"invalid-feedback is-invalid d-block\">\r\n {{ nameError }}\r\n </div>\r\n <div class=\"col tools-section\" [ngClass]=\"showLoading ? 'loader':''\">\r\n <div class=\"row mt-2\" [ngStyle]=\"showLoader ? {'min-height': '150px'} : {}\">\r\n <div class=\"col-12 col-md-4\" *ngFor=\"let Tool of tools\">\r\n <div class=\"mt-2 d-flex\">\r\n <input (change)=\"onSelectedTools($event, Tool)\" [checked]=\"Tool.selected == true\" id=\"{{ Tool.id }}\"\r\n name=\"{{ Tool.id }}\" type=\"checkbox\" />\r\n <label class=\"text-title\" for=\"{{ Tool.id }}\">\r\n {{ Tool.name }}</label>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div [ngClass]=\"{ 'loader': showLoading,'pt-3': !showLoading,'edit-mode': isEditMode}\">\r\n <tabset #tabSet>\r\n <tab (selectTab)=\"setTabGroup(group)\" *ngFor=\"let group of tab?.controls; let index = index\"\r\n [label]=\"tabs[index]\" tab1 id=\"{{ tabs[index] }}\" #{{tabs[index]}}>\r\n <ng-template tabHeading *ngIf=\"!isEditMode\">\r\n <span class=\"text-secondary\">{{ tabs[index] }}</span>\r\n <button class=\"btn btn-sm\" (click)=\"removeTab(index, group.controls.toolId.value)\">\r\n <img src=\"/assets/images/icons/close-x-mark.svg\" alt=\"search\" width=\"16px\" height=\"16px\" />\r\n </button>\r\n </ng-template>\r\n <div [formGroup]=\"group\" class=\"tab-card\">\r\n <div class=\"card-body mt-3 position-relative\">\r\n <div class=\"col-12 col-md-3 mt-1 copyAll\" *ngIf=\"\r\n tab.controls.length > 1 && index == copyOptionIndex\r\n \">\r\n <label class=\"label\">Copy to All Tabs</label>\r\n <input class=\"form-check-input\" type=\"checkbox\" (click)=\"setCopyToAllTabs(index, group.value,viewTab)\"\r\n role=\"switch\" />\r\n </div>\r\n <div class=\"row\" [ngClass]=\"index == 0 && tab.controls.length > 1 ? 'mt-5' : '' \">\r\n <div class=\"col-12 col-md-2 mt-1\">\r\n <label class=\"label\">Self-ability Rating</label>\r\n <ngx-stars [initialStars]=\"initialStarts\" (ratingOutput)=\"onRatingSet($event,index)\"\r\n [ngClass]=\"{ 'is-invalid': userToolSubmitted && k.starRating.errors }\" [maxStars]=\"5\">\r\n </ngx-stars>\r\n <div *ngIf=\"userToolSubmitted && k.starRating.errors\" class=\"invalid-feedback\" [ngClass]=\"{\r\n 'is-invalid':\r\n userToolSubmitted && k.starRating.errors\r\n }\">\r\n <div *ngIf=\"k.starRating.errors.required\">\r\n Star Rating is required\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-12 col-md-2 mt-1\">\r\n <label class=\"label\">Profile Visibility</label><br />\r\n <input class=\"form-check-input\" type=\"checkbox\" formControlName=\"profileVisibility\" role=\"switch\" />\r\n </div>\r\n <div class=\"col-12 col-md-4 mt-1\">\r\n <label class=\"label\">Years of Experience</label>\r\n <ng-select class=\"w-100\" [items]=\"expYears\" bindLabel=\"text\" (change)=\"onYearChange(group)\"\r\n formControlName=\"year\" [ngClass]=\"{\r\n 'is-invalid': userToolSubmitted && k.year.errors\r\n }\" bindValue=\"value\" [closeOnSelect]=\"true\" [clearable]=\"false\" [searchable]=\"false\" placeholder=\"Select\"\r\n id=\"reqStates\"></ng-select>\r\n\r\n <div *ngIf=\"userToolSubmitted && k.year.errors\" class=\"invalid-feedback\" [ngClass]=\"{\r\n 'is-invalid': userToolSubmitted && k.year.errors\r\n }\">\r\n <div *ngIf=\"k.year.errors.required\">\r\n Year is required\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-12 col-md-4 mt-1\">\r\n <label class=\"label\">Manufacturer</label>\r\n <input id=\"make\" formControlName=\"make\" class=\"form-control\" type=\"text\"\r\n placeholder=\"Enter Manufacturer here\" (change)=\"onYearChange(group)\" />\r\n <!-- <div *ngIf=\"userToolSubmitted && k.make.errors\" class=\"invalid-feedback\" [ngClass]=\"{\r\n 'is-invalid': userToolSubmitted && k.make.errors\r\n }\">\r\n <div *ngIf=\"k.make.errors.required\">\r\n Manufacturer is required\r\n </div>\r\n </div> -->\r\n </div>\r\n </div>\r\n <div class=\"row pt-2\">\r\n <div class=\"col-12 col-md-4 mt-1\">\r\n <label class=\"label\">Model</label>\r\n <input id=\"model\" formControlName=\"model\" class=\"form-control\" type=\"text\"\r\n placeholder=\"Enter Model here\" (change)=\"onYearChange(group)\" />\r\n <!-- <div *ngIf=\"userToolSubmitted && k.model.errors\" class=\"invalid-feedback\" [ngClass]=\"{\r\n 'is-invalid': userToolSubmitted && k.model.errors\r\n }\">\r\n <div *ngIf=\"k.model.errors.required\">\r\n Model is required\r\n </div>\r\n </div> -->\r\n </div>\r\n\r\n <div class=\"col-12 col-md-4 mt-1\">\r\n <label class=\" label\">Serial Number</label>\r\n <input id=\"serialNumber\" formControlName=\"serialNumber\" class=\"form-control\" type=\"text\"\r\n placeholder=\"Enter Serial Number here\" />\r\n </div>\r\n <div class=\"col-12 col-md-4 mt-1\">\r\n <label class=\"label\">Comment</label>\r\n <textarea placeholder=\"Enter your comment here\" formControlName=\"notes\" class=\"form-control\"\r\n [ngClass]=\"{\r\n 'is-invalid': userToolSubmitted && k.notes.errors\r\n }\" rows=\"2\"></textarea>\r\n <div *ngIf=\"userToolSubmitted && k.notes.errors\" class=\"invalid-feedback\" [ngClass]=\"{\r\n 'is-invalid': userToolSubmitted && k.notes.errors\r\n }\">\r\n <div *ngIf=\"k.notes.errors.required\">\r\n Description is required\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </tab>\r\n </tabset>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"tools-container last pt-5 mt-5\">\r\n <div class=\"d-flex justify-content-between pt-3 mob-res\">\r\n <!-- (click)=\"reset()\" -->\r\n <button class=\"back-btn\" (click)=\"goBack()\">Back</button>\r\n <div class=\"mob-view\">\r\n <button class=\"back-btn me-3 add\" *ngIf=\"store.toolStepView() === 'preview'\" (click)=\"store.goToToolAdd()\">\r\n Add More Tools\r\n </button>\r\n <button [disabled]=\"homeLoader\" [ng2-loading]=\"homeLoader\" (click)=\"saveFinal()\"\r\n class=\"float-end save-btn\">\r\n Go To Dashboard\r\n </button>\r\n <button (click)=\"onToolContinue()\" *ngIf=\"store.toolStepView() === 'add'\" [disabled]=\"showLoader\" [ng2-loading]=\"showLoader\" class=\"float-end save-btn\">\r\n Add\r\n </button>\r\n </div>\r\n </div>\r\n</div>", styles: ["@charset \"UTF-8\";.tools-container{max-width:1000px;margin:40px auto;min-height:300px}.tools-container.last{min-height:unset}.tools-container h3{margin-bottom:5px;font-size:22px;font-weight:500}.tools-container .info{font-size:13px;color:#666;margin-bottom:30px}.content-part{background:#fff}.content-part p,.content-part div{font-size:small}.content-part div .label{font-size:12px!important;font-weight:700!important;padding-bottom:5px!important}.content-part .row{margin-top:-15px}.content-part .sub-section{padding:0 10px}.content-part .sub-section .title{font-size:16px;font-weight:400;color:var(--font-primary)}.content-part .sub-section .info-title{font-size:12px;font-weight:400;color:var(--font-primary);margin-left:5px}.content-part .sub-section .content{font-size:12px}.content-part .sub-section .subsection{font-weight:600;padding-top:10px;font-size:12px}.content-part .sub-section .subsection input{width:30%}.content-part .sub-section .icon{width:35px;filter:opacity(.5)}.content-part .tab-card{background-color:#fff;border-radius:5px;color:var(--font-primary)}.content-part .tab-card .row{margin-top:2px}.content-part .search-part{width:100%;height:45px;position:relative;border-radius:5px;border:1px solid #d3dae6;padding:10px 0 10px 15px;display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.content-part .search-part input{width:auto;flex:1;color:var(--font-dark);font-size:var(--font12-input);font-weight:400;border:none;background:none;outline:none}.content-part .search-part .btn{background:#1e2541;border-radius:5px;padding:5px;width:41px;height:36px;margin-right:3px}.content-part .search-part .btn img{filter:brightness(0) invert(1)}.content-part textarea{width:100%;background:none}.content-part .tools-section{margin-left:5px}.content-part .tools-section .category-title{margin-bottom:5px;font-size:13px;font-weight:400;color:var(--font-primary);margin-left:5px}.content-part .tools-section .text-title{font-size:13px;margin-left:3px;color:var(--font-primary)}.content-part .tools-section input[type=checkbox]{border:2px solid #000!important;height:14px!important;width:15px!important;border-radius:2px!important;margin:2px}.content-part .tools-section input[type=checkbox]:checked{background-color:#000!important;border:2px solid #000!important}.content-part .tools-section input[type=checkbox]:checked:after{content:\"\\2713\";color:#fff;font-size:11px;position:relative;left:50%;bottom:-7px;transform:translate(-50%,-50%);font-weight:900;background:#000;width:15px;display:flex;justify-content:center;border:2px solid #000;height:14px;align-items:center;border-radius:2px}.content-part .form-check-input{width:43px;height:21px;margin:0 5px;background-color:#c7c7c7!important;background-image:url(/assets/images/icons/toogle-circle.svg);background-position:left 4px top 2px;background-size:15px;border:1px solid #c7c7c7;outline:none!important;box-shadow:none!important;border-radius:25px;cursor:pointer}.content-part .form-check-input:checked{background-position:right 4px top 2px;background-image:url(/assets/images/icons/toogle-circle.svg);background-color:#237b4b!important;border:1px solid #237b4b!important}.copyAll{position:absolute;right:0;text-align:end;top:-40px}.close-popup{position:absolute;right:7px;top:4px;width:25px}.form-control:focus{border:var(--bs-border-width) solid var(--bs-border-color)}::ng-deep .nav-link{color:#000!important}.back-btn{font-size:14px;transition:.2s;padding:7px 23px;border:none;height:auto;font-weight:500;min-width:8rem;min-height:45px;background:#d3dae6;color:#6c757dc7;border-radius:5px}.back-btn.edit{padding:5px 20px;min-height:20px;min-width:auto}.back-btn.add{background:#2e5b70;color:#fff}.save-btn{font-size:14px;transition:.2s;padding:7px 23px;border:none;height:auto;font-weight:500;min-width:8rem;min-height:45px;background-color:#4077ad;color:#fff;border-radius:5px}.create-btn{font-size:14px;transition:.2s;border:none;height:auto;font-weight:500;min-width:8rem;min-height:45px;background-color:#4077ad;color:#fff;border-radius:5px;padding:6px 8px;height:40px;min-width:9rem}.form-control{color:#333;background:none!important;font-size:small;height:45px}.form-control:focus{box-shadow:none!important}@media only screen and (min-width: 300px) and (max-width: 450px){.modal-content .close-popup{width:16px}}.loader{filter:blur(3px)}.edit-mode ::ng-deep .nav-tabs{display:none!important}::ng-deep accordion-group+accordion-group{margin-top:20px}.skill-preview-body label{font-weight:500;font-size:14px;color:#6b7280;padding-bottom:5px}.skill-preview-body p{margin:0}.skill-preview-body .value{font-size:13px;color:#212529}.skill-preview-card{border-radius:12px;margin-bottom:12px;transition:box-shadow .35s ease,transform .25s ease,border-color .25s ease;overflow:hidden}.continue-btn{background-color:#4077ad;padding:5px 20px;min-height:20px;font-weight:500;color:#fff;border-radius:5px}.action-btns{display:flex;justify-content:space-between;align-items:center}.actions{display:flex;justify-content:flex-end;gap:12px;margin-top:15px}.actions button{padding:10px 22px;border:none;border-radius:6px;font-size:14px;transition:all .2s ease;font-weight:500;min-width:8rem;min-height:45px}.actions .secondary{color:#6c757dc7;background-color:#e0e0e0}.actions .secondary:hover{background-color:#d5d5d5}.actions .primary{background-color:#2196f3;color:#fff}.actions .primary:hover{background-color:#1976d2}@media (max-width: 600px){.actions{flex-direction:column;align-items:stretch}.actions button{width:100%}}.icon-color{cursor:pointer;width:20px;height:20px;transition:transform .2s ease;filter:brightness(0) saturate(100%) invert(48%) sepia(8%) saturate(350%) hue-rotate(170deg) brightness(92%) contrast(88%)}.icon-color.edit{width:18px;height:18px}.icon-color.rotate{transform:rotate(180deg)}@media screen and (max-width: 767px){.tools-container{padding:0 10px}.tools-container .mob-view{display:flex;justify-content:space-between;flex-direction:column-reverse;gap:5px}.tools-container .mob-res{flex-direction:column-reverse;gap:5px}.footer-actions{flex-direction:column-reverse;gap:5px;margin-top:65px}.continue-btn{padding:7px 45px}.back-btn{width:100%}.continue-btn{padding:10px 43px}.save-btn{padding:10px 15px;width:unset;margin-left:0!important}}.save-btn{margin-left:15px}\n"], dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i3.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: i3.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i10.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "directive", type: Ng2LoadingSpinnerDirective, selector: "[ng2-loading]", inputs: ["ng2-loading", "config", "template"] }, { kind: "component", type: NgxStarsComponent, selector: "ngx-stars", inputs: ["maxStars", "initialStars", "readonly", "size", "color", "animation", "animationSpeed", "customPadding", "wholeStars", "customStarIcons"], outputs: ["ratingOutput"] }, { kind: "directive", type: i11$1.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "directive", type: i12.TabDirective, selector: "tab, [tab]", inputs: ["heading", "id", "disabled", "removable", "tabOrder", "customClass", "active"], outputs: ["selectTab", "deselect", "removed"], exportAs: ["tab"] }, { kind: "component", type: i12.TabsetComponent, selector: "tabset", inputs: ["vertical", "justified", "type"] }, { kind: "directive", type: i12.TabHeadingDirective, selector: "[tabHeading]" }, { kind: "component", type: i13.AccordionComponent, selector: "accordion", inputs: ["isAnimated", "closeOthers"] }, { kind: "component", type: i13.AccordionPanelComponent, selector: "accordion-group, accordion-panel", inputs: ["heading", "panelClass", "isDisabled", "isOpen"], outputs: ["isOpenChange"] }], animations: [
|
|
4982
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ToolsComponent, deps: [{ token: ToolService }, { token: UserToolService }, { token: i8.UntypedFormBuilder }, { token: UserService }, { token: UtilsService }, { token: CredentialingStore }, { token: i6.TokenService }, { token: UserDetailService }, { token: LIBRARY_CONFIG }], target: i0.ɵɵFactoryTarget.Component });
|
|
4983
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: ToolsComponent, isStandalone: false, selector: "app-tools", inputs: { roleData: "roleData", providerId: "providerId", providerName: "providerName" }, ngImport: i0, template: "<!-- Tool PREVIEW LIST -->\r\n<div class=\"tools-container\" *ngIf=\"store.toolStepView() === 'preview'\">\r\n <h5 class=\"title text-secondary\">Tools Preview</h5>\r\n <!-- <p class=\"subtitle\">Add Tools</p> -->\r\n <accordion [closeOthers]=\"true\" [isAnimated]=\"true\">\r\n <accordion-group *ngFor=\"let tool of userToolsPreview\" #accGroup (isOpenChange)=\"onAccordionChange(tool, $event)\">\r\n <div accordion-heading class=\"skill-preview-header d-flex justify-content-between align-items-center\">\r\n <span class=\"fw-semibold text-secondary\">\r\n {{ tool.toolName }}\r\n </span>\r\n <div class=\"d-flex align-items-center gap-2\">\r\n <!-- EDIT MODE BUTTONS -->\r\n <ng-container *ngIf=\"isEditMode && editingToolKey === getToolKey(tool); else viewActions\">\r\n <button class=\"back-btn edit me-3\" type=\"button\" (click)=\"backTool(accGroup)\">\r\n Cancel\r\n </button>\r\n <button class=\"continue-btn edit\" type=\"button\" (click)=\"saveUserTools()\" \r\n [disabled]=\"showLoader\">\r\n Update\r\n </button>\r\n </ng-container>\r\n <!-- VIEW MODE ACTIONS -->\r\n <ng-template #viewActions>\r\n <button type=\"button\" class=\"me-3\" (click)=\"editToolFromPreview(tool, accGroup, $event)\">\r\n <img class=\"icon-color\" src=\"/assets/images/icons/edit-text.png\" />\r\n </button>\r\n <!-- Arrow (ngx controls click) -->\r\n <img class=\"icon-color edit\" src=\"/assets/images/icons/arrow-down.svg\" alt=\"icon\"\r\n [class.rotate]=\"accGroup.isOpen\" />\r\n </ng-template>\r\n </div>\r\n </div>\r\n <!-- BODY -->\r\n <div class=\"skill-preview-body content-part mt-3\">\r\n <ng-container *ngIf=\"!isEditMode || editingToolKey !== getToolKey(tool)\">\r\n <div class=\"row g-3 row-gap-2\">\r\n <div class=\"col-lg-3 col-md-4 col-sm-6 col-12\">\r\n <label>Service Provider</label>\r\n <div class=\"value\">{{ tool.providerName }}</div>\r\n </div>\r\n <div class=\"col-lg-3 col-md-4 col-sm-6 col-12\">\r\n <label>Manufacturer</label>\r\n <div class=\"value\">{{ tool.make }}</div>\r\n </div>\r\n <div class=\"col-lg-3 col-md-4 col-sm-6 col-12\">\r\n <label>Years of Experience</label>\r\n <div class=\"value\">{{ tool.year }}</div>\r\n </div>\r\n <div class=\"col-lg-3 col-md-4 col-sm-6 col-12\">\r\n <label>Self Ability Rating</label>\r\n <ngx-stars [initialStars]=\"tool.starRating\" [maxStars]=\"5\" style=\"pointer-events: none\">\r\n </ngx-stars>\r\n </div>\r\n <div class=\"col-lg-3 col-md-4 col-sm-6 col-12\">\r\n <label>Active</label><br />\r\n <input type=\"checkbox\" class=\"form-check-input\" [checked]=\"tool.profileVisibility\" disabled>\r\n </div>\r\n <div class=\"col-lg-3 col-md-4 col-sm-6 col-12\">\r\n <label>Tools / Equipment</label>\r\n <div class=\"value\">{{ tool.toolName }}</div>\r\n </div>\r\n <div class=\"col-lg-3 col-md-4 col-sm-6 col-12\">\r\n <label>Model</label>\r\n <div class=\"value\">{{ tool.model }}</div>\r\n </div>\r\n <div class=\"col-lg-3 col-md-4 col-sm-6 col-12\">\r\n <label>Serial Number</label>\r\n <div class=\"value\">{{ tool.serialNumber }}</div>\r\n </div>\r\n <div class=\"col-12\">\r\n <label>Description</label>\r\n <div class=\"value\">{{ tool.notes }}</div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <!-- Edit Mode -->\r\n <ng-container *ngIf=\"isEditMode && editingToolKey === getToolKey(tool)\" [formGroup]=\"tab.at(0)\">\r\n <div class=\"row g-3\">\r\n <div class=\"col-lg-3 col-md-4 col-sm-6 col-12\">\r\n <label>Service Provider</label>\r\n <div class=\"value\">{{ tool.providerName }}</div>\r\n </div>\r\n <div class=\"col-lg-3 col-md-4 col-sm-6 col-12\">\r\n <label>Manufacturer</label> <br />\r\n <input class=\"form-control\" type=\"text\" formControlName=\"make\">\r\n </div>\r\n <div class=\"col-lg-3 col-md-4 col-sm-6 col-12\">\r\n <label>Years of Experience</label>\r\n <ng-select class=\"w-100\" [items]=\"expYears\" bindLabel=\"text\" bindValue=\"value\" formControlName=\"year\"\r\n [clearable]=\"false\" [searchable]=\"false\" placeholder=\"Select\">\r\n </ng-select>\r\n </div>\r\n <div class=\"col-lg-3 col-md-4 col-sm-6 col-12\">\r\n <label>Self Ability Rating</label>\r\n <ngx-stars [initialStars]=\"(tab.at(0).get('starRating')?.value || 0) / 2\" [maxStars]=\"5\"\r\n (rate)=\"onRatingSets($event)\">\r\n </ngx-stars>\r\n </div>\r\n <div class=\"col-lg-3 col-md-4 col-sm-6 col-12\">\r\n <label>Active</label><br />\r\n <input class=\"form-check-input\" type=\"checkbox\" formControlName=\"profileVisibility\">\r\n </div>\r\n <div class=\"col-lg-3 col-md-4 col-sm-6 col-12\">\r\n <label>Tools / Equipment</label>\r\n <input class=\"form-control\" [value]=\"tool.toolName\" readonly>\r\n </div>\r\n <div class=\"col-lg-3 col-md-4 col-sm-6 col-12\">\r\n <label>Model</label>\r\n <input class=\"form-control\" formControlName=\"model\">\r\n </div>\r\n <div class=\"col-lg-3 col-md-4 col-sm-6 col-12\">\r\n <label>Serial Number</label>\r\n <input class=\"form-control\" formControlName=\"serialNumber\">\r\n </div>\r\n <div class=\"col-12\">\r\n <label>Description</label>\r\n <textarea class=\"form-control\" rows=\"2\" formControlName=\"notes\"></textarea>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </accordion-group>\r\n </accordion>\r\n</div>\r\n\r\n<!-- Tool LIST -->\r\n<div class=\"tools-container\" *ngIf=\"store.toolStepView() === 'add'\">\r\n <h3 class=\"text-secondary\">Add Tools</h3>\r\n <p class=\"info\">Manage specialty tools and equipment</p>\r\n <div class=\"content-part\">\r\n <h6 class=\"text-secondary\"> Add User Tool</h6>\r\n <div class=\"sub-section\">\r\n <div class=\"row mt-2\">\r\n <div class=\"col-12 col-md-12 col-sm-12 ps-lg-0\">\r\n <div class=\"search-part\" *ngIf=\"!isEditMode\">\r\n <input type=\"text\" placeholder=\"Search / Add Tools here\" [(ngModel)]=\"searchToolQry\" (input)=\"getTools()\" />\r\n <button class=\"btn\" (click)=\"createNewTools()\" tooltip=\"Add Tool\">\r\n <img src=\"/assets/images/icons/plus.svg\" alt=\"search\" class=\"create-plus\" width=\"18px\" height=\"18px\" />\r\n </button>\r\n </div>\r\n <div *ngIf=\"!searchToolQry && toolSubmittedValue\" class=\"invalid-feedback is-invalid d-block\">\r\n Please Enter Tools Name\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"nameError\" class=\"invalid-feedback is-invalid d-block\">\r\n {{ nameError }}\r\n </div>\r\n <div class=\"col tools-section\" [ngClass]=\"showLoading ? 'loader':''\">\r\n <div class=\"row mt-2\" [ngStyle]=\"showLoader ? {'min-height': '150px'} : {}\">\r\n <div class=\"col-12 col-md-4\" *ngFor=\"let Tool of tools\">\r\n <div class=\"mt-2 d-flex\">\r\n <input (change)=\"onSelectedTools($event, Tool)\" [checked]=\"Tool.selected == true\" id=\"{{ Tool.id }}\"\r\n name=\"{{ Tool.id }}\" type=\"checkbox\" />\r\n <label class=\"text-title\" for=\"{{ Tool.id }}\">\r\n {{ Tool.name }}</label>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div [ngClass]=\"{ 'loader': showLoading,'pt-3': !showLoading,'edit-mode': isEditMode}\">\r\n <tabset #tabSet>\r\n <tab (selectTab)=\"setTabGroup(group)\" *ngFor=\"let group of tab?.controls; let index = index\"\r\n [label]=\"tabs[index]\" tab1 id=\"{{ tabs[index] }}\" #{{tabs[index]}}>\r\n <ng-template tabHeading *ngIf=\"!isEditMode\">\r\n <span class=\"text-secondary\">{{ tabs[index] }}</span>\r\n <button class=\"btn btn-sm\" (click)=\"removeTab(index, group.controls.toolId.value)\">\r\n <img src=\"/assets/images/icons/close-x-mark.svg\" alt=\"search\" width=\"16px\" height=\"16px\" />\r\n </button>\r\n </ng-template>\r\n <div [formGroup]=\"group\" class=\"tab-card\">\r\n <div class=\"card-body mt-3 position-relative\">\r\n <div class=\"col-12 col-md-3 mt-1 copyAll\" *ngIf=\"\r\n tab.controls.length > 1 && index == copyOptionIndex\r\n \">\r\n <label class=\"label\">Copy to All Tabs</label>\r\n <input class=\"form-check-input\" type=\"checkbox\" (click)=\"setCopyToAllTabs(index, group.value,viewTab)\"\r\n role=\"switch\" />\r\n </div>\r\n <div class=\"row\" [ngClass]=\"index == 0 && tab.controls.length > 1 ? 'mt-5' : '' \">\r\n <div class=\"col-12 col-md-2 mt-1\">\r\n <label class=\"label\">Self-ability Rating</label>\r\n <ngx-stars [initialStars]=\"initialStarts\" (ratingOutput)=\"onRatingSet($event,index)\"\r\n [ngClass]=\"{ 'is-invalid': userToolSubmitted && k.starRating.errors }\" [maxStars]=\"5\">\r\n </ngx-stars>\r\n <div *ngIf=\"userToolSubmitted && k.starRating.errors\" class=\"invalid-feedback\" [ngClass]=\"{\r\n 'is-invalid':\r\n userToolSubmitted && k.starRating.errors\r\n }\">\r\n <div *ngIf=\"k.starRating.errors.required\">\r\n Star Rating is required\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-12 col-md-2 mt-1\">\r\n <label class=\"label\">Profile Visibility</label><br />\r\n <input class=\"form-check-input\" type=\"checkbox\" formControlName=\"profileVisibility\" role=\"switch\" />\r\n </div>\r\n <div class=\"col-12 col-md-4 mt-1\">\r\n <label class=\"label\">Years of Experience</label>\r\n <ng-select class=\"w-100\" [items]=\"expYears\" bindLabel=\"text\" (change)=\"onYearChange(group)\"\r\n formControlName=\"year\" [ngClass]=\"{\r\n 'is-invalid': userToolSubmitted && k.year.errors\r\n }\" bindValue=\"value\" [closeOnSelect]=\"true\" [clearable]=\"false\" [searchable]=\"false\" placeholder=\"Select\"\r\n id=\"reqStates\"></ng-select>\r\n\r\n <div *ngIf=\"userToolSubmitted && k.year.errors\" class=\"invalid-feedback\" [ngClass]=\"{\r\n 'is-invalid': userToolSubmitted && k.year.errors\r\n }\">\r\n <div *ngIf=\"k.year.errors.required\">\r\n Year is required\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-12 col-md-4 mt-1\">\r\n <label class=\"label\">Manufacturer</label>\r\n <input id=\"make\" formControlName=\"make\" class=\"form-control\" type=\"text\"\r\n placeholder=\"Enter Manufacturer here\" (change)=\"onYearChange(group)\" />\r\n <!-- <div *ngIf=\"userToolSubmitted && k.make.errors\" class=\"invalid-feedback\" [ngClass]=\"{\r\n 'is-invalid': userToolSubmitted && k.make.errors\r\n }\">\r\n <div *ngIf=\"k.make.errors.required\">\r\n Manufacturer is required\r\n </div>\r\n </div> -->\r\n </div>\r\n </div>\r\n <div class=\"row pt-2\">\r\n <div class=\"col-12 col-md-4 mt-1\">\r\n <label class=\"label\">Model</label>\r\n <input id=\"model\" formControlName=\"model\" class=\"form-control\" type=\"text\"\r\n placeholder=\"Enter Model here\" (change)=\"onYearChange(group)\" />\r\n <!-- <div *ngIf=\"userToolSubmitted && k.model.errors\" class=\"invalid-feedback\" [ngClass]=\"{\r\n 'is-invalid': userToolSubmitted && k.model.errors\r\n }\">\r\n <div *ngIf=\"k.model.errors.required\">\r\n Model is required\r\n </div>\r\n </div> -->\r\n </div>\r\n\r\n <div class=\"col-12 col-md-4 mt-1\">\r\n <label class=\" label\">Serial Number</label>\r\n <input id=\"serialNumber\" formControlName=\"serialNumber\" class=\"form-control\" type=\"text\"\r\n placeholder=\"Enter Serial Number here\" />\r\n </div>\r\n <div class=\"col-12 col-md-4 mt-1\">\r\n <label class=\"label\">Comment</label>\r\n <textarea placeholder=\"Enter your comment here\" formControlName=\"notes\" class=\"form-control\"\r\n [ngClass]=\"{\r\n 'is-invalid': userToolSubmitted && k.notes.errors\r\n }\" rows=\"2\"></textarea>\r\n <div *ngIf=\"userToolSubmitted && k.notes.errors\" class=\"invalid-feedback\" [ngClass]=\"{\r\n 'is-invalid': userToolSubmitted && k.notes.errors\r\n }\">\r\n <div *ngIf=\"k.notes.errors.required\">\r\n Description is required\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </tab>\r\n </tabset>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"tools-container last pt-5 mt-5\">\r\n <div class=\"d-flex justify-content-between pt-3 mob-res\">\r\n <!-- (click)=\"reset()\" -->\r\n <button class=\"back-btn\" (click)=\"goBack()\">Back</button>\r\n <div class=\"mob-view\">\r\n <button class=\"back-btn me-3 add\" *ngIf=\"store.toolStepView() === 'preview'\" (click)=\"store.goToToolAdd()\">\r\n Add More Tools\r\n </button>\r\n <button [disabled]=\"homeLoader\" [ng2-loading]=\"homeLoader\" (click)=\"saveFinal()\"\r\n class=\"float-end save-btn\">\r\n Go To Dashboard\r\n </button>\r\n <button (click)=\"onToolContinue()\" *ngIf=\"store.toolStepView() === 'add'\" [disabled]=\"showLoader\" [ng2-loading]=\"showLoader\" class=\"float-end save-btn\">\r\n Add\r\n </button>\r\n </div>\r\n </div>\r\n</div>", styles: ["@charset \"UTF-8\";.tools-container{max-width:1000px;margin:40px auto;min-height:300px}.tools-container.last{min-height:unset}.tools-container h3{margin-bottom:5px;font-size:22px;font-weight:500}.tools-container .info{font-size:13px;color:#666;margin-bottom:30px}.content-part{background:#fff}.content-part p,.content-part div{font-size:small}.content-part div .label{font-size:12px!important;font-weight:700!important;padding-bottom:5px!important}.content-part .row{margin-top:-15px}.content-part .sub-section{padding:0 10px}.content-part .sub-section .title{font-size:16px;font-weight:400;color:var(--font-primary)}.content-part .sub-section .info-title{font-size:12px;font-weight:400;color:var(--font-primary);margin-left:5px}.content-part .sub-section .content{font-size:12px}.content-part .sub-section .subsection{font-weight:600;padding-top:10px;font-size:12px}.content-part .sub-section .subsection input{width:30%}.content-part .sub-section .icon{width:35px;filter:opacity(.5)}.content-part .tab-card{background-color:#fff;border-radius:5px;color:var(--font-primary)}.content-part .tab-card .row{margin-top:2px}.content-part .search-part{width:100%;height:45px;position:relative;border-radius:5px;border:1px solid #d3dae6;padding:10px 0 10px 15px;display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.content-part .search-part input{width:auto;flex:1;color:var(--font-dark);font-size:var(--font12-input);font-weight:400;border:none;background:none;outline:none}.content-part .search-part .btn{background:#1e2541;border-radius:5px;padding:5px;width:41px;height:36px;margin-right:3px}.content-part .search-part .btn img{filter:brightness(0) invert(1)}.content-part textarea{width:100%;background:none}.content-part .tools-section{margin-left:5px}.content-part .tools-section .category-title{margin-bottom:5px;font-size:13px;font-weight:400;color:var(--font-primary);margin-left:5px}.content-part .tools-section .text-title{font-size:13px;margin-left:3px;color:var(--font-primary)}.content-part .tools-section input[type=checkbox]{border:2px solid #000!important;height:14px!important;width:15px!important;border-radius:2px!important;margin:2px}.content-part .tools-section input[type=checkbox]:checked{background-color:#000!important;border:2px solid #000!important}.content-part .tools-section input[type=checkbox]:checked:after{content:\"\\2713\";color:#fff;font-size:11px;position:relative;left:50%;bottom:-7px;transform:translate(-50%,-50%);font-weight:900;background:#000;width:15px;display:flex;justify-content:center;border:2px solid #000;height:14px;align-items:center;border-radius:2px}.content-part .form-check-input{width:43px;height:21px;margin:0 5px;background-color:#c7c7c7!important;background-image:url(/assets/images/icons/toogle-circle.svg);background-position:left 4px top 2px;background-size:15px;border:1px solid #c7c7c7;outline:none!important;box-shadow:none!important;border-radius:25px;cursor:pointer}.content-part .form-check-input:checked{background-position:right 4px top 2px;background-image:url(/assets/images/icons/toogle-circle.svg);background-color:#237b4b!important;border:1px solid #237b4b!important}.copyAll{position:absolute;right:0;text-align:end;top:-40px}.close-popup{position:absolute;right:7px;top:4px;width:25px}.form-control:focus{border:var(--bs-border-width) solid var(--bs-border-color)}::ng-deep .nav-link{color:#000!important}.back-btn{font-size:14px;transition:.2s;padding:7px 23px;border:none;height:auto;font-weight:500;min-width:8rem;min-height:45px;background:#d3dae6;color:#6c757dc7;border-radius:5px}.back-btn.edit{padding:5px 20px;min-height:20px;min-width:auto}.back-btn.add{background:#2e5b70;color:#fff}.save-btn{font-size:14px;transition:.2s;padding:7px 23px;border:none;height:auto;font-weight:500;min-width:8rem;min-height:45px;background-color:#4077ad;color:#fff;border-radius:5px}.create-btn{font-size:14px;transition:.2s;border:none;height:auto;font-weight:500;min-width:8rem;min-height:45px;background-color:#4077ad;color:#fff;border-radius:5px;padding:6px 8px;height:40px;min-width:9rem}.form-control{color:#333;background:none!important;font-size:small;height:45px}.form-control:focus{box-shadow:none!important}@media only screen and (min-width: 300px) and (max-width: 450px){.modal-content .close-popup{width:16px}}.loader{filter:blur(3px)}.edit-mode ::ng-deep .nav-tabs{display:none!important}::ng-deep accordion-group+accordion-group{margin-top:20px}.skill-preview-body label{font-weight:500;font-size:14px;color:#6b7280;padding-bottom:5px}.skill-preview-body p{margin:0}.skill-preview-body .value{font-size:13px;color:#212529}.skill-preview-card{border-radius:12px;margin-bottom:12px;transition:box-shadow .35s ease,transform .25s ease,border-color .25s ease;overflow:hidden}.continue-btn{background-color:#4077ad;padding:5px 20px;min-height:20px;font-weight:500;color:#fff;border-radius:5px}.action-btns{display:flex;justify-content:space-between;align-items:center}.actions{display:flex;justify-content:flex-end;gap:12px;margin-top:15px}.actions button{padding:10px 22px;border:none;border-radius:6px;font-size:14px;transition:all .2s ease;font-weight:500;min-width:8rem;min-height:45px}.actions .secondary{color:#6c757dc7;background-color:#e0e0e0}.actions .secondary:hover{background-color:#d5d5d5}.actions .primary{background-color:#2196f3;color:#fff}.actions .primary:hover{background-color:#1976d2}@media (max-width: 600px){.actions{flex-direction:column;align-items:stretch}.actions button{width:100%}}.icon-color{cursor:pointer;width:20px;height:20px;transition:transform .2s ease;filter:brightness(0) saturate(100%) invert(48%) sepia(8%) saturate(350%) hue-rotate(170deg) brightness(92%) contrast(88%)}.icon-color.edit{width:18px;height:18px}.icon-color.rotate{transform:rotate(180deg)}@media screen and (max-width: 767px){.tools-container{padding:0 10px}.tools-container .mob-view{display:flex;justify-content:space-between;flex-direction:column-reverse;gap:5px}.tools-container .mob-res{flex-direction:column-reverse;gap:5px}.footer-actions{flex-direction:column-reverse;gap:5px;margin-top:65px}.continue-btn{padding:7px 45px}.back-btn{width:100%}.continue-btn{padding:10px 43px}.save-btn{padding:10px 15px;width:unset;margin-left:0!important}}.save-btn{margin-left:15px}\n"], dependencies: [{ kind: "directive", type: i11.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i11.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i11.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i8.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: i8.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i8.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i8.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i12.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "directive", type: Ng2LoadingSpinnerDirective, selector: "[ng2-loading]", inputs: ["ng2-loading", "config", "template"] }, { kind: "component", type: NgxStarsComponent, selector: "ngx-stars", inputs: ["maxStars", "initialStars", "readonly", "size", "color", "animation", "animationSpeed", "customPadding", "wholeStars", "customStarIcons"], outputs: ["ratingOutput"] }, { kind: "directive", type: i12$2.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "directive", type: i13.TabDirective, selector: "tab, [tab]", inputs: ["heading", "id", "disabled", "removable", "tabOrder", "customClass", "active"], outputs: ["selectTab", "deselect", "removed"], exportAs: ["tab"] }, { kind: "component", type: i13.TabsetComponent, selector: "tabset", inputs: ["vertical", "justified", "type"] }, { kind: "directive", type: i13.TabHeadingDirective, selector: "[tabHeading]" }, { kind: "component", type: i14.AccordionComponent, selector: "accordion", inputs: ["isAnimated", "closeOthers"] }, { kind: "component", type: i14.AccordionPanelComponent, selector: "accordion-group, accordion-panel", inputs: ["heading", "panelClass", "isDisabled", "isOpen"], outputs: ["isOpenChange"] }], animations: [
|
|
4799
4984
|
trigger('expandCollapse', [
|
|
4800
4985
|
state('open', style({
|
|
4801
4986
|
height: '*',
|
|
@@ -4834,7 +5019,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
4834
5019
|
transition('open <=> closed', animate('300ms ease'))
|
|
4835
5020
|
])
|
|
4836
5021
|
], template: "<!-- Tool PREVIEW LIST -->\r\n<div class=\"tools-container\" *ngIf=\"store.toolStepView() === 'preview'\">\r\n <h5 class=\"title text-secondary\">Tools Preview</h5>\r\n <!-- <p class=\"subtitle\">Add Tools</p> -->\r\n <accordion [closeOthers]=\"true\" [isAnimated]=\"true\">\r\n <accordion-group *ngFor=\"let tool of userToolsPreview\" #accGroup (isOpenChange)=\"onAccordionChange(tool, $event)\">\r\n <div accordion-heading class=\"skill-preview-header d-flex justify-content-between align-items-center\">\r\n <span class=\"fw-semibold text-secondary\">\r\n {{ tool.toolName }}\r\n </span>\r\n <div class=\"d-flex align-items-center gap-2\">\r\n <!-- EDIT MODE BUTTONS -->\r\n <ng-container *ngIf=\"isEditMode && editingToolKey === getToolKey(tool); else viewActions\">\r\n <button class=\"back-btn edit me-3\" type=\"button\" (click)=\"backTool(accGroup)\">\r\n Cancel\r\n </button>\r\n <button class=\"continue-btn edit\" type=\"button\" (click)=\"saveUserTools()\" \r\n [disabled]=\"showLoader\">\r\n Update\r\n </button>\r\n </ng-container>\r\n <!-- VIEW MODE ACTIONS -->\r\n <ng-template #viewActions>\r\n <button type=\"button\" class=\"me-3\" (click)=\"editToolFromPreview(tool, accGroup, $event)\">\r\n <img class=\"icon-color\" src=\"/assets/images/icons/edit-text.png\" />\r\n </button>\r\n <!-- Arrow (ngx controls click) -->\r\n <img class=\"icon-color edit\" src=\"/assets/images/icons/arrow-down.svg\" alt=\"icon\"\r\n [class.rotate]=\"accGroup.isOpen\" />\r\n </ng-template>\r\n </div>\r\n </div>\r\n <!-- BODY -->\r\n <div class=\"skill-preview-body content-part mt-3\">\r\n <ng-container *ngIf=\"!isEditMode || editingToolKey !== getToolKey(tool)\">\r\n <div class=\"row g-3 row-gap-2\">\r\n <div class=\"col-lg-3 col-md-4 col-sm-6 col-12\">\r\n <label>Service Provider</label>\r\n <div class=\"value\">{{ tool.providerName }}</div>\r\n </div>\r\n <div class=\"col-lg-3 col-md-4 col-sm-6 col-12\">\r\n <label>Manufacturer</label>\r\n <div class=\"value\">{{ tool.make }}</div>\r\n </div>\r\n <div class=\"col-lg-3 col-md-4 col-sm-6 col-12\">\r\n <label>Years of Experience</label>\r\n <div class=\"value\">{{ tool.year }}</div>\r\n </div>\r\n <div class=\"col-lg-3 col-md-4 col-sm-6 col-12\">\r\n <label>Self Ability Rating</label>\r\n <ngx-stars [initialStars]=\"tool.starRating\" [maxStars]=\"5\" style=\"pointer-events: none\">\r\n </ngx-stars>\r\n </div>\r\n <div class=\"col-lg-3 col-md-4 col-sm-6 col-12\">\r\n <label>Active</label><br />\r\n <input type=\"checkbox\" class=\"form-check-input\" [checked]=\"tool.profileVisibility\" disabled>\r\n </div>\r\n <div class=\"col-lg-3 col-md-4 col-sm-6 col-12\">\r\n <label>Tools / Equipment</label>\r\n <div class=\"value\">{{ tool.toolName }}</div>\r\n </div>\r\n <div class=\"col-lg-3 col-md-4 col-sm-6 col-12\">\r\n <label>Model</label>\r\n <div class=\"value\">{{ tool.model }}</div>\r\n </div>\r\n <div class=\"col-lg-3 col-md-4 col-sm-6 col-12\">\r\n <label>Serial Number</label>\r\n <div class=\"value\">{{ tool.serialNumber }}</div>\r\n </div>\r\n <div class=\"col-12\">\r\n <label>Description</label>\r\n <div class=\"value\">{{ tool.notes }}</div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <!-- Edit Mode -->\r\n <ng-container *ngIf=\"isEditMode && editingToolKey === getToolKey(tool)\" [formGroup]=\"tab.at(0)\">\r\n <div class=\"row g-3\">\r\n <div class=\"col-lg-3 col-md-4 col-sm-6 col-12\">\r\n <label>Service Provider</label>\r\n <div class=\"value\">{{ tool.providerName }}</div>\r\n </div>\r\n <div class=\"col-lg-3 col-md-4 col-sm-6 col-12\">\r\n <label>Manufacturer</label> <br />\r\n <input class=\"form-control\" type=\"text\" formControlName=\"make\">\r\n </div>\r\n <div class=\"col-lg-3 col-md-4 col-sm-6 col-12\">\r\n <label>Years of Experience</label>\r\n <ng-select class=\"w-100\" [items]=\"expYears\" bindLabel=\"text\" bindValue=\"value\" formControlName=\"year\"\r\n [clearable]=\"false\" [searchable]=\"false\" placeholder=\"Select\">\r\n </ng-select>\r\n </div>\r\n <div class=\"col-lg-3 col-md-4 col-sm-6 col-12\">\r\n <label>Self Ability Rating</label>\r\n <ngx-stars [initialStars]=\"(tab.at(0).get('starRating')?.value || 0) / 2\" [maxStars]=\"5\"\r\n (rate)=\"onRatingSets($event)\">\r\n </ngx-stars>\r\n </div>\r\n <div class=\"col-lg-3 col-md-4 col-sm-6 col-12\">\r\n <label>Active</label><br />\r\n <input class=\"form-check-input\" type=\"checkbox\" formControlName=\"profileVisibility\">\r\n </div>\r\n <div class=\"col-lg-3 col-md-4 col-sm-6 col-12\">\r\n <label>Tools / Equipment</label>\r\n <input class=\"form-control\" [value]=\"tool.toolName\" readonly>\r\n </div>\r\n <div class=\"col-lg-3 col-md-4 col-sm-6 col-12\">\r\n <label>Model</label>\r\n <input class=\"form-control\" formControlName=\"model\">\r\n </div>\r\n <div class=\"col-lg-3 col-md-4 col-sm-6 col-12\">\r\n <label>Serial Number</label>\r\n <input class=\"form-control\" formControlName=\"serialNumber\">\r\n </div>\r\n <div class=\"col-12\">\r\n <label>Description</label>\r\n <textarea class=\"form-control\" rows=\"2\" formControlName=\"notes\"></textarea>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </accordion-group>\r\n </accordion>\r\n</div>\r\n\r\n<!-- Tool LIST -->\r\n<div class=\"tools-container\" *ngIf=\"store.toolStepView() === 'add'\">\r\n <h3 class=\"text-secondary\">Add Tools</h3>\r\n <p class=\"info\">Manage specialty tools and equipment</p>\r\n <div class=\"content-part\">\r\n <h6 class=\"text-secondary\"> Add User Tool</h6>\r\n <div class=\"sub-section\">\r\n <div class=\"row mt-2\">\r\n <div class=\"col-12 col-md-12 col-sm-12 ps-lg-0\">\r\n <div class=\"search-part\" *ngIf=\"!isEditMode\">\r\n <input type=\"text\" placeholder=\"Search / Add Tools here\" [(ngModel)]=\"searchToolQry\" (input)=\"getTools()\" />\r\n <button class=\"btn\" (click)=\"createNewTools()\" tooltip=\"Add Tool\">\r\n <img src=\"/assets/images/icons/plus.svg\" alt=\"search\" class=\"create-plus\" width=\"18px\" height=\"18px\" />\r\n </button>\r\n </div>\r\n <div *ngIf=\"!searchToolQry && toolSubmittedValue\" class=\"invalid-feedback is-invalid d-block\">\r\n Please Enter Tools Name\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"nameError\" class=\"invalid-feedback is-invalid d-block\">\r\n {{ nameError }}\r\n </div>\r\n <div class=\"col tools-section\" [ngClass]=\"showLoading ? 'loader':''\">\r\n <div class=\"row mt-2\" [ngStyle]=\"showLoader ? {'min-height': '150px'} : {}\">\r\n <div class=\"col-12 col-md-4\" *ngFor=\"let Tool of tools\">\r\n <div class=\"mt-2 d-flex\">\r\n <input (change)=\"onSelectedTools($event, Tool)\" [checked]=\"Tool.selected == true\" id=\"{{ Tool.id }}\"\r\n name=\"{{ Tool.id }}\" type=\"checkbox\" />\r\n <label class=\"text-title\" for=\"{{ Tool.id }}\">\r\n {{ Tool.name }}</label>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div [ngClass]=\"{ 'loader': showLoading,'pt-3': !showLoading,'edit-mode': isEditMode}\">\r\n <tabset #tabSet>\r\n <tab (selectTab)=\"setTabGroup(group)\" *ngFor=\"let group of tab?.controls; let index = index\"\r\n [label]=\"tabs[index]\" tab1 id=\"{{ tabs[index] }}\" #{{tabs[index]}}>\r\n <ng-template tabHeading *ngIf=\"!isEditMode\">\r\n <span class=\"text-secondary\">{{ tabs[index] }}</span>\r\n <button class=\"btn btn-sm\" (click)=\"removeTab(index, group.controls.toolId.value)\">\r\n <img src=\"/assets/images/icons/close-x-mark.svg\" alt=\"search\" width=\"16px\" height=\"16px\" />\r\n </button>\r\n </ng-template>\r\n <div [formGroup]=\"group\" class=\"tab-card\">\r\n <div class=\"card-body mt-3 position-relative\">\r\n <div class=\"col-12 col-md-3 mt-1 copyAll\" *ngIf=\"\r\n tab.controls.length > 1 && index == copyOptionIndex\r\n \">\r\n <label class=\"label\">Copy to All Tabs</label>\r\n <input class=\"form-check-input\" type=\"checkbox\" (click)=\"setCopyToAllTabs(index, group.value,viewTab)\"\r\n role=\"switch\" />\r\n </div>\r\n <div class=\"row\" [ngClass]=\"index == 0 && tab.controls.length > 1 ? 'mt-5' : '' \">\r\n <div class=\"col-12 col-md-2 mt-1\">\r\n <label class=\"label\">Self-ability Rating</label>\r\n <ngx-stars [initialStars]=\"initialStarts\" (ratingOutput)=\"onRatingSet($event,index)\"\r\n [ngClass]=\"{ 'is-invalid': userToolSubmitted && k.starRating.errors }\" [maxStars]=\"5\">\r\n </ngx-stars>\r\n <div *ngIf=\"userToolSubmitted && k.starRating.errors\" class=\"invalid-feedback\" [ngClass]=\"{\r\n 'is-invalid':\r\n userToolSubmitted && k.starRating.errors\r\n }\">\r\n <div *ngIf=\"k.starRating.errors.required\">\r\n Star Rating is required\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-12 col-md-2 mt-1\">\r\n <label class=\"label\">Profile Visibility</label><br />\r\n <input class=\"form-check-input\" type=\"checkbox\" formControlName=\"profileVisibility\" role=\"switch\" />\r\n </div>\r\n <div class=\"col-12 col-md-4 mt-1\">\r\n <label class=\"label\">Years of Experience</label>\r\n <ng-select class=\"w-100\" [items]=\"expYears\" bindLabel=\"text\" (change)=\"onYearChange(group)\"\r\n formControlName=\"year\" [ngClass]=\"{\r\n 'is-invalid': userToolSubmitted && k.year.errors\r\n }\" bindValue=\"value\" [closeOnSelect]=\"true\" [clearable]=\"false\" [searchable]=\"false\" placeholder=\"Select\"\r\n id=\"reqStates\"></ng-select>\r\n\r\n <div *ngIf=\"userToolSubmitted && k.year.errors\" class=\"invalid-feedback\" [ngClass]=\"{\r\n 'is-invalid': userToolSubmitted && k.year.errors\r\n }\">\r\n <div *ngIf=\"k.year.errors.required\">\r\n Year is required\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-12 col-md-4 mt-1\">\r\n <label class=\"label\">Manufacturer</label>\r\n <input id=\"make\" formControlName=\"make\" class=\"form-control\" type=\"text\"\r\n placeholder=\"Enter Manufacturer here\" (change)=\"onYearChange(group)\" />\r\n <!-- <div *ngIf=\"userToolSubmitted && k.make.errors\" class=\"invalid-feedback\" [ngClass]=\"{\r\n 'is-invalid': userToolSubmitted && k.make.errors\r\n }\">\r\n <div *ngIf=\"k.make.errors.required\">\r\n Manufacturer is required\r\n </div>\r\n </div> -->\r\n </div>\r\n </div>\r\n <div class=\"row pt-2\">\r\n <div class=\"col-12 col-md-4 mt-1\">\r\n <label class=\"label\">Model</label>\r\n <input id=\"model\" formControlName=\"model\" class=\"form-control\" type=\"text\"\r\n placeholder=\"Enter Model here\" (change)=\"onYearChange(group)\" />\r\n <!-- <div *ngIf=\"userToolSubmitted && k.model.errors\" class=\"invalid-feedback\" [ngClass]=\"{\r\n 'is-invalid': userToolSubmitted && k.model.errors\r\n }\">\r\n <div *ngIf=\"k.model.errors.required\">\r\n Model is required\r\n </div>\r\n </div> -->\r\n </div>\r\n\r\n <div class=\"col-12 col-md-4 mt-1\">\r\n <label class=\" label\">Serial Number</label>\r\n <input id=\"serialNumber\" formControlName=\"serialNumber\" class=\"form-control\" type=\"text\"\r\n placeholder=\"Enter Serial Number here\" />\r\n </div>\r\n <div class=\"col-12 col-md-4 mt-1\">\r\n <label class=\"label\">Comment</label>\r\n <textarea placeholder=\"Enter your comment here\" formControlName=\"notes\" class=\"form-control\"\r\n [ngClass]=\"{\r\n 'is-invalid': userToolSubmitted && k.notes.errors\r\n }\" rows=\"2\"></textarea>\r\n <div *ngIf=\"userToolSubmitted && k.notes.errors\" class=\"invalid-feedback\" [ngClass]=\"{\r\n 'is-invalid': userToolSubmitted && k.notes.errors\r\n }\">\r\n <div *ngIf=\"k.notes.errors.required\">\r\n Description is required\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </tab>\r\n </tabset>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"tools-container last pt-5 mt-5\">\r\n <div class=\"d-flex justify-content-between pt-3 mob-res\">\r\n <!-- (click)=\"reset()\" -->\r\n <button class=\"back-btn\" (click)=\"goBack()\">Back</button>\r\n <div class=\"mob-view\">\r\n <button class=\"back-btn me-3 add\" *ngIf=\"store.toolStepView() === 'preview'\" (click)=\"store.goToToolAdd()\">\r\n Add More Tools\r\n </button>\r\n <button [disabled]=\"homeLoader\" [ng2-loading]=\"homeLoader\" (click)=\"saveFinal()\"\r\n class=\"float-end save-btn\">\r\n Go To Dashboard\r\n </button>\r\n <button (click)=\"onToolContinue()\" *ngIf=\"store.toolStepView() === 'add'\" [disabled]=\"showLoader\" [ng2-loading]=\"showLoader\" class=\"float-end save-btn\">\r\n Add\r\n </button>\r\n </div>\r\n </div>\r\n</div>", styles: ["@charset \"UTF-8\";.tools-container{max-width:1000px;margin:40px auto;min-height:300px}.tools-container.last{min-height:unset}.tools-container h3{margin-bottom:5px;font-size:22px;font-weight:500}.tools-container .info{font-size:13px;color:#666;margin-bottom:30px}.content-part{background:#fff}.content-part p,.content-part div{font-size:small}.content-part div .label{font-size:12px!important;font-weight:700!important;padding-bottom:5px!important}.content-part .row{margin-top:-15px}.content-part .sub-section{padding:0 10px}.content-part .sub-section .title{font-size:16px;font-weight:400;color:var(--font-primary)}.content-part .sub-section .info-title{font-size:12px;font-weight:400;color:var(--font-primary);margin-left:5px}.content-part .sub-section .content{font-size:12px}.content-part .sub-section .subsection{font-weight:600;padding-top:10px;font-size:12px}.content-part .sub-section .subsection input{width:30%}.content-part .sub-section .icon{width:35px;filter:opacity(.5)}.content-part .tab-card{background-color:#fff;border-radius:5px;color:var(--font-primary)}.content-part .tab-card .row{margin-top:2px}.content-part .search-part{width:100%;height:45px;position:relative;border-radius:5px;border:1px solid #d3dae6;padding:10px 0 10px 15px;display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.content-part .search-part input{width:auto;flex:1;color:var(--font-dark);font-size:var(--font12-input);font-weight:400;border:none;background:none;outline:none}.content-part .search-part .btn{background:#1e2541;border-radius:5px;padding:5px;width:41px;height:36px;margin-right:3px}.content-part .search-part .btn img{filter:brightness(0) invert(1)}.content-part textarea{width:100%;background:none}.content-part .tools-section{margin-left:5px}.content-part .tools-section .category-title{margin-bottom:5px;font-size:13px;font-weight:400;color:var(--font-primary);margin-left:5px}.content-part .tools-section .text-title{font-size:13px;margin-left:3px;color:var(--font-primary)}.content-part .tools-section input[type=checkbox]{border:2px solid #000!important;height:14px!important;width:15px!important;border-radius:2px!important;margin:2px}.content-part .tools-section input[type=checkbox]:checked{background-color:#000!important;border:2px solid #000!important}.content-part .tools-section input[type=checkbox]:checked:after{content:\"\\2713\";color:#fff;font-size:11px;position:relative;left:50%;bottom:-7px;transform:translate(-50%,-50%);font-weight:900;background:#000;width:15px;display:flex;justify-content:center;border:2px solid #000;height:14px;align-items:center;border-radius:2px}.content-part .form-check-input{width:43px;height:21px;margin:0 5px;background-color:#c7c7c7!important;background-image:url(/assets/images/icons/toogle-circle.svg);background-position:left 4px top 2px;background-size:15px;border:1px solid #c7c7c7;outline:none!important;box-shadow:none!important;border-radius:25px;cursor:pointer}.content-part .form-check-input:checked{background-position:right 4px top 2px;background-image:url(/assets/images/icons/toogle-circle.svg);background-color:#237b4b!important;border:1px solid #237b4b!important}.copyAll{position:absolute;right:0;text-align:end;top:-40px}.close-popup{position:absolute;right:7px;top:4px;width:25px}.form-control:focus{border:var(--bs-border-width) solid var(--bs-border-color)}::ng-deep .nav-link{color:#000!important}.back-btn{font-size:14px;transition:.2s;padding:7px 23px;border:none;height:auto;font-weight:500;min-width:8rem;min-height:45px;background:#d3dae6;color:#6c757dc7;border-radius:5px}.back-btn.edit{padding:5px 20px;min-height:20px;min-width:auto}.back-btn.add{background:#2e5b70;color:#fff}.save-btn{font-size:14px;transition:.2s;padding:7px 23px;border:none;height:auto;font-weight:500;min-width:8rem;min-height:45px;background-color:#4077ad;color:#fff;border-radius:5px}.create-btn{font-size:14px;transition:.2s;border:none;height:auto;font-weight:500;min-width:8rem;min-height:45px;background-color:#4077ad;color:#fff;border-radius:5px;padding:6px 8px;height:40px;min-width:9rem}.form-control{color:#333;background:none!important;font-size:small;height:45px}.form-control:focus{box-shadow:none!important}@media only screen and (min-width: 300px) and (max-width: 450px){.modal-content .close-popup{width:16px}}.loader{filter:blur(3px)}.edit-mode ::ng-deep .nav-tabs{display:none!important}::ng-deep accordion-group+accordion-group{margin-top:20px}.skill-preview-body label{font-weight:500;font-size:14px;color:#6b7280;padding-bottom:5px}.skill-preview-body p{margin:0}.skill-preview-body .value{font-size:13px;color:#212529}.skill-preview-card{border-radius:12px;margin-bottom:12px;transition:box-shadow .35s ease,transform .25s ease,border-color .25s ease;overflow:hidden}.continue-btn{background-color:#4077ad;padding:5px 20px;min-height:20px;font-weight:500;color:#fff;border-radius:5px}.action-btns{display:flex;justify-content:space-between;align-items:center}.actions{display:flex;justify-content:flex-end;gap:12px;margin-top:15px}.actions button{padding:10px 22px;border:none;border-radius:6px;font-size:14px;transition:all .2s ease;font-weight:500;min-width:8rem;min-height:45px}.actions .secondary{color:#6c757dc7;background-color:#e0e0e0}.actions .secondary:hover{background-color:#d5d5d5}.actions .primary{background-color:#2196f3;color:#fff}.actions .primary:hover{background-color:#1976d2}@media (max-width: 600px){.actions{flex-direction:column;align-items:stretch}.actions button{width:100%}}.icon-color{cursor:pointer;width:20px;height:20px;transition:transform .2s ease;filter:brightness(0) saturate(100%) invert(48%) sepia(8%) saturate(350%) hue-rotate(170deg) brightness(92%) contrast(88%)}.icon-color.edit{width:18px;height:18px}.icon-color.rotate{transform:rotate(180deg)}@media screen and (max-width: 767px){.tools-container{padding:0 10px}.tools-container .mob-view{display:flex;justify-content:space-between;flex-direction:column-reverse;gap:5px}.tools-container .mob-res{flex-direction:column-reverse;gap:5px}.footer-actions{flex-direction:column-reverse;gap:5px;margin-top:65px}.continue-btn{padding:7px 45px}.back-btn{width:100%}.continue-btn{padding:10px 43px}.save-btn{padding:10px 15px;width:unset;margin-left:0!important}}.save-btn{margin-left:15px}\n"] }]
|
|
4837
|
-
}], ctorParameters: () => [{ type: ToolService }, { type: UserToolService }, { type:
|
|
5022
|
+
}], ctorParameters: () => [{ type: ToolService }, { type: UserToolService }, { type: i8.UntypedFormBuilder }, { type: UserService }, { type: UtilsService }, { type: CredentialingStore }, { type: i6.TokenService }, { type: UserDetailService }, { type: undefined, decorators: [{
|
|
4838
5023
|
type: Inject,
|
|
4839
5024
|
args: [LIBRARY_CONFIG]
|
|
4840
5025
|
}] }], propDecorators: { roleData: [{
|
|
@@ -4953,6 +5138,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
4953
5138
|
|
|
4954
5139
|
class RoleSelectComponent {
|
|
4955
5140
|
store;
|
|
5141
|
+
userService;
|
|
4956
5142
|
userDocumentService;
|
|
4957
5143
|
router;
|
|
4958
5144
|
industrydata;
|
|
@@ -5009,8 +5195,9 @@ class RoleSelectComponent {
|
|
|
5009
5195
|
selectedJobs = signal([], ...(ngDevMode ? [{ debugName: "selectedJobs" }] : []));
|
|
5010
5196
|
selectedJobValues = [];
|
|
5011
5197
|
provider;
|
|
5012
|
-
constructor(store, userDocumentService, router, industrydata, userDetailService, fileService, provideruser, tokenService, fb) {
|
|
5198
|
+
constructor(store, userService, userDocumentService, router, industrydata, userDetailService, fileService, provideruser, tokenService, fb) {
|
|
5013
5199
|
this.store = store;
|
|
5200
|
+
this.userService = userService;
|
|
5014
5201
|
this.userDocumentService = userDocumentService;
|
|
5015
5202
|
this.router = router;
|
|
5016
5203
|
this.industrydata = industrydata;
|
|
@@ -5025,8 +5212,6 @@ class RoleSelectComponent {
|
|
|
5025
5212
|
providerName;
|
|
5026
5213
|
randomId = Math.random().toString(36).substring(2);
|
|
5027
5214
|
async ngOnInit() {
|
|
5028
|
-
this.getYears();
|
|
5029
|
-
this.getIndustries();
|
|
5030
5215
|
this.userForm = new FormGroup({
|
|
5031
5216
|
firstName: new FormControl('', Validators.required),
|
|
5032
5217
|
lastName: new FormControl('', Validators.required),
|
|
@@ -5045,6 +5230,8 @@ class RoleSelectComponent {
|
|
|
5045
5230
|
yearsOfExperince: new FormControl(null, Validators.required),
|
|
5046
5231
|
industries: new FormControl([]),
|
|
5047
5232
|
});
|
|
5233
|
+
this.getYears();
|
|
5234
|
+
this.getIndustries();
|
|
5048
5235
|
this.userId = await this.tokenService.getUserId();
|
|
5049
5236
|
// this.userId = 'd03dfde6-49ab-41a1-a11f-017469e06338'
|
|
5050
5237
|
this.useremail = await this.tokenService.getUserEmail();
|
|
@@ -5151,7 +5338,8 @@ class RoleSelectComponent {
|
|
|
5151
5338
|
return;
|
|
5152
5339
|
}
|
|
5153
5340
|
this.userDetails = data;
|
|
5154
|
-
this.
|
|
5341
|
+
this.userService.setUserDetails(this.userDetails);
|
|
5342
|
+
this.previewUrl = data?.headshotUrl || null;
|
|
5155
5343
|
this.user.headshotFileId = this.userDetails.headshotFileId;
|
|
5156
5344
|
this.user.headshotUrl = this.userDetails.headshotUrl;
|
|
5157
5345
|
console.log(this.previewUrl);
|
|
@@ -5547,13 +5735,13 @@ class RoleSelectComponent {
|
|
|
5547
5735
|
});
|
|
5548
5736
|
}
|
|
5549
5737
|
}
|
|
5550
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: RoleSelectComponent, deps: [{ token: CredentialingStore }, { token: UserDocumentService }, { token:
|
|
5551
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: RoleSelectComponent, isStandalone: false, selector: "app-role-select", inputs: { roleData: "roleData", cloudfrontUrl: "cloudfrontUrl", providerId: "providerId", providerName: "providerName" }, outputs: { backToParent: "backToParent" }, ngImport: i0, template: "<div class=\"role-selection-container\">\r\n <h2>Basic Details</h2>\r\n <p class=\"note\">We need basic information and a headshot for your profile</p>\r\n <div class=\"profile-field\">\r\n <div *ngIf=\"!isLoaded\" class=\"text-center p-4\">\r\n <div class=\"spinner-border\"></div>\r\n </div>\r\n <form *ngIf=\"isLoaded\" [formGroup]=\"userForm\" class=\"form pb-0\">\r\n <div class=\"d-flex flex-wrap justify-content-between row\">\r\n <div class=\"form-group col-md-4 col-sm-12 mt-3 mb-2\">\r\n <label class=\"note-label mb-2 mb-3\">First Name*</label>\r\n <input [ngClass]=\"{ 'is-invalid': u.firstName.invalid && (u.firstName.touched || u.firstName.dirty) }\"\r\n type=\"text\" class=\"form-control\" placeholder=\"First Name\" formControlName=\"firstName\" id=\"firstName\">\r\n <div *ngIf=\" u.firstName.invalid &&\r\n (u.firstName.touched || u.firstName.dirty)\" class=\"invalid-feedback\">\r\n <div class=\"ms-1\" *ngIf=\"u.firstName.errors.required\">\r\n First Name is required\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group col-md-4 col-sm-12 mt-3 mb-2\">\r\n <label class=\"note-label mb-2 mb-3\">Last Name*</label>\r\n\r\n <input type=\"text\" class=\"form-control\" placeholder=\"Last Name\" formControlName=\"lastName\" id=\"lastName\"\r\n [ngClass]=\"{\r\n 'is-invalid':\r\n u.lastName.invalid && (u.lastName.touched || u.lastName.dirty)\r\n }\" />\r\n\r\n <div class=\"invalid-feedback\" *ngIf=\"\r\n u.lastName.invalid &&\r\n (u.lastName.touched || u.lastName.dirty)\r\n \">\r\n <div class=\"ms-1\" *ngIf=\"u.lastName.errors?.required\">\r\n Last Name is required\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"form-group col-md-4 col-sm-12 mt-3 mb-2\">\r\n <label class=\"note-label mb-2\">Email*</label>\r\n\r\n <input type=\"text\" class=\"form-control\" placeholder=\"Email\" formControlName=\"email\" id=\"email\" [ngClass]=\"{\r\n 'is-invalid':\r\n u.email.invalid && (u.email.touched || u.email.dirty)\r\n }\" />\r\n\r\n <div class=\"invalid-feedback\" *ngIf=\"\r\n u.email.invalid &&\r\n (u.email.touched || u.email.dirty)\r\n \">\r\n <div class=\"ms-1\" *ngIf=\"u.email.errors?.required\">\r\n Email is required\r\n </div>\r\n <div class=\"ms-1\" *ngIf=\"u.email.errors?.email\">\r\n Please enter a valid email address\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"d-flex flex-wrap justify-content-between row\">\r\n <div class=\"form-group col-md-4 col-sm-12 mt-3 mb-2\">\r\n <label class=\"note-label mb-2\">Home Address 1*</label>\r\n\r\n <input type=\"text\" autocomplete=\"new-address-view\" name=\"random-address-{{randomId}}\" class=\"form-control\" placeholder=\"Home Address 1\" formControlName=\"address1\" id=\"address1\"\r\n ngx-google-places-autocomplete [options]=\"options\" (onAddressChange)=\"AddressChangeUser($event)\" [ngClass]=\"{\r\n 'is-invalid':\r\n u.address1.invalid && (u.address1.touched || u.address1.dirty)\r\n }\" />\r\n\r\n <div class=\"invalid-feedback\" *ngIf=\"\r\n u.address1.invalid &&\r\n (u.address1.touched || u.address1.dirty)\r\n \">\r\n <div class=\"ms-1\" *ngIf=\"u.address1.errors?.required\">\r\n Home Address 1 is required\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group col-md-4 col-sm-12 mt-3 mb-2\">\r\n <label class=\"note-label mb-2\">City*</label>\r\n\r\n <input type=\"text\" class=\"form-control\" id=\"City\" placeholder=\"City\" formControlName=\"city\" [ngClass]=\"{\r\n 'is-invalid':\r\n u.city.invalid && (u.city.touched || u.city.dirty)\r\n }\" />\r\n\r\n <div class=\"invalid-feedback\" *ngIf=\"\r\n u.city.invalid &&\r\n (u.city.touched || u.city.dirty)\r\n \">\r\n <div class=\"ms-1\" *ngIf=\"u.city.errors?.required\">\r\n City is required\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group col-md-4 col-sm-12 mt-3 mb-2\">\r\n <label class=\"note-label mb-2\">State*</label>\r\n\r\n <input type=\"text\" autocomplete=\"new-state-view\" name=\"random-state-{{randomId}}\" class=\"form-control\" id=\"State\" placeholder=\"State\" formControlName=\"state\" [ngClass]=\"{\r\n 'is-invalid':\r\n u.state.invalid && (u.state.touched || u.state.dirty)\r\n }\" />\r\n\r\n <div class=\"invalid-feedback\" *ngIf=\"\r\n u.state.invalid &&\r\n (u.state.touched || u.state.dirty)\r\n \">\r\n <div class=\"ms-1\" *ngIf=\"u.state.errors?.required\">\r\n State is required\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n\r\n\r\n </div>\r\n <!-- <div class=\"d-flex flex-wrap justify-content-between row\">\r\n <div class=\"form-group col-md-4 col-sm-12 mt-3 mb-2\">\r\n <input type=\"text\" class=\"form-control\" id=\"homeAddress2\" formControlName=\"address2\"\r\n placeholder=\"Home Address 2\" />\r\n </div>\r\n\r\n <div class=\"form-group col-md-4 col-sm-12 mt-3 mb-2\">\r\n <input type=\"text\" class=\"form-control\" id=\"City\" placeholder=\"City\" formControlName=\"city\" [ngClass]=\"{\r\n 'is-invalid':\r\n u.city.invalid && (u.city.touched || u.city.dirty)\r\n }\" />\r\n\r\n <div class=\"invalid-feedback\" *ngIf=\"\r\n u.city.invalid &&\r\n (u.city.touched || u.city.dirty)\r\n \">\r\n <div class=\"ms-1\" *ngIf=\"u.city.errors?.required\">\r\n City is required\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group col-md-4 col-sm-12 mt-3 mb-2\">\r\n <input type=\"text\" class=\"form-control\" id=\"State\" placeholder=\"State\" formControlName=\"state\" [ngClass]=\"{\r\n 'is-invalid':\r\n u.state.invalid && (u.state.touched || u.state.dirty)\r\n }\" />\r\n\r\n <div class=\"invalid-feedback\" *ngIf=\"\r\n u.state.invalid &&\r\n (u.state.touched || u.state.dirty)\r\n \">\r\n <div class=\"ms-1\" *ngIf=\"u.state.errors?.required\">\r\n State is required\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div> -->\r\n <div class=\"d-flex flex-wrap justify-content-between row\">\r\n\r\n\r\n <div class=\"form-group col-md-4 col-sm-12 mt-3 mb-2\">\r\n <label class=\"note-label mb-2\">Zip Code*</label>\r\n\r\n <input type=\"text\" class=\"form-control\" id=\"Zipcode\" placeholder=\"Zipcode\" formControlName=\"zipcode\"\r\n [textMask]=\"{ mask: zipcodeMask }\" [ngClass]=\"{\r\n 'is-invalid':\r\n u.zipcode.invalid && (u.zipcode.touched || u.zipcode.dirty)\r\n }\" />\r\n\r\n <div class=\"invalid-feedback\" *ngIf=\"\r\n u.zipcode.invalid &&\r\n (u.zipcode.touched || u.zipcode.dirty)\r\n \">\r\n <div class=\"ms-1\" *ngIf=\"u.zipcode.errors?.required\">\r\n Zipcode is required\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group col-md-4 col-sm-12 mt-3 mb-2\">\r\n <label class=\"note-label mb-2\">Country*</label>\r\n\r\n <input type=\"text\" class=\"form-control\" id=\"Country\" placeholder=\"Country\" formControlName=\"country\"\r\n [ngClass]=\"{\r\n 'is-invalid':\r\n u.country.invalid && (u.country.touched || u.country.dirty)\r\n }\" />\r\n\r\n <div class=\"invalid-feedback\" *ngIf=\"\r\n u.country.invalid &&\r\n (u.country.touched || u.country.dirty)\r\n \">\r\n <div class=\"ms-1\" *ngIf=\"u.country.errors?.required\">\r\n Country is required\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group col-md-4 col-sm-12 mt-3 mb-2\">\r\n <label class=\"note-label mb-2\">Phone Number*</label>\r\n\r\n <input type=\"text\" autocomplete=\"new-phone-view\" name=\"random-phone-{{randomId}}\" class=\"form-control block shadow-none\" id=\"inputPhone\" \r\n placeholder=\"Phone Number\" autocomplete=\"off\" formControlName=\"phoneNumber\" maxlength=\"14\"\r\n (input)=\"phoneMask($event)\" [ngClass]=\"{\r\n 'is-invalid':\r\n u.phoneNumber.invalid &&\r\n (u.phoneNumber.touched || u.phoneNumber.dirty)\r\n }\" />\r\n\r\n <div class=\"invalid-feedback\" *ngIf=\"\r\n u.phoneNumber.invalid &&\r\n (u.phoneNumber.touched || u.phoneNumber.dirty)\r\n \">\r\n <div class=\"ms-1\" *ngIf=\"u.phoneNumber.errors?.required\">\r\n Phone Number is required\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n </div>\r\n <div class=\"d-flex flex-wrap justify-content-between row\">\r\n\r\n <div class=\"form-group col-md-4 col-sm-12 mt-3\">\r\n <label class=\"note-label mb-2\">Years of experience*</label>\r\n\r\n <ng-select class=\"w-100\" [items]=\"expYears\" [searchable]=\"false\" [clearable]=\"false\" bindLabel=\"text\"\r\n formControlName=\"yearsOfExperince\" [ngClass]=\"{ 'is-invalid':u?.yearsOfExperince?.errors }\"\r\n bindValue=\"value\" [closeOnSelect]=\"true\" placeholder=\"Years of experience\"\r\n id=\"yearsOfExperince\"></ng-select>\r\n\r\n <div *ngIf=\" u.yearsOfExperince.invalid &&\r\n (u.yearsOfExperince.touched || u.yearsOfExperince.dirty)\" class=\"invalid-feedback\">\r\n <div class=\"ms-1\" *ngIf=\"u.yearsOfExperince.errors.required\">\r\n Years Of Experience is required\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group col-md-4 col-sm-12\r\n mt-3 mb-2\">\r\n <label class=\"note-label mb-2\">Job Title*</label>\r\n\r\n <ng-select class=\"w-100\" class=\"custom-ng-select\" [items]=\"jobTitles\" bindLabel=\"text\" bindValue=\"value\"\r\n [multiple]=\"true\" [searchable]=\"false\" [clearable]=\"false\"\r\n [ngClass]=\"{ 'is-invalid':u?.userJobTitle?.errors }\" id=\"userJobTitle\" [closeOnSelect]=\"false\"\r\n placeholder=\"Select Job Titles\" formControlName=\"userJobTitle\">\r\n </ng-select>\r\n <div *ngIf=\" u.userJobTitle.invalid &&\r\n (u.userJobTitle.touched || u.userJobTitle.dirty)\" class=\"invalid-feedback\">\r\n <div class=\"ms-1\" *ngIf=\"u.userJobTitle.errors.required\">\r\n Job title is required\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group col-md-4 col-sm-12 mt-3 position-relative\">\r\n <label class=\"note-label mb-2\">Profile image</label>\r\n\r\n <input #uploadFile type=\"file\" accept=\"image/*\" (change)=\"uploadUserImage($event)\" class=\"d-none\" />\r\n <input [(ngModel)]=\"fileName\" readonly type=\"text\" class=\"form-control pe-5\"\r\n placeholder=\"Upload Profile Picture\" (click)=\"uploadFile.click()\" />\r\n <img src=\"assets/images/icons/upload.svg\" alt=\"Upload\" class=\"upload-icon\" (click)=\"uploadFile.click()\" />\r\n </div>\r\n\r\n\r\n\r\n\r\n\r\n\r\n <div class=\"res d-flex justify-content-between\">\r\n <div class=\"form-group col-md-4 col-sm-12 mt-3 mb-2\">\r\n <label class=\"note-label mb-2\">Industry</label>\r\n\r\n <ng-select class=\"w-100 custom-ng-select\" formControlName=\"industries\" [items]=\"industries\"\r\n [multiple]=\"true\" [searchable]=\"false\" [clearable]=\"true\" bindLabel=\"industryName\" bindValue=\"id\"\r\n [closeOnSelect]=\"false\" id=\"industries\" placeholder=\"Select Industry\" [loading]=\"isIndustriesLoading\">\r\n\r\n <!-- Dropdown option -->\r\n <ng-template ng-option-tmp let-item=\"item\" let-item$=\"item$\">\r\n <span class=\"form-check\">\r\n <span class=\"form-check-input-wrapper\">\r\n <span class=\"custom-checkbox1\" [class.checked]=\"item$.selected\"></span>\r\n </span>\r\n {{ item.industryName }}\r\n </span>\r\n </ng-template>\r\n\r\n <!-- Selected label -->\r\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\r\n <span class=\"ng-value-label\">{{ item.industryName }}</span>\r\n <span class=\"ng-value-icon right\" (click)=\"clear(item)\">\r\n <img src=\"/assets/images/icons/close-sm-circle.svg\" />\r\n </span>\r\n </ng-template>\r\n <div *ngIf=\"u.industries.invalid &&\r\n (u.industries.touched || u.industries.dirty)\" class=\"invalid-feedback\">\r\n <div class=\"ms-1\" *ngIf=\"u.industries.errors.required\">\r\n Industry is required\r\n </div>\r\n </div>\r\n </ng-select>\r\n </div>\r\n <div class=\"form-group col-sm-12 col-md-4\">\r\n <div class=\"image-wrapper\">\r\n <!-- Spinner -->\r\n <div *ngIf=\"isImageLoading\" class=\"spinner\"></div>\r\n <!-- Image -->\r\n <div *ngIf=\"previewUrl\">\r\n <img [src]=\"cloudfrontUrl+previewUrl\" class=\"preview-image mt-2\" />\r\n </div>\r\n\r\n </div>\r\n <div *ngIf=\"userError\" class=\"invalid-feedback\">\r\n <div>{{ userError }}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n\r\n\r\n <div class=\"d-flex flex-wrap justify-content-between row\">\r\n <h2 class=\"mb-2\" style=\"margin-top: 50px;\">Resume Submission</h2>\r\n <p class=\"note mb-2\">Submit your resume here</p>\r\n <div class=\"col-sm-12 col-md-8\">\r\n <div class=\"form-group mb-2 position-relative\">\r\n <input #fileInput type=\"file\" accept=\"/*\" (change)=\"selectFile($event)\" class=\"d-none\" />\r\n <input [(ngModel)]=\"resumeName\" readonly type=\"text\" class=\"form-control pe-5\"\r\n placeholder=\"Upload Resume Here\" (click)=\"fileInput.click()\" />\r\n\r\n <img src=\"assets/images/icons/upload.svg\" alt=\"Upload\" class=\"upload-icon-resume\"\r\n (click)=\"fileInput.click()\" />\r\n <div *ngIf=\"isResumeRequired\" class=\"invalid-feedback d-block ms-1\">\r\n Upload your resume\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n <div class=\"d-flex flex-wrap justify-content-between row\">\r\n <div class=\"col-sm-12 col-md-8\" style=\"padding-left: 15px;\">\r\n <div class=\"resume-wrapper\">\r\n <div *ngIf=\"isresumeLoading\" class=\"spinner-resume\"></div>\r\n\r\n <a *ngIf=\"list\" [href]=\"list.fileUrl\" class=\"mt-2\" target=\"_blank\">\r\n <span>{{ list.fileName }}</span>\r\n </a>\r\n </div>\r\n <div *ngIf=\"userError\" class=\"invalid-feedback\">\r\n <div>{{ userError }}</div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"userError\" class=\"invalid-feedback\">\r\n <div>\r\n {{userError}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"actions\">\r\n <button type=\"button\" class=\"secondary\" (click)=\"onBackClick()\">Back</button>\r\n <div class=\"right-actions\">\r\n\r\n <button type=\"button\" class=\"primary ct-btn\" [disabled]=\"showLoader\" [ng2-loading]=\"showLoader\"\r\n (click)=\"saveFinal()\">\r\n Continue\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n<!-- \r\n<div class=\"producer-type-container\">\r\n <h2 class=\"mb-2\" style=\"margin-top: 50px;\">Type of jobs</h2>\r\n <p class=\"notes\">What type of job are you interested in</p>\r\n <div class=\"job-list\">\r\n <div class=\"job-item\" *ngFor=\"let job of jobTypes\" [class.selected]=\"isSelected(job)\" (click)=\"toggleJob(job)\">\r\n <span class=\"plus\">+</span> {{ job.text }}\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"actions\">\r\n <button type=\"button\" class=\"secondary\" (click)=\"onBackClick()\">Back</button>\r\n <div class=\"right-actions\">\r\n\r\n <button type=\"button\" class=\"primary\" [disabled]=\"showLoader\" [ng2-loading]=\"showLoader\" (click)=\"saveFinal()\">\r\n Continue\r\n </button>\r\n </div>\r\n</div> -->", styles: [".preview-image{width:250px;height:100px;object-fit:contain;margin-top:5px;border-radius:5px}.upload-icon-resume{position:absolute;right:25px;top:17px;width:18px;height:18px;cursor:pointer}.upload-icon{position:absolute;right:25px;top:45px;width:18px;height:18px;cursor:pointer}::ng-deep .ng-select .ng-select-container{width:101%;border-radius:7px}.form-control{font-size:14px;color:#6b7280}.role-selection-container{max-width:950px;margin:0 auto;min-height:300px;padding:2rem}.role-selection-container h2{margin-bottom:.5rem;font-size:1.5rem;font-weight:600}.role-selection-container .note{font-size:.875rem;color:#6b7280}.role-selection-container .note-label{font-size:.875rem;color:#6b7280;padding-left:5px}.role-selection-container .dropdown-wrapper{display:flex;gap:.5rem;margin-bottom:1rem}.role-selection-container .dropdown-wrapper select{flex:1;padding:.5rem;border:1px solid #d1d5db;border-radius:.375rem}.role-selection-container .dropdown-wrapper .add-btn{padding:.5rem 1rem;background-color:#4077ad;color:#fff;border:none;border-radius:.375rem;cursor:pointer}.role-selection-container .dropdown-wrapper .add-btn:disabled{background-color:#d1d5db;cursor:not-allowed}.role-selection-container .selected-roles{display:flex;flex-direction:column;gap:.5rem;margin-bottom:1.5rem}.role-selection-container .selected-roles .role-card{display:flex;justify-content:space-between;align-items:center;padding:.5rem 1rem;border-radius:.375rem;background-color:#fef3c7;color:#92400e}.role-selection-container .selected-roles .role-card .remove-btn{background:none;border:none;font-size:1.2rem;font-weight:700;cursor:pointer;color:#b91c1c}.role-selection-container .navigation-buttons{display:flex;justify-content:flex-end;gap:1rem;margin-top:70px;margin-bottom:50px}.role-selection-container .navigation-buttons .back{padding:.5rem 1rem;border:1px solid #d1d5db;border-radius:.375rem;background:#fff;cursor:pointer;min-width:18%;min-height:50px}.role-selection-container .navigation-buttons .next{padding:.5rem 1rem;background-color:#4077ad;color:#fff;border-radius:.375rem;cursor:pointer;min-width:18%;min-height:50px}.role-selection-container .navigation-buttons .next:disabled{background-color:#d1d5db;cursor:not-allowed}.image-wrapper{position:relative;width:150px;height:150px}.resume-wrapper{position:relative;width:550px;height:1px}.spinner{width:40px;height:40px;border:4px solid #e0e0e0;border-top:4px solid #9e9e9e;border-radius:50%;position:absolute;top:-32%;left:163%;margin-top:-2px;margin-left:-7px;animation:spin 1s linear infinite}.spinner-resume{width:40px;height:40px;border:4px solid #e0e0e0;border-top:4px solid #9e9e9e;border-radius:50%;position:absolute;top:-32%;left:99%;margin-top:-51px;margin-left:-20px;animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.profile-field{margin-top:-10px}.profile-field input{line-height:30px}.producer-type-container{max-width:1000px;margin:0 auto;min-height:300px}.producer-type-container h2{font-size:1.5rem;font-weight:600;margin-bottom:.5rem}.producer-type-container p{font-size:.875rem;color:#6b7280;margin-bottom:1.5rem}.producer-type-container .job-list{display:flex;flex-direction:column;gap:.75rem;margin-bottom:2rem}.producer-type-container .job-list .job-item{padding:.75rem 1rem;font-size:14px;border:1px solid #d1d5db;border-radius:.375rem;cursor:pointer;display:flex;align-items:center;gap:.5rem;transition:all .2s}.producer-type-container .job-list .job-item.selected{border-color:#4077ad;background-color:#eff6ff}.producer-type-container .job-list .job-item .plus{font-weight:700}.producer-type-container .navigation-buttons{display:flex;justify-content:flex-end;gap:.5rem;margin:50px 0}.producer-type-container .navigation-buttons .back{padding:.5rem 1rem;border:1px solid #d1d5db;border-radius:.375rem;background:#fff;cursor:pointer}.producer-type-container .navigation-buttons .next{padding:.5rem 1rem;background-color:#4077ad;color:#fff;border-radius:.375rem;cursor:pointer}.producer-type-container .navigation-buttons .next:disabled{background-color:#d1d5db;cursor:not-allowed}.actions{display:flex;justify-content:space-between;margin:50px 0 27px}.right-actions{display:flex;gap:16px}button{height:44px;min-width:120px;border:none;font-size:14px;cursor:pointer;border-radius:5px}button.primary{background-color:#4077ad;color:#fff;border-radius:5px}button.secondary{background-color:#d5d6da;color:#525862;border-radius:5px}button:disabled{background-color:#9ca3af;cursor:not-allowed}::ng-deep .custom-ng-select.ng-select-multiple .ng-select-container{min-height:45px!important;height:auto!important;display:flex;align-items:center;overflow:visible!important}::ng-deep .custom-ng-select.ng-select-multiple .ng-value-container{flex-wrap:wrap!important;overflow:visible!important;padding-top:2px;padding-bottom:2px}::ng-deep .custom-ng-select.ng-select-multiple .ng-value{margin-bottom:4px}::ng-deep .custom-ng-select.ng-select-multiple .ng-arrow-wrapper{display:flex;align-items:center;height:100%}:host ::ng-deep .custom-ng-select .ng-select-container{padding:0!important;font-size:13px!important}::ng-deep .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{padding-top:3px;font-size:14px;color:#6b7280}::ng-deep .ng-select .ng-select-container{padding-top:3px;font-size:14px;color:#6b7280}@media screen and (max-width: 767px){.actions{margin:10px 0;flex-direction:column-reverse;gap:5px}.res{flex-direction:column-reverse}.spinner{width:24px;height:24px;top:-22%;left:180%}.spinner-resume{width:25px;height:25px;top:-22%;left:32%}.ct-btn{width:100%;margin-top:45px}}\n"], dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i10.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "directive", type: i10.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }, { kind: "directive", type: i10.NgLabelTemplateDirective, selector: "[ng-label-tmp]" }, { kind: "directive", type: Ng2LoadingSpinnerDirective, selector: "[ng2-loading]", inputs: ["ng2-loading", "config", "template"] }, { kind: "directive", type: GooglePlaceDirective, selector: "[ngx-google-places-autocomplete]", inputs: ["options"], outputs: ["onAddressChange"], exportAs: ["ngx-places"] }, { kind: "directive", type: MaskedInputDirective, selector: "[textMask]", inputs: ["textMask"], exportAs: ["textMask"] }] });
|
|
5738
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: RoleSelectComponent, deps: [{ token: CredentialingStore }, { token: UserService }, { token: UserDocumentService }, { token: i2.Router }, { token: IndustryService }, { token: UserDetailService }, { token: FileService }, { token: ProvidersService }, { token: i6.TokenService }, { token: i8.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
|
|
5739
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: RoleSelectComponent, isStandalone: false, selector: "app-role-select", inputs: { roleData: "roleData", cloudfrontUrl: "cloudfrontUrl", providerId: "providerId", providerName: "providerName" }, outputs: { backToParent: "backToParent" }, ngImport: i0, template: "<div class=\"role-selection-container\">\r\n <h2>Basic Details</h2>\r\n <p class=\"note\">We need basic information and a headshot for your profile</p>\r\n <div class=\"profile-field\">\r\n <div *ngIf=\"!isLoaded\" class=\"text-center p-4\">\r\n <div class=\"spinner-border\"></div>\r\n </div>\r\n <form *ngIf=\"isLoaded\" [formGroup]=\"userForm\" class=\"form pb-0\">\r\n <div class=\"d-flex flex-wrap justify-content-between row\">\r\n <div class=\"form-group col-md-4 col-sm-12 mt-3 mb-2\">\r\n <label class=\"note-label mb-2 mb-3\">First Name*</label>\r\n <input [ngClass]=\"{ 'is-invalid': u.firstName.invalid && (u.firstName.touched || u.firstName.dirty) }\"\r\n type=\"text\" class=\"form-control\" placeholder=\"First Name\" formControlName=\"firstName\" id=\"firstName\">\r\n <div *ngIf=\" u.firstName.invalid &&\r\n (u.firstName.touched || u.firstName.dirty)\" class=\"invalid-feedback\">\r\n <div class=\"ms-1\" *ngIf=\"u.firstName.errors.required\">\r\n First Name is required\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group col-md-4 col-sm-12 mt-3 mb-2\">\r\n <label class=\"note-label mb-2 mb-3\">Last Name*</label>\r\n\r\n <input type=\"text\" class=\"form-control\" placeholder=\"Last Name\" formControlName=\"lastName\" id=\"lastName\"\r\n [ngClass]=\"{\r\n 'is-invalid':\r\n u.lastName.invalid && (u.lastName.touched || u.lastName.dirty)\r\n }\" />\r\n\r\n <div class=\"invalid-feedback\" *ngIf=\"\r\n u.lastName.invalid &&\r\n (u.lastName.touched || u.lastName.dirty)\r\n \">\r\n <div class=\"ms-1\" *ngIf=\"u.lastName.errors?.required\">\r\n Last Name is required\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"form-group col-md-4 col-sm-12 mt-3 mb-2\">\r\n <label class=\"note-label mb-2\">Email*</label>\r\n\r\n <input type=\"text\" class=\"form-control\" placeholder=\"Email\" formControlName=\"email\" id=\"email\" [ngClass]=\"{\r\n 'is-invalid':\r\n u.email.invalid && (u.email.touched || u.email.dirty)\r\n }\" />\r\n\r\n <div class=\"invalid-feedback\" *ngIf=\"\r\n u.email.invalid &&\r\n (u.email.touched || u.email.dirty)\r\n \">\r\n <div class=\"ms-1\" *ngIf=\"u.email.errors?.required\">\r\n Email is required\r\n </div>\r\n <div class=\"ms-1\" *ngIf=\"u.email.errors?.email\">\r\n Please enter a valid email address\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"d-flex flex-wrap justify-content-between row\">\r\n <div class=\"form-group col-md-4 col-sm-12 mt-3 mb-2\">\r\n <label class=\"note-label mb-2\">Home Address 1*</label>\r\n\r\n <input type=\"text\" autocomplete=\"new-address-view\" name=\"random-address-{{randomId}}\" class=\"form-control\" placeholder=\"Home Address 1\" formControlName=\"address1\" id=\"address1\"\r\n ngx-google-places-autocomplete [options]=\"options\" (onAddressChange)=\"AddressChangeUser($event)\" [ngClass]=\"{\r\n 'is-invalid':\r\n u.address1.invalid && (u.address1.touched || u.address1.dirty)\r\n }\" />\r\n\r\n <div class=\"invalid-feedback\" *ngIf=\"\r\n u.address1.invalid &&\r\n (u.address1.touched || u.address1.dirty)\r\n \">\r\n <div class=\"ms-1\" *ngIf=\"u.address1.errors?.required\">\r\n Home Address 1 is required\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group col-md-4 col-sm-12 mt-3 mb-2\">\r\n <label class=\"note-label mb-2\">City*</label>\r\n\r\n <input type=\"text\" class=\"form-control\" id=\"City\" placeholder=\"City\" formControlName=\"city\" [ngClass]=\"{\r\n 'is-invalid':\r\n u.city.invalid && (u.city.touched || u.city.dirty)\r\n }\" />\r\n\r\n <div class=\"invalid-feedback\" *ngIf=\"\r\n u.city.invalid &&\r\n (u.city.touched || u.city.dirty)\r\n \">\r\n <div class=\"ms-1\" *ngIf=\"u.city.errors?.required\">\r\n City is required\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group col-md-4 col-sm-12 mt-3 mb-2\">\r\n <label class=\"note-label mb-2\">State*</label>\r\n\r\n <input type=\"text\" autocomplete=\"new-state-view\" name=\"random-state-{{randomId}}\" class=\"form-control\" id=\"State\" placeholder=\"State\" formControlName=\"state\" [ngClass]=\"{\r\n 'is-invalid':\r\n u.state.invalid && (u.state.touched || u.state.dirty)\r\n }\" />\r\n\r\n <div class=\"invalid-feedback\" *ngIf=\"\r\n u.state.invalid &&\r\n (u.state.touched || u.state.dirty)\r\n \">\r\n <div class=\"ms-1\" *ngIf=\"u.state.errors?.required\">\r\n State is required\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n\r\n\r\n </div>\r\n <!-- <div class=\"d-flex flex-wrap justify-content-between row\">\r\n <div class=\"form-group col-md-4 col-sm-12 mt-3 mb-2\">\r\n <input type=\"text\" class=\"form-control\" id=\"homeAddress2\" formControlName=\"address2\"\r\n placeholder=\"Home Address 2\" />\r\n </div>\r\n\r\n <div class=\"form-group col-md-4 col-sm-12 mt-3 mb-2\">\r\n <input type=\"text\" class=\"form-control\" id=\"City\" placeholder=\"City\" formControlName=\"city\" [ngClass]=\"{\r\n 'is-invalid':\r\n u.city.invalid && (u.city.touched || u.city.dirty)\r\n }\" />\r\n\r\n <div class=\"invalid-feedback\" *ngIf=\"\r\n u.city.invalid &&\r\n (u.city.touched || u.city.dirty)\r\n \">\r\n <div class=\"ms-1\" *ngIf=\"u.city.errors?.required\">\r\n City is required\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group col-md-4 col-sm-12 mt-3 mb-2\">\r\n <input type=\"text\" class=\"form-control\" id=\"State\" placeholder=\"State\" formControlName=\"state\" [ngClass]=\"{\r\n 'is-invalid':\r\n u.state.invalid && (u.state.touched || u.state.dirty)\r\n }\" />\r\n\r\n <div class=\"invalid-feedback\" *ngIf=\"\r\n u.state.invalid &&\r\n (u.state.touched || u.state.dirty)\r\n \">\r\n <div class=\"ms-1\" *ngIf=\"u.state.errors?.required\">\r\n State is required\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div> -->\r\n <div class=\"d-flex flex-wrap justify-content-between row\">\r\n\r\n\r\n <div class=\"form-group col-md-4 col-sm-12 mt-3 mb-2\">\r\n <label class=\"note-label mb-2\">Zip Code*</label>\r\n\r\n <input type=\"text\" class=\"form-control\" id=\"Zipcode\" placeholder=\"Zipcode\" formControlName=\"zipcode\"\r\n [textMask]=\"{ mask: zipcodeMask }\" [ngClass]=\"{\r\n 'is-invalid':\r\n u.zipcode.invalid && (u.zipcode.touched || u.zipcode.dirty)\r\n }\" />\r\n\r\n <div class=\"invalid-feedback\" *ngIf=\"\r\n u.zipcode.invalid &&\r\n (u.zipcode.touched || u.zipcode.dirty)\r\n \">\r\n <div class=\"ms-1\" *ngIf=\"u.zipcode.errors?.required\">\r\n Zipcode is required\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group col-md-4 col-sm-12 mt-3 mb-2\">\r\n <label class=\"note-label mb-2\">Country*</label>\r\n\r\n <input type=\"text\" class=\"form-control\" id=\"Country\" placeholder=\"Country\" formControlName=\"country\"\r\n [ngClass]=\"{\r\n 'is-invalid':\r\n u.country.invalid && (u.country.touched || u.country.dirty)\r\n }\" />\r\n\r\n <div class=\"invalid-feedback\" *ngIf=\"\r\n u.country.invalid &&\r\n (u.country.touched || u.country.dirty)\r\n \">\r\n <div class=\"ms-1\" *ngIf=\"u.country.errors?.required\">\r\n Country is required\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group col-md-4 col-sm-12 mt-3 mb-2\">\r\n <label class=\"note-label mb-2\">Phone Number*</label>\r\n\r\n <input type=\"text\" autocomplete=\"new-phone-view\" name=\"random-phone-{{randomId}}\" class=\"form-control block shadow-none\" id=\"inputPhone\" \r\n placeholder=\"Phone Number\" autocomplete=\"off\" formControlName=\"phoneNumber\" maxlength=\"14\"\r\n (input)=\"phoneMask($event)\" [ngClass]=\"{\r\n 'is-invalid':\r\n u.phoneNumber.invalid &&\r\n (u.phoneNumber.touched || u.phoneNumber.dirty)\r\n }\" />\r\n\r\n <div class=\"invalid-feedback\" *ngIf=\"\r\n u.phoneNumber.invalid &&\r\n (u.phoneNumber.touched || u.phoneNumber.dirty)\r\n \">\r\n <div class=\"ms-1\" *ngIf=\"u.phoneNumber.errors?.required\">\r\n Phone Number is required\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n </div>\r\n <div class=\"d-flex flex-wrap justify-content-between row\">\r\n\r\n <div class=\"form-group col-md-4 col-sm-12 mt-3\">\r\n <label class=\"note-label mb-2\">Years of experience*</label>\r\n\r\n <ng-select class=\"w-100\" [items]=\"expYears\" [searchable]=\"false\" [clearable]=\"false\" bindLabel=\"text\"\r\n formControlName=\"yearsOfExperince\" [ngClass]=\"{ 'is-invalid':u?.yearsOfExperince?.errors }\"\r\n bindValue=\"value\" [closeOnSelect]=\"true\" placeholder=\"Years of experience\"\r\n id=\"yearsOfExperince\"></ng-select>\r\n\r\n <div *ngIf=\" u.yearsOfExperince.invalid &&\r\n (u.yearsOfExperince.touched || u.yearsOfExperince.dirty)\" class=\"invalid-feedback\">\r\n <div class=\"ms-1\" *ngIf=\"u.yearsOfExperince.errors.required\">\r\n Years Of Experience is required\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group col-md-4 col-sm-12\r\n mt-3 mb-2\">\r\n <label class=\"note-label mb-2\">Job Title*</label>\r\n\r\n <ng-select class=\"w-100\" class=\"custom-ng-select\" [items]=\"jobTitles\" bindLabel=\"text\" bindValue=\"value\"\r\n [multiple]=\"true\" [searchable]=\"false\" [clearable]=\"false\"\r\n [ngClass]=\"{ 'is-invalid':u?.userJobTitle?.errors }\" id=\"userJobTitle\" [closeOnSelect]=\"false\"\r\n placeholder=\"Select Job Titles\" formControlName=\"userJobTitle\">\r\n </ng-select>\r\n <div *ngIf=\" u.userJobTitle.invalid &&\r\n (u.userJobTitle.touched || u.userJobTitle.dirty)\" class=\"invalid-feedback\">\r\n <div class=\"ms-1\" *ngIf=\"u.userJobTitle.errors.required\">\r\n Job title is required\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group col-md-4 col-sm-12 mt-3 position-relative\">\r\n <label class=\"note-label mb-2\">Profile image</label>\r\n\r\n <input #uploadFile type=\"file\" accept=\"image/*\" (change)=\"uploadUserImage($event)\" class=\"d-none\" />\r\n <input [(ngModel)]=\"fileName\" readonly type=\"text\" class=\"form-control pe-5\"\r\n placeholder=\"Upload Profile Picture\" (click)=\"uploadFile.click()\" />\r\n <img src=\"assets/images/icons/upload.svg\" alt=\"Upload\" class=\"upload-icon\" (click)=\"uploadFile.click()\" />\r\n </div>\r\n\r\n\r\n\r\n\r\n\r\n\r\n <div class=\"res d-flex justify-content-between\">\r\n <div class=\"form-group col-md-4 col-sm-12 mt-3 mb-2\">\r\n <label class=\"note-label mb-2\">Industry</label>\r\n\r\n <ng-select class=\"w-100 custom-ng-select\" formControlName=\"industries\" [items]=\"industries\"\r\n [multiple]=\"true\" [searchable]=\"false\" [clearable]=\"true\" bindLabel=\"industryName\" bindValue=\"id\"\r\n [closeOnSelect]=\"false\" id=\"industries\" placeholder=\"Select Industry\" [loading]=\"isIndustriesLoading\">\r\n\r\n <!-- Dropdown option -->\r\n <ng-template ng-option-tmp let-item=\"item\" let-item$=\"item$\">\r\n <span class=\"form-check\">\r\n <span class=\"form-check-input-wrapper\">\r\n <span class=\"custom-checkbox1\" [class.checked]=\"item$.selected\"></span>\r\n </span>\r\n {{ item.industryName }}\r\n </span>\r\n </ng-template>\r\n\r\n <!-- Selected label -->\r\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\r\n <span class=\"ng-value-label\">{{ item.industryName }}</span>\r\n <span class=\"ng-value-icon right\" (click)=\"clear(item)\">\r\n <img src=\"/assets/images/icons/close-sm-circle.svg\" />\r\n </span>\r\n </ng-template>\r\n <div *ngIf=\"u.industries.invalid &&\r\n (u.industries.touched || u.industries.dirty)\" class=\"invalid-feedback\">\r\n <div class=\"ms-1\" *ngIf=\"u.industries.errors.required\">\r\n Industry is required\r\n </div>\r\n </div>\r\n </ng-select>\r\n </div>\r\n <div class=\"form-group col-sm-12 col-md-4\">\r\n <div class=\"image-wrapper\">\r\n <!-- Spinner -->\r\n <div *ngIf=\"isImageLoading\" class=\"spinner\"></div>\r\n <!-- Image -->\r\n <div *ngIf=\"previewUrl\">\r\n <img [src]=\"cloudfrontUrl+previewUrl\" class=\"preview-image mt-2\" />\r\n </div>\r\n\r\n </div>\r\n <div *ngIf=\"userError\" class=\"invalid-feedback\">\r\n <div>{{ userError }}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n\r\n\r\n <div class=\"d-flex flex-wrap justify-content-between row\">\r\n <h2 class=\"mb-2\" style=\"margin-top: 50px;\">Resume Submission</h2>\r\n <p class=\"note mb-2\">Submit your resume here</p>\r\n <div class=\"col-sm-12 col-md-8\">\r\n <div class=\"form-group mb-2 position-relative\">\r\n <input #fileInput type=\"file\" accept=\"/*\" (change)=\"selectFile($event)\" class=\"d-none\" />\r\n <input [(ngModel)]=\"resumeName\" readonly type=\"text\" class=\"form-control pe-5\"\r\n placeholder=\"Upload Resume Here\" (click)=\"fileInput.click()\" />\r\n\r\n <img src=\"assets/images/icons/upload.svg\" alt=\"Upload\" class=\"upload-icon-resume\"\r\n (click)=\"fileInput.click()\" />\r\n <div *ngIf=\"isResumeRequired\" class=\"invalid-feedback d-block ms-1\">\r\n Upload your resume\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n <div class=\"d-flex flex-wrap justify-content-between row\">\r\n <div class=\"col-sm-12 col-md-8\" style=\"padding-left: 15px;\">\r\n <div class=\"resume-wrapper\">\r\n <div *ngIf=\"isresumeLoading\" class=\"spinner-resume\"></div>\r\n\r\n <a *ngIf=\"list\" [href]=\"list.fileUrl\" class=\"mt-2\" target=\"_blank\">\r\n <span>{{ list.fileName }}</span>\r\n </a>\r\n </div>\r\n <div *ngIf=\"userError\" class=\"invalid-feedback\">\r\n <div>{{ userError }}</div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"userError\" class=\"invalid-feedback\">\r\n <div>\r\n {{userError}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"actions\">\r\n <button type=\"button\" class=\"secondary\" (click)=\"onBackClick()\">Back</button>\r\n <div class=\"right-actions\">\r\n\r\n <button type=\"button\" class=\"primary ct-btn\" [disabled]=\"showLoader\" [ng2-loading]=\"showLoader\"\r\n (click)=\"saveFinal()\">\r\n Continue\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n<!-- \r\n<div class=\"producer-type-container\">\r\n <h2 class=\"mb-2\" style=\"margin-top: 50px;\">Type of jobs</h2>\r\n <p class=\"notes\">What type of job are you interested in</p>\r\n <div class=\"job-list\">\r\n <div class=\"job-item\" *ngFor=\"let job of jobTypes\" [class.selected]=\"isSelected(job)\" (click)=\"toggleJob(job)\">\r\n <span class=\"plus\">+</span> {{ job.text }}\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"actions\">\r\n <button type=\"button\" class=\"secondary\" (click)=\"onBackClick()\">Back</button>\r\n <div class=\"right-actions\">\r\n\r\n <button type=\"button\" class=\"primary\" [disabled]=\"showLoader\" [ng2-loading]=\"showLoader\" (click)=\"saveFinal()\">\r\n Continue\r\n </button>\r\n </div>\r\n</div> -->", styles: [".preview-image{width:250px;height:100px;object-fit:contain;margin-top:5px;border-radius:5px}.upload-icon-resume{position:absolute;right:25px;top:17px;width:18px;height:18px;cursor:pointer}.upload-icon{position:absolute;right:25px;top:45px;width:18px;height:18px;cursor:pointer}::ng-deep .ng-select .ng-select-container{width:101%;border-radius:7px}.form-control{font-size:14px;color:#6b7280}.role-selection-container{max-width:950px;margin:0 auto;min-height:300px;padding:2rem}.role-selection-container h2{margin-bottom:.5rem;font-size:1.5rem;font-weight:600}.role-selection-container .note{font-size:.875rem;color:#6b7280}.role-selection-container .note-label{font-size:.875rem;color:#6b7280;padding-left:5px}.role-selection-container .dropdown-wrapper{display:flex;gap:.5rem;margin-bottom:1rem}.role-selection-container .dropdown-wrapper select{flex:1;padding:.5rem;border:1px solid #d1d5db;border-radius:.375rem}.role-selection-container .dropdown-wrapper .add-btn{padding:.5rem 1rem;background-color:#4077ad;color:#fff;border:none;border-radius:.375rem;cursor:pointer}.role-selection-container .dropdown-wrapper .add-btn:disabled{background-color:#d1d5db;cursor:not-allowed}.role-selection-container .selected-roles{display:flex;flex-direction:column;gap:.5rem;margin-bottom:1.5rem}.role-selection-container .selected-roles .role-card{display:flex;justify-content:space-between;align-items:center;padding:.5rem 1rem;border-radius:.375rem;background-color:#fef3c7;color:#92400e}.role-selection-container .selected-roles .role-card .remove-btn{background:none;border:none;font-size:1.2rem;font-weight:700;cursor:pointer;color:#b91c1c}.role-selection-container .navigation-buttons{display:flex;justify-content:flex-end;gap:1rem;margin-top:70px;margin-bottom:50px}.role-selection-container .navigation-buttons .back{padding:.5rem 1rem;border:1px solid #d1d5db;border-radius:.375rem;background:#fff;cursor:pointer;min-width:18%;min-height:50px}.role-selection-container .navigation-buttons .next{padding:.5rem 1rem;background-color:#4077ad;color:#fff;border-radius:.375rem;cursor:pointer;min-width:18%;min-height:50px}.role-selection-container .navigation-buttons .next:disabled{background-color:#d1d5db;cursor:not-allowed}.image-wrapper{position:relative;width:150px;height:150px}.resume-wrapper{position:relative;width:550px;height:1px}.spinner{width:40px;height:40px;border:4px solid #e0e0e0;border-top:4px solid #9e9e9e;border-radius:50%;position:absolute;top:-32%;left:163%;margin-top:-2px;margin-left:-7px;animation:spin 1s linear infinite}.spinner-resume{width:40px;height:40px;border:4px solid #e0e0e0;border-top:4px solid #9e9e9e;border-radius:50%;position:absolute;top:-32%;left:99%;margin-top:-51px;margin-left:-20px;animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.profile-field{margin-top:-10px}.profile-field input{line-height:30px}.producer-type-container{max-width:1000px;margin:0 auto;min-height:300px}.producer-type-container h2{font-size:1.5rem;font-weight:600;margin-bottom:.5rem}.producer-type-container p{font-size:.875rem;color:#6b7280;margin-bottom:1.5rem}.producer-type-container .job-list{display:flex;flex-direction:column;gap:.75rem;margin-bottom:2rem}.producer-type-container .job-list .job-item{padding:.75rem 1rem;font-size:14px;border:1px solid #d1d5db;border-radius:.375rem;cursor:pointer;display:flex;align-items:center;gap:.5rem;transition:all .2s}.producer-type-container .job-list .job-item.selected{border-color:#4077ad;background-color:#eff6ff}.producer-type-container .job-list .job-item .plus{font-weight:700}.producer-type-container .navigation-buttons{display:flex;justify-content:flex-end;gap:.5rem;margin:50px 0}.producer-type-container .navigation-buttons .back{padding:.5rem 1rem;border:1px solid #d1d5db;border-radius:.375rem;background:#fff;cursor:pointer}.producer-type-container .navigation-buttons .next{padding:.5rem 1rem;background-color:#4077ad;color:#fff;border-radius:.375rem;cursor:pointer}.producer-type-container .navigation-buttons .next:disabled{background-color:#d1d5db;cursor:not-allowed}.actions{display:flex;justify-content:space-between;margin:50px 0 27px}.right-actions{display:flex;gap:16px}button{height:44px;min-width:120px;border:none;font-size:14px;cursor:pointer;border-radius:5px}button.primary{background-color:#4077ad;color:#fff;border-radius:5px}button.secondary{background-color:#d5d6da;color:#525862;border-radius:5px}button:disabled{background-color:#9ca3af;cursor:not-allowed}::ng-deep .custom-ng-select.ng-select-multiple .ng-select-container{min-height:45px!important;height:auto!important;display:flex;align-items:center;overflow:visible!important}::ng-deep .custom-ng-select.ng-select-multiple .ng-value-container{flex-wrap:wrap!important;overflow:visible!important;padding-top:2px;padding-bottom:2px}::ng-deep .custom-ng-select.ng-select-multiple .ng-value{margin-bottom:4px}::ng-deep .custom-ng-select.ng-select-multiple .ng-arrow-wrapper{display:flex;align-items:center;height:100%}:host ::ng-deep .custom-ng-select .ng-select-container{padding:0!important;font-size:13px!important}::ng-deep .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{padding-top:3px;font-size:14px;color:#6b7280}::ng-deep .ng-select .ng-select-container{padding-top:3px;font-size:14px;color:#6b7280}@media screen and (max-width: 767px){.actions{margin:10px 0;flex-direction:column-reverse;gap:5px}.res{flex-direction:column-reverse}.spinner{width:24px;height:24px;top:-22%;left:180%}.spinner-resume{width:25px;height:25px;top:-22%;left:32%}.ct-btn{width:100%;margin-top:45px}}\n"], dependencies: [{ kind: "directive", type: i11.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i8.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i8.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: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i8.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i8.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i8.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i12.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "directive", type: i12.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }, { kind: "directive", type: i12.NgLabelTemplateDirective, selector: "[ng-label-tmp]" }, { kind: "directive", type: Ng2LoadingSpinnerDirective, selector: "[ng2-loading]", inputs: ["ng2-loading", "config", "template"] }, { kind: "directive", type: GooglePlaceDirective, selector: "[ngx-google-places-autocomplete]", inputs: ["options"], outputs: ["onAddressChange"], exportAs: ["ngx-places"] }, { kind: "directive", type: MaskedInputDirective, selector: "[textMask]", inputs: ["textMask"], exportAs: ["textMask"] }] });
|
|
5552
5740
|
}
|
|
5553
5741
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: RoleSelectComponent, decorators: [{
|
|
5554
5742
|
type: Component,
|
|
5555
5743
|
args: [{ selector: 'app-role-select', standalone: false, template: "<div class=\"role-selection-container\">\r\n <h2>Basic Details</h2>\r\n <p class=\"note\">We need basic information and a headshot for your profile</p>\r\n <div class=\"profile-field\">\r\n <div *ngIf=\"!isLoaded\" class=\"text-center p-4\">\r\n <div class=\"spinner-border\"></div>\r\n </div>\r\n <form *ngIf=\"isLoaded\" [formGroup]=\"userForm\" class=\"form pb-0\">\r\n <div class=\"d-flex flex-wrap justify-content-between row\">\r\n <div class=\"form-group col-md-4 col-sm-12 mt-3 mb-2\">\r\n <label class=\"note-label mb-2 mb-3\">First Name*</label>\r\n <input [ngClass]=\"{ 'is-invalid': u.firstName.invalid && (u.firstName.touched || u.firstName.dirty) }\"\r\n type=\"text\" class=\"form-control\" placeholder=\"First Name\" formControlName=\"firstName\" id=\"firstName\">\r\n <div *ngIf=\" u.firstName.invalid &&\r\n (u.firstName.touched || u.firstName.dirty)\" class=\"invalid-feedback\">\r\n <div class=\"ms-1\" *ngIf=\"u.firstName.errors.required\">\r\n First Name is required\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group col-md-4 col-sm-12 mt-3 mb-2\">\r\n <label class=\"note-label mb-2 mb-3\">Last Name*</label>\r\n\r\n <input type=\"text\" class=\"form-control\" placeholder=\"Last Name\" formControlName=\"lastName\" id=\"lastName\"\r\n [ngClass]=\"{\r\n 'is-invalid':\r\n u.lastName.invalid && (u.lastName.touched || u.lastName.dirty)\r\n }\" />\r\n\r\n <div class=\"invalid-feedback\" *ngIf=\"\r\n u.lastName.invalid &&\r\n (u.lastName.touched || u.lastName.dirty)\r\n \">\r\n <div class=\"ms-1\" *ngIf=\"u.lastName.errors?.required\">\r\n Last Name is required\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"form-group col-md-4 col-sm-12 mt-3 mb-2\">\r\n <label class=\"note-label mb-2\">Email*</label>\r\n\r\n <input type=\"text\" class=\"form-control\" placeholder=\"Email\" formControlName=\"email\" id=\"email\" [ngClass]=\"{\r\n 'is-invalid':\r\n u.email.invalid && (u.email.touched || u.email.dirty)\r\n }\" />\r\n\r\n <div class=\"invalid-feedback\" *ngIf=\"\r\n u.email.invalid &&\r\n (u.email.touched || u.email.dirty)\r\n \">\r\n <div class=\"ms-1\" *ngIf=\"u.email.errors?.required\">\r\n Email is required\r\n </div>\r\n <div class=\"ms-1\" *ngIf=\"u.email.errors?.email\">\r\n Please enter a valid email address\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"d-flex flex-wrap justify-content-between row\">\r\n <div class=\"form-group col-md-4 col-sm-12 mt-3 mb-2\">\r\n <label class=\"note-label mb-2\">Home Address 1*</label>\r\n\r\n <input type=\"text\" autocomplete=\"new-address-view\" name=\"random-address-{{randomId}}\" class=\"form-control\" placeholder=\"Home Address 1\" formControlName=\"address1\" id=\"address1\"\r\n ngx-google-places-autocomplete [options]=\"options\" (onAddressChange)=\"AddressChangeUser($event)\" [ngClass]=\"{\r\n 'is-invalid':\r\n u.address1.invalid && (u.address1.touched || u.address1.dirty)\r\n }\" />\r\n\r\n <div class=\"invalid-feedback\" *ngIf=\"\r\n u.address1.invalid &&\r\n (u.address1.touched || u.address1.dirty)\r\n \">\r\n <div class=\"ms-1\" *ngIf=\"u.address1.errors?.required\">\r\n Home Address 1 is required\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group col-md-4 col-sm-12 mt-3 mb-2\">\r\n <label class=\"note-label mb-2\">City*</label>\r\n\r\n <input type=\"text\" class=\"form-control\" id=\"City\" placeholder=\"City\" formControlName=\"city\" [ngClass]=\"{\r\n 'is-invalid':\r\n u.city.invalid && (u.city.touched || u.city.dirty)\r\n }\" />\r\n\r\n <div class=\"invalid-feedback\" *ngIf=\"\r\n u.city.invalid &&\r\n (u.city.touched || u.city.dirty)\r\n \">\r\n <div class=\"ms-1\" *ngIf=\"u.city.errors?.required\">\r\n City is required\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group col-md-4 col-sm-12 mt-3 mb-2\">\r\n <label class=\"note-label mb-2\">State*</label>\r\n\r\n <input type=\"text\" autocomplete=\"new-state-view\" name=\"random-state-{{randomId}}\" class=\"form-control\" id=\"State\" placeholder=\"State\" formControlName=\"state\" [ngClass]=\"{\r\n 'is-invalid':\r\n u.state.invalid && (u.state.touched || u.state.dirty)\r\n }\" />\r\n\r\n <div class=\"invalid-feedback\" *ngIf=\"\r\n u.state.invalid &&\r\n (u.state.touched || u.state.dirty)\r\n \">\r\n <div class=\"ms-1\" *ngIf=\"u.state.errors?.required\">\r\n State is required\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n\r\n\r\n </div>\r\n <!-- <div class=\"d-flex flex-wrap justify-content-between row\">\r\n <div class=\"form-group col-md-4 col-sm-12 mt-3 mb-2\">\r\n <input type=\"text\" class=\"form-control\" id=\"homeAddress2\" formControlName=\"address2\"\r\n placeholder=\"Home Address 2\" />\r\n </div>\r\n\r\n <div class=\"form-group col-md-4 col-sm-12 mt-3 mb-2\">\r\n <input type=\"text\" class=\"form-control\" id=\"City\" placeholder=\"City\" formControlName=\"city\" [ngClass]=\"{\r\n 'is-invalid':\r\n u.city.invalid && (u.city.touched || u.city.dirty)\r\n }\" />\r\n\r\n <div class=\"invalid-feedback\" *ngIf=\"\r\n u.city.invalid &&\r\n (u.city.touched || u.city.dirty)\r\n \">\r\n <div class=\"ms-1\" *ngIf=\"u.city.errors?.required\">\r\n City is required\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group col-md-4 col-sm-12 mt-3 mb-2\">\r\n <input type=\"text\" class=\"form-control\" id=\"State\" placeholder=\"State\" formControlName=\"state\" [ngClass]=\"{\r\n 'is-invalid':\r\n u.state.invalid && (u.state.touched || u.state.dirty)\r\n }\" />\r\n\r\n <div class=\"invalid-feedback\" *ngIf=\"\r\n u.state.invalid &&\r\n (u.state.touched || u.state.dirty)\r\n \">\r\n <div class=\"ms-1\" *ngIf=\"u.state.errors?.required\">\r\n State is required\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div> -->\r\n <div class=\"d-flex flex-wrap justify-content-between row\">\r\n\r\n\r\n <div class=\"form-group col-md-4 col-sm-12 mt-3 mb-2\">\r\n <label class=\"note-label mb-2\">Zip Code*</label>\r\n\r\n <input type=\"text\" class=\"form-control\" id=\"Zipcode\" placeholder=\"Zipcode\" formControlName=\"zipcode\"\r\n [textMask]=\"{ mask: zipcodeMask }\" [ngClass]=\"{\r\n 'is-invalid':\r\n u.zipcode.invalid && (u.zipcode.touched || u.zipcode.dirty)\r\n }\" />\r\n\r\n <div class=\"invalid-feedback\" *ngIf=\"\r\n u.zipcode.invalid &&\r\n (u.zipcode.touched || u.zipcode.dirty)\r\n \">\r\n <div class=\"ms-1\" *ngIf=\"u.zipcode.errors?.required\">\r\n Zipcode is required\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group col-md-4 col-sm-12 mt-3 mb-2\">\r\n <label class=\"note-label mb-2\">Country*</label>\r\n\r\n <input type=\"text\" class=\"form-control\" id=\"Country\" placeholder=\"Country\" formControlName=\"country\"\r\n [ngClass]=\"{\r\n 'is-invalid':\r\n u.country.invalid && (u.country.touched || u.country.dirty)\r\n }\" />\r\n\r\n <div class=\"invalid-feedback\" *ngIf=\"\r\n u.country.invalid &&\r\n (u.country.touched || u.country.dirty)\r\n \">\r\n <div class=\"ms-1\" *ngIf=\"u.country.errors?.required\">\r\n Country is required\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group col-md-4 col-sm-12 mt-3 mb-2\">\r\n <label class=\"note-label mb-2\">Phone Number*</label>\r\n\r\n <input type=\"text\" autocomplete=\"new-phone-view\" name=\"random-phone-{{randomId}}\" class=\"form-control block shadow-none\" id=\"inputPhone\" \r\n placeholder=\"Phone Number\" autocomplete=\"off\" formControlName=\"phoneNumber\" maxlength=\"14\"\r\n (input)=\"phoneMask($event)\" [ngClass]=\"{\r\n 'is-invalid':\r\n u.phoneNumber.invalid &&\r\n (u.phoneNumber.touched || u.phoneNumber.dirty)\r\n }\" />\r\n\r\n <div class=\"invalid-feedback\" *ngIf=\"\r\n u.phoneNumber.invalid &&\r\n (u.phoneNumber.touched || u.phoneNumber.dirty)\r\n \">\r\n <div class=\"ms-1\" *ngIf=\"u.phoneNumber.errors?.required\">\r\n Phone Number is required\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n </div>\r\n <div class=\"d-flex flex-wrap justify-content-between row\">\r\n\r\n <div class=\"form-group col-md-4 col-sm-12 mt-3\">\r\n <label class=\"note-label mb-2\">Years of experience*</label>\r\n\r\n <ng-select class=\"w-100\" [items]=\"expYears\" [searchable]=\"false\" [clearable]=\"false\" bindLabel=\"text\"\r\n formControlName=\"yearsOfExperince\" [ngClass]=\"{ 'is-invalid':u?.yearsOfExperince?.errors }\"\r\n bindValue=\"value\" [closeOnSelect]=\"true\" placeholder=\"Years of experience\"\r\n id=\"yearsOfExperince\"></ng-select>\r\n\r\n <div *ngIf=\" u.yearsOfExperince.invalid &&\r\n (u.yearsOfExperince.touched || u.yearsOfExperince.dirty)\" class=\"invalid-feedback\">\r\n <div class=\"ms-1\" *ngIf=\"u.yearsOfExperince.errors.required\">\r\n Years Of Experience is required\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group col-md-4 col-sm-12\r\n mt-3 mb-2\">\r\n <label class=\"note-label mb-2\">Job Title*</label>\r\n\r\n <ng-select class=\"w-100\" class=\"custom-ng-select\" [items]=\"jobTitles\" bindLabel=\"text\" bindValue=\"value\"\r\n [multiple]=\"true\" [searchable]=\"false\" [clearable]=\"false\"\r\n [ngClass]=\"{ 'is-invalid':u?.userJobTitle?.errors }\" id=\"userJobTitle\" [closeOnSelect]=\"false\"\r\n placeholder=\"Select Job Titles\" formControlName=\"userJobTitle\">\r\n </ng-select>\r\n <div *ngIf=\" u.userJobTitle.invalid &&\r\n (u.userJobTitle.touched || u.userJobTitle.dirty)\" class=\"invalid-feedback\">\r\n <div class=\"ms-1\" *ngIf=\"u.userJobTitle.errors.required\">\r\n Job title is required\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group col-md-4 col-sm-12 mt-3 position-relative\">\r\n <label class=\"note-label mb-2\">Profile image</label>\r\n\r\n <input #uploadFile type=\"file\" accept=\"image/*\" (change)=\"uploadUserImage($event)\" class=\"d-none\" />\r\n <input [(ngModel)]=\"fileName\" readonly type=\"text\" class=\"form-control pe-5\"\r\n placeholder=\"Upload Profile Picture\" (click)=\"uploadFile.click()\" />\r\n <img src=\"assets/images/icons/upload.svg\" alt=\"Upload\" class=\"upload-icon\" (click)=\"uploadFile.click()\" />\r\n </div>\r\n\r\n\r\n\r\n\r\n\r\n\r\n <div class=\"res d-flex justify-content-between\">\r\n <div class=\"form-group col-md-4 col-sm-12 mt-3 mb-2\">\r\n <label class=\"note-label mb-2\">Industry</label>\r\n\r\n <ng-select class=\"w-100 custom-ng-select\" formControlName=\"industries\" [items]=\"industries\"\r\n [multiple]=\"true\" [searchable]=\"false\" [clearable]=\"true\" bindLabel=\"industryName\" bindValue=\"id\"\r\n [closeOnSelect]=\"false\" id=\"industries\" placeholder=\"Select Industry\" [loading]=\"isIndustriesLoading\">\r\n\r\n <!-- Dropdown option -->\r\n <ng-template ng-option-tmp let-item=\"item\" let-item$=\"item$\">\r\n <span class=\"form-check\">\r\n <span class=\"form-check-input-wrapper\">\r\n <span class=\"custom-checkbox1\" [class.checked]=\"item$.selected\"></span>\r\n </span>\r\n {{ item.industryName }}\r\n </span>\r\n </ng-template>\r\n\r\n <!-- Selected label -->\r\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\r\n <span class=\"ng-value-label\">{{ item.industryName }}</span>\r\n <span class=\"ng-value-icon right\" (click)=\"clear(item)\">\r\n <img src=\"/assets/images/icons/close-sm-circle.svg\" />\r\n </span>\r\n </ng-template>\r\n <div *ngIf=\"u.industries.invalid &&\r\n (u.industries.touched || u.industries.dirty)\" class=\"invalid-feedback\">\r\n <div class=\"ms-1\" *ngIf=\"u.industries.errors.required\">\r\n Industry is required\r\n </div>\r\n </div>\r\n </ng-select>\r\n </div>\r\n <div class=\"form-group col-sm-12 col-md-4\">\r\n <div class=\"image-wrapper\">\r\n <!-- Spinner -->\r\n <div *ngIf=\"isImageLoading\" class=\"spinner\"></div>\r\n <!-- Image -->\r\n <div *ngIf=\"previewUrl\">\r\n <img [src]=\"cloudfrontUrl+previewUrl\" class=\"preview-image mt-2\" />\r\n </div>\r\n\r\n </div>\r\n <div *ngIf=\"userError\" class=\"invalid-feedback\">\r\n <div>{{ userError }}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n\r\n\r\n <div class=\"d-flex flex-wrap justify-content-between row\">\r\n <h2 class=\"mb-2\" style=\"margin-top: 50px;\">Resume Submission</h2>\r\n <p class=\"note mb-2\">Submit your resume here</p>\r\n <div class=\"col-sm-12 col-md-8\">\r\n <div class=\"form-group mb-2 position-relative\">\r\n <input #fileInput type=\"file\" accept=\"/*\" (change)=\"selectFile($event)\" class=\"d-none\" />\r\n <input [(ngModel)]=\"resumeName\" readonly type=\"text\" class=\"form-control pe-5\"\r\n placeholder=\"Upload Resume Here\" (click)=\"fileInput.click()\" />\r\n\r\n <img src=\"assets/images/icons/upload.svg\" alt=\"Upload\" class=\"upload-icon-resume\"\r\n (click)=\"fileInput.click()\" />\r\n <div *ngIf=\"isResumeRequired\" class=\"invalid-feedback d-block ms-1\">\r\n Upload your resume\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n <div class=\"d-flex flex-wrap justify-content-between row\">\r\n <div class=\"col-sm-12 col-md-8\" style=\"padding-left: 15px;\">\r\n <div class=\"resume-wrapper\">\r\n <div *ngIf=\"isresumeLoading\" class=\"spinner-resume\"></div>\r\n\r\n <a *ngIf=\"list\" [href]=\"list.fileUrl\" class=\"mt-2\" target=\"_blank\">\r\n <span>{{ list.fileName }}</span>\r\n </a>\r\n </div>\r\n <div *ngIf=\"userError\" class=\"invalid-feedback\">\r\n <div>{{ userError }}</div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"userError\" class=\"invalid-feedback\">\r\n <div>\r\n {{userError}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"actions\">\r\n <button type=\"button\" class=\"secondary\" (click)=\"onBackClick()\">Back</button>\r\n <div class=\"right-actions\">\r\n\r\n <button type=\"button\" class=\"primary ct-btn\" [disabled]=\"showLoader\" [ng2-loading]=\"showLoader\"\r\n (click)=\"saveFinal()\">\r\n Continue\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n<!-- \r\n<div class=\"producer-type-container\">\r\n <h2 class=\"mb-2\" style=\"margin-top: 50px;\">Type of jobs</h2>\r\n <p class=\"notes\">What type of job are you interested in</p>\r\n <div class=\"job-list\">\r\n <div class=\"job-item\" *ngFor=\"let job of jobTypes\" [class.selected]=\"isSelected(job)\" (click)=\"toggleJob(job)\">\r\n <span class=\"plus\">+</span> {{ job.text }}\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"actions\">\r\n <button type=\"button\" class=\"secondary\" (click)=\"onBackClick()\">Back</button>\r\n <div class=\"right-actions\">\r\n\r\n <button type=\"button\" class=\"primary\" [disabled]=\"showLoader\" [ng2-loading]=\"showLoader\" (click)=\"saveFinal()\">\r\n Continue\r\n </button>\r\n </div>\r\n</div> -->", styles: [".preview-image{width:250px;height:100px;object-fit:contain;margin-top:5px;border-radius:5px}.upload-icon-resume{position:absolute;right:25px;top:17px;width:18px;height:18px;cursor:pointer}.upload-icon{position:absolute;right:25px;top:45px;width:18px;height:18px;cursor:pointer}::ng-deep .ng-select .ng-select-container{width:101%;border-radius:7px}.form-control{font-size:14px;color:#6b7280}.role-selection-container{max-width:950px;margin:0 auto;min-height:300px;padding:2rem}.role-selection-container h2{margin-bottom:.5rem;font-size:1.5rem;font-weight:600}.role-selection-container .note{font-size:.875rem;color:#6b7280}.role-selection-container .note-label{font-size:.875rem;color:#6b7280;padding-left:5px}.role-selection-container .dropdown-wrapper{display:flex;gap:.5rem;margin-bottom:1rem}.role-selection-container .dropdown-wrapper select{flex:1;padding:.5rem;border:1px solid #d1d5db;border-radius:.375rem}.role-selection-container .dropdown-wrapper .add-btn{padding:.5rem 1rem;background-color:#4077ad;color:#fff;border:none;border-radius:.375rem;cursor:pointer}.role-selection-container .dropdown-wrapper .add-btn:disabled{background-color:#d1d5db;cursor:not-allowed}.role-selection-container .selected-roles{display:flex;flex-direction:column;gap:.5rem;margin-bottom:1.5rem}.role-selection-container .selected-roles .role-card{display:flex;justify-content:space-between;align-items:center;padding:.5rem 1rem;border-radius:.375rem;background-color:#fef3c7;color:#92400e}.role-selection-container .selected-roles .role-card .remove-btn{background:none;border:none;font-size:1.2rem;font-weight:700;cursor:pointer;color:#b91c1c}.role-selection-container .navigation-buttons{display:flex;justify-content:flex-end;gap:1rem;margin-top:70px;margin-bottom:50px}.role-selection-container .navigation-buttons .back{padding:.5rem 1rem;border:1px solid #d1d5db;border-radius:.375rem;background:#fff;cursor:pointer;min-width:18%;min-height:50px}.role-selection-container .navigation-buttons .next{padding:.5rem 1rem;background-color:#4077ad;color:#fff;border-radius:.375rem;cursor:pointer;min-width:18%;min-height:50px}.role-selection-container .navigation-buttons .next:disabled{background-color:#d1d5db;cursor:not-allowed}.image-wrapper{position:relative;width:150px;height:150px}.resume-wrapper{position:relative;width:550px;height:1px}.spinner{width:40px;height:40px;border:4px solid #e0e0e0;border-top:4px solid #9e9e9e;border-radius:50%;position:absolute;top:-32%;left:163%;margin-top:-2px;margin-left:-7px;animation:spin 1s linear infinite}.spinner-resume{width:40px;height:40px;border:4px solid #e0e0e0;border-top:4px solid #9e9e9e;border-radius:50%;position:absolute;top:-32%;left:99%;margin-top:-51px;margin-left:-20px;animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.profile-field{margin-top:-10px}.profile-field input{line-height:30px}.producer-type-container{max-width:1000px;margin:0 auto;min-height:300px}.producer-type-container h2{font-size:1.5rem;font-weight:600;margin-bottom:.5rem}.producer-type-container p{font-size:.875rem;color:#6b7280;margin-bottom:1.5rem}.producer-type-container .job-list{display:flex;flex-direction:column;gap:.75rem;margin-bottom:2rem}.producer-type-container .job-list .job-item{padding:.75rem 1rem;font-size:14px;border:1px solid #d1d5db;border-radius:.375rem;cursor:pointer;display:flex;align-items:center;gap:.5rem;transition:all .2s}.producer-type-container .job-list .job-item.selected{border-color:#4077ad;background-color:#eff6ff}.producer-type-container .job-list .job-item .plus{font-weight:700}.producer-type-container .navigation-buttons{display:flex;justify-content:flex-end;gap:.5rem;margin:50px 0}.producer-type-container .navigation-buttons .back{padding:.5rem 1rem;border:1px solid #d1d5db;border-radius:.375rem;background:#fff;cursor:pointer}.producer-type-container .navigation-buttons .next{padding:.5rem 1rem;background-color:#4077ad;color:#fff;border-radius:.375rem;cursor:pointer}.producer-type-container .navigation-buttons .next:disabled{background-color:#d1d5db;cursor:not-allowed}.actions{display:flex;justify-content:space-between;margin:50px 0 27px}.right-actions{display:flex;gap:16px}button{height:44px;min-width:120px;border:none;font-size:14px;cursor:pointer;border-radius:5px}button.primary{background-color:#4077ad;color:#fff;border-radius:5px}button.secondary{background-color:#d5d6da;color:#525862;border-radius:5px}button:disabled{background-color:#9ca3af;cursor:not-allowed}::ng-deep .custom-ng-select.ng-select-multiple .ng-select-container{min-height:45px!important;height:auto!important;display:flex;align-items:center;overflow:visible!important}::ng-deep .custom-ng-select.ng-select-multiple .ng-value-container{flex-wrap:wrap!important;overflow:visible!important;padding-top:2px;padding-bottom:2px}::ng-deep .custom-ng-select.ng-select-multiple .ng-value{margin-bottom:4px}::ng-deep .custom-ng-select.ng-select-multiple .ng-arrow-wrapper{display:flex;align-items:center;height:100%}:host ::ng-deep .custom-ng-select .ng-select-container{padding:0!important;font-size:13px!important}::ng-deep .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{padding-top:3px;font-size:14px;color:#6b7280}::ng-deep .ng-select .ng-select-container{padding-top:3px;font-size:14px;color:#6b7280}@media screen and (max-width: 767px){.actions{margin:10px 0;flex-direction:column-reverse;gap:5px}.res{flex-direction:column-reverse}.spinner{width:24px;height:24px;top:-22%;left:180%}.spinner-resume{width:25px;height:25px;top:-22%;left:32%}.ct-btn{width:100%;margin-top:45px}}\n"] }]
|
|
5556
|
-
}], ctorParameters: () => [{ type: CredentialingStore }, { type: UserDocumentService }, { type:
|
|
5744
|
+
}], ctorParameters: () => [{ type: CredentialingStore }, { type: UserService }, { type: UserDocumentService }, { type: i2.Router }, { type: IndustryService }, { type: UserDetailService }, { type: FileService }, { type: ProvidersService }, { type: i6.TokenService }, { type: i8.FormBuilder }], propDecorators: { backToParent: [{
|
|
5557
5745
|
type: Output
|
|
5558
5746
|
}], roleData: [{
|
|
5559
5747
|
type: Input
|
|
@@ -27777,7 +27965,7 @@ class UsMapComponent {
|
|
|
27777
27965
|
}
|
|
27778
27966
|
}
|
|
27779
27967
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: UsMapComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: UsMapLatestService }], target: i0.ɵɵFactoryTarget.Component });
|
|
27780
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: UsMapComponent, isStandalone: false, selector: "us-map", inputs: { selectedStates: "selectedStates", allowedStates: "allowedStates", isReadOnly: "isReadOnly", filteredLocations: "filteredLocations" }, outputs: { click: "onMapClick" }, usesOnChanges: true, ngImport: i0, template: "<style>\r\n #counties {\r\n fill: #d0d0d0;\r\n stroke: #000;\r\n stroke-width: .17829;\r\n }\r\n\r\n #borders {\r\n fill: none;\r\n stroke: #221e1f;\r\n stroke-width: .89143;\r\n }\r\n\r\n #separator {\r\n fill: none;\r\n stroke: #a9a9a9;\r\n stroke-width: 2.3177309;\r\n }\r\n</style>\r\n<svg *ngIf=\"allCoordinates!=null\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1000 600\">\r\n <path *ngFor=\"let coordinate of allCoordinates.locations; let i = index\" [attr.id]=\"coordinate.id\"\r\n [attr.d]=\"coordinate.path\" [attr.fill]=\"coordinate.fillColor\" [attr.stroke]=\"coordinate.strokeColor\"></path>\r\n\r\n <path id=\"borders\"\r\n d=\"m218.14 190.73-4.0008-0.788-3.6157-0.715-4.4037-0.997-2.5156-0.506-2.0806-0.328-24.5-5.201-1.9291-0.442-6.4932-1.487-0.12836-0.05-19.43-4.418-9.6186-2.211-9.0231-2.275-0.58835-0.151-10.533-2.683m298.16 94.021-0.60261 9.927-7e-3 0.134-0.59548 10.069-0.11232 1.995-0.49029 8.084-0.12837 1.902-0.49742 8.013-9e-3 0.144-0.72385 12.125-0.12836 2.177-0.3851 5.898-0.58657 9.162-5.6963-0.401-9.451-0.779-2.307-0.178-1.5261-0.113-16.754-1.246-13.161-1.1-4.8708-0.448-2.8044-0.315-1.1892-0.114-9.032-0.915-5.2238-0.538-8.5168-0.876-2.5548-0.274-4.582-0.505-2.3445-0.451-7.6111-0.9-1.1-0.136-16.24-2.032-12.029-1.608-17.253-2.452-5.9548-0.9-2.94-0.58-4.6052-0.697-11.933-1.872-20.257-3.414-6.4451-1.143-20.635-3.84m122.22 140.38-1.5101-1.615-0.18542-0.249-0.35272-0.42662-8e-3 -0.26999-0.091-0.33842 0.40028-0.3547 0.14838-1.2071-0.35526-0.11628 0.0311-0.40265 0.39485-0.19134 0.78818 0.0621 4.2272 0.447 7.3276 0.772 20.885 2.131 1.3675 0.128 15.95 1.43 0.85934 0.07 4.9813 0.408 7.6913 0.603 1.141 0.09 1.0038 0.07 1.3675 0.106 1.0911 0.09 0.47603 0.03 0.15154-1.993 0.7399-10.006 0.74702-10.05 0.8843-9.868 0.39402-4.195 0.52951-5.841 0.8843-11.009 0.0161-0.241 0.77198-10.021 0.35301-4.766 0.40114-5.286 0.76307-10.139 0.2086-2.694 0.54734-7.298 0.43502-6.074 0.27991-3.705 0.75594-0.449 0.85043-11.547m120.05-122.47 0.57765 0.04 0.22464 0.09 0.17829 0.248 0.0713 0.265 7e-3 0.355-0.11945 0.319 0.19968 2.646 0.51525 0.965-0.21038 1.422 1.4067 3.889 2.2589 4.195 0.30487 4.243 2.3962 4.065 0.74702 2.635 0.25674 4.677 1.2052 0.724-0.23356 2.619 0.76485 3.358-0.54021 2.732 1.5511 4.598 0.97166 1.414 0.22643-0.491 0.65075 0.578-0.37797 0.676-0.19968 0.185 0.0963 0.408 1.1321 2.846 1.2141 1.182 0.0463 0.119-5e-3 0.04v0.03l-0.0178 0.417v0.06l4.2985 6.044 9e-3 0.216 0.11232 0.162 2.1216 1.92 0.85935 0.553 0.43324 0.16 0.33696 0.128 0.0642 0.02h0.0802l0.66858-0.06 0.13015-0.05 0.1034-0.1 0.0143-0.02 0.60261-0.683 1.4709 1.849 0.14442 0.683 0.13728 0.634-0.36906 0.822-0.37083 0.06-1.2694 1.124-0.0713 0.08-0.6044 0.882-0.20859 0.298-0.6971 2.097 2.3855 2.624 3.1664 5.017 3.3999 0.907-0.082 1.079 0.025 1.606 0.0571 4.565 7e-3 2.522 0.025 6.044 0.0232 2.058 0.0963 7.614 9e-3 0.541 0.0553 8.429 7e-3 0.451 0.10518 6.707 7e-3 0.603 0.0874 6.525 0.0178 1.359 0.0731 5.359 0.0392 2.291 0.0553 3.903 1.1339 7.803 0.21751 1.377 1.2141 7.921 0.4261 2.788 0.84152 5.554-7e-3 0.403-0.11232 10.341-0.0481 4.747-0.0392 5.121-0.0571 7.343-0.041 5.761-0.0463 7.001m34.383-303.16-0.082 0.06-0.22285-0.1-0.91462-0.893-0.42789 0.03-1.1232 0.765-0.0892 0.183-0.016 0.17 0.0553 0.144 0.0802 0.105 0.016 0.02 0.016 0.257-0.21573 0.563-0.0731 0.07-0.0784 0.05-0.47603 0.03-0.44215-0.04-0.36014-0.25 0.20859 5.632 0.21573 5.964 0.041 0.996 0.0321 0.901-2.3391 1.46-3.3482 2.204-0.79872 0.698-0.20147 0.266-0.19968 0.36-1.6135 3.231-0.65432 2-0.0214 0.364 7e-3 0.151 0.041 0.61 0.0553 0.451 0.21751 0.168 0.77199 0.13 0.32091-0.05 1.2712 0.685 0.79338 1.501 0.32091 1.624-0.60974 1.558-0.42789 0.53-0.0214 0.02-0.19433 0.176-0.24782 2.001-0.33875 3.029 0.0499 0.756 0.39936 0.852 0.34945 1.615-0.1248 1.735-0.56874 2.717 1.166 0.674 1.6937 1.439 0.17651 0.224 0.041 0.225 1.1892 1.182 0.25851 0.119 0.69889 0.08 2.209 0.09 0.28169 0.06 0.18542 0.09 0.15867 0.137 0.0571 0.09 0.0907 1.0972 1.2126 0.84785 2.6351 1.004 1.8087 0.86839 0.88464 0.84954-0.0206 0.51007-0.10888 0.35855 0.38146 0.33967 0.34375 1.2638 0.24945 0.52827 5.2369 3.7568 2.5868 0.74896 2.4015 3.054 0.40293 2.78 1.1 5.151 0.28882 1.775-0.016 1.182 1.7846 1.255 0.38688 0.491 0.50456 0.811-0.0642 0.287-1.2837 2.163-0.43681 1.695 0.35658 2.186 0.37618 1.758 1.535 3.409 0.2086 0.433 1.3568 0.9 0.46712 0.216 0.8843 0.21 2.1769 0.418 0.8433 0.201 0.19255 0.1 0.12124 0.121 1.0697 1.945 0.18363 0.579 0.0107 0.13-0.0642 0.111 3.6139-0.178 8.4294-0.491 1.503-0.09 7.3508-0.38 0.60261-0.04 7.1778-0.394 2.7634-0.184 1.166-0.08 6.7802-0.563 1.7526-0.177 6.7357-0.465m-47.875 3.036-0.23534 0.403-7e-3 0.05 0.016 0.129 0.0392 0.116 0.13728 0.142 0.39223 0.282 1.1357 0.587 1.4441 1.005h7e-3l0.0428 0.04 1.0109 1.172 0.0481 0.07 9e-3 0.09-0.0963 0.651-0.0963 0.215v0.146l0.23534 0.53 0.0125 0.03 0.48316 0.603 0.016 0.01 0.29061 0.233 0.312 0.202 0.7078 0.226 2.972 3.541 0.18542 2.405-1.3265 3.437-1.2052 1.352-0.26565 2.505-0.89143 1.198-1.0198 1.189-3.2466 1.608-1.3835 0.353-0.58656 0.02-0.24782-0.03h-1.0519l-2.4104 0.658-0.6454 0.234-0.18364 0.119h-0.016l-0.12124 0.171-0.016 0.05-0.23891 0.982-0.20325 0.792-0.49029 1.966 0.025 0.207 1.1642 1.4 0.54912 0.272 0.22999-0.03 0.13907 0.06 0.14619 0.152 0.80942 1.326-0.016 0.555 0.016 0.06 0.0642 0.2 0.0874 0.62-0.0695 1.872-0.1462 0.683-0.0963 0.144-0.49742 0.282-0.18542 0.182-1.3425 1.915-0.0642 0.297-0.11945 2.603-1.207 1.416-0.56161 0.01-0.45819 0.03h-0.14442l-0.93422 0.335-0.10341 0.06-0.43502 0.248-0.15332 0.1-0.0535 0.06-0.0642 0.06-0.0642 0.07-0.73097 1.123-0.0267 0.171 0.0571 0.193 0.35479 0.167 0.28882 0.419 0.0963 0.28 0.0143 0.232-0.0535 2.082-0.041 0.202-0.2086 0.167-0.53129 0.187-1.2837 3.062-0.10697 1.125 1.2302 5.858 1.7526 4.249 1.043 1.656 2.4782 1.886 4.2343 4.397 4.3128 3.833 0.82725 2.821-0.0143 0.288-0.48315 0.747-0.0178 0.07 0.0446 0.161 0.95562 2.562 3.7672-0.995 3.1646 0.77 0.45819 0.139 0.44929 0.216 0.33874 0.2 1.7436 1.053 0.0731 0.129 0.016 0.135-0.0642 0.532-0.0392 0.217-1.2944 1.58 0.36727 1.85-1.1785 3.053-0.0802 0.283-1.2391 3.222-0.0499 0.06-0.0802 0.16-0.26208 0.892-0.0339 0.1-0.016 0.234 0.0339 0.964 0.24068 1.034 0.2086 0.515 0.32983 0.451 0.0571 0.08 0.0464 0.05 1.5119 1.47 0.91283 0.683 5.0883 4.645 4.8548 1.348 3.1164 5.159v0.137m1.3657 24.716 0.98949-0.05 0.18007-0.339 0.0285-0.06 0.0232-0.09 0.0571-0.227 0.016-0.06v-0.1l-7e-3 -0.04-0.0571-0.259-0.11232-0.266-0.0107-0.02-0.11767-0.183-0.025-0.02-0.0392-0.03-0.0481-0.03-0.28169-0.08-0.51347-0.08-0.33696 0.05-0.1141 0.07-0.21038 0.281-0.0303 0.04-0.0232 0.09-0.025 0.105-0.0178 0.08 0.0178 0.07 0.0178 0.1 7e-3 0.02 0.19968 0.426 0.43324 0.609 0.17221 1.4366 0.73163 1.0374 0.0356 1.0723-0.79321 0.19069-0.96399 0.24949 1.1929 0.8177 0.42823 0.81697-1.1619 0.66881-1.5765-0.18128 0.76907 1.2283 1.167 0.73525-0.15479 0.85658-1.2512 0.69806-0.12674 1.2144-0.61534 0.89166 0.0377 0.67553 0.89097 0.33102 0.47617 0.55124-0.26856 0.98014-0.98147-0.34724-0.73569 0.0621-0.1568 0.82911 1.205 0.58178-0.22483 0.82141-1.1873 0.209-0.28817 0.5779-0.428 0.41332-1.0431 0.36073-0.56619-0.0977-0.83543 0.76386 0.63059 1.2246 0.94802-0.50345 0.70215 0.72534-0.36423 0.74618-1.5684 0.91194 0.54536 0.76537 0.31793 1.0381-1.3548-0.31409-0.28014-0.63513-0.71907 0.0802-0.0609 1.1084 0.52054 0.70173-0.28397 1.8251-0.33266 0.0152-0.59069-0.62596-0.54086-1.0837-0.50482 0.64672-0.87967 0.29964 0.1373 1.1296 0.35218-0.19852 0.1536-0.42278 0.46648-0.25947 0.84871 0.74874-0.29434 0.36918 0.13487 0.58916-0.17755 0.67676-1.0595 0.64707 0.26079 0.47372 0.94121-7.3e-4 0.54624 0.43556 0.16377 0.66029-0.61348 0.88774 0.83425 0.29002-0.0918 0.81537-0.54234 0.63711-1.227-0.60771-0.41757 0.45107-0.57819 1.7883-1.5967 0.11225-0.22464 0.717 0.0321 0.321 0.47246 3.102-2.0966 0.769-2.8918 4.605 0.25673 2.676 0.20147 2.064-0.1355 0.442-0.0178 0.04-0.041 0.03-0.65075 0.57-0.81834 0.392-0.98949 0.204-0.98593 0.192-1.8007 3.231-0.85399 1.759-0.27278 0.569 0.0686 0.242 0.85667 0.699 0.20146 0.5-0.11232 0.772-3.7137 1.87-1.5261 6.573-0.10519 0.523 0.025 0.05 0.1141 0.203 0.56874 0.426 0.53842 0.435v0.02l-0.0499 0.247-0.33696 0.289-1.4049 0.565 0.26386 0.73 0.025 0.01 0.97345 0.663 0.79516 0.537 0.15155 0.536-0.23178 0.459-0.98949 0.288 0.96453 2.759 0.65075 1.18 0.4992 0.529 0.0553 1.767-0.61865 2.518-0.56161 0.634-0.15511 0.177-0.63292 1.021-0.20146 0.731 0.0321 0.186 1.5422 6.989 0.11411 0.274 0.0214 0.04 0.0606 0.07 0.0214 0.04 0.041 0.03 0.18364 0.16 0.0481 0.04 0.61153 0.191 0.13728 0.314-0.4368 1.47 0.0339 0.369v0.03l0.0553 0.08 0.082 0.128 0.016 0.04 2.1448 2.282 0.1355 3.318-2.2411 0.278 1.9612 2.291-3.9936 5.828-2.225 2.942-0.19255 0.346-0.30844 0.528-0.0143 0.02-2.0967 4.212-0.0481 0.09-0.0731 0.155-7e-3 0.02-0.73098 5.992-0.47424 2.477-0.47603 3.592 9.0552-0.426 2.2838-0.112 4.6052-0.259 5.0954-0.297 0.37618-0.01 3.9384-0.251 1.7276-0.105 8.3242-0.553 2.1127-0.144 0.041 0.713-0.24247 1.214-0.1979 0.442-0.12302 0.02-0.16046 0.02-0.0463 0.05-0.25852 1.075-0.29774 1.469-0.2389 1.213-0.21929 1.642 3.3019 4.548 0.0339 0.03 0.12836 0.13 1.2302 2.5 0.0303 0.426-0.18363 0.465-0.0499 0.193 0.016 0.123 0.62936 1.194 0.19255 0.371 0.43145 0.505 0.1462 0.169 0.0499 0.03 0.0713 0.05 0.0481 0.03h0.0374l0.91818-0.06m-3.5675-157.16-0.85756-1.927 4.0632-3.953 0.0981-0.03 6.9033 2.935 1.3247 0.141 0.13549-0.02 0.41898-0.185 0.21573-0.595 0.26564-1.277-0.51346-1.141-0.22464-0.216-0.24247-0.137-0.76307-0.916-0.15511-0.498 0.0107-0.153 0.51525-2.273 0.0945-0.227 0.23355-0.303 0.16224-0.114 0.12837-0.1 0.312-0.143 0.11232-0.05 1.0537 0.344 0.45641-0.608 0.30666-0.283h0.016l0.0874-0.06 0.43502-0.264h0.0392l0.1141-0.03 0.312-0.09 2.8865-0.611 0.18363-0.04 0.3441-0.392v-0.371l-1.4352-1.487-0.1462-0.264-0.3851-1.045-0.0107-0.02-0.0945-0.52-9e-3 -0.03 0.025-0.161 0.0963-0.256 0.0232-0.05 0.1462-0.248 0.29061-0.547h0.0143l0.83616-0.608 0.21751-0.236 0.1355-0.247 0.0874-0.234 0.23356-0.875 0.85347-0.0123 0.62549 0.40972 0.36884-0.59896 0.35566-0.30474-0.761-1.3758 0.1639-0.64788 4.0756-0.323 0.71405-0.21545-0.13273 1.5863 0.97575 0.25714 0.74424-0.94261-0.96608-1.0453 0.53276-1.6102 1.0862 1.0787 1.4406-0.43465 2.7563 0.739 0.64361 0.45 2.6262 1.75 1.3425-2.424 1.1179-1.047 2.7973-1.854 3.1967 3.316h0.13728l0.2389-0.08 0.49921-0.387 1.1731-2.674-0.1355-1.373 0.0303-0.252 0.0731-0.103 0.0963-0.06 0.36905-0.07 0.10519-0.01 3.6246-2.329-0.0553 0.649v0.04l7e-3 0.161 7e-3 0.105 0.0161 0.04 0.12836 0.449 0.10519 0.161 0.041 0.06 0.0874 0.06 0.81121 0.537 0.78089 0.306 0.12837 0.02 2.5959 0.128 0.53664-0.177 0.86826-0.296 0.44215-4.041 1.6723-2.757 2.4978-2.41 3.2787-3.712-0.0553-1.449 1.2444-3.736 2.4835 0.862 2.9239-2.001 3.8902-2.63-0.24247-1.003-1.774-2.828 0.81833-1.847 3.5515 0.305 2.0093-0.733 3.4873 1.286 1.9522 3.198 0.16937 1.054 3.3019 0.939 2.6369-0.281 0.60975 0.08 0.21751 0.08 0.11232 0.09 1.5671 1.622 1.3906 0.69 1.0269-0.121 0.0963-0.811 0.13728-0.225 0.18542-0.128 1.3978-0.612 0.21929-0.05 0.15154 0.02h0.025l0.72028 0.177 1.9148 0.46 0.0481 0.02 0.60083 0.282 1.0608 0.777 0.65297-0.59473 1.7154-0.2291 0.45033-1.306 1.2409-1.2932 0.31914-0.145 1.4869-0.674 0.48494-0.212h0.1123l0.18364 0.08 0.082 0.09 0.0232 0.04 0.0481 0.07 0.0303 0.06 9e-3 0.03 7e-3 0.03 0.0339 0.137 0.0143 0.163v0.02l9e-3 0.01-0.0178 0.278 0.16937 0.724 0.49921 1.502 0.041 0.09 0.11945 0.255 0.14442 0.169 0.0178 0.03 0.3851 0.257 0.0802 0.04 2.8668 1.116 1.383 2.1153 0.11771 1.4139 0.55823 0.72707 0.0458 0.8796-0.17561 0.64217-0.44929 1.966-0.0189 0.51345 0.80496 0.43682v0.02l0.33398 0.62528 0.53577 0.22659 0.90507 1.442 1.2152 0.44384 0.025 0.03 7e-3 0.02v0.129l-0.46533 0.804 1.6364 1.6768 2.088 2.5722 0.0303 0.12 0.67214 1.036 1.3255 0.77503 0.61789-0.36623 0.54941 1.0489 1.1657 1.0033 1.18 0.26062 1.0688-0.37538 0.47543 0.21776 0.61561 0.23406-0.0558 0.36194-0.8112 0.731-0.0481 0.153 0.12837 0.344 1.4054 0.80569 0.1457 1.3963 1.5119 1.317 0.21573 0.107 2.0432 0.738 1.2034 0.715 2.1056-0.417 0.0571-0.03 0.78803-0.724 0.0143-0.02 1.3182-1.3973 0.73081-1.4797 3.0126 2.066 2.0876-1.2709 2.1092-0.75413 1.2705-0.53696 0.75009-0.88698-0.74377-0.7155 0.28218-0.49001 0.108-0.82755 1.7954 1.037 2.2339-1.677 0.18542-0.147 1.8078-1.429 0.86112 1.237 0.78693-0.70655 0.77826-0.50404 0.11836-0.30902 0.71811-0.40625 0.363-0.32517 0.2201-0.58548-0.21297-0.10124-0.27033 0.41256-0.56864-0.14208 0.29893-0.28017-0.20669-0.60536 0.7063-0.6332 1.0358-1.254-1.585-1.239 1.1895-3.3749 2.107-3.2931 1.2444-2.836 0.33698-0.81999-0.28381-1.7093 1.4232-1.6756 0.66127-0.89109-0.43324-0.875v-0.03l9e-3 -0.08 1.1-1.71 0.47425-1.688 0.0891-1.625 0.0303-1.904 1.7775 0.426 0.36192 0.161 0.33697 0.337 1.0911 1.617 3.079 0.522 1.2462-1.799 1.8078-6.976 0.81169-1.8216 2.4631 1.2747 0.95813-2.8075 0.38772-0.39365 0.17315-0.58856 0.50785-0.22511 0.0795 0.55151 0.6329-0.68385 0.21625-0.74692 0.48656-0.69373 0.38722 0.21592 0.5854-1.3159-0.3105-0.17393 0.3456-0.77223 0.51501-0.95773 0.55744-0.33611 0.31363-0.33026 0.0683-0.48408 0.48209-0.63792-0.38897-0.25075-0.063-0.24592-0.19213-0.0964 0.40201-1.1592-0.39778-0.11886 0.14721-0.12984 0.16028-0.60726 0.45662-0.80021 0.21518-0.88435-0.44589-0.0266 0.20286-0.77186-0.39584-0.37058 0.0299-1.5315 2.3966 1.176 3.9526 2.0817 4.138 2.1934 1.0626-4.5688m-203.83 67.552 0.016 0.209 0.1141 0.46h7e-3l0.51347 0.958 0.33696 0.504 0.47603 0.467 0.22464 0.282 0.28882 0.651 7e-3 0.02 9e-3 0.04 0.10341 0.387 9e-3 0.02-9e-3 0.03-0.0713 0.708-0.0731 0.217-0.0143 0.02-0.0178 0.02-0.016 0.02-0.2086 0.107-0.65788 0.176 0.0303 2.017 0.45998 0.658 1.1161 2.089 0.64183 1.574 1.2141 0.99 3.4962 0.376 0.65075 0.838-0.68819 2.298-0.52594 0.305v0.53l1.0608 0.563-0.70601 3.188-0.60014 0.69835-0.20025 0.98537-0.83113 0.0314-1.1337-1.0951-1.2924 3.19 1.164-0.184 9.3618-0.676h0.13728l0.19968-0.02 5.4895-0.396 0.49742-0.03 7.9783-0.554 0.28809-0.71461-0.94775-3.4394 1.0715-0.06 2.9881 0.06-7e-3 0.707 2.9007-0.338 0.96454-0.111 5.5608-0.579 4.0239-0.394 0.98771-0.114 5.4074-0.649h3.6656l2.7492-0.676 3.7922-0.136 4.1862-0.176 3.4392-0.21 6.4201-0.617 2.5406-0.46 0.35301-0.06 5.641-0.354 3.3589-0.154h0.1355l9.435-0.884 0.62757-0.07 4.3556-0.499 1.0358-0.103 4.6052-0.884 3.703-0.41 8.8626-1.118 2.8044-0.29749 3.9748-0.41786 5.7141-0.83012 0.91461-0.137 1.7686-0.241 3.8474-0.57688 0.17212-0.77865 1.7454-0.209 3.2698-0.442-0.57767 0.90581 6.0261-0.58089 8.228-0.997 1.166-0.121 4.0917-0.643 3.1414-0.337 7.0209-0.988 0.47424-0.08 5.6499-0.951 3.6959-0.618 0.73097-0.136 2.2981-0.408 2.2428-0.412 1.453-0.257 6.1723-1.116 1.1161-0.217 4.9992-0.933 2.3944-0.481 4.9974-0.957 2.6369-0.523 2.3855-0.456 8.4775-1.672 2.3623-0.516 4.4679-0.91628-0.13419-0.20431 7.747-1.4414 3.1949-0.675 3.4213-0.722 4.5838-0.981m-79.996 151.57-0.30309 0.03-1.6723 0.202-1.223 0.06-2.3124-0.257-3.063-0.658-0.83617-0.563-2.1501 1.253-0.17116 2.484 0.0874 0.474 0.30665 0.465 0.60261 0.788 0.25852 0.706 0.0143 1.537-0.10519 1.573-0.10341 1.592-2.25 0.435-0.13015-0.03-0.40828-0.321-0.36905-0.529-0.19433-0.514-0.57765-3.221-4.0346 0.247-0.80407 0.06-2.4586 0.176-2.0895 0.153-8.8448 0.608-3.416 0.236-0.95027 0.06-5.0277 0.346-2.6119 0.169-5.2078 0.355-1.5083 0.102-3.8991 0.274-1.9701 0.137-9.5419 0.642-3.4819-6.283-9.5954 1.173-10.597 1.231-2.9827 0.296-3.9455 0.401-5.8995 0.565-1.8863 0.143-7.3936 0.659-8.5489 0.812-0.44394 3.077 0.25852 0.438 2.0004 2.181 0.62935 0.433 0.11054 0.04 0.32983 0.06 0.66679 0.344 0.88431 0.548 0.24068 0.394 0.0713 0.272 0.0321 0.378-0.19968 5.023-0.26565 2.514-1.2694 0.572m161.57-105.14-2.4336-1.736-9.3048-6.647-8.3331-6.072-0.25495-0.177-4.8779-3.246-4.4447 0.723-7.2973 1.058-4.4732 0.663-4.0115 0.592-0.37797-0.07-9e-3 -0.218-0.12837-2.346-1.3175-1.327-1.494-1.526-0.68455-0.2579-1.4372 1.5536-0.62476-0.42965 0.44815-1.3492-0.49188-0.74684-5.3022 0.483-0.72385 0.07-7.4631 0.788-1.9772 0.202-1.7615 0.192-4.5962 0.475-2.5994 0.119-3.8278 2.009-3.2947 2.25-2.4176 0.619-1.9612 0.947-1.7846 0.863-0.40293 1.831-1.7044 1.324-1.2355 2.243-0.30666 1.737 0.37084 0.618 4.771 2.933 1.1517 0.803 1.166 0.162 0.2086-0.105h0.016l0.74881-0.186 0.67392-0.09 0.39402 0.112 0.19255 0.147-7e-3 0.06 0.62578 0.966 1.9915 2.803 0.7078 1.842 3.3429 4.122 0.78803 1.198 2.8437 1.693 0.11945 0.03 0.26743-0.104h0.0874l1.6402 0.827 0.49742 0.355 1.182 0.972 0.76307 1.439 2.2001 1.92 1.8578 0.786 0.31201 0.291 0.16224 0.153 0.90035 0.852 1.2748 1.487 0.45107 1.742 1.248 1.767 1.7882 1.351 3.2074 1.503 1.576 0.867 3.6549 6.452 0.82903 3.359 2.0093 0.804 0.36906 0.137 1.7116 1.414 2.0396 4.138 0.2496 1.221 0.0998 0.45 0.18185 0.918 0.2496 0.996 0.0892 0.09 1.0858 0.419 3.5746 0.674m63.804-151.15 1.0304-0.19946m5.7308-1.1092 0.59034-1.208 6.5467-2.227m1.2373-10.35-5.1008 1.115-0.25852 0.06-0.6757 0.154-0.28348 0.05-0.24425 0.05-0.066 0.01-0.895 0.168-0.36727 0.07-1.0448 0.199-0.52238 0.1h-0.0642l-1.2284 0.208-0.54021 0.09-0.20682-0.725-0.19255-0.658-0.24068-0.867-0.46712-1.665-1.223-4.355-1.9683-7.007-0.64184-2.289-0.32091-1.134-0.50634-1.799-1.6065-6.0087c-0.1181-0.3089-0.1886-0.5974-0.23397-0.87511l-0.22409-0.83818 0.1571-0.0351 0.0231-0.0918 0.0561-0.22342 0.091-0.29813 0.10239-0.28128 0.1132-0.26472 0.1235-0.24844 0.13328-0.23247 0.14253-0.21678 0.15127-0.20137 0.15947-0.18627 0.16716-0.17145 0.17432-0.15693 0.18096-0.14268 0.18708-0.12875 0.19267-0.11508 0.19775-0.10172 0.2023-0.0887 0.20633-0.0759 0.20983-0.0634 0.21281-0.0512 0.21528-0.0393 0.21721-0.0276 0.21863-0.0163 0.21953-5e-3 0.21989 5e-3 0.21974 0.0159 0.21906 0.0261 0.21787 0.036 0.21615 0.0456 0.2139 0.0549 0.21114 0.0639 0.20786 0.0726 0.20404 0.081m4.349-38.04-1.0144 0.731-0.48138 0.522-0.41006 0.844-0.0874 0.256-0.20859 0.892-0.0321 0.314 0.0713 0.07 0.0321 0.378-0.1034 0.691-0.47425 1.118-0.68462 0.963 0.0963 0.119-1.872 3.497 1.6313 1.922 0.0571 0.135-9e-3 0.136-0.57765 1.77-0.35123 0.487-0.2603 0.03-0.25673-0.03-0.1355 0.04-0.29239 0.686 0.17829 1.387 0.42432 1.641 0.1141 0.208 0.18721 0.362 2.4657 1.006 1.3015 2.619 1.6706 1.012 0.1141 0.06 4.6355 3.56-0.99855 0.84489-0.72684 0.0798-0.21124 0.71388-1.8324 1.5504-1.109 1.616-1.3086 2.433-0.68641 0.981-2.1008 0.89552-1.1037 1.483-0.82356 1.5955-0.2292 0.78998-0.049 0.94306-0.33871 0.65734 0.18292 1.1643m17.35-25.62 0.0377-0.45335-0.14113-0.5183 0.2219-0.37502 0.19869-0.015 0.14734-0.28922-0.0182-0.74781-0.0641-0.2123-0.11107-0.55693 0.2363-0.30656 0.39896-0.11105 0.65066-0.15787 0.59126-0.25239m0.61099-1.3933 0.0985-2.128 0.4569-2.3499 0.12383-0.79119-5.3e-4 -1.9628-5.95-1.7665-0.40114-0.121-2.5156-0.852-6.3149-2.209-1.3675-1.337-0.75415 0.08-1.3514 0.07-0.29774-0.138-1.831-0.95-0.52239-0.497-0.7381-0.722-0.45998-1.054-2.7314-4.901-1.9853 0.1111-0.65872-1.6071-0.30487-0.289-1.0127-0.713-0.3227-0.07-2.0556 0.456-10.351 2.243-0.68106 0.145-6.8534 1.406-6.1562 1.231-0.64361 0.142-10.735 2.181-2.3391 0.472-7.6342 1.441-1.6919 0.335-4.8334 0.889-4.6426 0.903-0.7399 0.128-2.3873 0.403-9.1925 1.629-0.25673 0.05-2.2821 0.394-0.52951-3.012-0.44216-2.549-0.098-0.61m144.3-46.196-0.63706 0.37368-0.54676-0.30368-0.48851 0.03-0.11232 0.06-0.13193 0.06-1.5564 1.15-0.22913 1.373-1.3523-0.023-0.21751 0.226-0.43716 0.59429 0.29773 1.226-0.76805 2e-3 -0.10698 0.243-0.41541 0.987-5.5465 1.279-0.0713 0.02-0.2496 0.06-4.0649 0.909-0.49208 0.111-5.8318 1.262-2.8936 0.619-7.7698 1.663-1.5279 0.321-3.9847 0.861-0.14798 5.648-0.25317 10.141 0.3851 0.779 0.16046-0.04 7.2242-1.528 0.73989-0.167 3.1345-0.74112 0.2509 0.99379 0.88363-0.30454 0.0335-0.96542 3.9575-0.93571 6.1794-1.463 0.56161-0.111 0.7078-0.146 4.2896-1.02 0.11232 0.337 4.9011-1.503 1.9775-0.55095 0.18762 0.77537 0.54372 2.105 0.65087-0.29717 0.029 0.28586 0.34232 0.59989 2e-3 0.39398 0.14316 0.18518-0.0776 0.28603 0.11706 0.19297 0.0922 0.30225 0.17135 0.1402 0.11067 0.18005 0.10708 0.0134 1.2362 0.15156 0.86162 0.78465m0.62842 0.67933 0.96636 0.15371 0.3784 0.71595-8e-3 0.43305 0.22704 0.16744 0.78051 2.4678m-205.54 285.58-0.57587-1.665-0.21216-0.458-0.14619-0.262-0.92888-1.022-0.14619-0.04h-0.16938l-0.16937-0.1-0.19968-0.465-0.27278-1.632 0.1355-0.595 0.20859-0.61 0.24247-4.901-2.1377-5.329-0.33874-0.449 0.90748-4.937-0.0535-1.719 2.0895-4.127 0.0464-0.07 0.16046-0.724-0.19255-0.383-0.47424-0.396-1.2765-0.344-0.12123-0.136-0.041-0.194 0.21573-0.82-0.53486-3.174-1.8435-2.05-1.3889-3.059-1.2284-2.735-1.544-5.344-0.13728-0.481-1.8631-6.725-0.34588-1.239-1.0768-3.831-1.5582-5.611-0.39401-1.405-0.73098-2.628-1.2854-4.644-1.5761-5.351-0.40827-1.455-0.22465-0.789-1.5119-5.344-0.72384-2.811m-87.764 7.185 10.929-0.669 1.494-0.11 5.4484-0.353 2.8847-0.204 3.3732-0.247 3.6264-0.282 0.68284-0.06 7.5754-0.603 0.31379-0.02 3.0523-0.251 3.9954-0.578 14.217-1.1 0.23177-0.02 6.9924-0.49 0.97701-0.09 8.6665-0.854h0.14085l8.3349-0.811 4.828-0.435 2.4746-0.257 2.0182-0.217 1.831-0.25 5.3254-0.669 3.1218-0.367 0.64005-0.08 2.8704-0.351 5.5679-0.685-0.0695-5.079 1.5154-1.334 1.9808-0.05 0.70424-0.579 0.43502-0.594 0.75415-4.122 0.15333 0.05 5.0206-3.18h0.42607l2.6262-0.271 0.22643-0.146 3.1896-2.525 0.66679-0.977-0.0802-0.437 5.1133-2.544 0.71136-3.625 0.83082-0.21 1.6224-1.519 1.1553-1.141 0.3227-0.234 0.46711-0.336 0.0874-0.01 0.27635 0.184 0.35122 0.337-0.25145 1.3811 1.0062 0.71758 0.70833-0.79809 0.51588-0.15063 1.3086-2.395 3.2787-2.442 2.7403 0.793 2.1608-4.042 0.19255-0.554 0.1355-0.369 0.84508-0.947 0.9164-0.627 0.0232-0.02 0.0963-0.06 0.1141 0.263 0.48138 0.154 0.28704-0.01h0.0339l0.38332-0.129-0.0695-1.095-0.016-4.4372m117.55-168.71-0.47077 0.13278-0.6967-1.2856 0.41821-1.017-0.48092-2.2341-1.7187-8.397-0.97345-4.525-0.50811-1.0576-0.70967-0.14937-0.46265-0.79353-1.0384 0.11388-0.0446 1.2767-0.54556-0.226-0.0642-0.09-0.16224-1.342 0.0909-0.933 0.31022-1.704-0.59548-1.157-0.27991-0.507-1.9166-4.525-0.0356-0.08-0.0392-0.772v-0.749l9e-3 -1.902 0.67392-1.922-0.67744-2.2226 0.22812-1.5374-0.025-0.25-9e-3 -0.01-0.29774-0.804-0.22999-0.499-0.76486-0.924-0.46711-0.273-0.26564-0.224-0.24342-0.85773-0.21152-0.70406-0.0333-1.6736 0.12339-1.8634-0.93491-0.59916-0.17496-1.0307 0.31908-1.0192-0.1235-0.9013-0.60896-0.70965 0.025-0.50216m-30.194 154.15 1.9051-2.8795-2.1692-1.2911-0.91461-0.474-1.0018 1.6476m-44.205-10.311 1.8881 11.789 0.5375-0.20301 1.4158-1.5436 0.92423-1.7074 3.2698-3.945 1.897 0.426 2.8847-3.971 2.1216 0.844 3.35-0.184 1.8399-3.15 0.93244 0.185 0.20859-0.03 0.62044-1.143 0.45642-0.722 0.12123-0.137 0.10519-0.04 0.59548 0.02 0.64896 0.07 0.64362 0.241 0.80229 0.581 0.29596 0.328 0.49145 0.54089 0.83697-0.31276 0.67438-0.0282 0.8573-0.31276 0.63372-0.0892 0.0831 0.60582-0.77054 0.32126 0.776 1.2116 0.51177 0.27667 0.49876 0.038 0.21889 1.2588 1.1538 0.16126-0.0703 1.8063 0.68168 0.3835 0.68998-0.08 1.0942 0.4121 0.95382-0.22465 0.70077 0.87146 1.5176 0.43709-0.19207 0.92301-0.51394 0.19299-0.0731 0.193-7e-3 0.105-0.0428 0.289-0.0214 0.208 5e-3 0.02 0.12302 0.392 0.11232 0.136 0.11232 0.08 1.1393 0.765 0.0339 0.01 0.63292 0.04 0.86113-0.04 0.83616-0.09 0.98643 0.45194 0.66294 0.2112 0.0304 0.72855 0.38734 0.28294 0.36992-0.0103 0.25992 0.068 0.85706-0.10347 0.55251 0.47231 0.74641 0.546 0.76516 0.41139 0.52111 0.96665 0.0895 0.94639 0.0382 0.27715-0.43324 1.8191-0.55645 0.41311-0.24764 0.61848-0.7196 0.0468 0.96036 1.011m-95.382 21.408 0.63191 0.19913 1.032-0.4411 1.491-0.81395 0.61454 0.032 0.82453-0.31568 0.30947-0.47668 0.0321-0.153 0.0321-0.168 0.0802-1.647 7e-3 -0.05 7e-3 -1.006 0.23716-0.17737 0.92884 0.0246 0.43536-0.30324 0.10519-0.44641-0.50201-1.3684 0.0998-0.62121-0.3162-0.378-0.17291-0.67761-0.45241-0.39081 0.0418-0.627 0.5502-0.37521 0.45921-0.57121 0.0898-0.55361-0.12916-0.75037 0.31921-0.49711 0.35654-1.367 0.0553-0.321 0.50049-0.50021 0.31963-0.88779 0.34364 0.0586 0.54007 0.74639 0.65553-0.11682 0.79983 1.1674-0.43812 0.81503 0.0642 0.178 0.59427 0.3921 0.76743-0.36071 0.24216-0.78817 0.13202-0.61985 0.78839 0.61591 0.75221-0.24967-9e-3 -0.47722-0.50093-0.47262 0.3208-0.92552-0.24776-0.45186-0.19255-0.225-0.40293-0.269-0.19968-0.146-0.19255-0.252-0.17408-0.28924 0.71824-0.0999 0.46937-0.40238-0.0805-1.1698-0.25733-0.95367 0.312-0.69 0.36228-0.0809 6e-3 -0.41083 0.10278-0.61747 0.36091-0.20134 1.6733-0.15864-0.11287-1.7781 0.3312-0.33044 0.66437-0.635 0.46015-0.84476 0.33743-0.0942 0.20147 0.02 0.31833 0.31636 0.50444 0.93337 0.51657 0.1381 1.6997-1.4789 0.75021 0.0361 0.15999-0.71514 0.40045-0.59858 0.68019-0.2984 0.21068-0.39231 1.18-2.2969 1.3224-1.6516 0.93512-0.13608 0.32468-0.76042-0.0494-1.304 0.52402-0.25638-0.067-0.59945-0.74173-0.68644 0.58981-1.0492-0.15055-0.72905 0.0987-0.38365 0.44705-0.44857-0.53123-0.95384 0.70262 0.13774 0.2746-0.24798-0.32902-0.81678 0.28979-0.59958-0.2231-0.88996 0.0883-0.74966 8e-3 -0.43804-0.17022-0.30979 0.46008-0.71332-0.25169-1.4648 0.2651-0.5854 0.29924-1.3774 0.59961-0.60926-0.0816-0.37475 0.19007-0.79688-0.38599-0.67318 0.0216-0.56786-0.52034-0.31698 0.19895-0.35332-0.11279-0.64803 0.20639-0.64573-0.0778-0.53574-0.43175-0.44391-0.24143-0.65353-0.43172-0.43273-0.41394-0.31735-0.0623-0.48798 0.34873-0.5693 0.65552-0.41989 0.39766 0.0748 0.24941-0.26565 0.6878-0.52193m-76.492-13.91 0.47425 3.81 0.28882 2.394 0.43324 3.56 0.0499 0.425 0.72384 6.06 0.1872 1.535 0.542 4.468 0.42075 3.583 0.56874 5.056 0.11945 0.977 0.70958 7.032 0.2086 2.034 0.48851 4.386 0.41897 3.666 0.12124 1.043 0.51346 4.999 0.52951 4.598m-54.007 35.885-0.90748-2.034 0.86112-0.03h0.0303l0.0392-0.03 0.0107-0.02 0.0481-0.1 0.25673-5.325 0.10341-2.411 0.025-0.112 3.4623-4.598 1.2783-3.68 0.34588-0.941 1.4067-1.799 0.14263-0.12 0.17651-0.322 0.25138-1.462 7e-3 -0.562-0.68462-1.471-0.0392-0.06h-0.0731l-0.14441-1.146 0.10519-0.145 0.12836-0.363 0.0481-0.733-1.2765-2.281-0.83617-0.982-0.36192-1.235 0.23355-2.395 0.82012-5.143-0.27456-3.005-0.58656-6.363-0.51347-6.115-0.59369-7.604-0.0267-0.328-0.50455-5.666-0.56339-6.308-0.32983-3.592-0.27278-3.045-0.33874-3.96-0.46355-5.498m-64.896 35.334-1.1393-0.08-0.72563-0.586-1.7508-2.154-0.0642-0.16 0.0571-0.467-0.041-0.152-1.3746-1.038-0.36193-0.226-3.9366 0.01-4.0988 0.288-2.956 0.193-4.9742 0.337-1.3264 0.07-6.6376 0.348-4.8048 0.223-3.1735 0.09-3.769 0.155-4.1862 0.177-3.7601 0.117-4.147 0.1-2.7866 0.03-4.9118-0.02-4.9974-0.03-2.9738-0.02-6.7981-0.07m84.663-140.56 1.815 0.988 3.2306 3.97 1.478 0.312 1.6224 0.337 11.524 2.364 0.86647 0.177 0.67749 0.144 1.0929 0.369 1.1321 0.555 0.97345 0.474 4.081 1.045 0.32983 0.586 2.8116-0.298 4.6765 0.587h0.0356l0.39937 0.06 0.61152 0.296 0.37797 0.252 0.24782 0.158 0.47246 0.676 0.0499 0.07 0.0232 0.08-0.22465 0.385-0.25673 0.362-0.11232 0.09-0.28169 0.36-9e-3 0.02-0.0232 0.08 0.1034 0.201h0.0161l0.6133 0.498 0.1355 0.03 0.21751 0.06h0.016l0.21751-0.03 3.7993 1.021 0.30488 0.248 0.025 0.02 0.041 0.04 0.48138 0.594 0.16045 4.147-1.5696 3.4397 2.2064 0.0435 0.84406-0.85296 1.0418 0.86344-1.0999 3.3453 9e-3 0.02 0.14263 0.472 0.0731 0.122 1.2694 1.342h0.0161l0.41719 0.07 0.73097 0.115m-495.03 256.91 2.0182 0.151 2.6672-1.654 0.83438-1.173 0.16937-0.596 0.18542-1.512-0.57052-1.331-0.0553-0.06-0.0571-0.07-1.6723-0.28-0.312-0.137-0.88609-0.62-0.40115-1.068-0.0143-0.04 1.1321-6.975 1.9273-0.476 2.3142-2.731 0.74881-2.603 0.54555-2.725 0.10519-0.747 0.49029-1.759 0.53843-0.933 1.7276-2.442 2.3694-0.908 1.6242-0.667 2.4104-1.39 0.10519-1.029-0.8843-1.546-1.0216-1.137-1.1731-1.407-1.1874-4.999-0.0642-0.925-1.2783-2.008-1.0127-2.635-0.0161-0.121 0.0321-0.321 0.57765-2.557-2.5138-3.742-6.8159-10.198-0.47246-0.701-1.2712-1.895-3.687-5.537-3.6157-5.383-0.2086-0.307-2.6369-3.952-0.6347-0.949-4.9172-7.384-6.0671-9.08-1.15-1.744-1.9683-2.926-0.34409-0.513-9.2424-13.876-8.1887-12.224-9.8183-14.771-2.307-3.435-3.4302-5.135-4.2343-6.351-0.90926-3.446 0.24247-1.013 0.28882-1.198 0.85935-3.382 0.77911-2.884 1.6402-6.212 0.35301-1.31 1.7347-6.508 1.1339-4.3 0.32983-1.294 1.0358-4.008 2.0646-8.221 1.8328-7.135 4.7014-18.161-4.7424-1.198-0.65074-0.167-6.0493-1.608-3.0541-0.82-9.3048-2.603-13.733-4.09-0.9164-0.282-0.52238-0.169-2.0164-0.546-2.209-0.547-5.5697-1.575-0.42611-0.121-0.72206-0.216-1.7526-0.636-1.2284-0.255-4.7496-1.326-4.9742-1.375-6.3328-1.993m168.04-122.36-2.3712 11.097-1.3746 6.388-1.1161 5.311 0.47425 0.843 3.0933 6.301 0.0232 0.08 0.025 0.06 7e-3 0.03v0.09l-7e-3 1.287-0.52238 1.325-0.44215 1.005-0.29774 1.865 0.0161 0.569 2.4604 3.4 0.33696 0.288 0.26565 0.234 0.8433 0.41 1.2213 0.489 0.26565 0.194 1.3978 3.148 1.3086 3.054 0.73989 1.382 0.40114 0.74 0.30666 2.323v0.01l0.0713 0.195 2.316 3.093 0.22464 0.06 0.10341 0.03h0.68997l0.8843 2.19 1.7276 0.372 0.36192-0.1 0.24961-0.1 0.41006-0.08 0.82725 0.112 0.28169 0.233 0.0731 0.07 0.0874 0.09 0.0571 0.266-0.0963 0.506-0.55626 1.574-0.93957 2.163-1.4067 3.125-4.4839 11.186-0.56161 3.077-0.28169 1.558-0.0161 0.08 0.0481 0.06 0.7078 0.1 0.6347 0.16 0.20147 0.09 1.1803 1.864 0.14441 0.571 0.65966 0.103 3.1503-1.446 1.9843-1.736 1.4138-0.811 0.32983 0.346 1.5582 2.201 0.0891 0.289 0.18364 1.824-0.0143 0.683-0.2086 0.378-0.041 1.366 0.0232 1.8 2.5156 9.353 2.6672 3.712 0.54734-0.135 0.57052 0.449 0.68283 0.763 0.30666 0.474 0.35122 1.102 0.46712 2.001v0.176l-0.0963 0.177-0.0642 0.05-0.0232 2.868 0.19077 1.086 0.44393 0.642 1.3086 1.464 0.41719 0.151 0.32983-0.184 0.16046-0.249 9e-3 -0.06 0.19255-0.86 0.23356-0.361 0.6347-0.674 1.084-0.257 5.7462 1.43 2.4425-0.917 4.475 0.459 3.2395 0.923 2.0895 0.06 2.7795-3.191 1.831-0.69 0.77198 0.763 1.3193 2.587 0.71493 2.064 0.18542 0.548 1.3086 1.214m116.93-19.792-0.10519 1.453-1.2373 15.326-0.69888 4.917-0.80408 9.788-0.73989 8.968-0.0784 0.898-0.57051 6.606-0.67571 8.06-0.0481 0.58-0.90748 10.982 9.1586 0.749 8.4294 0.651 3.4873 0.265 11.877 0.817 3.4623 0.226 4.179 0.321 6.6608 0.346 5.3771 0.282 6.0742 0.281 3.2626 0.154 1.1981 0.06 1.3336 0.07 11.129 0.467 4.6854 0.168 12.671 0.371 3.104 2.784 2.3605 1.07 1.8328 1.582 0.36192 0.16 0.29774 0.05 0.27991-0.01 0.85221-0.129 0.22464-0.139 0.47425-0.431 0.353-0.506 0.42993-0.44376 0.0768-0.69793 1.013-0.12928 0.41827 0.55597 0.55227 0.12024 0.47229-0.69024 0.59944 0.15421 0.41154 0.58529 0.57947-0.56211 0.75703 9e-3 0.13903 0.46347 0.34699-0.0287 0.96522-0.36538 1.0816 0.23032 0.90705-0.39029 0.75114-0.18169 0.99904 0.5016 1.1391 0.0813-0.0572 0.9863 0.99446 0.77792 2.0806 0.596 3.5212 1.315 1.3728 0.869 0.18541 0.419 0.0963 0.385-0.0642 0.271-9e-3 0.21 0.0499 0.209 1.2052 1.792 3.2466 0.829-0.60439-1.666-0.60975-1.606-0.43502-0.699-0.55447-0.515-0.44037-0.337 0.67393-3.084 0.6757-1.801 1.1642-4.019 0.26565-0.708 0.0481-0.158-0.64361-2.314-0.15868-0.08h-1.1981l-0.37083-0.836-0.0929-1.066 1.0895-0.0404-0.0335-1.6183-1.2164-1.2484-0.0338-1.5788 2.4247 0.02m-11.289-126.19-0.0731 0.07-0.0713 0.337-0.0178 0.339 0.0892 0.481 1.1089 3.623 0.29774 0.884 0.67571 1.535-1.0296 3.178 0.45731 0.495 0.0981 5.48-0.50634 1.953-9e-3 0.467 0.36192 1.453 1.4958 5.391 2.0236 4.621 0.53843 3.962 0.2817 5.978 0.0802 1.993 0.0232 2.908 0.66679 2.186 0.19434 0.531-0.30666 4.998 9e-3 1.29 0.68284 1.988 2.209 5.32 0.61153 4.821 0.0481 0.403-0.0321 0.465-0.0392 0.145-0.29774 0.836 0.21751 1.993-0.0891 1.004v0.05l-9e-3 0.03-0.0713 0.61-0.0571 0.497-0.0392 0.209-0.016 0.114-0.016 0.05-0.016 0.03-0.025 0.06-1.125 1.671-0.32805 0.33-0.61866 0.337-0.55625 0.362-1.4691 1.18-0.025 0.03-0.0321 0.04-0.025 0.02-0.0553 0.128-0.22464 0.771 0.0642 0.09 0.28883 0.369 1.125 1.503 1.1188 2.4545 1.2435 0.1645 1.5511 0.756 0.52951 0.426 0.30665 0.706 0.26565 1.326-0.0178 6.702-0.0321 7.98-0.0143 2.017-0.0499 7.987-0.0481 8.003-0.0321 8.06 6.6608 0.02h3.1913l6.7749-0.04h1.109l7.866-0.07 1.0127-0.02 6.8462-0.1 3.2555-0.05 4.6034-0.07 5.3593-0.121 2.5245-0.06 7.456-0.215 0.41006-0.02 7.8428-0.28 1.7365-0.06 6.1295-0.25 5.8193-0.248 1.9843-0.09 6.5396-0.314m-434.37-2.74 8.5096-37.886 1.7757-4.307 0.48138-0.804 0.78089-1.478 0.62579-2.555 0.81299-0.997 0.0232-0.04 0.0232-0.05 0.0321-0.06h9e-3v-0.02l0.0232-0.234-0.0553-0.176-0.0161-0.03-0.85221-1.686-0.16759-0.105-0.63648-0.225h-0.0874l-0.15333 0.07-2.0004-0.811-0.24069-0.408-0.0321-0.33 0.0232-0.194 0.041-0.122 0.55448-3.783 0.20146-0.403 3.5586-4.892 0.37797-0.339 0.11232-0.05 0.39401-0.09 1.535-0.523 0.87539-0.941 0.48316-0.513 0.37619-0.403 0.53842-0.931 0.016-0.02-0.0232-0.185-0.0963-0.225-0.0571-0.225-0.016-0.465 0.40114-0.836 0.50812-0.467 0.77912-0.706 2.4015-3.914 0.54556-1.15 2.7813-3.567 1.5422-1.576 0.38688-0.441 0.0642-0.29-0.55448-2.908-0.10519-0.442-0.312-0.396-0.27456-0.353h-7e-3l-0.58657-0.257-1.3996-1.287-0.73098-0.674-0.0481-0.09-0.0713-0.136-1.1321-3.528-8.8163-2.057-1.9202-0.466-5.8425-1.406-0.29595-0.07-15.445-3.703-0.45106 0.378-0.3441 0.151-1.1731 0.339-0.57052 0.09-0.69889-0.05-0.41006-0.103-0.44215-0.227-2.4104-0.33-0.90926-0.05-0.90748-0.06-1.0784-0.44268-0.59088-0.32062-0.84956 0.59188-0.59943 0.55642-1.6706-0.159-1.535-0.16h-2.1983l-2.4229 0.296-0.51347 0.128-0.83617 0.635-3.1664-0.193-1.2534-0.217-0.32805-0.216-0.19433-0.281-0.41719-0.787-0.44929-0.315-0.68462-0.168-0.33696 0.112-0.69175 0.33-1.7187 0.241-1.4138 0.217-0.83616 0.257-0.34588-0.458-1.419-0.64655-2.0398 0.83215-0.254-1.6655-2.1207-1.2511-0.55447-0.113-1.1-0.162-1.0947-0.948-1.7258-0.03-1.3265-0.104-0.43502-0.105-1.1072-0.61-0.94849 0.06-0.68284 0.353-0.45106 0.403-5.7052 0.796h-0.29774l-0.45641-0.122-0.52416-0.256-4.459-2.748-0.42611-0.322-0.81834-0.86-0.31378-0.401-0.01605-0.563 0.15333-0.418 0.34409-0.579 0.41897-2.804 0.11945-0.378 0.14441-2.186-0.44928-2.505-0.15333-0.605-2.5941-3.18-0.75594-0.314-0.82012 0.152-2.4818-0.104-0.12124-0.04-0.67392-1.052 0.35122-1.028-0.16759-0.539-0.23356-0.417-0.06418-0.105-0.04814-0.03-0.08914-0.06-1.0358-0.06m459.25 277.22-7.103 0.06h-1.1981l-6.0974 0.06h-2.0913l-4.8209 0.03h-3.8956l-9.5722-0.03-4.0899-0.02-7.2474-0.07-5.7373-0.07-6.1955-0.107-5.6499-0.105-4.2824-0.09-3.6068-0.114-8.3082-0.257-8.2939-0.282-1.5511-0.06-8.4062-0.385-1.5814-0.07-9.9074-0.408-5.682-0.241-2.209-0.112-8.8965-0.443-8.6059-0.474-0.25674-0.02m260.83 150.42-1.0198-8.363-0.73811-5.996-0.34053-2.655-0.93065-7.341-0.76485-5.994-0.46533-4.508 0.13015-7.707 0.0464-1.879 0.13728-6.245 0.1355-8.132 0.0267-1.439 0.1355-6.896 0.10519-5.703 0.10162-4.894 0.18542-7.28 0.0178-0.658 0.11945-5.452 0.0731-3.298 0.0642-2.756 0.19255-7.226-2.1074-2.225m-53.058 49.651-1.8952 0.07-3.2787 0.134-0.47424 0.03-11.676 0.474-12.592 0.339-5.0616 0.1-4.7959 0.13-4.8369 0.128h-0.58835l-5.4467 0.121h-0.18542l-4.3859 0.1m-168.63-282.27-15.903-1.503-1.1457-0.10895-11.967-1.201-3.0873-0.16008-3.6627-0.39692-10.109-1.182-3.1022-0.378-0.85935-0.177-7.6592-0.939-4.6035-0.56442-5.7603-0.71258-6.0029-0.813-4.9903-0.659-2.1305-0.289-0.32804-0.05-2.9899-0.547-8.5417-1.157-3.6638-0.57-1.3514-0.211-1.815-0.09-5.3433-0.724h-0.041l-2.4194-0.378-0.70602-0.243-2.0004-0.408-2.7082-0.419-1.3978 7.595-0.59548 4.388-1.7686 11.168-1.7116 11.002-0.59813 3.9591-1.1295 7.0089-1.8863 11.557-1.8738 11.679-1.535 9.644-1.1963 7.499-0.93244 5.801 9.2959 1.535 7.7305 1.109 0.8112 0.121h0.0178l2.4657 0.353 2.3944 0.337 0.66857 0.1 8.0176 1.07 2.6939 0.392 13.667 1.84 5.6891 0.685 10.293 1.243 7.8928 0.929 9.1836 1.114 2.2339 0.265 15.686 1.607 5.7302 0.554 15.308 1.296 8.2279 0.674 3.3019 0.255 12.551 0.918 0.55626 0.03 9.8022 0.656-0.36192 5.842-0.0802 1.207-0.3851 5.955-0.13728 2.097-0.50634 8.001 11.186 0.694 1.519 0.08 9.8824 0.529 0.34766 0.03 9.5294 0.457 0.27278 0.02 9.6302 0.385 7.8402 0.281 1.9594 0.06 5.9548 0.185 3.8813 0.105 4.0328 0.09 5.9869 0.144 1.9291 0.04 7.9142 0.127 7.932 0.105 1.9362 0.02 5.9797 0.05 3.9277 0.02h7.891l7.8428-0.03h0.55447m-344.96-175.16-0.0981-1.59 0.76485-2.108-0.0981-1.975-0.15333-1.27-0.0232-0.08-0.50455-2.034 0.33696-1.004 0.58657-2.596 2.94-13.08 0.66857-2.942 0.53665-2.386 3.0291-13.621 0.34588-1.517 4.1309-17.759 0.77911-3.384m544.87 306.7 3.703-1.986 1.0631-0.20406 3.6282-2.1982 0.93362-0.15877 0.75297-2.4929 1.6759-0.11084 1.251-0.99026 0.37797-0.661 0.0731-1.742 0.79182-0.73517 1.5262-0.79706-0.0918-1.9219 2.5304-2.4119 0.20147-0.137 0.70601-0.506 2.7153-1.532 0.6757-0.872 5.2809-6.347m165.79-165.23-2.2482-0.901-0.624-2.506-0.0499-0.06-1.9433-1.159-0.80586-0.401-0.29595-0.153-0.46712-0.649-0.15154-0.323-0.12302-0.513-0.27991-3.135-2.0253-5.279-3.284-10.872-3.0148-9.586-0.24068-0.772-3.3999-10.253-0.61865-1.767m-4.8369 8.235-0.38688 0.795 1.1343 1.6715-1.1575 3.9715 0.1355 0.383 0.60439 0.596 0.73811 0.907 0.40293 0.499 0.0713 0.114 0.41719 0.674-0.53806 1.0829 0.32234 0.91809-0.18542 0.515-0.0802 0.137-0.79516 1.398-0.066 0.103-0.0945 0.138-0.22464 0.29-0.041 0.06-0.51525 0.378-0.34409-0.03-1.0768 1.397-1.125 0.708-1.1125 0.692-0.0838 0.08-0.0499 0.04-0.53843 0.972-0.0553 0.234v0.144l0.52773 1.84 0.29953 0.403 0.27277 0.217-0.0613 1.2858 0.39548 0.28491-0.30109 0.91455-0.44451 1.7288 0.53008 0.4372-0.0985 1.249-0.71253 1.1626 0.22275 1.2167 0.0275 0.99352-0.51013 1.1576-0.31231 0.20594-0.39109 0.84349 0.20265 0.56513-0.24805 1.2853 0.23913 0.27352-0.79544 1.0393 0.17679 1.0177 0.47858 3.6804 0.31836-0.0164-0.0213 0.67393 0.36536 0.22607-0.0731 2.01 0.0642 1.695 0.49157 1.2321-0.15887 1.4514 0.38994 1.3392-0.97856 1.037 0.20726 0.9198-0.3482 0.9948 0.38928 0.62114 0.52467 0.6805 1.8381 1.478m-13.138 19.375 1.5743 8.743 0.54556 3.182 0.62757 3.68 0.2817 1.622 1.6114 1.4831-2.264 2.3349-1.2516 1.278 1.7971 2.312m-356.71 148.89 9.9252-0.159 3.8653-0.08 5.1757-0.129 4.9403-0.121h0.35479l8.0978-0.241 1.5048-0.05 4.459-0.153 6.9496-0.287 0.54734-0.03 8.219-0.369 4.0774-0.146 0.78624-0.02 5.1436-0.272 6.265-0.355 3.8189-0.207 6.5164-0.371 0.49029-0.03 0.72385-0.02 1.6385 2.314 0.17828 0.239 0.11945 1.826-0.19433 0.529-0.12836 0.202-2.0093 1.766-2.8401 4.943 1.4673-0.1 6.0742-0.433 4.8115-0.314m40.044-137.18 5.1097-0.49 5.0634-0.522 2.7724-0.296 4.6034-0.467 2.2339-0.239 6.2365-0.717 1.6224-0.175 6.3007-0.739 0.49742 1.428 6.8712-1.052 0.64897-0.104 8.1014-1.326 1.9772-0.346 5.2131-0.884m4.4447 156.94 3.5782-0.419 2.3035-0.289 1.2801-0.167 7.1725-1.045 1.2159-0.194 6.9336-1.092m-119.71-22.533-0.36841 0.81812-0.46351 0.41406-0.38003-0.2585-0.16281-0.85068m-374.58 105.87 3.4962-24.959 1.1161-8.021 1.3657-9.857 1.8096-13.026 2.5459-18.337 1.2052-8.718 3.3037-23.908 3.1735-22.867 1.5743-11.154 1.2765-9.094 0.86112-6.237 0.78803-8.01 0.69889-5.048 0.69175-4.227 0.12837-0.884 0.60974-4.172 0.77198-5.552 0.41898-3.004 0.51346-3.737 3.1985-22.789 1.0768-7.964m576.87 7.451-5.9637 1.277-1.6795 0.363-0.11233 0.02-5.666 1.188-3.7422 0.779-3.6584 0.763-3.7387 0.756-4.1755 0.827-0.16759 0.03-10.874 2.058-4.2094 0.795-0.65253 0.121-7.3918 1.364-2.118 0.387-7.9659 1.455-1.4637 0.263-4.976 0.878-2.6333 0.449-8.7503 1.462-1.7026 0.274-0.90035-5.512-0.20146-1.23-0.53487-3.277-0.88786-5.474-0.30488-1.792-0.60974-3.688-0.79516-4.857-0.20324-1.105-0.82904-5.151-0.0303-0.185-1.3407-8.123-0.0428-0.25-1.3086-7.987-0.47781-2.917m144.94-31.435 1.8096 6.307 0.4992 1.897 1.2714 5.1745-0.42431-0.0206-0.28257 0.33789 0.0187 0.36691 0.23939 0.21763 0.0616 0.45272 0.16757 0.308 0.0352 0.19037-0.18216 0.29169-0.0697 0.38137-0.18886 0.0696m-665.09 16.085-7.7377-1.205-10.116-1.637-0.91818-0.146-1.2284-0.317h-9e-3l-3.5515-0.614-4.3306-0.748-11.628-1.967-0.49029-0.08-5.584-0.95-0.53129-0.09-1.4299-0.249-0.19968-0.04-1.3425-0.32-1.1179-0.282-4.3466 22.589-3.9294 20.07-0.93244 4.799-1.5992 8.26-3.8243 19.694-0.46711 2.38-1.847 9.658-2.4265 12.367-2.6119 13.757-0.69176 3.584-0.72206 3.786-0.0891 0.462-0.73098 4.172-0.44215 2.316-0.77912 4.042-2.3302 3.148-0.2496 0.282-0.0963 0.06h-0.016l-1.1161-0.02-0.36192-0.04-0.0963-0.02-0.23356-0.178-0.16046-0.168-0.4261-0.676-0.12837-0.385-0.0161-0.192-9e-3 -0.05-0.0321-0.176-0.22464-0.563-0.54556-0.772-0.2496-0.234-2.3391-0.69-1.059-0.217h-1.1268l-2.0574 0.483-0.18363 0.1-0.24961 0.225-0.016 0.146-0.23356 2.25-0.49742 6.588-0.22464 4.027 0.24069 2.844 0.16759 1.348 0.025 0.675-0.12837 2.805-0.0232 0.513-0.0981 0.458-0.16758 0.548-1.7205 2.875m211.67-156.87-0.75594 8.959-1.1892 14.054-0.60261 7.002-0.25852 3.082-0.32805 3.948-0.77911 9.033m182.05 266.8-1.343-0.76577-0.72864-1.7947 1.7489-1.4262 0.14441-1.1383 2.291-3.194 0.0143-4.441-0.59727-3.621 0.76842-0.647 0.0802-0.2 7e-3 -0.119-0.27991-1.433-0.55447-0.669-0.0571-0.06 0.22464-0.804 2.8205-5.311 0.35479-1.542-0.0731-7.288-0.91461 0.24-0.20325-1.189-0.1355-0.754-0.58656-2.557-1.8007-2.612-2.1127-2.219-0.98058-5.919-2.7403-3.062-0.62579-4.967-0.0981-4.523-0.15155-6.935-0.0802-4.34-0.0713-3.189-0.12124-5.811-0.13728-6.493-0.4582-0.378-0.353-0.144-1.8488-0.371-1.0697 0.155-0.27991 0.03-0.0963 0.09-1.8488 0.938-1.0287-0.561-0.27991-0.184-0.7809-0.499-0.12658-0.17-0.1462-0.335-0.15154-0.394-4.9742-1.431-2.3623-0.965-3.2626-2.612-2.2268-1.904-1.2052-0.403h-0.13549l-0.0642 0.03h-0.0267l-0.40828 0.619-9e-3 0.03v0.04l-7e-3 0.02 7e-3 0.02 0.0731 0.154v0.03l0.0321 0.2-0.0321 0.232-0.10341 0.233-0.10697 0.104-0.50634 0.33-0.14976 0.02-0.28169 0.03-0.55448 0.07h-9e-3l-1.2872 0.06-0.71315-0.06-1.8809-0.25-0.0713-0.06-0.0749-0.128v-0.02l-5e-3 -0.118 0.0571-0.162 5e-3 -0.153-0.20147-0.514-0.14441-0.06-0.61687-0.03-1.3906 0.722-1.5957 0.833-1.6349 0.615-0.92353-0.17-1.1-0.217-0.25851 0.03-0.41006 0.03-2.1377 0.178-0.96454 0.223-0.16046 0.563-0.11945 0.555-9e-3 0.06-0.016 0.06-0.0553 0.177-0.0481 0.153-9e-3 0.02-0.0232 0.03-0.17828 0.186-0.0232 0.03-0.34588 0.148-0.39401 0.105-2.8366 0.701-0.18363-0.251-0.82725-1.125-0.24961-0.08-0.22464-0.02-0.97344 0.185h-0.025l-0.17651-0.121-1.9522-1.311-0.0161-0.06-0.016-0.111-0.016-0.283 0.0642-0.369-1.9041 0.859h-0.0161l-0.92352 0.155-1.7936-0.549-0.19255-0.133-0.312-0.35-0.96454-1.982-0.18541 0.103-2.8597 4.96-0.0891 0.119-0.19255 0.154-0.27278 0.09-0.30487-0.04-0.26565-0.09-1.028-1.6856 0.68272-2.0736-1.3691-0.73539-2.7075 2.3751-1.1157-0.30053-0.16759-0.112-0.11232-0.135-0.0161-0.04-0.0499-0.12-0.37618-1.718-1.4637 0.394-0.68284-0.477-1.9362-1.292-0.65074 0.82-0.99663 1.036-0.94849 0.747-0.59369 0.176-0.22643-0.02-1.6777-0.765-0.21037-0.194 0.49028-1.061 0.16225-1.237-0.7078-0.28-0.65967 0.16h-0.43326l-0.80408-0.24h-0.0321l-0.0481-0.05-0.32983-0.659-1.1482-1.888-2.9417-0.924-0.72385-0.162-0.36905 0.209-0.76307 0.964-1.0127 0.909-0.016 0.02h-7e-3l-0.54021-0.194-0.89856-1.446-0.43324-0.369-0.41897-0.276-0.19255-0.01-1.7205 0.53-1.2373-0.05-1.7436-0.427-1.7508-1.046-0.29061-0.134-1.7436-0.137-0.76307 0.01-0.35301 0.02-0.7078-0.16-0.3851-0.12-0.24069-0.07-9e-3 -0.01-0.32805-1.783 0.0161-0.499 0.0232-0.531v-0.02l-0.89143-1.551-0.94136-0.507-0.82725-0.449-0.8112 1.453-7e-3 0.02-0.025 0.04h-0.016l-0.14441 0.06-0.63471-0.06-0.61865-0.587-0.46711-0.272-0.28883-0.122-0.90035-0.105-0.20859-0.03-0.10341 0.04-0.73276 0.925h-0.89144l-0.57943-0.137-1.3175-1.253-0.47424-0.562-0.98058-1.271-2.7545-1.373 0.12836-4.275 0.27278-6.565 0.15333-3.519 0.23177-5.547 0.19433-4.546 0.24782-6.06 0.16938-4.04 0.37796-10.278-9.9484-0.444-7.4809-0.376-2.4033-0.12-9.8682-0.563-7.4791-0.473-2.3873-0.155-15.372-1.068m119.35-213.44-10.681-0.106-12.045-0.217-0.47424-0.02-11.498-0.344-4.5089-0.161-11.434-0.435-2.603-0.119-9.9252-0.483h-0.19968l-3.6478-0.186-0.36192-0.02h-0.13015l-1.9273-0.1-1.4548-0.08-4.6604-0.257-1.6385-0.09-0.93244-0.06-2.0093-0.113-2.4283-0.153-2.3052-0.136-1.9362-0.121-0.25852-0.02-0.15868-0.02-15.092-1.045-0.85934-0.06-16.802-1.334 0.64183-7.657 0.51525-5.955 0.19255-2.3 1.3336-15.7 0.13728-1.535 1.1642-13.612 0.71493-8.936 0.45819-5.544 0.69176-8.292\"\r\n style=\"fill:none;stroke-width:.89143;stroke:#000\" />\r\n\r\n <g id=\"separator\">\r\n <path id=\"separatorAK,HI\"\r\n d=\"m275.15 525.53v63.053l41.271 37.326m-315.26-178.34h197.18l76.81 77.957h98.592l60.76 61.907v38.472\"\r\n style=\"fill:none;stroke-width:2.3177;stroke:#221e1f\" />\r\n </g>\r\n</svg>", styles: ["#counties{fill:#d0d0d0;stroke:#000;stroke-width:.17829}#borders{fill:none;stroke:#221e1f;stroke-width:.89143}#separator{fill:none;stroke:#a9a9a9;stroke-width:2.3177309}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
27968
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: UsMapComponent, isStandalone: false, selector: "us-map", inputs: { selectedStates: "selectedStates", allowedStates: "allowedStates", isReadOnly: "isReadOnly", filteredLocations: "filteredLocations" }, outputs: { click: "onMapClick" }, usesOnChanges: true, ngImport: i0, template: "<style>\r\n #counties {\r\n fill: #d0d0d0;\r\n stroke: #000;\r\n stroke-width: .17829;\r\n }\r\n\r\n #borders {\r\n fill: none;\r\n stroke: #221e1f;\r\n stroke-width: .89143;\r\n }\r\n\r\n #separator {\r\n fill: none;\r\n stroke: #a9a9a9;\r\n stroke-width: 2.3177309;\r\n }\r\n</style>\r\n<svg *ngIf=\"allCoordinates!=null\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1000 600\">\r\n <path *ngFor=\"let coordinate of allCoordinates.locations; let i = index\" [attr.id]=\"coordinate.id\"\r\n [attr.d]=\"coordinate.path\" [attr.fill]=\"coordinate.fillColor\" [attr.stroke]=\"coordinate.strokeColor\"></path>\r\n\r\n <path id=\"borders\"\r\n d=\"m218.14 190.73-4.0008-0.788-3.6157-0.715-4.4037-0.997-2.5156-0.506-2.0806-0.328-24.5-5.201-1.9291-0.442-6.4932-1.487-0.12836-0.05-19.43-4.418-9.6186-2.211-9.0231-2.275-0.58835-0.151-10.533-2.683m298.16 94.021-0.60261 9.927-7e-3 0.134-0.59548 10.069-0.11232 1.995-0.49029 8.084-0.12837 1.902-0.49742 8.013-9e-3 0.144-0.72385 12.125-0.12836 2.177-0.3851 5.898-0.58657 9.162-5.6963-0.401-9.451-0.779-2.307-0.178-1.5261-0.113-16.754-1.246-13.161-1.1-4.8708-0.448-2.8044-0.315-1.1892-0.114-9.032-0.915-5.2238-0.538-8.5168-0.876-2.5548-0.274-4.582-0.505-2.3445-0.451-7.6111-0.9-1.1-0.136-16.24-2.032-12.029-1.608-17.253-2.452-5.9548-0.9-2.94-0.58-4.6052-0.697-11.933-1.872-20.257-3.414-6.4451-1.143-20.635-3.84m122.22 140.38-1.5101-1.615-0.18542-0.249-0.35272-0.42662-8e-3 -0.26999-0.091-0.33842 0.40028-0.3547 0.14838-1.2071-0.35526-0.11628 0.0311-0.40265 0.39485-0.19134 0.78818 0.0621 4.2272 0.447 7.3276 0.772 20.885 2.131 1.3675 0.128 15.95 1.43 0.85934 0.07 4.9813 0.408 7.6913 0.603 1.141 0.09 1.0038 0.07 1.3675 0.106 1.0911 0.09 0.47603 0.03 0.15154-1.993 0.7399-10.006 0.74702-10.05 0.8843-9.868 0.39402-4.195 0.52951-5.841 0.8843-11.009 0.0161-0.241 0.77198-10.021 0.35301-4.766 0.40114-5.286 0.76307-10.139 0.2086-2.694 0.54734-7.298 0.43502-6.074 0.27991-3.705 0.75594-0.449 0.85043-11.547m120.05-122.47 0.57765 0.04 0.22464 0.09 0.17829 0.248 0.0713 0.265 7e-3 0.355-0.11945 0.319 0.19968 2.646 0.51525 0.965-0.21038 1.422 1.4067 3.889 2.2589 4.195 0.30487 4.243 2.3962 4.065 0.74702 2.635 0.25674 4.677 1.2052 0.724-0.23356 2.619 0.76485 3.358-0.54021 2.732 1.5511 4.598 0.97166 1.414 0.22643-0.491 0.65075 0.578-0.37797 0.676-0.19968 0.185 0.0963 0.408 1.1321 2.846 1.2141 1.182 0.0463 0.119-5e-3 0.04v0.03l-0.0178 0.417v0.06l4.2985 6.044 9e-3 0.216 0.11232 0.162 2.1216 1.92 0.85935 0.553 0.43324 0.16 0.33696 0.128 0.0642 0.02h0.0802l0.66858-0.06 0.13015-0.05 0.1034-0.1 0.0143-0.02 0.60261-0.683 1.4709 1.849 0.14442 0.683 0.13728 0.634-0.36906 0.822-0.37083 0.06-1.2694 1.124-0.0713 0.08-0.6044 0.882-0.20859 0.298-0.6971 2.097 2.3855 2.624 3.1664 5.017 3.3999 0.907-0.082 1.079 0.025 1.606 0.0571 4.565 7e-3 2.522 0.025 6.044 0.0232 2.058 0.0963 7.614 9e-3 0.541 0.0553 8.429 7e-3 0.451 0.10518 6.707 7e-3 0.603 0.0874 6.525 0.0178 1.359 0.0731 5.359 0.0392 2.291 0.0553 3.903 1.1339 7.803 0.21751 1.377 1.2141 7.921 0.4261 2.788 0.84152 5.554-7e-3 0.403-0.11232 10.341-0.0481 4.747-0.0392 5.121-0.0571 7.343-0.041 5.761-0.0463 7.001m34.383-303.16-0.082 0.06-0.22285-0.1-0.91462-0.893-0.42789 0.03-1.1232 0.765-0.0892 0.183-0.016 0.17 0.0553 0.144 0.0802 0.105 0.016 0.02 0.016 0.257-0.21573 0.563-0.0731 0.07-0.0784 0.05-0.47603 0.03-0.44215-0.04-0.36014-0.25 0.20859 5.632 0.21573 5.964 0.041 0.996 0.0321 0.901-2.3391 1.46-3.3482 2.204-0.79872 0.698-0.20147 0.266-0.19968 0.36-1.6135 3.231-0.65432 2-0.0214 0.364 7e-3 0.151 0.041 0.61 0.0553 0.451 0.21751 0.168 0.77199 0.13 0.32091-0.05 1.2712 0.685 0.79338 1.501 0.32091 1.624-0.60974 1.558-0.42789 0.53-0.0214 0.02-0.19433 0.176-0.24782 2.001-0.33875 3.029 0.0499 0.756 0.39936 0.852 0.34945 1.615-0.1248 1.735-0.56874 2.717 1.166 0.674 1.6937 1.439 0.17651 0.224 0.041 0.225 1.1892 1.182 0.25851 0.119 0.69889 0.08 2.209 0.09 0.28169 0.06 0.18542 0.09 0.15867 0.137 0.0571 0.09 0.0907 1.0972 1.2126 0.84785 2.6351 1.004 1.8087 0.86839 0.88464 0.84954-0.0206 0.51007-0.10888 0.35855 0.38146 0.33967 0.34375 1.2638 0.24945 0.52827 5.2369 3.7568 2.5868 0.74896 2.4015 3.054 0.40293 2.78 1.1 5.151 0.28882 1.775-0.016 1.182 1.7846 1.255 0.38688 0.491 0.50456 0.811-0.0642 0.287-1.2837 2.163-0.43681 1.695 0.35658 2.186 0.37618 1.758 1.535 3.409 0.2086 0.433 1.3568 0.9 0.46712 0.216 0.8843 0.21 2.1769 0.418 0.8433 0.201 0.19255 0.1 0.12124 0.121 1.0697 1.945 0.18363 0.579 0.0107 0.13-0.0642 0.111 3.6139-0.178 8.4294-0.491 1.503-0.09 7.3508-0.38 0.60261-0.04 7.1778-0.394 2.7634-0.184 1.166-0.08 6.7802-0.563 1.7526-0.177 6.7357-0.465m-47.875 3.036-0.23534 0.403-7e-3 0.05 0.016 0.129 0.0392 0.116 0.13728 0.142 0.39223 0.282 1.1357 0.587 1.4441 1.005h7e-3l0.0428 0.04 1.0109 1.172 0.0481 0.07 9e-3 0.09-0.0963 0.651-0.0963 0.215v0.146l0.23534 0.53 0.0125 0.03 0.48316 0.603 0.016 0.01 0.29061 0.233 0.312 0.202 0.7078 0.226 2.972 3.541 0.18542 2.405-1.3265 3.437-1.2052 1.352-0.26565 2.505-0.89143 1.198-1.0198 1.189-3.2466 1.608-1.3835 0.353-0.58656 0.02-0.24782-0.03h-1.0519l-2.4104 0.658-0.6454 0.234-0.18364 0.119h-0.016l-0.12124 0.171-0.016 0.05-0.23891 0.982-0.20325 0.792-0.49029 1.966 0.025 0.207 1.1642 1.4 0.54912 0.272 0.22999-0.03 0.13907 0.06 0.14619 0.152 0.80942 1.326-0.016 0.555 0.016 0.06 0.0642 0.2 0.0874 0.62-0.0695 1.872-0.1462 0.683-0.0963 0.144-0.49742 0.282-0.18542 0.182-1.3425 1.915-0.0642 0.297-0.11945 2.603-1.207 1.416-0.56161 0.01-0.45819 0.03h-0.14442l-0.93422 0.335-0.10341 0.06-0.43502 0.248-0.15332 0.1-0.0535 0.06-0.0642 0.06-0.0642 0.07-0.73097 1.123-0.0267 0.171 0.0571 0.193 0.35479 0.167 0.28882 0.419 0.0963 0.28 0.0143 0.232-0.0535 2.082-0.041 0.202-0.2086 0.167-0.53129 0.187-1.2837 3.062-0.10697 1.125 1.2302 5.858 1.7526 4.249 1.043 1.656 2.4782 1.886 4.2343 4.397 4.3128 3.833 0.82725 2.821-0.0143 0.288-0.48315 0.747-0.0178 0.07 0.0446 0.161 0.95562 2.562 3.7672-0.995 3.1646 0.77 0.45819 0.139 0.44929 0.216 0.33874 0.2 1.7436 1.053 0.0731 0.129 0.016 0.135-0.0642 0.532-0.0392 0.217-1.2944 1.58 0.36727 1.85-1.1785 3.053-0.0802 0.283-1.2391 3.222-0.0499 0.06-0.0802 0.16-0.26208 0.892-0.0339 0.1-0.016 0.234 0.0339 0.964 0.24068 1.034 0.2086 0.515 0.32983 0.451 0.0571 0.08 0.0464 0.05 1.5119 1.47 0.91283 0.683 5.0883 4.645 4.8548 1.348 3.1164 5.159v0.137m1.3657 24.716 0.98949-0.05 0.18007-0.339 0.0285-0.06 0.0232-0.09 0.0571-0.227 0.016-0.06v-0.1l-7e-3 -0.04-0.0571-0.259-0.11232-0.266-0.0107-0.02-0.11767-0.183-0.025-0.02-0.0392-0.03-0.0481-0.03-0.28169-0.08-0.51347-0.08-0.33696 0.05-0.1141 0.07-0.21038 0.281-0.0303 0.04-0.0232 0.09-0.025 0.105-0.0178 0.08 0.0178 0.07 0.0178 0.1 7e-3 0.02 0.19968 0.426 0.43324 0.609 0.17221 1.4366 0.73163 1.0374 0.0356 1.0723-0.79321 0.19069-0.96399 0.24949 1.1929 0.8177 0.42823 0.81697-1.1619 0.66881-1.5765-0.18128 0.76907 1.2283 1.167 0.73525-0.15479 0.85658-1.2512 0.69806-0.12674 1.2144-0.61534 0.89166 0.0377 0.67553 0.89097 0.33102 0.47617 0.55124-0.26856 0.98014-0.98147-0.34724-0.73569 0.0621-0.1568 0.82911 1.205 0.58178-0.22483 0.82141-1.1873 0.209-0.28817 0.5779-0.428 0.41332-1.0431 0.36073-0.56619-0.0977-0.83543 0.76386 0.63059 1.2246 0.94802-0.50345 0.70215 0.72534-0.36423 0.74618-1.5684 0.91194 0.54536 0.76537 0.31793 1.0381-1.3548-0.31409-0.28014-0.63513-0.71907 0.0802-0.0609 1.1084 0.52054 0.70173-0.28397 1.8251-0.33266 0.0152-0.59069-0.62596-0.54086-1.0837-0.50482 0.64672-0.87967 0.29964 0.1373 1.1296 0.35218-0.19852 0.1536-0.42278 0.46648-0.25947 0.84871 0.74874-0.29434 0.36918 0.13487 0.58916-0.17755 0.67676-1.0595 0.64707 0.26079 0.47372 0.94121-7.3e-4 0.54624 0.43556 0.16377 0.66029-0.61348 0.88774 0.83425 0.29002-0.0918 0.81537-0.54234 0.63711-1.227-0.60771-0.41757 0.45107-0.57819 1.7883-1.5967 0.11225-0.22464 0.717 0.0321 0.321 0.47246 3.102-2.0966 0.769-2.8918 4.605 0.25673 2.676 0.20147 2.064-0.1355 0.442-0.0178 0.04-0.041 0.03-0.65075 0.57-0.81834 0.392-0.98949 0.204-0.98593 0.192-1.8007 3.231-0.85399 1.759-0.27278 0.569 0.0686 0.242 0.85667 0.699 0.20146 0.5-0.11232 0.772-3.7137 1.87-1.5261 6.573-0.10519 0.523 0.025 0.05 0.1141 0.203 0.56874 0.426 0.53842 0.435v0.02l-0.0499 0.247-0.33696 0.289-1.4049 0.565 0.26386 0.73 0.025 0.01 0.97345 0.663 0.79516 0.537 0.15155 0.536-0.23178 0.459-0.98949 0.288 0.96453 2.759 0.65075 1.18 0.4992 0.529 0.0553 1.767-0.61865 2.518-0.56161 0.634-0.15511 0.177-0.63292 1.021-0.20146 0.731 0.0321 0.186 1.5422 6.989 0.11411 0.274 0.0214 0.04 0.0606 0.07 0.0214 0.04 0.041 0.03 0.18364 0.16 0.0481 0.04 0.61153 0.191 0.13728 0.314-0.4368 1.47 0.0339 0.369v0.03l0.0553 0.08 0.082 0.128 0.016 0.04 2.1448 2.282 0.1355 3.318-2.2411 0.278 1.9612 2.291-3.9936 5.828-2.225 2.942-0.19255 0.346-0.30844 0.528-0.0143 0.02-2.0967 4.212-0.0481 0.09-0.0731 0.155-7e-3 0.02-0.73098 5.992-0.47424 2.477-0.47603 3.592 9.0552-0.426 2.2838-0.112 4.6052-0.259 5.0954-0.297 0.37618-0.01 3.9384-0.251 1.7276-0.105 8.3242-0.553 2.1127-0.144 0.041 0.713-0.24247 1.214-0.1979 0.442-0.12302 0.02-0.16046 0.02-0.0463 0.05-0.25852 1.075-0.29774 1.469-0.2389 1.213-0.21929 1.642 3.3019 4.548 0.0339 0.03 0.12836 0.13 1.2302 2.5 0.0303 0.426-0.18363 0.465-0.0499 0.193 0.016 0.123 0.62936 1.194 0.19255 0.371 0.43145 0.505 0.1462 0.169 0.0499 0.03 0.0713 0.05 0.0481 0.03h0.0374l0.91818-0.06m-3.5675-157.16-0.85756-1.927 4.0632-3.953 0.0981-0.03 6.9033 2.935 1.3247 0.141 0.13549-0.02 0.41898-0.185 0.21573-0.595 0.26564-1.277-0.51346-1.141-0.22464-0.216-0.24247-0.137-0.76307-0.916-0.15511-0.498 0.0107-0.153 0.51525-2.273 0.0945-0.227 0.23355-0.303 0.16224-0.114 0.12837-0.1 0.312-0.143 0.11232-0.05 1.0537 0.344 0.45641-0.608 0.30666-0.283h0.016l0.0874-0.06 0.43502-0.264h0.0392l0.1141-0.03 0.312-0.09 2.8865-0.611 0.18363-0.04 0.3441-0.392v-0.371l-1.4352-1.487-0.1462-0.264-0.3851-1.045-0.0107-0.02-0.0945-0.52-9e-3 -0.03 0.025-0.161 0.0963-0.256 0.0232-0.05 0.1462-0.248 0.29061-0.547h0.0143l0.83616-0.608 0.21751-0.236 0.1355-0.247 0.0874-0.234 0.23356-0.875 0.85347-0.0123 0.62549 0.40972 0.36884-0.59896 0.35566-0.30474-0.761-1.3758 0.1639-0.64788 4.0756-0.323 0.71405-0.21545-0.13273 1.5863 0.97575 0.25714 0.74424-0.94261-0.96608-1.0453 0.53276-1.6102 1.0862 1.0787 1.4406-0.43465 2.7563 0.739 0.64361 0.45 2.6262 1.75 1.3425-2.424 1.1179-1.047 2.7973-1.854 3.1967 3.316h0.13728l0.2389-0.08 0.49921-0.387 1.1731-2.674-0.1355-1.373 0.0303-0.252 0.0731-0.103 0.0963-0.06 0.36905-0.07 0.10519-0.01 3.6246-2.329-0.0553 0.649v0.04l7e-3 0.161 7e-3 0.105 0.0161 0.04 0.12836 0.449 0.10519 0.161 0.041 0.06 0.0874 0.06 0.81121 0.537 0.78089 0.306 0.12837 0.02 2.5959 0.128 0.53664-0.177 0.86826-0.296 0.44215-4.041 1.6723-2.757 2.4978-2.41 3.2787-3.712-0.0553-1.449 1.2444-3.736 2.4835 0.862 2.9239-2.001 3.8902-2.63-0.24247-1.003-1.774-2.828 0.81833-1.847 3.5515 0.305 2.0093-0.733 3.4873 1.286 1.9522 3.198 0.16937 1.054 3.3019 0.939 2.6369-0.281 0.60975 0.08 0.21751 0.08 0.11232 0.09 1.5671 1.622 1.3906 0.69 1.0269-0.121 0.0963-0.811 0.13728-0.225 0.18542-0.128 1.3978-0.612 0.21929-0.05 0.15154 0.02h0.025l0.72028 0.177 1.9148 0.46 0.0481 0.02 0.60083 0.282 1.0608 0.777 0.65297-0.59473 1.7154-0.2291 0.45033-1.306 1.2409-1.2932 0.31914-0.145 1.4869-0.674 0.48494-0.212h0.1123l0.18364 0.08 0.082 0.09 0.0232 0.04 0.0481 0.07 0.0303 0.06 9e-3 0.03 7e-3 0.03 0.0339 0.137 0.0143 0.163v0.02l9e-3 0.01-0.0178 0.278 0.16937 0.724 0.49921 1.502 0.041 0.09 0.11945 0.255 0.14442 0.169 0.0178 0.03 0.3851 0.257 0.0802 0.04 2.8668 1.116 1.383 2.1153 0.11771 1.4139 0.55823 0.72707 0.0458 0.8796-0.17561 0.64217-0.44929 1.966-0.0189 0.51345 0.80496 0.43682v0.02l0.33398 0.62528 0.53577 0.22659 0.90507 1.442 1.2152 0.44384 0.025 0.03 7e-3 0.02v0.129l-0.46533 0.804 1.6364 1.6768 2.088 2.5722 0.0303 0.12 0.67214 1.036 1.3255 0.77503 0.61789-0.36623 0.54941 1.0489 1.1657 1.0033 1.18 0.26062 1.0688-0.37538 0.47543 0.21776 0.61561 0.23406-0.0558 0.36194-0.8112 0.731-0.0481 0.153 0.12837 0.344 1.4054 0.80569 0.1457 1.3963 1.5119 1.317 0.21573 0.107 2.0432 0.738 1.2034 0.715 2.1056-0.417 0.0571-0.03 0.78803-0.724 0.0143-0.02 1.3182-1.3973 0.73081-1.4797 3.0126 2.066 2.0876-1.2709 2.1092-0.75413 1.2705-0.53696 0.75009-0.88698-0.74377-0.7155 0.28218-0.49001 0.108-0.82755 1.7954 1.037 2.2339-1.677 0.18542-0.147 1.8078-1.429 0.86112 1.237 0.78693-0.70655 0.77826-0.50404 0.11836-0.30902 0.71811-0.40625 0.363-0.32517 0.2201-0.58548-0.21297-0.10124-0.27033 0.41256-0.56864-0.14208 0.29893-0.28017-0.20669-0.60536 0.7063-0.6332 1.0358-1.254-1.585-1.239 1.1895-3.3749 2.107-3.2931 1.2444-2.836 0.33698-0.81999-0.28381-1.7093 1.4232-1.6756 0.66127-0.89109-0.43324-0.875v-0.03l9e-3 -0.08 1.1-1.71 0.47425-1.688 0.0891-1.625 0.0303-1.904 1.7775 0.426 0.36192 0.161 0.33697 0.337 1.0911 1.617 3.079 0.522 1.2462-1.799 1.8078-6.976 0.81169-1.8216 2.4631 1.2747 0.95813-2.8075 0.38772-0.39365 0.17315-0.58856 0.50785-0.22511 0.0795 0.55151 0.6329-0.68385 0.21625-0.74692 0.48656-0.69373 0.38722 0.21592 0.5854-1.3159-0.3105-0.17393 0.3456-0.77223 0.51501-0.95773 0.55744-0.33611 0.31363-0.33026 0.0683-0.48408 0.48209-0.63792-0.38897-0.25075-0.063-0.24592-0.19213-0.0964 0.40201-1.1592-0.39778-0.11886 0.14721-0.12984 0.16028-0.60726 0.45662-0.80021 0.21518-0.88435-0.44589-0.0266 0.20286-0.77186-0.39584-0.37058 0.0299-1.5315 2.3966 1.176 3.9526 2.0817 4.138 2.1934 1.0626-4.5688m-203.83 67.552 0.016 0.209 0.1141 0.46h7e-3l0.51347 0.958 0.33696 0.504 0.47603 0.467 0.22464 0.282 0.28882 0.651 7e-3 0.02 9e-3 0.04 0.10341 0.387 9e-3 0.02-9e-3 0.03-0.0713 0.708-0.0731 0.217-0.0143 0.02-0.0178 0.02-0.016 0.02-0.2086 0.107-0.65788 0.176 0.0303 2.017 0.45998 0.658 1.1161 2.089 0.64183 1.574 1.2141 0.99 3.4962 0.376 0.65075 0.838-0.68819 2.298-0.52594 0.305v0.53l1.0608 0.563-0.70601 3.188-0.60014 0.69835-0.20025 0.98537-0.83113 0.0314-1.1337-1.0951-1.2924 3.19 1.164-0.184 9.3618-0.676h0.13728l0.19968-0.02 5.4895-0.396 0.49742-0.03 7.9783-0.554 0.28809-0.71461-0.94775-3.4394 1.0715-0.06 2.9881 0.06-7e-3 0.707 2.9007-0.338 0.96454-0.111 5.5608-0.579 4.0239-0.394 0.98771-0.114 5.4074-0.649h3.6656l2.7492-0.676 3.7922-0.136 4.1862-0.176 3.4392-0.21 6.4201-0.617 2.5406-0.46 0.35301-0.06 5.641-0.354 3.3589-0.154h0.1355l9.435-0.884 0.62757-0.07 4.3556-0.499 1.0358-0.103 4.6052-0.884 3.703-0.41 8.8626-1.118 2.8044-0.29749 3.9748-0.41786 5.7141-0.83012 0.91461-0.137 1.7686-0.241 3.8474-0.57688 0.17212-0.77865 1.7454-0.209 3.2698-0.442-0.57767 0.90581 6.0261-0.58089 8.228-0.997 1.166-0.121 4.0917-0.643 3.1414-0.337 7.0209-0.988 0.47424-0.08 5.6499-0.951 3.6959-0.618 0.73097-0.136 2.2981-0.408 2.2428-0.412 1.453-0.257 6.1723-1.116 1.1161-0.217 4.9992-0.933 2.3944-0.481 4.9974-0.957 2.6369-0.523 2.3855-0.456 8.4775-1.672 2.3623-0.516 4.4679-0.91628-0.13419-0.20431 7.747-1.4414 3.1949-0.675 3.4213-0.722 4.5838-0.981m-79.996 151.57-0.30309 0.03-1.6723 0.202-1.223 0.06-2.3124-0.257-3.063-0.658-0.83617-0.563-2.1501 1.253-0.17116 2.484 0.0874 0.474 0.30665 0.465 0.60261 0.788 0.25852 0.706 0.0143 1.537-0.10519 1.573-0.10341 1.592-2.25 0.435-0.13015-0.03-0.40828-0.321-0.36905-0.529-0.19433-0.514-0.57765-3.221-4.0346 0.247-0.80407 0.06-2.4586 0.176-2.0895 0.153-8.8448 0.608-3.416 0.236-0.95027 0.06-5.0277 0.346-2.6119 0.169-5.2078 0.355-1.5083 0.102-3.8991 0.274-1.9701 0.137-9.5419 0.642-3.4819-6.283-9.5954 1.173-10.597 1.231-2.9827 0.296-3.9455 0.401-5.8995 0.565-1.8863 0.143-7.3936 0.659-8.5489 0.812-0.44394 3.077 0.25852 0.438 2.0004 2.181 0.62935 0.433 0.11054 0.04 0.32983 0.06 0.66679 0.344 0.88431 0.548 0.24068 0.394 0.0713 0.272 0.0321 0.378-0.19968 5.023-0.26565 2.514-1.2694 0.572m161.57-105.14-2.4336-1.736-9.3048-6.647-8.3331-6.072-0.25495-0.177-4.8779-3.246-4.4447 0.723-7.2973 1.058-4.4732 0.663-4.0115 0.592-0.37797-0.07-9e-3 -0.218-0.12837-2.346-1.3175-1.327-1.494-1.526-0.68455-0.2579-1.4372 1.5536-0.62476-0.42965 0.44815-1.3492-0.49188-0.74684-5.3022 0.483-0.72385 0.07-7.4631 0.788-1.9772 0.202-1.7615 0.192-4.5962 0.475-2.5994 0.119-3.8278 2.009-3.2947 2.25-2.4176 0.619-1.9612 0.947-1.7846 0.863-0.40293 1.831-1.7044 1.324-1.2355 2.243-0.30666 1.737 0.37084 0.618 4.771 2.933 1.1517 0.803 1.166 0.162 0.2086-0.105h0.016l0.74881-0.186 0.67392-0.09 0.39402 0.112 0.19255 0.147-7e-3 0.06 0.62578 0.966 1.9915 2.803 0.7078 1.842 3.3429 4.122 0.78803 1.198 2.8437 1.693 0.11945 0.03 0.26743-0.104h0.0874l1.6402 0.827 0.49742 0.355 1.182 0.972 0.76307 1.439 2.2001 1.92 1.8578 0.786 0.31201 0.291 0.16224 0.153 0.90035 0.852 1.2748 1.487 0.45107 1.742 1.248 1.767 1.7882 1.351 3.2074 1.503 1.576 0.867 3.6549 6.452 0.82903 3.359 2.0093 0.804 0.36906 0.137 1.7116 1.414 2.0396 4.138 0.2496 1.221 0.0998 0.45 0.18185 0.918 0.2496 0.996 0.0892 0.09 1.0858 0.419 3.5746 0.674m63.804-151.15 1.0304-0.19946m5.7308-1.1092 0.59034-1.208 6.5467-2.227m1.2373-10.35-5.1008 1.115-0.25852 0.06-0.6757 0.154-0.28348 0.05-0.24425 0.05-0.066 0.01-0.895 0.168-0.36727 0.07-1.0448 0.199-0.52238 0.1h-0.0642l-1.2284 0.208-0.54021 0.09-0.20682-0.725-0.19255-0.658-0.24068-0.867-0.46712-1.665-1.223-4.355-1.9683-7.007-0.64184-2.289-0.32091-1.134-0.50634-1.799-1.6065-6.0087c-0.1181-0.3089-0.1886-0.5974-0.23397-0.87511l-0.22409-0.83818 0.1571-0.0351 0.0231-0.0918 0.0561-0.22342 0.091-0.29813 0.10239-0.28128 0.1132-0.26472 0.1235-0.24844 0.13328-0.23247 0.14253-0.21678 0.15127-0.20137 0.15947-0.18627 0.16716-0.17145 0.17432-0.15693 0.18096-0.14268 0.18708-0.12875 0.19267-0.11508 0.19775-0.10172 0.2023-0.0887 0.20633-0.0759 0.20983-0.0634 0.21281-0.0512 0.21528-0.0393 0.21721-0.0276 0.21863-0.0163 0.21953-5e-3 0.21989 5e-3 0.21974 0.0159 0.21906 0.0261 0.21787 0.036 0.21615 0.0456 0.2139 0.0549 0.21114 0.0639 0.20786 0.0726 0.20404 0.081m4.349-38.04-1.0144 0.731-0.48138 0.522-0.41006 0.844-0.0874 0.256-0.20859 0.892-0.0321 0.314 0.0713 0.07 0.0321 0.378-0.1034 0.691-0.47425 1.118-0.68462 0.963 0.0963 0.119-1.872 3.497 1.6313 1.922 0.0571 0.135-9e-3 0.136-0.57765 1.77-0.35123 0.487-0.2603 0.03-0.25673-0.03-0.1355 0.04-0.29239 0.686 0.17829 1.387 0.42432 1.641 0.1141 0.208 0.18721 0.362 2.4657 1.006 1.3015 2.619 1.6706 1.012 0.1141 0.06 4.6355 3.56-0.99855 0.84489-0.72684 0.0798-0.21124 0.71388-1.8324 1.5504-1.109 1.616-1.3086 2.433-0.68641 0.981-2.1008 0.89552-1.1037 1.483-0.82356 1.5955-0.2292 0.78998-0.049 0.94306-0.33871 0.65734 0.18292 1.1643m17.35-25.62 0.0377-0.45335-0.14113-0.5183 0.2219-0.37502 0.19869-0.015 0.14734-0.28922-0.0182-0.74781-0.0641-0.2123-0.11107-0.55693 0.2363-0.30656 0.39896-0.11105 0.65066-0.15787 0.59126-0.25239m0.61099-1.3933 0.0985-2.128 0.4569-2.3499 0.12383-0.79119-5.3e-4 -1.9628-5.95-1.7665-0.40114-0.121-2.5156-0.852-6.3149-2.209-1.3675-1.337-0.75415 0.08-1.3514 0.07-0.29774-0.138-1.831-0.95-0.52239-0.497-0.7381-0.722-0.45998-1.054-2.7314-4.901-1.9853 0.1111-0.65872-1.6071-0.30487-0.289-1.0127-0.713-0.3227-0.07-2.0556 0.456-10.351 2.243-0.68106 0.145-6.8534 1.406-6.1562 1.231-0.64361 0.142-10.735 2.181-2.3391 0.472-7.6342 1.441-1.6919 0.335-4.8334 0.889-4.6426 0.903-0.7399 0.128-2.3873 0.403-9.1925 1.629-0.25673 0.05-2.2821 0.394-0.52951-3.012-0.44216-2.549-0.098-0.61m144.3-46.196-0.63706 0.37368-0.54676-0.30368-0.48851 0.03-0.11232 0.06-0.13193 0.06-1.5564 1.15-0.22913 1.373-1.3523-0.023-0.21751 0.226-0.43716 0.59429 0.29773 1.226-0.76805 2e-3 -0.10698 0.243-0.41541 0.987-5.5465 1.279-0.0713 0.02-0.2496 0.06-4.0649 0.909-0.49208 0.111-5.8318 1.262-2.8936 0.619-7.7698 1.663-1.5279 0.321-3.9847 0.861-0.14798 5.648-0.25317 10.141 0.3851 0.779 0.16046-0.04 7.2242-1.528 0.73989-0.167 3.1345-0.74112 0.2509 0.99379 0.88363-0.30454 0.0335-0.96542 3.9575-0.93571 6.1794-1.463 0.56161-0.111 0.7078-0.146 4.2896-1.02 0.11232 0.337 4.9011-1.503 1.9775-0.55095 0.18762 0.77537 0.54372 2.105 0.65087-0.29717 0.029 0.28586 0.34232 0.59989 2e-3 0.39398 0.14316 0.18518-0.0776 0.28603 0.11706 0.19297 0.0922 0.30225 0.17135 0.1402 0.11067 0.18005 0.10708 0.0134 1.2362 0.15156 0.86162 0.78465m0.62842 0.67933 0.96636 0.15371 0.3784 0.71595-8e-3 0.43305 0.22704 0.16744 0.78051 2.4678m-205.54 285.58-0.57587-1.665-0.21216-0.458-0.14619-0.262-0.92888-1.022-0.14619-0.04h-0.16938l-0.16937-0.1-0.19968-0.465-0.27278-1.632 0.1355-0.595 0.20859-0.61 0.24247-4.901-2.1377-5.329-0.33874-0.449 0.90748-4.937-0.0535-1.719 2.0895-4.127 0.0464-0.07 0.16046-0.724-0.19255-0.383-0.47424-0.396-1.2765-0.344-0.12123-0.136-0.041-0.194 0.21573-0.82-0.53486-3.174-1.8435-2.05-1.3889-3.059-1.2284-2.735-1.544-5.344-0.13728-0.481-1.8631-6.725-0.34588-1.239-1.0768-3.831-1.5582-5.611-0.39401-1.405-0.73098-2.628-1.2854-4.644-1.5761-5.351-0.40827-1.455-0.22465-0.789-1.5119-5.344-0.72384-2.811m-87.764 7.185 10.929-0.669 1.494-0.11 5.4484-0.353 2.8847-0.204 3.3732-0.247 3.6264-0.282 0.68284-0.06 7.5754-0.603 0.31379-0.02 3.0523-0.251 3.9954-0.578 14.217-1.1 0.23177-0.02 6.9924-0.49 0.97701-0.09 8.6665-0.854h0.14085l8.3349-0.811 4.828-0.435 2.4746-0.257 2.0182-0.217 1.831-0.25 5.3254-0.669 3.1218-0.367 0.64005-0.08 2.8704-0.351 5.5679-0.685-0.0695-5.079 1.5154-1.334 1.9808-0.05 0.70424-0.579 0.43502-0.594 0.75415-4.122 0.15333 0.05 5.0206-3.18h0.42607l2.6262-0.271 0.22643-0.146 3.1896-2.525 0.66679-0.977-0.0802-0.437 5.1133-2.544 0.71136-3.625 0.83082-0.21 1.6224-1.519 1.1553-1.141 0.3227-0.234 0.46711-0.336 0.0874-0.01 0.27635 0.184 0.35122 0.337-0.25145 1.3811 1.0062 0.71758 0.70833-0.79809 0.51588-0.15063 1.3086-2.395 3.2787-2.442 2.7403 0.793 2.1608-4.042 0.19255-0.554 0.1355-0.369 0.84508-0.947 0.9164-0.627 0.0232-0.02 0.0963-0.06 0.1141 0.263 0.48138 0.154 0.28704-0.01h0.0339l0.38332-0.129-0.0695-1.095-0.016-4.4372m117.55-168.71-0.47077 0.13278-0.6967-1.2856 0.41821-1.017-0.48092-2.2341-1.7187-8.397-0.97345-4.525-0.50811-1.0576-0.70967-0.14937-0.46265-0.79353-1.0384 0.11388-0.0446 1.2767-0.54556-0.226-0.0642-0.09-0.16224-1.342 0.0909-0.933 0.31022-1.704-0.59548-1.157-0.27991-0.507-1.9166-4.525-0.0356-0.08-0.0392-0.772v-0.749l9e-3 -1.902 0.67392-1.922-0.67744-2.2226 0.22812-1.5374-0.025-0.25-9e-3 -0.01-0.29774-0.804-0.22999-0.499-0.76486-0.924-0.46711-0.273-0.26564-0.224-0.24342-0.85773-0.21152-0.70406-0.0333-1.6736 0.12339-1.8634-0.93491-0.59916-0.17496-1.0307 0.31908-1.0192-0.1235-0.9013-0.60896-0.70965 0.025-0.50216m-30.194 154.15 1.9051-2.8795-2.1692-1.2911-0.91461-0.474-1.0018 1.6476m-44.205-10.311 1.8881 11.789 0.5375-0.20301 1.4158-1.5436 0.92423-1.7074 3.2698-3.945 1.897 0.426 2.8847-3.971 2.1216 0.844 3.35-0.184 1.8399-3.15 0.93244 0.185 0.20859-0.03 0.62044-1.143 0.45642-0.722 0.12123-0.137 0.10519-0.04 0.59548 0.02 0.64896 0.07 0.64362 0.241 0.80229 0.581 0.29596 0.328 0.49145 0.54089 0.83697-0.31276 0.67438-0.0282 0.8573-0.31276 0.63372-0.0892 0.0831 0.60582-0.77054 0.32126 0.776 1.2116 0.51177 0.27667 0.49876 0.038 0.21889 1.2588 1.1538 0.16126-0.0703 1.8063 0.68168 0.3835 0.68998-0.08 1.0942 0.4121 0.95382-0.22465 0.70077 0.87146 1.5176 0.43709-0.19207 0.92301-0.51394 0.19299-0.0731 0.193-7e-3 0.105-0.0428 0.289-0.0214 0.208 5e-3 0.02 0.12302 0.392 0.11232 0.136 0.11232 0.08 1.1393 0.765 0.0339 0.01 0.63292 0.04 0.86113-0.04 0.83616-0.09 0.98643 0.45194 0.66294 0.2112 0.0304 0.72855 0.38734 0.28294 0.36992-0.0103 0.25992 0.068 0.85706-0.10347 0.55251 0.47231 0.74641 0.546 0.76516 0.41139 0.52111 0.96665 0.0895 0.94639 0.0382 0.27715-0.43324 1.8191-0.55645 0.41311-0.24764 0.61848-0.7196 0.0468 0.96036 1.011m-95.382 21.408 0.63191 0.19913 1.032-0.4411 1.491-0.81395 0.61454 0.032 0.82453-0.31568 0.30947-0.47668 0.0321-0.153 0.0321-0.168 0.0802-1.647 7e-3 -0.05 7e-3 -1.006 0.23716-0.17737 0.92884 0.0246 0.43536-0.30324 0.10519-0.44641-0.50201-1.3684 0.0998-0.62121-0.3162-0.378-0.17291-0.67761-0.45241-0.39081 0.0418-0.627 0.5502-0.37521 0.45921-0.57121 0.0898-0.55361-0.12916-0.75037 0.31921-0.49711 0.35654-1.367 0.0553-0.321 0.50049-0.50021 0.31963-0.88779 0.34364 0.0586 0.54007 0.74639 0.65553-0.11682 0.79983 1.1674-0.43812 0.81503 0.0642 0.178 0.59427 0.3921 0.76743-0.36071 0.24216-0.78817 0.13202-0.61985 0.78839 0.61591 0.75221-0.24967-9e-3 -0.47722-0.50093-0.47262 0.3208-0.92552-0.24776-0.45186-0.19255-0.225-0.40293-0.269-0.19968-0.146-0.19255-0.252-0.17408-0.28924 0.71824-0.0999 0.46937-0.40238-0.0805-1.1698-0.25733-0.95367 0.312-0.69 0.36228-0.0809 6e-3 -0.41083 0.10278-0.61747 0.36091-0.20134 1.6733-0.15864-0.11287-1.7781 0.3312-0.33044 0.66437-0.635 0.46015-0.84476 0.33743-0.0942 0.20147 0.02 0.31833 0.31636 0.50444 0.93337 0.51657 0.1381 1.6997-1.4789 0.75021 0.0361 0.15999-0.71514 0.40045-0.59858 0.68019-0.2984 0.21068-0.39231 1.18-2.2969 1.3224-1.6516 0.93512-0.13608 0.32468-0.76042-0.0494-1.304 0.52402-0.25638-0.067-0.59945-0.74173-0.68644 0.58981-1.0492-0.15055-0.72905 0.0987-0.38365 0.44705-0.44857-0.53123-0.95384 0.70262 0.13774 0.2746-0.24798-0.32902-0.81678 0.28979-0.59958-0.2231-0.88996 0.0883-0.74966 8e-3 -0.43804-0.17022-0.30979 0.46008-0.71332-0.25169-1.4648 0.2651-0.5854 0.29924-1.3774 0.59961-0.60926-0.0816-0.37475 0.19007-0.79688-0.38599-0.67318 0.0216-0.56786-0.52034-0.31698 0.19895-0.35332-0.11279-0.64803 0.20639-0.64573-0.0778-0.53574-0.43175-0.44391-0.24143-0.65353-0.43172-0.43273-0.41394-0.31735-0.0623-0.48798 0.34873-0.5693 0.65552-0.41989 0.39766 0.0748 0.24941-0.26565 0.6878-0.52193m-76.492-13.91 0.47425 3.81 0.28882 2.394 0.43324 3.56 0.0499 0.425 0.72384 6.06 0.1872 1.535 0.542 4.468 0.42075 3.583 0.56874 5.056 0.11945 0.977 0.70958 7.032 0.2086 2.034 0.48851 4.386 0.41897 3.666 0.12124 1.043 0.51346 4.999 0.52951 4.598m-54.007 35.885-0.90748-2.034 0.86112-0.03h0.0303l0.0392-0.03 0.0107-0.02 0.0481-0.1 0.25673-5.325 0.10341-2.411 0.025-0.112 3.4623-4.598 1.2783-3.68 0.34588-0.941 1.4067-1.799 0.14263-0.12 0.17651-0.322 0.25138-1.462 7e-3 -0.562-0.68462-1.471-0.0392-0.06h-0.0731l-0.14441-1.146 0.10519-0.145 0.12836-0.363 0.0481-0.733-1.2765-2.281-0.83617-0.982-0.36192-1.235 0.23355-2.395 0.82012-5.143-0.27456-3.005-0.58656-6.363-0.51347-6.115-0.59369-7.604-0.0267-0.328-0.50455-5.666-0.56339-6.308-0.32983-3.592-0.27278-3.045-0.33874-3.96-0.46355-5.498m-64.896 35.334-1.1393-0.08-0.72563-0.586-1.7508-2.154-0.0642-0.16 0.0571-0.467-0.041-0.152-1.3746-1.038-0.36193-0.226-3.9366 0.01-4.0988 0.288-2.956 0.193-4.9742 0.337-1.3264 0.07-6.6376 0.348-4.8048 0.223-3.1735 0.09-3.769 0.155-4.1862 0.177-3.7601 0.117-4.147 0.1-2.7866 0.03-4.9118-0.02-4.9974-0.03-2.9738-0.02-6.7981-0.07m84.663-140.56 1.815 0.988 3.2306 3.97 1.478 0.312 1.6224 0.337 11.524 2.364 0.86647 0.177 0.67749 0.144 1.0929 0.369 1.1321 0.555 0.97345 0.474 4.081 1.045 0.32983 0.586 2.8116-0.298 4.6765 0.587h0.0356l0.39937 0.06 0.61152 0.296 0.37797 0.252 0.24782 0.158 0.47246 0.676 0.0499 0.07 0.0232 0.08-0.22465 0.385-0.25673 0.362-0.11232 0.09-0.28169 0.36-9e-3 0.02-0.0232 0.08 0.1034 0.201h0.0161l0.6133 0.498 0.1355 0.03 0.21751 0.06h0.016l0.21751-0.03 3.7993 1.021 0.30488 0.248 0.025 0.02 0.041 0.04 0.48138 0.594 0.16045 4.147-1.5696 3.4397 2.2064 0.0435 0.84406-0.85296 1.0418 0.86344-1.0999 3.3453 9e-3 0.02 0.14263 0.472 0.0731 0.122 1.2694 1.342h0.0161l0.41719 0.07 0.73097 0.115m-495.03 256.91 2.0182 0.151 2.6672-1.654 0.83438-1.173 0.16937-0.596 0.18542-1.512-0.57052-1.331-0.0553-0.06-0.0571-0.07-1.6723-0.28-0.312-0.137-0.88609-0.62-0.40115-1.068-0.0143-0.04 1.1321-6.975 1.9273-0.476 2.3142-2.731 0.74881-2.603 0.54555-2.725 0.10519-0.747 0.49029-1.759 0.53843-0.933 1.7276-2.442 2.3694-0.908 1.6242-0.667 2.4104-1.39 0.10519-1.029-0.8843-1.546-1.0216-1.137-1.1731-1.407-1.1874-4.999-0.0642-0.925-1.2783-2.008-1.0127-2.635-0.0161-0.121 0.0321-0.321 0.57765-2.557-2.5138-3.742-6.8159-10.198-0.47246-0.701-1.2712-1.895-3.687-5.537-3.6157-5.383-0.2086-0.307-2.6369-3.952-0.6347-0.949-4.9172-7.384-6.0671-9.08-1.15-1.744-1.9683-2.926-0.34409-0.513-9.2424-13.876-8.1887-12.224-9.8183-14.771-2.307-3.435-3.4302-5.135-4.2343-6.351-0.90926-3.446 0.24247-1.013 0.28882-1.198 0.85935-3.382 0.77911-2.884 1.6402-6.212 0.35301-1.31 1.7347-6.508 1.1339-4.3 0.32983-1.294 1.0358-4.008 2.0646-8.221 1.8328-7.135 4.7014-18.161-4.7424-1.198-0.65074-0.167-6.0493-1.608-3.0541-0.82-9.3048-2.603-13.733-4.09-0.9164-0.282-0.52238-0.169-2.0164-0.546-2.209-0.547-5.5697-1.575-0.42611-0.121-0.72206-0.216-1.7526-0.636-1.2284-0.255-4.7496-1.326-4.9742-1.375-6.3328-1.993m168.04-122.36-2.3712 11.097-1.3746 6.388-1.1161 5.311 0.47425 0.843 3.0933 6.301 0.0232 0.08 0.025 0.06 7e-3 0.03v0.09l-7e-3 1.287-0.52238 1.325-0.44215 1.005-0.29774 1.865 0.0161 0.569 2.4604 3.4 0.33696 0.288 0.26565 0.234 0.8433 0.41 1.2213 0.489 0.26565 0.194 1.3978 3.148 1.3086 3.054 0.73989 1.382 0.40114 0.74 0.30666 2.323v0.01l0.0713 0.195 2.316 3.093 0.22464 0.06 0.10341 0.03h0.68997l0.8843 2.19 1.7276 0.372 0.36192-0.1 0.24961-0.1 0.41006-0.08 0.82725 0.112 0.28169 0.233 0.0731 0.07 0.0874 0.09 0.0571 0.266-0.0963 0.506-0.55626 1.574-0.93957 2.163-1.4067 3.125-4.4839 11.186-0.56161 3.077-0.28169 1.558-0.0161 0.08 0.0481 0.06 0.7078 0.1 0.6347 0.16 0.20147 0.09 1.1803 1.864 0.14441 0.571 0.65966 0.103 3.1503-1.446 1.9843-1.736 1.4138-0.811 0.32983 0.346 1.5582 2.201 0.0891 0.289 0.18364 1.824-0.0143 0.683-0.2086 0.378-0.041 1.366 0.0232 1.8 2.5156 9.353 2.6672 3.712 0.54734-0.135 0.57052 0.449 0.68283 0.763 0.30666 0.474 0.35122 1.102 0.46712 2.001v0.176l-0.0963 0.177-0.0642 0.05-0.0232 2.868 0.19077 1.086 0.44393 0.642 1.3086 1.464 0.41719 0.151 0.32983-0.184 0.16046-0.249 9e-3 -0.06 0.19255-0.86 0.23356-0.361 0.6347-0.674 1.084-0.257 5.7462 1.43 2.4425-0.917 4.475 0.459 3.2395 0.923 2.0895 0.06 2.7795-3.191 1.831-0.69 0.77198 0.763 1.3193 2.587 0.71493 2.064 0.18542 0.548 1.3086 1.214m116.93-19.792-0.10519 1.453-1.2373 15.326-0.69888 4.917-0.80408 9.788-0.73989 8.968-0.0784 0.898-0.57051 6.606-0.67571 8.06-0.0481 0.58-0.90748 10.982 9.1586 0.749 8.4294 0.651 3.4873 0.265 11.877 0.817 3.4623 0.226 4.179 0.321 6.6608 0.346 5.3771 0.282 6.0742 0.281 3.2626 0.154 1.1981 0.06 1.3336 0.07 11.129 0.467 4.6854 0.168 12.671 0.371 3.104 2.784 2.3605 1.07 1.8328 1.582 0.36192 0.16 0.29774 0.05 0.27991-0.01 0.85221-0.129 0.22464-0.139 0.47425-0.431 0.353-0.506 0.42993-0.44376 0.0768-0.69793 1.013-0.12928 0.41827 0.55597 0.55227 0.12024 0.47229-0.69024 0.59944 0.15421 0.41154 0.58529 0.57947-0.56211 0.75703 9e-3 0.13903 0.46347 0.34699-0.0287 0.96522-0.36538 1.0816 0.23032 0.90705-0.39029 0.75114-0.18169 0.99904 0.5016 1.1391 0.0813-0.0572 0.9863 0.99446 0.77792 2.0806 0.596 3.5212 1.315 1.3728 0.869 0.18541 0.419 0.0963 0.385-0.0642 0.271-9e-3 0.21 0.0499 0.209 1.2052 1.792 3.2466 0.829-0.60439-1.666-0.60975-1.606-0.43502-0.699-0.55447-0.515-0.44037-0.337 0.67393-3.084 0.6757-1.801 1.1642-4.019 0.26565-0.708 0.0481-0.158-0.64361-2.314-0.15868-0.08h-1.1981l-0.37083-0.836-0.0929-1.066 1.0895-0.0404-0.0335-1.6183-1.2164-1.2484-0.0338-1.5788 2.4247 0.02m-11.289-126.19-0.0731 0.07-0.0713 0.337-0.0178 0.339 0.0892 0.481 1.1089 3.623 0.29774 0.884 0.67571 1.535-1.0296 3.178 0.45731 0.495 0.0981 5.48-0.50634 1.953-9e-3 0.467 0.36192 1.453 1.4958 5.391 2.0236 4.621 0.53843 3.962 0.2817 5.978 0.0802 1.993 0.0232 2.908 0.66679 2.186 0.19434 0.531-0.30666 4.998 9e-3 1.29 0.68284 1.988 2.209 5.32 0.61153 4.821 0.0481 0.403-0.0321 0.465-0.0392 0.145-0.29774 0.836 0.21751 1.993-0.0891 1.004v0.05l-9e-3 0.03-0.0713 0.61-0.0571 0.497-0.0392 0.209-0.016 0.114-0.016 0.05-0.016 0.03-0.025 0.06-1.125 1.671-0.32805 0.33-0.61866 0.337-0.55625 0.362-1.4691 1.18-0.025 0.03-0.0321 0.04-0.025 0.02-0.0553 0.128-0.22464 0.771 0.0642 0.09 0.28883 0.369 1.125 1.503 1.1188 2.4545 1.2435 0.1645 1.5511 0.756 0.52951 0.426 0.30665 0.706 0.26565 1.326-0.0178 6.702-0.0321 7.98-0.0143 2.017-0.0499 7.987-0.0481 8.003-0.0321 8.06 6.6608 0.02h3.1913l6.7749-0.04h1.109l7.866-0.07 1.0127-0.02 6.8462-0.1 3.2555-0.05 4.6034-0.07 5.3593-0.121 2.5245-0.06 7.456-0.215 0.41006-0.02 7.8428-0.28 1.7365-0.06 6.1295-0.25 5.8193-0.248 1.9843-0.09 6.5396-0.314m-434.37-2.74 8.5096-37.886 1.7757-4.307 0.48138-0.804 0.78089-1.478 0.62579-2.555 0.81299-0.997 0.0232-0.04 0.0232-0.05 0.0321-0.06h9e-3v-0.02l0.0232-0.234-0.0553-0.176-0.0161-0.03-0.85221-1.686-0.16759-0.105-0.63648-0.225h-0.0874l-0.15333 0.07-2.0004-0.811-0.24069-0.408-0.0321-0.33 0.0232-0.194 0.041-0.122 0.55448-3.783 0.20146-0.403 3.5586-4.892 0.37797-0.339 0.11232-0.05 0.39401-0.09 1.535-0.523 0.87539-0.941 0.48316-0.513 0.37619-0.403 0.53842-0.931 0.016-0.02-0.0232-0.185-0.0963-0.225-0.0571-0.225-0.016-0.465 0.40114-0.836 0.50812-0.467 0.77912-0.706 2.4015-3.914 0.54556-1.15 2.7813-3.567 1.5422-1.576 0.38688-0.441 0.0642-0.29-0.55448-2.908-0.10519-0.442-0.312-0.396-0.27456-0.353h-7e-3l-0.58657-0.257-1.3996-1.287-0.73098-0.674-0.0481-0.09-0.0713-0.136-1.1321-3.528-8.8163-2.057-1.9202-0.466-5.8425-1.406-0.29595-0.07-15.445-3.703-0.45106 0.378-0.3441 0.151-1.1731 0.339-0.57052 0.09-0.69889-0.05-0.41006-0.103-0.44215-0.227-2.4104-0.33-0.90926-0.05-0.90748-0.06-1.0784-0.44268-0.59088-0.32062-0.84956 0.59188-0.59943 0.55642-1.6706-0.159-1.535-0.16h-2.1983l-2.4229 0.296-0.51347 0.128-0.83617 0.635-3.1664-0.193-1.2534-0.217-0.32805-0.216-0.19433-0.281-0.41719-0.787-0.44929-0.315-0.68462-0.168-0.33696 0.112-0.69175 0.33-1.7187 0.241-1.4138 0.217-0.83616 0.257-0.34588-0.458-1.419-0.64655-2.0398 0.83215-0.254-1.6655-2.1207-1.2511-0.55447-0.113-1.1-0.162-1.0947-0.948-1.7258-0.03-1.3265-0.104-0.43502-0.105-1.1072-0.61-0.94849 0.06-0.68284 0.353-0.45106 0.403-5.7052 0.796h-0.29774l-0.45641-0.122-0.52416-0.256-4.459-2.748-0.42611-0.322-0.81834-0.86-0.31378-0.401-0.01605-0.563 0.15333-0.418 0.34409-0.579 0.41897-2.804 0.11945-0.378 0.14441-2.186-0.44928-2.505-0.15333-0.605-2.5941-3.18-0.75594-0.314-0.82012 0.152-2.4818-0.104-0.12124-0.04-0.67392-1.052 0.35122-1.028-0.16759-0.539-0.23356-0.417-0.06418-0.105-0.04814-0.03-0.08914-0.06-1.0358-0.06m459.25 277.22-7.103 0.06h-1.1981l-6.0974 0.06h-2.0913l-4.8209 0.03h-3.8956l-9.5722-0.03-4.0899-0.02-7.2474-0.07-5.7373-0.07-6.1955-0.107-5.6499-0.105-4.2824-0.09-3.6068-0.114-8.3082-0.257-8.2939-0.282-1.5511-0.06-8.4062-0.385-1.5814-0.07-9.9074-0.408-5.682-0.241-2.209-0.112-8.8965-0.443-8.6059-0.474-0.25674-0.02m260.83 150.42-1.0198-8.363-0.73811-5.996-0.34053-2.655-0.93065-7.341-0.76485-5.994-0.46533-4.508 0.13015-7.707 0.0464-1.879 0.13728-6.245 0.1355-8.132 0.0267-1.439 0.1355-6.896 0.10519-5.703 0.10162-4.894 0.18542-7.28 0.0178-0.658 0.11945-5.452 0.0731-3.298 0.0642-2.756 0.19255-7.226-2.1074-2.225m-53.058 49.651-1.8952 0.07-3.2787 0.134-0.47424 0.03-11.676 0.474-12.592 0.339-5.0616 0.1-4.7959 0.13-4.8369 0.128h-0.58835l-5.4467 0.121h-0.18542l-4.3859 0.1m-168.63-282.27-15.903-1.503-1.1457-0.10895-11.967-1.201-3.0873-0.16008-3.6627-0.39692-10.109-1.182-3.1022-0.378-0.85935-0.177-7.6592-0.939-4.6035-0.56442-5.7603-0.71258-6.0029-0.813-4.9903-0.659-2.1305-0.289-0.32804-0.05-2.9899-0.547-8.5417-1.157-3.6638-0.57-1.3514-0.211-1.815-0.09-5.3433-0.724h-0.041l-2.4194-0.378-0.70602-0.243-2.0004-0.408-2.7082-0.419-1.3978 7.595-0.59548 4.388-1.7686 11.168-1.7116 11.002-0.59813 3.9591-1.1295 7.0089-1.8863 11.557-1.8738 11.679-1.535 9.644-1.1963 7.499-0.93244 5.801 9.2959 1.535 7.7305 1.109 0.8112 0.121h0.0178l2.4657 0.353 2.3944 0.337 0.66857 0.1 8.0176 1.07 2.6939 0.392 13.667 1.84 5.6891 0.685 10.293 1.243 7.8928 0.929 9.1836 1.114 2.2339 0.265 15.686 1.607 5.7302 0.554 15.308 1.296 8.2279 0.674 3.3019 0.255 12.551 0.918 0.55626 0.03 9.8022 0.656-0.36192 5.842-0.0802 1.207-0.3851 5.955-0.13728 2.097-0.50634 8.001 11.186 0.694 1.519 0.08 9.8824 0.529 0.34766 0.03 9.5294 0.457 0.27278 0.02 9.6302 0.385 7.8402 0.281 1.9594 0.06 5.9548 0.185 3.8813 0.105 4.0328 0.09 5.9869 0.144 1.9291 0.04 7.9142 0.127 7.932 0.105 1.9362 0.02 5.9797 0.05 3.9277 0.02h7.891l7.8428-0.03h0.55447m-344.96-175.16-0.0981-1.59 0.76485-2.108-0.0981-1.975-0.15333-1.27-0.0232-0.08-0.50455-2.034 0.33696-1.004 0.58657-2.596 2.94-13.08 0.66857-2.942 0.53665-2.386 3.0291-13.621 0.34588-1.517 4.1309-17.759 0.77911-3.384m544.87 306.7 3.703-1.986 1.0631-0.20406 3.6282-2.1982 0.93362-0.15877 0.75297-2.4929 1.6759-0.11084 1.251-0.99026 0.37797-0.661 0.0731-1.742 0.79182-0.73517 1.5262-0.79706-0.0918-1.9219 2.5304-2.4119 0.20147-0.137 0.70601-0.506 2.7153-1.532 0.6757-0.872 5.2809-6.347m165.79-165.23-2.2482-0.901-0.624-2.506-0.0499-0.06-1.9433-1.159-0.80586-0.401-0.29595-0.153-0.46712-0.649-0.15154-0.323-0.12302-0.513-0.27991-3.135-2.0253-5.279-3.284-10.872-3.0148-9.586-0.24068-0.772-3.3999-10.253-0.61865-1.767m-4.8369 8.235-0.38688 0.795 1.1343 1.6715-1.1575 3.9715 0.1355 0.383 0.60439 0.596 0.73811 0.907 0.40293 0.499 0.0713 0.114 0.41719 0.674-0.53806 1.0829 0.32234 0.91809-0.18542 0.515-0.0802 0.137-0.79516 1.398-0.066 0.103-0.0945 0.138-0.22464 0.29-0.041 0.06-0.51525 0.378-0.34409-0.03-1.0768 1.397-1.125 0.708-1.1125 0.692-0.0838 0.08-0.0499 0.04-0.53843 0.972-0.0553 0.234v0.144l0.52773 1.84 0.29953 0.403 0.27277 0.217-0.0613 1.2858 0.39548 0.28491-0.30109 0.91455-0.44451 1.7288 0.53008 0.4372-0.0985 1.249-0.71253 1.1626 0.22275 1.2167 0.0275 0.99352-0.51013 1.1576-0.31231 0.20594-0.39109 0.84349 0.20265 0.56513-0.24805 1.2853 0.23913 0.27352-0.79544 1.0393 0.17679 1.0177 0.47858 3.6804 0.31836-0.0164-0.0213 0.67393 0.36536 0.22607-0.0731 2.01 0.0642 1.695 0.49157 1.2321-0.15887 1.4514 0.38994 1.3392-0.97856 1.037 0.20726 0.9198-0.3482 0.9948 0.38928 0.62114 0.52467 0.6805 1.8381 1.478m-13.138 19.375 1.5743 8.743 0.54556 3.182 0.62757 3.68 0.2817 1.622 1.6114 1.4831-2.264 2.3349-1.2516 1.278 1.7971 2.312m-356.71 148.89 9.9252-0.159 3.8653-0.08 5.1757-0.129 4.9403-0.121h0.35479l8.0978-0.241 1.5048-0.05 4.459-0.153 6.9496-0.287 0.54734-0.03 8.219-0.369 4.0774-0.146 0.78624-0.02 5.1436-0.272 6.265-0.355 3.8189-0.207 6.5164-0.371 0.49029-0.03 0.72385-0.02 1.6385 2.314 0.17828 0.239 0.11945 1.826-0.19433 0.529-0.12836 0.202-2.0093 1.766-2.8401 4.943 1.4673-0.1 6.0742-0.433 4.8115-0.314m40.044-137.18 5.1097-0.49 5.0634-0.522 2.7724-0.296 4.6034-0.467 2.2339-0.239 6.2365-0.717 1.6224-0.175 6.3007-0.739 0.49742 1.428 6.8712-1.052 0.64897-0.104 8.1014-1.326 1.9772-0.346 5.2131-0.884m4.4447 156.94 3.5782-0.419 2.3035-0.289 1.2801-0.167 7.1725-1.045 1.2159-0.194 6.9336-1.092m-119.71-22.533-0.36841 0.81812-0.46351 0.41406-0.38003-0.2585-0.16281-0.85068m-374.58 105.87 3.4962-24.959 1.1161-8.021 1.3657-9.857 1.8096-13.026 2.5459-18.337 1.2052-8.718 3.3037-23.908 3.1735-22.867 1.5743-11.154 1.2765-9.094 0.86112-6.237 0.78803-8.01 0.69889-5.048 0.69175-4.227 0.12837-0.884 0.60974-4.172 0.77198-5.552 0.41898-3.004 0.51346-3.737 3.1985-22.789 1.0768-7.964m576.87 7.451-5.9637 1.277-1.6795 0.363-0.11233 0.02-5.666 1.188-3.7422 0.779-3.6584 0.763-3.7387 0.756-4.1755 0.827-0.16759 0.03-10.874 2.058-4.2094 0.795-0.65253 0.121-7.3918 1.364-2.118 0.387-7.9659 1.455-1.4637 0.263-4.976 0.878-2.6333 0.449-8.7503 1.462-1.7026 0.274-0.90035-5.512-0.20146-1.23-0.53487-3.277-0.88786-5.474-0.30488-1.792-0.60974-3.688-0.79516-4.857-0.20324-1.105-0.82904-5.151-0.0303-0.185-1.3407-8.123-0.0428-0.25-1.3086-7.987-0.47781-2.917m144.94-31.435 1.8096 6.307 0.4992 1.897 1.2714 5.1745-0.42431-0.0206-0.28257 0.33789 0.0187 0.36691 0.23939 0.21763 0.0616 0.45272 0.16757 0.308 0.0352 0.19037-0.18216 0.29169-0.0697 0.38137-0.18886 0.0696m-665.09 16.085-7.7377-1.205-10.116-1.637-0.91818-0.146-1.2284-0.317h-9e-3l-3.5515-0.614-4.3306-0.748-11.628-1.967-0.49029-0.08-5.584-0.95-0.53129-0.09-1.4299-0.249-0.19968-0.04-1.3425-0.32-1.1179-0.282-4.3466 22.589-3.9294 20.07-0.93244 4.799-1.5992 8.26-3.8243 19.694-0.46711 2.38-1.847 9.658-2.4265 12.367-2.6119 13.757-0.69176 3.584-0.72206 3.786-0.0891 0.462-0.73098 4.172-0.44215 2.316-0.77912 4.042-2.3302 3.148-0.2496 0.282-0.0963 0.06h-0.016l-1.1161-0.02-0.36192-0.04-0.0963-0.02-0.23356-0.178-0.16046-0.168-0.4261-0.676-0.12837-0.385-0.0161-0.192-9e-3 -0.05-0.0321-0.176-0.22464-0.563-0.54556-0.772-0.2496-0.234-2.3391-0.69-1.059-0.217h-1.1268l-2.0574 0.483-0.18363 0.1-0.24961 0.225-0.016 0.146-0.23356 2.25-0.49742 6.588-0.22464 4.027 0.24069 2.844 0.16759 1.348 0.025 0.675-0.12837 2.805-0.0232 0.513-0.0981 0.458-0.16758 0.548-1.7205 2.875m211.67-156.87-0.75594 8.959-1.1892 14.054-0.60261 7.002-0.25852 3.082-0.32805 3.948-0.77911 9.033m182.05 266.8-1.343-0.76577-0.72864-1.7947 1.7489-1.4262 0.14441-1.1383 2.291-3.194 0.0143-4.441-0.59727-3.621 0.76842-0.647 0.0802-0.2 7e-3 -0.119-0.27991-1.433-0.55447-0.669-0.0571-0.06 0.22464-0.804 2.8205-5.311 0.35479-1.542-0.0731-7.288-0.91461 0.24-0.20325-1.189-0.1355-0.754-0.58656-2.557-1.8007-2.612-2.1127-2.219-0.98058-5.919-2.7403-3.062-0.62579-4.967-0.0981-4.523-0.15155-6.935-0.0802-4.34-0.0713-3.189-0.12124-5.811-0.13728-6.493-0.4582-0.378-0.353-0.144-1.8488-0.371-1.0697 0.155-0.27991 0.03-0.0963 0.09-1.8488 0.938-1.0287-0.561-0.27991-0.184-0.7809-0.499-0.12658-0.17-0.1462-0.335-0.15154-0.394-4.9742-1.431-2.3623-0.965-3.2626-2.612-2.2268-1.904-1.2052-0.403h-0.13549l-0.0642 0.03h-0.0267l-0.40828 0.619-9e-3 0.03v0.04l-7e-3 0.02 7e-3 0.02 0.0731 0.154v0.03l0.0321 0.2-0.0321 0.232-0.10341 0.233-0.10697 0.104-0.50634 0.33-0.14976 0.02-0.28169 0.03-0.55448 0.07h-9e-3l-1.2872 0.06-0.71315-0.06-1.8809-0.25-0.0713-0.06-0.0749-0.128v-0.02l-5e-3 -0.118 0.0571-0.162 5e-3 -0.153-0.20147-0.514-0.14441-0.06-0.61687-0.03-1.3906 0.722-1.5957 0.833-1.6349 0.615-0.92353-0.17-1.1-0.217-0.25851 0.03-0.41006 0.03-2.1377 0.178-0.96454 0.223-0.16046 0.563-0.11945 0.555-9e-3 0.06-0.016 0.06-0.0553 0.177-0.0481 0.153-9e-3 0.02-0.0232 0.03-0.17828 0.186-0.0232 0.03-0.34588 0.148-0.39401 0.105-2.8366 0.701-0.18363-0.251-0.82725-1.125-0.24961-0.08-0.22464-0.02-0.97344 0.185h-0.025l-0.17651-0.121-1.9522-1.311-0.0161-0.06-0.016-0.111-0.016-0.283 0.0642-0.369-1.9041 0.859h-0.0161l-0.92352 0.155-1.7936-0.549-0.19255-0.133-0.312-0.35-0.96454-1.982-0.18541 0.103-2.8597 4.96-0.0891 0.119-0.19255 0.154-0.27278 0.09-0.30487-0.04-0.26565-0.09-1.028-1.6856 0.68272-2.0736-1.3691-0.73539-2.7075 2.3751-1.1157-0.30053-0.16759-0.112-0.11232-0.135-0.0161-0.04-0.0499-0.12-0.37618-1.718-1.4637 0.394-0.68284-0.477-1.9362-1.292-0.65074 0.82-0.99663 1.036-0.94849 0.747-0.59369 0.176-0.22643-0.02-1.6777-0.765-0.21037-0.194 0.49028-1.061 0.16225-1.237-0.7078-0.28-0.65967 0.16h-0.43326l-0.80408-0.24h-0.0321l-0.0481-0.05-0.32983-0.659-1.1482-1.888-2.9417-0.924-0.72385-0.162-0.36905 0.209-0.76307 0.964-1.0127 0.909-0.016 0.02h-7e-3l-0.54021-0.194-0.89856-1.446-0.43324-0.369-0.41897-0.276-0.19255-0.01-1.7205 0.53-1.2373-0.05-1.7436-0.427-1.7508-1.046-0.29061-0.134-1.7436-0.137-0.76307 0.01-0.35301 0.02-0.7078-0.16-0.3851-0.12-0.24069-0.07-9e-3 -0.01-0.32805-1.783 0.0161-0.499 0.0232-0.531v-0.02l-0.89143-1.551-0.94136-0.507-0.82725-0.449-0.8112 1.453-7e-3 0.02-0.025 0.04h-0.016l-0.14441 0.06-0.63471-0.06-0.61865-0.587-0.46711-0.272-0.28883-0.122-0.90035-0.105-0.20859-0.03-0.10341 0.04-0.73276 0.925h-0.89144l-0.57943-0.137-1.3175-1.253-0.47424-0.562-0.98058-1.271-2.7545-1.373 0.12836-4.275 0.27278-6.565 0.15333-3.519 0.23177-5.547 0.19433-4.546 0.24782-6.06 0.16938-4.04 0.37796-10.278-9.9484-0.444-7.4809-0.376-2.4033-0.12-9.8682-0.563-7.4791-0.473-2.3873-0.155-15.372-1.068m119.35-213.44-10.681-0.106-12.045-0.217-0.47424-0.02-11.498-0.344-4.5089-0.161-11.434-0.435-2.603-0.119-9.9252-0.483h-0.19968l-3.6478-0.186-0.36192-0.02h-0.13015l-1.9273-0.1-1.4548-0.08-4.6604-0.257-1.6385-0.09-0.93244-0.06-2.0093-0.113-2.4283-0.153-2.3052-0.136-1.9362-0.121-0.25852-0.02-0.15868-0.02-15.092-1.045-0.85934-0.06-16.802-1.334 0.64183-7.657 0.51525-5.955 0.19255-2.3 1.3336-15.7 0.13728-1.535 1.1642-13.612 0.71493-8.936 0.45819-5.544 0.69176-8.292\"\r\n style=\"fill:none;stroke-width:.89143;stroke:#000\" />\r\n\r\n <g id=\"separator\">\r\n <path id=\"separatorAK,HI\"\r\n d=\"m275.15 525.53v63.053l41.271 37.326m-315.26-178.34h197.18l76.81 77.957h98.592l60.76 61.907v38.472\"\r\n style=\"fill:none;stroke-width:2.3177;stroke:#221e1f\" />\r\n </g>\r\n</svg>", styles: ["#counties{fill:#d0d0d0;stroke:#000;stroke-width:.17829}#borders{fill:none;stroke:#221e1f;stroke-width:.89143}#separator{fill:none;stroke:#a9a9a9;stroke-width:2.3177309}\n"], dependencies: [{ kind: "directive", type: i11.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
27781
27969
|
}
|
|
27782
27970
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: UsMapComponent, decorators: [{
|
|
27783
27971
|
type: Component,
|
|
@@ -27824,6 +28012,7 @@ class Step2CoverageComponent {
|
|
|
27824
28012
|
tokenService;
|
|
27825
28013
|
providerId;
|
|
27826
28014
|
providerName;
|
|
28015
|
+
states;
|
|
27827
28016
|
city = signal('', ...(ngDevMode ? [{ debugName: "city" }] : []));
|
|
27828
28017
|
state = signal('', ...(ngDevMode ? [{ debugName: "state" }] : []));
|
|
27829
28018
|
showMap = false;
|
|
@@ -27833,7 +28022,7 @@ class Step2CoverageComponent {
|
|
|
27833
28022
|
coverages = [];
|
|
27834
28023
|
usCoordinates;
|
|
27835
28024
|
filteredLocations = [{ label: 'Current Coverage Area', locations: [] }];
|
|
27836
|
-
states = [];
|
|
28025
|
+
// states: StateModel[] = [];
|
|
27837
28026
|
showCoverage = false;
|
|
27838
28027
|
showLoading;
|
|
27839
28028
|
userCoverageArea = {
|
|
@@ -27867,19 +28056,19 @@ class Step2CoverageComponent {
|
|
|
27867
28056
|
this.userDetail = profile?.userDetail;
|
|
27868
28057
|
this.userId = await this.tokenService?.getUserId();
|
|
27869
28058
|
this.emailId = await this.tokenService?.getUserEmail();
|
|
27870
|
-
await this.getData();
|
|
28059
|
+
// await this.getData();
|
|
27871
28060
|
this.filteredLocations = [{ label: 'Current Coverage Area', locations: [] }];
|
|
27872
28061
|
this.getCoverage(this.userId);
|
|
27873
28062
|
}
|
|
27874
|
-
getData() {
|
|
27875
|
-
|
|
27876
|
-
|
|
27877
|
-
|
|
27878
|
-
|
|
27879
|
-
|
|
27880
|
-
|
|
27881
|
-
|
|
27882
|
-
}
|
|
28063
|
+
// getData() {
|
|
28064
|
+
// this.postalCodeService.GetStatesByCountryCode('US').subscribe(states => {
|
|
28065
|
+
// this.states = states
|
|
28066
|
+
// .filter(x => !['MH', 'DC'].includes(x.stateCode) && x.stateName?.trim() !== '')
|
|
28067
|
+
// .sort((a, b) => a?.stateName?.localeCompare(b?.stateName));
|
|
28068
|
+
// this.showCoverage = true;
|
|
28069
|
+
// this.isStatesLoading = false;
|
|
28070
|
+
// });
|
|
28071
|
+
// }
|
|
27883
28072
|
toggleMap() {
|
|
27884
28073
|
this.showMap = !this.showMap;
|
|
27885
28074
|
if (this.showMap) {
|
|
@@ -28021,7 +28210,7 @@ class Step2CoverageComponent {
|
|
|
28021
28210
|
county: c.countyName,
|
|
28022
28211
|
latitude: c.latitude || 0,
|
|
28023
28212
|
longitude: c.longitude || 0,
|
|
28024
|
-
stateName: this.states.find(x => x.stateCode === s.state)?.stateName,
|
|
28213
|
+
stateName: this.states.find((x) => x.stateCode === s.state)?.stateName,
|
|
28025
28214
|
stateCode: s.state
|
|
28026
28215
|
}))
|
|
28027
28216
|
}))
|
|
@@ -28132,12 +28321,12 @@ class Step2CoverageComponent {
|
|
|
28132
28321
|
latitude: c.latitude || 0,
|
|
28133
28322
|
longitude: c.longitude || 0,
|
|
28134
28323
|
stateCode: s.state,
|
|
28135
|
-
stateName: this.states.find(x => x.stateCode === s.state)?.stateName
|
|
28324
|
+
stateName: this.states.find((x) => x.stateCode === s.state)?.stateName
|
|
28136
28325
|
}))
|
|
28137
28326
|
}));
|
|
28138
28327
|
}
|
|
28139
28328
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: Step2CoverageComponent, deps: [{ token: CredentialingStore }, { token: UsMapLatestService }, { token: PostalCodeServices }, { token: UserCoverageAreaService }, { token: AlertService }, { token: i6.TokenService }], target: i0.ɵɵFactoryTarget.Component });
|
|
28140
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: Step2CoverageComponent, isStandalone: false, selector: "app-coverage", inputs: { providerId: "providerId", providerName: "providerName" }, ngImport: i0, template: "<div class=\"coverage-container\">\r\n <div class=\"first-section\">\r\n <h4 class=\"head\">Coverage Area</h4>\r\n <!-- <p>Let's start with the basics. Where are you located?</p>\r\n <span>We use this to match you with jobs nearby</span>\r\n <div class=\"location-inputs\">\r\n <input type=\"text\" placeholder=\"City\" [(ngModel)]=\"city\">\r\n <input type=\"text\" placeholder=\"State\" [(ngModel)]=\"state\">\r\n </div> -->\r\n </div>\r\n\r\n <div class=\"coverage-options\">\r\n <div class=\"d-flex justify-content-between\">\r\n <h6 class=\"text-secondary view-card fw-semibold\" style=\"font-size: 14px;\"> Where can you complete assignments?\r\n </h6>\r\n <div class=\"d-flex gap-1\">\r\n <label class=\"form-check-label\">Show Map</label>\r\n <div class=\"form-check form-switch\">\r\n <input class=\"form-check-input\" type=\"checkbox\" (change)=\"toggleMap()\" role=\"switch\">\r\n </div>\r\n </div>\r\n </div>\r\n <hr class=\"m-0 border-3\">\r\n\r\n <div class=\"pb-1 d-flex align-items-center mt-2\">\r\n <span class=\"custom-checkbox2\" [class.checked]=\"coverages.length > 0\"></span>\r\n <span class=\"view-card text-secondary ms-3\" style=\"font-size: 14px;\">\r\n My Current Coverage Area\r\n </span>\r\n </div>\r\n <div class=\"d-flex align-items-center\" style=\"cursor: pointer;\" (click)=\"skip()\">\r\n <span class=\"custom-checkbox2\" [class.checked]=\"coverages.length == 0\"></span>\r\n <span class=\"view-card text-secondary ms-3\" style=\"font-size: 14px;\">\r\n Not Applicable\r\n </span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"state-selector\">\r\n <div class=\"row pb-2\">\r\n <div class=\"col-md-12\">\r\n <div class=\"position-relative\">\r\n <!-- ng-select -->\r\n <ng-select [clearable]=\"true\" [multiple]=\"true\" (change)=\"setSelectedStates($event)\" [items]=\"states\"\r\n [(ngModel)]=\"selectedStates\" bindLabel=\"stateName\" bindValue=\"stateCode\" [closeOnSelect]=\"false\"\r\n placeholder=\"Select State\" id=\"reqStates\" [loading]=\"isStatesLoading\">\r\n <!-- Option Template -->\r\n <ng-template ng-option-tmp let-item=\"item\" let-item$=\"item$\">\r\n <span class=\"form-check\">\r\n <span class=\"form-check-input-wrapper\">\r\n <span class=\"custom-checkbox1\" [class.checked]=\"item$.selected\"></span>\r\n </span>\r\n {{ item.stateName }}\r\n </span>\r\n </ng-template>\r\n\r\n <!-- Label Template -->\r\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\r\n <ng-container *ngIf=\"!isStatesLoading\">\r\n <span class=\"ng-value-label\">{{ item.stateName }}</span>\r\n <span class=\"ng-value-icon right\" (click)=\"clear(item)\">\r\n <img src=\"/assets/images/icons/close-sm-circle.svg\" class=\"close-btn-select\" />\r\n </span>\r\n </ng-container>\r\n </ng-template>\r\n </ng-select>\r\n </div>\r\n\r\n\r\n </div>\r\n </div>\r\n <div class=\"border-0 empty-message mt-4\" *ngIf=\"!isStatesLoading && coverages.length == 0\">\r\n <div class=\"text-center text-secondary\" style=\"font-size: 14px;\">No States Selected yet</div>\r\n </div>\r\n <div class=\"coverage-options\">\r\n <div class=\"col-md-10 col-12 py-2 map-wrapper\" [class.open]=\"showMap\">\r\n <us-map [filteredLocations]=\"filteredLocations\"></us-map>\r\n </div>\r\n </div>\r\n <div class=\"col-12 mt-4\" *ngIf=\"!isStatesLoading\">\r\n <div *ngIf=\"coverages.length > 0\">\r\n <div class=\"col-8 p-0 ms-2\">\r\n <h4 class=\"head\">Coverage Area\r\n Counties</h4>\r\n </div>\r\n </div>\r\n <div class=\"row pt-2 pb-2\">\r\n <div class=\"col-12 \">\r\n <div class=\"row\">\r\n <div class=\"col-12\" *ngFor=\"let coverage of coverages; let coverageIndex = index\">\r\n <div class=\"row m-0\" style=\"background: #dedede;\">\r\n <div class=\"col-10\" style=\"margin-left: 0px;padding-left: 5px !important;\">\r\n <div class=\"form-group my-2\">\r\n <div class=\"custom-control custom-checkbox\">\r\n <label style=\"padding-top: 2px;\">Select All</label>\r\n <input type=\"checkbox\" style=\"width: 16px;border: 1px solid #ddd;\"\r\n id=\"stateCheckbox{{ coverage.state + coverageIndex }}\" [(ngModel)]=\"coverage.checked\"\r\n [indeterminate]=\"coverage.indeterminate\" (change)=\"onSelectAllChanged(coverage)\" />\r\n <label for=\"stateCheckbox{{ coverage?.state + coverageIndex }}\"\r\n class=\"custom-control font-weight-bold\"></label>\r\n <label class=\"position-absolute\" style=\"margin-left: 88px;\"\r\n [attr.for]=\"'stateCheckbox' + coverage.state + coverageIndex\">\r\n {{ coverage.state | stateName }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-2\" style=\"display: flex;\r\n justify-content: flex-end;\r\n align-items: center;\r\n height: 21px;\r\n \">\r\n <img class=\"mt-2 mt-sm-2 pt-2 pointer\" [src]=\"coverage?.isShow\r\n ? '/assets/images/icons/arrow-up.svg'\r\n : '/assets/images/icons/arrow-down.svg'\" alt=\"toggle\" (click)=\"coverage.isShow = !coverage?.isShow\" />\r\n </div>\r\n <span></span>\r\n </div>\r\n <hr class=\"mt-0\" />\r\n <ng-container *ngIf=\"coverage?.isShow\">\r\n <div class=\"form-group mb-1\">\r\n <input type=\"text\" class=\"font-default form-check-inline form-control h-37\"\r\n placeholder=\"Select Counties In {{ coverage.state | stateName }}\" [(ngModel)]=\"coverage.query\" />\r\n </div>\r\n <div class=\"row m-lg-2\" style=\"height: 160px;overflow-y: auto;padding-left: 1.6rem;\">\r\n <div class=\"list-group-item col-3 res-coverage col-sm-6 p-1\"\r\n *ngFor=\"let county of coverage.counties | SearchBy: 'countyName':coverage.query; let countyIndex = index\">\r\n <div class=\"form-check\">\r\n <input class=\"form-check-input\" type=\"checkbox\"\r\n [id]=\"'stateCheckbox' + coverage.state + county.countyName + countyIndex\"\r\n [(ngModel)]=\"county.checked\"\r\n (change)=\"onChangedCounty($event, coverage.state, county.countyName)\" />\r\n <label class=\"form-check-label\"\r\n [for]=\"'stateCheckbox' + coverage.state + county.countyName + countyIndex\">\r\n {{ county.countyName }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"actions\">\r\n <button type=\"button\" class=\"secondary\" (click)=\"previousStep()\">Back</button>\r\n <div class=\"right-actions\">\r\n <button type=\"button\" class=\"secondary\" (click)=\"skip()\">\r\n Skip\r\n </button>\r\n <button type=\"button\" class=\"primary\" [disabled]=\"coverageSave\" [ng2-loading]=\"coverageSave\"\r\n (click)=\"saveCoverage()\">\r\n Continue\r\n </button>\r\n </div>\r\n </div>\r\n\r\n\r\n</div>", styles: [".coverage-container{max-width:1000px;margin:0 auto;padding:2rem;min-height:300px}.coverage-container .form-check-label{color:#69707d}.coverage-container .head{margin-bottom:.5rem;font-size:20px;font-weight:600;color:#69707d}.coverage-container p{font-size:16px;font-weight:500;color:#6b7280;margin-bottom:7px;margin-top:25px}.coverage-container .first-section span{color:#6b7280}.coverage-container .location-inputs{display:flex;gap:1rem;margin-bottom:5rem;margin-top:20px}.coverage-container .location-inputs input{flex:1;padding:5px 15px;border:1px solid #d1d5db;border-radius:.375rem;height:45px}.coverage-container .state-selector .empty-message{width:100%;padding:1rem;background-color:#f3f4f6;text-align:center;color:#6b7280;border-radius:.375rem}.coverage-container .state-selector .custom-control{font-size:15px;display:flex;align-items:center;gap:7px;color:#69707d;padding-left:13px}.coverage-container .state-selector .custom-control-input:checked{color:#fff!important;border-color:#2980b9!important;background-color:#2980b9!important}.coverage-container .state-selector .form-check-input:checked{color:#fff!important;border-color:#2980b9!important;background-color:#2980b9!important}.coverage-container .coverage-options{margin-bottom:1rem}.coverage-container .coverage-options label{font-size:.875rem;display:flex;align-items:center;gap:.25rem}.coverage-container .coverage-options label .show-map{margin-left:auto}.coverage-container .coverage-options .icon-black{filter:brightness(0) saturate(100%) invert(10%) sepia(47%) saturate(3454%) hue-rotate(184deg) brightness(98%) contrast(101%)}.coverage-container .coverage-options .icon-gray{filter:brightness(0) saturate(100%) invert(100%) sepia(4%) saturate(29%) hue-rotate(68deg) brightness(112%) contrast(80%)}.coverage-container .coverage-options .form-check-input:checked{color:#fff!important;border-color:#2980b9!important;background-color:#2980b9!important}.coverage-container .coverage-options .square-box{width:12px;height:12px;border:2px solid;display:inline-block}.coverage-container .coverage-options .square-box.black{background:#002b49;border:0;width:15px;height:14px}.coverage-container .coverage-options .square-box.gray{border:1px solid rgba(128,128,128,.231372549)!important;border:0;width:15px;height:15px}.coverage-container .coverage-options .map-wrapper{display:grid;grid-template-rows:0fr;opacity:0;transition:grid-template-rows .4s ease,opacity .3s ease}.coverage-container .coverage-options .map-wrapper>*{overflow:hidden}.coverage-container .coverage-options .map-wrapper.open{grid-template-rows:1fr;opacity:1}.coverage-container .navigation-buttons{display:flex;justify-content:flex-end;gap:1rem;margin-top:70px;margin-bottom:50px}.coverage-container .navigation-buttons .back{padding:.5rem 1rem;border:1px solid #d1d5db;border-radius:.375rem;background:#fff;cursor:pointer;min-width:18%;min-height:50px}.coverage-container .navigation-buttons .next{padding:.5rem 1rem;background-color:#4077ad;color:#fff;border-radius:.375rem;cursor:pointer;min-width:18%;min-height:50px}.coverage-container .navigation-buttons .next:disabled{background-color:#d1d5db;cursor:not-allowed}::ng-deep .ng-select .ng-select-container{height:45px}::ng-deep .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{top:10px}.custom-checkbox1{display:inline-block;width:15px;height:15px;border:1px solid #ccc;margin-right:8px;vertical-align:middle;position:relative;cursor:pointer;border-radius:3px;background-color:#fff}.custom-checkbox2{display:inline-block;width:15px;height:15px;border:1px solid #ccc;vertical-align:middle;position:relative;cursor:pointer;border-radius:3px;background-color:#fff}.custom-checkbox2.checked{background-color:#4077ad;border-color:#4077ad}.custom-checkbox2.checked:after{content:\"\";position:absolute;left:4px;top:0;width:4px;height:8px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg)}.custom-checkbox1.checked{background-color:#4077ad;border-color:#4077ad}.custom-checkbox1.checked:after{content:\"\";position:absolute;left:4px;top:0;width:4px;height:8px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg)}.select-loader{position:absolute;top:-28px;left:0;font-size:12px;color:#4077ad;display:flex;align-items:center;gap:6px}::ng-deep .form-check{display:block;min-height:1.5rem;margin-bottom:.125rem}.right-actions{display:flex;gap:16px}.actions{display:flex;justify-content:space-between;margin:70px 0 40px}button{height:44px;min-width:120px;border:none;font-size:14px;cursor:pointer;border-radius:5px}button.primary{background-color:#4077ad;color:#fff;border-radius:5px}button.secondary{background-color:#d5d6da;color:#525862;border-radius:5px}button:disabled{background-color:#9ca3af;cursor:not-allowed}.icon-color{cursor:pointer;background:transparent;width:20px;height:20px;transition:transform .3s ease;filter:brightness(0) saturate(100%) invert(48%) sepia(8%) saturate(350%) hue-rotate(170deg) brightness(92%) contrast(88%)}.icon-color.edit{width:18px;height:18px}.custom-control label{padding-top:8px}@media screen and (max-width: 767px){.actions{gap:5px;display:flex;flex-direction:column-reverse}.actions button{min-width:90px}.right-actions{gap:5px;justify-content:space-between;display:flex;flex-direction:column-reverse}.custom-control label{padding-top:0}.res-coverage{width:50%}.pointer{display:none}}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.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: i3.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: UsMapComponent, selector: "us-map", inputs: ["selectedStates", "allowedStates", "isReadOnly", "filteredLocations"], outputs: ["onMapClick"] }, { kind: "component", type: i10.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "directive", type: i10.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }, { kind: "directive", type: i10.NgLabelTemplateDirective, selector: "[ng-label-tmp]" }, { kind: "directive", type: Ng2LoadingSpinnerDirective, selector: "[ng2-loading]", inputs: ["ng2-loading", "config", "template"] }, { kind: "pipe", type: SearchPipe, name: "SearchBy" }, { kind: "pipe", type: StateNamePipe, name: "stateName" }] });
|
|
28329
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: Step2CoverageComponent, isStandalone: false, selector: "app-coverage", inputs: { providerId: "providerId", providerName: "providerName", states: "states" }, ngImport: i0, template: "<div class=\"coverage-container\">\r\n <div class=\"first-section\">\r\n <h4 class=\"head\">Coverage Area</h4>\r\n <!-- <p>Let's start with the basics. Where are you located?</p>\r\n <span>We use this to match you with jobs nearby</span>\r\n <div class=\"location-inputs\">\r\n <input type=\"text\" placeholder=\"City\" [(ngModel)]=\"city\">\r\n <input type=\"text\" placeholder=\"State\" [(ngModel)]=\"state\">\r\n </div> -->\r\n </div>\r\n\r\n <div class=\"coverage-options\">\r\n <div class=\"d-flex justify-content-between\">\r\n <h6 class=\"text-secondary view-card fw-semibold\" style=\"font-size: 14px;\"> Where can you complete assignments?\r\n </h6>\r\n <div class=\"d-flex gap-1\">\r\n <label class=\"form-check-label\">Show Map</label>\r\n <div class=\"form-check form-switch\">\r\n <input class=\"form-check-input\" type=\"checkbox\" (change)=\"toggleMap()\" role=\"switch\">\r\n </div>\r\n </div>\r\n </div>\r\n <hr class=\"m-0 border-3\">\r\n\r\n <div class=\"pb-1 d-flex align-items-center mt-2\">\r\n <span class=\"custom-checkbox2\" [class.checked]=\"coverages.length > 0\"></span>\r\n <span class=\"view-card text-secondary ms-3\" style=\"font-size: 14px;\">\r\n My Current Coverage Area\r\n </span>\r\n </div>\r\n <div class=\"d-flex align-items-center\" style=\"cursor: pointer;\" (click)=\"skip()\">\r\n <span class=\"custom-checkbox2\" [class.checked]=\"coverages.length == 0\"></span>\r\n <span class=\"view-card text-secondary ms-3\" style=\"font-size: 14px;\">\r\n Not Applicable\r\n </span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"state-selector\">\r\n <div class=\"row pb-2\">\r\n <div class=\"col-md-12\">\r\n <div class=\"position-relative\">\r\n <!-- ng-select -->\r\n <ng-select [clearable]=\"true\" [multiple]=\"true\" (change)=\"setSelectedStates($event)\" [items]=\"states\"\r\n [(ngModel)]=\"selectedStates\" bindLabel=\"stateName\" bindValue=\"stateCode\" [closeOnSelect]=\"false\"\r\n placeholder=\"Select State\" id=\"reqStates\" [loading]=\"isStatesLoading\">\r\n <!-- Option Template -->\r\n <ng-template ng-option-tmp let-item=\"item\" let-item$=\"item$\">\r\n <span class=\"form-check\">\r\n <span class=\"form-check-input-wrapper\">\r\n <span class=\"custom-checkbox1\" [class.checked]=\"item$.selected\"></span>\r\n </span>\r\n {{ item.stateName }}\r\n </span>\r\n </ng-template>\r\n\r\n <!-- Label Template -->\r\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\r\n <ng-container *ngIf=\"!isStatesLoading\">\r\n <span class=\"ng-value-label\">{{ item.stateName }}</span>\r\n <span class=\"ng-value-icon right\" (click)=\"clear(item)\">\r\n <img src=\"/assets/images/icons/close-sm-circle.svg\" class=\"close-btn-select\" />\r\n </span>\r\n </ng-container>\r\n </ng-template>\r\n </ng-select>\r\n </div>\r\n\r\n\r\n </div>\r\n </div>\r\n <div class=\"border-0 empty-message mt-4\" *ngIf=\"!isStatesLoading && coverages.length == 0\">\r\n <div class=\"text-center text-secondary\" style=\"font-size: 14px;\">No States Selected yet</div>\r\n </div>\r\n <div class=\"coverage-options\">\r\n <div class=\"col-md-10 col-12 py-2 map-wrapper\" [class.open]=\"showMap\">\r\n <us-map [filteredLocations]=\"filteredLocations\"></us-map>\r\n </div>\r\n </div>\r\n <div class=\"col-12 mt-4\" *ngIf=\"!isStatesLoading\">\r\n <div *ngIf=\"coverages.length > 0\">\r\n <div class=\"col-8 p-0 ms-2\">\r\n <h4 class=\"head\">Coverage Area\r\n Counties</h4>\r\n </div>\r\n </div>\r\n <div class=\"row pt-2 pb-2\">\r\n <div class=\"col-12 \">\r\n <div class=\"row\">\r\n <div class=\"col-12\" *ngFor=\"let coverage of coverages; let coverageIndex = index\">\r\n <div class=\"row m-0\" style=\"background: #dedede;\">\r\n <div class=\"col-10\" style=\"margin-left: 0px;padding-left: 5px !important;\">\r\n <div class=\"form-group my-2\">\r\n <div class=\"custom-control custom-checkbox\">\r\n <label style=\"padding-top: 2px;\">Select All</label>\r\n <input type=\"checkbox\" style=\"width: 16px;border: 1px solid #ddd;\"\r\n id=\"stateCheckbox{{ coverage.state + coverageIndex }}\" [(ngModel)]=\"coverage.checked\"\r\n [indeterminate]=\"coverage.indeterminate\" (change)=\"onSelectAllChanged(coverage)\" />\r\n <label for=\"stateCheckbox{{ coverage?.state + coverageIndex }}\"\r\n class=\"custom-control font-weight-bold\"></label>\r\n <label class=\"position-absolute\" style=\"margin-left: 88px;\"\r\n [attr.for]=\"'stateCheckbox' + coverage.state + coverageIndex\">\r\n {{ coverage.state | stateName }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-2\" style=\"display: flex;\r\n justify-content: flex-end;\r\n align-items: center;\r\n height: 21px;\r\n \">\r\n <img class=\"mt-2 mt-sm-2 pt-2 pointer\" [src]=\"coverage?.isShow\r\n ? '/assets/images/icons/arrow-up.svg'\r\n : '/assets/images/icons/arrow-down.svg'\" alt=\"toggle\" (click)=\"coverage.isShow = !coverage?.isShow\" />\r\n </div>\r\n <span></span>\r\n </div>\r\n <hr class=\"mt-0\" />\r\n <ng-container *ngIf=\"coverage?.isShow\">\r\n <div class=\"form-group mb-1\">\r\n <input type=\"text\" class=\"font-default form-check-inline form-control h-37\"\r\n placeholder=\"Select Counties In {{ coverage.state | stateName }}\" [(ngModel)]=\"coverage.query\" />\r\n </div>\r\n <div class=\"row m-lg-2\" style=\"height: 160px;overflow-y: auto;padding-left: 1.6rem;\">\r\n <div class=\"list-group-item col-3 res-coverage col-sm-6 p-1\"\r\n *ngFor=\"let county of coverage.counties | SearchBy: 'countyName':coverage.query; let countyIndex = index\">\r\n <div class=\"form-check\">\r\n <input class=\"form-check-input\" type=\"checkbox\"\r\n [id]=\"'stateCheckbox' + coverage.state + county.countyName + countyIndex\"\r\n [(ngModel)]=\"county.checked\"\r\n (change)=\"onChangedCounty($event, coverage.state, county.countyName)\" />\r\n <label class=\"form-check-label\"\r\n [for]=\"'stateCheckbox' + coverage.state + county.countyName + countyIndex\">\r\n {{ county.countyName }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"actions\">\r\n <button type=\"button\" class=\"secondary\" (click)=\"previousStep()\">Back</button>\r\n <div class=\"right-actions\">\r\n <button type=\"button\" class=\"secondary\" (click)=\"skip()\">\r\n Skip\r\n </button>\r\n <button type=\"button\" class=\"primary\" [disabled]=\"coverageSave\" [ng2-loading]=\"coverageSave\"\r\n (click)=\"saveCoverage()\">\r\n Continue\r\n </button>\r\n </div>\r\n </div>\r\n\r\n\r\n</div>", styles: [".coverage-container{max-width:1000px;margin:0 auto;padding:2rem;min-height:300px}.coverage-container .form-check-label{color:#69707d}.coverage-container .head{margin-bottom:.5rem;font-size:20px;font-weight:600;color:#69707d}.coverage-container p{font-size:16px;font-weight:500;color:#6b7280;margin-bottom:7px;margin-top:25px}.coverage-container .first-section span{color:#6b7280}.coverage-container .location-inputs{display:flex;gap:1rem;margin-bottom:5rem;margin-top:20px}.coverage-container .location-inputs input{flex:1;padding:5px 15px;border:1px solid #d1d5db;border-radius:.375rem;height:45px}.coverage-container .state-selector .empty-message{width:100%;padding:1rem;background-color:#f3f4f6;text-align:center;color:#6b7280;border-radius:.375rem}.coverage-container .state-selector .custom-control{font-size:15px;display:flex;align-items:center;gap:7px;color:#69707d;padding-left:13px}.coverage-container .state-selector .custom-control-input:checked{color:#fff!important;border-color:#2980b9!important;background-color:#2980b9!important}.coverage-container .state-selector .form-check-input:checked{color:#fff!important;border-color:#2980b9!important;background-color:#2980b9!important}.coverage-container .coverage-options{margin-bottom:1rem}.coverage-container .coverage-options label{font-size:.875rem;display:flex;align-items:center;gap:.25rem}.coverage-container .coverage-options label .show-map{margin-left:auto}.coverage-container .coverage-options .icon-black{filter:brightness(0) saturate(100%) invert(10%) sepia(47%) saturate(3454%) hue-rotate(184deg) brightness(98%) contrast(101%)}.coverage-container .coverage-options .icon-gray{filter:brightness(0) saturate(100%) invert(100%) sepia(4%) saturate(29%) hue-rotate(68deg) brightness(112%) contrast(80%)}.coverage-container .coverage-options .form-check-input:checked{color:#fff!important;border-color:#2980b9!important;background-color:#2980b9!important}.coverage-container .coverage-options .square-box{width:12px;height:12px;border:2px solid;display:inline-block}.coverage-container .coverage-options .square-box.black{background:#002b49;border:0;width:15px;height:14px}.coverage-container .coverage-options .square-box.gray{border:1px solid rgba(128,128,128,.231372549)!important;border:0;width:15px;height:15px}.coverage-container .coverage-options .map-wrapper{display:grid;grid-template-rows:0fr;opacity:0;transition:grid-template-rows .4s ease,opacity .3s ease}.coverage-container .coverage-options .map-wrapper>*{overflow:hidden}.coverage-container .coverage-options .map-wrapper.open{grid-template-rows:1fr;opacity:1}.coverage-container .navigation-buttons{display:flex;justify-content:flex-end;gap:1rem;margin-top:70px;margin-bottom:50px}.coverage-container .navigation-buttons .back{padding:.5rem 1rem;border:1px solid #d1d5db;border-radius:.375rem;background:#fff;cursor:pointer;min-width:18%;min-height:50px}.coverage-container .navigation-buttons .next{padding:.5rem 1rem;background-color:#4077ad;color:#fff;border-radius:.375rem;cursor:pointer;min-width:18%;min-height:50px}.coverage-container .navigation-buttons .next:disabled{background-color:#d1d5db;cursor:not-allowed}::ng-deep .ng-select .ng-select-container{height:45px}::ng-deep .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{top:10px}.custom-checkbox1{display:inline-block;width:15px;height:15px;border:1px solid #ccc;margin-right:8px;vertical-align:middle;position:relative;cursor:pointer;border-radius:3px;background-color:#fff}.custom-checkbox2{display:inline-block;width:15px;height:15px;border:1px solid #ccc;vertical-align:middle;position:relative;cursor:pointer;border-radius:3px;background-color:#fff}.custom-checkbox2.checked{background-color:#4077ad;border-color:#4077ad}.custom-checkbox2.checked:after{content:\"\";position:absolute;left:4px;top:0;width:4px;height:8px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg)}.custom-checkbox1.checked{background-color:#4077ad;border-color:#4077ad}.custom-checkbox1.checked:after{content:\"\";position:absolute;left:4px;top:0;width:4px;height:8px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg)}.select-loader{position:absolute;top:-28px;left:0;font-size:12px;color:#4077ad;display:flex;align-items:center;gap:6px}::ng-deep .form-check{display:block;min-height:1.5rem;margin-bottom:.125rem}.right-actions{display:flex;gap:16px}.actions{display:flex;justify-content:space-between;margin:70px 0 40px}button{height:44px;min-width:120px;border:none;font-size:14px;cursor:pointer;border-radius:5px}button.primary{background-color:#4077ad;color:#fff;border-radius:5px}button.secondary{background-color:#d5d6da;color:#525862;border-radius:5px}button:disabled{background-color:#9ca3af;cursor:not-allowed}.icon-color{cursor:pointer;background:transparent;width:20px;height:20px;transition:transform .3s ease;filter:brightness(0) saturate(100%) invert(48%) sepia(8%) saturate(350%) hue-rotate(170deg) brightness(92%) contrast(88%)}.icon-color.edit{width:18px;height:18px}.custom-control label{padding-top:8px}@media screen and (max-width: 767px){.actions{gap:5px;display:flex;flex-direction:column-reverse}.actions button{min-width:90px}.right-actions{gap:5px;justify-content:space-between;display:flex;flex-direction:column-reverse}.custom-control label{padding-top:0}.res-coverage{width:50%}.pointer{display:none}}\n"], dependencies: [{ kind: "directive", type: i11.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i8.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: i8.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: UsMapComponent, selector: "us-map", inputs: ["selectedStates", "allowedStates", "isReadOnly", "filteredLocations"], outputs: ["onMapClick"] }, { kind: "component", type: i12.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "directive", type: i12.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }, { kind: "directive", type: i12.NgLabelTemplateDirective, selector: "[ng-label-tmp]" }, { kind: "directive", type: Ng2LoadingSpinnerDirective, selector: "[ng2-loading]", inputs: ["ng2-loading", "config", "template"] }, { kind: "pipe", type: SearchPipe, name: "SearchBy" }, { kind: "pipe", type: StateNamePipe, name: "stateName" }] });
|
|
28141
28330
|
}
|
|
28142
28331
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: Step2CoverageComponent, decorators: [{
|
|
28143
28332
|
type: Component,
|
|
@@ -28146,6 +28335,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
28146
28335
|
type: Input
|
|
28147
28336
|
}], providerName: [{
|
|
28148
28337
|
type: Input
|
|
28338
|
+
}], states: [{
|
|
28339
|
+
type: Input
|
|
28149
28340
|
}] } });
|
|
28150
28341
|
|
|
28151
28342
|
class UserExperienceService {
|
|
@@ -28241,6 +28432,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
28241
28432
|
|
|
28242
28433
|
class WorkexperienceComponent {
|
|
28243
28434
|
userExperienceService;
|
|
28435
|
+
userService;
|
|
28244
28436
|
workStore;
|
|
28245
28437
|
store;
|
|
28246
28438
|
countryService;
|
|
@@ -28249,6 +28441,9 @@ class WorkexperienceComponent {
|
|
|
28249
28441
|
fb;
|
|
28250
28442
|
fileService;
|
|
28251
28443
|
http;
|
|
28444
|
+
originalFormValue;
|
|
28445
|
+
fileChanged = false;
|
|
28446
|
+
user;
|
|
28252
28447
|
providerId;
|
|
28253
28448
|
maxDate = new Date();
|
|
28254
28449
|
providerName;
|
|
@@ -28277,8 +28472,9 @@ class WorkexperienceComponent {
|
|
|
28277
28472
|
return this.workStore.experiences().length > 0 && !this.isEditing();
|
|
28278
28473
|
}, ...(ngDevMode ? [{ debugName: "showpreview" }] : []));
|
|
28279
28474
|
userdata;
|
|
28280
|
-
constructor(userExperienceService, workStore, store, countryService, postalCodeService, tokenService, fb, fileService, http) {
|
|
28475
|
+
constructor(userExperienceService, userService, workStore, store, countryService, postalCodeService, tokenService, fb, fileService, http) {
|
|
28281
28476
|
this.userExperienceService = userExperienceService;
|
|
28477
|
+
this.userService = userService;
|
|
28282
28478
|
this.workStore = workStore;
|
|
28283
28479
|
this.store = store;
|
|
28284
28480
|
this.countryService = countryService;
|
|
@@ -28300,6 +28496,7 @@ class WorkexperienceComponent {
|
|
|
28300
28496
|
jobDescription: [''],
|
|
28301
28497
|
reviewStatus: [ReviewStatus.Resolved]
|
|
28302
28498
|
});
|
|
28499
|
+
this.user = this.userService.getUserDetails();
|
|
28303
28500
|
await loadProfile();
|
|
28304
28501
|
const saved = profileSignal();
|
|
28305
28502
|
this.userdata = saved;
|
|
@@ -28347,18 +28544,40 @@ class WorkexperienceComponent {
|
|
|
28347
28544
|
if (this.fileData) {
|
|
28348
28545
|
this.fileName = this.fileData.name;
|
|
28349
28546
|
this.model.fileName = this.fileName;
|
|
28547
|
+
// ✅ mark change
|
|
28548
|
+
this.fileChanged = true;
|
|
28350
28549
|
}
|
|
28351
28550
|
}
|
|
28551
|
+
hasChanges() {
|
|
28552
|
+
const current = this.workexperienceForm.getRawValue();
|
|
28553
|
+
const formattedCurrent = {
|
|
28554
|
+
...current,
|
|
28555
|
+
fromDate: current.fromDate
|
|
28556
|
+
? new Date(current.fromDate).toISOString()
|
|
28557
|
+
: null,
|
|
28558
|
+
toDate: current.toDate
|
|
28559
|
+
? new Date(current.toDate).toISOString()
|
|
28560
|
+
: null
|
|
28561
|
+
};
|
|
28562
|
+
return (JSON.stringify(formattedCurrent) !== this.originalFormValue ||
|
|
28563
|
+
this.fileChanged);
|
|
28564
|
+
}
|
|
28352
28565
|
saveFile() {
|
|
28353
28566
|
if (this.workexperienceForm.invalid) {
|
|
28354
28567
|
this.workexperienceForm.markAllAsTouched();
|
|
28355
28568
|
return;
|
|
28356
28569
|
}
|
|
28570
|
+
// ✅ MOST IMPORTANT LINE
|
|
28571
|
+
if (this.editingIndex >= 0 && !this.hasChanges()) {
|
|
28572
|
+
console.log('No changes → API skipped');
|
|
28573
|
+
this.isEditing.set(false);
|
|
28574
|
+
return;
|
|
28575
|
+
}
|
|
28357
28576
|
this.proposalLoader = true;
|
|
28358
|
-
if (!this.fileData) {
|
|
28577
|
+
if (!this.fileData || !this.fileChanged) {
|
|
28359
28578
|
this.saveAndContinue();
|
|
28360
28579
|
}
|
|
28361
|
-
else
|
|
28580
|
+
else {
|
|
28362
28581
|
this.saveAWSFile();
|
|
28363
28582
|
}
|
|
28364
28583
|
}
|
|
@@ -28398,6 +28617,53 @@ class WorkexperienceComponent {
|
|
|
28398
28617
|
}
|
|
28399
28618
|
});
|
|
28400
28619
|
}
|
|
28620
|
+
removeFile() {
|
|
28621
|
+
// clear selected file
|
|
28622
|
+
this.fileData = null;
|
|
28623
|
+
// clear UI
|
|
28624
|
+
this.fileName = null;
|
|
28625
|
+
// clear model
|
|
28626
|
+
this.model.fileId = null;
|
|
28627
|
+
this.model.fileUrl = null;
|
|
28628
|
+
this.model.fileName = null;
|
|
28629
|
+
// ✅ IMPORTANT: mark as changed
|
|
28630
|
+
this.fileChanged = true;
|
|
28631
|
+
}
|
|
28632
|
+
edit(index) {
|
|
28633
|
+
this.isEditing.set(true);
|
|
28634
|
+
const data = this.workStore.getExperience(index);
|
|
28635
|
+
if (!data)
|
|
28636
|
+
return;
|
|
28637
|
+
// ✅ Prepare normalized form value (for comparison)
|
|
28638
|
+
const formValue = {
|
|
28639
|
+
companyName: data.companyName,
|
|
28640
|
+
jobTitle: data.jobTitle,
|
|
28641
|
+
country: data.country,
|
|
28642
|
+
state: data.state,
|
|
28643
|
+
city: data.city,
|
|
28644
|
+
fromDate: data.fromDate ? new Date(data.fromDate).toISOString() : null,
|
|
28645
|
+
toDate: data.toDate ? new Date(data.toDate).toISOString() : null,
|
|
28646
|
+
jobDescription: data.jobDescription,
|
|
28647
|
+
reviewStatus: data.reviewStatus
|
|
28648
|
+
};
|
|
28649
|
+
// ✅ Patch form (UI needs Date object)
|
|
28650
|
+
this.workexperienceForm.patchValue({
|
|
28651
|
+
...formValue,
|
|
28652
|
+
fromDate: data.fromDate ? new Date(data.fromDate) : null,
|
|
28653
|
+
toDate: data.toDate ? new Date(data.toDate) : null
|
|
28654
|
+
});
|
|
28655
|
+
// ✅ Store original (for change detection)
|
|
28656
|
+
this.originalFormValue = JSON.stringify(formValue);
|
|
28657
|
+
// ✅ File handling
|
|
28658
|
+
this.model.fileUrl = data.fileUrl;
|
|
28659
|
+
this.model.fileName = data.fileName;
|
|
28660
|
+
this.fileName = data.fileName;
|
|
28661
|
+
// 🚨 IMPORTANT: reset file tracking
|
|
28662
|
+
this.fileChanged = false;
|
|
28663
|
+
this.fileData = null;
|
|
28664
|
+
// ✅ Set editing index
|
|
28665
|
+
this.editingIndex = index;
|
|
28666
|
+
}
|
|
28401
28667
|
saveAndContinue() {
|
|
28402
28668
|
if (this.workexperienceForm.invalid) {
|
|
28403
28669
|
this.workexperienceForm.markAllAsTouched();
|
|
@@ -28412,7 +28678,7 @@ class WorkexperienceComponent {
|
|
|
28412
28678
|
// providerId: "9cae8ace-8c8d-4722-8a7b-5b969a6f88da",
|
|
28413
28679
|
providerName: this.providerName,
|
|
28414
28680
|
targetProviderId: this.providerId,
|
|
28415
|
-
userName: this.
|
|
28681
|
+
userName: this.user.fullName,
|
|
28416
28682
|
companyName: fullValue.companyName,
|
|
28417
28683
|
jobTitle: fullValue.jobTitle,
|
|
28418
28684
|
country: fullValue.country,
|
|
@@ -28425,7 +28691,7 @@ class WorkexperienceComponent {
|
|
|
28425
28691
|
fileUrl: this.model?.fileUrl || null,
|
|
28426
28692
|
fileName: this.model?.fileName || null,
|
|
28427
28693
|
reviewStatus: fullValue.reviewStatus,
|
|
28428
|
-
userHeadShotUrl: this.
|
|
28694
|
+
userHeadShotUrl: this.user.headshotUrl
|
|
28429
28695
|
};
|
|
28430
28696
|
if (this.editingIndex >= 0) {
|
|
28431
28697
|
this.userExperienceService
|
|
@@ -28478,40 +28744,19 @@ class WorkexperienceComponent {
|
|
|
28478
28744
|
this.workexperienceForm.reset();
|
|
28479
28745
|
this.fileName = null;
|
|
28480
28746
|
}
|
|
28481
|
-
edit(index) {
|
|
28482
|
-
this.isEditing.set(true);
|
|
28483
|
-
const data = this.workStore.getExperience(index);
|
|
28484
|
-
if (!data)
|
|
28485
|
-
return;
|
|
28486
|
-
this.workexperienceForm.patchValue({
|
|
28487
|
-
companyName: data.companyName,
|
|
28488
|
-
jobTitle: data.jobTitle,
|
|
28489
|
-
country: data.country,
|
|
28490
|
-
state: data.state,
|
|
28491
|
-
city: data.city,
|
|
28492
|
-
fromDate: new Date(data.fromDate),
|
|
28493
|
-
toDate: new Date(data.toDate),
|
|
28494
|
-
jobDescription: data.jobDescription,
|
|
28495
|
-
reviewStatus: data.reviewStatus
|
|
28496
|
-
});
|
|
28497
|
-
this.model.fileUrl = data.fileUrl;
|
|
28498
|
-
this.model.fileName = data.fileName;
|
|
28499
|
-
this.fileName = data.fileName;
|
|
28500
|
-
this.editingIndex = index;
|
|
28501
|
-
}
|
|
28502
28747
|
back() {
|
|
28503
28748
|
this.store.previousStep();
|
|
28504
28749
|
}
|
|
28505
28750
|
nextStep() {
|
|
28506
28751
|
this.store.nextStep();
|
|
28507
28752
|
}
|
|
28508
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: WorkexperienceComponent, deps: [{ token: UserExperienceService }, { token: WorkExperienceStore }, { token: CredentialingStore }, { token: CountryServices }, { token: PostalCodeServices }, { token: i6.TokenService }, { token:
|
|
28509
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: WorkexperienceComponent, isStandalone: false, selector: "app-workexperience", inputs: { providerId: "providerId", providerName: "providerName", cloudfrontUrl: "cloudfrontUrl" }, ngImport: i0, template: "<div *ngIf=\"!showpreview()\">\r\n <div class=\"education-container\">\r\n <h3>Add Work Experience</h3>\r\n <p class=\"hint\">\r\n Add your prior and current work history below\r\n </p>\r\n <form [formGroup]=\"workexperienceForm\">\r\n <div class=\"row\">\r\n <div class=\"field\">\r\n <div class=\"head\">Company Name</div>\r\n <input type=\"text\" placeholder=\"Enter your company name here\" formControlName=\"companyName\" />\r\n <small class=\"error\" *ngIf=\"workexperienceForm.get('companyName')?.touched &&\r\n workexperienceForm.get('companyName')?.hasError('required')\">\r\n Company name is required\r\n </small>\r\n </div>\r\n\r\n <div class=\"field\">\r\n <div class=\"head\">Job Title</div>\r\n <input type=\"text\" placeholder=\"Enter your job title here\" formControlName=\"jobTitle\" />\r\n <small class=\"error\" *ngIf=\"workexperienceForm.get('jobTitle')?.touched &&\r\n workexperienceForm.get('jobTitle')?.hasError('required')\">\r\n Job title is required\r\n </small>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"field\">\r\n <div class=\"head\">Country</div>\r\n <ng-select formControlName=\"country\" [items]=\"countries\" bindLabel=\"country\" bindValue=\"countryCode2\"\r\n [clearable]=\"false\" placeholder=\"Select Country\" (change)=\"onCountryChange($event)\">\r\n <ng-template ng-option-tmp let-item=\"item\" let-item$=\"item$\" let-index=\"index\">\r\n <input class=\"form-check-input\" type=\"checkbox\" [checked]=\"item$.selected\" readonly />\r\n {{ item.country }}\r\n </ng-template>\r\n </ng-select>\r\n </div>\r\n <div class=\"field\">\r\n <div class=\"head\">State</div>\r\n <ng-select formControlName=\"state\" [items]=\"states\" bindLabel=\"stateName\" bindValue=\"stateCode\"\r\n placeholder=\"Select State\">\r\n <ng-template ng-option-tmp let-item=\"item\" let-item$=\"item$\">\r\n <input class=\"form-check-input\" type=\"checkbox\" [checked]=\"item$.selected\" />\r\n {{ item.stateName }}\r\n </ng-template>\r\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\r\n <span class=\"ng-value-label\">\r\n {{ item.stateName }}\r\n </span>\r\n <span class=\"ng-value-icon right\" (click)=\"clear(item)\">\r\n <img src=\"/assets/images/icons/close-sm-circle.svg\" class=\"close-btn-select\" />\r\n </span>\r\n </ng-template>\r\n </ng-select>\r\n </div>\r\n </div>\r\n <div class=\"row form-row\">\r\n <div class=\"field\">\r\n <div class=\"head\">City</div>\r\n <input type=\"text\" placeholder=\"Enter City here\" formControlName=\"city\" />\r\n <small class=\"error\" *ngIf=\"workexperienceForm.get('city')?.touched &&\r\n workexperienceForm.get('city')?.hasError('required')\">\r\n City is required\r\n </small>\r\n </div>\r\n <div class=\"field date\">\r\n <div class=\"mb-3 head\">\r\n <div class=\"head\">Start Date</div>\r\n <input class=\"form-control date-time-filter\" placeholder=\"Start date\" bsDatepicker [maxDate]=\"maxDate\"\r\n [bsConfig]=\"{ adaptivePosition: true, isAnimated: true, showWeekNumbers: false,\r\n customTodayClass: !workexperienceForm.get('fromDate')?.value ? 'today-highlight' : '' }\"\r\n formControlName=\"fromDate\" (bsValueChange)=\"onPreferredDateChange($event)\">\r\n <small class=\"error\" *ngIf=\"workexperienceForm.get('fromDate')?.touched &&\r\n workexperienceForm.get('fromDate')?.hasError('required')\">\r\n Start Date is required\r\n </small>\r\n </div>\r\n </div>\r\n <div class=\"field date\">\r\n <div class=\"mb-3 head\">\r\n <div class=\"head\">To Date</div>\r\n <input class=\"form-control date-time-filter\" placeholder=\"To date\" [maxDate]=\"maxDate\" bsDatepicker\r\n [bsConfig]=\"{ adaptivePosition: true,showWeekNumbers: false, isAnimated: true, \r\n customTodayClass: !workexperienceForm.get('toDate')?.value ? 'today-highlight' : '' }\"\r\n formControlName=\"toDate\" (bsValueChange)=\"onPreferredDateChange($event)\">\r\n <small class=\"error\" *ngIf=\"workexperienceForm.get('toDate')?.touched &&\r\n workexperienceForm.get('toDate')?.hasError('required')\">\r\n To Date is required\r\n </small>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"field full-width\">\r\n <div class=\"head\">Job Description or duties</div>\r\n <textarea placeholder=\"Description\" formControlName=\"jobDescription\">\r\n </textarea>\r\n </div>\r\n </div>\r\n </form>\r\n <div class=\"row\">\r\n <div class=\"upload-wrapper\">\r\n <p class=\"upload-title\">Upload</p>\r\n <p class=\"upload-subtitle\">Add documents below</p>\r\n <button type=\"button\" class=\"upload-btn\" (click)=\"fileInput.click()\">\r\n Upload Documents\r\n </button>\r\n <input #fileInput type=\"file\" accept=\".pdf,.doc,.docx\" (change)=\"selectFile($event)\" hidden />\r\n <p class=\"file-name\" *ngIf=\"fileName\">\r\n Selected: {{ fileName }}\r\n </p>\r\n </div>\r\n <div class=\"actions\">\r\n\r\n <button type=\"button\" class=\"secondary\" (click)=\"back()\">Back</button>\r\n <div class=\"right-actions\">\r\n <button type=\"button\" class=\"secondary\" (click)=\"nextStep()\">\r\n Skip\r\n </button>\r\n <button type=\"button\" class=\"primary\" [disabled]=\"proposalLoader\" [ng2-loading]=\"proposalLoader\"\r\n (click)=\"saveFile()\">\r\n Continue\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n</div>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n<div class=\"work-preview\" *ngIf=\"showpreview()\">\r\n <div class=\"preview-header\">\r\n <h3>Work Experiences Preview</h3>\r\n </div>\r\n <div class=\"accordion\">\r\n\r\n <div *ngFor=\"let exp of workStore.experiences(); let i = index\" style=\"margin-bottom: 20px;\"\r\n class=\"accordion-item border-0\">\r\n\r\n <!-- HEADER (preview) -->\r\n <h2 class=\"accordion-header\">\r\n <button class=\"accordion-button collapsed\" type=\"button\" data-bs-toggle=\"collapse\"\r\n [attr.data-bs-target]=\"'#edu_' + i\">\r\n\r\n <!-- LEFT : TITLE -->\r\n <span class=\"accordion-title\">\r\n {{ exp.companyName }}\r\n </span>\r\n\r\n <!-- RIGHT : EDIT ICON -->\r\n <span class=\"accordion-actions\">\r\n <img src=\"/assets/images/icons/edit-text.png\" class=\"edit-icon icon-color\"\r\n (click)=\"edit(i); $event.stopPropagation()\" alt=\"Edit\" />\r\n </span>\r\n\r\n </button>\r\n </h2>\r\n\r\n\r\n <!-- BODY -->\r\n <div [id]=\"'edu_' + i\" class=\"accordion-collapse collapse\" style=\"margin-bottom: 20px;\">\r\n <div class=\"accordion-body\">\r\n\r\n <!-- GRID DATA (2 or 3 columns) -->\r\n <div class=\"detail-grid\">\r\n <div>\r\n <strong>Company Name</strong><br />\r\n <span class=\"job-title\">{{ exp.companyName }}</span>\r\n </div>\r\n <div>\r\n <strong>Job Title</strong><br />\r\n <span class=\"job-title\">{{ exp.jobTitle }}</span>\r\n </div>\r\n <div>\r\n <strong>From Date</strong><br />\r\n <span class=\"job-title\">{{ exp.fromDate | date:'MM/dd/yyyy' }}</span>\r\n </div>\r\n <div>\r\n <strong>To Date</strong><br />\r\n <span class=\"job-title\">{{ exp.toDate | date:'MM/dd/yyyy' }}</span>\r\n </div>\r\n\r\n <div>\r\n <strong>Country</strong><br />\r\n <span class=\"job-title\">{{ exp.country }}</span>\r\n </div>\r\n <div>\r\n <strong>State</strong><br />\r\n <span class=\"job-title\">{{ exp.state | stateName }}</span>\r\n </div>\r\n\r\n <div>\r\n <strong>City</strong><br />\r\n <span class=\"job-title\">{{ exp.city }}</span>\r\n </div>\r\n\r\n\r\n <div *ngIf=\"exp.fileUrl\" class=\"full-width\">\r\n <strong>Document</strong><br />\r\n <a [href]=\"cloudfrontUrl+exp.fileUrl\" target=\"_blank\">\r\n <span class=\"job-title\"> {{ exp.fileName }}</span>\r\n </a>\r\n </div>\r\n </div>\r\n <div class=\"full-width mt-3\">\r\n <strong>Job Description</strong><br />\r\n <span class=\"job-title\"> {{ exp.jobDescription }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"action\">\r\n <button type=\"button\" class=\"secondary\" (click)=\"back()\">Back</button>\r\n <div class=\"right-actions\">\r\n <button type=\"button\" class=\"primary add-btn\" (click)=\"add()\" style=\"background-color: #1f4d5f;\">\r\n Add More Experiences\r\n </button>\r\n <button type=\"button\" class=\"primary\" (click)=\"nextStep()\">\r\n Continue\r\n </button>\r\n </div>\r\n </div>\r\n</div>", styles: [".education-container{max-width:1000px;margin:0 auto;padding:24px 16px;min-height:300px}h3{font-size:18px;font-weight:600;margin-bottom:4px}.hint{font-size:14px;color:#6b7280;margin-bottom:24px}.row{display:flex;margin-bottom:16px}.field{flex:1;display:flex;flex-direction:column}.field.full-width{flex:1 1 100%}input,select,textarea{padding:10px 12px;border:2px solid #d1d5db;border-radius:4px;font-size:13px;outline:none;box-sizing:border-box}::ng-deep .ng-select.ng-select-single .ng-select-container{height:45px}::ng-deep .ng-select.ng-select-single .ng-select-container .ng-value-container .ng-placeholder{top:10px}textarea{height:90px;resize:none}.error{margin-top:4px;font-size:12px;color:#dc2626}.actions{display:flex;justify-content:space-between;margin:50px 0 20px}.action{display:flex;justify-content:space-between;margin:50px 100px 20px}button{height:44px;min-width:120px;border-radius:4px;border:none;font-size:14px;cursor:pointer}button.primary{background-color:#4077ad;color:#fff}button.secondary{background-color:#f3f4f6;color:#374151}button:disabled{background-color:#9ca3af;cursor:not-allowed}.head{color:#6b7280;font-size:14px;margin-bottom:5px;font-weight:500}::ng-deep .today-highlight{color:#fff!important;background:#1e2541!important}.form-row{display:flex}.field{display:flex;flex-direction:column}.field.city{flex:0 0 50%}.field.date{flex:0 0 25%}::ng-deep .ng-select .ng-select-container .ng-value-container .ng-placeholder{color:#757575;font-size:14px}.close-btn-select{width:16px;height:16px;color:#00f;display:inline-block}.upload-wrapper{margin-top:37px}.upload-title{font-weight:600;margin-bottom:4px}.upload-subtitle{font-size:13px;color:#6c757d;margin-bottom:12px}.upload-btn{background-color:#1f4d5f;color:#fff;border:none;padding:10px 18px;border-radius:6px;font-size:14px;cursor:pointer}.upload-btn:hover{background-color:#173b4a}.file-name{margin-top:8px;font-size:13px;color:#495057}.right-actions{display:flex;gap:16px}.date-time-filter{padding-right:40px;background-image:url(/assets/images/icons/calendar.svg);background-repeat:no-repeat;background-position:right 12px center;background-size:18px 18px;cursor:pointer}.work-preview{max-width:1000px;padding:20px;margin:15px auto;background-color:#f4f6f8;font-family:Segoe UI,Arial,sans-serif}.preview-card{position:relative;background-color:#fff;border-radius:8px;box-shadow:0 3px 8px #0000001a;padding:20px 25px;margin-bottom:20px;margin-top:25px;transition:box-shadow .2s ease}.preview-card:hover{box-shadow:0 6px 15px #00000026}.edit-btn{position:absolute;top:15px;right:15px;width:20px;height:20px;cursor:pointer}.card-top h4{margin:0;font-size:18px;color:#1f4d5f}.card-top .job-title{display:block;font-size:14px;color:#555;margin-top:2px}.card-meta{margin:10px 0;font-size:13px;color:#777;display:flex;justify-content:space-between}.card-meta .dates{font-style:italic}.job-description{font-size:14px;color:#333;line-height:1.5;margin-bottom:8px}.file-link{font-size:13px;color:#4077ad;text-decoration:underline;display:inline-block;margin-top:5px}.actions{display:flex;justify-content:space-between}button.secondary{background-color:#e0e0e0;color:#6c757dc7;padding:8px 20px;border:none;border-radius:6px;cursor:pointer}button.primary{background-color:#4077ad;color:#fff;padding:8px 20px;border:none;border-radius:6px;cursor:pointer}@media (max-width: 600px){.preview-card{padding:15px}.edit-btn{top:10px;right:10px;width:18px;height:18px}.card-meta{flex-direction:column;gap:3px}}::ng-deep ng-dropdown-panel input[type=checkbox]{margin-right:0!important;padding:9px;margin-top:0}.form-check-input:checked{color:#fff!important;border-color:#2980b9!important;background-color:#2980b9!important}::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-option{font-size:14px}::ng-deep .ng-value-label{font-size:14px}::ng-deep .bs-datepicker-head{background-color:#1e2541!important}::ng-deep .theme-green .bs-datepicker-body table td span.selected,.theme-green .bs-datepicker-body table td.selected span,.theme-green .bs-datepicker-body table td span[class*=select-]:after,.theme-green .bs-datepicker-body table td[class*=select-] span:after{background-color:#1e2541!important}.icon-color{cursor:pointer;width:20px;height:20px;transition:transform .3s ease;filter:brightness(0) saturate(100%) invert(48%) sepia(8%) saturate(350%) hue-rotate(170deg) brightness(92%) contrast(88%)}.icon-color.edit{width:18px;height:18px}.detail-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.accordion-button{display:flex;align-items:center}.accordion-title{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.accordion-actions{display:flex;align-items:center;margin-right:12px}.edit-icon{cursor:pointer}::ng-deep .accordion-item:first-of-type>.accordion-header .accordion-button{margin-bottom:20px}.job-title{color:#6c757d;font-weight:400;font-size:14px}.preview-header{margin-left:380px}.accordion{margin:20px 100px}.add-btn{width:200px}@media screen and (max-width: 767px){.preview-header{margin-left:0}.accordion{margin:20px 0}.actions,.action{flex-direction:column-reverse;gap:5px}.action{margin:50px 0 20px}.right-actions{justify-content:space-between;gap:5px;display:flex;flex-direction:column-reverse}.form-row{gap:14px;flex-direction:column}.pointer{display:none}.add-btn{width:unset}}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i10.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "directive", type: i10.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }, { kind: "directive", type: i10.NgLabelTemplateDirective, selector: "[ng-label-tmp]" }, { kind: "directive", type: i11.BsDatepickerDirective, selector: "[bsDatepicker]", inputs: ["placement", "triggers", "outsideClick", "container", "outsideEsc", "isDisabled", "minDate", "maxDate", "ignoreMinMaxErrors", "minMode", "daysDisabled", "datesDisabled", "datesEnabled", "dateCustomClasses", "dateTooltipTexts", "isOpen", "bsValue", "bsConfig"], outputs: ["onShown", "onHidden", "bsValueChange"], exportAs: ["bsDatepicker"] }, { kind: "directive", type: i11.BsDatepickerInputDirective, selector: "input[bsDatepicker]" }, { kind: "directive", type: Ng2LoadingSpinnerDirective, selector: "[ng2-loading]", inputs: ["ng2-loading", "config", "template"] }, { kind: "pipe", type: i1$1.DatePipe, name: "date" }, { kind: "pipe", type: StateNamePipe, name: "stateName" }] });
|
|
28753
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: WorkexperienceComponent, deps: [{ token: UserExperienceService }, { token: UserService }, { token: WorkExperienceStore }, { token: CredentialingStore }, { token: CountryServices }, { token: PostalCodeServices }, { token: i6.TokenService }, { token: i8.FormBuilder }, { token: FileService }, { token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Component });
|
|
28754
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: WorkexperienceComponent, isStandalone: false, selector: "app-workexperience", inputs: { providerId: "providerId", providerName: "providerName", cloudfrontUrl: "cloudfrontUrl" }, ngImport: i0, template: "<div *ngIf=\"!showpreview()\">\r\n <div class=\"education-container\">\r\n <h3>Add Work Experience</h3>\r\n <p class=\"hint\">\r\n Add your prior and current work history below\r\n </p>\r\n <form [formGroup]=\"workexperienceForm\">\r\n <div class=\"row\">\r\n <div class=\"field\">\r\n <div class=\"head\">Company Name</div>\r\n <input type=\"text\" placeholder=\"Enter your company name here\" formControlName=\"companyName\" />\r\n <small class=\"error\" *ngIf=\"workexperienceForm.get('companyName')?.touched &&\r\n workexperienceForm.get('companyName')?.hasError('required')\">\r\n Company name is required\r\n </small>\r\n </div>\r\n\r\n <div class=\"field\">\r\n <div class=\"head\">Job Title</div>\r\n <input type=\"text\" placeholder=\"Enter your job title here\" formControlName=\"jobTitle\" />\r\n <small class=\"error\" *ngIf=\"workexperienceForm.get('jobTitle')?.touched &&\r\n workexperienceForm.get('jobTitle')?.hasError('required')\">\r\n Job title is required\r\n </small>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"field\">\r\n <div class=\"head\">Country</div>\r\n <ng-select formControlName=\"country\" [items]=\"countries\" bindLabel=\"country\" bindValue=\"countryCode2\"\r\n [clearable]=\"false\" placeholder=\"Select Country\" (change)=\"onCountryChange($event)\">\r\n <ng-template ng-option-tmp let-item=\"item\" let-item$=\"item$\" let-index=\"index\">\r\n <input class=\"form-check-input\" type=\"checkbox\" [checked]=\"item$.selected\" readonly />\r\n {{ item.country }}\r\n </ng-template>\r\n </ng-select>\r\n </div>\r\n <div class=\"field\">\r\n <div class=\"head\">State</div>\r\n <ng-select formControlName=\"state\" [items]=\"states\" bindLabel=\"stateName\" bindValue=\"stateCode\"\r\n placeholder=\"Select State\">\r\n <ng-template ng-option-tmp let-item=\"item\" let-item$=\"item$\">\r\n <input class=\"form-check-input\" type=\"checkbox\" [checked]=\"item$.selected\" />\r\n {{ item.stateName }}\r\n </ng-template>\r\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\r\n <span class=\"ng-value-label\">\r\n {{ item.stateName }}\r\n </span>\r\n <span class=\"ng-value-icon right\" (click)=\"clear(item)\">\r\n <img src=\"/assets/images/icons/close-sm-circle.svg\" class=\"close-btn-select\" />\r\n </span>\r\n </ng-template>\r\n </ng-select>\r\n </div>\r\n </div>\r\n <div class=\"row form-row\">\r\n <div class=\"field\">\r\n <div class=\"head\">City</div>\r\n <input type=\"text\" placeholder=\"Enter City here\" formControlName=\"city\" />\r\n <small class=\"error\" *ngIf=\"workexperienceForm.get('city')?.touched &&\r\n workexperienceForm.get('city')?.hasError('required')\">\r\n City is required\r\n </small>\r\n </div>\r\n <div class=\"field date\">\r\n <div class=\"mb-3 head\">\r\n <div class=\"head\">Start Date</div>\r\n <input class=\"form-control date-time-filter\" placeholder=\"Start date\" bsDatepicker [maxDate]=\"maxDate\"\r\n [bsConfig]=\"{ adaptivePosition: true, isAnimated: true, showWeekNumbers: false,\r\n customTodayClass: !workexperienceForm.get('fromDate')?.value ? 'today-highlight' : '' }\"\r\n formControlName=\"fromDate\" (bsValueChange)=\"onPreferredDateChange($event)\">\r\n <small class=\"error\" *ngIf=\"workexperienceForm.get('fromDate')?.touched &&\r\n workexperienceForm.get('fromDate')?.hasError('required')\">\r\n Start Date is required\r\n </small>\r\n </div>\r\n </div>\r\n <div class=\"field date\">\r\n <div class=\"mb-3 head\">\r\n <div class=\"head\">To Date</div>\r\n <input class=\"form-control date-time-filter\" placeholder=\"To date\" [maxDate]=\"maxDate\" bsDatepicker\r\n [bsConfig]=\"{ adaptivePosition: true,showWeekNumbers: false, isAnimated: true, \r\n customTodayClass: !workexperienceForm.get('toDate')?.value ? 'today-highlight' : '' }\"\r\n formControlName=\"toDate\" (bsValueChange)=\"onPreferredDateChange($event)\">\r\n <small class=\"error\" *ngIf=\"workexperienceForm.get('toDate')?.touched &&\r\n workexperienceForm.get('toDate')?.hasError('required')\">\r\n To Date is required\r\n </small>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"field full-width\">\r\n <div class=\"head\">Job Description or duties</div>\r\n <textarea placeholder=\"Description\" formControlName=\"jobDescription\">\r\n </textarea>\r\n </div>\r\n </div>\r\n </form>\r\n <div class=\"row\">\r\n <div class=\"upload-wrapper\">\r\n <p class=\"upload-title\">Upload</p>\r\n <p class=\"upload-subtitle\">Add documents below</p>\r\n <button type=\"button\" class=\"upload-btn\" (click)=\"fileInput.click()\">\r\n Upload Documents\r\n </button>\r\n <input #fileInput type=\"file\" accept=\".pdf,.doc,.docx\" (change)=\"selectFile($event)\" hidden />\r\n <p class=\"file-name\" *ngIf=\"fileName\">\r\n Selected: {{ fileName }}\r\n <span class=\"remove-file\" (click)=\"removeFile()\">\u2716</span>\r\n </p>\r\n </div>\r\n <div class=\"actions\">\r\n\r\n <button type=\"button\" class=\"secondary\" (click)=\"back()\">Back</button>\r\n <div class=\"right-actions\">\r\n <button type=\"button\" class=\"secondary\" (click)=\"nextStep()\">\r\n Skip\r\n </button>\r\n <button type=\"button\" class=\"primary\" [disabled]=\"proposalLoader\" [ng2-loading]=\"proposalLoader\"\r\n (click)=\"saveFile()\">\r\n Continue\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n</div>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n<div class=\"work-preview\" *ngIf=\"showpreview()\">\r\n <div class=\"preview-header\">\r\n <h3>Work Experiences Preview</h3>\r\n </div>\r\n <div class=\"accordion\">\r\n\r\n <div *ngFor=\"let exp of workStore.experiences(); let i = index\" style=\"margin-bottom: 20px;\"\r\n class=\"accordion-item border-0\">\r\n\r\n <!-- HEADER (preview) -->\r\n <h2 class=\"accordion-header\">\r\n <button class=\"accordion-button\" \r\n type=\"button\" \r\n data-bs-toggle=\"collapse\"\r\n [attr.data-bs-target]=\"'#edu_' + i\"\r\n aria-expanded=\"true\">\r\n\r\n <!-- LEFT : TITLE -->\r\n <span class=\"accordion-title\">\r\n {{ exp.companyName }}\r\n </span>\r\n\r\n <!-- RIGHT : EDIT ICON -->\r\n <span class=\"accordion-actions\">\r\n <img src=\"/assets/images/icons/edit-text.png\" class=\"edit-icon icon-color\"\r\n (click)=\"edit(i); $event.stopPropagation()\" alt=\"Edit\" />\r\n </span>\r\n\r\n </button>\r\n </h2>\r\n\r\n\r\n <!-- BODY -->\r\n <div [id]=\"'edu_' + i\" \r\n class=\"accordion-collapse collapse show\"\r\n style=\"margin-bottom: 20px;\">\r\n <div class=\"accordion-body\">\r\n\r\n <!-- GRID DATA (2 or 3 columns) -->\r\n <div class=\"detail-grid\">\r\n <div>\r\n <strong>Company Name</strong><br />\r\n <span class=\"job-title\">{{ exp.companyName }}</span>\r\n </div>\r\n <div>\r\n <strong>Job Title</strong><br />\r\n <span class=\"job-title\">{{ exp.jobTitle }}</span>\r\n </div>\r\n <div>\r\n <strong>From Date</strong><br />\r\n <span class=\"job-title\">{{ exp.fromDate | date:'MM/dd/yyyy' }}</span>\r\n </div>\r\n <div>\r\n <strong>To Date</strong><br />\r\n <span class=\"job-title\">{{ exp.toDate | date:'MM/dd/yyyy' }}</span>\r\n </div>\r\n\r\n <div>\r\n <strong>Country</strong><br />\r\n <span class=\"job-title\">{{ exp.country }}</span>\r\n </div>\r\n <div>\r\n <strong>State</strong><br />\r\n <span class=\"job-title\">{{ exp.state | stateName }}</span>\r\n </div>\r\n\r\n <div>\r\n <strong>City</strong><br />\r\n <span class=\"job-title\">{{ exp.city }}</span>\r\n </div>\r\n\r\n\r\n <div *ngIf=\"exp.fileUrl\" class=\"full-width\">\r\n <strong>Document</strong><br />\r\n <a [href]=\"cloudfrontUrl+exp.fileUrl\" target=\"_blank\">\r\n <span class=\"job-title\"> {{ exp.fileName }}</span>\r\n </a>\r\n </div>\r\n </div>\r\n <div class=\"full-width mt-3\">\r\n <strong>Job Description</strong><br />\r\n <span class=\"job-title\"> {{ exp.jobDescription }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"action\">\r\n <button type=\"button\" class=\"secondary\" (click)=\"back()\">Back</button>\r\n <div class=\"right-actions\">\r\n <button type=\"button\" class=\"primary add-btn\" (click)=\"add()\" style=\"background-color: #1f4d5f;\">\r\n Add More Experiences\r\n </button>\r\n <button type=\"button\" class=\"primary\" (click)=\"nextStep()\">\r\n Continue\r\n </button>\r\n </div>\r\n </div>\r\n</div>", styles: [".education-container{max-width:1000px;margin:0 auto;padding:24px 16px;min-height:300px}h3{font-size:18px;font-weight:600;margin-bottom:4px}.hint{font-size:14px;color:#6b7280;margin-bottom:24px}.row{display:flex;margin-bottom:16px}.field{flex:1;display:flex;flex-direction:column}.field.full-width{flex:1 1 100%}input,select,textarea{padding:10px 12px;border:2px solid #d1d5db;border-radius:4px;font-size:13px;outline:none;box-sizing:border-box}::ng-deep .ng-select.ng-select-single .ng-select-container{height:45px}::ng-deep .ng-select.ng-select-single .ng-select-container .ng-value-container .ng-placeholder{top:10px}textarea{height:90px;resize:none}.error{margin-top:4px;font-size:12px;color:#dc2626}.actions{display:flex;justify-content:space-between;margin:50px 0 20px}.action{display:flex;justify-content:space-between;margin:50px 100px 20px}button{height:44px;min-width:120px;border-radius:4px;border:none;font-size:14px;cursor:pointer}button.primary{background-color:#4077ad;color:#fff}button.secondary{background-color:#f3f4f6;color:#374151}button:disabled{background-color:#9ca3af;cursor:not-allowed}.head{color:#6b7280;font-size:14px;margin-bottom:5px;font-weight:500}::ng-deep .today-highlight{color:#fff!important;background:#1e2541!important}.form-row{display:flex}.field{display:flex;flex-direction:column}.field.city{flex:0 0 50%}.field.date{flex:0 0 25%}::ng-deep .ng-select .ng-select-container .ng-value-container .ng-placeholder{color:#757575;font-size:14px}.close-btn-select{width:16px;height:16px;color:#00f;display:inline-block}.upload-wrapper{margin-top:37px}.upload-title{font-weight:600;margin-bottom:4px}.upload-subtitle{font-size:13px;color:#6c757d;margin-bottom:12px}.upload-btn{background-color:#1f4d5f;color:#fff;border:none;padding:10px 18px;border-radius:6px;font-size:14px;cursor:pointer}.upload-btn:hover{background-color:#173b4a}.file-name{margin-top:8px;font-size:13px;color:#495057}.right-actions{display:flex;gap:16px}.date-time-filter{padding-right:40px;background-image:url(/assets/images/icons/calendar.svg);background-repeat:no-repeat;background-position:right 12px center;background-size:18px 18px;cursor:pointer}.work-preview{max-width:1000px;padding:20px;margin:15px auto;background-color:#f4f6f8;font-family:Segoe UI,Arial,sans-serif}.preview-card{position:relative;background-color:#fff;border-radius:8px;box-shadow:0 3px 8px #0000001a;padding:20px 25px;margin-bottom:20px;margin-top:25px;transition:box-shadow .2s ease}.preview-card:hover{box-shadow:0 6px 15px #00000026}.edit-btn{position:absolute;top:15px;right:15px;width:20px;height:20px;cursor:pointer}.card-top h4{margin:0;font-size:18px;color:#1f4d5f}.card-top .job-title{display:block;font-size:14px;color:#555;margin-top:2px}.card-meta{margin:10px 0;font-size:13px;color:#777;display:flex;justify-content:space-between}.card-meta .dates{font-style:italic}.job-description{font-size:14px;color:#333;line-height:1.5;margin-bottom:8px}.file-link{font-size:13px;color:#4077ad;text-decoration:underline;display:inline-block;margin-top:5px}.actions{display:flex;justify-content:space-between}button.secondary{background-color:#e0e0e0;color:#6c757dc7;padding:8px 20px;border:none;border-radius:6px;cursor:pointer}button.primary{background-color:#4077ad;color:#fff;padding:8px 20px;border:none;border-radius:6px;cursor:pointer}@media (max-width: 600px){.preview-card{padding:15px}.edit-btn{top:10px;right:10px;width:18px;height:18px}.card-meta{flex-direction:column;gap:3px}}::ng-deep ng-dropdown-panel input[type=checkbox]{margin-right:0!important;padding:9px;margin-top:0}.form-check-input:checked{color:#fff!important;border-color:#2980b9!important;background-color:#2980b9!important}::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-option{font-size:14px}::ng-deep .ng-value-label{font-size:14px}::ng-deep .bs-datepicker-head{background-color:#1e2541!important}::ng-deep .theme-green .bs-datepicker-body table td span.selected,.theme-green .bs-datepicker-body table td.selected span,.theme-green .bs-datepicker-body table td span[class*=select-]:after,.theme-green .bs-datepicker-body table td[class*=select-] span:after{background-color:#1e2541!important}.icon-color{cursor:pointer;width:20px;height:20px;transition:transform .3s ease;filter:brightness(0) saturate(100%) invert(48%) sepia(8%) saturate(350%) hue-rotate(170deg) brightness(92%) contrast(88%)}.icon-color.edit{width:18px;height:18px}.detail-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.accordion-button{display:flex;align-items:center}.accordion-title{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.accordion-actions{display:flex;align-items:center;margin-right:12px}.edit-icon{cursor:pointer}::ng-deep .accordion-item:first-of-type>.accordion-header .accordion-button{margin-bottom:20px}.job-title{color:#6c757d;font-weight:400;font-size:14px}.preview-header{margin-left:380px}.accordion{margin:20px 100px}.add-btn{width:200px}@media screen and (max-width: 767px){.preview-header{margin-left:0}.accordion{margin:20px 0}.actions,.action{flex-direction:column-reverse;gap:5px}.action{margin:50px 0 20px}.right-actions{justify-content:space-between;gap:5px;display:flex;flex-direction:column-reverse}.form-row{gap:14px;flex-direction:column}.pointer{display:none}.add-btn{width:unset}}.remove-file{margin-left:10px;cursor:pointer;color:red;font-weight:700}\n"], dependencies: [{ kind: "directive", type: i11.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i8.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i8.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: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i8.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i8.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i12.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "directive", type: i12.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }, { kind: "directive", type: i12.NgLabelTemplateDirective, selector: "[ng-label-tmp]" }, { kind: "directive", type: i12$1.BsDatepickerDirective, selector: "[bsDatepicker]", inputs: ["placement", "triggers", "outsideClick", "container", "outsideEsc", "isDisabled", "minDate", "maxDate", "ignoreMinMaxErrors", "minMode", "daysDisabled", "datesDisabled", "datesEnabled", "dateCustomClasses", "dateTooltipTexts", "isOpen", "bsValue", "bsConfig"], outputs: ["onShown", "onHidden", "bsValueChange"], exportAs: ["bsDatepicker"] }, { kind: "directive", type: i12$1.BsDatepickerInputDirective, selector: "input[bsDatepicker]" }, { kind: "directive", type: Ng2LoadingSpinnerDirective, selector: "[ng2-loading]", inputs: ["ng2-loading", "config", "template"] }, { kind: "pipe", type: i11.DatePipe, name: "date" }, { kind: "pipe", type: StateNamePipe, name: "stateName" }] });
|
|
28510
28755
|
}
|
|
28511
28756
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: WorkexperienceComponent, decorators: [{
|
|
28512
28757
|
type: Component,
|
|
28513
|
-
args: [{ selector: 'app-workexperience', standalone: false, template: "<div *ngIf=\"!showpreview()\">\r\n <div class=\"education-container\">\r\n <h3>Add Work Experience</h3>\r\n <p class=\"hint\">\r\n Add your prior and current work history below\r\n </p>\r\n <form [formGroup]=\"workexperienceForm\">\r\n <div class=\"row\">\r\n <div class=\"field\">\r\n <div class=\"head\">Company Name</div>\r\n <input type=\"text\" placeholder=\"Enter your company name here\" formControlName=\"companyName\" />\r\n <small class=\"error\" *ngIf=\"workexperienceForm.get('companyName')?.touched &&\r\n workexperienceForm.get('companyName')?.hasError('required')\">\r\n Company name is required\r\n </small>\r\n </div>\r\n\r\n <div class=\"field\">\r\n <div class=\"head\">Job Title</div>\r\n <input type=\"text\" placeholder=\"Enter your job title here\" formControlName=\"jobTitle\" />\r\n <small class=\"error\" *ngIf=\"workexperienceForm.get('jobTitle')?.touched &&\r\n workexperienceForm.get('jobTitle')?.hasError('required')\">\r\n Job title is required\r\n </small>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"field\">\r\n <div class=\"head\">Country</div>\r\n <ng-select formControlName=\"country\" [items]=\"countries\" bindLabel=\"country\" bindValue=\"countryCode2\"\r\n [clearable]=\"false\" placeholder=\"Select Country\" (change)=\"onCountryChange($event)\">\r\n <ng-template ng-option-tmp let-item=\"item\" let-item$=\"item$\" let-index=\"index\">\r\n <input class=\"form-check-input\" type=\"checkbox\" [checked]=\"item$.selected\" readonly />\r\n {{ item.country }}\r\n </ng-template>\r\n </ng-select>\r\n </div>\r\n <div class=\"field\">\r\n <div class=\"head\">State</div>\r\n <ng-select formControlName=\"state\" [items]=\"states\" bindLabel=\"stateName\" bindValue=\"stateCode\"\r\n placeholder=\"Select State\">\r\n <ng-template ng-option-tmp let-item=\"item\" let-item$=\"item$\">\r\n <input class=\"form-check-input\" type=\"checkbox\" [checked]=\"item$.selected\" />\r\n {{ item.stateName }}\r\n </ng-template>\r\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\r\n <span class=\"ng-value-label\">\r\n {{ item.stateName }}\r\n </span>\r\n <span class=\"ng-value-icon right\" (click)=\"clear(item)\">\r\n <img src=\"/assets/images/icons/close-sm-circle.svg\" class=\"close-btn-select\" />\r\n </span>\r\n </ng-template>\r\n </ng-select>\r\n </div>\r\n </div>\r\n <div class=\"row form-row\">\r\n <div class=\"field\">\r\n <div class=\"head\">City</div>\r\n <input type=\"text\" placeholder=\"Enter City here\" formControlName=\"city\" />\r\n <small class=\"error\" *ngIf=\"workexperienceForm.get('city')?.touched &&\r\n workexperienceForm.get('city')?.hasError('required')\">\r\n City is required\r\n </small>\r\n </div>\r\n <div class=\"field date\">\r\n <div class=\"mb-3 head\">\r\n <div class=\"head\">Start Date</div>\r\n <input class=\"form-control date-time-filter\" placeholder=\"Start date\" bsDatepicker [maxDate]=\"maxDate\"\r\n [bsConfig]=\"{ adaptivePosition: true, isAnimated: true, showWeekNumbers: false,\r\n customTodayClass: !workexperienceForm.get('fromDate')?.value ? 'today-highlight' : '' }\"\r\n formControlName=\"fromDate\" (bsValueChange)=\"onPreferredDateChange($event)\">\r\n <small class=\"error\" *ngIf=\"workexperienceForm.get('fromDate')?.touched &&\r\n workexperienceForm.get('fromDate')?.hasError('required')\">\r\n Start Date is required\r\n </small>\r\n </div>\r\n </div>\r\n <div class=\"field date\">\r\n <div class=\"mb-3 head\">\r\n <div class=\"head\">To Date</div>\r\n <input class=\"form-control date-time-filter\" placeholder=\"To date\" [maxDate]=\"maxDate\" bsDatepicker\r\n [bsConfig]=\"{ adaptivePosition: true,showWeekNumbers: false, isAnimated: true, \r\n customTodayClass: !workexperienceForm.get('toDate')?.value ? 'today-highlight' : '' }\"\r\n formControlName=\"toDate\" (bsValueChange)=\"onPreferredDateChange($event)\">\r\n <small class=\"error\" *ngIf=\"workexperienceForm.get('toDate')?.touched &&\r\n workexperienceForm.get('toDate')?.hasError('required')\">\r\n To Date is required\r\n </small>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"field full-width\">\r\n <div class=\"head\">Job Description or duties</div>\r\n <textarea placeholder=\"Description\" formControlName=\"jobDescription\">\r\n </textarea>\r\n </div>\r\n </div>\r\n </form>\r\n <div class=\"row\">\r\n <div class=\"upload-wrapper\">\r\n <p class=\"upload-title\">Upload</p>\r\n <p class=\"upload-subtitle\">Add documents below</p>\r\n <button type=\"button\" class=\"upload-btn\" (click)=\"fileInput.click()\">\r\n Upload Documents\r\n </button>\r\n <input #fileInput type=\"file\" accept=\".pdf,.doc,.docx\" (change)=\"selectFile($event)\" hidden />\r\n <p class=\"file-name\" *ngIf=\"fileName\">\r\n Selected: {{ fileName }}\r\n </p>\r\n </div>\r\n <div class=\"actions\">\r\n\r\n <button type=\"button\" class=\"secondary\" (click)=\"back()\">Back</button>\r\n <div class=\"right-actions\">\r\n <button type=\"button\" class=\"secondary\" (click)=\"nextStep()\">\r\n Skip\r\n </button>\r\n <button type=\"button\" class=\"primary\" [disabled]=\"proposalLoader\" [ng2-loading]=\"proposalLoader\"\r\n (click)=\"saveFile()\">\r\n Continue\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n</div>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n<div class=\"work-preview\" *ngIf=\"showpreview()\">\r\n <div class=\"preview-header\">\r\n <h3>Work Experiences Preview</h3>\r\n </div>\r\n <div class=\"accordion\">\r\n\r\n <div *ngFor=\"let exp of workStore.experiences(); let i = index\" style=\"margin-bottom: 20px;\"\r\n class=\"accordion-item border-0\">\r\n\r\n <!-- HEADER (preview) -->\r\n <h2 class=\"accordion-header\">\r\n <button class=\"accordion-button collapsed\" type=\"button\" data-bs-toggle=\"collapse\"\r\n [attr.data-bs-target]=\"'#edu_' + i\">\r\n\r\n <!-- LEFT : TITLE -->\r\n <span class=\"accordion-title\">\r\n {{ exp.companyName }}\r\n </span>\r\n\r\n <!-- RIGHT : EDIT ICON -->\r\n <span class=\"accordion-actions\">\r\n <img src=\"/assets/images/icons/edit-text.png\" class=\"edit-icon icon-color\"\r\n (click)=\"edit(i); $event.stopPropagation()\" alt=\"Edit\" />\r\n </span>\r\n\r\n </button>\r\n </h2>\r\n\r\n\r\n <!-- BODY -->\r\n <div [id]=\"'edu_' + i\" class=\"accordion-collapse collapse\" style=\"margin-bottom: 20px;\">\r\n <div class=\"accordion-body\">\r\n\r\n <!-- GRID DATA (2 or 3 columns) -->\r\n <div class=\"detail-grid\">\r\n <div>\r\n <strong>Company Name</strong><br />\r\n <span class=\"job-title\">{{ exp.companyName }}</span>\r\n </div>\r\n <div>\r\n <strong>Job Title</strong><br />\r\n <span class=\"job-title\">{{ exp.jobTitle }}</span>\r\n </div>\r\n <div>\r\n <strong>From Date</strong><br />\r\n <span class=\"job-title\">{{ exp.fromDate | date:'MM/dd/yyyy' }}</span>\r\n </div>\r\n <div>\r\n <strong>To Date</strong><br />\r\n <span class=\"job-title\">{{ exp.toDate | date:'MM/dd/yyyy' }}</span>\r\n </div>\r\n\r\n <div>\r\n <strong>Country</strong><br />\r\n <span class=\"job-title\">{{ exp.country }}</span>\r\n </div>\r\n <div>\r\n <strong>State</strong><br />\r\n <span class=\"job-title\">{{ exp.state | stateName }}</span>\r\n </div>\r\n\r\n <div>\r\n <strong>City</strong><br />\r\n <span class=\"job-title\">{{ exp.city }}</span>\r\n </div>\r\n\r\n\r\n <div *ngIf=\"exp.fileUrl\" class=\"full-width\">\r\n <strong>Document</strong><br />\r\n <a [href]=\"cloudfrontUrl+exp.fileUrl\" target=\"_blank\">\r\n <span class=\"job-title\"> {{ exp.fileName }}</span>\r\n </a>\r\n </div>\r\n </div>\r\n <div class=\"full-width mt-3\">\r\n <strong>Job Description</strong><br />\r\n <span class=\"job-title\"> {{ exp.jobDescription }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"action\">\r\n <button type=\"button\" class=\"secondary\" (click)=\"back()\">Back</button>\r\n <div class=\"right-actions\">\r\n <button type=\"button\" class=\"primary add-btn\" (click)=\"add()\" style=\"background-color: #1f4d5f;\">\r\n Add More Experiences\r\n </button>\r\n <button type=\"button\" class=\"primary\" (click)=\"nextStep()\">\r\n Continue\r\n </button>\r\n </div>\r\n </div>\r\n</div>", styles: [".education-container{max-width:1000px;margin:0 auto;padding:24px 16px;min-height:300px}h3{font-size:18px;font-weight:600;margin-bottom:4px}.hint{font-size:14px;color:#6b7280;margin-bottom:24px}.row{display:flex;margin-bottom:16px}.field{flex:1;display:flex;flex-direction:column}.field.full-width{flex:1 1 100%}input,select,textarea{padding:10px 12px;border:2px solid #d1d5db;border-radius:4px;font-size:13px;outline:none;box-sizing:border-box}::ng-deep .ng-select.ng-select-single .ng-select-container{height:45px}::ng-deep .ng-select.ng-select-single .ng-select-container .ng-value-container .ng-placeholder{top:10px}textarea{height:90px;resize:none}.error{margin-top:4px;font-size:12px;color:#dc2626}.actions{display:flex;justify-content:space-between;margin:50px 0 20px}.action{display:flex;justify-content:space-between;margin:50px 100px 20px}button{height:44px;min-width:120px;border-radius:4px;border:none;font-size:14px;cursor:pointer}button.primary{background-color:#4077ad;color:#fff}button.secondary{background-color:#f3f4f6;color:#374151}button:disabled{background-color:#9ca3af;cursor:not-allowed}.head{color:#6b7280;font-size:14px;margin-bottom:5px;font-weight:500}::ng-deep .today-highlight{color:#fff!important;background:#1e2541!important}.form-row{display:flex}.field{display:flex;flex-direction:column}.field.city{flex:0 0 50%}.field.date{flex:0 0 25%}::ng-deep .ng-select .ng-select-container .ng-value-container .ng-placeholder{color:#757575;font-size:14px}.close-btn-select{width:16px;height:16px;color:#00f;display:inline-block}.upload-wrapper{margin-top:37px}.upload-title{font-weight:600;margin-bottom:4px}.upload-subtitle{font-size:13px;color:#6c757d;margin-bottom:12px}.upload-btn{background-color:#1f4d5f;color:#fff;border:none;padding:10px 18px;border-radius:6px;font-size:14px;cursor:pointer}.upload-btn:hover{background-color:#173b4a}.file-name{margin-top:8px;font-size:13px;color:#495057}.right-actions{display:flex;gap:16px}.date-time-filter{padding-right:40px;background-image:url(/assets/images/icons/calendar.svg);background-repeat:no-repeat;background-position:right 12px center;background-size:18px 18px;cursor:pointer}.work-preview{max-width:1000px;padding:20px;margin:15px auto;background-color:#f4f6f8;font-family:Segoe UI,Arial,sans-serif}.preview-card{position:relative;background-color:#fff;border-radius:8px;box-shadow:0 3px 8px #0000001a;padding:20px 25px;margin-bottom:20px;margin-top:25px;transition:box-shadow .2s ease}.preview-card:hover{box-shadow:0 6px 15px #00000026}.edit-btn{position:absolute;top:15px;right:15px;width:20px;height:20px;cursor:pointer}.card-top h4{margin:0;font-size:18px;color:#1f4d5f}.card-top .job-title{display:block;font-size:14px;color:#555;margin-top:2px}.card-meta{margin:10px 0;font-size:13px;color:#777;display:flex;justify-content:space-between}.card-meta .dates{font-style:italic}.job-description{font-size:14px;color:#333;line-height:1.5;margin-bottom:8px}.file-link{font-size:13px;color:#4077ad;text-decoration:underline;display:inline-block;margin-top:5px}.actions{display:flex;justify-content:space-between}button.secondary{background-color:#e0e0e0;color:#6c757dc7;padding:8px 20px;border:none;border-radius:6px;cursor:pointer}button.primary{background-color:#4077ad;color:#fff;padding:8px 20px;border:none;border-radius:6px;cursor:pointer}@media (max-width: 600px){.preview-card{padding:15px}.edit-btn{top:10px;right:10px;width:18px;height:18px}.card-meta{flex-direction:column;gap:3px}}::ng-deep ng-dropdown-panel input[type=checkbox]{margin-right:0!important;padding:9px;margin-top:0}.form-check-input:checked{color:#fff!important;border-color:#2980b9!important;background-color:#2980b9!important}::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-option{font-size:14px}::ng-deep .ng-value-label{font-size:14px}::ng-deep .bs-datepicker-head{background-color:#1e2541!important}::ng-deep .theme-green .bs-datepicker-body table td span.selected,.theme-green .bs-datepicker-body table td.selected span,.theme-green .bs-datepicker-body table td span[class*=select-]:after,.theme-green .bs-datepicker-body table td[class*=select-] span:after{background-color:#1e2541!important}.icon-color{cursor:pointer;width:20px;height:20px;transition:transform .3s ease;filter:brightness(0) saturate(100%) invert(48%) sepia(8%) saturate(350%) hue-rotate(170deg) brightness(92%) contrast(88%)}.icon-color.edit{width:18px;height:18px}.detail-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.accordion-button{display:flex;align-items:center}.accordion-title{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.accordion-actions{display:flex;align-items:center;margin-right:12px}.edit-icon{cursor:pointer}::ng-deep .accordion-item:first-of-type>.accordion-header .accordion-button{margin-bottom:20px}.job-title{color:#6c757d;font-weight:400;font-size:14px}.preview-header{margin-left:380px}.accordion{margin:20px 100px}.add-btn{width:200px}@media screen and (max-width: 767px){.preview-header{margin-left:0}.accordion{margin:20px 0}.actions,.action{flex-direction:column-reverse;gap:5px}.action{margin:50px 0 20px}.right-actions{justify-content:space-between;gap:5px;display:flex;flex-direction:column-reverse}.form-row{gap:14px;flex-direction:column}.pointer{display:none}.add-btn{width:unset}}\n"] }]
|
|
28514
|
-
}], ctorParameters: () => [{ type: UserExperienceService }, { type: WorkExperienceStore }, { type: CredentialingStore }, { type: CountryServices }, { type: PostalCodeServices }, { type: i6.TokenService }, { type:
|
|
28758
|
+
args: [{ selector: 'app-workexperience', standalone: false, template: "<div *ngIf=\"!showpreview()\">\r\n <div class=\"education-container\">\r\n <h3>Add Work Experience</h3>\r\n <p class=\"hint\">\r\n Add your prior and current work history below\r\n </p>\r\n <form [formGroup]=\"workexperienceForm\">\r\n <div class=\"row\">\r\n <div class=\"field\">\r\n <div class=\"head\">Company Name</div>\r\n <input type=\"text\" placeholder=\"Enter your company name here\" formControlName=\"companyName\" />\r\n <small class=\"error\" *ngIf=\"workexperienceForm.get('companyName')?.touched &&\r\n workexperienceForm.get('companyName')?.hasError('required')\">\r\n Company name is required\r\n </small>\r\n </div>\r\n\r\n <div class=\"field\">\r\n <div class=\"head\">Job Title</div>\r\n <input type=\"text\" placeholder=\"Enter your job title here\" formControlName=\"jobTitle\" />\r\n <small class=\"error\" *ngIf=\"workexperienceForm.get('jobTitle')?.touched &&\r\n workexperienceForm.get('jobTitle')?.hasError('required')\">\r\n Job title is required\r\n </small>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"field\">\r\n <div class=\"head\">Country</div>\r\n <ng-select formControlName=\"country\" [items]=\"countries\" bindLabel=\"country\" bindValue=\"countryCode2\"\r\n [clearable]=\"false\" placeholder=\"Select Country\" (change)=\"onCountryChange($event)\">\r\n <ng-template ng-option-tmp let-item=\"item\" let-item$=\"item$\" let-index=\"index\">\r\n <input class=\"form-check-input\" type=\"checkbox\" [checked]=\"item$.selected\" readonly />\r\n {{ item.country }}\r\n </ng-template>\r\n </ng-select>\r\n </div>\r\n <div class=\"field\">\r\n <div class=\"head\">State</div>\r\n <ng-select formControlName=\"state\" [items]=\"states\" bindLabel=\"stateName\" bindValue=\"stateCode\"\r\n placeholder=\"Select State\">\r\n <ng-template ng-option-tmp let-item=\"item\" let-item$=\"item$\">\r\n <input class=\"form-check-input\" type=\"checkbox\" [checked]=\"item$.selected\" />\r\n {{ item.stateName }}\r\n </ng-template>\r\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\r\n <span class=\"ng-value-label\">\r\n {{ item.stateName }}\r\n </span>\r\n <span class=\"ng-value-icon right\" (click)=\"clear(item)\">\r\n <img src=\"/assets/images/icons/close-sm-circle.svg\" class=\"close-btn-select\" />\r\n </span>\r\n </ng-template>\r\n </ng-select>\r\n </div>\r\n </div>\r\n <div class=\"row form-row\">\r\n <div class=\"field\">\r\n <div class=\"head\">City</div>\r\n <input type=\"text\" placeholder=\"Enter City here\" formControlName=\"city\" />\r\n <small class=\"error\" *ngIf=\"workexperienceForm.get('city')?.touched &&\r\n workexperienceForm.get('city')?.hasError('required')\">\r\n City is required\r\n </small>\r\n </div>\r\n <div class=\"field date\">\r\n <div class=\"mb-3 head\">\r\n <div class=\"head\">Start Date</div>\r\n <input class=\"form-control date-time-filter\" placeholder=\"Start date\" bsDatepicker [maxDate]=\"maxDate\"\r\n [bsConfig]=\"{ adaptivePosition: true, isAnimated: true, showWeekNumbers: false,\r\n customTodayClass: !workexperienceForm.get('fromDate')?.value ? 'today-highlight' : '' }\"\r\n formControlName=\"fromDate\" (bsValueChange)=\"onPreferredDateChange($event)\">\r\n <small class=\"error\" *ngIf=\"workexperienceForm.get('fromDate')?.touched &&\r\n workexperienceForm.get('fromDate')?.hasError('required')\">\r\n Start Date is required\r\n </small>\r\n </div>\r\n </div>\r\n <div class=\"field date\">\r\n <div class=\"mb-3 head\">\r\n <div class=\"head\">To Date</div>\r\n <input class=\"form-control date-time-filter\" placeholder=\"To date\" [maxDate]=\"maxDate\" bsDatepicker\r\n [bsConfig]=\"{ adaptivePosition: true,showWeekNumbers: false, isAnimated: true, \r\n customTodayClass: !workexperienceForm.get('toDate')?.value ? 'today-highlight' : '' }\"\r\n formControlName=\"toDate\" (bsValueChange)=\"onPreferredDateChange($event)\">\r\n <small class=\"error\" *ngIf=\"workexperienceForm.get('toDate')?.touched &&\r\n workexperienceForm.get('toDate')?.hasError('required')\">\r\n To Date is required\r\n </small>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"field full-width\">\r\n <div class=\"head\">Job Description or duties</div>\r\n <textarea placeholder=\"Description\" formControlName=\"jobDescription\">\r\n </textarea>\r\n </div>\r\n </div>\r\n </form>\r\n <div class=\"row\">\r\n <div class=\"upload-wrapper\">\r\n <p class=\"upload-title\">Upload</p>\r\n <p class=\"upload-subtitle\">Add documents below</p>\r\n <button type=\"button\" class=\"upload-btn\" (click)=\"fileInput.click()\">\r\n Upload Documents\r\n </button>\r\n <input #fileInput type=\"file\" accept=\".pdf,.doc,.docx\" (change)=\"selectFile($event)\" hidden />\r\n <p class=\"file-name\" *ngIf=\"fileName\">\r\n Selected: {{ fileName }}\r\n <span class=\"remove-file\" (click)=\"removeFile()\">\u2716</span>\r\n </p>\r\n </div>\r\n <div class=\"actions\">\r\n\r\n <button type=\"button\" class=\"secondary\" (click)=\"back()\">Back</button>\r\n <div class=\"right-actions\">\r\n <button type=\"button\" class=\"secondary\" (click)=\"nextStep()\">\r\n Skip\r\n </button>\r\n <button type=\"button\" class=\"primary\" [disabled]=\"proposalLoader\" [ng2-loading]=\"proposalLoader\"\r\n (click)=\"saveFile()\">\r\n Continue\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n</div>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n<div class=\"work-preview\" *ngIf=\"showpreview()\">\r\n <div class=\"preview-header\">\r\n <h3>Work Experiences Preview</h3>\r\n </div>\r\n <div class=\"accordion\">\r\n\r\n <div *ngFor=\"let exp of workStore.experiences(); let i = index\" style=\"margin-bottom: 20px;\"\r\n class=\"accordion-item border-0\">\r\n\r\n <!-- HEADER (preview) -->\r\n <h2 class=\"accordion-header\">\r\n <button class=\"accordion-button\" \r\n type=\"button\" \r\n data-bs-toggle=\"collapse\"\r\n [attr.data-bs-target]=\"'#edu_' + i\"\r\n aria-expanded=\"true\">\r\n\r\n <!-- LEFT : TITLE -->\r\n <span class=\"accordion-title\">\r\n {{ exp.companyName }}\r\n </span>\r\n\r\n <!-- RIGHT : EDIT ICON -->\r\n <span class=\"accordion-actions\">\r\n <img src=\"/assets/images/icons/edit-text.png\" class=\"edit-icon icon-color\"\r\n (click)=\"edit(i); $event.stopPropagation()\" alt=\"Edit\" />\r\n </span>\r\n\r\n </button>\r\n </h2>\r\n\r\n\r\n <!-- BODY -->\r\n <div [id]=\"'edu_' + i\" \r\n class=\"accordion-collapse collapse show\"\r\n style=\"margin-bottom: 20px;\">\r\n <div class=\"accordion-body\">\r\n\r\n <!-- GRID DATA (2 or 3 columns) -->\r\n <div class=\"detail-grid\">\r\n <div>\r\n <strong>Company Name</strong><br />\r\n <span class=\"job-title\">{{ exp.companyName }}</span>\r\n </div>\r\n <div>\r\n <strong>Job Title</strong><br />\r\n <span class=\"job-title\">{{ exp.jobTitle }}</span>\r\n </div>\r\n <div>\r\n <strong>From Date</strong><br />\r\n <span class=\"job-title\">{{ exp.fromDate | date:'MM/dd/yyyy' }}</span>\r\n </div>\r\n <div>\r\n <strong>To Date</strong><br />\r\n <span class=\"job-title\">{{ exp.toDate | date:'MM/dd/yyyy' }}</span>\r\n </div>\r\n\r\n <div>\r\n <strong>Country</strong><br />\r\n <span class=\"job-title\">{{ exp.country }}</span>\r\n </div>\r\n <div>\r\n <strong>State</strong><br />\r\n <span class=\"job-title\">{{ exp.state | stateName }}</span>\r\n </div>\r\n\r\n <div>\r\n <strong>City</strong><br />\r\n <span class=\"job-title\">{{ exp.city }}</span>\r\n </div>\r\n\r\n\r\n <div *ngIf=\"exp.fileUrl\" class=\"full-width\">\r\n <strong>Document</strong><br />\r\n <a [href]=\"cloudfrontUrl+exp.fileUrl\" target=\"_blank\">\r\n <span class=\"job-title\"> {{ exp.fileName }}</span>\r\n </a>\r\n </div>\r\n </div>\r\n <div class=\"full-width mt-3\">\r\n <strong>Job Description</strong><br />\r\n <span class=\"job-title\"> {{ exp.jobDescription }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"action\">\r\n <button type=\"button\" class=\"secondary\" (click)=\"back()\">Back</button>\r\n <div class=\"right-actions\">\r\n <button type=\"button\" class=\"primary add-btn\" (click)=\"add()\" style=\"background-color: #1f4d5f;\">\r\n Add More Experiences\r\n </button>\r\n <button type=\"button\" class=\"primary\" (click)=\"nextStep()\">\r\n Continue\r\n </button>\r\n </div>\r\n </div>\r\n</div>", styles: [".education-container{max-width:1000px;margin:0 auto;padding:24px 16px;min-height:300px}h3{font-size:18px;font-weight:600;margin-bottom:4px}.hint{font-size:14px;color:#6b7280;margin-bottom:24px}.row{display:flex;margin-bottom:16px}.field{flex:1;display:flex;flex-direction:column}.field.full-width{flex:1 1 100%}input,select,textarea{padding:10px 12px;border:2px solid #d1d5db;border-radius:4px;font-size:13px;outline:none;box-sizing:border-box}::ng-deep .ng-select.ng-select-single .ng-select-container{height:45px}::ng-deep .ng-select.ng-select-single .ng-select-container .ng-value-container .ng-placeholder{top:10px}textarea{height:90px;resize:none}.error{margin-top:4px;font-size:12px;color:#dc2626}.actions{display:flex;justify-content:space-between;margin:50px 0 20px}.action{display:flex;justify-content:space-between;margin:50px 100px 20px}button{height:44px;min-width:120px;border-radius:4px;border:none;font-size:14px;cursor:pointer}button.primary{background-color:#4077ad;color:#fff}button.secondary{background-color:#f3f4f6;color:#374151}button:disabled{background-color:#9ca3af;cursor:not-allowed}.head{color:#6b7280;font-size:14px;margin-bottom:5px;font-weight:500}::ng-deep .today-highlight{color:#fff!important;background:#1e2541!important}.form-row{display:flex}.field{display:flex;flex-direction:column}.field.city{flex:0 0 50%}.field.date{flex:0 0 25%}::ng-deep .ng-select .ng-select-container .ng-value-container .ng-placeholder{color:#757575;font-size:14px}.close-btn-select{width:16px;height:16px;color:#00f;display:inline-block}.upload-wrapper{margin-top:37px}.upload-title{font-weight:600;margin-bottom:4px}.upload-subtitle{font-size:13px;color:#6c757d;margin-bottom:12px}.upload-btn{background-color:#1f4d5f;color:#fff;border:none;padding:10px 18px;border-radius:6px;font-size:14px;cursor:pointer}.upload-btn:hover{background-color:#173b4a}.file-name{margin-top:8px;font-size:13px;color:#495057}.right-actions{display:flex;gap:16px}.date-time-filter{padding-right:40px;background-image:url(/assets/images/icons/calendar.svg);background-repeat:no-repeat;background-position:right 12px center;background-size:18px 18px;cursor:pointer}.work-preview{max-width:1000px;padding:20px;margin:15px auto;background-color:#f4f6f8;font-family:Segoe UI,Arial,sans-serif}.preview-card{position:relative;background-color:#fff;border-radius:8px;box-shadow:0 3px 8px #0000001a;padding:20px 25px;margin-bottom:20px;margin-top:25px;transition:box-shadow .2s ease}.preview-card:hover{box-shadow:0 6px 15px #00000026}.edit-btn{position:absolute;top:15px;right:15px;width:20px;height:20px;cursor:pointer}.card-top h4{margin:0;font-size:18px;color:#1f4d5f}.card-top .job-title{display:block;font-size:14px;color:#555;margin-top:2px}.card-meta{margin:10px 0;font-size:13px;color:#777;display:flex;justify-content:space-between}.card-meta .dates{font-style:italic}.job-description{font-size:14px;color:#333;line-height:1.5;margin-bottom:8px}.file-link{font-size:13px;color:#4077ad;text-decoration:underline;display:inline-block;margin-top:5px}.actions{display:flex;justify-content:space-between}button.secondary{background-color:#e0e0e0;color:#6c757dc7;padding:8px 20px;border:none;border-radius:6px;cursor:pointer}button.primary{background-color:#4077ad;color:#fff;padding:8px 20px;border:none;border-radius:6px;cursor:pointer}@media (max-width: 600px){.preview-card{padding:15px}.edit-btn{top:10px;right:10px;width:18px;height:18px}.card-meta{flex-direction:column;gap:3px}}::ng-deep ng-dropdown-panel input[type=checkbox]{margin-right:0!important;padding:9px;margin-top:0}.form-check-input:checked{color:#fff!important;border-color:#2980b9!important;background-color:#2980b9!important}::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-option{font-size:14px}::ng-deep .ng-value-label{font-size:14px}::ng-deep .bs-datepicker-head{background-color:#1e2541!important}::ng-deep .theme-green .bs-datepicker-body table td span.selected,.theme-green .bs-datepicker-body table td.selected span,.theme-green .bs-datepicker-body table td span[class*=select-]:after,.theme-green .bs-datepicker-body table td[class*=select-] span:after{background-color:#1e2541!important}.icon-color{cursor:pointer;width:20px;height:20px;transition:transform .3s ease;filter:brightness(0) saturate(100%) invert(48%) sepia(8%) saturate(350%) hue-rotate(170deg) brightness(92%) contrast(88%)}.icon-color.edit{width:18px;height:18px}.detail-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.accordion-button{display:flex;align-items:center}.accordion-title{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.accordion-actions{display:flex;align-items:center;margin-right:12px}.edit-icon{cursor:pointer}::ng-deep .accordion-item:first-of-type>.accordion-header .accordion-button{margin-bottom:20px}.job-title{color:#6c757d;font-weight:400;font-size:14px}.preview-header{margin-left:380px}.accordion{margin:20px 100px}.add-btn{width:200px}@media screen and (max-width: 767px){.preview-header{margin-left:0}.accordion{margin:20px 0}.actions,.action{flex-direction:column-reverse;gap:5px}.action{margin:50px 0 20px}.right-actions{justify-content:space-between;gap:5px;display:flex;flex-direction:column-reverse}.form-row{gap:14px;flex-direction:column}.pointer{display:none}.add-btn{width:unset}}.remove-file{margin-left:10px;cursor:pointer;color:red;font-weight:700}\n"] }]
|
|
28759
|
+
}], ctorParameters: () => [{ type: UserExperienceService }, { type: UserService }, { type: WorkExperienceStore }, { type: CredentialingStore }, { type: CountryServices }, { type: PostalCodeServices }, { type: i6.TokenService }, { type: i8.FormBuilder }, { type: FileService }, { type: i1.HttpClient }], propDecorators: { providerId: [{
|
|
28515
28760
|
type: Input
|
|
28516
28761
|
}], providerName: [{
|
|
28517
28762
|
type: Input
|
|
@@ -28521,6 +28766,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
28521
28766
|
|
|
28522
28767
|
class CredentialingComponent {
|
|
28523
28768
|
store;
|
|
28769
|
+
postalCodeService;
|
|
28524
28770
|
libConfig;
|
|
28525
28771
|
viewport;
|
|
28526
28772
|
animation;
|
|
@@ -28535,8 +28781,10 @@ class CredentialingComponent {
|
|
|
28535
28781
|
outlet.activatedRouteData?.['animation'] ?? 'DefaultPage';
|
|
28536
28782
|
});
|
|
28537
28783
|
}
|
|
28538
|
-
|
|
28784
|
+
states;
|
|
28785
|
+
constructor(store, postalCodeService, libConfig, viewport) {
|
|
28539
28786
|
this.store = store;
|
|
28787
|
+
this.postalCodeService = postalCodeService;
|
|
28540
28788
|
this.libConfig = libConfig;
|
|
28541
28789
|
this.viewport = viewport;
|
|
28542
28790
|
effect(() => {
|
|
@@ -28545,6 +28793,7 @@ class CredentialingComponent {
|
|
|
28545
28793
|
});
|
|
28546
28794
|
}
|
|
28547
28795
|
ngOnInit() {
|
|
28796
|
+
this.getstates('US');
|
|
28548
28797
|
console.log('Signup loaded');
|
|
28549
28798
|
this.cloudfrontUrl = this.libConfig.cloudfrontUrl;
|
|
28550
28799
|
this.providerId = this.libConfig.providerId;
|
|
@@ -28553,8 +28802,19 @@ class CredentialingComponent {
|
|
|
28553
28802
|
goBackToInitialProcess() {
|
|
28554
28803
|
this.back.emit();
|
|
28555
28804
|
}
|
|
28556
|
-
|
|
28557
|
-
|
|
28805
|
+
getstates(countryCode) {
|
|
28806
|
+
this.postalCodeService
|
|
28807
|
+
.GetStatesByCountryCode(countryCode.countryCode2)
|
|
28808
|
+
.subscribe(states => {
|
|
28809
|
+
this.states = states
|
|
28810
|
+
.filter(x => !['MH', 'DC'].includes(x.stateCode) &&
|
|
28811
|
+
x.stateName?.trim() !== '')
|
|
28812
|
+
.sort((a, b) => a.stateName.localeCompare(b.stateName));
|
|
28813
|
+
});
|
|
28814
|
+
console.log(this.states);
|
|
28815
|
+
}
|
|
28816
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: CredentialingComponent, deps: [{ token: CredentialingStore }, { token: PostalCodeServices }, { token: LIBRARY_CONFIG }, { token: i11.ViewportScroller }], target: i0.ɵɵFactoryTarget.Component });
|
|
28817
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: CredentialingComponent, isStandalone: false, selector: "app-credentialing", inputs: { data: "data" }, outputs: { back: "back" }, ngImport: i0, template: "<div class=\"credentialing-container\">\r\n <app-stepper></app-stepper>\r\n <div class=\"step-content\" [@stepTransition]=\"store.currentStep()\">\r\n <app-role-select (backToParent)=\"goBackToInitialProcess()\" [providerName] = \"providerName\" [providerId]=\"providerId\" [cloudfrontUrl]=\"cloudfrontUrl\" [roleData]=\"data\"\r\n *ngIf=\"store.currentStep() === 1\"></app-role-select>\r\n <app-coverage [states]=\"states\" [providerName] = \"providerName\" [providerId]=\"providerId\" *ngIf=\"store.currentStep() === 2\"></app-coverage>\r\n <app-workexperience [states]=\"states\" [cloudfrontUrl]=\"cloudfrontUrl\" [providerName] = \"providerName\" [providerId]=\"providerId\" *ngIf=\"store.currentStep() === 3\"></app-workexperience>\r\n <app-education [states]=\"states\" [cloudfrontUrl]=\"cloudfrontUrl\" [providerName] = \"providerName\" [providerId]=\"providerId\" *ngIf=\"store.currentStep() === 4\"></app-education>\r\n <app-certification [states]=\"states\" [cloudfrontUrl]=\"cloudfrontUrl\" [providerName] = \"providerName\" [providerId]=\"providerId\" *ngIf=\"store.currentStep() === 5\"></app-certification>\r\n <app-licenses [states]=\"states\" [cloudfrontUrl]=\"cloudfrontUrl\" [providerName] = \"providerName\" [providerId]=\"providerId\" *ngIf=\"store.currentStep() === 6\"></app-licenses>\r\n <app-skills [providerName] = \"providerName\" [providerId]=\"providerId\" *ngIf=\"store.currentStep() === 7\"></app-skills>\r\n <app-tools [providerName] = \"providerName\" [providerId]=\"providerId\" [roleData]=\"data\" *ngIf=\"store.currentStep() === 8\"></app-tools>\r\n </div>\r\n</div>", styles: ["::ng-deep .ng-select.ng-select-single .ng-select-container{height:45px!important;border:1px solid #dee2e6}.step-content{position:relative;min-height:400px}\n"], dependencies: [{ kind: "directive", type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: StepperComponent, selector: "app-stepper" }, { kind: "component", type: EducationComponent, selector: "app-education", inputs: ["providerId", "providerName", "cloudfrontUrl"] }, { kind: "component", type: CertificationComponent, selector: "app-certification", inputs: ["states", "providerId", "providerName", "cloudfrontUrl"] }, { kind: "component", type: SkillsComponent, selector: "app-skills", inputs: ["providerId", "providerName"] }, { kind: "component", type: LicensesComponent, selector: "app-licenses", inputs: ["providerId", "providerName", "cloudfrontUrl", "states"] }, { kind: "component", type: ToolsComponent, selector: "app-tools", inputs: ["roleData", "providerId", "providerName"] }, { kind: "component", type: RoleSelectComponent, selector: "app-role-select", inputs: ["roleData", "cloudfrontUrl", "providerId", "providerName"], outputs: ["backToParent"] }, { kind: "component", type: Step2CoverageComponent, selector: "app-coverage", inputs: ["providerId", "providerName", "states"] }, { kind: "component", type: WorkexperienceComponent, selector: "app-workexperience", inputs: ["providerId", "providerName", "cloudfrontUrl"] }], animations: [
|
|
28558
28818
|
trigger('stepTransition', [
|
|
28559
28819
|
transition('* <=> *', [
|
|
28560
28820
|
style({
|
|
@@ -28584,11 +28844,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
28584
28844
|
}))
|
|
28585
28845
|
])
|
|
28586
28846
|
])
|
|
28587
|
-
], template: "<div class=\"credentialing-container\">\r\n <app-stepper></app-stepper>\r\n <div class=\"step-content\" [@stepTransition]=\"store.currentStep()\">\r\n <app-role-select (backToParent)=\"goBackToInitialProcess()\" [providerName] = \"providerName\" [providerId]=\"providerId\" [cloudfrontUrl]=\"cloudfrontUrl\" [roleData]=\"data\"\r\n *ngIf=\"store.currentStep() === 1\"></app-role-select>\r\n <app-coverage [providerName] = \"providerName\" [providerId]=\"providerId\" *ngIf=\"store.currentStep() === 2\"></app-coverage>\r\n <app-workexperience [cloudfrontUrl]=\"cloudfrontUrl\" [providerName] = \"providerName\" [providerId]=\"providerId\" *ngIf=\"store.currentStep() === 3\"></app-workexperience>\r\n <app-education [cloudfrontUrl]=\"cloudfrontUrl\" [providerName] = \"providerName\" [providerId]=\"providerId\" *ngIf=\"store.currentStep() === 4\"></app-education>\r\n <app-certification [cloudfrontUrl]=\"cloudfrontUrl\" [providerName] = \"providerName\" [providerId]=\"providerId\" *ngIf=\"store.currentStep() === 5\"></app-certification>\r\n <app-licenses [cloudfrontUrl]=\"cloudfrontUrl\" [providerName] = \"providerName\" [providerId]=\"providerId\" *ngIf=\"store.currentStep() === 6\"></app-licenses>\r\n <app-skills [providerName] = \"providerName\" [providerId]=\"providerId\" *ngIf=\"store.currentStep() === 7\"></app-skills>\r\n <app-tools [providerName] = \"providerName\" [providerId]=\"providerId\" [roleData]=\"data\" *ngIf=\"store.currentStep() === 8\"></app-tools>\r\n </div>\r\n</div>", styles: ["::ng-deep .ng-select.ng-select-single .ng-select-container{height:45px!important;border:1px solid #dee2e6}.step-content{position:relative;min-height:400px}\n"] }]
|
|
28588
|
-
}], ctorParameters: () => [{ type: CredentialingStore }, { type: undefined, decorators: [{
|
|
28847
|
+
], template: "<div class=\"credentialing-container\">\r\n <app-stepper></app-stepper>\r\n <div class=\"step-content\" [@stepTransition]=\"store.currentStep()\">\r\n <app-role-select (backToParent)=\"goBackToInitialProcess()\" [providerName] = \"providerName\" [providerId]=\"providerId\" [cloudfrontUrl]=\"cloudfrontUrl\" [roleData]=\"data\"\r\n *ngIf=\"store.currentStep() === 1\"></app-role-select>\r\n <app-coverage [states]=\"states\" [providerName] = \"providerName\" [providerId]=\"providerId\" *ngIf=\"store.currentStep() === 2\"></app-coverage>\r\n <app-workexperience [states]=\"states\" [cloudfrontUrl]=\"cloudfrontUrl\" [providerName] = \"providerName\" [providerId]=\"providerId\" *ngIf=\"store.currentStep() === 3\"></app-workexperience>\r\n <app-education [states]=\"states\" [cloudfrontUrl]=\"cloudfrontUrl\" [providerName] = \"providerName\" [providerId]=\"providerId\" *ngIf=\"store.currentStep() === 4\"></app-education>\r\n <app-certification [states]=\"states\" [cloudfrontUrl]=\"cloudfrontUrl\" [providerName] = \"providerName\" [providerId]=\"providerId\" *ngIf=\"store.currentStep() === 5\"></app-certification>\r\n <app-licenses [states]=\"states\" [cloudfrontUrl]=\"cloudfrontUrl\" [providerName] = \"providerName\" [providerId]=\"providerId\" *ngIf=\"store.currentStep() === 6\"></app-licenses>\r\n <app-skills [providerName] = \"providerName\" [providerId]=\"providerId\" *ngIf=\"store.currentStep() === 7\"></app-skills>\r\n <app-tools [providerName] = \"providerName\" [providerId]=\"providerId\" [roleData]=\"data\" *ngIf=\"store.currentStep() === 8\"></app-tools>\r\n </div>\r\n</div>", styles: ["::ng-deep .ng-select.ng-select-single .ng-select-container{height:45px!important;border:1px solid #dee2e6}.step-content{position:relative;min-height:400px}\n"] }]
|
|
28848
|
+
}], ctorParameters: () => [{ type: CredentialingStore }, { type: PostalCodeServices }, { type: undefined, decorators: [{
|
|
28589
28849
|
type: Inject,
|
|
28590
28850
|
args: [LIBRARY_CONFIG]
|
|
28591
|
-
}] }, { type:
|
|
28851
|
+
}] }, { type: i11.ViewportScroller }], propDecorators: { data: [{
|
|
28592
28852
|
type: Input
|
|
28593
28853
|
}], back: [{
|
|
28594
28854
|
type: Output
|
|
@@ -29894,13 +30154,13 @@ class InitialProcessComponent {
|
|
|
29894
30154
|
this.destroy$.next();
|
|
29895
30155
|
this.destroy$.complete();
|
|
29896
30156
|
}
|
|
29897
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: InitialProcessComponent, deps: [{ token:
|
|
29898
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: InitialProcessComponent, isStandalone: false, selector: "app-initial-process", viewQueries: [{ propertyName: "canvasRef", first: true, predicate: ["canvas"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div class=\"container\">\r\n <div class=\"mb-4 logout-container\" *ngIf=\"showlogout\">\r\n <span class=\"logout-wrapper\" (click)=\"logout()\">\r\n <span class=\"logout-icon\"></span>\r\n <span class=\"logout-text\">Logout</span>\r\n </span>\r\n </div>\r\n <div class=\"card pb-2 mob pr-5\" style=\"margin-bottom: 30px;\">\r\n <ng-container class=\"load-page\" [style.visibility]=\"view == 1 ? 'visible' : 'hidden' \">\r\n <ul class=\"term-list para-comma\" [ngClass]=\"view == 1 ? '' : 'hidden-view'\">\r\n Thanks for joining\r\n <span class=\"brand-name\">{{ branding.displayName }}</span>.\r\n Our members and service providers rely on accurate info in your profile to\r\n connect you with work that suits your capabilities. Keep your profile\r\n complete, skills updated, licenses current, photos and logos professional,\r\n and schedule up to date.\r\n </ul>\r\n <div class=\"row col-12 mt-4\" [ngClass]=\"view == 1 ? '' : 'hidden-view' \">\r\n <div class=\"col-md-6 col-lg-6 col-sm-12\">\r\n <div class=\"form-group form-check agree\">\r\n <input #acceptTerms=\"ngModel\" [ngClass]=\"{ 'is-invalid': !model.acceptTerms && validatePage==1 }\"\r\n [(ngModel)]=\"model.acceptTerms\" type=\"checkbox\" name=\"acceptTerms\" id=\"acceptTerms\"\r\n class=\"form-check-input\" (click)=\"openModal(termsAndConditionsModel,'Terms and Conditions',$event)\"\r\n required>\r\n <label for=\"acceptTerms\" class=\"form-check-label checkmark pointer\"\r\n (click)=\"openModal(termsAndConditionsModel,'Terms and Conditions',$event)\">\r\n I agree to Terms and Conditions\r\n </label>\r\n <!-- <div *ngIf=\"!model.acceptTerms && validatePage==1\" class=\"invalid-feedback\">\r\n Accept Terms & Conditions is required\r\n </div> -->\r\n </div>\r\n <div class=\"form-group form-check agree\">\r\n <input #privacy=\"ngModel\" [ngClass]=\"{ 'is-invalid':!model.privacy && validatePage==1}\"\r\n (click)=\"openModal(termsAndConditionsModel,'Privacy Statement',$event)\" [(ngModel)]=\"model.privacy\"\r\n type=\"checkbox\" name=\"privacy\" id=\"privacy\" class=\"form-check-input\" required>\r\n <label for=\"privacy\" class=\"form-check-label checkmark pointer\"\r\n (click)=\"openModal(termsAndConditionsModel,'Privacy Statement',$event)\">\r\n I agree to Privacy Statement\r\n </label>\r\n <!-- <div *ngIf=\"!model.privacy && validatePage==1\" class=\"invalid-feedback\">\r\n Accept Privacy Statement\r\n </div> -->\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"footer col-12 col-sm-12 col-md-12 col-xl-12 justify-content-between row footer-signature\"\r\n [ngClass]=\"view == 1 ? '' : 'hidden-view' \">\r\n <!-- <div class=\"col-md-3 col-sm-3 slider-tab\">\r\n </div> -->\r\n\r\n <div class=\"col-6\"></div>\r\n <div class=\"col-md-12 col-sm-12 col-xl-3 text-end\">\r\n <h6>\r\n <button class=\"next\" (click)=\" next(2)\"\r\n [ngClass]=\"(((!points || !points?.length || points.length ==0) && !fileData ) || !model.acceptTerms || !model.privacy) ? 'disabled-btn':''\">\r\n <img style=\"height: 20px; width: 16px;filter: brightness(0) invert(1);\" src=\"assets/images/icons/next.svg\"\r\n alt=\"Logo\">\r\n </button> \r\n </h6>\r\n </div>\r\n </div>\r\n <ng-container>\r\n <div class=\"term-signature col-md-6 col-lg-6 col-sm-12\" [ngClass]=\"view == 1 ? '' : 'hidden-view' \">\r\n <h6 class=\"checkmark\">Signature</h6>\r\n <div [ngClass]=\"{ 'd-none': signaturePadData?.publicUrl }\" class=\"sign-img mb-2\">\r\n <canvas #canvas [width]=\"255\" [height]=\"90\"></canvas>\r\n </div>\r\n <div [ngClass]=\"{ 'd-none': !signaturePadData?.publicUrl }\" class=\"mb-2\">\r\n <img [width]=\"255\" [height]=\"120\" [src]=\"signaturePadData?.publicUrl\" style=\"position: relative\" alt>\r\n </div>\r\n <h6 class=\"d-flex align-items-center gap-2\">\r\n <button (click)=\"clearPad()\" class=\"btn-clear btn-sm\">\r\n Clear\r\n </button>\r\n\r\n <!-- <button (click)=\"uploadImage.click()\" class=\"save-btn upload btn-sm\">\r\n <img src=\"assets/images/icons/upload.svg\" alt=\"Upload\">\r\n Upload\r\n <input #uploadImage type=\"file\" class=\"image-upload d-none\" accept=\"image/*\"\r\n (change)=\"uploadSignImage($event)\">\r\n </button> -->\r\n </h6>\r\n\r\n <div *ngIf=\"validatePage==1 && (!points || !points?.length || points.length ==0) && !fileData\"\r\n class=\"invalid-feedback d-block\">\r\n Signature is required\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"view == 2\">\r\n <div class=\"add-tab-view \">\r\n <ul>\r\n <h5>\r\n <b>\r\n Please choose the relevant sections in which you wish to\r\n participate\r\n </b>\r\n </h5>\r\n <br>\r\n <b class=\"para-comma\">\r\n Choose the areas you'd like to be part of \u2014 whether it's programs, services, events, or collaborations,\r\n you're in control of your involvement.\r\n <br>\r\n connect your business to others and prospective clients.\r\n </b>\r\n </ul>\r\n\r\n <div class=\"row mt-4\">\r\n <ng-container *ngFor=\"let userType of userViewRoles\">\r\n <div class=\"card card-design text-center user-card mx-2 my-2\"\r\n [ngClass]=\"userType.value === selectedRoleValue ? 'user-cards-active' : ''\"\r\n (click)=\"selectedUserRole(userType)\">\r\n <img [src]=\"userType?.img\" class=\"mb-2 mt-2\" style=\"width: 70px;height: 70px;\">\r\n <h6 class=\"m-0 mt-2\">{{userType.name}}</h6>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <!-- <h6 class=\"inspect-add\">\r\n <button (click)=\"next(3);isBusiness=true;\" class=\"add-btn btn-sm\">\r\n Yes\r\n </button>\r\n \r\n <button (click)=\"isBusiness=false;view = 4;\" class=\"add-btn btn-sm\">\r\n No\r\n </button>\r\n </h6> -->\r\n </div>\r\n <div class=\"footer col-12 col-sm-12 col-md-12 col-xl-12 row justify-content-around footer-view\">\r\n <!-- <div class=\"col-md-3 col-sm-12 slider-tab text-center\">\r\n <img class=\"slider-view\" src=\"assets/images/icons/stepper-1.svg\" alt=\"Logo\">\r\n </div> -->\r\n <div class=\"col-5\"></div>\r\n <div class=\"col-md-4 col-sm-12 col-xl-4 text-end\">\r\n <h6>\r\n <button (click)=\"previous()\" class=\"my-2 mx-1\" class=\"btn-close back-tab back-btn btn-sm\">\r\n Back\r\n </button>\r\n \r\n <button (click)=\"next(3)\" class=\"next\" [disabled]=\"!isUserSelected\"\r\n [ngClass]=\"!isUserSelected ? 'disabled-btn':''\">\r\n <img style=\"height: 20px; width: 16px;filter: brightness(0) invert(1);\" src=\"assets/images/icons/next.svg\"\r\n alt=\"Logo\">\r\n </button>\r\n \r\n </h6>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"view == 3\">\r\n <form [formGroup]=\"companyForm\" class=\"form\">\r\n <div class=\"term-list \">\r\n <ul>\r\n <h5>\r\n <b>\r\n Enter your business information here.\r\n </b>\r\n </h5>\r\n <br>\r\n </ul>\r\n <div class=\"profile-field\">\r\n <div class=\"d-flex flex-wrap justify-content-between row\">\r\n <div class=\"form-group col-md-6 col-sm-12 mt-3 mb-2\">\r\n <input [ngClass]=\"{'is-invalid': ( f.companyName.errors && validatePage == 3) || providerError}\"\r\n type=\"text\" class=\"form-control\" id=\"companyName\" placeholder=\"Company Name\"\r\n formControlName=\"companyName\">\r\n <div *ngIf=\" f.companyName.errors && validatePage == 3\" class=\"invalid-feedback\">\r\n <div *ngIf=\"f.companyName.errors.required\">\r\n Company Name is required\r\n </div>\r\n <div *ngIf=\"f.companyName.errors.minlength\">\r\n Company Name must be at least 2 characters\r\n </div>\r\n <div *ngIf=\"f.companyName.errors.maxLength\">\r\n Company Name must be less than 100 characters\r\n </div>\r\n </div>\r\n <div *ngIf=\"providerError\" class=\"invalid-feedback\">\r\n <div>\r\n {{providerError}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group col-md-6 col-sm-12 mt-3 mb-2\">\r\n <input class=\"form-control block fw-medium shadow-none\" type=\"text\" name=\"inputPhone\"\r\n placeholder=\"Company Phone Number\" id=\"inputPhone\" autocomplete=\"off\" formControlName=\"phoneNumber\"\r\n [maxLength]=\"14\" (input)=\"formatPhone($event,companyForm)\"\r\n [ngClass]=\"{'is-invalid': (f.phoneNumber.errors && validatePage == 3) || providerError}\" />\r\n <div *ngIf=\"f.phoneNumber.errors && validatePage == 3\" class=\"invalid-feedback\">\r\n <div *ngIf=\"f.phoneNumber.errors.required\">\r\n Phone Number is required\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group col-md-6 col-sm-12 mt-3 mb-2\">\r\n <input [ngClass]=\"{ 'is-invalid': f.address1.errors&& validatePage == 3 }\" type=\"text\"\r\n class=\"form-control\" id=\"businessAddress\" ngx-google-places-autocomplete [options]='options'\r\n (onAddressChange)=\"AddressChange($event)\" placeholder=\"Business Address 1\" formControlName=\"address1\">\r\n <div *ngIf=\" f.address1.errors && validatePage == 3\" class=\"invalid-feedback\">\r\n <div *ngIf=\"f.address1.errors.required\">\r\n Business Address 1 is required\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group col-md-6 col-sm-12 mt-3 mb-2\">\r\n <input type=\"text\" class=\"form-control\" id=\"businessAddress2\" placeholder=\"Business Address 2\">\r\n </div>\r\n </div>\r\n <div class=\"d-flex flex-wrap justify-content-between row\">\r\n <div class=\"form-group col-md-6 col-sm-12 mt-3 mb-2\">\r\n <input [ngClass]=\"{ 'is-invalid': f.city.errors&& validatePage == 3 }\" type=\"text\" class=\"form-control\"\r\n id=\"City\" placeholder=\"City\" formControlName=\"city\">\r\n <div *ngIf=\" f.city.errors && validatePage == 3\" class=\"invalid-feedback\">\r\n <div *ngIf=\"f.city.errors.required\">City is required</div>\r\n </div>\r\n </div>\r\n <div class=\"form-group col-md-6 col-sm-12 mt-3 mb-2\">\r\n <input [ngClass]=\"{ 'is-invalid': f.state.errors&& validatePage == 3 }\" type=\"text\"\r\n class=\"form-control\" id=\"State\" placeholder=\"State\" formControlName=\"state\">\r\n <div *ngIf=\" f.state.errors && validatePage == 3\" class=\"invalid-feedback\">\r\n <div *ngIf=\"f.state.errors.required\">State is required</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex flex-wrap justify-content-between row\">\r\n <div class=\"form-group col-md-6 col-sm-12 mt-3 mb-2\">\r\n <input [textMask]=\"{ mask: zipcodeMask }\"\r\n [ngClass]=\"{ 'is-invalid': f.zipcode.errors&& validatePage == 3 }\" type=\"text\" class=\"form-control\"\r\n id=\"Zipcode\" placeholder=\"Zipcode\" formControlName=\"zipcode\">\r\n <div *ngIf=\" f.zipcode.errors && validatePage == 3\" class=\"invalid-feedback\">\r\n <div *ngIf=\"f.zipcode.errors.required\">Zipcode is\r\n required</div>\r\n </div>\r\n </div>\r\n <div class=\"form-group col-md-6 col-sm-12 mt-3 mb-2\">\r\n <input [ngClass]=\"{ 'is-invalid': f.country.errors && validatePage == 3}\" type=\"text\"\r\n class=\"form-control\" id=\"Country\" placeholder=\"Country\" formControlName=\"country\">\r\n <div *ngIf=\" f.country.errors && validatePage == 3\" class=\"invalid-feedback\">\r\n <div *ngIf=\"f.country.errors.required\">Country is\r\n required</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n <div class=\"profile-field\">\r\n <div class=\"form-group mb-2 form\" style=\"margin-left: 26px;margin-right: 52px;\">\r\n <input #uploadLogoInput type=\"file\" accept=\".png,.jpg,.jpeg,.svg\" (change)=\"uploadLogo($event)\"\r\n class=\"upload-initial-input rounded-circle opacity-0 position-absolute\" />\r\n\r\n <input (click)=\"uploadImage2.click()\" [(ngModel)]=\"logoName\" readonly type=\"text\" class=\"form-control\"\r\n placeholder=\"Upload Company Logo\">\r\n\r\n <img #uploadImage2 class=\"upload-image\" (click)=\"uploadLogoInput.click()\" src=\"assets/images/icons/upload.svg\"\r\n alt=\"Logo\">\r\n <div *ngIf=\"isLogoRequired\" class=\"invalid-feedback d-block\">\r\n <div class=\"ms-1\">\r\n Please Upload Company Logo\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"isneeded\" style=\"margin-left: 47px;\r\n margin-top: -20px;\" class=\"invalid-feedback\">\r\n <div>Company Logo is\r\n required</div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"selectedRole?.name == 'Contractor'\" style=\"padding: 0px 20px;border-radius: 5px;\">\r\n <div class=\"term-list pt-0\">\r\n <h5>\r\n <b>\r\n Contractor Category\r\n </b>\r\n </h5>\r\n <div class=\"profile-field\">\r\n <div class=\"d-flex flex-wrap justify-content-between row\">\r\n <div class=\"form-group col-md-12 col-sm-12 mb-2\">\r\n <label></label>\r\n <ng-select [items]=\"contractorSubCategories\" bindLabel=\"name\" [multiple]=\"true\" [closeOnSelect]=\"false\"\r\n placeholder=\"Select Contractor Category\" (ngModelChange)=\"changeContractor($event)\"\r\n [(ngModel)]=\"selectedContractorCategories\">\r\n </ng-select>\r\n </div>\r\n </div>\r\n <accordion [isAnimated]=\"false\">\r\n <ng-container *ngFor=\"let item of selectedContractorCategories;let i=index\">\r\n <accordion-group [isOpen]=\"true\">\r\n <button accordion-heading class=\"w-100\" style=\"font-size: 16px;font-weight: 600;\">\r\n <div class=\"w-100 mt-2\">\r\n <div class=\"backdrop\">\r\n <input type=\"checkbox\" [(ngModel)]=\"item.selectAll\" [name]=\"item?.id\" [id]=\"item?.id\"\r\n (change)=\"selectAll($event,item?.items)\">\r\n <label [for]=\"item?.id\"> {{item?.name}}</label>\r\n </div>\r\n </div>\r\n </button>\r\n <div class=\"row\">\r\n <div class=\"backdrop col-4 form-control-sm\" *ngFor=\"let subItem of item?.items\">\r\n <input type=\"checkbox\" [(ngModel)]=\"subItem.selected\" [name]=\"subItem?.id\" [id]=\"subItem?.id\"\r\n (change)=\"unCheckedEvent($event,item)\">\r\n <label [for]=\"subItem?.id\"> {{subItem?.name}}</label>\r\n </div>\r\n </div>\r\n </accordion-group>\r\n </ng-container>\r\n </accordion>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"footer col-12 col-sm-12 col-md-12 col-xl-12 row justify-content-around footer-view\">\r\n <!-- <div class=\"col-md-3 col-sm-12 slider-tab text-center\">\r\n <img class=\"slider-view\" src=\"assets/images/icons/stepper-2.svg\" alt=\"Logo\">\r\n </div> -->\r\n <div class=\"col-5\"></div>\r\n <div class=\"col-md-4 col-sm-12 col-xl-4 text-end\">\r\n <h6 class=\"btn-mob\">\r\n <button (click)=\"previous()\" class=\"my-2 mx-1\" class=\"btn-close back-tab back-btn btn-sm\">\r\n Back\r\n </button>\r\n \r\n <button class=\" next\" (click)=\"next(4)\">\r\n <img style=\"height: 20px; width: 16px;filter: brightness(0) invert(1);\" src=\"assets/images/icons/next.svg\"\r\n alt=\"Logo\">\r\n </button>\r\n \r\n </h6>\r\n </div>\r\n </div>\r\n\r\n </ng-container>\r\n <ng-container *ngIf=\"view == 4\">\r\n\r\n <div class=\"add-tab \">\r\n <ul>\r\n <h5 class=\"p-4 pb-2\">\r\n <b>\r\n We need basic information's and headshot for your profile\r\n </b>\r\n <div class=\"form-group form-check agree p-0 mt-3\" *ngIf=\"isBusiness\">\r\n <input [(ngModel)]=\"isCopy\" type=\"checkbox\" name=\"isCopy\" id=\"isCopy\" class=\"form-check-input mt-2\"\r\n (change)=\"changeAddressUser()\">\r\n <label for=\"isCopy\" class=\"form-check-label checkmark\">\r\n Copy From Provider Infromation\r\n </label>\r\n </div>\r\n </h5>\r\n </ul>\r\n <div class=\"profile-field\">\r\n <form [formGroup]=\"userForm\" class=\"form pb-0\">\r\n <div class=\"d-flex flex-wrap justify-content-between row\">\r\n <div class=\"form-group col-md-4 col-sm-12 mt-3 mb-2\">\r\n <input [ngClass]=\"{ 'is-invalid': u.firstName.errors && validatePage == 4 }\" type=\"text\"\r\n class=\"form-control\" placeholder=\"Fist Name\" formControlName=\"firstName\" id=\"firstName\">\r\n <div *ngIf=\" u.firstName.errors && validatePage == 4\" class=\"invalid-feedback\">\r\n <div class=\"ms-1\" *ngIf=\"u.firstName.errors.required\">\r\n First Name is required\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group col-md-4 col-sm-12 mt-3 mb-2\">\r\n <input [ngClass]=\"{ 'is-invalid': u.lastName.errors && validatePage == 4 }\" type=\"text\"\r\n class=\"form-control\" placeholder=\"Last Name\" formControlName=\"lastName\" id=\"lastName\">\r\n <div *ngIf=\" u.lastName.errors && validatePage == 4\" class=\"invalid-feedback\">\r\n <div class=\"ms-1\" *ngIf=\"u.lastName.errors.required\">\r\n Last Name is required\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group col-md-4 col-sm-12 mt-3 mb-2\">\r\n <input [ngClass]=\"{ 'is-invalid': u.email.errors && validatePage == 4 }\" type=\"text\"\r\n class=\"form-control\" placeholder=\"Email\" formControlName=\"email\" id=\"email\">\r\n <div *ngIf=\" u.email.errors && validatePage == 4\" class=\"invalid-feedback\">\r\n <div class=\"ms-1\" *ngIf=\"u.email.errors.required\">\r\n Emai is required\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex flex-wrap justify-content-between row\">\r\n <div class=\"form-group col-md-12 col-sm-12 mt-3 mb-2\">\r\n <input [ngClass]=\"{ 'is-invalid': u.address1.errors && validatePage == 4 }\" [options]=\"options\"\r\n (onAddressChange)=\"AddressChangeUser($event)\" type=\"text\" class=\"form-control\"\r\n placeholder=\"Home Address 1\" formControlName=\"address1\" id=\"address1\" ngx-google-places-autocomplete>\r\n <div *ngIf=\" u.address1.errors && validatePage == 4\" class=\"invalid-feedback\">\r\n <div class=\"ms-1\" *ngIf=\"u.address1.errors.required\">\r\n Home Address 1 is required\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex flex-wrap justify-content-between row\">\r\n <div class=\"form-group col-md-4 col-sm-12 mt-3 mb-2\">\r\n <input type=\"text\" class=\"form-control\" id=\"homeAddress2\" formControlName=\"address2\"\r\n placeholder=\"Home Address 2\">\r\n </div>\r\n <div class=\"form-group col-md-4 col-sm-12 mt-3 mb-2\">\r\n <input [ngClass]=\"{ 'is-invalid': u.city.errors && validatePage == 4}\" type=\"text\" class=\"form-control\"\r\n id=\"City\" placeholder=\"City\" formControlName=\"city\">\r\n <div *ngIf=\" u.city.errors && validatePage ==4\" class=\"invalid-feedback\">\r\n <div class=\"ms-1\" *ngIf=\"u.city.errors.required\">City is required</div>\r\n </div>\r\n </div>\r\n <div class=\"form-group col-md-4 col-sm-12 mt-3 mb-2\">\r\n <input [ngClass]=\"{ 'is-invalid': u.state.errors && validatePage == 4 }\" type=\"text\"\r\n class=\"form-control\" id=\"State\" placeholder=\"State\" formControlName=\"state\">\r\n <div *ngIf=\" u.state.errors && validatePage == 4\" class=\"invalid-feedback\">\r\n <div class=\"ms-1\" *ngIf=\"u.state.errors.required\">State is required</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex flex-wrap justify-content-between row\">\r\n <div class=\"form-group col-md-4 col-sm-12 mt-3 mb-2\">\r\n <input [textMask]=\"{ mask: zipcodeMask }\"\r\n [ngClass]=\"{ 'is-invalid': u.zipcode.errors && validatePage == 4 }\" type=\"text\" class=\"form-control\"\r\n id=\"Zipcode\" placeholder=\"Zipcode\" formControlName=\"zipcode\">\r\n <div *ngIf=\" u.zipcode.errors && validatePage == 4\" class=\"invalid-feedback\">\r\n <div class=\"ms-1\" *ngIf=\"u.zipcode.errors.required\">Zipcode is\r\n required</div>\r\n </div>\r\n </div>\r\n <div class=\"form-group col-md-4 col-sm-12 mt-3 mb-2\">\r\n <input [ngClass]=\"{ 'is-invalid': u.country.errors && validatePage == 4 }\" type=\"text\"\r\n class=\"form-control\" id=\"Country\" placeholder=\"Country\" formControlName=\"country\">\r\n <div *ngIf=\" u.country.errors && validatePage ==4\" class=\"invalid-feedback\">\r\n <div class=\"ms-1\" *ngIf=\"u.country.errors.required\">Country is\r\n required</div>\r\n </div>\r\n </div>\r\n <div class=\"form-group col-md-4 col-sm-12 mt-3 mb-2\">\r\n <input class=\"form-control block shadow-none\" type=\"text\" (input)=\"formatPhone($event,userForm)\"\r\n name=\"inputPhone\" placeholder=\"Phone Number \" id=\"inputPhone\" autocomplete=\"off\"\r\n formControlName=\"phoneNumber\" [maxLength]=\"300\"\r\n [ngClass]=\"{'is-invalid': ( u.phoneNumber.errors && validatePage == 4)}\">\r\n <div *ngIf=\"u.phoneNumber.errors && validatePage == 4\" class=\"invalid-feedback\">\r\n <div class=\"ms-1\" *ngIf=\"u.phoneNumber.errors.required\">\r\n Phone Number is required\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n <div class=\"form-group mb-2 form\">\r\n <input #uploadFile type=\"file\" accept=\".png,.jpg,.jpeg,.svg\" (change)=\"uploadUserImage($event)\"\r\n class=\"upload-initial-input rounded-circle opacity-0 position-absolute\" />\r\n <input (click)=\"uploadImage1.click()\" [(ngModel)]=\"fileName\" readonly type=\"text\" class=\"form-control\"\r\n id=\"upload\" accept=\".png,.jpg,.jpeg,.svg\" placeholder=\"Upload Profile Picture\">\r\n <img #uploadImage1 class=\"upload-image\" (click)=\"uploadFile.click()\" type=\"file\"\r\n src=\"assets/images/icons/upload.svg\" alt=\"Logo\">\r\n <div *ngIf=\"isImageRequired\" class=\"invalid-feedback d-block\">\r\n <div class=\"ms-1\">\r\n Please Upload Profile Image\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"userError\" class=\"invalid-feedback\">\r\n <div>\r\n {{userError}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"footer col-12 col-sm-12 col-md-12 col-xl-12 row justify-content-around footer-view\">\r\n <!-- <div class=\"col-md-3 col-sm-12 pt-3 slider-tab text-center\">\r\n <img class=\"slider-view\" src=\"assets/images/icons/stepper-3.svg\" alt=\"Logo\">\r\n </div> -->\r\n <div class=\"col-5\"></div>\r\n <div class=\"col-md-4 col-sm-12 col-xl-4 text-end\">\r\n <h6>\r\n <button (click)=\"previous()\" class=\"my-2 mx-1\" class=\"btn-close back-tab back-btn btn-sm\">\r\n Back\r\n </button>\r\n \r\n <button class=\"next\" (click)=\"next(5)\" [disabled]=\"showLoader\">\r\n <img style=\"height: 20px; width: 16px;filter: brightness(0) invert(1);\" src=\"assets/images/icons/next.svg\"\r\n alt=\"Logo\">\r\n <span *ngIf=\"showLoader\" class=\"spinner position-absolute\"></span>\r\n\r\n </button>\r\n \r\n </h6>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"view == 5\">\r\n <ul class=\"term-list ps-3\">\r\n <h5>\r\n <b>\r\n Thanks, we got the basics down!\r\n </b>\r\n </h5>\r\n <br>\r\n <b class=\"para-comma\">\r\n Account created successfully. Next step: complete your profile.\r\n <br>\r\n <br>\r\n Profile completion is mandatory to participate in rosters, programs, requests, and platform workflows.\r\n Incomplete profiles will have limited access.\r\n <br>\r\n <br>\r\n You may access your dashboard at any time, but full functionality is available only after completion.\r\n </b>\r\n </ul>\r\n <div class=\"footer col-12 col-sm-12 col-md-12 col-xl-12 row justify-content-around footer-view\">\r\n <!-- <div class=\"col-md-3 col-lg-3 col-xl-3 col-sm-12 text-center\">\r\n <img class=\"slider ml-3\" src=\"assets/images/icons/stepper-4.svg\" alt=\"Logo\">\r\n </div> -->\r\n <div class=\"col-5\"></div>\r\n <div class=\"col-md-4 col-sm-12 col-xl-4 text-end row\">\r\n <div class=\"col-md-2 col-2\">\r\n <h6 style=\"margin-right: 3rem\">\r\n </h6>\r\n </div>\r\n\r\n \r\n <div class=\"col-md-8\">\r\n <h6>\r\n <button (click)=\"dashboard()\" class=\"go-btn btn-sm\">\r\n Go To Home \r\n <img style=\"height: 20px; width: 16px;filter: brightness(0) invert(1);\"\r\n src=\"assets/images/icons/next.svg\" alt=\"Logo\">\r\n </button>\r\n </h6>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- <div>test</div> -->\r\n </ng-container>\r\n <ng-container *ngIf=\"view == 10\">\r\n <app-credentialing (back)=\"onCredentialingBack()\" [data]=\"credentialingData\"></app-credentialing>\r\n </ng-container>\r\n </div>\r\n</div>\r\n\r\n<ng-template #termsAndConditionsModel>\r\n <div class=\"modal-dialog modal-dialog-centered\">\r\n <div class=\"modal-content terms-fixed-modal\">\r\n\r\n <!-- HEADER -->\r\n <div class=\"modal-header\">\r\n <h4 class=\"modal-title fw-bold title-popup\">\r\n {{ termsAndConditionTitle }}\r\n </h4>\r\n </div>\r\n\r\n <!-- SCROLLABLE CONTENT ONLY -->\r\n <div class=\"modal-body terms-scroll-area\" (scroll)=\"onTermsScroll($event)\">\r\n <ng-container *ngIf=\"termsAndConditionTitle == 'Terms and Conditions'\">\r\n <app-terms-conditions [PrivacyAndTerms]=\"privacyAndTerms\" [title]=\"title\" [branding]=\"branding\">\r\n </app-terms-conditions>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"termsAndConditionTitle != 'Terms and Conditions'\">\r\n <app-privacy-policy [PrivacyAndTerms]=\"privacyAndTerms\" [title]=\"title\" [branding]=\"branding\">\r\n </app-privacy-policy>\r\n </ng-container>\r\n </div>\r\n\r\n <!-- FOOTER (NOT SCROLLING) -->\r\n <div>\r\n <div class=\"modal-footer text-end\" style=\"display: block;\">\r\n <!-- YOUR BUTTONS \u2014 UNCHANGED -->\r\n <button type=\"button\" class=\"btn btn-primary btn-sm px-4\"\r\n style=\"background: #d3dae6; color: #98a2b3; border: #D3DAE6 !important;\"\r\n (click)=\"decline(termsAndConditionTitle); modelRef.hide();\">\r\n Decline\r\n </button>\r\n\r\n <button type=\"button\" class=\"btn btn-primary btn-sm px-4\" style=\"color:white;background: #4077AD;\"\r\n [disabled]=\"!isAgreeEnabled\" (click)=\"agree(termsAndConditionTitle); modelRef.hide();\">\r\n Agree\r\n </button>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n</ng-template>", styles: [".brand-name{font-weight:700;font-size:calc(100% + 4px)}.spinner{width:38px;height:38px;border:dotted white;border-top:2px solid #f6f6f6;border-radius:62%;animation:1.7s linear infinite;margin:-9px 0 0 -28px}@keyframes spin{to{transform:rotate(360deg)}}::ng-deep .backdrop{background-color:transparent!important}.filter-black{filter:brightness(.4)!important}.footer-view{margin-top:3rem;margin-left:0;margin-right:0}.footer-signature{margin-top:9rem}.slider-view{width:11rem;margin-left:1px}.container{margin-top:30px}.container .card{border-radius:1.25rem}.container .header{padding:33px 10px 0}.container .header .logo{width:15%;height:80%}.container .form-control{padding:.75rem 1rem;border-color:#a1a1a1}.container .form-control:focus{color:#000;box-shadow:none;border-color:#a1a1a1!important}.container .form-control::placeholder{font-weight:500;font-size:12px;color:#a1a1a1}.container .link{color:#4077ad}.container .link-signup{font-weight:bolder}.container .form-check-label{margin-bottom:0;padding-top:9px}.container .content-view{margin-top:10%}.container .content-description{margin-top:25%}.container .tag-content{color:#fff9e8;margin-left:9%}.container .tag-content p{color:#fff9e8}.container .form-check-input:checked{background-color:#000;border-color:#000}.container .img-tick{margin:-31px 12px 0 -35px}.container .form-check-input[type=checkbox]{border-radius:2px;border:2px solid #000000}.container .form-check-input:focus{box-shadow:none}.container input[type=checkbox]{accent-color:#000000}.term-list{padding:48px 60px 6px 0;margin-left:30px;color:\"#1f1f1fdb\"}.add-tab{padding:75px 75px 6px 1px;margin-left:50px;color:\"#1f1f1fdb\"}.add-tab-view{padding:75px 75px 6px 1px;margin-left:80px;color:\"#1f1f1fdb\"}.inspect-add{margin-top:3rem}.add-btn{font-size:16px;border-radius:5px;transition:.2s;padding:.25rem .5rem;background:#fff;border:1px solid rgba(148,147,147,.1882352941);color:#444;line-height:48px;box-shadow:0 1px 9px #98a2b3;width:9rem}.add-btn:hover{border:1px solid rgba(148,147,147,.1882352941);box-shadow:none}.agree{padding:0 0 8px 47px}.agree .form-check-input[type=checkbox]{border-radius:2px;border:2px solid #98A2B3;width:14px;height:14px;margin:5px 9px 0 -35px}.agree .form-check-input:focus{box-shadow:none}.agree .form-check-input:checked{background-color:#000;border-color:#000}.agree .invalid-feedback{font-size:10px!important;margin:0 0 0 21px}.checkmark{vertical-align:text-bottom;color:#98a2b3;font-weight:500;font-size:12px}.term-signature{padding-left:16rem;padding-right:65px;position:absolute;margin:150px 0 0 50%}.participate-tab{height:135px;width:142px}.card-design{height:147px;width:147px;padding-left:10px;margin-left:42px;background:#fff0;border:2px solid #98A2B3;box-shadow:0 0 4px #98a2b3;border-radius:27px;margin-bottom:42px}.upload{height:39px;margin-top:-4px;width:126px;font-size:12px}.participate-tab{margin-top:-25px}.slider{width:14rem;margin-left:69px}.btn-clear{background:#d3dae6;color:#98a2b3;font-size:12px;border-radius:5px;transition:.2s;padding:6px;border:none;height:auto;width:46%;line-height:28px}.btn-close{background:#f1f4fa;color:#98a2b3;font-size:17px;border-radius:5px;transition:.2s;padding:6px;border:none;height:auto;font-weight:500;width:116px;color:#737a87;line-height:28px}.view-logo{padding-top:1%;padding-bottom:4%;text-align:center}.back-btn{border-radius:45px;height:41px}.next{background:#4077ad;border-radius:30px;height:60px;width:60px;border:white}.profile-field{margin-top:-10px}.profile-field input{line-height:30px;margin:-10px 3px 3px}.load-page{padding:21px 49px 13px 34px}.sign-img{width:291px;height:95px;border-radius:8px;border:1px solid rgba(179,178,178,.33);margin-top:19px}.upload-image{height:16px;width:16px;position:absolute;margin-left:66rem;margin-top:-39px}.para-comma{font-weight:500}.go-btn{border-radius:45px;height:50px;padding:0 20px;background:#4077ad;border:1px solid #4077ad;color:#fff;line-height:28px;font-size:14px;font-weight:500}.text-label{color:#747b83;font-weight:500}.form{padding:20px;border-radius:5px}.form-control:focus{color:#000;box-shadow:none;border-color:#848484!important}.form-control::placeholder{font-weight:500;font-size:12px;color:#bec1be;padding-left:10px}.btn-primary:active{background-color:#50575e}@media screen and (min-width: 500px) and (max-width: 769px){.content-view{background:#0c1620;width:44rem;margin:31px 0 0!important;padding:28px 32px 17px 71px!important;border-radius:29px}.upload-image{margin-left:25rem!important}}@media screen and (min-width: 768px) and (max-width: 1024px){.back-btn{height:31px;width:82px;position:absolute;margin-left:-53px}.back-tab{position:absolute;margin-left:-87px;height:37px}.go-btn{width:175px;height:44px}.term-signature{padding-left:10px}.upload-image{margin-left:40rem}}@media screen and (min-width: 374px) and (max-width: 426px){.head-logo{width:216px;padding-bottom:16px}.slider{visibility:hidden}.back-btn{height:31px;width:82px;position:absolute;margin-left:73px;margin-top:23px}.go-btn{width:175px;height:44px}.upload-image{margin-left:16rem}.term-signature{margin:84% 0 7px 4%}}@media screen and (min-width: 320px) and (max-width: 426px){.footer-signature{margin-top:20rem}.login .head-logo{padding:16px 2px 0;width:38%!important;height:40%!important}.container{margin-top:5px!important}.card{padding:2px!important}.tag-content{margin:3% 0 0!important;background-color:#121b24;border-radius:13px}.img-tick{margin:3px!important}.slider{visibility:hidden}.load-page{padding:0}.head-logo{width:216px;padding-bottom:16px}.back-btn{height:26px;width:71px;position:absolute;margin-left:-17rem!important;font-size:10px;margin-top:23px}.go-btn{width:142px;height:36px;margin-right:-28px;font-size:10px}.add-tab,.add-tab-view{padding:30px 33px 2px 3px;margin-left:15px}.add-btn{width:6rem}.slider-tab{visibility:hidden}.back-tab{margin-left:-14rem;margin-top:1px;font-size:14px;height:39px}.participate-tab{height:96px;width:87px}.card-design{height:124px;width:125px;padding-left:17px;margin-left:30px}.term-signature{padding:22px 22px 13px 27px}.term-list{padding:43px 10px 10px 3px;margin-left:0;text-align:-webkit-center}}@media screen and (min-width: 320px) and (max-width: 376px){.agree{padding:0 0 8px 25px}.participate-tab{height:96px;width:87px}.card-design{height:109px;width:97px;padding-left:4px;margin-left:10px}.card-design h6{font-size:10px;padding-left:14px;font-weight:600}.sign-img{width:270px}.term-list{padding:20px 20px 6px 4px;margin-left:13px}}@media screen and (min-width: 320px) and (max-width: 350px){.upload-image{height:13px;width:11px;margin-left:10rem;margin-top:-35px}.btn-clear{width:92px}.term-signature{margin:84% 0 7px 4%}}.disabled-btn{cursor:not-allowed!important;background:#4077ad!important;color:#fff!important}.modal-dialog .modal-content{border-radius:12px;background:#fff!important;border:1px solid rgba(128,128,128,.3294117647)!important}.title-popup{font-size:18px;color:#0c1620}ul.term-list-data li{padding-bottom:5px;font-size:13px;font-weight:500;line-height:21px}ol,ul,dl{margin-top:0;margin-bottom:1rem}::ng-deep .modal-content{background:none!important;width:100%;border:none}.hidden-view{display:none}.header-container{position:relative;padding:20px}.view-logo{text-align:center}.logout-button{top:20px;right:20px;position:absolute}.logout-button button{background:none;border:none;font-size:16px;display:flex;align-items:center;cursor:pointer}.logout-button img{margin-right:5px;height:20px}.user-card{align-items:center;color:#4077ad;cursor:pointer}.user-cards-active{background:#4077ad;color:#fff}.save-btn.upload{border:1px solid #4077AD;background-color:#4077ad;color:#fff;border-radius:5px;background:#4077ad;padding:4px 10px;display:inline-flex;align-items:center;gap:6px}.save-btn.upload img{filter:brightness(0) invert(1)}.form-check.agree{display:flex;align-items:flex-start;gap:8px;margin-bottom:8px}.form-check.agree .form-check-input{margin-top:4px;flex-shrink:0}.form-check.agree .form-check-label{line-height:1.4;cursor:pointer;white-space:normal}.spinner-16{width:16px;height:16px}.h6-buttons{display:flex;align-items:center;gap:8px}.form-check.agree{display:flex;align-items:flex-start;margin-bottom:14px}.form-check-input{position:absolute;opacity:0;cursor:pointer}.form-check-label{position:relative;padding-left:28px;cursor:pointer;font-size:14px;line-height:20px;color:#212529;-webkit-user-select:none;user-select:none}.form-check-label:before{content:\"\";position:absolute;left:0;top:8px;width:18px;height:18px;border:2px solid #adb5bd;border-radius:4px;background:#fff;transition:all .2s ease}.form-check-label:after{content:\"\";position:absolute;left:5px;top:10px;width:6px;height:10px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg) scale(0);transition:transform .15s ease}.form-check-input:checked+.form-check-label:before{background-color:#4077ad;border-color:#4077ad}.form-check-input:checked+.form-check-label:after{transform:rotate(45deg) scale(1)}.form-check-label:hover:before{border-color:#4077ad}.form-check-input:focus+.form-check-label:before{box-shadow:0 0 0 3px #0d6efd40}.form-check-input.is-invalid+.form-check-label:before{border-color:#dc3545}.form-check-input.is-invalid:checked+.form-check-label:before{background-color:#dc3545}.invalid-feedback{display:block;font-size:12px;margin-left:7px;margin-top:4px}::ng-deep .modal-dialog{max-width:750px}.user-cards-active{background-color:#4077ad;color:#fff;border:2px solid #4077AD}.terms-fixed-modal{width:1080px;height:700px;display:flex;flex-direction:column}.terms-scroll-area{flex:1 1 auto;overflow-y:auto;padding:16px}body.modal-open{overflow:hidden!important}.modal{z-index:1055!important}.modal-backdrop{z-index:1050!important}.modal-dialog{margin:auto;pointer-events:auto}.modal-content{position:relative;z-index:1060}.logout-container{display:flex;justify-content:flex-end}.logout-wrapper{display:flex;align-items:center;cursor:pointer;gap:6px}.logout-icon{width:20px;height:20px;background:url(/assets/images/icons/logoutt.svg) no-repeat center;background-size:contain}@media screen and (max-width: 767px){.term-signature{padding-left:3rem;padding-right:0;position:unset;margin:0}.footer-signature{margin-top:0rem}.disabled-btn{position:absolute;bottom:13px;right:24px}.next{height:46px;width:46px;position:absolute;bottom:21px;right:35px}.mob{padding-bottom:4.5rem!important}.checkmark{width:85%}.terms-fixed-modal{width:unset}::ng-deep .privacy-policy-modal .logo-section{margin-bottom:0!important}.add-tab-view{padding:30px 25px 6px;margin-left:0}.user-card{width:96%}.footer .btn-mob{display:flex;align-items:center}.back-btn{position:absolute;bottom:21px;left:10px}.actions{margin:50px 34px 1px}}@media screen and (min-width: 768px) and (max-width: 1024px){.footer-signature{margin-top:3rem}}\n"], dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.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: i3.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.CheckboxRequiredValidator, selector: "input[type=checkbox][required][formControlName],input[type=checkbox][required][formControl],input[type=checkbox][required][ngModel]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i10.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "component", type: i13.AccordionComponent, selector: "accordion", inputs: ["isAnimated", "closeOthers"] }, { kind: "component", type: i13.AccordionPanelComponent, selector: "accordion-group, accordion-panel", inputs: ["heading", "panelClass", "isDisabled", "isOpen"], outputs: ["isOpenChange"] }, { kind: "directive", type: GooglePlaceDirective, selector: "[ngx-google-places-autocomplete]", inputs: ["options"], outputs: ["onAddressChange"], exportAs: ["ngx-places"] }, { kind: "directive", type: MaskedInputDirective, selector: "[textMask]", inputs: ["textMask"], exportAs: ["textMask"] }, { kind: "component", type: TermsConditionsComponent, selector: "app-terms-conditions", inputs: ["title", "branding", "PrivacyAndTerms"] }, { kind: "component", type: PrivacyPolicyComponent, selector: "app-privacy-policy", inputs: ["title", "branding", "PrivacyAndTerms"] }, { kind: "component", type: CredentialingComponent, selector: "app-credentialing", inputs: ["data"], outputs: ["back"] }] });
|
|
30157
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: InitialProcessComponent, deps: [{ token: i2.Router }, { token: UserDetailService }, { token: i8.FormBuilder }, { token: FileService }, { token: ProvidersService$1 }, { token: RolesService }, { token: i7.BsModalService }, { token: ProviderContractorSubCategoryService }, { token: ProviderContractorSubCategoryService }, { token: i9.AuthService }, { token: i6.TokenService }, { token: i6.RoleContextService }, { token: i6.AuthLogoutService }, { token: LIBRARY_CONFIG }], target: i0.ɵɵFactoryTarget.Component });
|
|
30158
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: InitialProcessComponent, isStandalone: false, selector: "app-initial-process", viewQueries: [{ propertyName: "canvasRef", first: true, predicate: ["canvas"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div class=\"container\">\r\n <div class=\"mb-4 logout-container\" *ngIf=\"showlogout\">\r\n <span class=\"logout-wrapper\" (click)=\"logout()\">\r\n <span class=\"logout-icon\"></span>\r\n <span class=\"logout-text\">Logout</span>\r\n </span>\r\n </div>\r\n <div class=\"card pb-2 mob pr-5\" style=\"margin-bottom: 30px;\">\r\n <ng-container class=\"load-page\" [style.visibility]=\"view == 1 ? 'visible' : 'hidden' \">\r\n <ul class=\"term-list para-comma\" [ngClass]=\"view == 1 ? '' : 'hidden-view'\">\r\n Thanks for joining\r\n <span class=\"brand-name\">{{ branding.displayName }}</span>.\r\n Our members and service providers rely on accurate info in your profile to\r\n connect you with work that suits your capabilities. Keep your profile\r\n complete, skills updated, licenses current, photos and logos professional,\r\n and schedule up to date.\r\n </ul>\r\n <div class=\"row col-12 mt-4\" [ngClass]=\"view == 1 ? '' : 'hidden-view' \">\r\n <div class=\"col-md-6 col-lg-6 col-sm-12\">\r\n <div class=\"form-group form-check agree\">\r\n <input #acceptTerms=\"ngModel\" [ngClass]=\"{ 'is-invalid': !model.acceptTerms && validatePage==1 }\"\r\n [(ngModel)]=\"model.acceptTerms\" type=\"checkbox\" name=\"acceptTerms\" id=\"acceptTerms\"\r\n class=\"form-check-input\" (click)=\"openModal(termsAndConditionsModel,'Terms and Conditions',$event)\"\r\n required>\r\n <label for=\"acceptTerms\" class=\"form-check-label checkmark pointer\"\r\n (click)=\"openModal(termsAndConditionsModel,'Terms and Conditions',$event)\">\r\n I agree to Terms and Conditions\r\n </label>\r\n <!-- <div *ngIf=\"!model.acceptTerms && validatePage==1\" class=\"invalid-feedback\">\r\n Accept Terms & Conditions is required\r\n </div> -->\r\n </div>\r\n <div class=\"form-group form-check agree\">\r\n <input #privacy=\"ngModel\" [ngClass]=\"{ 'is-invalid':!model.privacy && validatePage==1}\"\r\n (click)=\"openModal(termsAndConditionsModel,'Privacy Statement',$event)\" [(ngModel)]=\"model.privacy\"\r\n type=\"checkbox\" name=\"privacy\" id=\"privacy\" class=\"form-check-input\" required>\r\n <label for=\"privacy\" class=\"form-check-label checkmark pointer\"\r\n (click)=\"openModal(termsAndConditionsModel,'Privacy Statement',$event)\">\r\n I agree to Privacy Statement\r\n </label>\r\n <!-- <div *ngIf=\"!model.privacy && validatePage==1\" class=\"invalid-feedback\">\r\n Accept Privacy Statement\r\n </div> -->\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"footer col-12 col-sm-12 col-md-12 col-xl-12 justify-content-between row footer-signature\"\r\n [ngClass]=\"view == 1 ? '' : 'hidden-view' \">\r\n <!-- <div class=\"col-md-3 col-sm-3 slider-tab\">\r\n </div> -->\r\n\r\n <div class=\"col-6\"></div>\r\n <div class=\"col-md-12 col-sm-12 col-xl-3 text-end\">\r\n <h6>\r\n <button class=\"next\" (click)=\" next(2)\"\r\n [ngClass]=\"(((!points || !points?.length || points.length ==0) && !fileData ) || !model.acceptTerms || !model.privacy) ? 'disabled-btn':''\">\r\n <img style=\"height: 20px; width: 16px;filter: brightness(0) invert(1);\" src=\"assets/images/icons/next.svg\"\r\n alt=\"Logo\">\r\n </button> \r\n </h6>\r\n </div>\r\n </div>\r\n <ng-container>\r\n <div class=\"term-signature col-md-6 col-lg-6 col-sm-12\" [ngClass]=\"view == 1 ? '' : 'hidden-view' \">\r\n <h6 class=\"checkmark\">Signature</h6>\r\n <div [ngClass]=\"{ 'd-none': signaturePadData?.publicUrl }\" class=\"sign-img mb-2\">\r\n <canvas #canvas [width]=\"255\" [height]=\"90\"></canvas>\r\n </div>\r\n <div [ngClass]=\"{ 'd-none': !signaturePadData?.publicUrl }\" class=\"mb-2\">\r\n <img [width]=\"255\" [height]=\"120\" [src]=\"signaturePadData?.publicUrl\" style=\"position: relative\" alt>\r\n </div>\r\n <h6 class=\"d-flex align-items-center gap-2\">\r\n <button (click)=\"clearPad()\" class=\"btn-clear btn-sm\">\r\n Clear\r\n </button>\r\n\r\n <!-- <button (click)=\"uploadImage.click()\" class=\"save-btn upload btn-sm\">\r\n <img src=\"assets/images/icons/upload.svg\" alt=\"Upload\">\r\n Upload\r\n <input #uploadImage type=\"file\" class=\"image-upload d-none\" accept=\"image/*\"\r\n (change)=\"uploadSignImage($event)\">\r\n </button> -->\r\n </h6>\r\n\r\n <div *ngIf=\"validatePage==1 && (!points || !points?.length || points.length ==0) && !fileData\"\r\n class=\"invalid-feedback d-block\">\r\n Signature is required\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"view == 2\">\r\n <div class=\"add-tab-view \">\r\n <ul>\r\n <h5>\r\n <b>\r\n Please choose the relevant sections in which you wish to\r\n participate\r\n </b>\r\n </h5>\r\n <br>\r\n <b class=\"para-comma\">\r\n Choose the areas you'd like to be part of \u2014 whether it's programs, services, events, or collaborations,\r\n you're in control of your involvement.\r\n <br>\r\n connect your business to others and prospective clients.\r\n </b>\r\n </ul>\r\n\r\n <div class=\"row mt-4\">\r\n <ng-container *ngFor=\"let userType of userViewRoles\">\r\n <div class=\"card card-design text-center user-card mx-2 my-2\"\r\n [ngClass]=\"userType.value === selectedRoleValue ? 'user-cards-active' : ''\"\r\n (click)=\"selectedUserRole(userType)\">\r\n <img [src]=\"userType?.img\" class=\"mb-2 mt-2\" style=\"width: 70px;height: 70px;\">\r\n <h6 class=\"m-0 mt-2\">{{userType.name}}</h6>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <!-- <h6 class=\"inspect-add\">\r\n <button (click)=\"next(3);isBusiness=true;\" class=\"add-btn btn-sm\">\r\n Yes\r\n </button>\r\n \r\n <button (click)=\"isBusiness=false;view = 4;\" class=\"add-btn btn-sm\">\r\n No\r\n </button>\r\n </h6> -->\r\n </div>\r\n <div class=\"footer col-12 col-sm-12 col-md-12 col-xl-12 row justify-content-around footer-view\">\r\n <!-- <div class=\"col-md-3 col-sm-12 slider-tab text-center\">\r\n <img class=\"slider-view\" src=\"assets/images/icons/stepper-1.svg\" alt=\"Logo\">\r\n </div> -->\r\n <div class=\"col-5\"></div>\r\n <div class=\"col-md-4 col-sm-12 col-xl-4 text-end\">\r\n <h6>\r\n <button (click)=\"previous()\" class=\"my-2 mx-1\" class=\"btn-close back-tab back-btn btn-sm\">\r\n Back\r\n </button>\r\n \r\n <button (click)=\"next(3)\" class=\"next\" [disabled]=\"!isUserSelected\"\r\n [ngClass]=\"!isUserSelected ? 'disabled-btn':''\">\r\n <img style=\"height: 20px; width: 16px;filter: brightness(0) invert(1);\" src=\"assets/images/icons/next.svg\"\r\n alt=\"Logo\">\r\n </button>\r\n \r\n </h6>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"view == 3\">\r\n <form [formGroup]=\"companyForm\" class=\"form\">\r\n <div class=\"term-list \">\r\n <ul>\r\n <h5>\r\n <b>\r\n Enter your business information here.\r\n </b>\r\n </h5>\r\n <br>\r\n </ul>\r\n <div class=\"profile-field\">\r\n <div class=\"d-flex flex-wrap justify-content-between row\">\r\n <div class=\"form-group col-md-6 col-sm-12 mt-3 mb-2\">\r\n <input [ngClass]=\"{'is-invalid': ( f.companyName.errors && validatePage == 3) || providerError}\"\r\n type=\"text\" class=\"form-control\" id=\"companyName\" placeholder=\"Company Name\"\r\n formControlName=\"companyName\">\r\n <div *ngIf=\" f.companyName.errors && validatePage == 3\" class=\"invalid-feedback\">\r\n <div *ngIf=\"f.companyName.errors.required\">\r\n Company Name is required\r\n </div>\r\n <div *ngIf=\"f.companyName.errors.minlength\">\r\n Company Name must be at least 2 characters\r\n </div>\r\n <div *ngIf=\"f.companyName.errors.maxLength\">\r\n Company Name must be less than 100 characters\r\n </div>\r\n </div>\r\n <div *ngIf=\"providerError\" class=\"invalid-feedback\">\r\n <div>\r\n {{providerError}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group col-md-6 col-sm-12 mt-3 mb-2\">\r\n <input class=\"form-control block fw-medium shadow-none\" type=\"text\" name=\"inputPhone\"\r\n placeholder=\"Company Phone Number\" id=\"inputPhone\" autocomplete=\"off\" formControlName=\"phoneNumber\"\r\n [maxLength]=\"14\" (input)=\"formatPhone($event,companyForm)\"\r\n [ngClass]=\"{'is-invalid': (f.phoneNumber.errors && validatePage == 3) || providerError}\" />\r\n <div *ngIf=\"f.phoneNumber.errors && validatePage == 3\" class=\"invalid-feedback\">\r\n <div *ngIf=\"f.phoneNumber.errors.required\">\r\n Phone Number is required\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group col-md-6 col-sm-12 mt-3 mb-2\">\r\n <input [ngClass]=\"{ 'is-invalid': f.address1.errors&& validatePage == 3 }\" type=\"text\"\r\n class=\"form-control\" id=\"businessAddress\" ngx-google-places-autocomplete [options]='options'\r\n (onAddressChange)=\"AddressChange($event)\" placeholder=\"Business Address 1\" formControlName=\"address1\">\r\n <div *ngIf=\" f.address1.errors && validatePage == 3\" class=\"invalid-feedback\">\r\n <div *ngIf=\"f.address1.errors.required\">\r\n Business Address 1 is required\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group col-md-6 col-sm-12 mt-3 mb-2\">\r\n <input type=\"text\" class=\"form-control\" id=\"businessAddress2\" placeholder=\"Business Address 2\">\r\n </div>\r\n </div>\r\n <div class=\"d-flex flex-wrap justify-content-between row\">\r\n <div class=\"form-group col-md-6 col-sm-12 mt-3 mb-2\">\r\n <input [ngClass]=\"{ 'is-invalid': f.city.errors&& validatePage == 3 }\" type=\"text\" class=\"form-control\"\r\n id=\"City\" placeholder=\"City\" formControlName=\"city\">\r\n <div *ngIf=\" f.city.errors && validatePage == 3\" class=\"invalid-feedback\">\r\n <div *ngIf=\"f.city.errors.required\">City is required</div>\r\n </div>\r\n </div>\r\n <div class=\"form-group col-md-6 col-sm-12 mt-3 mb-2\">\r\n <input [ngClass]=\"{ 'is-invalid': f.state.errors&& validatePage == 3 }\" type=\"text\"\r\n class=\"form-control\" id=\"State\" placeholder=\"State\" formControlName=\"state\">\r\n <div *ngIf=\" f.state.errors && validatePage == 3\" class=\"invalid-feedback\">\r\n <div *ngIf=\"f.state.errors.required\">State is required</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex flex-wrap justify-content-between row\">\r\n <div class=\"form-group col-md-6 col-sm-12 mt-3 mb-2\">\r\n <input [textMask]=\"{ mask: zipcodeMask }\"\r\n [ngClass]=\"{ 'is-invalid': f.zipcode.errors&& validatePage == 3 }\" type=\"text\" class=\"form-control\"\r\n id=\"Zipcode\" placeholder=\"Zipcode\" formControlName=\"zipcode\">\r\n <div *ngIf=\" f.zipcode.errors && validatePage == 3\" class=\"invalid-feedback\">\r\n <div *ngIf=\"f.zipcode.errors.required\">Zipcode is\r\n required</div>\r\n </div>\r\n </div>\r\n <div class=\"form-group col-md-6 col-sm-12 mt-3 mb-2\">\r\n <input [ngClass]=\"{ 'is-invalid': f.country.errors && validatePage == 3}\" type=\"text\"\r\n class=\"form-control\" id=\"Country\" placeholder=\"Country\" formControlName=\"country\">\r\n <div *ngIf=\" f.country.errors && validatePage == 3\" class=\"invalid-feedback\">\r\n <div *ngIf=\"f.country.errors.required\">Country is\r\n required</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n <div class=\"profile-field\">\r\n <div class=\"form-group mb-2 form\" style=\"margin-left: 26px;margin-right: 52px;\">\r\n <input #uploadLogoInput type=\"file\" accept=\".png,.jpg,.jpeg,.svg\" (change)=\"uploadLogo($event)\"\r\n class=\"upload-initial-input rounded-circle opacity-0 position-absolute\" />\r\n\r\n <input (click)=\"uploadImage2.click()\" [(ngModel)]=\"logoName\" readonly type=\"text\" class=\"form-control\"\r\n placeholder=\"Upload Company Logo\">\r\n\r\n <img #uploadImage2 class=\"upload-image\" (click)=\"uploadLogoInput.click()\" src=\"assets/images/icons/upload.svg\"\r\n alt=\"Logo\">\r\n <div *ngIf=\"isLogoRequired\" class=\"invalid-feedback d-block\">\r\n <div class=\"ms-1\">\r\n Please Upload Company Logo\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"isneeded\" style=\"margin-left: 47px;\r\n margin-top: -20px;\" class=\"invalid-feedback\">\r\n <div>Company Logo is\r\n required</div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"selectedRole?.name == 'Contractor'\" style=\"padding: 0px 20px;border-radius: 5px;\">\r\n <div class=\"term-list pt-0\">\r\n <h5>\r\n <b>\r\n Contractor Category\r\n </b>\r\n </h5>\r\n <div class=\"profile-field\">\r\n <div class=\"d-flex flex-wrap justify-content-between row\">\r\n <div class=\"form-group col-md-12 col-sm-12 mb-2\">\r\n <label></label>\r\n <ng-select [items]=\"contractorSubCategories\" bindLabel=\"name\" [multiple]=\"true\" [closeOnSelect]=\"false\"\r\n placeholder=\"Select Contractor Category\" (ngModelChange)=\"changeContractor($event)\"\r\n [(ngModel)]=\"selectedContractorCategories\">\r\n </ng-select>\r\n </div>\r\n </div>\r\n <accordion [isAnimated]=\"false\">\r\n <ng-container *ngFor=\"let item of selectedContractorCategories;let i=index\">\r\n <accordion-group [isOpen]=\"true\">\r\n <button accordion-heading class=\"w-100\" style=\"font-size: 16px;font-weight: 600;\">\r\n <div class=\"w-100 mt-2\">\r\n <div class=\"backdrop\">\r\n <input type=\"checkbox\" [(ngModel)]=\"item.selectAll\" [name]=\"item?.id\" [id]=\"item?.id\"\r\n (change)=\"selectAll($event,item?.items)\">\r\n <label [for]=\"item?.id\"> {{item?.name}}</label>\r\n </div>\r\n </div>\r\n </button>\r\n <div class=\"row\">\r\n <div class=\"backdrop col-4 form-control-sm\" *ngFor=\"let subItem of item?.items\">\r\n <input type=\"checkbox\" [(ngModel)]=\"subItem.selected\" [name]=\"subItem?.id\" [id]=\"subItem?.id\"\r\n (change)=\"unCheckedEvent($event,item)\">\r\n <label [for]=\"subItem?.id\"> {{subItem?.name}}</label>\r\n </div>\r\n </div>\r\n </accordion-group>\r\n </ng-container>\r\n </accordion>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"footer col-12 col-sm-12 col-md-12 col-xl-12 row justify-content-around footer-view\">\r\n <!-- <div class=\"col-md-3 col-sm-12 slider-tab text-center\">\r\n <img class=\"slider-view\" src=\"assets/images/icons/stepper-2.svg\" alt=\"Logo\">\r\n </div> -->\r\n <div class=\"col-5\"></div>\r\n <div class=\"col-md-4 col-sm-12 col-xl-4 text-end\">\r\n <h6 class=\"btn-mob\">\r\n <button (click)=\"previous()\" class=\"my-2 mx-1\" class=\"btn-close back-tab back-btn btn-sm\">\r\n Back\r\n </button>\r\n \r\n <button class=\" next\" (click)=\"next(4)\">\r\n <img style=\"height: 20px; width: 16px;filter: brightness(0) invert(1);\" src=\"assets/images/icons/next.svg\"\r\n alt=\"Logo\">\r\n </button>\r\n \r\n </h6>\r\n </div>\r\n </div>\r\n\r\n </ng-container>\r\n <ng-container *ngIf=\"view == 4\">\r\n\r\n <div class=\"add-tab \">\r\n <ul>\r\n <h5 class=\"p-4 pb-2\">\r\n <b>\r\n We need basic information's and headshot for your profile\r\n </b>\r\n <div class=\"form-group form-check agree p-0 mt-3\" *ngIf=\"isBusiness\">\r\n <input [(ngModel)]=\"isCopy\" type=\"checkbox\" name=\"isCopy\" id=\"isCopy\" class=\"form-check-input mt-2\"\r\n (change)=\"changeAddressUser()\">\r\n <label for=\"isCopy\" class=\"form-check-label checkmark\">\r\n Copy From Provider Infromation\r\n </label>\r\n </div>\r\n </h5>\r\n </ul>\r\n <div class=\"profile-field\">\r\n <form [formGroup]=\"userForm\" class=\"form pb-0\">\r\n <div class=\"d-flex flex-wrap justify-content-between row\">\r\n <div class=\"form-group col-md-4 col-sm-12 mt-3 mb-2\">\r\n <input [ngClass]=\"{ 'is-invalid': u.firstName.errors && validatePage == 4 }\" type=\"text\"\r\n class=\"form-control\" placeholder=\"Fist Name\" formControlName=\"firstName\" id=\"firstName\">\r\n <div *ngIf=\" u.firstName.errors && validatePage == 4\" class=\"invalid-feedback\">\r\n <div class=\"ms-1\" *ngIf=\"u.firstName.errors.required\">\r\n First Name is required\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group col-md-4 col-sm-12 mt-3 mb-2\">\r\n <input [ngClass]=\"{ 'is-invalid': u.lastName.errors && validatePage == 4 }\" type=\"text\"\r\n class=\"form-control\" placeholder=\"Last Name\" formControlName=\"lastName\" id=\"lastName\">\r\n <div *ngIf=\" u.lastName.errors && validatePage == 4\" class=\"invalid-feedback\">\r\n <div class=\"ms-1\" *ngIf=\"u.lastName.errors.required\">\r\n Last Name is required\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group col-md-4 col-sm-12 mt-3 mb-2\">\r\n <input [ngClass]=\"{ 'is-invalid': u.email.errors && validatePage == 4 }\" type=\"text\"\r\n class=\"form-control\" placeholder=\"Email\" formControlName=\"email\" id=\"email\">\r\n <div *ngIf=\" u.email.errors && validatePage == 4\" class=\"invalid-feedback\">\r\n <div class=\"ms-1\" *ngIf=\"u.email.errors.required\">\r\n Emai is required\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex flex-wrap justify-content-between row\">\r\n <div class=\"form-group col-md-12 col-sm-12 mt-3 mb-2\">\r\n <input [ngClass]=\"{ 'is-invalid': u.address1.errors && validatePage == 4 }\" [options]=\"options\"\r\n (onAddressChange)=\"AddressChangeUser($event)\" type=\"text\" class=\"form-control\"\r\n placeholder=\"Home Address 1\" formControlName=\"address1\" id=\"address1\" ngx-google-places-autocomplete>\r\n <div *ngIf=\" u.address1.errors && validatePage == 4\" class=\"invalid-feedback\">\r\n <div class=\"ms-1\" *ngIf=\"u.address1.errors.required\">\r\n Home Address 1 is required\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex flex-wrap justify-content-between row\">\r\n <div class=\"form-group col-md-4 col-sm-12 mt-3 mb-2\">\r\n <input type=\"text\" class=\"form-control\" id=\"homeAddress2\" formControlName=\"address2\"\r\n placeholder=\"Home Address 2\">\r\n </div>\r\n <div class=\"form-group col-md-4 col-sm-12 mt-3 mb-2\">\r\n <input [ngClass]=\"{ 'is-invalid': u.city.errors && validatePage == 4}\" type=\"text\" class=\"form-control\"\r\n id=\"City\" placeholder=\"City\" formControlName=\"city\">\r\n <div *ngIf=\" u.city.errors && validatePage ==4\" class=\"invalid-feedback\">\r\n <div class=\"ms-1\" *ngIf=\"u.city.errors.required\">City is required</div>\r\n </div>\r\n </div>\r\n <div class=\"form-group col-md-4 col-sm-12 mt-3 mb-2\">\r\n <input [ngClass]=\"{ 'is-invalid': u.state.errors && validatePage == 4 }\" type=\"text\"\r\n class=\"form-control\" id=\"State\" placeholder=\"State\" formControlName=\"state\">\r\n <div *ngIf=\" u.state.errors && validatePage == 4\" class=\"invalid-feedback\">\r\n <div class=\"ms-1\" *ngIf=\"u.state.errors.required\">State is required</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex flex-wrap justify-content-between row\">\r\n <div class=\"form-group col-md-4 col-sm-12 mt-3 mb-2\">\r\n <input [textMask]=\"{ mask: zipcodeMask }\"\r\n [ngClass]=\"{ 'is-invalid': u.zipcode.errors && validatePage == 4 }\" type=\"text\" class=\"form-control\"\r\n id=\"Zipcode\" placeholder=\"Zipcode\" formControlName=\"zipcode\">\r\n <div *ngIf=\" u.zipcode.errors && validatePage == 4\" class=\"invalid-feedback\">\r\n <div class=\"ms-1\" *ngIf=\"u.zipcode.errors.required\">Zipcode is\r\n required</div>\r\n </div>\r\n </div>\r\n <div class=\"form-group col-md-4 col-sm-12 mt-3 mb-2\">\r\n <input [ngClass]=\"{ 'is-invalid': u.country.errors && validatePage == 4 }\" type=\"text\"\r\n class=\"form-control\" id=\"Country\" placeholder=\"Country\" formControlName=\"country\">\r\n <div *ngIf=\" u.country.errors && validatePage ==4\" class=\"invalid-feedback\">\r\n <div class=\"ms-1\" *ngIf=\"u.country.errors.required\">Country is\r\n required</div>\r\n </div>\r\n </div>\r\n <div class=\"form-group col-md-4 col-sm-12 mt-3 mb-2\">\r\n <input class=\"form-control block shadow-none\" type=\"text\" (input)=\"formatPhone($event,userForm)\"\r\n name=\"inputPhone\" placeholder=\"Phone Number \" id=\"inputPhone\" autocomplete=\"off\"\r\n formControlName=\"phoneNumber\" [maxLength]=\"300\"\r\n [ngClass]=\"{'is-invalid': ( u.phoneNumber.errors && validatePage == 4)}\">\r\n <div *ngIf=\"u.phoneNumber.errors && validatePage == 4\" class=\"invalid-feedback\">\r\n <div class=\"ms-1\" *ngIf=\"u.phoneNumber.errors.required\">\r\n Phone Number is required\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n <div class=\"form-group mb-2 form\">\r\n <input #uploadFile type=\"file\" accept=\".png,.jpg,.jpeg,.svg\" (change)=\"uploadUserImage($event)\"\r\n class=\"upload-initial-input rounded-circle opacity-0 position-absolute\" />\r\n <input (click)=\"uploadImage1.click()\" [(ngModel)]=\"fileName\" readonly type=\"text\" class=\"form-control\"\r\n id=\"upload\" accept=\".png,.jpg,.jpeg,.svg\" placeholder=\"Upload Profile Picture\">\r\n <img #uploadImage1 class=\"upload-image\" (click)=\"uploadFile.click()\" type=\"file\"\r\n src=\"assets/images/icons/upload.svg\" alt=\"Logo\">\r\n <div *ngIf=\"isImageRequired\" class=\"invalid-feedback d-block\">\r\n <div class=\"ms-1\">\r\n Please Upload Profile Image\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"userError\" class=\"invalid-feedback\">\r\n <div>\r\n {{userError}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"footer col-12 col-sm-12 col-md-12 col-xl-12 row justify-content-around footer-view\">\r\n <!-- <div class=\"col-md-3 col-sm-12 pt-3 slider-tab text-center\">\r\n <img class=\"slider-view\" src=\"assets/images/icons/stepper-3.svg\" alt=\"Logo\">\r\n </div> -->\r\n <div class=\"col-5\"></div>\r\n <div class=\"col-md-4 col-sm-12 col-xl-4 text-end\">\r\n <h6>\r\n <button (click)=\"previous()\" class=\"my-2 mx-1\" class=\"btn-close back-tab back-btn btn-sm\">\r\n Back\r\n </button>\r\n \r\n <button class=\"next\" (click)=\"next(5)\" [disabled]=\"showLoader\">\r\n <img style=\"height: 20px; width: 16px;filter: brightness(0) invert(1);\" src=\"assets/images/icons/next.svg\"\r\n alt=\"Logo\">\r\n <span *ngIf=\"showLoader\" class=\"spinner position-absolute\"></span>\r\n\r\n </button>\r\n \r\n </h6>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"view == 5\">\r\n <ul class=\"term-list ps-3\">\r\n <h5>\r\n <b>\r\n Thanks, we got the basics down!\r\n </b>\r\n </h5>\r\n <br>\r\n <b class=\"para-comma\">\r\n Account created successfully. Next step: complete your profile.\r\n <br>\r\n <br>\r\n Profile completion is mandatory to participate in rosters, programs, requests, and platform workflows.\r\n Incomplete profiles will have limited access.\r\n <br>\r\n <br>\r\n You may access your dashboard at any time, but full functionality is available only after completion.\r\n </b>\r\n </ul>\r\n <div class=\"footer col-12 col-sm-12 col-md-12 col-xl-12 row justify-content-around footer-view\">\r\n <!-- <div class=\"col-md-3 col-lg-3 col-xl-3 col-sm-12 text-center\">\r\n <img class=\"slider ml-3\" src=\"assets/images/icons/stepper-4.svg\" alt=\"Logo\">\r\n </div> -->\r\n <div class=\"col-5\"></div>\r\n <div class=\"col-md-4 col-sm-12 col-xl-4 text-end row\">\r\n <div class=\"col-md-2 col-2\">\r\n <h6 style=\"margin-right: 3rem\">\r\n </h6>\r\n </div>\r\n\r\n \r\n <div class=\"col-md-8\">\r\n <h6>\r\n <button (click)=\"dashboard()\" class=\"go-btn btn-sm\">\r\n Go To Home \r\n <img style=\"height: 20px; width: 16px;filter: brightness(0) invert(1);\"\r\n src=\"assets/images/icons/next.svg\" alt=\"Logo\">\r\n </button>\r\n </h6>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- <div>test</div> -->\r\n </ng-container>\r\n <ng-container *ngIf=\"view == 10\">\r\n <app-credentialing (back)=\"onCredentialingBack()\" [data]=\"credentialingData\"></app-credentialing>\r\n </ng-container>\r\n </div>\r\n</div>\r\n\r\n<ng-template #termsAndConditionsModel>\r\n <div class=\"modal-dialog modal-dialog-centered\">\r\n <div class=\"modal-content terms-fixed-modal\">\r\n\r\n <!-- HEADER -->\r\n <div class=\"modal-header\">\r\n <h4 class=\"modal-title fw-bold title-popup\">\r\n {{ termsAndConditionTitle }}\r\n </h4>\r\n </div>\r\n\r\n <!-- SCROLLABLE CONTENT ONLY -->\r\n <div class=\"modal-body terms-scroll-area\" (scroll)=\"onTermsScroll($event)\">\r\n <ng-container *ngIf=\"termsAndConditionTitle == 'Terms and Conditions'\">\r\n <app-terms-conditions [PrivacyAndTerms]=\"privacyAndTerms\" [title]=\"title\" [branding]=\"branding\">\r\n </app-terms-conditions>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"termsAndConditionTitle != 'Terms and Conditions'\">\r\n <app-privacy-policy [PrivacyAndTerms]=\"privacyAndTerms\" [title]=\"title\" [branding]=\"branding\">\r\n </app-privacy-policy>\r\n </ng-container>\r\n </div>\r\n\r\n <!-- FOOTER (NOT SCROLLING) -->\r\n <div>\r\n <div class=\"modal-footer text-end\" style=\"display: block;\">\r\n <!-- YOUR BUTTONS \u2014 UNCHANGED -->\r\n <button type=\"button\" class=\"btn btn-primary btn-sm px-4\"\r\n style=\"background: #d3dae6; color: #98a2b3; border: #D3DAE6 !important;\"\r\n (click)=\"decline(termsAndConditionTitle); modelRef.hide();\">\r\n Decline\r\n </button>\r\n\r\n <button type=\"button\" class=\"btn btn-primary btn-sm px-4\" style=\"color:white;background: #4077AD;\"\r\n [disabled]=\"!isAgreeEnabled\" (click)=\"agree(termsAndConditionTitle); modelRef.hide();\">\r\n Agree\r\n </button>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n</ng-template>", styles: [".brand-name{font-weight:700;font-size:calc(100% + 4px)}.spinner{width:38px;height:38px;border:dotted white;border-top:2px solid #f6f6f6;border-radius:62%;animation:1.7s linear infinite;margin:-9px 0 0 -28px}@keyframes spin{to{transform:rotate(360deg)}}::ng-deep .backdrop{background-color:transparent!important}.filter-black{filter:brightness(.4)!important}.footer-view{margin-top:3rem;margin-left:0;margin-right:0}.footer-signature{margin-top:9rem}.slider-view{width:11rem;margin-left:1px}.container{margin-top:30px}.container .card{border-radius:1.25rem}.container .header{padding:33px 10px 0}.container .header .logo{width:15%;height:80%}.container .form-control{padding:.75rem 1rem;border-color:#a1a1a1}.container .form-control:focus{color:#000;box-shadow:none;border-color:#a1a1a1!important}.container .form-control::placeholder{font-weight:500;font-size:12px;color:#a1a1a1}.container .link{color:#4077ad}.container .link-signup{font-weight:bolder}.container .form-check-label{margin-bottom:0;padding-top:9px}.container .content-view{margin-top:10%}.container .content-description{margin-top:25%}.container .tag-content{color:#fff9e8;margin-left:9%}.container .tag-content p{color:#fff9e8}.container .form-check-input:checked{background-color:#000;border-color:#000}.container .img-tick{margin:-31px 12px 0 -35px}.container .form-check-input[type=checkbox]{border-radius:2px;border:2px solid #000000}.container .form-check-input:focus{box-shadow:none}.container input[type=checkbox]{accent-color:#000000}.term-list{padding:48px 60px 6px 0;margin-left:30px;color:\"#1f1f1fdb\"}.add-tab{padding:75px 75px 6px 1px;margin-left:50px;color:\"#1f1f1fdb\"}.add-tab-view{padding:75px 75px 6px 1px;margin-left:80px;color:\"#1f1f1fdb\"}.inspect-add{margin-top:3rem}.add-btn{font-size:16px;border-radius:5px;transition:.2s;padding:.25rem .5rem;background:#fff;border:1px solid rgba(148,147,147,.1882352941);color:#444;line-height:48px;box-shadow:0 1px 9px #98a2b3;width:9rem}.add-btn:hover{border:1px solid rgba(148,147,147,.1882352941);box-shadow:none}.agree{padding:0 0 8px 47px}.agree .form-check-input[type=checkbox]{border-radius:2px;border:2px solid #98A2B3;width:14px;height:14px;margin:5px 9px 0 -35px}.agree .form-check-input:focus{box-shadow:none}.agree .form-check-input:checked{background-color:#000;border-color:#000}.agree .invalid-feedback{font-size:10px!important;margin:0 0 0 21px}.checkmark{vertical-align:text-bottom;color:#98a2b3;font-weight:500;font-size:12px}.term-signature{padding-left:16rem;padding-right:65px;position:absolute;margin:150px 0 0 50%}.participate-tab{height:135px;width:142px}.card-design{height:147px;width:147px;padding-left:10px;margin-left:42px;background:#fff0;border:2px solid #98A2B3;box-shadow:0 0 4px #98a2b3;border-radius:27px;margin-bottom:42px}.upload{height:39px;margin-top:-4px;width:126px;font-size:12px}.participate-tab{margin-top:-25px}.slider{width:14rem;margin-left:69px}.btn-clear{background:#d3dae6;color:#98a2b3;font-size:12px;border-radius:5px;transition:.2s;padding:6px;border:none;height:auto;width:46%;line-height:28px}.btn-close{background:#f1f4fa;color:#98a2b3;font-size:17px;border-radius:5px;transition:.2s;padding:6px;border:none;height:auto;font-weight:500;width:116px;color:#737a87;line-height:28px}.view-logo{padding-top:1%;padding-bottom:4%;text-align:center}.back-btn{border-radius:45px;height:41px}.next{background:#4077ad;border-radius:30px;height:60px;width:60px;border:white}.profile-field{margin-top:-10px}.profile-field input{line-height:30px;margin:-10px 3px 3px}.load-page{padding:21px 49px 13px 34px}.sign-img{width:291px;height:95px;border-radius:8px;border:1px solid rgba(179,178,178,.33);margin-top:19px}.upload-image{height:16px;width:16px;position:absolute;margin-left:66rem;margin-top:-39px}.para-comma{font-weight:500}.go-btn{border-radius:45px;height:50px;padding:0 20px;background:#4077ad;border:1px solid #4077ad;color:#fff;line-height:28px;font-size:14px;font-weight:500}.text-label{color:#747b83;font-weight:500}.form{padding:20px;border-radius:5px}.form-control:focus{color:#000;box-shadow:none;border-color:#848484!important}.form-control::placeholder{font-weight:500;font-size:12px;color:#bec1be;padding-left:10px}.btn-primary:active{background-color:#50575e}@media screen and (min-width: 500px) and (max-width: 769px){.content-view{background:#0c1620;width:44rem;margin:31px 0 0!important;padding:28px 32px 17px 71px!important;border-radius:29px}.upload-image{margin-left:25rem!important}}@media screen and (min-width: 768px) and (max-width: 1024px){.back-btn{height:31px;width:82px;position:absolute;margin-left:-53px}.back-tab{position:absolute;margin-left:-87px;height:37px}.go-btn{width:175px;height:44px}.term-signature{padding-left:10px}.upload-image{margin-left:40rem}}@media screen and (min-width: 374px) and (max-width: 426px){.head-logo{width:216px;padding-bottom:16px}.slider{visibility:hidden}.back-btn{height:31px;width:82px;position:absolute;margin-left:73px;margin-top:23px}.go-btn{width:175px;height:44px}.upload-image{margin-left:16rem}.term-signature{margin:84% 0 7px 4%}}@media screen and (min-width: 320px) and (max-width: 426px){.footer-signature{margin-top:20rem}.login .head-logo{padding:16px 2px 0;width:38%!important;height:40%!important}.container{margin-top:5px!important}.card{padding:2px!important}.tag-content{margin:3% 0 0!important;background-color:#121b24;border-radius:13px}.img-tick{margin:3px!important}.slider{visibility:hidden}.load-page{padding:0}.head-logo{width:216px;padding-bottom:16px}.back-btn{height:26px;width:71px;position:absolute;margin-left:-17rem!important;font-size:10px;margin-top:23px}.go-btn{width:142px;height:36px;margin-right:-28px;font-size:10px}.add-tab,.add-tab-view{padding:30px 33px 2px 3px;margin-left:15px}.add-btn{width:6rem}.slider-tab{visibility:hidden}.back-tab{margin-left:-14rem;margin-top:1px;font-size:14px;height:39px}.participate-tab{height:96px;width:87px}.card-design{height:124px;width:125px;padding-left:17px;margin-left:30px}.term-signature{padding:22px 22px 13px 27px}.term-list{padding:43px 10px 10px 3px;margin-left:0;text-align:-webkit-center}}@media screen and (min-width: 320px) and (max-width: 376px){.agree{padding:0 0 8px 25px}.participate-tab{height:96px;width:87px}.card-design{height:109px;width:97px;padding-left:4px;margin-left:10px}.card-design h6{font-size:10px;padding-left:14px;font-weight:600}.sign-img{width:270px}.term-list{padding:20px 20px 6px 4px;margin-left:13px}}@media screen and (min-width: 320px) and (max-width: 350px){.upload-image{height:13px;width:11px;margin-left:10rem;margin-top:-35px}.btn-clear{width:92px}.term-signature{margin:84% 0 7px 4%}}.disabled-btn{cursor:not-allowed!important;background:#4077ad!important;color:#fff!important}.modal-dialog .modal-content{border-radius:12px;background:#fff!important;border:1px solid rgba(128,128,128,.3294117647)!important}.title-popup{font-size:18px;color:#0c1620}ul.term-list-data li{padding-bottom:5px;font-size:13px;font-weight:500;line-height:21px}ol,ul,dl{margin-top:0;margin-bottom:1rem}::ng-deep .modal-content{background:none!important;width:100%;border:none}.hidden-view{display:none}.header-container{position:relative;padding:20px}.view-logo{text-align:center}.logout-button{top:20px;right:20px;position:absolute}.logout-button button{background:none;border:none;font-size:16px;display:flex;align-items:center;cursor:pointer}.logout-button img{margin-right:5px;height:20px}.user-card{align-items:center;color:#4077ad;cursor:pointer}.user-cards-active{background:#4077ad;color:#fff}.save-btn.upload{border:1px solid #4077AD;background-color:#4077ad;color:#fff;border-radius:5px;background:#4077ad;padding:4px 10px;display:inline-flex;align-items:center;gap:6px}.save-btn.upload img{filter:brightness(0) invert(1)}.form-check.agree{display:flex;align-items:flex-start;gap:8px;margin-bottom:8px}.form-check.agree .form-check-input{margin-top:4px;flex-shrink:0}.form-check.agree .form-check-label{line-height:1.4;cursor:pointer;white-space:normal}.spinner-16{width:16px;height:16px}.h6-buttons{display:flex;align-items:center;gap:8px}.form-check.agree{display:flex;align-items:flex-start;margin-bottom:14px}.form-check-input{position:absolute;opacity:0;cursor:pointer}.form-check-label{position:relative;padding-left:28px;cursor:pointer;font-size:14px;line-height:20px;color:#212529;-webkit-user-select:none;user-select:none}.form-check-label:before{content:\"\";position:absolute;left:0;top:8px;width:18px;height:18px;border:2px solid #adb5bd;border-radius:4px;background:#fff;transition:all .2s ease}.form-check-label:after{content:\"\";position:absolute;left:5px;top:10px;width:6px;height:10px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg) scale(0);transition:transform .15s ease}.form-check-input:checked+.form-check-label:before{background-color:#4077ad;border-color:#4077ad}.form-check-input:checked+.form-check-label:after{transform:rotate(45deg) scale(1)}.form-check-label:hover:before{border-color:#4077ad}.form-check-input:focus+.form-check-label:before{box-shadow:0 0 0 3px #0d6efd40}.form-check-input.is-invalid+.form-check-label:before{border-color:#dc3545}.form-check-input.is-invalid:checked+.form-check-label:before{background-color:#dc3545}.invalid-feedback{display:block;font-size:12px;margin-left:7px;margin-top:4px}::ng-deep .modal-dialog{max-width:750px}.user-cards-active{background-color:#4077ad;color:#fff;border:2px solid #4077AD}.terms-fixed-modal{width:1080px;height:700px;display:flex;flex-direction:column}.terms-scroll-area{flex:1 1 auto;overflow-y:auto;padding:16px}body.modal-open{overflow:hidden!important}.modal{z-index:1055!important}.modal-backdrop{z-index:1050!important}.modal-dialog{margin:auto;pointer-events:auto}.modal-content{position:relative;z-index:1060}.logout-container{display:flex;justify-content:flex-end}.logout-wrapper{display:flex;align-items:center;cursor:pointer;gap:6px}.logout-icon{width:20px;height:20px;background:url(/assets/images/icons/logoutt.svg) no-repeat center;background-size:contain}@media screen and (max-width: 767px){.term-signature{padding-left:3rem;padding-right:0;position:unset;margin:0}.footer-signature{margin-top:0rem}.disabled-btn{position:absolute;bottom:13px;right:24px}.next{height:46px;width:46px;position:absolute;bottom:21px;right:35px}.mob{padding-bottom:4.5rem!important}.checkmark{width:85%}.terms-fixed-modal{width:unset}::ng-deep .privacy-policy-modal .logo-section{margin-bottom:0!important}.add-tab-view{padding:30px 25px 6px;margin-left:0}.user-card{width:96%}.footer .btn-mob{display:flex;align-items:center}.back-btn{position:absolute;bottom:21px;left:10px}.actions{margin:50px 34px 1px}}@media screen and (min-width: 768px) and (max-width: 1024px){.footer-signature{margin-top:3rem}}\n"], dependencies: [{ kind: "directive", type: i11.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i11.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i8.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i8.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: i8.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i8.CheckboxRequiredValidator, selector: "input[type=checkbox][required][formControlName],input[type=checkbox][required][formControl],input[type=checkbox][required][ngModel]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i8.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i8.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i12.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "component", type: i14.AccordionComponent, selector: "accordion", inputs: ["isAnimated", "closeOthers"] }, { kind: "component", type: i14.AccordionPanelComponent, selector: "accordion-group, accordion-panel", inputs: ["heading", "panelClass", "isDisabled", "isOpen"], outputs: ["isOpenChange"] }, { kind: "directive", type: GooglePlaceDirective, selector: "[ngx-google-places-autocomplete]", inputs: ["options"], outputs: ["onAddressChange"], exportAs: ["ngx-places"] }, { kind: "directive", type: MaskedInputDirective, selector: "[textMask]", inputs: ["textMask"], exportAs: ["textMask"] }, { kind: "component", type: TermsConditionsComponent, selector: "app-terms-conditions", inputs: ["title", "branding", "PrivacyAndTerms"] }, { kind: "component", type: PrivacyPolicyComponent, selector: "app-privacy-policy", inputs: ["title", "branding", "PrivacyAndTerms"] }, { kind: "component", type: CredentialingComponent, selector: "app-credentialing", inputs: ["data"], outputs: ["back"] }] });
|
|
29899
30159
|
}
|
|
29900
30160
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: InitialProcessComponent, decorators: [{
|
|
29901
30161
|
type: Component,
|
|
29902
30162
|
args: [{ selector: 'app-initial-process', standalone: false, template: "<div class=\"container\">\r\n <div class=\"mb-4 logout-container\" *ngIf=\"showlogout\">\r\n <span class=\"logout-wrapper\" (click)=\"logout()\">\r\n <span class=\"logout-icon\"></span>\r\n <span class=\"logout-text\">Logout</span>\r\n </span>\r\n </div>\r\n <div class=\"card pb-2 mob pr-5\" style=\"margin-bottom: 30px;\">\r\n <ng-container class=\"load-page\" [style.visibility]=\"view == 1 ? 'visible' : 'hidden' \">\r\n <ul class=\"term-list para-comma\" [ngClass]=\"view == 1 ? '' : 'hidden-view'\">\r\n Thanks for joining\r\n <span class=\"brand-name\">{{ branding.displayName }}</span>.\r\n Our members and service providers rely on accurate info in your profile to\r\n connect you with work that suits your capabilities. Keep your profile\r\n complete, skills updated, licenses current, photos and logos professional,\r\n and schedule up to date.\r\n </ul>\r\n <div class=\"row col-12 mt-4\" [ngClass]=\"view == 1 ? '' : 'hidden-view' \">\r\n <div class=\"col-md-6 col-lg-6 col-sm-12\">\r\n <div class=\"form-group form-check agree\">\r\n <input #acceptTerms=\"ngModel\" [ngClass]=\"{ 'is-invalid': !model.acceptTerms && validatePage==1 }\"\r\n [(ngModel)]=\"model.acceptTerms\" type=\"checkbox\" name=\"acceptTerms\" id=\"acceptTerms\"\r\n class=\"form-check-input\" (click)=\"openModal(termsAndConditionsModel,'Terms and Conditions',$event)\"\r\n required>\r\n <label for=\"acceptTerms\" class=\"form-check-label checkmark pointer\"\r\n (click)=\"openModal(termsAndConditionsModel,'Terms and Conditions',$event)\">\r\n I agree to Terms and Conditions\r\n </label>\r\n <!-- <div *ngIf=\"!model.acceptTerms && validatePage==1\" class=\"invalid-feedback\">\r\n Accept Terms & Conditions is required\r\n </div> -->\r\n </div>\r\n <div class=\"form-group form-check agree\">\r\n <input #privacy=\"ngModel\" [ngClass]=\"{ 'is-invalid':!model.privacy && validatePage==1}\"\r\n (click)=\"openModal(termsAndConditionsModel,'Privacy Statement',$event)\" [(ngModel)]=\"model.privacy\"\r\n type=\"checkbox\" name=\"privacy\" id=\"privacy\" class=\"form-check-input\" required>\r\n <label for=\"privacy\" class=\"form-check-label checkmark pointer\"\r\n (click)=\"openModal(termsAndConditionsModel,'Privacy Statement',$event)\">\r\n I agree to Privacy Statement\r\n </label>\r\n <!-- <div *ngIf=\"!model.privacy && validatePage==1\" class=\"invalid-feedback\">\r\n Accept Privacy Statement\r\n </div> -->\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"footer col-12 col-sm-12 col-md-12 col-xl-12 justify-content-between row footer-signature\"\r\n [ngClass]=\"view == 1 ? '' : 'hidden-view' \">\r\n <!-- <div class=\"col-md-3 col-sm-3 slider-tab\">\r\n </div> -->\r\n\r\n <div class=\"col-6\"></div>\r\n <div class=\"col-md-12 col-sm-12 col-xl-3 text-end\">\r\n <h6>\r\n <button class=\"next\" (click)=\" next(2)\"\r\n [ngClass]=\"(((!points || !points?.length || points.length ==0) && !fileData ) || !model.acceptTerms || !model.privacy) ? 'disabled-btn':''\">\r\n <img style=\"height: 20px; width: 16px;filter: brightness(0) invert(1);\" src=\"assets/images/icons/next.svg\"\r\n alt=\"Logo\">\r\n </button> \r\n </h6>\r\n </div>\r\n </div>\r\n <ng-container>\r\n <div class=\"term-signature col-md-6 col-lg-6 col-sm-12\" [ngClass]=\"view == 1 ? '' : 'hidden-view' \">\r\n <h6 class=\"checkmark\">Signature</h6>\r\n <div [ngClass]=\"{ 'd-none': signaturePadData?.publicUrl }\" class=\"sign-img mb-2\">\r\n <canvas #canvas [width]=\"255\" [height]=\"90\"></canvas>\r\n </div>\r\n <div [ngClass]=\"{ 'd-none': !signaturePadData?.publicUrl }\" class=\"mb-2\">\r\n <img [width]=\"255\" [height]=\"120\" [src]=\"signaturePadData?.publicUrl\" style=\"position: relative\" alt>\r\n </div>\r\n <h6 class=\"d-flex align-items-center gap-2\">\r\n <button (click)=\"clearPad()\" class=\"btn-clear btn-sm\">\r\n Clear\r\n </button>\r\n\r\n <!-- <button (click)=\"uploadImage.click()\" class=\"save-btn upload btn-sm\">\r\n <img src=\"assets/images/icons/upload.svg\" alt=\"Upload\">\r\n Upload\r\n <input #uploadImage type=\"file\" class=\"image-upload d-none\" accept=\"image/*\"\r\n (change)=\"uploadSignImage($event)\">\r\n </button> -->\r\n </h6>\r\n\r\n <div *ngIf=\"validatePage==1 && (!points || !points?.length || points.length ==0) && !fileData\"\r\n class=\"invalid-feedback d-block\">\r\n Signature is required\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"view == 2\">\r\n <div class=\"add-tab-view \">\r\n <ul>\r\n <h5>\r\n <b>\r\n Please choose the relevant sections in which you wish to\r\n participate\r\n </b>\r\n </h5>\r\n <br>\r\n <b class=\"para-comma\">\r\n Choose the areas you'd like to be part of \u2014 whether it's programs, services, events, or collaborations,\r\n you're in control of your involvement.\r\n <br>\r\n connect your business to others and prospective clients.\r\n </b>\r\n </ul>\r\n\r\n <div class=\"row mt-4\">\r\n <ng-container *ngFor=\"let userType of userViewRoles\">\r\n <div class=\"card card-design text-center user-card mx-2 my-2\"\r\n [ngClass]=\"userType.value === selectedRoleValue ? 'user-cards-active' : ''\"\r\n (click)=\"selectedUserRole(userType)\">\r\n <img [src]=\"userType?.img\" class=\"mb-2 mt-2\" style=\"width: 70px;height: 70px;\">\r\n <h6 class=\"m-0 mt-2\">{{userType.name}}</h6>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <!-- <h6 class=\"inspect-add\">\r\n <button (click)=\"next(3);isBusiness=true;\" class=\"add-btn btn-sm\">\r\n Yes\r\n </button>\r\n \r\n <button (click)=\"isBusiness=false;view = 4;\" class=\"add-btn btn-sm\">\r\n No\r\n </button>\r\n </h6> -->\r\n </div>\r\n <div class=\"footer col-12 col-sm-12 col-md-12 col-xl-12 row justify-content-around footer-view\">\r\n <!-- <div class=\"col-md-3 col-sm-12 slider-tab text-center\">\r\n <img class=\"slider-view\" src=\"assets/images/icons/stepper-1.svg\" alt=\"Logo\">\r\n </div> -->\r\n <div class=\"col-5\"></div>\r\n <div class=\"col-md-4 col-sm-12 col-xl-4 text-end\">\r\n <h6>\r\n <button (click)=\"previous()\" class=\"my-2 mx-1\" class=\"btn-close back-tab back-btn btn-sm\">\r\n Back\r\n </button>\r\n \r\n <button (click)=\"next(3)\" class=\"next\" [disabled]=\"!isUserSelected\"\r\n [ngClass]=\"!isUserSelected ? 'disabled-btn':''\">\r\n <img style=\"height: 20px; width: 16px;filter: brightness(0) invert(1);\" src=\"assets/images/icons/next.svg\"\r\n alt=\"Logo\">\r\n </button>\r\n \r\n </h6>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"view == 3\">\r\n <form [formGroup]=\"companyForm\" class=\"form\">\r\n <div class=\"term-list \">\r\n <ul>\r\n <h5>\r\n <b>\r\n Enter your business information here.\r\n </b>\r\n </h5>\r\n <br>\r\n </ul>\r\n <div class=\"profile-field\">\r\n <div class=\"d-flex flex-wrap justify-content-between row\">\r\n <div class=\"form-group col-md-6 col-sm-12 mt-3 mb-2\">\r\n <input [ngClass]=\"{'is-invalid': ( f.companyName.errors && validatePage == 3) || providerError}\"\r\n type=\"text\" class=\"form-control\" id=\"companyName\" placeholder=\"Company Name\"\r\n formControlName=\"companyName\">\r\n <div *ngIf=\" f.companyName.errors && validatePage == 3\" class=\"invalid-feedback\">\r\n <div *ngIf=\"f.companyName.errors.required\">\r\n Company Name is required\r\n </div>\r\n <div *ngIf=\"f.companyName.errors.minlength\">\r\n Company Name must be at least 2 characters\r\n </div>\r\n <div *ngIf=\"f.companyName.errors.maxLength\">\r\n Company Name must be less than 100 characters\r\n </div>\r\n </div>\r\n <div *ngIf=\"providerError\" class=\"invalid-feedback\">\r\n <div>\r\n {{providerError}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group col-md-6 col-sm-12 mt-3 mb-2\">\r\n <input class=\"form-control block fw-medium shadow-none\" type=\"text\" name=\"inputPhone\"\r\n placeholder=\"Company Phone Number\" id=\"inputPhone\" autocomplete=\"off\" formControlName=\"phoneNumber\"\r\n [maxLength]=\"14\" (input)=\"formatPhone($event,companyForm)\"\r\n [ngClass]=\"{'is-invalid': (f.phoneNumber.errors && validatePage == 3) || providerError}\" />\r\n <div *ngIf=\"f.phoneNumber.errors && validatePage == 3\" class=\"invalid-feedback\">\r\n <div *ngIf=\"f.phoneNumber.errors.required\">\r\n Phone Number is required\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group col-md-6 col-sm-12 mt-3 mb-2\">\r\n <input [ngClass]=\"{ 'is-invalid': f.address1.errors&& validatePage == 3 }\" type=\"text\"\r\n class=\"form-control\" id=\"businessAddress\" ngx-google-places-autocomplete [options]='options'\r\n (onAddressChange)=\"AddressChange($event)\" placeholder=\"Business Address 1\" formControlName=\"address1\">\r\n <div *ngIf=\" f.address1.errors && validatePage == 3\" class=\"invalid-feedback\">\r\n <div *ngIf=\"f.address1.errors.required\">\r\n Business Address 1 is required\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group col-md-6 col-sm-12 mt-3 mb-2\">\r\n <input type=\"text\" class=\"form-control\" id=\"businessAddress2\" placeholder=\"Business Address 2\">\r\n </div>\r\n </div>\r\n <div class=\"d-flex flex-wrap justify-content-between row\">\r\n <div class=\"form-group col-md-6 col-sm-12 mt-3 mb-2\">\r\n <input [ngClass]=\"{ 'is-invalid': f.city.errors&& validatePage == 3 }\" type=\"text\" class=\"form-control\"\r\n id=\"City\" placeholder=\"City\" formControlName=\"city\">\r\n <div *ngIf=\" f.city.errors && validatePage == 3\" class=\"invalid-feedback\">\r\n <div *ngIf=\"f.city.errors.required\">City is required</div>\r\n </div>\r\n </div>\r\n <div class=\"form-group col-md-6 col-sm-12 mt-3 mb-2\">\r\n <input [ngClass]=\"{ 'is-invalid': f.state.errors&& validatePage == 3 }\" type=\"text\"\r\n class=\"form-control\" id=\"State\" placeholder=\"State\" formControlName=\"state\">\r\n <div *ngIf=\" f.state.errors && validatePage == 3\" class=\"invalid-feedback\">\r\n <div *ngIf=\"f.state.errors.required\">State is required</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex flex-wrap justify-content-between row\">\r\n <div class=\"form-group col-md-6 col-sm-12 mt-3 mb-2\">\r\n <input [textMask]=\"{ mask: zipcodeMask }\"\r\n [ngClass]=\"{ 'is-invalid': f.zipcode.errors&& validatePage == 3 }\" type=\"text\" class=\"form-control\"\r\n id=\"Zipcode\" placeholder=\"Zipcode\" formControlName=\"zipcode\">\r\n <div *ngIf=\" f.zipcode.errors && validatePage == 3\" class=\"invalid-feedback\">\r\n <div *ngIf=\"f.zipcode.errors.required\">Zipcode is\r\n required</div>\r\n </div>\r\n </div>\r\n <div class=\"form-group col-md-6 col-sm-12 mt-3 mb-2\">\r\n <input [ngClass]=\"{ 'is-invalid': f.country.errors && validatePage == 3}\" type=\"text\"\r\n class=\"form-control\" id=\"Country\" placeholder=\"Country\" formControlName=\"country\">\r\n <div *ngIf=\" f.country.errors && validatePage == 3\" class=\"invalid-feedback\">\r\n <div *ngIf=\"f.country.errors.required\">Country is\r\n required</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n <div class=\"profile-field\">\r\n <div class=\"form-group mb-2 form\" style=\"margin-left: 26px;margin-right: 52px;\">\r\n <input #uploadLogoInput type=\"file\" accept=\".png,.jpg,.jpeg,.svg\" (change)=\"uploadLogo($event)\"\r\n class=\"upload-initial-input rounded-circle opacity-0 position-absolute\" />\r\n\r\n <input (click)=\"uploadImage2.click()\" [(ngModel)]=\"logoName\" readonly type=\"text\" class=\"form-control\"\r\n placeholder=\"Upload Company Logo\">\r\n\r\n <img #uploadImage2 class=\"upload-image\" (click)=\"uploadLogoInput.click()\" src=\"assets/images/icons/upload.svg\"\r\n alt=\"Logo\">\r\n <div *ngIf=\"isLogoRequired\" class=\"invalid-feedback d-block\">\r\n <div class=\"ms-1\">\r\n Please Upload Company Logo\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"isneeded\" style=\"margin-left: 47px;\r\n margin-top: -20px;\" class=\"invalid-feedback\">\r\n <div>Company Logo is\r\n required</div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"selectedRole?.name == 'Contractor'\" style=\"padding: 0px 20px;border-radius: 5px;\">\r\n <div class=\"term-list pt-0\">\r\n <h5>\r\n <b>\r\n Contractor Category\r\n </b>\r\n </h5>\r\n <div class=\"profile-field\">\r\n <div class=\"d-flex flex-wrap justify-content-between row\">\r\n <div class=\"form-group col-md-12 col-sm-12 mb-2\">\r\n <label></label>\r\n <ng-select [items]=\"contractorSubCategories\" bindLabel=\"name\" [multiple]=\"true\" [closeOnSelect]=\"false\"\r\n placeholder=\"Select Contractor Category\" (ngModelChange)=\"changeContractor($event)\"\r\n [(ngModel)]=\"selectedContractorCategories\">\r\n </ng-select>\r\n </div>\r\n </div>\r\n <accordion [isAnimated]=\"false\">\r\n <ng-container *ngFor=\"let item of selectedContractorCategories;let i=index\">\r\n <accordion-group [isOpen]=\"true\">\r\n <button accordion-heading class=\"w-100\" style=\"font-size: 16px;font-weight: 600;\">\r\n <div class=\"w-100 mt-2\">\r\n <div class=\"backdrop\">\r\n <input type=\"checkbox\" [(ngModel)]=\"item.selectAll\" [name]=\"item?.id\" [id]=\"item?.id\"\r\n (change)=\"selectAll($event,item?.items)\">\r\n <label [for]=\"item?.id\"> {{item?.name}}</label>\r\n </div>\r\n </div>\r\n </button>\r\n <div class=\"row\">\r\n <div class=\"backdrop col-4 form-control-sm\" *ngFor=\"let subItem of item?.items\">\r\n <input type=\"checkbox\" [(ngModel)]=\"subItem.selected\" [name]=\"subItem?.id\" [id]=\"subItem?.id\"\r\n (change)=\"unCheckedEvent($event,item)\">\r\n <label [for]=\"subItem?.id\"> {{subItem?.name}}</label>\r\n </div>\r\n </div>\r\n </accordion-group>\r\n </ng-container>\r\n </accordion>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"footer col-12 col-sm-12 col-md-12 col-xl-12 row justify-content-around footer-view\">\r\n <!-- <div class=\"col-md-3 col-sm-12 slider-tab text-center\">\r\n <img class=\"slider-view\" src=\"assets/images/icons/stepper-2.svg\" alt=\"Logo\">\r\n </div> -->\r\n <div class=\"col-5\"></div>\r\n <div class=\"col-md-4 col-sm-12 col-xl-4 text-end\">\r\n <h6 class=\"btn-mob\">\r\n <button (click)=\"previous()\" class=\"my-2 mx-1\" class=\"btn-close back-tab back-btn btn-sm\">\r\n Back\r\n </button>\r\n \r\n <button class=\" next\" (click)=\"next(4)\">\r\n <img style=\"height: 20px; width: 16px;filter: brightness(0) invert(1);\" src=\"assets/images/icons/next.svg\"\r\n alt=\"Logo\">\r\n </button>\r\n \r\n </h6>\r\n </div>\r\n </div>\r\n\r\n </ng-container>\r\n <ng-container *ngIf=\"view == 4\">\r\n\r\n <div class=\"add-tab \">\r\n <ul>\r\n <h5 class=\"p-4 pb-2\">\r\n <b>\r\n We need basic information's and headshot for your profile\r\n </b>\r\n <div class=\"form-group form-check agree p-0 mt-3\" *ngIf=\"isBusiness\">\r\n <input [(ngModel)]=\"isCopy\" type=\"checkbox\" name=\"isCopy\" id=\"isCopy\" class=\"form-check-input mt-2\"\r\n (change)=\"changeAddressUser()\">\r\n <label for=\"isCopy\" class=\"form-check-label checkmark\">\r\n Copy From Provider Infromation\r\n </label>\r\n </div>\r\n </h5>\r\n </ul>\r\n <div class=\"profile-field\">\r\n <form [formGroup]=\"userForm\" class=\"form pb-0\">\r\n <div class=\"d-flex flex-wrap justify-content-between row\">\r\n <div class=\"form-group col-md-4 col-sm-12 mt-3 mb-2\">\r\n <input [ngClass]=\"{ 'is-invalid': u.firstName.errors && validatePage == 4 }\" type=\"text\"\r\n class=\"form-control\" placeholder=\"Fist Name\" formControlName=\"firstName\" id=\"firstName\">\r\n <div *ngIf=\" u.firstName.errors && validatePage == 4\" class=\"invalid-feedback\">\r\n <div class=\"ms-1\" *ngIf=\"u.firstName.errors.required\">\r\n First Name is required\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group col-md-4 col-sm-12 mt-3 mb-2\">\r\n <input [ngClass]=\"{ 'is-invalid': u.lastName.errors && validatePage == 4 }\" type=\"text\"\r\n class=\"form-control\" placeholder=\"Last Name\" formControlName=\"lastName\" id=\"lastName\">\r\n <div *ngIf=\" u.lastName.errors && validatePage == 4\" class=\"invalid-feedback\">\r\n <div class=\"ms-1\" *ngIf=\"u.lastName.errors.required\">\r\n Last Name is required\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group col-md-4 col-sm-12 mt-3 mb-2\">\r\n <input [ngClass]=\"{ 'is-invalid': u.email.errors && validatePage == 4 }\" type=\"text\"\r\n class=\"form-control\" placeholder=\"Email\" formControlName=\"email\" id=\"email\">\r\n <div *ngIf=\" u.email.errors && validatePage == 4\" class=\"invalid-feedback\">\r\n <div class=\"ms-1\" *ngIf=\"u.email.errors.required\">\r\n Emai is required\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex flex-wrap justify-content-between row\">\r\n <div class=\"form-group col-md-12 col-sm-12 mt-3 mb-2\">\r\n <input [ngClass]=\"{ 'is-invalid': u.address1.errors && validatePage == 4 }\" [options]=\"options\"\r\n (onAddressChange)=\"AddressChangeUser($event)\" type=\"text\" class=\"form-control\"\r\n placeholder=\"Home Address 1\" formControlName=\"address1\" id=\"address1\" ngx-google-places-autocomplete>\r\n <div *ngIf=\" u.address1.errors && validatePage == 4\" class=\"invalid-feedback\">\r\n <div class=\"ms-1\" *ngIf=\"u.address1.errors.required\">\r\n Home Address 1 is required\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex flex-wrap justify-content-between row\">\r\n <div class=\"form-group col-md-4 col-sm-12 mt-3 mb-2\">\r\n <input type=\"text\" class=\"form-control\" id=\"homeAddress2\" formControlName=\"address2\"\r\n placeholder=\"Home Address 2\">\r\n </div>\r\n <div class=\"form-group col-md-4 col-sm-12 mt-3 mb-2\">\r\n <input [ngClass]=\"{ 'is-invalid': u.city.errors && validatePage == 4}\" type=\"text\" class=\"form-control\"\r\n id=\"City\" placeholder=\"City\" formControlName=\"city\">\r\n <div *ngIf=\" u.city.errors && validatePage ==4\" class=\"invalid-feedback\">\r\n <div class=\"ms-1\" *ngIf=\"u.city.errors.required\">City is required</div>\r\n </div>\r\n </div>\r\n <div class=\"form-group col-md-4 col-sm-12 mt-3 mb-2\">\r\n <input [ngClass]=\"{ 'is-invalid': u.state.errors && validatePage == 4 }\" type=\"text\"\r\n class=\"form-control\" id=\"State\" placeholder=\"State\" formControlName=\"state\">\r\n <div *ngIf=\" u.state.errors && validatePage == 4\" class=\"invalid-feedback\">\r\n <div class=\"ms-1\" *ngIf=\"u.state.errors.required\">State is required</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex flex-wrap justify-content-between row\">\r\n <div class=\"form-group col-md-4 col-sm-12 mt-3 mb-2\">\r\n <input [textMask]=\"{ mask: zipcodeMask }\"\r\n [ngClass]=\"{ 'is-invalid': u.zipcode.errors && validatePage == 4 }\" type=\"text\" class=\"form-control\"\r\n id=\"Zipcode\" placeholder=\"Zipcode\" formControlName=\"zipcode\">\r\n <div *ngIf=\" u.zipcode.errors && validatePage == 4\" class=\"invalid-feedback\">\r\n <div class=\"ms-1\" *ngIf=\"u.zipcode.errors.required\">Zipcode is\r\n required</div>\r\n </div>\r\n </div>\r\n <div class=\"form-group col-md-4 col-sm-12 mt-3 mb-2\">\r\n <input [ngClass]=\"{ 'is-invalid': u.country.errors && validatePage == 4 }\" type=\"text\"\r\n class=\"form-control\" id=\"Country\" placeholder=\"Country\" formControlName=\"country\">\r\n <div *ngIf=\" u.country.errors && validatePage ==4\" class=\"invalid-feedback\">\r\n <div class=\"ms-1\" *ngIf=\"u.country.errors.required\">Country is\r\n required</div>\r\n </div>\r\n </div>\r\n <div class=\"form-group col-md-4 col-sm-12 mt-3 mb-2\">\r\n <input class=\"form-control block shadow-none\" type=\"text\" (input)=\"formatPhone($event,userForm)\"\r\n name=\"inputPhone\" placeholder=\"Phone Number \" id=\"inputPhone\" autocomplete=\"off\"\r\n formControlName=\"phoneNumber\" [maxLength]=\"300\"\r\n [ngClass]=\"{'is-invalid': ( u.phoneNumber.errors && validatePage == 4)}\">\r\n <div *ngIf=\"u.phoneNumber.errors && validatePage == 4\" class=\"invalid-feedback\">\r\n <div class=\"ms-1\" *ngIf=\"u.phoneNumber.errors.required\">\r\n Phone Number is required\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n <div class=\"form-group mb-2 form\">\r\n <input #uploadFile type=\"file\" accept=\".png,.jpg,.jpeg,.svg\" (change)=\"uploadUserImage($event)\"\r\n class=\"upload-initial-input rounded-circle opacity-0 position-absolute\" />\r\n <input (click)=\"uploadImage1.click()\" [(ngModel)]=\"fileName\" readonly type=\"text\" class=\"form-control\"\r\n id=\"upload\" accept=\".png,.jpg,.jpeg,.svg\" placeholder=\"Upload Profile Picture\">\r\n <img #uploadImage1 class=\"upload-image\" (click)=\"uploadFile.click()\" type=\"file\"\r\n src=\"assets/images/icons/upload.svg\" alt=\"Logo\">\r\n <div *ngIf=\"isImageRequired\" class=\"invalid-feedback d-block\">\r\n <div class=\"ms-1\">\r\n Please Upload Profile Image\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"userError\" class=\"invalid-feedback\">\r\n <div>\r\n {{userError}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"footer col-12 col-sm-12 col-md-12 col-xl-12 row justify-content-around footer-view\">\r\n <!-- <div class=\"col-md-3 col-sm-12 pt-3 slider-tab text-center\">\r\n <img class=\"slider-view\" src=\"assets/images/icons/stepper-3.svg\" alt=\"Logo\">\r\n </div> -->\r\n <div class=\"col-5\"></div>\r\n <div class=\"col-md-4 col-sm-12 col-xl-4 text-end\">\r\n <h6>\r\n <button (click)=\"previous()\" class=\"my-2 mx-1\" class=\"btn-close back-tab back-btn btn-sm\">\r\n Back\r\n </button>\r\n \r\n <button class=\"next\" (click)=\"next(5)\" [disabled]=\"showLoader\">\r\n <img style=\"height: 20px; width: 16px;filter: brightness(0) invert(1);\" src=\"assets/images/icons/next.svg\"\r\n alt=\"Logo\">\r\n <span *ngIf=\"showLoader\" class=\"spinner position-absolute\"></span>\r\n\r\n </button>\r\n \r\n </h6>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"view == 5\">\r\n <ul class=\"term-list ps-3\">\r\n <h5>\r\n <b>\r\n Thanks, we got the basics down!\r\n </b>\r\n </h5>\r\n <br>\r\n <b class=\"para-comma\">\r\n Account created successfully. Next step: complete your profile.\r\n <br>\r\n <br>\r\n Profile completion is mandatory to participate in rosters, programs, requests, and platform workflows.\r\n Incomplete profiles will have limited access.\r\n <br>\r\n <br>\r\n You may access your dashboard at any time, but full functionality is available only after completion.\r\n </b>\r\n </ul>\r\n <div class=\"footer col-12 col-sm-12 col-md-12 col-xl-12 row justify-content-around footer-view\">\r\n <!-- <div class=\"col-md-3 col-lg-3 col-xl-3 col-sm-12 text-center\">\r\n <img class=\"slider ml-3\" src=\"assets/images/icons/stepper-4.svg\" alt=\"Logo\">\r\n </div> -->\r\n <div class=\"col-5\"></div>\r\n <div class=\"col-md-4 col-sm-12 col-xl-4 text-end row\">\r\n <div class=\"col-md-2 col-2\">\r\n <h6 style=\"margin-right: 3rem\">\r\n </h6>\r\n </div>\r\n\r\n \r\n <div class=\"col-md-8\">\r\n <h6>\r\n <button (click)=\"dashboard()\" class=\"go-btn btn-sm\">\r\n Go To Home \r\n <img style=\"height: 20px; width: 16px;filter: brightness(0) invert(1);\"\r\n src=\"assets/images/icons/next.svg\" alt=\"Logo\">\r\n </button>\r\n </h6>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- <div>test</div> -->\r\n </ng-container>\r\n <ng-container *ngIf=\"view == 10\">\r\n <app-credentialing (back)=\"onCredentialingBack()\" [data]=\"credentialingData\"></app-credentialing>\r\n </ng-container>\r\n </div>\r\n</div>\r\n\r\n<ng-template #termsAndConditionsModel>\r\n <div class=\"modal-dialog modal-dialog-centered\">\r\n <div class=\"modal-content terms-fixed-modal\">\r\n\r\n <!-- HEADER -->\r\n <div class=\"modal-header\">\r\n <h4 class=\"modal-title fw-bold title-popup\">\r\n {{ termsAndConditionTitle }}\r\n </h4>\r\n </div>\r\n\r\n <!-- SCROLLABLE CONTENT ONLY -->\r\n <div class=\"modal-body terms-scroll-area\" (scroll)=\"onTermsScroll($event)\">\r\n <ng-container *ngIf=\"termsAndConditionTitle == 'Terms and Conditions'\">\r\n <app-terms-conditions [PrivacyAndTerms]=\"privacyAndTerms\" [title]=\"title\" [branding]=\"branding\">\r\n </app-terms-conditions>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"termsAndConditionTitle != 'Terms and Conditions'\">\r\n <app-privacy-policy [PrivacyAndTerms]=\"privacyAndTerms\" [title]=\"title\" [branding]=\"branding\">\r\n </app-privacy-policy>\r\n </ng-container>\r\n </div>\r\n\r\n <!-- FOOTER (NOT SCROLLING) -->\r\n <div>\r\n <div class=\"modal-footer text-end\" style=\"display: block;\">\r\n <!-- YOUR BUTTONS \u2014 UNCHANGED -->\r\n <button type=\"button\" class=\"btn btn-primary btn-sm px-4\"\r\n style=\"background: #d3dae6; color: #98a2b3; border: #D3DAE6 !important;\"\r\n (click)=\"decline(termsAndConditionTitle); modelRef.hide();\">\r\n Decline\r\n </button>\r\n\r\n <button type=\"button\" class=\"btn btn-primary btn-sm px-4\" style=\"color:white;background: #4077AD;\"\r\n [disabled]=\"!isAgreeEnabled\" (click)=\"agree(termsAndConditionTitle); modelRef.hide();\">\r\n Agree\r\n </button>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n</ng-template>", styles: [".brand-name{font-weight:700;font-size:calc(100% + 4px)}.spinner{width:38px;height:38px;border:dotted white;border-top:2px solid #f6f6f6;border-radius:62%;animation:1.7s linear infinite;margin:-9px 0 0 -28px}@keyframes spin{to{transform:rotate(360deg)}}::ng-deep .backdrop{background-color:transparent!important}.filter-black{filter:brightness(.4)!important}.footer-view{margin-top:3rem;margin-left:0;margin-right:0}.footer-signature{margin-top:9rem}.slider-view{width:11rem;margin-left:1px}.container{margin-top:30px}.container .card{border-radius:1.25rem}.container .header{padding:33px 10px 0}.container .header .logo{width:15%;height:80%}.container .form-control{padding:.75rem 1rem;border-color:#a1a1a1}.container .form-control:focus{color:#000;box-shadow:none;border-color:#a1a1a1!important}.container .form-control::placeholder{font-weight:500;font-size:12px;color:#a1a1a1}.container .link{color:#4077ad}.container .link-signup{font-weight:bolder}.container .form-check-label{margin-bottom:0;padding-top:9px}.container .content-view{margin-top:10%}.container .content-description{margin-top:25%}.container .tag-content{color:#fff9e8;margin-left:9%}.container .tag-content p{color:#fff9e8}.container .form-check-input:checked{background-color:#000;border-color:#000}.container .img-tick{margin:-31px 12px 0 -35px}.container .form-check-input[type=checkbox]{border-radius:2px;border:2px solid #000000}.container .form-check-input:focus{box-shadow:none}.container input[type=checkbox]{accent-color:#000000}.term-list{padding:48px 60px 6px 0;margin-left:30px;color:\"#1f1f1fdb\"}.add-tab{padding:75px 75px 6px 1px;margin-left:50px;color:\"#1f1f1fdb\"}.add-tab-view{padding:75px 75px 6px 1px;margin-left:80px;color:\"#1f1f1fdb\"}.inspect-add{margin-top:3rem}.add-btn{font-size:16px;border-radius:5px;transition:.2s;padding:.25rem .5rem;background:#fff;border:1px solid rgba(148,147,147,.1882352941);color:#444;line-height:48px;box-shadow:0 1px 9px #98a2b3;width:9rem}.add-btn:hover{border:1px solid rgba(148,147,147,.1882352941);box-shadow:none}.agree{padding:0 0 8px 47px}.agree .form-check-input[type=checkbox]{border-radius:2px;border:2px solid #98A2B3;width:14px;height:14px;margin:5px 9px 0 -35px}.agree .form-check-input:focus{box-shadow:none}.agree .form-check-input:checked{background-color:#000;border-color:#000}.agree .invalid-feedback{font-size:10px!important;margin:0 0 0 21px}.checkmark{vertical-align:text-bottom;color:#98a2b3;font-weight:500;font-size:12px}.term-signature{padding-left:16rem;padding-right:65px;position:absolute;margin:150px 0 0 50%}.participate-tab{height:135px;width:142px}.card-design{height:147px;width:147px;padding-left:10px;margin-left:42px;background:#fff0;border:2px solid #98A2B3;box-shadow:0 0 4px #98a2b3;border-radius:27px;margin-bottom:42px}.upload{height:39px;margin-top:-4px;width:126px;font-size:12px}.participate-tab{margin-top:-25px}.slider{width:14rem;margin-left:69px}.btn-clear{background:#d3dae6;color:#98a2b3;font-size:12px;border-radius:5px;transition:.2s;padding:6px;border:none;height:auto;width:46%;line-height:28px}.btn-close{background:#f1f4fa;color:#98a2b3;font-size:17px;border-radius:5px;transition:.2s;padding:6px;border:none;height:auto;font-weight:500;width:116px;color:#737a87;line-height:28px}.view-logo{padding-top:1%;padding-bottom:4%;text-align:center}.back-btn{border-radius:45px;height:41px}.next{background:#4077ad;border-radius:30px;height:60px;width:60px;border:white}.profile-field{margin-top:-10px}.profile-field input{line-height:30px;margin:-10px 3px 3px}.load-page{padding:21px 49px 13px 34px}.sign-img{width:291px;height:95px;border-radius:8px;border:1px solid rgba(179,178,178,.33);margin-top:19px}.upload-image{height:16px;width:16px;position:absolute;margin-left:66rem;margin-top:-39px}.para-comma{font-weight:500}.go-btn{border-radius:45px;height:50px;padding:0 20px;background:#4077ad;border:1px solid #4077ad;color:#fff;line-height:28px;font-size:14px;font-weight:500}.text-label{color:#747b83;font-weight:500}.form{padding:20px;border-radius:5px}.form-control:focus{color:#000;box-shadow:none;border-color:#848484!important}.form-control::placeholder{font-weight:500;font-size:12px;color:#bec1be;padding-left:10px}.btn-primary:active{background-color:#50575e}@media screen and (min-width: 500px) and (max-width: 769px){.content-view{background:#0c1620;width:44rem;margin:31px 0 0!important;padding:28px 32px 17px 71px!important;border-radius:29px}.upload-image{margin-left:25rem!important}}@media screen and (min-width: 768px) and (max-width: 1024px){.back-btn{height:31px;width:82px;position:absolute;margin-left:-53px}.back-tab{position:absolute;margin-left:-87px;height:37px}.go-btn{width:175px;height:44px}.term-signature{padding-left:10px}.upload-image{margin-left:40rem}}@media screen and (min-width: 374px) and (max-width: 426px){.head-logo{width:216px;padding-bottom:16px}.slider{visibility:hidden}.back-btn{height:31px;width:82px;position:absolute;margin-left:73px;margin-top:23px}.go-btn{width:175px;height:44px}.upload-image{margin-left:16rem}.term-signature{margin:84% 0 7px 4%}}@media screen and (min-width: 320px) and (max-width: 426px){.footer-signature{margin-top:20rem}.login .head-logo{padding:16px 2px 0;width:38%!important;height:40%!important}.container{margin-top:5px!important}.card{padding:2px!important}.tag-content{margin:3% 0 0!important;background-color:#121b24;border-radius:13px}.img-tick{margin:3px!important}.slider{visibility:hidden}.load-page{padding:0}.head-logo{width:216px;padding-bottom:16px}.back-btn{height:26px;width:71px;position:absolute;margin-left:-17rem!important;font-size:10px;margin-top:23px}.go-btn{width:142px;height:36px;margin-right:-28px;font-size:10px}.add-tab,.add-tab-view{padding:30px 33px 2px 3px;margin-left:15px}.add-btn{width:6rem}.slider-tab{visibility:hidden}.back-tab{margin-left:-14rem;margin-top:1px;font-size:14px;height:39px}.participate-tab{height:96px;width:87px}.card-design{height:124px;width:125px;padding-left:17px;margin-left:30px}.term-signature{padding:22px 22px 13px 27px}.term-list{padding:43px 10px 10px 3px;margin-left:0;text-align:-webkit-center}}@media screen and (min-width: 320px) and (max-width: 376px){.agree{padding:0 0 8px 25px}.participate-tab{height:96px;width:87px}.card-design{height:109px;width:97px;padding-left:4px;margin-left:10px}.card-design h6{font-size:10px;padding-left:14px;font-weight:600}.sign-img{width:270px}.term-list{padding:20px 20px 6px 4px;margin-left:13px}}@media screen and (min-width: 320px) and (max-width: 350px){.upload-image{height:13px;width:11px;margin-left:10rem;margin-top:-35px}.btn-clear{width:92px}.term-signature{margin:84% 0 7px 4%}}.disabled-btn{cursor:not-allowed!important;background:#4077ad!important;color:#fff!important}.modal-dialog .modal-content{border-radius:12px;background:#fff!important;border:1px solid rgba(128,128,128,.3294117647)!important}.title-popup{font-size:18px;color:#0c1620}ul.term-list-data li{padding-bottom:5px;font-size:13px;font-weight:500;line-height:21px}ol,ul,dl{margin-top:0;margin-bottom:1rem}::ng-deep .modal-content{background:none!important;width:100%;border:none}.hidden-view{display:none}.header-container{position:relative;padding:20px}.view-logo{text-align:center}.logout-button{top:20px;right:20px;position:absolute}.logout-button button{background:none;border:none;font-size:16px;display:flex;align-items:center;cursor:pointer}.logout-button img{margin-right:5px;height:20px}.user-card{align-items:center;color:#4077ad;cursor:pointer}.user-cards-active{background:#4077ad;color:#fff}.save-btn.upload{border:1px solid #4077AD;background-color:#4077ad;color:#fff;border-radius:5px;background:#4077ad;padding:4px 10px;display:inline-flex;align-items:center;gap:6px}.save-btn.upload img{filter:brightness(0) invert(1)}.form-check.agree{display:flex;align-items:flex-start;gap:8px;margin-bottom:8px}.form-check.agree .form-check-input{margin-top:4px;flex-shrink:0}.form-check.agree .form-check-label{line-height:1.4;cursor:pointer;white-space:normal}.spinner-16{width:16px;height:16px}.h6-buttons{display:flex;align-items:center;gap:8px}.form-check.agree{display:flex;align-items:flex-start;margin-bottom:14px}.form-check-input{position:absolute;opacity:0;cursor:pointer}.form-check-label{position:relative;padding-left:28px;cursor:pointer;font-size:14px;line-height:20px;color:#212529;-webkit-user-select:none;user-select:none}.form-check-label:before{content:\"\";position:absolute;left:0;top:8px;width:18px;height:18px;border:2px solid #adb5bd;border-radius:4px;background:#fff;transition:all .2s ease}.form-check-label:after{content:\"\";position:absolute;left:5px;top:10px;width:6px;height:10px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg) scale(0);transition:transform .15s ease}.form-check-input:checked+.form-check-label:before{background-color:#4077ad;border-color:#4077ad}.form-check-input:checked+.form-check-label:after{transform:rotate(45deg) scale(1)}.form-check-label:hover:before{border-color:#4077ad}.form-check-input:focus+.form-check-label:before{box-shadow:0 0 0 3px #0d6efd40}.form-check-input.is-invalid+.form-check-label:before{border-color:#dc3545}.form-check-input.is-invalid:checked+.form-check-label:before{background-color:#dc3545}.invalid-feedback{display:block;font-size:12px;margin-left:7px;margin-top:4px}::ng-deep .modal-dialog{max-width:750px}.user-cards-active{background-color:#4077ad;color:#fff;border:2px solid #4077AD}.terms-fixed-modal{width:1080px;height:700px;display:flex;flex-direction:column}.terms-scroll-area{flex:1 1 auto;overflow-y:auto;padding:16px}body.modal-open{overflow:hidden!important}.modal{z-index:1055!important}.modal-backdrop{z-index:1050!important}.modal-dialog{margin:auto;pointer-events:auto}.modal-content{position:relative;z-index:1060}.logout-container{display:flex;justify-content:flex-end}.logout-wrapper{display:flex;align-items:center;cursor:pointer;gap:6px}.logout-icon{width:20px;height:20px;background:url(/assets/images/icons/logoutt.svg) no-repeat center;background-size:contain}@media screen and (max-width: 767px){.term-signature{padding-left:3rem;padding-right:0;position:unset;margin:0}.footer-signature{margin-top:0rem}.disabled-btn{position:absolute;bottom:13px;right:24px}.next{height:46px;width:46px;position:absolute;bottom:21px;right:35px}.mob{padding-bottom:4.5rem!important}.checkmark{width:85%}.terms-fixed-modal{width:unset}::ng-deep .privacy-policy-modal .logo-section{margin-bottom:0!important}.add-tab-view{padding:30px 25px 6px;margin-left:0}.user-card{width:96%}.footer .btn-mob{display:flex;align-items:center}.back-btn{position:absolute;bottom:21px;left:10px}.actions{margin:50px 34px 1px}}@media screen and (min-width: 768px) and (max-width: 1024px){.footer-signature{margin-top:3rem}}\n"] }]
|
|
29903
|
-
}], ctorParameters: () => [{ type:
|
|
30163
|
+
}], ctorParameters: () => [{ type: i2.Router }, { type: UserDetailService }, { type: i8.FormBuilder }, { type: FileService }, { type: ProvidersService$1 }, { type: RolesService }, { type: i7.BsModalService }, { type: ProviderContractorSubCategoryService }, { type: ProviderContractorSubCategoryService }, { type: i9.AuthService }, { type: i6.TokenService }, { type: i6.RoleContextService }, { type: i6.AuthLogoutService }, { type: undefined, decorators: [{
|
|
29904
30164
|
type: Inject,
|
|
29905
30165
|
args: [LIBRARY_CONFIG]
|
|
29906
30166
|
}] }], propDecorators: { canvasRef: [{
|
|
@@ -30040,7 +30300,7 @@ class SignaturePadComponent {
|
|
|
30040
30300
|
}
|
|
30041
30301
|
}
|
|
30042
30302
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SignaturePadComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
30043
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: SignaturePadComponent, isStandalone: false, selector: "ng-signature-pad", inputs: { points: "points", editable: "editable", isSubmit: "isSubmit", Title: "Title", signData: "signData", penColor: "penColor", backgroundColor: "backgroundColor", showDoneButton: "showDoneButton", doneButtonText: "doneButtonText", doneButtonClass: "doneButtonClass", showClearButton: "showClearButton", clearButtonText: "clearButtonText", clearButtonClass: "clearButtonClass", showUploadButton: "showUploadButton", uploadButtonText: "uploadButtonText", uploadButtonClass: "uploadButtonClass", format: "format", height: "height", width: "width" }, outputs: { pointsChange: "pointsChange", done: "done", upload: "upload", cleared: "cleared", signatureData: "signatureData" }, viewQueries: [{ propertyName: "canvasRef", first: true, predicate: ["canvas"], descendants: true, read: ElementRef }, { propertyName: "uploadImage", first: true, predicate: ["uploadImage"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"col-md-12\" *ngIf=\"!isSubmit\">\r\n <div class=\"row\">\r\n <div class=\"col-md-4 col-6\">\r\n <h3 class=\"imat-font-prox-black pb-3 h6\">{{ Title }}:</h3>\r\n </div>\r\n <!-- <div class=\"col-md-3 col-6\">\r\n <span class=\"pt-2 imat-text-yellow imat-font-prox-bold small\">PENDING </span>\r\n </div> -->\r\n </div>\r\n</div>\r\n<div class=\"row\">\r\n <div class=\"col-md-12 col-12\">\r\n <div class=\"signature-pad\">\r\n <!---->\r\n <canvas [ngClass]=\"{ 'd-none' : signData?.publicUrl}\" [width]=\"width\" [height]=\"height\" #canvas></canvas>\r\n <img [ngClass]=\"{ 'd-none' : !signData?.publicUrl}\" [width]=\"width\" [height]=\"height\" style=\"position: relative;\"\r\n [src]=\"signData?.publicUrl\" alt=\"\">\r\n </div>\r\n </div>\r\n <div class=\"col-12 col-btn\">\r\n <div class=\"d-flex justify-content-start\">\r\n <button class=\"my-2 mx-1\" [disabled]=\"signData?.publicUrl || (currentPoints == null || currentPoints.length == 0)\"\r\n [class]=\"doneButtonClass\" *ngIf=\"showDoneButton && !isSubmit\" [hidden]=\"!editable\"\r\n (click)=\"emitPointsAndBlob()\">\r\n <i class=\"fa-solid fa-save\"></i> {{ doneButtonText }}\r\n </button>\r\n <button class=\"my-2 mx-1\" [class]=\"clearButtonClass\" *ngIf=\"showClearButton\" [hidden]=\"!editable\"\r\n (click)=\"clearPad()\">\r\n <i class=\"fa-solid fa-ban\"></i> {{ clearButtonText }}\r\n </button>\r\n <button class=\"my-2 mx-1\" [class]=\"uploadButtonClass\" *ngIf=\"showUploadButton\" [hidden]=\"!editable\"\r\n (click)=\"uploadImage.click()\">\r\n <i class=\"fa-solid fa-upload\"></i> {{ uploadButtonText }}\r\n <input #uploadImage type=\"file\" class=\"image-upload d-none\" accept=\"image/*\"\r\n (change)=\"uploadSignImage($event)\" />\r\n\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".signature-pad canvas{background:#f2f2f2}\n"], dependencies: [{ kind: "directive", type:
|
|
30303
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: SignaturePadComponent, isStandalone: false, selector: "ng-signature-pad", inputs: { points: "points", editable: "editable", isSubmit: "isSubmit", Title: "Title", signData: "signData", penColor: "penColor", backgroundColor: "backgroundColor", showDoneButton: "showDoneButton", doneButtonText: "doneButtonText", doneButtonClass: "doneButtonClass", showClearButton: "showClearButton", clearButtonText: "clearButtonText", clearButtonClass: "clearButtonClass", showUploadButton: "showUploadButton", uploadButtonText: "uploadButtonText", uploadButtonClass: "uploadButtonClass", format: "format", height: "height", width: "width" }, outputs: { pointsChange: "pointsChange", done: "done", upload: "upload", cleared: "cleared", signatureData: "signatureData" }, viewQueries: [{ propertyName: "canvasRef", first: true, predicate: ["canvas"], descendants: true, read: ElementRef }, { propertyName: "uploadImage", first: true, predicate: ["uploadImage"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"col-md-12\" *ngIf=\"!isSubmit\">\r\n <div class=\"row\">\r\n <div class=\"col-md-4 col-6\">\r\n <h3 class=\"imat-font-prox-black pb-3 h6\">{{ Title }}:</h3>\r\n </div>\r\n <!-- <div class=\"col-md-3 col-6\">\r\n <span class=\"pt-2 imat-text-yellow imat-font-prox-bold small\">PENDING </span>\r\n </div> -->\r\n </div>\r\n</div>\r\n<div class=\"row\">\r\n <div class=\"col-md-12 col-12\">\r\n <div class=\"signature-pad\">\r\n <!---->\r\n <canvas [ngClass]=\"{ 'd-none' : signData?.publicUrl}\" [width]=\"width\" [height]=\"height\" #canvas></canvas>\r\n <img [ngClass]=\"{ 'd-none' : !signData?.publicUrl}\" [width]=\"width\" [height]=\"height\" style=\"position: relative;\"\r\n [src]=\"signData?.publicUrl\" alt=\"\">\r\n </div>\r\n </div>\r\n <div class=\"col-12 col-btn\">\r\n <div class=\"d-flex justify-content-start\">\r\n <button class=\"my-2 mx-1\" [disabled]=\"signData?.publicUrl || (currentPoints == null || currentPoints.length == 0)\"\r\n [class]=\"doneButtonClass\" *ngIf=\"showDoneButton && !isSubmit\" [hidden]=\"!editable\"\r\n (click)=\"emitPointsAndBlob()\">\r\n <i class=\"fa-solid fa-save\"></i> {{ doneButtonText }}\r\n </button>\r\n <button class=\"my-2 mx-1\" [class]=\"clearButtonClass\" *ngIf=\"showClearButton\" [hidden]=\"!editable\"\r\n (click)=\"clearPad()\">\r\n <i class=\"fa-solid fa-ban\"></i> {{ clearButtonText }}\r\n </button>\r\n <button class=\"my-2 mx-1\" [class]=\"uploadButtonClass\" *ngIf=\"showUploadButton\" [hidden]=\"!editable\"\r\n (click)=\"uploadImage.click()\">\r\n <i class=\"fa-solid fa-upload\"></i> {{ uploadButtonText }}\r\n <input #uploadImage type=\"file\" class=\"image-upload d-none\" accept=\"image/*\"\r\n (change)=\"uploadSignImage($event)\" />\r\n\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".signature-pad canvas{background:#f2f2f2}\n"], dependencies: [{ kind: "directive", type: i11.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
30044
30304
|
}
|
|
30045
30305
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SignaturePadComponent, decorators: [{
|
|
30046
30306
|
type: Component,
|
|
@@ -30286,7 +30546,7 @@ class LoaderComponent {
|
|
|
30286
30546
|
show = false;
|
|
30287
30547
|
small = false;
|
|
30288
30548
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: LoaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
30289
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: LoaderComponent, isStandalone: false, selector: "loader", inputs: { show: "show", small: "small" }, ngImport: i0, template: '<img src="assets/images/loader.gif" *ngIf="show && !small" style="width: 35px;"><img src="assets/images/loader.gif" *ngIf="show && small" style="width: 35px;">', isInline: true, dependencies: [{ kind: "directive", type:
|
|
30549
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: LoaderComponent, isStandalone: false, selector: "loader", inputs: { show: "show", small: "small" }, ngImport: i0, template: '<img src="assets/images/loader.gif" *ngIf="show && !small" style="width: 35px;"><img src="assets/images/loader.gif" *ngIf="show && small" style="width: 35px;">', isInline: true, dependencies: [{ kind: "directive", type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
30290
30550
|
}
|
|
30291
30551
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: LoaderComponent, decorators: [{
|
|
30292
30552
|
type: Component,
|
|
@@ -30462,7 +30722,7 @@ class InitialProcessModule {
|
|
|
30462
30722
|
Ng2LoadingSpinnerModule,
|
|
30463
30723
|
LoaderModule,
|
|
30464
30724
|
CustomPipesModule,
|
|
30465
|
-
NgxStarsModule,
|
|
30725
|
+
NgxStarsModule, i12$2.TooltipModule, i13.TabsModule, i14.AccordionModule, GooglePlaceModule,
|
|
30466
30726
|
GoogleMapsModule,
|
|
30467
30727
|
TextMaskModule,
|
|
30468
30728
|
SignaturePadModule,
|
|
@@ -30591,13 +30851,13 @@ class MustChangePasswordComponent {
|
|
|
30591
30851
|
finally {
|
|
30592
30852
|
}
|
|
30593
30853
|
}
|
|
30594
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: MustChangePasswordComponent, deps: [{ token:
|
|
30595
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: MustChangePasswordComponent, isStandalone: true, selector: "app-must-change-password", ngImport: i0, template: "<div class=\"container\">\r\n <div class=\"row justify-content-center align-items-center vh-100\">\r\n <div class=\"col-md-6 col-lg-5\">\r\n <div class=\"card shadow-lg border-0\">\r\n <div class=\"card-body p-4\">\r\n <div class=\"text-center mb-4\">\r\n <span class=\"logout-wrapper\" (click)=\"logout()\">\r\n <span class=\"logout-icon\"></span>\r\n <span class=\"logout-text\">Logout</span>\r\n </span>\r\n <h4 class=\"fw-bold\">Change Your Password</h4>\r\n <p class=\"text-muted small\">\r\n For security reasons, you must change your password before continuing.\r\n </p>\r\n </div>\r\n <div *ngIf=\"errorMessage\" class=\"alert alert-danger\">\r\n {{ errorMessage }}\r\n </div>\r\n <form [formGroup]=\"changePasswordForm\" (ngSubmit)=\"onSubmit()\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">New Password</label>\r\n <input type=\"password\" class=\"form-control\" formControlName=\"newPassword\"\r\n [ngClass]=\"{'is-invalid': submitted && f['newPassword'].errors}\">\r\n\r\n <div *ngIf=\"submitted && f['newPassword'].errors\" class=\"invalid-feedback\">\r\n <div *ngIf=\"f['newPassword'].errors['required']\">\r\n New password is required.\r\n </div>\r\n <div *ngIf=\"f['newPassword'].errors['minlength']\">\r\n Minimum 8 characters required.\r\n </div>\r\n <div *ngIf=\"f['newPassword'].errors['pattern']\">\r\n Must include uppercase, lowercase, number & symbol.\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">Confirm Password</label>\r\n <input type=\"password\" class=\"form-control\" formControlName=\"confirmPassword\"\r\n [ngClass]=\"{'is-invalid': submitted && changePasswordForm.errors?.['mismatch']}\">\r\n\r\n <div *ngIf=\"submitted && changePasswordForm.errors?.['mismatch']\" class=\"invalid-feedback\">\r\n Passwords do not match.\r\n </div>\r\n </div>\r\n <div class=\"d-grid\">\r\n <button type=\"submit\" class=\"btn btn-primary\" style=\"background: #4077AD;color: white;border-radius: 5px;\"\r\n [disabled]=\"isLoading\">\r\n <span *ngIf=\"isLoading\" class=\"spinner-border spinner-border-sm me-2\"></span>\r\n Update Password\r\n </button>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n <div class=\"text-center mt-3\">\r\n <small class=\"text-muted\">\r\n If you face issues, contact your administrator.\r\n </small>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [".logout-wrapper{display:inline-flex;align-items:center;gap:6px;cursor:pointer;color:#212529bf;font-weight:500;font-size:18px}.logout-wrapper:hover{color:#4077ad}.logout-icon{width:20px;height:20px;background:url(/assets/images/icons/logoutt.svg) no-repeat center;background-size:contain}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type:
|
|
30854
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: MustChangePasswordComponent, deps: [{ token: i8.FormBuilder }, { token: i9.AuthService }, { token: UserDetailService }, { token: i6.TokenService }, { token: i6.AuthLogoutService }], target: i0.ɵɵFactoryTarget.Component });
|
|
30855
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: MustChangePasswordComponent, isStandalone: true, selector: "app-must-change-password", ngImport: i0, template: "<div class=\"container\">\r\n <div class=\"row justify-content-center align-items-center vh-100\">\r\n <div class=\"col-md-6 col-lg-5\">\r\n <div class=\"card shadow-lg border-0\">\r\n <div class=\"card-body p-4\">\r\n <div class=\"text-center mb-4\">\r\n <span class=\"logout-wrapper\" (click)=\"logout()\">\r\n <span class=\"logout-icon\"></span>\r\n <span class=\"logout-text\">Logout</span>\r\n </span>\r\n <h4 class=\"fw-bold\">Change Your Password</h4>\r\n <p class=\"text-muted small\">\r\n For security reasons, you must change your password before continuing.\r\n </p>\r\n </div>\r\n <div *ngIf=\"errorMessage\" class=\"alert alert-danger\">\r\n {{ errorMessage }}\r\n </div>\r\n <form [formGroup]=\"changePasswordForm\" (ngSubmit)=\"onSubmit()\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">New Password</label>\r\n <input type=\"password\" class=\"form-control\" formControlName=\"newPassword\"\r\n [ngClass]=\"{'is-invalid': submitted && f['newPassword'].errors}\">\r\n\r\n <div *ngIf=\"submitted && f['newPassword'].errors\" class=\"invalid-feedback\">\r\n <div *ngIf=\"f['newPassword'].errors['required']\">\r\n New password is required.\r\n </div>\r\n <div *ngIf=\"f['newPassword'].errors['minlength']\">\r\n Minimum 8 characters required.\r\n </div>\r\n <div *ngIf=\"f['newPassword'].errors['pattern']\">\r\n Must include uppercase, lowercase, number & symbol.\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">Confirm Password</label>\r\n <input type=\"password\" class=\"form-control\" formControlName=\"confirmPassword\"\r\n [ngClass]=\"{'is-invalid': submitted && changePasswordForm.errors?.['mismatch']}\">\r\n\r\n <div *ngIf=\"submitted && changePasswordForm.errors?.['mismatch']\" class=\"invalid-feedback\">\r\n Passwords do not match.\r\n </div>\r\n </div>\r\n <div class=\"d-grid\">\r\n <button type=\"submit\" class=\"btn btn-primary\" style=\"background: #4077AD;color: white;border-radius: 5px;\"\r\n [disabled]=\"isLoading\">\r\n <span *ngIf=\"isLoading\" class=\"spinner-border spinner-border-sm me-2\"></span>\r\n Update Password\r\n </button>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n <div class=\"text-center mt-3\">\r\n <small class=\"text-muted\">\r\n If you face issues, contact your administrator.\r\n </small>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [".logout-wrapper{display:inline-flex;align-items:center;gap:6px;cursor:pointer;color:#212529bf;font-weight:500;font-size:18px}.logout-wrapper:hover{color:#4077ad}.logout-icon{width:20px;height:20px;background:url(/assets/images/icons/logoutt.svg) no-repeat center;background-size:contain}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i11.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i8.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i8.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: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i8.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i8.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] });
|
|
30596
30856
|
}
|
|
30597
30857
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: MustChangePasswordComponent, decorators: [{
|
|
30598
30858
|
type: Component,
|
|
30599
30859
|
args: [{ selector: 'app-must-change-password', standalone: true, imports: [CommonModule, FormsModule, ReactiveFormsModule], template: "<div class=\"container\">\r\n <div class=\"row justify-content-center align-items-center vh-100\">\r\n <div class=\"col-md-6 col-lg-5\">\r\n <div class=\"card shadow-lg border-0\">\r\n <div class=\"card-body p-4\">\r\n <div class=\"text-center mb-4\">\r\n <span class=\"logout-wrapper\" (click)=\"logout()\">\r\n <span class=\"logout-icon\"></span>\r\n <span class=\"logout-text\">Logout</span>\r\n </span>\r\n <h4 class=\"fw-bold\">Change Your Password</h4>\r\n <p class=\"text-muted small\">\r\n For security reasons, you must change your password before continuing.\r\n </p>\r\n </div>\r\n <div *ngIf=\"errorMessage\" class=\"alert alert-danger\">\r\n {{ errorMessage }}\r\n </div>\r\n <form [formGroup]=\"changePasswordForm\" (ngSubmit)=\"onSubmit()\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">New Password</label>\r\n <input type=\"password\" class=\"form-control\" formControlName=\"newPassword\"\r\n [ngClass]=\"{'is-invalid': submitted && f['newPassword'].errors}\">\r\n\r\n <div *ngIf=\"submitted && f['newPassword'].errors\" class=\"invalid-feedback\">\r\n <div *ngIf=\"f['newPassword'].errors['required']\">\r\n New password is required.\r\n </div>\r\n <div *ngIf=\"f['newPassword'].errors['minlength']\">\r\n Minimum 8 characters required.\r\n </div>\r\n <div *ngIf=\"f['newPassword'].errors['pattern']\">\r\n Must include uppercase, lowercase, number & symbol.\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">Confirm Password</label>\r\n <input type=\"password\" class=\"form-control\" formControlName=\"confirmPassword\"\r\n [ngClass]=\"{'is-invalid': submitted && changePasswordForm.errors?.['mismatch']}\">\r\n\r\n <div *ngIf=\"submitted && changePasswordForm.errors?.['mismatch']\" class=\"invalid-feedback\">\r\n Passwords do not match.\r\n </div>\r\n </div>\r\n <div class=\"d-grid\">\r\n <button type=\"submit\" class=\"btn btn-primary\" style=\"background: #4077AD;color: white;border-radius: 5px;\"\r\n [disabled]=\"isLoading\">\r\n <span *ngIf=\"isLoading\" class=\"spinner-border spinner-border-sm me-2\"></span>\r\n Update Password\r\n </button>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n <div class=\"text-center mt-3\">\r\n <small class=\"text-muted\">\r\n If you face issues, contact your administrator.\r\n </small>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [".logout-wrapper{display:inline-flex;align-items:center;gap:6px;cursor:pointer;color:#212529bf;font-weight:500;font-size:18px}.logout-wrapper:hover{color:#4077ad}.logout-icon{width:20px;height:20px;background:url(/assets/images/icons/logoutt.svg) no-repeat center;background-size:contain}\n"] }]
|
|
30600
|
-
}], ctorParameters: () => [{ type:
|
|
30860
|
+
}], ctorParameters: () => [{ type: i8.FormBuilder }, { type: i9.AuthService }, { type: UserDetailService }, { type: i6.TokenService }, { type: i6.AuthLogoutService }] });
|
|
30601
30861
|
|
|
30602
30862
|
class VerifyEmailComponent {
|
|
30603
30863
|
libConfig;
|
|
@@ -30681,8 +30941,8 @@ class VerifyEmailComponent {
|
|
|
30681
30941
|
clearInterval(this.interval);
|
|
30682
30942
|
}
|
|
30683
30943
|
}
|
|
30684
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: VerifyEmailComponent, deps: [{ token: LIBRARY_CONFIG }, { token: UserDetailService }, { token: i6.AuthLogoutService }, { token: i6.TokenService }, { token:
|
|
30685
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: VerifyEmailComponent, isStandalone: true, selector: "app-verify-email", ngImport: i0, template: "@if(pageLoader){\r\n<div class=\"align-content-center text-center\" style=\"height: 100vh;\">\r\n <loader [show]=\"true\"></loader>\r\n <div class=\"fs-5 fw-bolder\">Loading... Please wait !</div>\r\n</div>\r\n}@else{\r\n<div class=\"container d-flex justify-content-center align-items-center vh-100\">\r\n <div class=\"card shadow p-4 text-center\" style=\"max-width: 420px; width: 100%;\">\r\n \r\n <div class=\"icon mb-3 text-warning\" style=\"font-size: 60px;\">\r\n \u26A0\r\n </div>\r\n \r\n <h4 class=\"mb-3\">Email Verification</h4>\r\n \r\n <p class=\"text-muted\">\r\n Please check your inbox and click the verification link.\r\n <br><br>\r\n If you didn\u2019t receive the email, click the button below to resend the verification link.\r\n </p>\r\n \r\n <button class=\"btn btn-warning w-100 mt-3\" (click)=\"resendVerification()\" [disabled]=\"loading || cooldown > 0\">\r\n \r\n <!-- Normal -->\r\n <span *ngIf=\"!loading && cooldown === 0\">\r\n Resend Verification Email\r\n </span>\r\n \r\n <!-- Loading -->\r\n <span *ngIf=\"loading\">\r\n Sending...\r\n </span>\r\n \r\n <!-- Cooldown -->\r\n <span *ngIf=\"cooldown > 0 && !loading\">\r\n Retry in {{ cooldown }}s\r\n </span>\r\n \r\n </button>\r\n \r\n <div *ngIf=\"successMessage\" class=\"mt-3 text-success\">\r\n \u2705 Verification email sent! Please check your inbox.\r\n </div>\r\n \r\n <div *ngIf=\"errorMessage\" class=\"mt-3 text-danger\">\r\n \u274C Failed to resend email. Try again.\r\n </div>\r\n \r\n <!-- Optional logout -->\r\n <button class=\"btn btn-link mt-3\" (click)=\"logout()\">\r\n Logout\r\n </button>\r\n \r\n </div>\r\n</div>\r\n}\r\n ", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type:
|
|
30944
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: VerifyEmailComponent, deps: [{ token: LIBRARY_CONFIG }, { token: UserDetailService }, { token: i6.AuthLogoutService }, { token: i6.TokenService }, { token: i2.Router }, { token: i9.AuthService }], target: i0.ɵɵFactoryTarget.Component });
|
|
30945
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: VerifyEmailComponent, isStandalone: true, selector: "app-verify-email", ngImport: i0, template: "@if(pageLoader){\r\n<div class=\"align-content-center text-center\" style=\"height: 100vh;\">\r\n <loader [show]=\"true\"></loader>\r\n <div class=\"fs-5 fw-bolder\">Loading... Please wait !</div>\r\n</div>\r\n}@else{\r\n<div class=\"container d-flex justify-content-center align-items-center vh-100\">\r\n <div class=\"card shadow p-4 text-center\" style=\"max-width: 420px; width: 100%;\">\r\n \r\n <div class=\"icon mb-3 text-warning\" style=\"font-size: 60px;\">\r\n \u26A0\r\n </div>\r\n \r\n <h4 class=\"mb-3\">Email Verification</h4>\r\n \r\n <p class=\"text-muted\">\r\n Please check your inbox and click the verification link.\r\n <br><br>\r\n If you didn\u2019t receive the email, click the button below to resend the verification link.\r\n </p>\r\n \r\n <button class=\"btn btn-warning w-100 mt-3\" (click)=\"resendVerification()\" [disabled]=\"loading || cooldown > 0\">\r\n \r\n <!-- Normal -->\r\n <span *ngIf=\"!loading && cooldown === 0\">\r\n Resend Verification Email\r\n </span>\r\n \r\n <!-- Loading -->\r\n <span *ngIf=\"loading\">\r\n Sending...\r\n </span>\r\n \r\n <!-- Cooldown -->\r\n <span *ngIf=\"cooldown > 0 && !loading\">\r\n Retry in {{ cooldown }}s\r\n </span>\r\n \r\n </button>\r\n \r\n <div *ngIf=\"successMessage\" class=\"mt-3 text-success\">\r\n \u2705 Verification email sent! Please check your inbox.\r\n </div>\r\n \r\n <div *ngIf=\"errorMessage\" class=\"mt-3 text-danger\">\r\n \u274C Failed to resend email. Try again.\r\n </div>\r\n \r\n <!-- Optional logout -->\r\n <button class=\"btn btn-link mt-3\" (click)=\"logout()\">\r\n Logout\r\n </button>\r\n \r\n </div>\r\n</div>\r\n}\r\n ", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: LoaderModule }, { kind: "component", type: LoaderComponent, selector: "loader", inputs: ["show", "small"] }] });
|
|
30686
30946
|
}
|
|
30687
30947
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: VerifyEmailComponent, decorators: [{
|
|
30688
30948
|
type: Component,
|
|
@@ -30690,7 +30950,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
30690
30950
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
30691
30951
|
type: Inject,
|
|
30692
30952
|
args: [LIBRARY_CONFIG]
|
|
30693
|
-
}] }, { type: UserDetailService }, { type: i6.AuthLogoutService }, { type: i6.TokenService }, { type:
|
|
30953
|
+
}] }, { type: UserDetailService }, { type: i6.AuthLogoutService }, { type: i6.TokenService }, { type: i2.Router }, { type: i9.AuthService }] });
|
|
30694
30954
|
|
|
30695
30955
|
// app-type.enum.ts
|
|
30696
30956
|
var AppType;
|