@ieeesa-npm/groups 0.15.10 → 0.15.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/assets/constants.json +12 -0
- package/esm2022/lib/components/roster-import/roster-import.component.mjs +120 -28
- package/esm2022/lib/groups.component.mjs +24 -2
- package/esm2022/lib/models/roster-import.model.mjs +1 -1
- package/esm2022/lib/services/groups.service.mjs +24 -1
- package/fesm2022/ieeesa-npm-groups.mjs +177 -28
- package/fesm2022/ieeesa-npm-groups.mjs.map +1 -1
- package/lib/components/roster-import/roster-import.component.d.ts +48 -8
- package/lib/groups.component.d.ts +14 -1
- package/lib/models/roster-import.model.d.ts +6 -3
- package/lib/services/groups.service.d.ts +20 -0
- package/package.json +1 -1
|
@@ -399,6 +399,16 @@ var rosterImport = {
|
|
|
399
399
|
"Producer"
|
|
400
400
|
]
|
|
401
401
|
],
|
|
402
|
+
tenantFieldLabels: {
|
|
403
|
+
phone: "Phone Number",
|
|
404
|
+
address: "Address",
|
|
405
|
+
employer: "Employer"
|
|
406
|
+
},
|
|
407
|
+
tenantFieldSampleValues: {
|
|
408
|
+
phone: "+1 555 000 1234",
|
|
409
|
+
address: "123 Main St, City, Country",
|
|
410
|
+
employer: "Acme Corp"
|
|
411
|
+
},
|
|
402
412
|
uploadLabel: "Upload your file",
|
|
403
413
|
downloadSampleLabel: "Download Sample File",
|
|
404
414
|
sampleFileName: "Roster_Sample.csv",
|
|
@@ -424,6 +434,7 @@ var rosterImport = {
|
|
|
424
434
|
singleFileOnly: "Please upload a single file at a time.",
|
|
425
435
|
noDataRecords: "No roster data found. The selected file contains headers but no roster records.",
|
|
426
436
|
missingHeaders: "Incorrect file format. Mandatory column headers are missing",
|
|
437
|
+
forbidden: "You do not have permission to import a roster for this group.",
|
|
427
438
|
uploadFailed: "An error occurred while importing the roster. Please try again."
|
|
428
439
|
},
|
|
429
440
|
errorLog: {
|
|
@@ -509,6 +520,7 @@ var errors = {
|
|
|
509
520
|
"1037": "Group and parent group should not be same.",
|
|
510
521
|
"1038": "Reassigning parent for this group is not allowed.",
|
|
511
522
|
"1039": "You may not remove yourself from admin role.",
|
|
523
|
+
"1071": "You do not have permission to import a roster for this group.",
|
|
512
524
|
"1072": "Incorrect file type. Only .xlsx and .csv files are supported.",
|
|
513
525
|
"1073": "File size exceeds the maximum allowed size of 10MB.",
|
|
514
526
|
"1074": "The file exceeds the maximum allowed limit of 10,000 rows.",
|
|
@@ -904,6 +916,13 @@ class GroupsService {
|
|
|
904
916
|
this.groupPermissionsService = groupPermissionsService;
|
|
905
917
|
this.alertService = alertService;
|
|
906
918
|
this.groupsText = errors;
|
|
919
|
+
/**
|
|
920
|
+
* Tenant-level required profile fields (e.g. ['phone','address','employer'])
|
|
921
|
+
* supplied by the host app from its cached tenant configuration. Consumed by
|
|
922
|
+
* the roster import to append tenant-mandated columns to the required-column
|
|
923
|
+
* list and the sample file. Empty when the tenant has none configured.
|
|
924
|
+
*/
|
|
925
|
+
this.requiredProfileFields = [];
|
|
907
926
|
this.openModalNotifier = new BehaviorSubject(GroupFunctionType.VIEW_ROSTER);
|
|
908
927
|
this.canShowMessage = false;
|
|
909
928
|
this.isParentGroupChanged = false;
|
|
@@ -932,6 +951,22 @@ class GroupsService {
|
|
|
932
951
|
this.apiBaseUrl = apiBaseUrl;
|
|
933
952
|
this.userPermission = userPermission;
|
|
934
953
|
}
|
|
954
|
+
/**
|
|
955
|
+
* Stores the tenant-level required profile fields provided by the host app.
|
|
956
|
+
* @param {string[]} requiredProfileFields - Field keys (e.g. 'phone').
|
|
957
|
+
* @memberof GroupsService
|
|
958
|
+
*/
|
|
959
|
+
setRequiredProfileFields(requiredProfileFields) {
|
|
960
|
+
this.requiredProfileFields = requiredProfileFields ?? [];
|
|
961
|
+
}
|
|
962
|
+
/**
|
|
963
|
+
* Returns the tenant-level required profile fields (never null).
|
|
964
|
+
* @return {string[]}
|
|
965
|
+
* @memberof GroupsService
|
|
966
|
+
*/
|
|
967
|
+
getRequiredProfileFields() {
|
|
968
|
+
return this.requiredProfileFields ?? [];
|
|
969
|
+
}
|
|
935
970
|
/**
|
|
936
971
|
* Gets application group types from API and returns it as an observable.
|
|
937
972
|
* @return {Observable<GroupTypeResponse>} -It returns group types if success else error.
|
|
@@ -4440,9 +4475,76 @@ class RosterImportComponent {
|
|
|
4440
4475
|
/** Accepted file extensions (must match the BE contract: only .csv / .xlsx). */
|
|
4441
4476
|
this.ACCEPTED_EXTENSIONS = ['.csv', '.xlsx'];
|
|
4442
4477
|
}
|
|
4443
|
-
/**
|
|
4478
|
+
/**
|
|
4479
|
+
* Required column headers for display and the sample file. This is the static
|
|
4480
|
+
* base set from constants PLUS any tenant-level required profile fields the
|
|
4481
|
+
* host app configured (e.g. phone / address / employer), mapped to friendly
|
|
4482
|
+
* headers and de-duplicated (case-insensitive) against the base columns.
|
|
4483
|
+
* @return {string[]}
|
|
4484
|
+
*/
|
|
4444
4485
|
get requiredColumns() {
|
|
4445
|
-
|
|
4486
|
+
const base = this.screenTexts?.requiredColumns ?? [];
|
|
4487
|
+
return this.mergeTenantColumns(base);
|
|
4488
|
+
}
|
|
4489
|
+
/**
|
|
4490
|
+
* Appends the tenant-configured columns (from {@link tenantExtraColumns}) to
|
|
4491
|
+
* the base column headers.
|
|
4492
|
+
* @param {string[]} base - The static base column headers.
|
|
4493
|
+
* @return {string[]}
|
|
4494
|
+
* @memberof RosterImportComponent
|
|
4495
|
+
*/
|
|
4496
|
+
mergeTenantColumns(base) {
|
|
4497
|
+
const extras = this.tenantExtraColumns(base);
|
|
4498
|
+
return extras.length ? [...base, ...extras.map((c) => c.label)] : base;
|
|
4499
|
+
}
|
|
4500
|
+
/**
|
|
4501
|
+
* Resolves the tenant-configured required profile fields into the EXTRA
|
|
4502
|
+
* columns to append after the base set — the single source of truth shared by
|
|
4503
|
+
* both the header list ({@link requiredColumns}) and the sample file
|
|
4504
|
+
* ({@link downloadSampleFile}) so the two never drift out of alignment.
|
|
4505
|
+
*
|
|
4506
|
+
* Each field becomes one column with its friendly `label` (known keys use the
|
|
4507
|
+
* label map; unknown keys fall back to a title-cased key) and a `sampleValue`
|
|
4508
|
+
* for the sample row. Fields whose label already exists in the base set
|
|
4509
|
+
* (case-insensitive) are skipped so a tenant field like "employer" that is
|
|
4510
|
+
* already a base column is not duplicated.
|
|
4511
|
+
* @param {string[]} base - The static base column headers.
|
|
4512
|
+
* @return {{ label: string; sampleValue: string }[]}
|
|
4513
|
+
* @memberof RosterImportComponent
|
|
4514
|
+
*/
|
|
4515
|
+
tenantExtraColumns(base) {
|
|
4516
|
+
const tenantFields = this.groupService?.getRequiredProfileFields() ?? [];
|
|
4517
|
+
if (!tenantFields.length) {
|
|
4518
|
+
return [];
|
|
4519
|
+
}
|
|
4520
|
+
const sampleMap = this.screenTexts?.tenantFieldSampleValues ?? {};
|
|
4521
|
+
const seen = new Set(base.map((col) => col.toLowerCase()));
|
|
4522
|
+
const extras = [];
|
|
4523
|
+
tenantFields.forEach((field) => {
|
|
4524
|
+
const label = this.tenantFieldLabel(field);
|
|
4525
|
+
if (label && !seen.has(label.toLowerCase())) {
|
|
4526
|
+
seen.add(label.toLowerCase());
|
|
4527
|
+
extras.push({ label, sampleValue: sampleMap[field] ?? '' });
|
|
4528
|
+
}
|
|
4529
|
+
});
|
|
4530
|
+
return extras;
|
|
4531
|
+
}
|
|
4532
|
+
/**
|
|
4533
|
+
* Maps a tenant field key to its display header. Known keys use the configured
|
|
4534
|
+
* label map; unknown keys fall back to a title-cased key.
|
|
4535
|
+
* @param {string} field - The tenant field key (e.g. 'phone').
|
|
4536
|
+
* @return {string}
|
|
4537
|
+
* @memberof RosterImportComponent
|
|
4538
|
+
*/
|
|
4539
|
+
tenantFieldLabel(field) {
|
|
4540
|
+
const labels = this.screenTexts?.tenantFieldLabels ?? {};
|
|
4541
|
+
if (labels[field]) {
|
|
4542
|
+
return labels[field];
|
|
4543
|
+
}
|
|
4544
|
+
// Fallback: "phone_number" -> "Phone Number".
|
|
4545
|
+
return field
|
|
4546
|
+
.replace(/[_-]+/g, ' ')
|
|
4547
|
+
.replace(/\b\w/g, (char) => char.toUpperCase());
|
|
4446
4548
|
}
|
|
4447
4549
|
/** Comma-separated accepted file types for the input element. */
|
|
4448
4550
|
get acceptedFileTypes() {
|
|
@@ -4628,6 +4730,8 @@ class RosterImportComponent {
|
|
|
4628
4730
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
4629
4731
|
handleImportError(error) {
|
|
4630
4732
|
this.importState = 'upload';
|
|
4733
|
+
// BE error codes take priority when present (e.g. 1071 no permission, 1072
|
|
4734
|
+
// format, 1073 too large, 1074 row limit, 1075 invalid status).
|
|
4631
4735
|
const errorCodes = error?.error?.body?.errorCodes;
|
|
4632
4736
|
if (Array.isArray(errorCodes) && errorCodes.length) {
|
|
4633
4737
|
const code = errorCodes[0];
|
|
@@ -4637,6 +4741,16 @@ class RosterImportComponent {
|
|
|
4637
4741
|
'An error occurred while importing the roster. Please try again.';
|
|
4638
4742
|
return;
|
|
4639
4743
|
}
|
|
4744
|
+
// A 403 with no error-code body comes from the endpoint's @PreAuthorize
|
|
4745
|
+
// (the user lacks Manage Group Member / Manage All Rosters for this group).
|
|
4746
|
+
// Show the permission message — retrying will not help.
|
|
4747
|
+
const status = error?.status ?? error?.error?.status;
|
|
4748
|
+
if (status === 403) {
|
|
4749
|
+
this.errorMessage =
|
|
4750
|
+
this.screenTexts?.validation?.forbidden ??
|
|
4751
|
+
'You do not have permission to import a roster for this group.';
|
|
4752
|
+
return;
|
|
4753
|
+
}
|
|
4640
4754
|
this.errorMessage =
|
|
4641
4755
|
this.screenTexts?.validation?.uploadFailed ??
|
|
4642
4756
|
'An error occurred while importing the roster. Please try again.';
|
|
@@ -4662,36 +4776,43 @@ class RosterImportComponent {
|
|
|
4662
4776
|
}
|
|
4663
4777
|
}
|
|
4664
4778
|
/**
|
|
4665
|
-
*
|
|
4779
|
+
* Normalizes the BE `error_report` into row-error view models.
|
|
4666
4780
|
*
|
|
4667
|
-
* The BE
|
|
4668
|
-
*
|
|
4669
|
-
*
|
|
4670
|
-
*
|
|
4671
|
-
*
|
|
4672
|
-
*
|
|
4781
|
+
* The BE wraps the per-row entries in a `{ rows: [ { row, field, message } ] }`
|
|
4782
|
+
* document, but that value has been observed to arrive in MULTIPLE shapes:
|
|
4783
|
+
* - a parsed object `{ rows: [...] }` (confirm response — the common case),
|
|
4784
|
+
* - a raw JSON string of the same object (JSONB passthrough), or
|
|
4785
|
+
* - a bare array `[ { row, field, message } ]`.
|
|
4786
|
+
* This handles all three (and `null`) so the error log renders regardless of
|
|
4787
|
+
* how the field is serialized.
|
|
4788
|
+
* @param {*} errorReport - The BE error_report (object, string, array, or null).
|
|
4673
4789
|
* @return {RosterImportRowError[]}
|
|
4674
4790
|
* @memberof RosterImportComponent
|
|
4675
4791
|
*/
|
|
4792
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
4676
4793
|
parseErrorReport(errorReport) {
|
|
4677
4794
|
if (!errorReport) {
|
|
4678
4795
|
return [];
|
|
4679
4796
|
}
|
|
4680
|
-
|
|
4681
|
-
|
|
4682
|
-
|
|
4683
|
-
|
|
4684
|
-
|
|
4685
|
-
|
|
4686
|
-
|
|
4687
|
-
|
|
4688
|
-
|
|
4689
|
-
}));
|
|
4690
|
-
}
|
|
4691
|
-
catch {
|
|
4692
|
-
// Malformed error report — surface no per-row errors rather than crash.
|
|
4693
|
-
return [];
|
|
4797
|
+
// If it's a string, parse it first; on parse failure, no row errors.
|
|
4798
|
+
let value = errorReport;
|
|
4799
|
+
if (typeof errorReport === 'string') {
|
|
4800
|
+
try {
|
|
4801
|
+
value = JSON.parse(errorReport);
|
|
4802
|
+
}
|
|
4803
|
+
catch {
|
|
4804
|
+
return [];
|
|
4805
|
+
}
|
|
4694
4806
|
}
|
|
4807
|
+
// Accept either a bare array or a { rows: [...] } wrapper object.
|
|
4808
|
+
const entries = Array.isArray(value)
|
|
4809
|
+
? value
|
|
4810
|
+
: (value?.rows ?? []);
|
|
4811
|
+
return entries.map((entry) => ({
|
|
4812
|
+
rowNumber: entry?.row,
|
|
4813
|
+
field: entry?.field,
|
|
4814
|
+
errorMessage: entry?.message,
|
|
4815
|
+
}));
|
|
4695
4816
|
}
|
|
4696
4817
|
/**
|
|
4697
4818
|
* Whether the result state should show the summary cards (added / skipped).
|
|
@@ -4723,10 +4844,16 @@ class RosterImportComponent {
|
|
|
4723
4844
|
.map((col) => this.toCsvCell(col))
|
|
4724
4845
|
.join(',');
|
|
4725
4846
|
// Sample data rows so the downloaded file shows the expected format, not
|
|
4726
|
-
// just the column headers.
|
|
4727
|
-
//
|
|
4728
|
-
|
|
4729
|
-
|
|
4847
|
+
// just the column headers. The base row values come from constants; sample
|
|
4848
|
+
// values for any tenant-configured columns are appended (from the SAME
|
|
4849
|
+
// source that builds the headers) so every row lines up with the
|
|
4850
|
+
// (base + tenant) header set.
|
|
4851
|
+
const base = this.screenTexts?.requiredColumns ?? [];
|
|
4852
|
+
const baseSampleRows = this.screenTexts?.sampleRows ?? [];
|
|
4853
|
+
const tenantSampleCells = this.tenantExtraColumns(base).map((col) => col.sampleValue);
|
|
4854
|
+
const dataLines = baseSampleRows.map((row) => [...row, ...tenantSampleCells]
|
|
4855
|
+
.map((cell) => this.toCsvCell(cell))
|
|
4856
|
+
.join(','));
|
|
4730
4857
|
const csvContent = [headerLine, ...dataLines].join('\r\n') + '\r\n';
|
|
4731
4858
|
const blob = new Blob([csvContent], {
|
|
4732
4859
|
type: 'text/csv;charset=utf-8;',
|
|
@@ -7293,6 +7420,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
7293
7420
|
* @class GroupsComponent
|
|
7294
7421
|
*/
|
|
7295
7422
|
class GroupsComponent {
|
|
7423
|
+
/**
|
|
7424
|
+
* Tenant-level required profile fields (e.g. ['phone','address','employer'])
|
|
7425
|
+
* supplied by the host app from its cached tenant configuration. Passed to
|
|
7426
|
+
* GroupsService so the roster import appends them to its required columns and
|
|
7427
|
+
* sample file. Optional — defaults to none.
|
|
7428
|
+
*
|
|
7429
|
+
* Implemented as a setter so EVERY input update (including a late,
|
|
7430
|
+
* async-resolved value that arrives after ngOnInit) is propagated to the
|
|
7431
|
+
* singleton GroupsService — not just the initial binding.
|
|
7432
|
+
*/
|
|
7433
|
+
set requiredProfileFields(value) {
|
|
7434
|
+
this._requiredProfileFields = value ?? [];
|
|
7435
|
+
this.groupsService?.setRequiredProfileFields(this._requiredProfileFields);
|
|
7436
|
+
}
|
|
7437
|
+
get requiredProfileFields() {
|
|
7438
|
+
return this._requiredProfileFields;
|
|
7439
|
+
}
|
|
7296
7440
|
constructor(
|
|
7297
7441
|
// eslint-disable-next-line no-unused-vars
|
|
7298
7442
|
dialog,
|
|
@@ -7352,6 +7496,7 @@ class GroupsComponent {
|
|
|
7352
7496
|
groupsTitle: this.viewGroupTexts?.groupsTitle,
|
|
7353
7497
|
groupsDescription: this.viewGroupTexts?.groupsDescription,
|
|
7354
7498
|
};
|
|
7499
|
+
this._requiredProfileFields = [];
|
|
7355
7500
|
this.permissionType = PermissionType;
|
|
7356
7501
|
this.alignmentType = AlignType;
|
|
7357
7502
|
this.canReopenViewRosterModal = false;
|
|
@@ -7383,6 +7528,8 @@ class GroupsComponent {
|
|
|
7383
7528
|
this.userPermissionsService.filterUserGroupPermissions(this.userPermissions, this.groupPermissionsService?.getGlobalGroupPermissions());
|
|
7384
7529
|
this.groupsService.setUserGroupPermissions(this.userGroupPermissions);
|
|
7385
7530
|
this.groupsService?.setAppConfig(this.apiBaseURL, this.userPermissions);
|
|
7531
|
+
// requiredProfileFields is propagated to the service by its @Input setter
|
|
7532
|
+
// (covers both the initial binding and any later async-resolved update).
|
|
7386
7533
|
this.getGroupTypes();
|
|
7387
7534
|
this.groupsService?.openModalNotifier
|
|
7388
7535
|
?.pipe(takeUntil(this.destroy$))
|
|
@@ -7985,7 +8132,7 @@ class GroupsComponent {
|
|
|
7985
8132
|
this.destroy$.unsubscribe();
|
|
7986
8133
|
}
|
|
7987
8134
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GroupsComponent, deps: [{ token: i1.MatDialog }, { token: GroupsService }, { token: i2.AlertsService }, { token: i2$1.BreakpointObserverService }, { token: i2.GlobalErrorHandlerService }, { token: UserPermissionsService }, { token: GroupPermissionsMapService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7988
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: GroupsComponent, isStandalone: true, selector: "ieeesa-groups", inputs: { groupsPageInfo: "groupsPageInfo", applicationId: "applicationId", apiBaseURL: "apiBaseURL", userPermissions: "userPermissions", userInfo: "userInfo" }, providers: [AlertsService], ngImport: i0, template: "<div class=\"ieeesa-groups px-4\">\r\n <div\r\n class=\"ieeesa-groups__info d-flex justify-content-between pb-3 align-items-center\"\r\n [ngClass]=\"\r\n isMobileView\r\n ? 'ieeesa-groups__info--white-bg'\r\n : 'ieeesa-groups__info--blue-bg'\r\n \"\r\n >\r\n <p\r\n class=\"mb-0\"\r\n [ngClass]=\"\r\n isMobileView\r\n ? 'ieeesa-title-lg-24 p-0'\r\n : 'ieeesa-headline-lg-32 ieeesa-groups__info__heading'\r\n \"\r\n >\r\n {{ groupsPageInfo?.groupsTitle }}\r\n </p>\r\n <div\r\n class=\"d-flex d-sm-flex d-md-none d-lg-none d-xl-none ieeesa-groups__mobile-icons gap-2\"\r\n >\r\n <ieeesa-icon-button\r\n [iconButton]=\"createGroupIcon\"\r\n *ngIf=\"\r\n validateAccess(permissionType.CREATE_ROOT_GROUP) ||\r\n validateAccess(this.permissionType.MANAGE_ALL_GROUPS)\r\n \"\r\n (iconButtonClick)=\"openCreateGroupForm()\"\r\n >\r\n </ieeesa-icon-button>\r\n <ieeesa-icon-button\r\n [iconButton]=\"filterGroupIcon\"\r\n (iconButtonClick)=\"showGroupFilter()\"\r\n >\r\n </ieeesa-icon-button>\r\n <ieeesa-icon-button\r\n [iconButton]=\"searchGroupIcon\"\r\n (iconButtonClick)=\"onGroupSearch()\"\r\n >\r\n </ieeesa-icon-button>\r\n </div>\r\n </div>\r\n <div\r\n class=\"ieeesa-groups__actions\"\r\n [ngClass]=\"\r\n isMobileView\r\n ? 'ieeesa-groups__actions--white-bg'\r\n : 'ieeesa-groups__actions--blue-bg'\r\n \"\r\n >\r\n <div class=\"ieeesa-groups__actions--search row\">\r\n <div\r\n class=\"order-2 order-sm-1 col-12 col-md-7 col-lg-7 col-xl-7 d-flex flex-column justify-content-between\"\r\n >\r\n <p class=\"ieeesa-body-md-16\">\r\n {{ groupsPageInfo?.groupsDescription }}\r\n </p>\r\n <button\r\n [ngClass]=\"\r\n isMobileView ? 'p-0' : 'ieeesa-groups__actions__add-group-btn'\r\n \"\r\n mat-button\r\n *ngIf=\"\r\n validateAccess(permissionType.CREATE_ROOT_GROUP) ||\r\n validateAccess(this.permissionType.MANAGE_ALL_GROUPS)\r\n \"\r\n class=\"ieeesa-groups__create-subgroup mat-tertiary-button d-none d-sm-none d-md-block d-lg-block d-xl-block\"\r\n (click)=\"openCreateGroupForm()\"\r\n [attr.aria-label]=\"constants?.viewGroups?.ariaLabel?.addGroup\"\r\n >\r\n {{ constants?.viewGroups?.addGroup }}\r\n </button>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"\r\n ((isGroupSearchActive || isGroupFilterActive) && isMobileView) ||\r\n !isMobileView\r\n \"\r\n class=\"order-1 order-sm-2 col-12 col-md-5 col-lg-5 col-xl-5 d-flex flex-column\"\r\n [ngClass]=\"isMobileView ? 'ieeesa-search-mobile-view' : ''\"\r\n >\r\n <ieeesa-search\r\n *ngIf=\"isGroupSearchActive || !isMobileView\"\r\n (searchValue)=\"onGroupSearchClick($event)\"\r\n [searchTerm]=\"trimmedSearchTerm\"\r\n [searchType]=\"searchType\"\r\n [placeholderLabel]=\"searchPlaceHolderText\"\r\n [minCharacterToSearch]=\"minCharacterToSearch\"\r\n [supportMessage]=\"supportMessage\"\r\n ></ieeesa-search>\r\n\r\n <ieeesa-select\r\n *ngIf=\"isGroupFilterActive || !isMobileView\"\r\n class=\"align-self-end pt-lg-4 pt-md-4 pt-xl-4\"\r\n [isSortNeeded]=\"false\"\r\n [dropdownOptions]=\"selectGroupOptions\"\r\n [isLabelAlignedLeft]=\"true\"\r\n [selectLabel]=\"constants?.viewGroups?.filterByLabel\"\r\n (optionSelected)=\"onGroupTypeFiltered($event)\"\r\n [placeholderText]=\"filterPlaceHolderText\"\r\n [selectedOptions]=\"selectedGroupType\"\r\n ></ieeesa-select>\r\n </div>\r\n </div>\r\n <ieeesa-tree\r\n *ngIf=\"parentGroupsInfo && parentGroupsInfo.length > 0\"\r\n [parentGroupsInfo]=\"parentGroupsInfo\"\r\n [childGroupsInfo]=\"childGroupsInfo\"\r\n [deletedGroupIdInfo]=\"deletedGroupId\"\r\n [isGroupSearchOrFilterActive]=\"isGroupSearchOrFilterActive\"\r\n [userGroupPermissions]=\"userGroupPermissions\"\r\n (toggleGroupClick)=\"getGroups($event)\"\r\n (createGroupClick)=\"openCreateGroupForm($event)\"\r\n (deleteGroupClick)=\"openDeleteConfirmationModal($event)\"\r\n (viewRosterClick)=\"viewRoster($event)\"\r\n (editGroupClick)=\"openEditGroupForm($event)\"\r\n (manageInterestFormClick)=\"openRosterInterests($event)\"\r\n ></ieeesa-tree>\r\n </div>\r\n</div>\r\n", styles: [".ieeesa-subtitle{text-align:left;font-family:Calibri Regular;font-size:1.5625rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-body{text-align:left;font-family:Calibri Regular;font-size:1.25rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-display-lg-57{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:3.5625rem;line-height:64px;color:#000;letter-spacing:0}.ieeesa-display-md-45{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.813rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-md-47{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.9375rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-sm-38{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.375rem;line-height:44px;color:#000;letter-spacing:0}.ieeesa-headline-lg-32{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-lg-34{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.125rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-md-30{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.875rem;line-height:36px;color:#000;letter-spacing:0}.ieeesa-headline-sm-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:32px;color:#00629b;letter-spacing:0}.ieeesa-headline-sm-26{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.625rem;line-height:32px;color:#000;letter-spacing:0}.ieeesa-title-lg-bold-24{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-lg-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-md-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.009375em}.ieeesa-title-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-title-sm-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-btn-label-lg-bold-16{font-family:Calibri Regular;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#00629b;letter-spacing:.00625em}.ieeesa-label-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-label-sm-13{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.8125rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-18{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#1c1b1f;letter-spacing:.015625em}.ieeesa-body-md-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.015625em}.ieeesa-body-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-sm-12{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.75rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-color-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:18px;color:#49454f;letter-spacing:.025em}.ieeesa-body-sm-bold-14{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-title-inter-lg-bold-24{font-family:Inter Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:29px;color:#000;letter-spacing:0}.mat-mdc-button.mat-mdc-button-base.mat-primary-button,.mat-mdc-button.mat-mdc-button-base.mat-secondary-button,.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button,.mat-mdc-button.mat-mdc-button-base.mat-text-button{min-width:103px;width:auto;min-height:40px;height:auto;border-radius:3px;text-align:center;padding:.625em 1.5em;border:none;font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.mat-mdc-button.mat-mdc-button-base>.mat-icon{margin-right:11px}.mat-mdc-button.mat-mdc-button-base.mat-primary-button{background-color:#00629b;color:#fff}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:focus{background:#1f75a7}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:hover{background-color:#003e65}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:active{background-color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:disabled{background-color:#1c1b1f1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button{color:#fff;background:#a7a8aa;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:hover{background:#a7a8aa}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:focus{background:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:active{background:#1d192b1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:disabled{background:#1c1b1f1f;color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button{background-color:#fff;border:1px solid #00629b;color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:hover{background-color:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:focus{background-color:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:active{background:#6750a41f}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:disabled{border:1px solid rgba(28,27,31,.12);color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-text-button{color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-text-button:hover,.mat-mdc-button.mat-mdc-button-base.mat-text-button:active{background:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-text-button:disabled{color:#1c1b1f;opacity:.38}.ieeesa-text-button{color:#cac4d0;background:none;border:none}.ieeesa-view-more-or-less-button{border:none;background:none;text-decoration:underline;color:#00629b}.flex-align-center{display:flex;align-items:center;justify-content:center}.mat-button-toggle-checked{background-color:#a7a8aa}.mat-button-toggle-checked .mat-button-toggle-label-content:before{font-family:\"Font Awesome 5 Free\";font-weight:900;content:\"\\f00c\";padding-right:.5625em}.mat-button-toggle-group .mat-button-toggle-label-content{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#1c1b1f;letter-spacing:.00625em}.no-bg-color-btn{color:#00629b;border-radius:3px;border:1px solid #00629b;min-height:40px;height:auto}@media (max-width: 768px){.mat-button-toggle-group .mat-button-toggle-label-content{max-width:8ch;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;position:relative}}.cdk-overlay-pane .mat-mdc-tooltip .mdc-tooltip__surface{color:#525252;padding:6px 12px;font-family:Calibri Regular;font-size:1rem;border:1px solid #cac4d0;background:#fff;box-shadow:0 4px 8px #00000040;max-width:unset!important}.cdk-overlay-pane .mat-mdc-option .mdc-list-item__primary-text{font-family:Calibri Regular!important}.cdk-overlay-pane.ieeesa-modal-confirm-dialog,.cdk-overlay-pane.ieeesa-modal-dialog,.cdk-overlay-pane.ieeesa-alert-dialog{width:100%;min-width:312px}.mat-mdc-form-field{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:24px;color:#49454f;letter-spacing:.03125em}.ieeesa-cancel-modal-confirm-dialog{width:25vw!important}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation{padding:1.5em 1.5em 1em}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation .mat-mdc-dialog-content{text-align:center;padding:0 0 1em!important}.mat-mdc-button,.mat-mdc-outlined-button{--mat-mdc-button-persistent-ripple-color: unset}@media (max-width: 768px){.ieeesa-cancel-modal-confirm-dialog{width:90vw!important}}.ieeesa-wrapper-border{border:1px solid #b2b7be;border-top:none;padding:1.5em;border-radius:0 0 4px 4px}.ieeesa-groups{background-color:#f2f2f2}.ieeesa-groups__mobile-icons .ieeesa-icon-button__svg{height:1.5em!important;width:1.5em!important}.ieeesa-groups__mobile-icons .ieeesa-icon-button__3{display:flex;padding-top:0}.ieeesa-groups__info--white-bg{background-color:#fff;padding:16px 24px 0}.ieeesa-groups__info__heading{padding:12px 0}.ieeesa-groups__actions{background-color:#fff;box-shadow:0 2px #00b5e2 inset;padding:16px 24px 48px}.ieeesa-groups__actions--white-bg{background-color:#fff;box-shadow:none}.ieeesa-groups__actions__add-group-btn{max-width:8.125em}.ieeesa-groups__actions--search .ieeesa-search-mobile-view{margin-bottom:1em}.ieeesa-groups .ieeesa-select-field__label{width:max-content;padding-right:9px}.ieeesa-groups .ieeesa-select-field__label-left{display:flex;align-items:center}.ieeesa-groups .ieeesa-select-field .mat-mdc-form-field{width:auto}.ieeesa-groups .ieeesa-select-field .ieeesa-form-support-text,.ieeesa-groups .ieeesa-select-field .mat-mdc-form-field-subscript-wrapper{display:none}@media (min-width: 767px){.ieeesa-groups__actions--search{margin-bottom:1em}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: SearchComponent, selector: "ieeesa-search", inputs: ["formControlName", "placeholderLabel", "searchTerm", "supportMessage", "searchType", "minCharacterToSearch"], outputs: ["searchValue"] }, { kind: "component", type: SelectComponent, selector: "ieeesa-select", inputs: ["isSortNeeded", "dropdownOptions", "selectedOptions", "formControlName", "isMultiLevel", "isLabelAlignedLeft", "selectLabel", "isMultiSelect", "isDisabled", "isSearch", "placeholderText"], outputs: ["optionSelected", "optionSearched", "dropdownOpenedChange"] }, { kind: "component", type: TreeViewComponent, selector: "ieeesa-tree", inputs: ["parentGroupsInfo", "childGroupsInfo", "isGroupSearchOrFilterActive", "deletedGroupIdInfo", "userGroupPermissions"], outputs: ["toggleGroupClick", "createGroupClick", "editGroupClick", "deleteGroupClick", "viewRosterClick", "manageInterestFormClick"] }, { kind: "component", type: IconButtonComponent, selector: "ieeesa-icon-button", inputs: ["iconButton", "isLabelNeeded"], outputs: ["iconButtonClick"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
8135
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: GroupsComponent, isStandalone: true, selector: "ieeesa-groups", inputs: { groupsPageInfo: "groupsPageInfo", applicationId: "applicationId", apiBaseURL: "apiBaseURL", userPermissions: "userPermissions", userInfo: "userInfo", requiredProfileFields: "requiredProfileFields" }, providers: [AlertsService], ngImport: i0, template: "<div class=\"ieeesa-groups px-4\">\r\n <div\r\n class=\"ieeesa-groups__info d-flex justify-content-between pb-3 align-items-center\"\r\n [ngClass]=\"\r\n isMobileView\r\n ? 'ieeesa-groups__info--white-bg'\r\n : 'ieeesa-groups__info--blue-bg'\r\n \"\r\n >\r\n <p\r\n class=\"mb-0\"\r\n [ngClass]=\"\r\n isMobileView\r\n ? 'ieeesa-title-lg-24 p-0'\r\n : 'ieeesa-headline-lg-32 ieeesa-groups__info__heading'\r\n \"\r\n >\r\n {{ groupsPageInfo?.groupsTitle }}\r\n </p>\r\n <div\r\n class=\"d-flex d-sm-flex d-md-none d-lg-none d-xl-none ieeesa-groups__mobile-icons gap-2\"\r\n >\r\n <ieeesa-icon-button\r\n [iconButton]=\"createGroupIcon\"\r\n *ngIf=\"\r\n validateAccess(permissionType.CREATE_ROOT_GROUP) ||\r\n validateAccess(this.permissionType.MANAGE_ALL_GROUPS)\r\n \"\r\n (iconButtonClick)=\"openCreateGroupForm()\"\r\n >\r\n </ieeesa-icon-button>\r\n <ieeesa-icon-button\r\n [iconButton]=\"filterGroupIcon\"\r\n (iconButtonClick)=\"showGroupFilter()\"\r\n >\r\n </ieeesa-icon-button>\r\n <ieeesa-icon-button\r\n [iconButton]=\"searchGroupIcon\"\r\n (iconButtonClick)=\"onGroupSearch()\"\r\n >\r\n </ieeesa-icon-button>\r\n </div>\r\n </div>\r\n <div\r\n class=\"ieeesa-groups__actions\"\r\n [ngClass]=\"\r\n isMobileView\r\n ? 'ieeesa-groups__actions--white-bg'\r\n : 'ieeesa-groups__actions--blue-bg'\r\n \"\r\n >\r\n <div class=\"ieeesa-groups__actions--search row\">\r\n <div\r\n class=\"order-2 order-sm-1 col-12 col-md-7 col-lg-7 col-xl-7 d-flex flex-column justify-content-between\"\r\n >\r\n <p class=\"ieeesa-body-md-16\">\r\n {{ groupsPageInfo?.groupsDescription }}\r\n </p>\r\n <button\r\n [ngClass]=\"\r\n isMobileView ? 'p-0' : 'ieeesa-groups__actions__add-group-btn'\r\n \"\r\n mat-button\r\n *ngIf=\"\r\n validateAccess(permissionType.CREATE_ROOT_GROUP) ||\r\n validateAccess(this.permissionType.MANAGE_ALL_GROUPS)\r\n \"\r\n class=\"ieeesa-groups__create-subgroup mat-tertiary-button d-none d-sm-none d-md-block d-lg-block d-xl-block\"\r\n (click)=\"openCreateGroupForm()\"\r\n [attr.aria-label]=\"constants?.viewGroups?.ariaLabel?.addGroup\"\r\n >\r\n {{ constants?.viewGroups?.addGroup }}\r\n </button>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"\r\n ((isGroupSearchActive || isGroupFilterActive) && isMobileView) ||\r\n !isMobileView\r\n \"\r\n class=\"order-1 order-sm-2 col-12 col-md-5 col-lg-5 col-xl-5 d-flex flex-column\"\r\n [ngClass]=\"isMobileView ? 'ieeesa-search-mobile-view' : ''\"\r\n >\r\n <ieeesa-search\r\n *ngIf=\"isGroupSearchActive || !isMobileView\"\r\n (searchValue)=\"onGroupSearchClick($event)\"\r\n [searchTerm]=\"trimmedSearchTerm\"\r\n [searchType]=\"searchType\"\r\n [placeholderLabel]=\"searchPlaceHolderText\"\r\n [minCharacterToSearch]=\"minCharacterToSearch\"\r\n [supportMessage]=\"supportMessage\"\r\n ></ieeesa-search>\r\n\r\n <ieeesa-select\r\n *ngIf=\"isGroupFilterActive || !isMobileView\"\r\n class=\"align-self-end pt-lg-4 pt-md-4 pt-xl-4\"\r\n [isSortNeeded]=\"false\"\r\n [dropdownOptions]=\"selectGroupOptions\"\r\n [isLabelAlignedLeft]=\"true\"\r\n [selectLabel]=\"constants?.viewGroups?.filterByLabel\"\r\n (optionSelected)=\"onGroupTypeFiltered($event)\"\r\n [placeholderText]=\"filterPlaceHolderText\"\r\n [selectedOptions]=\"selectedGroupType\"\r\n ></ieeesa-select>\r\n </div>\r\n </div>\r\n <ieeesa-tree\r\n *ngIf=\"parentGroupsInfo && parentGroupsInfo.length > 0\"\r\n [parentGroupsInfo]=\"parentGroupsInfo\"\r\n [childGroupsInfo]=\"childGroupsInfo\"\r\n [deletedGroupIdInfo]=\"deletedGroupId\"\r\n [isGroupSearchOrFilterActive]=\"isGroupSearchOrFilterActive\"\r\n [userGroupPermissions]=\"userGroupPermissions\"\r\n (toggleGroupClick)=\"getGroups($event)\"\r\n (createGroupClick)=\"openCreateGroupForm($event)\"\r\n (deleteGroupClick)=\"openDeleteConfirmationModal($event)\"\r\n (viewRosterClick)=\"viewRoster($event)\"\r\n (editGroupClick)=\"openEditGroupForm($event)\"\r\n (manageInterestFormClick)=\"openRosterInterests($event)\"\r\n ></ieeesa-tree>\r\n </div>\r\n</div>\r\n", styles: [".ieeesa-subtitle{text-align:left;font-family:Calibri Regular;font-size:1.5625rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-body{text-align:left;font-family:Calibri Regular;font-size:1.25rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-display-lg-57{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:3.5625rem;line-height:64px;color:#000;letter-spacing:0}.ieeesa-display-md-45{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.813rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-md-47{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.9375rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-sm-38{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.375rem;line-height:44px;color:#000;letter-spacing:0}.ieeesa-headline-lg-32{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-lg-34{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.125rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-md-30{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.875rem;line-height:36px;color:#000;letter-spacing:0}.ieeesa-headline-sm-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:32px;color:#00629b;letter-spacing:0}.ieeesa-headline-sm-26{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.625rem;line-height:32px;color:#000;letter-spacing:0}.ieeesa-title-lg-bold-24{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-lg-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-md-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.009375em}.ieeesa-title-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-title-sm-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-btn-label-lg-bold-16{font-family:Calibri Regular;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#00629b;letter-spacing:.00625em}.ieeesa-label-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-label-sm-13{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.8125rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-18{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#1c1b1f;letter-spacing:.015625em}.ieeesa-body-md-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.015625em}.ieeesa-body-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-sm-12{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.75rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-color-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:18px;color:#49454f;letter-spacing:.025em}.ieeesa-body-sm-bold-14{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-title-inter-lg-bold-24{font-family:Inter Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:29px;color:#000;letter-spacing:0}.mat-mdc-button.mat-mdc-button-base.mat-primary-button,.mat-mdc-button.mat-mdc-button-base.mat-secondary-button,.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button,.mat-mdc-button.mat-mdc-button-base.mat-text-button{min-width:103px;width:auto;min-height:40px;height:auto;border-radius:3px;text-align:center;padding:.625em 1.5em;border:none;font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.mat-mdc-button.mat-mdc-button-base>.mat-icon{margin-right:11px}.mat-mdc-button.mat-mdc-button-base.mat-primary-button{background-color:#00629b;color:#fff}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:focus{background:#1f75a7}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:hover{background-color:#003e65}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:active{background-color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:disabled{background-color:#1c1b1f1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button{color:#fff;background:#a7a8aa;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:hover{background:#a7a8aa}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:focus{background:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:active{background:#1d192b1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:disabled{background:#1c1b1f1f;color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button{background-color:#fff;border:1px solid #00629b;color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:hover{background-color:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:focus{background-color:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:active{background:#6750a41f}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:disabled{border:1px solid rgba(28,27,31,.12);color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-text-button{color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-text-button:hover,.mat-mdc-button.mat-mdc-button-base.mat-text-button:active{background:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-text-button:disabled{color:#1c1b1f;opacity:.38}.ieeesa-text-button{color:#cac4d0;background:none;border:none}.ieeesa-view-more-or-less-button{border:none;background:none;text-decoration:underline;color:#00629b}.flex-align-center{display:flex;align-items:center;justify-content:center}.mat-button-toggle-checked{background-color:#a7a8aa}.mat-button-toggle-checked .mat-button-toggle-label-content:before{font-family:\"Font Awesome 5 Free\";font-weight:900;content:\"\\f00c\";padding-right:.5625em}.mat-button-toggle-group .mat-button-toggle-label-content{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#1c1b1f;letter-spacing:.00625em}.no-bg-color-btn{color:#00629b;border-radius:3px;border:1px solid #00629b;min-height:40px;height:auto}@media (max-width: 768px){.mat-button-toggle-group .mat-button-toggle-label-content{max-width:8ch;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;position:relative}}.cdk-overlay-pane .mat-mdc-tooltip .mdc-tooltip__surface{color:#525252;padding:6px 12px;font-family:Calibri Regular;font-size:1rem;border:1px solid #cac4d0;background:#fff;box-shadow:0 4px 8px #00000040;max-width:unset!important}.cdk-overlay-pane .mat-mdc-option .mdc-list-item__primary-text{font-family:Calibri Regular!important}.cdk-overlay-pane.ieeesa-modal-confirm-dialog,.cdk-overlay-pane.ieeesa-modal-dialog,.cdk-overlay-pane.ieeesa-alert-dialog{width:100%;min-width:312px}.mat-mdc-form-field{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:24px;color:#49454f;letter-spacing:.03125em}.ieeesa-cancel-modal-confirm-dialog{width:25vw!important}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation{padding:1.5em 1.5em 1em}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation .mat-mdc-dialog-content{text-align:center;padding:0 0 1em!important}.mat-mdc-button,.mat-mdc-outlined-button{--mat-mdc-button-persistent-ripple-color: unset}@media (max-width: 768px){.ieeesa-cancel-modal-confirm-dialog{width:90vw!important}}.ieeesa-wrapper-border{border:1px solid #b2b7be;border-top:none;padding:1.5em;border-radius:0 0 4px 4px}.ieeesa-groups{background-color:#f2f2f2}.ieeesa-groups__mobile-icons .ieeesa-icon-button__svg{height:1.5em!important;width:1.5em!important}.ieeesa-groups__mobile-icons .ieeesa-icon-button__3{display:flex;padding-top:0}.ieeesa-groups__info--white-bg{background-color:#fff;padding:16px 24px 0}.ieeesa-groups__info__heading{padding:12px 0}.ieeesa-groups__actions{background-color:#fff;box-shadow:0 2px #00b5e2 inset;padding:16px 24px 48px}.ieeesa-groups__actions--white-bg{background-color:#fff;box-shadow:none}.ieeesa-groups__actions__add-group-btn{max-width:8.125em}.ieeesa-groups__actions--search .ieeesa-search-mobile-view{margin-bottom:1em}.ieeesa-groups .ieeesa-select-field__label{width:max-content;padding-right:9px}.ieeesa-groups .ieeesa-select-field__label-left{display:flex;align-items:center}.ieeesa-groups .ieeesa-select-field .mat-mdc-form-field{width:auto}.ieeesa-groups .ieeesa-select-field .ieeesa-form-support-text,.ieeesa-groups .ieeesa-select-field .mat-mdc-form-field-subscript-wrapper{display:none}@media (min-width: 767px){.ieeesa-groups__actions--search{margin-bottom:1em}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: SearchComponent, selector: "ieeesa-search", inputs: ["formControlName", "placeholderLabel", "searchTerm", "supportMessage", "searchType", "minCharacterToSearch"], outputs: ["searchValue"] }, { kind: "component", type: SelectComponent, selector: "ieeesa-select", inputs: ["isSortNeeded", "dropdownOptions", "selectedOptions", "formControlName", "isMultiLevel", "isLabelAlignedLeft", "selectLabel", "isMultiSelect", "isDisabled", "isSearch", "placeholderText"], outputs: ["optionSelected", "optionSearched", "dropdownOpenedChange"] }, { kind: "component", type: TreeViewComponent, selector: "ieeesa-tree", inputs: ["parentGroupsInfo", "childGroupsInfo", "isGroupSearchOrFilterActive", "deletedGroupIdInfo", "userGroupPermissions"], outputs: ["toggleGroupClick", "createGroupClick", "editGroupClick", "deleteGroupClick", "viewRosterClick", "manageInterestFormClick"] }, { kind: "component", type: IconButtonComponent, selector: "ieeesa-icon-button", inputs: ["iconButton", "isLabelNeeded"], outputs: ["iconButtonClick"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
7989
8136
|
}
|
|
7990
8137
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GroupsComponent, decorators: [{
|
|
7991
8138
|
type: Component,
|
|
@@ -8009,6 +8156,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
8009
8156
|
type: Input
|
|
8010
8157
|
}], userInfo: [{
|
|
8011
8158
|
type: Input
|
|
8159
|
+
}], requiredProfileFields: [{
|
|
8160
|
+
type: Input
|
|
8012
8161
|
}] } });
|
|
8013
8162
|
|
|
8014
8163
|
/* eslint-disable no-unused-vars */
|