@ieeesa-npm/presentation 0.33.14 → 0.33.15

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.
@@ -5232,6 +5232,77 @@ class DynamicFormComponent {
5232
5232
  });
5233
5233
  this.formGroupsReference.emit(this.formGroupArray);
5234
5234
  }
5235
+ /**
5236
+ * Incrementally adds a single control to an existing form group at the given
5237
+ * group index WITHOUT rebuilding the whole form. This preserves every other
5238
+ * live control (including controls that are not part of the static config,
5239
+ * e.g. dynamically-populated dropdowns) along with their current values and
5240
+ * options.
5241
+ * @param {number} groupIndex - Index of the target form group.
5242
+ * @param {FieldConfig} control - Field configuration of the control to add.
5243
+ * @param {number} [position] - Optional position within the group's controls;
5244
+ * defaults to appending at the end.
5245
+ * @return {void}
5246
+ * @memberof DynamicFormComponent
5247
+ */
5248
+ addControlToGroup(groupIndex, control, position) {
5249
+ const group = this.formGroupArray?.[groupIndex];
5250
+ const controls = this.formControlArray?.[groupIndex];
5251
+ if (!group || !controls) {
5252
+ return;
5253
+ }
5254
+ // Avoid duplicates if the control is already present.
5255
+ if (group.get(control.controlName)) {
5256
+ return;
5257
+ }
5258
+ if (control.type === FormControlType.CHECKBOX) {
5259
+ group.addControl(control.controlName, this.createFormArray(control));
5260
+ }
5261
+ else {
5262
+ group.addControl(control.controlName, this.createControl(control));
5263
+ }
5264
+ if (position === undefined || position < 0 || position >= controls.length) {
5265
+ controls.push(control);
5266
+ }
5267
+ else {
5268
+ controls.splice(position, 0, control);
5269
+ }
5270
+ }
5271
+ /**
5272
+ * Incrementally removes a single control from an existing form group by its
5273
+ * control name WITHOUT rebuilding the whole form. Other live controls and
5274
+ * their values/options are left untouched.
5275
+ * @param {number} groupIndex - Index of the target form group.
5276
+ * @param {string} controlName - Name of the control to remove.
5277
+ * @return {void}
5278
+ * @memberof DynamicFormComponent
5279
+ */
5280
+ removeControlFromGroup(groupIndex, controlName) {
5281
+ const group = this.formGroupArray?.[groupIndex];
5282
+ const controls = this.formControlArray?.[groupIndex];
5283
+ if (!group || !controls) {
5284
+ return;
5285
+ }
5286
+ if (group.get(controlName)) {
5287
+ group.removeControl(controlName);
5288
+ }
5289
+ const configIndex = controls.findIndex((config) => config.controlName === controlName);
5290
+ if (configIndex > -1) {
5291
+ controls.splice(configIndex, 1);
5292
+ }
5293
+ }
5294
+ /**
5295
+ * Returns true when the live form group at the given index currently contains
5296
+ * a control with the given name. Reflects the rendered form state (including
5297
+ * controls added/removed incrementally), not the static config.
5298
+ * @param {number} groupIndex - Index of the target form group.
5299
+ * @param {string} controlName - Name of the control to look for.
5300
+ * @return {boolean} Whether the control exists in the rendered group.
5301
+ * @memberof DynamicFormComponent
5302
+ */
5303
+ hasControlInGroup(groupIndex, controlName) {
5304
+ return !!this.formGroupArray?.[groupIndex]?.get(controlName);
5305
+ }
5235
5306
  /**
5236
5307
  * Creates form group using form builder
5237
5308
  * @param {any[]} controls
@@ -8947,6 +9018,98 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
8947
9018
  args: [MAT_DIALOG_DATA]
8948
9019
  }] }, { type: i1$5.MatDialogRef }]; } });
8949
9020
 
9021
+ /**
9022
+ * HomeGroupSelectionComponent is a generic, reusable dialog for selecting a
9023
+ * home Working Group to receive reciprocal attendance credit (SP3M-18).
9024
+ *
9025
+ * It is shown when an attendee (or an admin acting on their behalf) qualifies
9026
+ * for reciprocal credit in more than one home Working Group and must choose
9027
+ * which one should receive the credit. The first qualifying group is
9028
+ * pre-selected so Submit is enabled immediately; Submit is disabled only if no
9029
+ * group is selected.
9030
+ *
9031
+ * This component is feature-agnostic — all display text is supplied by the
9032
+ * caller via MAT_DIALOG_DATA (HomeGroupSelectionData). It performs no API calls;
9033
+ * it collects the selection and returns it so the caller can re-submit.
9034
+ *
9035
+ * Footer:
9036
+ * - Submit → closes with { homeGroupId }
9037
+ * - Cancel → closes with null (caller aborts)
9038
+ *
9039
+ * @export
9040
+ * @class HomeGroupSelectionComponent
9041
+ * @implements {OnInit}
9042
+ */
9043
+ class HomeGroupSelectionComponent {
9044
+ constructor(
9045
+ // eslint-disable-next-line no-unused-vars
9046
+ data,
9047
+ // eslint-disable-next-line no-unused-vars
9048
+ dialogRef) {
9049
+ this.data = data;
9050
+ this.dialogRef = dialogRef;
9051
+ /** Qualifying home groups the user must choose between. */
9052
+ this.qualifyingGroups = [];
9053
+ /** The currently selected home group id. */
9054
+ this.selectedGroupId = '';
9055
+ // Non-dismissable: user must explicitly choose Submit or Cancel.
9056
+ this.dialogRef.disableClose = true;
9057
+ }
9058
+ ngOnInit() {
9059
+ this.qualifyingGroups = this.data?.qualifyingGroups ?? [];
9060
+ // Pre-select the first qualifying group (matches the design + enables Submit).
9061
+ if (this.qualifyingGroups.length > 0) {
9062
+ this.selectedGroupId = this.qualifyingGroups[0].groupId;
9063
+ }
9064
+ }
9065
+ /**
9066
+ * trackBy for the qualifying groups list.
9067
+ * @param {number} _index
9068
+ * @param {QualifyingGroup} group
9069
+ * @return {string}
9070
+ * @memberof HomeGroupSelectionComponent
9071
+ */
9072
+ trackByGroupId(_index, group) {
9073
+ return group.groupId;
9074
+ }
9075
+ /**
9076
+ * Whether Submit should be enabled — true once a group is selected.
9077
+ * @return {boolean}
9078
+ * @memberof HomeGroupSelectionComponent
9079
+ */
9080
+ get canSubmit() {
9081
+ return !!this.selectedGroupId;
9082
+ }
9083
+ /**
9084
+ * Cancel handler — closes with null so the caller aborts.
9085
+ * @memberof HomeGroupSelectionComponent
9086
+ */
9087
+ onCancel() {
9088
+ this.dialogRef.close(null);
9089
+ }
9090
+ /**
9091
+ * Submit handler — closes with the selected home group id.
9092
+ * No-ops if no group is selected.
9093
+ * @memberof HomeGroupSelectionComponent
9094
+ */
9095
+ onSubmit() {
9096
+ if (!this.canSubmit) {
9097
+ return;
9098
+ }
9099
+ const result = { homeGroupId: this.selectedGroupId };
9100
+ this.dialogRef.close(result);
9101
+ }
9102
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HomeGroupSelectionComponent, deps: [{ token: MAT_DIALOG_DATA }, { token: i1$5.MatDialogRef }], target: i0.ɵɵFactoryTarget.Component }); }
9103
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: HomeGroupSelectionComponent, isStandalone: true, selector: "ieeesa-home-group-selection", ngImport: i0, template: "<div class=\"ieeesa-home-group-selection\">\r\n\r\n <!-- Header -->\r\n <div class=\"ieeesa-home-group-selection__header\" *ngIf=\"data?.title\">\r\n <h2 mat-dialog-title class=\"ieeesa-home-group-selection__title ieeesa-headline-sm-24\">\r\n {{ data.title }}\r\n </h2>\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-home-group-selection__close-btn\"\r\n aria-label=\"Close\"\r\n (click)=\"onCancel()\"\r\n >\r\n <i class=\"fa-solid fa-xmark\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n\r\n <!-- Body -->\r\n <div class=\"ieeesa-home-group-selection__body\">\r\n\r\n <p class=\"ieeesa-home-group-selection__message ieeesa-body-lg-16\" *ngIf=\"data?.messageLine1\">\r\n {{ data.messageLine1 }}\r\n </p>\r\n <p\r\n class=\"ieeesa-home-group-selection__message ieeesa-body-lg-16\"\r\n *ngIf=\"data?.messageLine2\"\r\n >\r\n {{ data.messageLine2 }}\r\n </p>\r\n\r\n <!-- Qualifying home groups radio list -->\r\n <div\r\n class=\"ieeesa-home-group-selection__options\"\r\n role=\"radiogroup\"\r\n [attr.aria-label]=\"data?.groupOptionAriaLabel\"\r\n >\r\n <label\r\n *ngFor=\"let group of qualifyingGroups; trackBy: trackByGroupId\"\r\n class=\"ieeesa-home-group-selection__option\"\r\n [class.ieeesa-home-group-selection__option--selected]=\"selectedGroupId === group.groupId\"\r\n >\r\n <input\r\n type=\"radio\"\r\n name=\"homeGroup\"\r\n class=\"ieeesa-home-group-selection__radio\"\r\n [value]=\"group.groupId\"\r\n [(ngModel)]=\"selectedGroupId\"\r\n />\r\n <span class=\"ieeesa-home-group-selection__option-label ieeesa-body-lg-16-bold\">\r\n {{ group.groupName }}\r\n </span>\r\n </label>\r\n </div>\r\n\r\n <!-- Info banner -->\r\n <div class=\"ieeesa-home-group-selection__info\" *ngIf=\"data?.infoText\">\r\n <span class=\"ieeesa-home-group-selection__info-icon\" aria-hidden=\"true\">&#9432;</span>\r\n <span class=\"ieeesa-home-group-selection__info-text ieeesa-body-sm-14\">\r\n {{ data.infoText }}\r\n </span>\r\n </div>\r\n\r\n </div>\r\n\r\n <!-- Footer -->\r\n <div class=\"ieeesa-home-group-selection__footer\">\r\n <button\r\n type=\"button\"\r\n class=\"mat-mdc-button mat-mdc-button-base mat-tertiary-button\"\r\n (click)=\"onCancel()\"\r\n >\r\n {{ data?.cancelLabel }}\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"mat-mdc-button mat-mdc-button-base mat-primary-button\"\r\n [disabled]=\"!canSubmit\"\r\n (click)=\"onSubmit()\"\r\n >\r\n {{ data?.submitLabel }}\r\n </button>\r\n </div>\r\n\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-home-group-selection{display:flex;flex-direction:column;min-width:480px;max-width:600px;max-height:90vh}.ieeesa-home-group-selection__header{display:flex;flex-direction:row;align-items:flex-start;justify-content:space-between;padding:16px 24px;border-bottom:1px solid #d7d6d6;margin:0!important;gap:12px}.ieeesa-home-group-selection__title{flex:1;margin:0;color:#1c1b1f;word-break:break-word}.ieeesa-home-group-selection__close-btn{flex-shrink:0;align-self:flex-start;background:none;border:none;cursor:pointer;color:#49454f;font-size:1.125rem;padding:0;line-height:1;margin-top:2px}.ieeesa-home-group-selection__close-btn:hover{color:#1c1b1f}.ieeesa-home-group-selection__body{padding:24px;display:flex;flex-direction:column;gap:1.25em;overflow:auto;flex:1}.ieeesa-home-group-selection__message{margin:0;color:#1c1b1f;font-family:Calibri Regular;font-size:1.125rem}.ieeesa-home-group-selection__message+.ieeesa-home-group-selection__message{margin-top:-1.25em}.ieeesa-home-group-selection__options{display:flex;flex-direction:column;gap:.75em}.ieeesa-home-group-selection__option{display:flex;align-items:center;gap:.75em;cursor:pointer;padding:14px 16px;border:1px solid #d7d6d6;border-radius:6px;transition:border-color .15s ease,background-color .15s ease}.ieeesa-home-group-selection__option--selected{border-color:#00629b;background-color:#00629b0f}.ieeesa-home-group-selection__radio{flex-shrink:0;cursor:pointer;accent-color:#00629b;width:18px;height:18px}.ieeesa-home-group-selection__option-label{word-break:break-word;font-weight:600;color:#1c1b1f}.ieeesa-home-group-selection__info{display:flex;align-items:flex-start;gap:.5em;padding:12px 16px;border-radius:6px;background-color:#00629b0f;color:#63666a}.ieeesa-home-group-selection__info-icon{flex-shrink:0;color:#00629b;line-height:1.4}.ieeesa-home-group-selection__info-text{margin:0}.ieeesa-home-group-selection__footer{display:flex;justify-content:center;gap:1em;padding:16px 24px;border-top:1px solid #d7d6d6}@media (max-width: 576px){.ieeesa-home-group-selection{min-width:unset;width:100%}.ieeesa-home-group-selection__footer{flex-direction:column-reverse}.ieeesa-home-group-selection__footer button{width:100%}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { 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.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { 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: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i1$5.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "ngmodule", type: MatButtonModule }], encapsulation: i0.ViewEncapsulation.None }); }
9104
+ }
9105
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HomeGroupSelectionComponent, decorators: [{
9106
+ type: Component,
9107
+ args: [{ selector: 'ieeesa-home-group-selection', standalone: true, imports: [CommonModule, FormsModule, MatDialogModule, MatButtonModule], encapsulation: ViewEncapsulation.None, template: "<div class=\"ieeesa-home-group-selection\">\r\n\r\n <!-- Header -->\r\n <div class=\"ieeesa-home-group-selection__header\" *ngIf=\"data?.title\">\r\n <h2 mat-dialog-title class=\"ieeesa-home-group-selection__title ieeesa-headline-sm-24\">\r\n {{ data.title }}\r\n </h2>\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-home-group-selection__close-btn\"\r\n aria-label=\"Close\"\r\n (click)=\"onCancel()\"\r\n >\r\n <i class=\"fa-solid fa-xmark\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n\r\n <!-- Body -->\r\n <div class=\"ieeesa-home-group-selection__body\">\r\n\r\n <p class=\"ieeesa-home-group-selection__message ieeesa-body-lg-16\" *ngIf=\"data?.messageLine1\">\r\n {{ data.messageLine1 }}\r\n </p>\r\n <p\r\n class=\"ieeesa-home-group-selection__message ieeesa-body-lg-16\"\r\n *ngIf=\"data?.messageLine2\"\r\n >\r\n {{ data.messageLine2 }}\r\n </p>\r\n\r\n <!-- Qualifying home groups radio list -->\r\n <div\r\n class=\"ieeesa-home-group-selection__options\"\r\n role=\"radiogroup\"\r\n [attr.aria-label]=\"data?.groupOptionAriaLabel\"\r\n >\r\n <label\r\n *ngFor=\"let group of qualifyingGroups; trackBy: trackByGroupId\"\r\n class=\"ieeesa-home-group-selection__option\"\r\n [class.ieeesa-home-group-selection__option--selected]=\"selectedGroupId === group.groupId\"\r\n >\r\n <input\r\n type=\"radio\"\r\n name=\"homeGroup\"\r\n class=\"ieeesa-home-group-selection__radio\"\r\n [value]=\"group.groupId\"\r\n [(ngModel)]=\"selectedGroupId\"\r\n />\r\n <span class=\"ieeesa-home-group-selection__option-label ieeesa-body-lg-16-bold\">\r\n {{ group.groupName }}\r\n </span>\r\n </label>\r\n </div>\r\n\r\n <!-- Info banner -->\r\n <div class=\"ieeesa-home-group-selection__info\" *ngIf=\"data?.infoText\">\r\n <span class=\"ieeesa-home-group-selection__info-icon\" aria-hidden=\"true\">&#9432;</span>\r\n <span class=\"ieeesa-home-group-selection__info-text ieeesa-body-sm-14\">\r\n {{ data.infoText }}\r\n </span>\r\n </div>\r\n\r\n </div>\r\n\r\n <!-- Footer -->\r\n <div class=\"ieeesa-home-group-selection__footer\">\r\n <button\r\n type=\"button\"\r\n class=\"mat-mdc-button mat-mdc-button-base mat-tertiary-button\"\r\n (click)=\"onCancel()\"\r\n >\r\n {{ data?.cancelLabel }}\r\n </button>\r\n <button\r\n type=\"button\"\r\n class=\"mat-mdc-button mat-mdc-button-base mat-primary-button\"\r\n [disabled]=\"!canSubmit\"\r\n (click)=\"onSubmit()\"\r\n >\r\n {{ data?.submitLabel }}\r\n </button>\r\n </div>\r\n\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-home-group-selection{display:flex;flex-direction:column;min-width:480px;max-width:600px;max-height:90vh}.ieeesa-home-group-selection__header{display:flex;flex-direction:row;align-items:flex-start;justify-content:space-between;padding:16px 24px;border-bottom:1px solid #d7d6d6;margin:0!important;gap:12px}.ieeesa-home-group-selection__title{flex:1;margin:0;color:#1c1b1f;word-break:break-word}.ieeesa-home-group-selection__close-btn{flex-shrink:0;align-self:flex-start;background:none;border:none;cursor:pointer;color:#49454f;font-size:1.125rem;padding:0;line-height:1;margin-top:2px}.ieeesa-home-group-selection__close-btn:hover{color:#1c1b1f}.ieeesa-home-group-selection__body{padding:24px;display:flex;flex-direction:column;gap:1.25em;overflow:auto;flex:1}.ieeesa-home-group-selection__message{margin:0;color:#1c1b1f;font-family:Calibri Regular;font-size:1.125rem}.ieeesa-home-group-selection__message+.ieeesa-home-group-selection__message{margin-top:-1.25em}.ieeesa-home-group-selection__options{display:flex;flex-direction:column;gap:.75em}.ieeesa-home-group-selection__option{display:flex;align-items:center;gap:.75em;cursor:pointer;padding:14px 16px;border:1px solid #d7d6d6;border-radius:6px;transition:border-color .15s ease,background-color .15s ease}.ieeesa-home-group-selection__option--selected{border-color:#00629b;background-color:#00629b0f}.ieeesa-home-group-selection__radio{flex-shrink:0;cursor:pointer;accent-color:#00629b;width:18px;height:18px}.ieeesa-home-group-selection__option-label{word-break:break-word;font-weight:600;color:#1c1b1f}.ieeesa-home-group-selection__info{display:flex;align-items:flex-start;gap:.5em;padding:12px 16px;border-radius:6px;background-color:#00629b0f;color:#63666a}.ieeesa-home-group-selection__info-icon{flex-shrink:0;color:#00629b;line-height:1.4}.ieeesa-home-group-selection__info-text{margin:0}.ieeesa-home-group-selection__footer{display:flex;justify-content:center;gap:1em;padding:16px 24px;border-top:1px solid #d7d6d6}@media (max-width: 576px){.ieeesa-home-group-selection{min-width:unset;width:100%}.ieeesa-home-group-selection__footer{flex-direction:column-reverse}.ieeesa-home-group-selection__footer button{width:100%}}\n"] }]
9108
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
9109
+ type: Inject,
9110
+ args: [MAT_DIALOG_DATA]
9111
+ }] }, { type: i1$5.MatDialogRef }]; } });
9112
+
8950
9113
  var AccordionDetails;
8951
9114
  (function (AccordionDetails) {
8952
9115
  // eslint-disable-next-line no-unused-vars
@@ -8985,6 +9148,14 @@ var ExportFormat;
8985
9148
  ExportFormat["EXCEL"] = "xls";
8986
9149
  })(ExportFormat || (ExportFormat = {}));
8987
9150
 
9151
+ /**
9152
+ * Shared models for the reusable Home Group Selection dialog (SP3M-18).
9153
+ *
9154
+ * The dialog is generic and feature-agnostic: all display text is supplied by
9155
+ * the calling feature library (e.g. attendance, attendees) via MAT_DIALOG_DATA,
9156
+ * so this presentation-layer component never depends on any feature's constants.
9157
+ */
9158
+
8988
9159
  class PresentationModule {
8989
9160
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PresentationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
8990
9161
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: PresentationModule }); }
@@ -9073,5 +9244,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
9073
9244
  * Generated bundle index. Do not edit.
9074
9245
  */
9075
9246
 
9076
- export { AccordionComponent, AccordionDetails, AlignBrowsedFiles, AllowedFileTypes, AutocompleteComponent, BreadcrumbComponent, BreakpointObserverService, ButtonType, CalendarType, CardComponent, CheckboxComponent, ChipOrientation, ChipsComponent, ChipsType, ColorFormat, ColorPickerComponent, ColorsAnimation, CustomDateAdapter, CustomProperties, DataTableComponent, DatePickerComponent, DatePickerHeaderComponent, DatepickerService, DynamicFormComponent, DynamicFormFieldDirective, ExportFormat, ExportFormatPopoverComponent, ExportSuccessDialogComponent, FileDownloadComponent, FileUploadComponent, FileUploadDirective, FileUploadService, FilterComponent, FilterOptionType, FilterPopoverComponent, FooterComponent, FormControlType, FormErrorComponent, FormSupportTextComponent, FormUtilityService, HeaderComponent, IconButtonComponent, ImagePreviewComponent, InactiveTenantComponent, InputComponent, LegendComponent, LinkType, ListComponent, LoaderComponent, MenuComponent, ModalComponent, ModalConfirmationComponent, ModalInfoComponent, MultiSelectAutocompleteComponent, NavigationMenuComponent, NotificationComponent, ObserveDomChangeDirective, PolicyConfirmationDialogComponent, PresentationModule, RadioComponent, RichTextEditorComponent, SafePipe, SearchComponent, SearchType, SelectComponent, SetBackgroundDirective, SlideToggleComponent, StepperComponent, TableColumnSortDirection, TableColumnType, TabsComponent, TextAreaComponent, TextTruncatedDirective, TileComponent, TimePickerComponent, ToggleButtonComponent, UserProfileMenu, WelcomeComponent };
9247
+ export { AccordionComponent, AccordionDetails, AlignBrowsedFiles, AllowedFileTypes, AutocompleteComponent, BreadcrumbComponent, BreakpointObserverService, ButtonType, CalendarType, CardComponent, CheckboxComponent, ChipOrientation, ChipsComponent, ChipsType, ColorFormat, ColorPickerComponent, ColorsAnimation, CustomDateAdapter, CustomProperties, DataTableComponent, DatePickerComponent, DatePickerHeaderComponent, DatepickerService, DynamicFormComponent, DynamicFormFieldDirective, ExportFormat, ExportFormatPopoverComponent, ExportSuccessDialogComponent, FileDownloadComponent, FileUploadComponent, FileUploadDirective, FileUploadService, FilterComponent, FilterOptionType, FilterPopoverComponent, FooterComponent, FormControlType, FormErrorComponent, FormSupportTextComponent, FormUtilityService, HeaderComponent, HomeGroupSelectionComponent, IconButtonComponent, ImagePreviewComponent, InactiveTenantComponent, InputComponent, LegendComponent, LinkType, ListComponent, LoaderComponent, MenuComponent, ModalComponent, ModalConfirmationComponent, ModalInfoComponent, MultiSelectAutocompleteComponent, NavigationMenuComponent, NotificationComponent, ObserveDomChangeDirective, PolicyConfirmationDialogComponent, PresentationModule, RadioComponent, RichTextEditorComponent, SafePipe, SearchComponent, SearchType, SelectComponent, SetBackgroundDirective, SlideToggleComponent, StepperComponent, TableColumnSortDirection, TableColumnType, TabsComponent, TextAreaComponent, TextTruncatedDirective, TileComponent, TimePickerComponent, ToggleButtonComponent, UserProfileMenu, WelcomeComponent };
9077
9248
  //# sourceMappingURL=ieeesa-npm-presentation.mjs.map