@ieeesa-npm/dashboard 0.0.3 → 0.0.5
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 +7 -3
- package/esm2022/lib/components/event-group-card/event-group-card.component.mjs +99 -13
- package/esm2022/lib/components/meeting-attendance-row/meeting-attendance-row.component.mjs +101 -23
- package/esm2022/lib/components/upcoming-meetings-events/upcoming-meetings-events.component.mjs +66 -6
- package/esm2022/lib/components/your-groups/your-groups.component.mjs +3 -3
- package/esm2022/lib/dashboard.component.mjs +63 -12
- package/esm2022/lib/models/attendance-state.model.mjs +8 -1
- package/esm2022/lib/models/dashboard-route-config.model.mjs +1 -1
- package/esm2022/lib/models/event-meeting-list-item.model.mjs +1 -1
- package/esm2022/lib/models/event-meeting-list-payload.model.mjs +7 -5
- package/esm2022/lib/models/meeting-row.model.mjs +1 -1
- package/esm2022/lib/models/upcoming-event.model.mjs +1 -1
- package/esm2022/lib/services/dashboard.service.mjs +71 -126
- package/esm2022/lib/services/user-permissions.service.mjs +23 -9
- package/esm2022/lib/utils/event-meeting-mapper.util.mjs +47 -41
- package/fesm2022/ieeesa-npm-dashboard.mjs +490 -289
- package/fesm2022/ieeesa-npm-dashboard.mjs.map +1 -1
- package/lib/components/event-group-card/event-group-card.component.d.ts +73 -6
- package/lib/components/meeting-attendance-row/meeting-attendance-row.component.d.ts +61 -7
- package/lib/components/member-level-badge/member-level-badge.component.d.ts +12 -1
- package/lib/components/upcoming-meetings-events/upcoming-meetings-events.component.d.ts +49 -3
- package/lib/dashboard.component.d.ts +39 -6
- package/lib/models/attendance-state.model.d.ts +8 -1
- package/lib/models/dashboard-route-config.model.d.ts +14 -0
- package/lib/models/event-meeting-list-item.model.d.ts +68 -68
- package/lib/models/event-meeting-list-payload.model.d.ts +14 -25
- package/lib/models/meeting-row.model.d.ts +2 -0
- package/lib/models/upcoming-event.model.d.ts +9 -0
- package/lib/services/dashboard.service.d.ts +25 -53
- package/lib/services/user-permissions.service.d.ts +8 -4
- package/lib/utils/event-meeting-mapper.util.d.ts +15 -21
- package/package.json +1 -1
|
@@ -2,7 +2,7 @@ import * as i1 from '@angular/common';
|
|
|
2
2
|
import { CommonModule } from '@angular/common';
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
4
|
import { EventEmitter, Component, ViewEncapsulation, Input, Output, Injectable, ElementRef, ViewChild, NgModule } from '@angular/core';
|
|
5
|
-
import { BehaviorSubject, map, catchError,
|
|
5
|
+
import { BehaviorSubject, map, catchError, Subject, takeUntil } from 'rxjs';
|
|
6
6
|
import { AlertType } from '@ieeesa-npm/models';
|
|
7
7
|
import * as i1$1 from '@ieeesa-npm/utility';
|
|
8
8
|
import { AlertsService } from '@ieeesa-npm/utility';
|
|
@@ -21,13 +21,6 @@ var DashboardSectionState;
|
|
|
21
21
|
DashboardSectionState["ERROR"] = "ERROR";
|
|
22
22
|
})(DashboardSectionState || (DashboardSectionState = {}));
|
|
23
23
|
|
|
24
|
-
/* eslint-disable no-unused-vars */
|
|
25
|
-
var AttendanceState;
|
|
26
|
-
(function (AttendanceState) {
|
|
27
|
-
AttendanceState["CURRENTLY_ATTENDING"] = "CURRENTLY_ATTENDING";
|
|
28
|
-
AttendanceState["NOT_ATTENDING"] = "NOT_ATTENDING";
|
|
29
|
-
})(AttendanceState || (AttendanceState = {}));
|
|
30
|
-
|
|
31
24
|
/* eslint-disable no-unused-vars */
|
|
32
25
|
/**
|
|
33
26
|
* Discriminates how a row in the "Upcoming Meetings & Events" list is rendered.
|
|
@@ -41,6 +34,20 @@ var UpcomingItemKind;
|
|
|
41
34
|
UpcomingItemKind["STANDALONE_MEETING"] = "STANDALONE_MEETING";
|
|
42
35
|
})(UpcomingItemKind || (UpcomingItemKind = {}));
|
|
43
36
|
|
|
37
|
+
/* eslint-disable no-unused-vars */
|
|
38
|
+
/**
|
|
39
|
+
* Per-meeting attendance state as returned by the home endpoints.
|
|
40
|
+
* - NOT_ATTENDING: the user has not logged attendance (shows Log Attendance).
|
|
41
|
+
* - CURRENTLY_ATTENDING: the user is logged in (shows Leave Meeting + pill).
|
|
42
|
+
* - ATTENDED: the user attended and has since logged out.
|
|
43
|
+
*/
|
|
44
|
+
var AttendanceState;
|
|
45
|
+
(function (AttendanceState) {
|
|
46
|
+
AttendanceState["CURRENTLY_ATTENDING"] = "CURRENTLY_ATTENDING";
|
|
47
|
+
AttendanceState["NOT_ATTENDING"] = "NOT_ATTENDING";
|
|
48
|
+
AttendanceState["ATTENDED"] = "ATTENDED";
|
|
49
|
+
})(AttendanceState || (AttendanceState = {}));
|
|
50
|
+
|
|
44
51
|
/**
|
|
45
52
|
* Luxon format tokens used across the dashboard library for rendering
|
|
46
53
|
* event/meeting dates, times, and timezones.
|
|
@@ -69,58 +76,6 @@ const DateFormats = {
|
|
|
69
76
|
timezoneLongFormat: 'ZZZZZ',
|
|
70
77
|
};
|
|
71
78
|
|
|
72
|
-
/**
|
|
73
|
-
* Pure helpers for the per-meeting attendance action state machine. No Angular /
|
|
74
|
-
* service dependencies so they are trivially testable (property-tested as
|
|
75
|
-
* Property 1) and reusable by `MeetingAttendanceRowComponent`.
|
|
76
|
-
*
|
|
77
|
-
* The handler is the single source of truth for what a meeting row's action
|
|
78
|
-
* button should emit when activated. The displayed `AttendanceState` only
|
|
79
|
-
* advances on a successful resolution (handled by the service reducers), so this
|
|
80
|
-
* function is a pure mapping from the current inputs to the action to emit.
|
|
81
|
-
*/
|
|
82
|
-
/* eslint-disable no-unused-vars */
|
|
83
|
-
/**
|
|
84
|
-
* The action a meeting row's action button should emit when activated.
|
|
85
|
-
* `NONE` means the activation is non-actionable (empty id or in-flight) and the
|
|
86
|
-
* row must emit no `logAttendance` / `leaveMeeting` / navigation event.
|
|
87
|
-
*/
|
|
88
|
-
var AttendanceAction;
|
|
89
|
-
(function (AttendanceAction) {
|
|
90
|
-
AttendanceAction["LOG_ATTENDANCE"] = "LOG_ATTENDANCE";
|
|
91
|
-
AttendanceAction["LEAVE_MEETING"] = "LEAVE_MEETING";
|
|
92
|
-
AttendanceAction["NONE"] = "NONE";
|
|
93
|
-
})(AttendanceAction || (AttendanceAction = {}));
|
|
94
|
-
/* eslint-enable no-unused-vars */
|
|
95
|
-
/**
|
|
96
|
-
* Resolves the attendance action to emit for a meeting row, following the
|
|
97
|
-
* attendance action state machine (see design: Attendance Action State Machine).
|
|
98
|
-
*
|
|
99
|
-
* Behavior:
|
|
100
|
-
* - Returns `NONE` when `meetingId` is empty or undefined (non-actionable row).
|
|
101
|
-
* - Returns `NONE` while the row is in-flight (re-entrancy guard — no further
|
|
102
|
-
* event is emitted until the current action resolves).
|
|
103
|
-
* - Returns `LEAVE_MEETING` when the state is `CURRENTLY_ATTENDING`.
|
|
104
|
-
* - Returns `LOG_ATTENDANCE` when the state is `NOT_ATTENDING` or undefined.
|
|
105
|
-
*
|
|
106
|
-
* @param {AttendanceState | undefined} attendanceState The row's current attendance state.
|
|
107
|
-
* @param {boolean} isInFlight Whether an attendance action for this row is awaiting resolution.
|
|
108
|
-
* @param {string | undefined} meetingId The row's meeting identifier.
|
|
109
|
-
* @return {AttendanceAction} The action to emit, or `NONE` when non-actionable.
|
|
110
|
-
*/
|
|
111
|
-
function resolveAttendanceAction(attendanceState, isInFlight, meetingId) {
|
|
112
|
-
if (!meetingId) {
|
|
113
|
-
return AttendanceAction.NONE;
|
|
114
|
-
}
|
|
115
|
-
if (isInFlight) {
|
|
116
|
-
return AttendanceAction.NONE;
|
|
117
|
-
}
|
|
118
|
-
if (attendanceState === AttendanceState.CURRENTLY_ATTENDING) {
|
|
119
|
-
return AttendanceAction.LEAVE_MEETING;
|
|
120
|
-
}
|
|
121
|
-
return AttendanceAction.LOG_ATTENDANCE;
|
|
122
|
-
}
|
|
123
|
-
|
|
124
79
|
/**
|
|
125
80
|
* Pure luxon date/time formatting helpers for the dashboard library.
|
|
126
81
|
*
|
|
@@ -259,6 +214,7 @@ var upcomingSection = {
|
|
|
259
214
|
},
|
|
260
215
|
emptyMessage: "You have no upcoming meetings or events.",
|
|
261
216
|
errorMessage: "Unable to load upcoming meetings and events. Please try again.",
|
|
217
|
+
collapsedSummaryTemplate: "{events} events · {meetings} meetings · {open} open for attendance",
|
|
262
218
|
paginator: {
|
|
263
219
|
rangeTemplate: "{start}-{end} of {total} Meetings & Events"
|
|
264
220
|
}
|
|
@@ -296,6 +252,7 @@ var meetingRow = {
|
|
|
296
252
|
currentlyAttendingIndicator: "Currently Attending",
|
|
297
253
|
logAttendanceLabel: "Log Attendance",
|
|
298
254
|
leaveMeetingLabel: "Leave Meeting",
|
|
255
|
+
inactiveMessage: "Attendance logging only available during meeting, Please contact your meeting administrator for any necessary corrections.",
|
|
299
256
|
ariaLabel: {
|
|
300
257
|
meetingNameLink: "View meeting details",
|
|
301
258
|
logAttendance: "Log attendance for this meeting",
|
|
@@ -380,11 +337,13 @@ var footer = {
|
|
|
380
337
|
copyright: "© Copyright 2024 IEEE - All rights reserved. Use of this website signifies your agreement to the IEEE Terms and Conditions."
|
|
381
338
|
};
|
|
382
339
|
var defaultRouteConfig = {
|
|
383
|
-
eventDetail: "/events",
|
|
384
|
-
meetingDetail: "/meetings",
|
|
340
|
+
eventDetail: "/events-and-meetings/view-event",
|
|
341
|
+
meetingDetail: "/events-and-meetings/view-meeting",
|
|
385
342
|
groupDetail: "/groups",
|
|
386
343
|
viewAllEvents: "/events-and-meetings/view-events-meetings-list",
|
|
387
|
-
viewAllGroups: "/groups"
|
|
344
|
+
viewAllGroups: "/groups",
|
|
345
|
+
viewMeeting: "/events-and-meetings/view-meeting",
|
|
346
|
+
viewMeetingUnderEvent: "/events-and-meetings/view-event/view-meeting"
|
|
388
347
|
};
|
|
389
348
|
var constants = {
|
|
390
349
|
welcomeHeader: welcomeHeader,
|
|
@@ -451,9 +410,42 @@ class MeetingAttendanceRowComponent {
|
|
|
451
410
|
this.logAttendance = new EventEmitter();
|
|
452
411
|
/** Emits the meeting id to request leaving the meeting (Req 7.8). */
|
|
453
412
|
this.leaveMeeting = new EventEmitter();
|
|
413
|
+
/**
|
|
414
|
+
* Emits the owning event id + meeting id when the attendance button is
|
|
415
|
+
* activated for an In-Progress meeting, so the host can navigate to the
|
|
416
|
+
* view-meeting screen (where the real Log Attendance popup opens).
|
|
417
|
+
*/
|
|
418
|
+
this.navigateToMeeting = new EventEmitter();
|
|
454
419
|
/** Expose the enum to the template for state comparisons. */
|
|
455
420
|
this.AttendanceState = AttendanceState;
|
|
456
421
|
}
|
|
422
|
+
/**
|
|
423
|
+
* Whether the meeting is eligible for an attendance action (an attendance
|
|
424
|
+
* button is rendered at all). The backend supplies an `attendanceState` for
|
|
425
|
+
* every loggable meeting, so its presence is the eligibility signal. Rows the
|
|
426
|
+
* backend deems ineligible carry no state and render no button.
|
|
427
|
+
* @return {boolean} True when the meeting is attendance-eligible.
|
|
428
|
+
* @memberof MeetingAttendanceRowComponent
|
|
429
|
+
*/
|
|
430
|
+
get isEligibleForAttendance() {
|
|
431
|
+
return !!this.meeting?.attendanceState;
|
|
432
|
+
}
|
|
433
|
+
/**
|
|
434
|
+
* Whether the meeting is currently In Progress. Mirrors the attendance
|
|
435
|
+
* library's `isMeetingActive`: the attendance button is only ENABLED during
|
|
436
|
+
* the meeting; outside the meeting time it renders disabled with the inactive
|
|
437
|
+
* message.
|
|
438
|
+
* @return {boolean} True when the meeting status is 'In Progress'.
|
|
439
|
+
* @memberof MeetingAttendanceRowComponent
|
|
440
|
+
*/
|
|
441
|
+
get isMeetingActive() {
|
|
442
|
+
return (this.meeting?.status ?? '').trim().toLowerCase() === 'in progress';
|
|
443
|
+
}
|
|
444
|
+
/** The inactive-button message shown when the meeting is not In Progress. */
|
|
445
|
+
get inactiveMessage() {
|
|
446
|
+
return (this.constants?.meetingRow?.inactiveMessage ??
|
|
447
|
+
'Attendance logging only available during meeting, Please contact your meeting administrator for any necessary corrections.');
|
|
448
|
+
}
|
|
457
449
|
/**
|
|
458
450
|
* Whether this row is actionable — a non-empty `meetingId` is required for the
|
|
459
451
|
* meeting-name link and action button to emit anything (Req 7.10).
|
|
@@ -473,24 +465,40 @@ class MeetingAttendanceRowComponent {
|
|
|
473
465
|
return this.attendanceState === AttendanceState.CURRENTLY_ATTENDING;
|
|
474
466
|
}
|
|
475
467
|
/**
|
|
476
|
-
* Whether the log-attendance button should be shown:
|
|
477
|
-
*
|
|
478
|
-
*
|
|
468
|
+
* Whether the log-attendance button should be shown: whenever the row is not
|
|
469
|
+
* currently attending. Mirrors the attendance library, which toggles between
|
|
470
|
+
* Log Attendance and Leave Meeting purely on attendance state (no permission
|
|
471
|
+
* gating).
|
|
479
472
|
* @return {boolean} True when the log-attendance button is visible.
|
|
480
473
|
* @memberof MeetingAttendanceRowComponent
|
|
481
474
|
*/
|
|
482
475
|
get showLogAttendanceButton() {
|
|
483
|
-
|
|
476
|
+
// Shown for every eligible, not-currently-attending meeting. When the
|
|
477
|
+
// meeting is not In Progress the button renders disabled (see isLogDisabled).
|
|
478
|
+
return this.isEligibleForAttendance && !this.isCurrentlyAttending;
|
|
479
|
+
}
|
|
480
|
+
/**
|
|
481
|
+
* Whether the Log Attendance button is disabled: outside the meeting time
|
|
482
|
+
* (not In Progress) or while an attendance action is in flight. Matches the
|
|
483
|
+
* view-meeting page, which disables the button with an inactive message when
|
|
484
|
+
* the meeting is not active.
|
|
485
|
+
* @return {boolean} True when the Log Attendance button should be disabled.
|
|
486
|
+
* @memberof MeetingAttendanceRowComponent
|
|
487
|
+
*/
|
|
488
|
+
get isLogDisabled() {
|
|
489
|
+
return !this.isMeetingActive || this.isInFlight || !this.isActionable;
|
|
484
490
|
}
|
|
485
491
|
/**
|
|
486
|
-
* Whether the leave-meeting button should be shown:
|
|
487
|
-
*
|
|
488
|
-
* (Req 7.5, 12.2).
|
|
492
|
+
* Whether the leave-meeting button should be shown: whenever the row is
|
|
493
|
+
* currently attending. Mirrors the attendance library (no permission gating).
|
|
489
494
|
* @return {boolean} True when the leave-meeting button is visible.
|
|
490
495
|
* @memberof MeetingAttendanceRowComponent
|
|
491
496
|
*/
|
|
492
497
|
get showLeaveMeetingButton() {
|
|
493
|
-
|
|
498
|
+
// Leave Meeting is only meaningful while the meeting is active.
|
|
499
|
+
return (this.isEligibleForAttendance &&
|
|
500
|
+
this.isCurrentlyAttending &&
|
|
501
|
+
this.isMeetingActive);
|
|
494
502
|
}
|
|
495
503
|
/**
|
|
496
504
|
* Resolves a group-or-committee / room-or-location field value, substituting
|
|
@@ -522,16 +530,35 @@ class MeetingAttendanceRowComponent {
|
|
|
522
530
|
* @memberof MeetingAttendanceRowComponent
|
|
523
531
|
*/
|
|
524
532
|
get formattedTime() {
|
|
533
|
+
const range = this.timeRange;
|
|
525
534
|
const timezone = this.meeting?.timezone ?? '';
|
|
526
|
-
const startValue = this.meeting?.startDateTime ?? this.meeting?.meetingTime;
|
|
527
|
-
const start = formatEpoch(startValue, DateFormats.timeMeridiemFormat, timezone);
|
|
528
|
-
const end = formatEpoch(this.meeting?.endDateTime, DateFormats.timeMeridiemFormat, timezone);
|
|
529
|
-
const range = end ? `${start} – ${end}` : start;
|
|
530
535
|
if (!range) {
|
|
531
536
|
return '';
|
|
532
537
|
}
|
|
533
538
|
return timezone ? `${range} ${timezone}` : range;
|
|
534
539
|
}
|
|
540
|
+
/**
|
|
541
|
+
* The bold time range only (e.g. "10:00–11:00"), 12-hour with meridiem,
|
|
542
|
+
* rendered dark per Figma.
|
|
543
|
+
* @return {string} The formatted start–end time range.
|
|
544
|
+
* @memberof MeetingAttendanceRowComponent
|
|
545
|
+
*/
|
|
546
|
+
get timeRange() {
|
|
547
|
+
const timezone = this.meeting?.timezone ?? '';
|
|
548
|
+
const start = formatEpoch(this.meeting?.startDateTime ?? this.meeting?.meetingTime, DateFormats.timeMeridiemFormat, timezone);
|
|
549
|
+
const end = formatEpoch(this.meeting?.endDateTime, DateFormats.timeMeridiemFormat, timezone);
|
|
550
|
+
return end ? `${start} \u2013 ${end}` : start;
|
|
551
|
+
}
|
|
552
|
+
/**
|
|
553
|
+
* The timezone label only (light grey per Figma), wrapped in parentheses, or
|
|
554
|
+
* an empty string when no timezone is present.
|
|
555
|
+
* @return {string} The parenthesised timezone, or an empty string.
|
|
556
|
+
* @memberof MeetingAttendanceRowComponent
|
|
557
|
+
*/
|
|
558
|
+
get timezoneDisplay() {
|
|
559
|
+
const timezone = this.meeting?.timezone ?? '';
|
|
560
|
+
return timezone ? timezone : '';
|
|
561
|
+
}
|
|
535
562
|
/**
|
|
536
563
|
* Handles activation of the attendance action button. Delegates to the pure
|
|
537
564
|
* `resolveAttendanceAction` handler and emits exactly one event based on the
|
|
@@ -541,14 +568,18 @@ class MeetingAttendanceRowComponent {
|
|
|
541
568
|
* @memberof MeetingAttendanceRowComponent
|
|
542
569
|
*/
|
|
543
570
|
onAttendanceAction() {
|
|
544
|
-
|
|
545
|
-
if (action === AttendanceAction.LOG_ATTENDANCE) {
|
|
546
|
-
this.logAttendance.emit(this.meeting.meetingId);
|
|
571
|
+
if (!this.isActionable || !this.isMeetingActive) {
|
|
547
572
|
return;
|
|
548
573
|
}
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
574
|
+
// The Log Attendance / Leave Meeting popup lives on the view-meeting screen,
|
|
575
|
+
// so the dashboard navigates there (with eventId + meetingId) and requests
|
|
576
|
+
// the matching flow auto-open instead of calling the attendance API directly.
|
|
577
|
+
this.navigateToMeeting.emit({
|
|
578
|
+
eventId: this.meeting?.eventId ?? '',
|
|
579
|
+
meetingId: this.meeting.meetingId,
|
|
580
|
+
logAttendance: !this.isCurrentlyAttending,
|
|
581
|
+
leaveMeeting: this.isCurrentlyAttending,
|
|
582
|
+
});
|
|
552
583
|
}
|
|
553
584
|
/**
|
|
554
585
|
* Handles activation of the meeting-name link. Emits the meeting id only when
|
|
@@ -559,14 +590,19 @@ class MeetingAttendanceRowComponent {
|
|
|
559
590
|
if (!this.isActionable) {
|
|
560
591
|
return;
|
|
561
592
|
}
|
|
562
|
-
|
|
593
|
+
// Navigate to the view-meeting screen (no popup auto-open) when the meeting
|
|
594
|
+
// name link is clicked.
|
|
595
|
+
this.navigateToMeeting.emit({
|
|
596
|
+
eventId: this.meeting?.eventId ?? '',
|
|
597
|
+
meetingId: this.meeting.meetingId,
|
|
598
|
+
});
|
|
563
599
|
}
|
|
564
600
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MeetingAttendanceRowComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
565
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MeetingAttendanceRowComponent, isStandalone: true, selector: "ieeesa-meeting-attendance-row", inputs: { meeting: "meeting", attendanceState: "attendanceState", isInFlight: "isInFlight", permissions: "permissions", compact: "compact" }, outputs: { openMeeting: "openMeeting", logAttendance: "logAttendance", leaveMeeting: "leaveMeeting" }, ngImport: i0, template: "<div\r\n class=\"ieeesa-meeting-attendance-row\"\r\n [class.ieeesa-meeting-attendance-row--compact]=\"compact\"\r\n>\r\n <!-- Meeting name + group/location (hidden in the compact standalone variant). -->\r\n <div class=\"ieeesa-meeting-attendance-row__name-col\">\r\n <ng-container *ngIf=\"!compact\">\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-meeting-attendance-row__name-link\"\r\n [disabled]=\"!isActionable\"\r\n [attr.aria-label]=\"constants.meetingRow.ariaLabel.meetingNameLink\"\r\n (click)=\"onOpenMeeting()\"\r\n >\r\n {{ meeting.meetingName }}\r\n </button>\r\n\r\n <p class=\"ieeesa-meeting-attendance-row__subtitle\">\r\n {{ resolveFieldValue(meeting.groupOrCommittee) }}<ng-container\r\n *ngIf=\"meeting.roomOrLocation\"\r\n > · {{ meeting.roomOrLocation }}</ng-container>\r\n </p>\r\n </ng-container>\r\n </div>\r\n\r\n <!-- MEETING DATE column. -->\r\n <dl class=\"ieeesa-meeting-attendance-row__col ieeesa-meeting-attendance-row__col--date\">\r\n <dt class=\"ieeesa-meeting-attendance-row__col-label\">\r\n {{ constants.eventGroupCard.meetingDateLabel }}\r\n </dt>\r\n <dd class=\"ieeesa-meeting-attendance-row__col-value\">\r\n {{ formattedDate }}\r\n </dd>\r\n </dl>\r\n\r\n <!-- TIME & TIMEZONE column. -->\r\n <dl class=\"ieeesa-meeting-attendance-row__col ieeesa-meeting-attendance-row__col--time\">\r\n <dt class=\"ieeesa-meeting-attendance-row__col-label\">\r\n {{ constants.meetingRow.timeTimezoneLabel }}\r\n </dt>\r\n <dd class=\"ieeesa-meeting-attendance-row__col-value\">\r\n {{ formattedTime }}\r\n </dd>\r\n </dl>\r\n\r\n <!-- Attendance indicator + actions column. -->\r\n <div class=\"ieeesa-meeting-attendance-row__actions\">\r\n <!-- Currently-attending pill shown only in the attending state. -->\r\n <span\r\n *ngIf=\"isCurrentlyAttending\"\r\n class=\"ieeesa-meeting-attendance-row__attending-pill\"\r\n >\r\n <span class=\"ieeesa-meeting-attendance-row__attending-dot\" aria-hidden=\"true\"></span>\r\n {{ constants.meetingRow.currentlyAttendingIndicator }}\r\n </span>\r\n\r\n <!-- Log-attendance button: shown in the log state with the permission. -->\r\n <button\r\n *ngIf=\"showLogAttendanceButton\"\r\n type=\"button\"\r\n class=\"ieeesa-meeting-attendance-row__action-button ieeesa-meeting-attendance-row__action-button--log\"\r\n [disabled]=\"isInFlight || !isActionable\"\r\n [attr.aria-label]=\"constants.meetingRow.ariaLabel.logAttendance\"\r\n (click)=\"onAttendanceAction()\"\r\n >\r\n {{ constants.meetingRow.logAttendanceLabel }}\r\n </button>\r\n\r\n <!-- Leave-meeting button: shown in the attending state with the permission. -->\r\n <button\r\n *ngIf=\"showLeaveMeetingButton\"\r\n type=\"button\"\r\n class=\"ieeesa-meeting-attendance-row__action-button ieeesa-meeting-attendance-row__action-button--leave\"\r\n [disabled]=\"isInFlight || !isActionable\"\r\n [attr.aria-label]=\"constants.meetingRow.ariaLabel.leaveMeeting\"\r\n (click)=\"onAttendanceAction()\"\r\n >\r\n {{ constants.meetingRow.leaveMeetingLabel }}\r\n </button>\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-meeting-attendance-row{display:grid;grid-template-columns:minmax(220px,2fr) minmax(120px,1fr) minmax(180px,1.2fr) auto;align-items:center;column-gap:24px;min-height:72px;padding:16px 20px;background-color:#fff;font-family:Calibri Regular}.ieeesa-meeting-attendance-row__name-col{display:flex;flex-direction:column;gap:4px;min-width:0}.ieeesa-meeting-attendance-row__name-link{padding:0;border:0;background:none;text-align:left;text-decoration:underline;font-family:Calibri Bold;font-size:1rem;line-height:20px;color:#00629b;cursor:pointer}.ieeesa-meeting-attendance-row__name-link:disabled{color:#939094;text-decoration:none;cursor:default}.ieeesa-meeting-attendance-row__subtitle{margin:0;font-size:.875rem;line-height:18px;color:#333436}.ieeesa-meeting-attendance-row__col{display:flex;flex-direction:column;gap:4px;margin:0;min-width:0}.ieeesa-meeting-attendance-row__col-label{font-family:Calibri Bold;font-size:.75rem;letter-spacing:.03125em;text-transform:uppercase;color:#939094}.ieeesa-meeting-attendance-row__col-value{margin:0;font-size:.875rem;line-height:18px;color:#333436}.ieeesa-meeting-attendance-row__actions{display:flex;align-items:center;justify-content:flex-end;gap:16px;flex-shrink:0}.ieeesa-meeting-attendance-row__attending-pill{display:inline-flex;align-items:center;gap:6px;padding:4px 12px;border-radius:16px;white-space:nowrap;font-size:.8125rem;color:#1a7f37;background-color:#e8f5ec}.ieeesa-meeting-attendance-row__attending-dot{width:8px;height:8px;border-radius:50%;background-color:#1a7f37}.ieeesa-meeting-attendance-row__action-button{min-width:146px;padding:10px 16px;border-radius:4px;font-family:Calibri Bold;font-size:.875rem;cursor:pointer}.ieeesa-meeting-attendance-row__action-button--log{border:1px solid #00629b;background-color:#00629b;color:#fff}.ieeesa-meeting-attendance-row__action-button--leave{border:1px solid #00629b;background-color:#fff;color:#00629b}.ieeesa-meeting-attendance-row__action-button:disabled{border-color:#939094;background-color:#939094;color:#fff;cursor:default}.ieeesa-meeting-attendance-row:not(.ieeesa-meeting-attendance-row--compact)+.ieeesa-meeting-attendance-row:not(.ieeesa-meeting-attendance-row--compact){border-top:1px solid #d7d6d6}.ieeesa-meeting-attendance-row--compact{grid-template-columns:minmax(180px,1.2fr) auto;padding:0;min-height:0}.ieeesa-meeting-attendance-row--compact .ieeesa-meeting-attendance-row__col--date{display:none}@media (max-width: 767px){.ieeesa-meeting-attendance-row{grid-template-columns:1fr;row-gap:12px}.ieeesa-meeting-attendance-row__actions{justify-content:flex-start}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
601
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MeetingAttendanceRowComponent, isStandalone: true, selector: "ieeesa-meeting-attendance-row", inputs: { meeting: "meeting", attendanceState: "attendanceState", isInFlight: "isInFlight", permissions: "permissions", compact: "compact" }, outputs: { openMeeting: "openMeeting", logAttendance: "logAttendance", leaveMeeting: "leaveMeeting", navigateToMeeting: "navigateToMeeting" }, ngImport: i0, template: "<div\r\n class=\"ieeesa-meeting-attendance-row\"\r\n [class.ieeesa-meeting-attendance-row--compact]=\"compact\"\r\n>\r\n <!-- Meeting name + group/location (hidden in the compact standalone variant). -->\r\n <div class=\"ieeesa-meeting-attendance-row__name-col\">\r\n <ng-container *ngIf=\"!compact\">\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-meeting-attendance-row__name-link\"\r\n [disabled]=\"!isActionable\"\r\n [attr.aria-label]=\"constants.meetingRow.ariaLabel.meetingNameLink\"\r\n (click)=\"onOpenMeeting()\"\r\n >\r\n {{ meeting.meetingName }}\r\n </button>\r\n\r\n <p class=\"ieeesa-meeting-attendance-row__subtitle\">\r\n {{ resolveFieldValue(meeting.groupOrCommittee) }}<ng-container\r\n *ngIf=\"meeting.roomOrLocation\"\r\n > · {{ meeting.roomOrLocation }}</ng-container>\r\n </p>\r\n </ng-container>\r\n </div>\r\n\r\n <!-- MEETING DATE column. -->\r\n <dl class=\"ieeesa-meeting-attendance-row__col ieeesa-meeting-attendance-row__col--date\">\r\n <dt class=\"ieeesa-meeting-attendance-row__col-label\">\r\n {{ constants.eventGroupCard.meetingDateLabel }}\r\n </dt>\r\n <dd class=\"ieeesa-meeting-attendance-row__col-value\">\r\n {{ formattedDate }}\r\n </dd>\r\n </dl>\r\n\r\n <!-- TIME & TIMEZONE column. -->\r\n <dl class=\"ieeesa-meeting-attendance-row__col ieeesa-meeting-attendance-row__col--time\">\r\n <dt class=\"ieeesa-meeting-attendance-row__col-label\">\r\n {{ constants.meetingRow.timeTimezoneLabel }}\r\n </dt>\r\n <dd class=\"ieeesa-meeting-attendance-row__col-value\">\r\n <span class=\"ieeesa-meeting-attendance-row__time\">{{ timeRange }}</span><ng-container\r\n *ngIf=\"timezoneDisplay\"\r\n > <span class=\"ieeesa-meeting-attendance-row__tz\">{{ timezoneDisplay }}</span></ng-container>\r\n </dd>\r\n </dl>\r\n\r\n <!-- Attendance indicator + actions column. -->\r\n <div class=\"ieeesa-meeting-attendance-row__actions\">\r\n <!-- Fixed-width slot reserved for the attending pill so the action buttons\r\n stay column-aligned whether or not the pill is shown. -->\r\n <span class=\"ieeesa-meeting-attendance-row__attending-slot\">\r\n <span\r\n *ngIf=\"isCurrentlyAttending\"\r\n class=\"ieeesa-meeting-attendance-row__attending-pill\"\r\n >\r\n <span class=\"ieeesa-meeting-attendance-row__attending-dot\" aria-hidden=\"true\"></span>\r\n {{ constants.meetingRow.currentlyAttendingIndicator }}\r\n </span>\r\n </span>\r\n\r\n <!-- Log-attendance button: shown for eligible meetings, disabled (with the\r\n inactive message) when the meeting is not In Progress. -->\r\n <button\r\n *ngIf=\"showLogAttendanceButton\"\r\n type=\"button\"\r\n class=\"ieeesa-meeting-attendance-row__action-button ieeesa-meeting-attendance-row__action-button--log\"\r\n [class.ieeesa-meeting-attendance-row__action-button--inactive]=\"isLogDisabled\"\r\n [disabled]=\"isLogDisabled\"\r\n [attr.title]=\"isLogDisabled ? inactiveMessage : null\"\r\n [attr.aria-label]=\"constants.meetingRow.ariaLabel.logAttendance\"\r\n (click)=\"onAttendanceAction()\"\r\n >\r\n {{ constants.meetingRow.logAttendanceLabel }}\r\n </button>\r\n\r\n <!-- Leave-meeting button: shown in the attending state with the permission. -->\r\n <button\r\n *ngIf=\"showLeaveMeetingButton\"\r\n type=\"button\"\r\n class=\"ieeesa-meeting-attendance-row__action-button ieeesa-meeting-attendance-row__action-button--leave\"\r\n [disabled]=\"isInFlight || !isActionable\"\r\n [attr.aria-label]=\"constants.meetingRow.ariaLabel.leaveMeeting\"\r\n (click)=\"onAttendanceAction()\"\r\n >\r\n {{ constants.meetingRow.leaveMeetingLabel }}\r\n </button>\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-meeting-attendance-row{display:grid;grid-template-columns:minmax(220px,2fr) minmax(120px,1fr) minmax(200px,1.3fr) auto;align-items:center;column-gap:24px;padding:16px 20px;background-color:#fff;font-family:Calibri Regular}.ieeesa-meeting-attendance-row__name-col{display:flex;flex-direction:column;gap:2px;min-width:0}.ieeesa-meeting-attendance-row__name-link{padding:0;border:0;background:none;text-align:left;text-decoration:underline;font-family:Calibri Bold;font-size:.875rem;line-height:18px;color:#00629b;cursor:pointer}.ieeesa-meeting-attendance-row__name-link:hover:not(:disabled){color:#004872}.ieeesa-meeting-attendance-row__name-link:disabled{color:#939094;text-decoration:none;cursor:default}.ieeesa-meeting-attendance-row__subtitle{margin:0;font-size:.875rem;line-height:18px;color:#333436}.ieeesa-meeting-attendance-row__col{display:flex;flex-direction:column;gap:2px;margin:0;min-width:0}.ieeesa-meeting-attendance-row__col-label{font-family:Calibri Bold;font-size:.75rem;letter-spacing:.03125em;text-transform:uppercase;color:#64748b}.ieeesa-meeting-attendance-row__col-value{margin:0;font-size:.875rem;line-height:18px;color:#0f172a}.ieeesa-meeting-attendance-row__time{font-family:Calibri Bold;color:#0f172a}.ieeesa-meeting-attendance-row__tz{color:#64748b}.ieeesa-meeting-attendance-row__actions{display:flex;align-items:center;justify-content:flex-end;gap:16px;flex-shrink:0}.ieeesa-meeting-attendance-row__attending-slot{display:inline-flex;justify-content:flex-end;align-items:center;width:150px;flex-shrink:0}.ieeesa-meeting-attendance-row__attending-pill{display:inline-flex;align-items:center;gap:6px;padding:4px 12px;border-radius:16px;white-space:nowrap;font-size:.8125rem;color:#15803d;background-color:#e8f5ec}.ieeesa-meeting-attendance-row__attending-dot{width:8px;height:8px;border-radius:50%;background-color:#15803d}.ieeesa-meeting-attendance-row__action-button{min-width:146px;padding:10px 24px;border-radius:3px;font-family:Calibri Bold;font-size:1rem;cursor:pointer}.ieeesa-meeting-attendance-row__action-button--log{border:1px solid #00629b;background-color:#00629b;color:#fff;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026}.ieeesa-meeting-attendance-row__action-button--leave{border:1px solid #00629b;background-color:#fff;color:#00629b}.ieeesa-meeting-attendance-row__action-button:disabled,.ieeesa-meeting-attendance-row__action-button--inactive{border-color:#e2e8f0;background-color:#f4f5f7;color:#939094;box-shadow:none;cursor:not-allowed}.ieeesa-meeting-attendance-row__view{min-width:60px;height:40px;padding:8px 16px;border:1px solid #878b8f;border-radius:4px;background-color:#fff;font-family:Calibri Bold;font-size:.8125rem;color:#0f172a;cursor:pointer}.ieeesa-meeting-attendance-row__view:hover:not(:disabled){background-color:#eaf3f9}.ieeesa-meeting-attendance-row__view:disabled{border-color:#e2e8f0;color:#939094;cursor:not-allowed}.ieeesa-meeting-attendance-row:not(.ieeesa-meeting-attendance-row--compact)+.ieeesa-meeting-attendance-row:not(.ieeesa-meeting-attendance-row--compact){border-top:1px solid #e2e8f0}.ieeesa-meeting-attendance-row--compact{grid-template-columns:minmax(180px,1.2fr) auto;padding:0}.ieeesa-meeting-attendance-row--compact .ieeesa-meeting-attendance-row__col--date{display:none}@media (max-width: 767px){.ieeesa-meeting-attendance-row{grid-template-columns:1fr;row-gap:12px}.ieeesa-meeting-attendance-row__actions{justify-content:flex-start}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
566
602
|
}
|
|
567
603
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MeetingAttendanceRowComponent, decorators: [{
|
|
568
604
|
type: Component,
|
|
569
|
-
args: [{ selector: 'ieeesa-meeting-attendance-row', standalone: true, imports: [CommonModule], encapsulation: ViewEncapsulation.None, template: "<div\r\n class=\"ieeesa-meeting-attendance-row\"\r\n [class.ieeesa-meeting-attendance-row--compact]=\"compact\"\r\n>\r\n <!-- Meeting name + group/location (hidden in the compact standalone variant). -->\r\n <div class=\"ieeesa-meeting-attendance-row__name-col\">\r\n <ng-container *ngIf=\"!compact\">\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-meeting-attendance-row__name-link\"\r\n [disabled]=\"!isActionable\"\r\n [attr.aria-label]=\"constants.meetingRow.ariaLabel.meetingNameLink\"\r\n (click)=\"onOpenMeeting()\"\r\n >\r\n {{ meeting.meetingName }}\r\n </button>\r\n\r\n <p class=\"ieeesa-meeting-attendance-row__subtitle\">\r\n {{ resolveFieldValue(meeting.groupOrCommittee) }}<ng-container\r\n *ngIf=\"meeting.roomOrLocation\"\r\n > · {{ meeting.roomOrLocation }}</ng-container>\r\n </p>\r\n </ng-container>\r\n </div>\r\n\r\n <!-- MEETING DATE column. -->\r\n <dl class=\"ieeesa-meeting-attendance-row__col ieeesa-meeting-attendance-row__col--date\">\r\n <dt class=\"ieeesa-meeting-attendance-row__col-label\">\r\n {{ constants.eventGroupCard.meetingDateLabel }}\r\n </dt>\r\n <dd class=\"ieeesa-meeting-attendance-row__col-value\">\r\n {{ formattedDate }}\r\n </dd>\r\n </dl>\r\n\r\n <!-- TIME & TIMEZONE column. -->\r\n <dl class=\"ieeesa-meeting-attendance-row__col ieeesa-meeting-attendance-row__col--time\">\r\n <dt class=\"ieeesa-meeting-attendance-row__col-label\">\r\n {{ constants.meetingRow.timeTimezoneLabel }}\r\n </dt>\r\n <dd class=\"ieeesa-meeting-attendance-row__col-value\">\r\n {{ formattedTime }}\r\n </dd>\r\n </dl>\r\n\r\n <!-- Attendance indicator + actions column. -->\r\n <div class=\"ieeesa-meeting-attendance-row__actions\">\r\n <!-- Currently-attending pill shown only in the attending state. -->\r\n <span\r\n *ngIf=\"isCurrentlyAttending\"\r\n class=\"ieeesa-meeting-attendance-row__attending-pill\"\r\n >\r\n <span class=\"ieeesa-meeting-attendance-row__attending-dot\" aria-hidden=\"true\"></span>\r\n {{ constants.meetingRow.currentlyAttendingIndicator }}\r\n </span>\r\n\r\n <!-- Log-attendance button: shown in the log state with the permission. -->\r\n <button\r\n *ngIf=\"showLogAttendanceButton\"\r\n type=\"button\"\r\n class=\"ieeesa-meeting-attendance-row__action-button ieeesa-meeting-attendance-row__action-button--log\"\r\n [disabled]=\"isInFlight || !isActionable\"\r\n [attr.aria-label]=\"constants.meetingRow.ariaLabel.logAttendance\"\r\n (click)=\"onAttendanceAction()\"\r\n >\r\n {{ constants.meetingRow.logAttendanceLabel }}\r\n </button>\r\n\r\n <!-- Leave-meeting button: shown in the attending state with the permission. -->\r\n <button\r\n *ngIf=\"showLeaveMeetingButton\"\r\n type=\"button\"\r\n class=\"ieeesa-meeting-attendance-row__action-button ieeesa-meeting-attendance-row__action-button--leave\"\r\n [disabled]=\"isInFlight || !isActionable\"\r\n [attr.aria-label]=\"constants.meetingRow.ariaLabel.leaveMeeting\"\r\n (click)=\"onAttendanceAction()\"\r\n >\r\n {{ constants.meetingRow.leaveMeetingLabel }}\r\n </button>\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-meeting-attendance-row{display:grid;grid-template-columns:minmax(220px,2fr) minmax(120px,1fr) minmax(180px,1.2fr) auto;align-items:center;column-gap:24px;min-height:72px;padding:16px 20px;background-color:#fff;font-family:Calibri Regular}.ieeesa-meeting-attendance-row__name-col{display:flex;flex-direction:column;gap:4px;min-width:0}.ieeesa-meeting-attendance-row__name-link{padding:0;border:0;background:none;text-align:left;text-decoration:underline;font-family:Calibri Bold;font-size:1rem;line-height:20px;color:#00629b;cursor:pointer}.ieeesa-meeting-attendance-row__name-link:disabled{color:#939094;text-decoration:none;cursor:default}.ieeesa-meeting-attendance-row__subtitle{margin:0;font-size:.875rem;line-height:18px;color:#333436}.ieeesa-meeting-attendance-row__col{display:flex;flex-direction:column;gap:4px;margin:0;min-width:0}.ieeesa-meeting-attendance-row__col-label{font-family:Calibri Bold;font-size:.75rem;letter-spacing:.03125em;text-transform:uppercase;color:#939094}.ieeesa-meeting-attendance-row__col-value{margin:0;font-size:.875rem;line-height:18px;color:#333436}.ieeesa-meeting-attendance-row__actions{display:flex;align-items:center;justify-content:flex-end;gap:16px;flex-shrink:0}.ieeesa-meeting-attendance-row__attending-pill{display:inline-flex;align-items:center;gap:6px;padding:4px 12px;border-radius:16px;white-space:nowrap;font-size:.8125rem;color:#1a7f37;background-color:#e8f5ec}.ieeesa-meeting-attendance-row__attending-dot{width:8px;height:8px;border-radius:50%;background-color:#1a7f37}.ieeesa-meeting-attendance-row__action-button{min-width:146px;padding:10px 16px;border-radius:4px;font-family:Calibri Bold;font-size:.875rem;cursor:pointer}.ieeesa-meeting-attendance-row__action-button--log{border:1px solid #00629b;background-color:#00629b;color:#fff}.ieeesa-meeting-attendance-row__action-button--leave{border:1px solid #00629b;background-color:#fff;color:#00629b}.ieeesa-meeting-attendance-row__action-button:disabled{border-color:#939094;background-color:#939094;color:#fff;cursor:default}.ieeesa-meeting-attendance-row:not(.ieeesa-meeting-attendance-row--compact)+.ieeesa-meeting-attendance-row:not(.ieeesa-meeting-attendance-row--compact){border-top:1px solid #d7d6d6}.ieeesa-meeting-attendance-row--compact{grid-template-columns:minmax(180px,1.2fr) auto;padding:0;min-height:0}.ieeesa-meeting-attendance-row--compact .ieeesa-meeting-attendance-row__col--date{display:none}@media (max-width: 767px){.ieeesa-meeting-attendance-row{grid-template-columns:1fr;row-gap:12px}.ieeesa-meeting-attendance-row__actions{justify-content:flex-start}}\n"] }]
|
|
605
|
+
args: [{ selector: 'ieeesa-meeting-attendance-row', standalone: true, imports: [CommonModule], encapsulation: ViewEncapsulation.None, template: "<div\r\n class=\"ieeesa-meeting-attendance-row\"\r\n [class.ieeesa-meeting-attendance-row--compact]=\"compact\"\r\n>\r\n <!-- Meeting name + group/location (hidden in the compact standalone variant). -->\r\n <div class=\"ieeesa-meeting-attendance-row__name-col\">\r\n <ng-container *ngIf=\"!compact\">\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-meeting-attendance-row__name-link\"\r\n [disabled]=\"!isActionable\"\r\n [attr.aria-label]=\"constants.meetingRow.ariaLabel.meetingNameLink\"\r\n (click)=\"onOpenMeeting()\"\r\n >\r\n {{ meeting.meetingName }}\r\n </button>\r\n\r\n <p class=\"ieeesa-meeting-attendance-row__subtitle\">\r\n {{ resolveFieldValue(meeting.groupOrCommittee) }}<ng-container\r\n *ngIf=\"meeting.roomOrLocation\"\r\n > · {{ meeting.roomOrLocation }}</ng-container>\r\n </p>\r\n </ng-container>\r\n </div>\r\n\r\n <!-- MEETING DATE column. -->\r\n <dl class=\"ieeesa-meeting-attendance-row__col ieeesa-meeting-attendance-row__col--date\">\r\n <dt class=\"ieeesa-meeting-attendance-row__col-label\">\r\n {{ constants.eventGroupCard.meetingDateLabel }}\r\n </dt>\r\n <dd class=\"ieeesa-meeting-attendance-row__col-value\">\r\n {{ formattedDate }}\r\n </dd>\r\n </dl>\r\n\r\n <!-- TIME & TIMEZONE column. -->\r\n <dl class=\"ieeesa-meeting-attendance-row__col ieeesa-meeting-attendance-row__col--time\">\r\n <dt class=\"ieeesa-meeting-attendance-row__col-label\">\r\n {{ constants.meetingRow.timeTimezoneLabel }}\r\n </dt>\r\n <dd class=\"ieeesa-meeting-attendance-row__col-value\">\r\n <span class=\"ieeesa-meeting-attendance-row__time\">{{ timeRange }}</span><ng-container\r\n *ngIf=\"timezoneDisplay\"\r\n > <span class=\"ieeesa-meeting-attendance-row__tz\">{{ timezoneDisplay }}</span></ng-container>\r\n </dd>\r\n </dl>\r\n\r\n <!-- Attendance indicator + actions column. -->\r\n <div class=\"ieeesa-meeting-attendance-row__actions\">\r\n <!-- Fixed-width slot reserved for the attending pill so the action buttons\r\n stay column-aligned whether or not the pill is shown. -->\r\n <span class=\"ieeesa-meeting-attendance-row__attending-slot\">\r\n <span\r\n *ngIf=\"isCurrentlyAttending\"\r\n class=\"ieeesa-meeting-attendance-row__attending-pill\"\r\n >\r\n <span class=\"ieeesa-meeting-attendance-row__attending-dot\" aria-hidden=\"true\"></span>\r\n {{ constants.meetingRow.currentlyAttendingIndicator }}\r\n </span>\r\n </span>\r\n\r\n <!-- Log-attendance button: shown for eligible meetings, disabled (with the\r\n inactive message) when the meeting is not In Progress. -->\r\n <button\r\n *ngIf=\"showLogAttendanceButton\"\r\n type=\"button\"\r\n class=\"ieeesa-meeting-attendance-row__action-button ieeesa-meeting-attendance-row__action-button--log\"\r\n [class.ieeesa-meeting-attendance-row__action-button--inactive]=\"isLogDisabled\"\r\n [disabled]=\"isLogDisabled\"\r\n [attr.title]=\"isLogDisabled ? inactiveMessage : null\"\r\n [attr.aria-label]=\"constants.meetingRow.ariaLabel.logAttendance\"\r\n (click)=\"onAttendanceAction()\"\r\n >\r\n {{ constants.meetingRow.logAttendanceLabel }}\r\n </button>\r\n\r\n <!-- Leave-meeting button: shown in the attending state with the permission. -->\r\n <button\r\n *ngIf=\"showLeaveMeetingButton\"\r\n type=\"button\"\r\n class=\"ieeesa-meeting-attendance-row__action-button ieeesa-meeting-attendance-row__action-button--leave\"\r\n [disabled]=\"isInFlight || !isActionable\"\r\n [attr.aria-label]=\"constants.meetingRow.ariaLabel.leaveMeeting\"\r\n (click)=\"onAttendanceAction()\"\r\n >\r\n {{ constants.meetingRow.leaveMeetingLabel }}\r\n </button>\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-meeting-attendance-row{display:grid;grid-template-columns:minmax(220px,2fr) minmax(120px,1fr) minmax(200px,1.3fr) auto;align-items:center;column-gap:24px;padding:16px 20px;background-color:#fff;font-family:Calibri Regular}.ieeesa-meeting-attendance-row__name-col{display:flex;flex-direction:column;gap:2px;min-width:0}.ieeesa-meeting-attendance-row__name-link{padding:0;border:0;background:none;text-align:left;text-decoration:underline;font-family:Calibri Bold;font-size:.875rem;line-height:18px;color:#00629b;cursor:pointer}.ieeesa-meeting-attendance-row__name-link:hover:not(:disabled){color:#004872}.ieeesa-meeting-attendance-row__name-link:disabled{color:#939094;text-decoration:none;cursor:default}.ieeesa-meeting-attendance-row__subtitle{margin:0;font-size:.875rem;line-height:18px;color:#333436}.ieeesa-meeting-attendance-row__col{display:flex;flex-direction:column;gap:2px;margin:0;min-width:0}.ieeesa-meeting-attendance-row__col-label{font-family:Calibri Bold;font-size:.75rem;letter-spacing:.03125em;text-transform:uppercase;color:#64748b}.ieeesa-meeting-attendance-row__col-value{margin:0;font-size:.875rem;line-height:18px;color:#0f172a}.ieeesa-meeting-attendance-row__time{font-family:Calibri Bold;color:#0f172a}.ieeesa-meeting-attendance-row__tz{color:#64748b}.ieeesa-meeting-attendance-row__actions{display:flex;align-items:center;justify-content:flex-end;gap:16px;flex-shrink:0}.ieeesa-meeting-attendance-row__attending-slot{display:inline-flex;justify-content:flex-end;align-items:center;width:150px;flex-shrink:0}.ieeesa-meeting-attendance-row__attending-pill{display:inline-flex;align-items:center;gap:6px;padding:4px 12px;border-radius:16px;white-space:nowrap;font-size:.8125rem;color:#15803d;background-color:#e8f5ec}.ieeesa-meeting-attendance-row__attending-dot{width:8px;height:8px;border-radius:50%;background-color:#15803d}.ieeesa-meeting-attendance-row__action-button{min-width:146px;padding:10px 24px;border-radius:3px;font-family:Calibri Bold;font-size:1rem;cursor:pointer}.ieeesa-meeting-attendance-row__action-button--log{border:1px solid #00629b;background-color:#00629b;color:#fff;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026}.ieeesa-meeting-attendance-row__action-button--leave{border:1px solid #00629b;background-color:#fff;color:#00629b}.ieeesa-meeting-attendance-row__action-button:disabled,.ieeesa-meeting-attendance-row__action-button--inactive{border-color:#e2e8f0;background-color:#f4f5f7;color:#939094;box-shadow:none;cursor:not-allowed}.ieeesa-meeting-attendance-row__view{min-width:60px;height:40px;padding:8px 16px;border:1px solid #878b8f;border-radius:4px;background-color:#fff;font-family:Calibri Bold;font-size:.8125rem;color:#0f172a;cursor:pointer}.ieeesa-meeting-attendance-row__view:hover:not(:disabled){background-color:#eaf3f9}.ieeesa-meeting-attendance-row__view:disabled{border-color:#e2e8f0;color:#939094;cursor:not-allowed}.ieeesa-meeting-attendance-row:not(.ieeesa-meeting-attendance-row--compact)+.ieeesa-meeting-attendance-row:not(.ieeesa-meeting-attendance-row--compact){border-top:1px solid #e2e8f0}.ieeesa-meeting-attendance-row--compact{grid-template-columns:minmax(180px,1.2fr) auto;padding:0}.ieeesa-meeting-attendance-row--compact .ieeesa-meeting-attendance-row__col--date{display:none}@media (max-width: 767px){.ieeesa-meeting-attendance-row{grid-template-columns:1fr;row-gap:12px}.ieeesa-meeting-attendance-row__actions{justify-content:flex-start}}\n"] }]
|
|
570
606
|
}], propDecorators: { meeting: [{
|
|
571
607
|
type: Input
|
|
572
608
|
}], attendanceState: [{
|
|
@@ -583,6 +619,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
583
619
|
type: Output
|
|
584
620
|
}], leaveMeeting: [{
|
|
585
621
|
type: Output
|
|
622
|
+
}], navigateToMeeting: [{
|
|
623
|
+
type: Output
|
|
586
624
|
}] } });
|
|
587
625
|
|
|
588
626
|
/**
|
|
@@ -634,8 +672,16 @@ class EventGroupCardComponent {
|
|
|
634
672
|
* backend. Standalone-meeting cards never emit this.
|
|
635
673
|
*/
|
|
636
674
|
this.loadMeetings = new EventEmitter();
|
|
675
|
+
/**
|
|
676
|
+
* Bubbles the owning event id + meeting id when an attendance button is
|
|
677
|
+
* activated for an In-Progress meeting, so the host can navigate to the
|
|
678
|
+
* view-meeting screen (where the real Log Attendance popup opens).
|
|
679
|
+
*/
|
|
680
|
+
this.navigateToMeeting = new EventEmitter();
|
|
637
681
|
/** The default page size for the per-card meeting paginator. */
|
|
638
682
|
this.defaultPageSize = 5;
|
|
683
|
+
/** Page-size options shown in the paginator dropdown (matches the app-wide paginator). */
|
|
684
|
+
this.pageSizeOptions = [5, 10, 15];
|
|
639
685
|
/** The current zero-based page index of the meeting list. */
|
|
640
686
|
this.pageIndex = 0;
|
|
641
687
|
/** The current page size of the meeting list. */
|
|
@@ -682,7 +728,9 @@ class EventGroupCardComponent {
|
|
|
682
728
|
* @memberof EventGroupCardComponent
|
|
683
729
|
*/
|
|
684
730
|
get totalMeetings() {
|
|
685
|
-
return this.event?.
|
|
731
|
+
return (this.event?.meetingPageTotal ??
|
|
732
|
+
this.event?.meetingCount ??
|
|
733
|
+
this.meetings.length);
|
|
686
734
|
}
|
|
687
735
|
/**
|
|
688
736
|
* The meetings to render for the current page. The server returns exactly one
|
|
@@ -830,22 +878,96 @@ class EventGroupCardComponent {
|
|
|
830
878
|
AttendanceState.CURRENTLY_ATTENDING);
|
|
831
879
|
}
|
|
832
880
|
/**
|
|
833
|
-
* Whether the STANDALONE meeting's Log Attendance button is shown (
|
|
834
|
-
* attending
|
|
881
|
+
* Whether the STANDALONE meeting's Log Attendance button is shown (whenever
|
|
882
|
+
* not currently attending). No permission gating — mirrors the attendance
|
|
883
|
+
* library.
|
|
835
884
|
* @return {boolean} True when the log-attendance button is visible.
|
|
836
885
|
* @memberof EventGroupCardComponent
|
|
837
886
|
*/
|
|
838
887
|
get showStandaloneLog() {
|
|
839
|
-
|
|
888
|
+
// Shown for every eligible, not-currently-attending standalone meeting.
|
|
889
|
+
// Disabled (with the inactive message) when the meeting is not In Progress.
|
|
890
|
+
return !this.isStandaloneAttending;
|
|
840
891
|
}
|
|
841
892
|
/**
|
|
842
|
-
* Whether the STANDALONE meeting's Leave Meeting button is shown
|
|
843
|
-
*
|
|
893
|
+
* Whether the STANDALONE meeting's Leave Meeting button is shown — only while
|
|
894
|
+
* the meeting is currently attending AND active.
|
|
844
895
|
* @return {boolean} True when the leave-meeting button is visible.
|
|
845
896
|
* @memberof EventGroupCardComponent
|
|
846
897
|
*/
|
|
847
898
|
get showStandaloneLeave() {
|
|
848
|
-
return this.isStandaloneAttending &&
|
|
899
|
+
return this.isStandaloneAttending && this.isStandaloneActive;
|
|
900
|
+
}
|
|
901
|
+
/**
|
|
902
|
+
* Whether the STANDALONE meeting is eligible for an attendance action. The
|
|
903
|
+
* backend supplies an `attendanceState` only for attendance-eligible meetings
|
|
904
|
+
* (open for attendance), so its presence is the eligibility signal.
|
|
905
|
+
* @return {boolean} True when the standalone meeting is attendance-eligible.
|
|
906
|
+
* @memberof EventGroupCardComponent
|
|
907
|
+
*/
|
|
908
|
+
get isStandaloneEligible() {
|
|
909
|
+
return !!this.event?.attendanceState;
|
|
910
|
+
}
|
|
911
|
+
/**
|
|
912
|
+
* Whether the STANDALONE meeting is currently In Progress — the attendance
|
|
913
|
+
* button is only ENABLED during the meeting (disabled otherwise, mirroring the
|
|
914
|
+
* view-meeting page).
|
|
915
|
+
* @return {boolean} True when the standalone meeting status is 'In Progress'.
|
|
916
|
+
* @memberof EventGroupCardComponent
|
|
917
|
+
*/
|
|
918
|
+
get isStandaloneActive() {
|
|
919
|
+
return (this.event?.status ?? '').trim().toLowerCase() === 'in progress';
|
|
920
|
+
}
|
|
921
|
+
/**
|
|
922
|
+
* Whether the STANDALONE Log Attendance button is disabled (outside meeting
|
|
923
|
+
* time), matching the view-meeting page's inactive state.
|
|
924
|
+
* @return {boolean} True when the standalone log button should be disabled.
|
|
925
|
+
* @memberof EventGroupCardComponent
|
|
926
|
+
*/
|
|
927
|
+
get isStandaloneLogDisabled() {
|
|
928
|
+
return !this.isStandaloneActive;
|
|
929
|
+
}
|
|
930
|
+
/** The inactive-button message shown when the standalone meeting is not active. */
|
|
931
|
+
get inactiveMessage() {
|
|
932
|
+
return (this.constants?.meetingRow?.inactiveMessage ??
|
|
933
|
+
'Attendance logging only available during meeting, Please contact your meeting administrator for any necessary corrections.');
|
|
934
|
+
}
|
|
935
|
+
/**
|
|
936
|
+
* Bubbles a row's navigate-to-meeting request upward unchanged so the host can
|
|
937
|
+
* route to the view-meeting screen.
|
|
938
|
+
* @param {{ eventId: string; meetingId: string }} request - The meeting identity.
|
|
939
|
+
* @memberof EventGroupCardComponent
|
|
940
|
+
*/
|
|
941
|
+
onNavigateToMeeting(request) {
|
|
942
|
+
this.navigateToMeeting.emit(request);
|
|
943
|
+
}
|
|
944
|
+
/**
|
|
945
|
+
* Emits the navigate-to-meeting intent for a STANDALONE meeting's attendance
|
|
946
|
+
* action (Log Attendance or Leave Meeting, requesting the matching popup
|
|
947
|
+
* auto-open). Its own id is the meeting id; it has no parent event.
|
|
948
|
+
* @memberof EventGroupCardComponent
|
|
949
|
+
*/
|
|
950
|
+
onNavigateToStandalone() {
|
|
951
|
+
if (!this.isStandaloneActive) {
|
|
952
|
+
return;
|
|
953
|
+
}
|
|
954
|
+
this.navigateToMeeting.emit({
|
|
955
|
+
eventId: '',
|
|
956
|
+
meetingId: this.event?.eventId ?? '',
|
|
957
|
+
logAttendance: !this.isStandaloneAttending,
|
|
958
|
+
leaveMeeting: this.isStandaloneAttending,
|
|
959
|
+
});
|
|
960
|
+
}
|
|
961
|
+
/**
|
|
962
|
+
* Emits the navigate-to-meeting intent for a STANDALONE meeting's name link
|
|
963
|
+
* (view only — no popup auto-open).
|
|
964
|
+
* @memberof EventGroupCardComponent
|
|
965
|
+
*/
|
|
966
|
+
onOpenStandalone() {
|
|
967
|
+
this.navigateToMeeting.emit({
|
|
968
|
+
eventId: '',
|
|
969
|
+
meetingId: this.event?.eventId ?? '',
|
|
970
|
+
});
|
|
849
971
|
}
|
|
850
972
|
/** The luxon-formatted start date of the event (ISO or epoch ms) (Req 6.2). */
|
|
851
973
|
get formattedStartDate() {
|
|
@@ -895,7 +1017,7 @@ class EventGroupCardComponent {
|
|
|
895
1017
|
onToggleMeetingList() {
|
|
896
1018
|
this.isMeetingListOpen = !this.isMeetingListOpen;
|
|
897
1019
|
if (this.isMeetingListOpen) {
|
|
898
|
-
this.loadMeetings.emit(this.pageIndex + 1);
|
|
1020
|
+
this.loadMeetings.emit({ page: this.pageIndex + 1, size: this.pageSize });
|
|
899
1021
|
}
|
|
900
1022
|
}
|
|
901
1023
|
/**
|
|
@@ -942,8 +1064,8 @@ class EventGroupCardComponent {
|
|
|
942
1064
|
pageIndex: event.pageIndex,
|
|
943
1065
|
pageSize: event.pageSize,
|
|
944
1066
|
});
|
|
945
|
-
// Request the newly selected page's child meetings from the container.
|
|
946
|
-
this.loadMeetings.emit(event.pageIndex + 1);
|
|
1067
|
+
// Request the newly selected page/size's child meetings from the container.
|
|
1068
|
+
this.loadMeetings.emit({ page: event.pageIndex + 1, size: event.pageSize });
|
|
947
1069
|
}
|
|
948
1070
|
/**
|
|
949
1071
|
* Formats a date for display, preferring the epoch-milliseconds value (from
|
|
@@ -958,11 +1080,11 @@ class EventGroupCardComponent {
|
|
|
958
1080
|
return formatEpoch(value, DateFormats.displayFormat, this.event?.timezone);
|
|
959
1081
|
}
|
|
960
1082
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EventGroupCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
961
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: EventGroupCardComponent, isStandalone: true, selector: "ieeesa-event-group-card", inputs: { event: "event", permissions: "permissions", attendanceStates: "attendanceStates", inFlightMeetingIds: "inFlightMeetingIds", isMobileView: "isMobileView" }, outputs: { viewEvent: "viewEvent", openMeeting: "openMeeting", logAttendance: "logAttendance", leaveMeeting: "leaveMeeting", pageChange: "pageChange", loadMeetings: "loadMeetings" }, ngImport: i0, template: "<article\r\n class=\"ieeesa-event-group-card\"\r\n [class.ieeesa-event-group-card--mobile]=\"isMobileView\"\r\n [class.ieeesa-event-group-card--standalone]=\"isStandalone\"\r\n>\r\n <!-- ============================ EVENT ============================ -->\r\n <ng-container *ngIf=\"!isStandalone\">\r\n <header class=\"ieeesa-event-group-card__header\">\r\n <div class=\"ieeesa-event-group-card__header-main\">\r\n <!-- EVENT badge + day indicator. -->\r\n <div class=\"ieeesa-event-group-card__badge-row\">\r\n <span class=\"ieeesa-event-group-card__badge\">\r\n {{ constants.eventGroupCard.eventBadge }}\r\n </span>\r\n <span\r\n *ngIf=\"event.dayIndicator\"\r\n class=\"ieeesa-event-group-card__day-indicator\"\r\n >\r\n {{ event.dayIndicator }}\r\n </span>\r\n </div>\r\n\r\n <div class=\"ieeesa-event-group-card__title-row\">\r\n <h3 class=\"ieeesa-event-group-card__title\">{{ event.title }}</h3>\r\n <span\r\n *ngIf=\"event.status\"\r\n class=\"ieeesa-event-group-card__status-pill\"\r\n [ngClass]=\"'ieeesa-event-group-card__status-pill--' + statusModifier\"\r\n >\r\n <span class=\"ieeesa-event-group-card__status-dot\" aria-hidden=\"true\"></span>\r\n {{ event.status }}\r\n </span>\r\n </div>\r\n\r\n <p\r\n *ngIf=\"subtitleText\"\r\n class=\"ieeesa-event-group-card__subtitle\"\r\n >\r\n {{ subtitleText }}\r\n </p>\r\n </div>\r\n\r\n <div class=\"ieeesa-event-group-card__header-side\">\r\n <dl class=\"ieeesa-event-group-card__dates-block\">\r\n <dt class=\"ieeesa-event-group-card__dates-label\">\r\n {{ constants.eventGroupCard.eventDatesLabel }}\r\n </dt>\r\n <dd class=\"ieeesa-event-group-card__dates-value\">\r\n {{ formattedStartDate }}<ng-container *ngIf=\"formattedEndDate && formattedEndDate !== formattedStartDate\">\r\n – {{ formattedEndDate }}</ng-container>\r\n </dd>\r\n <dd\r\n *ngIf=\"event.timezone\"\r\n class=\"ieeesa-event-group-card__timezone-value\"\r\n >\r\n {{ event.timezone }}\r\n </dd>\r\n </dl>\r\n\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-event-group-card__view\"\r\n [attr.aria-label]=\"constants.eventGroupCard.ariaLabel.viewEvent\"\r\n (click)=\"onViewEvent()\"\r\n >\r\n {{ constants.eventGroupCard.viewEventLabel }}\r\n </button>\r\n </div>\r\n </header>\r\n\r\n <!-- Meetings label row + Show/Hide toggle. -->\r\n <div class=\"ieeesa-event-group-card__meetings-bar\">\r\n <span class=\"ieeesa-event-group-card__meetings-open\">\r\n <span class=\"ieeesa-event-group-card__meetings-dot\" aria-hidden=\"true\"></span>\r\n {{ openForAttendanceSummary }}\r\n </span>\r\n\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-event-group-card__meeting-toggle\"\r\n [attr.aria-expanded]=\"isMeetingListOpen\"\r\n [attr.aria-label]=\"constants.eventGroupCard.ariaLabel.meetingListToggle\"\r\n (click)=\"onToggleMeetingList()\"\r\n >\r\n <span>{{ meetingListToggleLabel }}</span>\r\n <i\r\n class=\"fa-solid\"\r\n [ngClass]=\"isMeetingListOpen ? 'fa-chevron-up' : 'fa-chevron-down'\"\r\n aria-hidden=\"true\"\r\n ></i>\r\n </button>\r\n </div>\r\n\r\n <!-- Expanded inner meeting list + per-event paginator. -->\r\n <div\r\n *ngIf=\"isMeetingListOpen\"\r\n class=\"ieeesa-event-group-card__meetings\"\r\n >\r\n <ieeesa-meeting-attendance-row\r\n *ngFor=\"let meeting of pagedMeetings; trackBy: trackByMeetingId\"\r\n [meeting]=\"meeting\"\r\n [attendanceState]=\"resolveAttendanceState(meeting)\"\r\n [isInFlight]=\"resolveIsInFlight(meeting)\"\r\n [permissions]=\"permissions\"\r\n (openMeeting)=\"onOpenMeeting($event)\"\r\n (logAttendance)=\"onLogAttendance($event)\"\r\n (leaveMeeting)=\"onLeaveMeeting($event)\"\r\n ></ieeesa-meeting-attendance-row>\r\n\r\n <div\r\n class=\"ieeesa-event-group-card__paginator\"\r\n [attr.aria-label]=\"constants.eventGroupCard.ariaLabel.meetingListToggle\"\r\n >\r\n <span class=\"ieeesa-event-group-card__paginator-range\">\r\n {{ rangeLabel }}\r\n </span>\r\n\r\n <mat-paginator\r\n class=\"ieeesa-event-group-card__paginator-control\"\r\n [pageIndex]=\"pageIndex\"\r\n [pageSize]=\"pageSize\"\r\n [length]=\"totalMeetings\"\r\n [hidePageSize]=\"true\"\r\n (page)=\"onPageChange($event)\"\r\n ></mat-paginator>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- ======================= STANDALONE MEETING ======================= -->\r\n <!-- Single horizontal row: badge+name+subtitle | MEETING DATE | TIME & TIMEZONE | action. -->\r\n <div *ngIf=\"isStandalone\" class=\"ieeesa-event-group-card__standalone\">\r\n <div class=\"ieeesa-event-group-card__standalone-main\">\r\n <span class=\"ieeesa-event-group-card__badge ieeesa-event-group-card__badge--standalone\">\r\n {{ constants.eventGroupCard.standaloneBadge }}\r\n </span>\r\n\r\n <div class=\"ieeesa-event-group-card__standalone-title-row\">\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-event-group-card__standalone-name\"\r\n [attr.aria-label]=\"constants.meetingRow.ariaLabel.meetingNameLink\"\r\n (click)=\"onOpenMeeting(event.eventId)\"\r\n >\r\n {{ event.title }}\r\n </button>\r\n <span\r\n *ngIf=\"event.status\"\r\n class=\"ieeesa-event-group-card__status-pill\"\r\n [ngClass]=\"'ieeesa-event-group-card__status-pill--' + statusModifier\"\r\n >\r\n <span class=\"ieeesa-event-group-card__status-dot\" aria-hidden=\"true\"></span>\r\n {{ event.status }}\r\n </span>\r\n </div>\r\n\r\n <p\r\n *ngIf=\"subtitleText\"\r\n class=\"ieeesa-event-group-card__standalone-subtitle\"\r\n >\r\n {{ subtitleText }}\r\n </p>\r\n </div>\r\n\r\n <!-- MEETING DATE column. -->\r\n <dl class=\"ieeesa-event-group-card__standalone-col\">\r\n <dt class=\"ieeesa-event-group-card__standalone-col-label\">\r\n {{ constants.eventGroupCard.meetingDateLabel }}\r\n </dt>\r\n <dd class=\"ieeesa-event-group-card__standalone-col-value\">\r\n {{ formattedStartDate }}<ng-container *ngIf=\"formattedEndDate && formattedEndDate !== formattedStartDate\">\r\n – {{ formattedEndDate }}</ng-container>\r\n </dd>\r\n </dl>\r\n\r\n <!-- TIME & TIMEZONE column. -->\r\n <dl class=\"ieeesa-event-group-card__standalone-col\">\r\n <dt class=\"ieeesa-event-group-card__standalone-col-label\">\r\n {{ constants.eventGroupCard.timeTimezoneLabel }}\r\n </dt>\r\n <dd class=\"ieeesa-event-group-card__standalone-col-value\">\r\n {{ standaloneTime }}\r\n </dd>\r\n </dl>\r\n\r\n <!-- Attendance action column. -->\r\n <div class=\"ieeesa-event-group-card__standalone-actions\">\r\n <span\r\n *ngIf=\"isStandaloneAttending\"\r\n class=\"ieeesa-event-group-card__attending-pill\"\r\n >\r\n <span class=\"ieeesa-event-group-card__status-dot\" aria-hidden=\"true\"></span>\r\n {{ constants.meetingRow.currentlyAttendingIndicator }}\r\n </span>\r\n\r\n <button\r\n *ngIf=\"showStandaloneLog\"\r\n type=\"button\"\r\n class=\"ieeesa-event-group-card__standalone-action ieeesa-event-group-card__standalone-action--log\"\r\n [disabled]=\"resolveIsInFlight(standaloneMeeting)\"\r\n [attr.aria-label]=\"constants.meetingRow.ariaLabel.logAttendance\"\r\n (click)=\"onLogAttendance(event.eventId)\"\r\n >\r\n {{ constants.meetingRow.logAttendanceLabel }}\r\n </button>\r\n\r\n <button\r\n *ngIf=\"showStandaloneLeave\"\r\n type=\"button\"\r\n class=\"ieeesa-event-group-card__standalone-action ieeesa-event-group-card__standalone-action--leave\"\r\n [disabled]=\"resolveIsInFlight(standaloneMeeting)\"\r\n [attr.aria-label]=\"constants.meetingRow.ariaLabel.leaveMeeting\"\r\n (click)=\"onLeaveMeeting(event.eventId)\"\r\n >\r\n {{ constants.meetingRow.leaveMeetingLabel }}\r\n </button>\r\n </div>\r\n </div>\r\n</article>\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-event-group-card{display:flex;flex-direction:column;gap:16px;padding:20px 24px;border:1px solid #d7d6d6;border-radius:8px;background-color:#fff;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026;font-family:Calibri Regular}.ieeesa-event-group-card__header{display:flex;align-items:flex-start;justify-content:space-between;gap:24px}.ieeesa-event-group-card__header-main{display:flex;flex-direction:column;gap:8px;min-width:0}.ieeesa-event-group-card__badge-row{display:flex;align-items:center;gap:12px}.ieeesa-event-group-card__badge{display:inline-flex;align-items:center;padding:4px 12px;border-radius:4px;font-family:Calibri Bold;font-size:.75rem;letter-spacing:.03125em;text-transform:uppercase;color:#00629b;background-color:#eaf3f9}.ieeesa-event-group-card__badge--standalone{color:#333436;background-color:#f0f0f0}.ieeesa-event-group-card__day-indicator{font-size:.875rem;line-height:18px;color:#333436}.ieeesa-event-group-card__title-row{display:flex;align-items:center;flex-wrap:wrap;gap:12px}.ieeesa-event-group-card__title{margin:0;font-family:Calibri Bold;font-size:1.25rem;line-height:24px;color:#333436}.ieeesa-event-group-card__status-pill{display:inline-flex;align-items:center;gap:6px;padding:2px 12px;border-radius:16px;font-size:.8125rem;color:#1a7f37;background-color:#e8f5ec}.ieeesa-event-group-card__status-pill--upcoming,.ieeesa-event-group-card__status-pill--starts-soon{color:#8a6d00;background-color:#fef7e0}.ieeesa-event-group-card__status-pill--upcoming .ieeesa-event-group-card__status-dot,.ieeesa-event-group-card__status-pill--starts-soon .ieeesa-event-group-card__status-dot{background-color:#e5a200}.ieeesa-event-group-card__status-dot{width:8px;height:8px;border-radius:50%;background-color:#1a7f37}.ieeesa-event-group-card__subtitle{margin:0;font-size:.875rem;line-height:18px;color:#333436}.ieeesa-event-group-card__header-side{display:flex;align-items:flex-start;gap:24px;flex-shrink:0}.ieeesa-event-group-card__dates-block{display:flex;flex-direction:column;gap:2px;margin:0;text-align:right}.ieeesa-event-group-card__dates-label{font-family:Calibri Bold;font-size:.75rem;letter-spacing:.03125em;text-transform:uppercase;color:#939094}.ieeesa-event-group-card__dates-value{margin:0;font-size:.875rem;line-height:18px;color:#333436}.ieeesa-event-group-card__timezone-value{margin:0;font-size:.8125rem;color:#939094}.ieeesa-event-group-card__view{flex-shrink:0;min-width:122px;padding:8px 16px;border:1px solid #00629b;border-radius:4px;background-color:#fff;font-size:.875rem;color:#00629b;cursor:pointer}.ieeesa-event-group-card__view:hover{background-color:#eaf3f9}.ieeesa-event-group-card__meetings-bar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;padding-top:16px;border-top:1px solid #d7d6d6}.ieeesa-event-group-card__meetings-open{display:inline-flex;align-items:center;gap:8px;font-size:.875rem;color:#333436}.ieeesa-event-group-card__meetings-dot{width:8px;height:8px;border-radius:50%;background-color:#1a7f37}.ieeesa-event-group-card__meeting-toggle{display:inline-flex;align-items:center;gap:8px;padding:8px 0;border:0;background:none;font-size:.875rem;color:#00629b;cursor:pointer}.ieeesa-event-group-card__meetings{display:flex;flex-direction:column;border:1px solid #d7d6d6;border-radius:8px;overflow:hidden}.ieeesa-event-group-card__paginator{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px;padding:12px 20px;border-top:1px solid #d7d6d6}.ieeesa-event-group-card__paginator-range{font-size:.8125rem;color:#939094}.ieeesa-event-group-card__standalone{display:grid;grid-template-columns:minmax(260px,2.4fr) minmax(130px,1fr) minmax(200px,1.3fr) auto;align-items:center;column-gap:24px}.ieeesa-event-group-card__standalone-main{display:flex;flex-direction:column;gap:6px;min-width:0}.ieeesa-event-group-card__standalone-title-row{display:flex;align-items:center;flex-wrap:wrap;gap:12px}.ieeesa-event-group-card__standalone-name{padding:0;border:0;background:none;text-align:left;text-decoration:underline;font-family:Calibri Bold;font-size:1rem;line-height:20px;color:#00629b;cursor:pointer}.ieeesa-event-group-card__standalone-subtitle{margin:0;font-size:.875rem;line-height:18px;color:#333436}.ieeesa-event-group-card__standalone-col{display:flex;flex-direction:column;gap:4px;margin:0;min-width:0}.ieeesa-event-group-card__standalone-col-label{font-family:Calibri Bold;font-size:.75rem;letter-spacing:.03125em;text-transform:uppercase;color:#939094}.ieeesa-event-group-card__standalone-col-value{margin:0;font-size:.875rem;line-height:18px;color:#333436}.ieeesa-event-group-card__standalone-actions{display:flex;align-items:center;justify-content:flex-end;gap:16px}.ieeesa-event-group-card__attending-pill{display:inline-flex;align-items:center;gap:6px;padding:4px 12px;border-radius:16px;white-space:nowrap;font-size:.8125rem;color:#1a7f37;background-color:#e8f5ec}.ieeesa-event-group-card__standalone-action{min-width:146px;padding:10px 16px;border-radius:4px;font-family:Calibri Bold;font-size:.875rem;cursor:pointer}.ieeesa-event-group-card__standalone-action--log{border:1px solid #00629b;background-color:#00629b;color:#fff}.ieeesa-event-group-card__standalone-action--leave{border:1px solid #00629b;background-color:#fff;color:#00629b}.ieeesa-event-group-card__standalone-action:disabled{border-color:#939094;background-color:#939094;color:#fff;cursor:default}.ieeesa-event-group-card--mobile{padding:16px}.ieeesa-event-group-card--mobile .ieeesa-event-group-card__header{flex-direction:column;align-items:stretch}.ieeesa-event-group-card--mobile .ieeesa-event-group-card__header-side{flex-direction:column;align-items:stretch;gap:12px}.ieeesa-event-group-card--mobile .ieeesa-event-group-card__dates-block{text-align:left}.ieeesa-event-group-card--mobile .ieeesa-event-group-card__view{align-self:stretch;width:100%}.ieeesa-event-group-card--mobile .ieeesa-event-group-card__paginator{flex-direction:column;align-items:stretch}.ieeesa-event-group-card--mobile .ieeesa-event-group-card__standalone{grid-template-columns:1fr;row-gap:12px}.ieeesa-event-group-card--mobile .ieeesa-event-group-card__standalone-actions{justify-content:flex-start}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatPaginatorModule }, { kind: "component", type: i2.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }, { kind: "component", type: MeetingAttendanceRowComponent, selector: "ieeesa-meeting-attendance-row", inputs: ["meeting", "attendanceState", "isInFlight", "permissions", "compact"], outputs: ["openMeeting", "logAttendance", "leaveMeeting"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
1083
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: EventGroupCardComponent, isStandalone: true, selector: "ieeesa-event-group-card", inputs: { event: "event", permissions: "permissions", attendanceStates: "attendanceStates", inFlightMeetingIds: "inFlightMeetingIds", isMobileView: "isMobileView" }, outputs: { viewEvent: "viewEvent", openMeeting: "openMeeting", logAttendance: "logAttendance", leaveMeeting: "leaveMeeting", pageChange: "pageChange", loadMeetings: "loadMeetings", navigateToMeeting: "navigateToMeeting" }, ngImport: i0, template: "<article\r\n class=\"ieeesa-event-group-card\"\r\n [class.ieeesa-event-group-card--mobile]=\"isMobileView\"\r\n [class.ieeesa-event-group-card--standalone]=\"isStandalone\"\r\n>\r\n <!-- ============================ EVENT ============================ -->\r\n <ng-container *ngIf=\"!isStandalone\">\r\n <header class=\"ieeesa-event-group-card__header\">\r\n <div class=\"ieeesa-event-group-card__header-main\">\r\n <!-- EVENT badge + day indicator. -->\r\n <div class=\"ieeesa-event-group-card__badge-row\">\r\n <span class=\"ieeesa-event-group-card__badge\">\r\n {{ constants.eventGroupCard.eventBadge }}\r\n </span>\r\n <span\r\n *ngIf=\"event.dayIndicator\"\r\n class=\"ieeesa-event-group-card__day-indicator\"\r\n >\r\n {{ event.dayIndicator }}\r\n </span>\r\n </div>\r\n\r\n <div class=\"ieeesa-event-group-card__title-row\">\r\n <h3 class=\"ieeesa-event-group-card__title\">{{ event.title }}</h3>\r\n <span\r\n *ngIf=\"event.status\"\r\n class=\"ieeesa-event-group-card__status-pill\"\r\n [ngClass]=\"'ieeesa-event-group-card__status-pill--' + statusModifier\"\r\n >\r\n {{ event.status }}\r\n </span>\r\n </div>\r\n\r\n <p\r\n *ngIf=\"subtitleText\"\r\n class=\"ieeesa-event-group-card__subtitle\"\r\n >\r\n {{ subtitleText }}\r\n </p>\r\n </div>\r\n\r\n <div class=\"ieeesa-event-group-card__header-side\">\r\n <dl class=\"ieeesa-event-group-card__dates-block\">\r\n <dt class=\"ieeesa-event-group-card__dates-label\">\r\n {{ constants.eventGroupCard.eventDatesLabel }}\r\n </dt>\r\n <dd class=\"ieeesa-event-group-card__dates-line\">\r\n <span class=\"ieeesa-event-group-card__dates-value\">\r\n {{ formattedStartDate }}<ng-container *ngIf=\"formattedEndDate && formattedEndDate !== formattedStartDate\">\r\n – {{ formattedEndDate }}</ng-container>\r\n </span>\r\n <span\r\n *ngIf=\"event.timezone\"\r\n class=\"ieeesa-event-group-card__timezone-value\"\r\n >\r\n ({{ event.timezone }})\r\n </span>\r\n </dd>\r\n </dl>\r\n\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-event-group-card__view\"\r\n [attr.aria-label]=\"constants.eventGroupCard.ariaLabel.viewEvent\"\r\n (click)=\"onViewEvent()\"\r\n >\r\n {{ constants.eventGroupCard.viewEventLabel }}\r\n </button>\r\n </div>\r\n </header>\r\n\r\n <!-- Meetings bar: \"Meetings\" label (left), open-for-attendance count +\r\n Show/Hide toggle (right), matching the Figma layout. -->\r\n <div class=\"ieeesa-event-group-card__meetings-bar\">\r\n <span class=\"ieeesa-event-group-card__meetings-label\">\r\n {{ constants.eventGroupCard.meetingsLabel }}\r\n </span>\r\n\r\n <div class=\"ieeesa-event-group-card__meetings-bar-right\">\r\n <span class=\"ieeesa-event-group-card__meetings-open\">\r\n <span class=\"ieeesa-event-group-card__meetings-dot\" aria-hidden=\"true\"></span>\r\n {{ openForAttendanceSummary }}\r\n </span>\r\n\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-event-group-card__meeting-toggle\"\r\n [attr.aria-expanded]=\"isMeetingListOpen\"\r\n [attr.aria-label]=\"constants.eventGroupCard.ariaLabel.meetingListToggle\"\r\n (click)=\"onToggleMeetingList()\"\r\n >\r\n <span>{{ meetingListToggleLabel }}</span>\r\n <i\r\n class=\"fa-solid\"\r\n [ngClass]=\"isMeetingListOpen ? 'fa-chevron-up' : 'fa-chevron-down'\"\r\n aria-hidden=\"true\"\r\n ></i>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <!-- Expanded inner meeting list + per-event paginator. -->\r\n <div\r\n *ngIf=\"isMeetingListOpen\"\r\n class=\"ieeesa-event-group-card__meetings\"\r\n >\r\n <ieeesa-meeting-attendance-row\r\n *ngFor=\"let meeting of pagedMeetings; trackBy: trackByMeetingId\"\r\n [meeting]=\"meeting\"\r\n [attendanceState]=\"resolveAttendanceState(meeting)\"\r\n [isInFlight]=\"resolveIsInFlight(meeting)\"\r\n [permissions]=\"permissions\"\r\n (openMeeting)=\"onOpenMeeting($event)\"\r\n (logAttendance)=\"onLogAttendance($event)\"\r\n (leaveMeeting)=\"onLeaveMeeting($event)\"\r\n (navigateToMeeting)=\"onNavigateToMeeting($event)\"\r\n ></ieeesa-meeting-attendance-row>\r\n\r\n <div\r\n class=\"ieeesa-event-group-card__paginator\"\r\n [attr.aria-label]=\"constants.eventGroupCard.ariaLabel.meetingListToggle\"\r\n >\r\n <mat-paginator\r\n class=\"ieeesa-event-group-card__paginator-control\"\r\n [pageIndex]=\"pageIndex\"\r\n [pageSize]=\"pageSize\"\r\n [pageSizeOptions]=\"pageSizeOptions\"\r\n [length]=\"totalMeetings\"\r\n (page)=\"onPageChange($event)\"\r\n ></mat-paginator>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- ======================= STANDALONE MEETING ======================= -->\r\n <!-- Single horizontal row: badge+name+subtitle | MEETING DATE | TIME & TIMEZONE | action. -->\r\n <div *ngIf=\"isStandalone\" class=\"ieeesa-event-group-card__standalone\">\r\n <div class=\"ieeesa-event-group-card__standalone-main\">\r\n <span class=\"ieeesa-event-group-card__badge ieeesa-event-group-card__badge--standalone\">\r\n {{ constants.eventGroupCard.standaloneBadge }}\r\n </span>\r\n\r\n <div class=\"ieeesa-event-group-card__standalone-title-row\">\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-event-group-card__standalone-name\"\r\n [attr.aria-label]=\"constants.meetingRow.ariaLabel.meetingNameLink\"\r\n (click)=\"onOpenStandalone()\"\r\n >\r\n {{ event.title }}\r\n </button>\r\n <span\r\n *ngIf=\"event.status\"\r\n class=\"ieeesa-event-group-card__status-pill\"\r\n [ngClass]=\"'ieeesa-event-group-card__status-pill--' + statusModifier\"\r\n >\r\n {{ event.status }}\r\n </span>\r\n </div>\r\n\r\n <p\r\n *ngIf=\"subtitleText\"\r\n class=\"ieeesa-event-group-card__standalone-subtitle\"\r\n >\r\n {{ subtitleText }}\r\n </p>\r\n </div>\r\n\r\n <!-- MEETING DATE column. -->\r\n <dl class=\"ieeesa-event-group-card__standalone-col\">\r\n <dt class=\"ieeesa-event-group-card__standalone-col-label\">\r\n {{ constants.eventGroupCard.meetingDateLabel }}\r\n </dt>\r\n <dd class=\"ieeesa-event-group-card__standalone-col-value\">\r\n {{ formattedStartDate }}<ng-container *ngIf=\"formattedEndDate && formattedEndDate !== formattedStartDate\">\r\n – {{ formattedEndDate }}</ng-container>\r\n </dd>\r\n </dl>\r\n\r\n <!-- TIME & TIMEZONE column. -->\r\n <dl class=\"ieeesa-event-group-card__standalone-col\">\r\n <dt class=\"ieeesa-event-group-card__standalone-col-label\">\r\n {{ constants.eventGroupCard.timeTimezoneLabel }}\r\n </dt>\r\n <dd class=\"ieeesa-event-group-card__standalone-col-value\">\r\n {{ standaloneTime }}\r\n </dd>\r\n </dl>\r\n\r\n <!-- Attendance action column. Shown only for attendance-eligible meetings. -->\r\n <div\r\n *ngIf=\"isStandaloneEligible\"\r\n class=\"ieeesa-event-group-card__standalone-actions\"\r\n >\r\n <span class=\"ieeesa-event-group-card__attending-slot\">\r\n <span\r\n *ngIf=\"isStandaloneAttending\"\r\n class=\"ieeesa-event-group-card__attending-pill\"\r\n >\r\n <span class=\"ieeesa-event-group-card__status-dot\" aria-hidden=\"true\"></span>\r\n {{ constants.meetingRow.currentlyAttendingIndicator }}\r\n </span>\r\n </span>\r\n\r\n <button\r\n *ngIf=\"!isStandaloneAttending\"\r\n type=\"button\"\r\n class=\"ieeesa-event-group-card__standalone-action ieeesa-event-group-card__standalone-action--log\"\r\n [class.ieeesa-event-group-card__standalone-action--inactive]=\"isStandaloneLogDisabled\"\r\n [disabled]=\"isStandaloneLogDisabled\"\r\n [attr.title]=\"isStandaloneLogDisabled ? inactiveMessage : null\"\r\n [attr.aria-label]=\"constants.meetingRow.ariaLabel.logAttendance\"\r\n (click)=\"onNavigateToStandalone()\"\r\n >\r\n {{ constants.meetingRow.logAttendanceLabel }}\r\n </button>\r\n\r\n <button\r\n *ngIf=\"isStandaloneAttending\"\r\n type=\"button\"\r\n class=\"ieeesa-event-group-card__standalone-action ieeesa-event-group-card__standalone-action--leave\"\r\n [attr.aria-label]=\"constants.meetingRow.ariaLabel.leaveMeeting\"\r\n (click)=\"onNavigateToStandalone()\"\r\n >\r\n {{ constants.meetingRow.leaveMeetingLabel }}\r\n </button>\r\n </div>\r\n </div>\r\n</article>\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-event-group-card{display:flex;flex-direction:column;border:1px solid #e2e8f0;border-radius:2px;overflow:hidden;background-color:#f8fafc;font-family:Calibri Regular}.ieeesa-event-group-card__header{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:20px 24px;border-bottom:1px solid #e2e8f0;background-color:#f8fafc}.ieeesa-event-group-card__header-main{display:flex;flex-direction:column;gap:4px;min-width:0}.ieeesa-event-group-card__badge-row{display:flex;align-items:center;gap:8px}.ieeesa-event-group-card__badge{display:inline-flex;align-items:center;align-self:flex-start;width:-moz-fit-content;width:fit-content;padding:2px 6px;border-radius:4px;font-family:Calibri Bold;font-size:10px;font-weight:700;letter-spacing:.03125em;text-transform:uppercase;color:#fff;background-color:#3b82f6}.ieeesa-event-group-card__badge--standalone{align-self:flex-start;width:-moz-fit-content;width:fit-content;padding:2px 6px;border-radius:3px;font-size:10px;letter-spacing:.25px;color:#53616a;background-color:#edf1f3}.ieeesa-event-group-card__day-indicator{font-size:.875rem;line-height:18px;color:#333436}.ieeesa-event-group-card__title-row{display:flex;align-items:center;flex-wrap:wrap;gap:12px}.ieeesa-event-group-card__title{margin:0;font-family:Calibri Bold;font-size:1rem;line-height:20px;color:#0f172a}.ieeesa-event-group-card__status-pill{display:inline-flex;align-items:center;padding:2px 16px;border-radius:23px;font-size:.75rem;line-height:16px;color:#fff;background-color:#4caf50}.ieeesa-event-group-card__status-pill--upcoming,.ieeesa-event-group-card__status-pill--starts-soon{color:#8a6d00;background-color:#fef7e0}.ieeesa-event-group-card__subtitle{margin:0;font-size:.75rem;line-height:16px;color:#64748b}.ieeesa-event-group-card__header-side{display:flex;align-items:center;gap:24px;flex-shrink:0}.ieeesa-event-group-card__dates-block{display:flex;flex-direction:column;align-items:flex-start;gap:4px;margin:0;text-align:left}.ieeesa-event-group-card__dates-label{font-family:Calibri Bold;font-size:.75rem;letter-spacing:.03125em;text-transform:uppercase;color:#64748b}.ieeesa-event-group-card__dates-line{display:flex;align-items:baseline;flex-wrap:wrap;gap:6px;margin:0}.ieeesa-event-group-card__dates-value{font-family:Calibri Bold;font-size:.875rem;line-height:18px;color:#0f172a}.ieeesa-event-group-card__timezone-value{font-size:.875rem;line-height:18px;color:#333436}.ieeesa-event-group-card__view{flex-shrink:0;padding:10px 24px;border:1px solid #878b8f;border-radius:3px;background-color:#f3f8fd;font-family:Calibri Bold;font-size:1rem;color:#0f172a;cursor:pointer}.ieeesa-event-group-card__view:hover{background-color:#eaf3f9}.ieeesa-event-group-card__meetings-bar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;padding:12px 24px 0 32px;background-color:#f8fafc}.ieeesa-event-group-card__meetings-label{font-family:Calibri Bold;font-size:.875rem;color:#0f172a}.ieeesa-event-group-card__meetings-bar-right{display:flex;align-items:center;gap:16px}.ieeesa-event-group-card__meetings-open{display:inline-flex;align-items:center;gap:6px;font-family:Calibri Bold;font-size:.75rem;color:#15803d}.ieeesa-event-group-card__meetings-dot{width:8px;height:8px;border-radius:50%;background-color:#15803d}.ieeesa-event-group-card__meeting-toggle{display:inline-flex;align-items:center;gap:8px;padding:4px 0;border:0;background:none;font-family:Calibri Bold;font-size:.875rem;color:#00629b;cursor:pointer}.ieeesa-event-group-card__meetings{display:flex;flex-direction:column;margin:16px 24px 16px 32px;border:1px solid #e2e8f0;border-radius:2px;overflow:hidden;background-color:#fff}.ieeesa-event-group-card__paginator{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:8px;padding:12px 24px;background-color:#f8fafc}.ieeesa-event-group-card__paginator-range{font-size:.875rem;color:#64748b}.ieeesa-event-group-card__standalone{display:grid;grid-template-columns:minmax(260px,2.4fr) minmax(130px,1fr) minmax(200px,1.3fr) auto;align-items:center;column-gap:24px;min-height:72px;padding:8px 16px;background-color:#fff}.ieeesa-event-group-card__standalone-main{display:flex;flex-direction:column;gap:6px;min-width:0}.ieeesa-event-group-card__standalone-title-row{display:flex;align-items:center;flex-wrap:wrap;gap:12px}.ieeesa-event-group-card__standalone-name{padding:0;border:0;background:none;text-align:left;text-decoration:underline;font-family:Calibri Bold;font-size:.875rem;line-height:18px;color:#00629b;cursor:pointer}.ieeesa-event-group-card__standalone-name:hover{color:#004872}.ieeesa-event-group-card__standalone-subtitle{margin:0;font-size:.875rem;line-height:18px;color:#333436}.ieeesa-event-group-card__standalone-col{display:flex;flex-direction:column;gap:2px;margin:0;min-width:0}.ieeesa-event-group-card__standalone-col-label{font-family:Calibri Bold;font-size:.75rem;letter-spacing:.03125em;text-transform:uppercase;color:#64748b}.ieeesa-event-group-card__standalone-col-value{margin:0;font-size:.875rem;line-height:18px;color:#0f172a}.ieeesa-event-group-card__standalone-actions{display:flex;align-items:center;justify-content:flex-end;gap:16px}.ieeesa-event-group-card__attending-slot{display:inline-flex;align-items:center;justify-content:flex-end;width:150px;flex-shrink:0}.ieeesa-event-group-card__attending-pill{display:inline-flex;align-items:center;gap:6px;padding:4px 12px;border-radius:16px;white-space:nowrap;font-size:.8125rem;color:#15803d;background-color:#e8f5ec}.ieeesa-event-group-card__standalone-action{min-width:146px;padding:10px 24px;border-radius:3px;font-family:Calibri Bold;font-size:1rem;cursor:pointer}.ieeesa-event-group-card__standalone-action--log{border:1px solid #00629b;background-color:#00629b;color:#fff;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026}.ieeesa-event-group-card__standalone-action--leave{border:1px solid #00629b;background-color:#fff;color:#00629b}.ieeesa-event-group-card__standalone-action:disabled,.ieeesa-event-group-card__standalone-action--inactive{border-color:#e2e8f0;background-color:#f4f5f7;color:#939094;box-shadow:none;cursor:not-allowed}.ieeesa-event-group-card--standalone{border-color:#dbe2eb}.ieeesa-event-group-card--mobile .ieeesa-event-group-card__header{flex-direction:column;align-items:stretch}.ieeesa-event-group-card--mobile .ieeesa-event-group-card__header-side{flex-direction:column;align-items:stretch;gap:12px}.ieeesa-event-group-card--mobile .ieeesa-event-group-card__view{align-self:stretch;width:100%}.ieeesa-event-group-card--mobile .ieeesa-event-group-card__paginator{flex-direction:column;align-items:stretch}.ieeesa-event-group-card--mobile .ieeesa-event-group-card__standalone{grid-template-columns:1fr;row-gap:12px}.ieeesa-event-group-card--mobile .ieeesa-event-group-card__standalone-actions{justify-content:flex-start}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatPaginatorModule }, { kind: "component", type: i2.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }, { kind: "component", type: MeetingAttendanceRowComponent, selector: "ieeesa-meeting-attendance-row", inputs: ["meeting", "attendanceState", "isInFlight", "permissions", "compact"], outputs: ["openMeeting", "logAttendance", "leaveMeeting", "navigateToMeeting"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
962
1084
|
}
|
|
963
1085
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EventGroupCardComponent, decorators: [{
|
|
964
1086
|
type: Component,
|
|
965
|
-
args: [{ selector: 'ieeesa-event-group-card', standalone: true, imports: [CommonModule, MatPaginatorModule, MeetingAttendanceRowComponent], encapsulation: ViewEncapsulation.None, template: "<article\r\n class=\"ieeesa-event-group-card\"\r\n [class.ieeesa-event-group-card--mobile]=\"isMobileView\"\r\n [class.ieeesa-event-group-card--standalone]=\"isStandalone\"\r\n>\r\n <!-- ============================ EVENT ============================ -->\r\n <ng-container *ngIf=\"!isStandalone\">\r\n <header class=\"ieeesa-event-group-card__header\">\r\n <div class=\"ieeesa-event-group-card__header-main\">\r\n <!-- EVENT badge + day indicator. -->\r\n <div class=\"ieeesa-event-group-card__badge-row\">\r\n <span class=\"ieeesa-event-group-card__badge\">\r\n {{ constants.eventGroupCard.eventBadge }}\r\n </span>\r\n <span\r\n *ngIf=\"event.dayIndicator\"\r\n class=\"ieeesa-event-group-card__day-indicator\"\r\n >\r\n {{ event.dayIndicator }}\r\n </span>\r\n </div>\r\n\r\n <div class=\"ieeesa-event-group-card__title-row\">\r\n <h3 class=\"ieeesa-event-group-card__title\">{{ event.title }}</h3>\r\n <span\r\n *ngIf=\"event.status\"\r\n class=\"ieeesa-event-group-card__status-pill\"\r\n [ngClass]=\"'ieeesa-event-group-card__status-pill--' + statusModifier\"\r\n >\r\n <span class=\"ieeesa-event-group-card__status-dot\" aria-hidden=\"true\"></span>\r\n {{ event.status }}\r\n </span>\r\n </div>\r\n\r\n <p\r\n *ngIf=\"subtitleText\"\r\n class=\"ieeesa-event-group-card__subtitle\"\r\n >\r\n {{ subtitleText }}\r\n </p>\r\n </div>\r\n\r\n <div class=\"ieeesa-event-group-card__header-side\">\r\n <dl class=\"ieeesa-event-group-card__dates-block\">\r\n <dt class=\"ieeesa-event-group-card__dates-label\">\r\n {{ constants.eventGroupCard.eventDatesLabel }}\r\n </dt>\r\n <dd class=\"ieeesa-event-group-card__dates-value\">\r\n {{ formattedStartDate }}<ng-container *ngIf=\"formattedEndDate && formattedEndDate !== formattedStartDate\">\r\n – {{ formattedEndDate }}</ng-container>\r\n </dd>\r\n <dd\r\n *ngIf=\"event.timezone\"\r\n class=\"ieeesa-event-group-card__timezone-value\"\r\n >\r\n {{ event.timezone }}\r\n </dd>\r\n </dl>\r\n\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-event-group-card__view\"\r\n [attr.aria-label]=\"constants.eventGroupCard.ariaLabel.viewEvent\"\r\n (click)=\"onViewEvent()\"\r\n >\r\n {{ constants.eventGroupCard.viewEventLabel }}\r\n </button>\r\n </div>\r\n </header>\r\n\r\n <!-- Meetings label row + Show/Hide toggle. -->\r\n <div class=\"ieeesa-event-group-card__meetings-bar\">\r\n <span class=\"ieeesa-event-group-card__meetings-open\">\r\n <span class=\"ieeesa-event-group-card__meetings-dot\" aria-hidden=\"true\"></span>\r\n {{ openForAttendanceSummary }}\r\n </span>\r\n\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-event-group-card__meeting-toggle\"\r\n [attr.aria-expanded]=\"isMeetingListOpen\"\r\n [attr.aria-label]=\"constants.eventGroupCard.ariaLabel.meetingListToggle\"\r\n (click)=\"onToggleMeetingList()\"\r\n >\r\n <span>{{ meetingListToggleLabel }}</span>\r\n <i\r\n class=\"fa-solid\"\r\n [ngClass]=\"isMeetingListOpen ? 'fa-chevron-up' : 'fa-chevron-down'\"\r\n aria-hidden=\"true\"\r\n ></i>\r\n </button>\r\n </div>\r\n\r\n <!-- Expanded inner meeting list + per-event paginator. -->\r\n <div\r\n *ngIf=\"isMeetingListOpen\"\r\n class=\"ieeesa-event-group-card__meetings\"\r\n >\r\n <ieeesa-meeting-attendance-row\r\n *ngFor=\"let meeting of pagedMeetings; trackBy: trackByMeetingId\"\r\n [meeting]=\"meeting\"\r\n [attendanceState]=\"resolveAttendanceState(meeting)\"\r\n [isInFlight]=\"resolveIsInFlight(meeting)\"\r\n [permissions]=\"permissions\"\r\n (openMeeting)=\"onOpenMeeting($event)\"\r\n (logAttendance)=\"onLogAttendance($event)\"\r\n (leaveMeeting)=\"onLeaveMeeting($event)\"\r\n ></ieeesa-meeting-attendance-row>\r\n\r\n <div\r\n class=\"ieeesa-event-group-card__paginator\"\r\n [attr.aria-label]=\"constants.eventGroupCard.ariaLabel.meetingListToggle\"\r\n >\r\n <span class=\"ieeesa-event-group-card__paginator-range\">\r\n {{ rangeLabel }}\r\n </span>\r\n\r\n <mat-paginator\r\n class=\"ieeesa-event-group-card__paginator-control\"\r\n [pageIndex]=\"pageIndex\"\r\n [pageSize]=\"pageSize\"\r\n [length]=\"totalMeetings\"\r\n [hidePageSize]=\"true\"\r\n (page)=\"onPageChange($event)\"\r\n ></mat-paginator>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- ======================= STANDALONE MEETING ======================= -->\r\n <!-- Single horizontal row: badge+name+subtitle | MEETING DATE | TIME & TIMEZONE | action. -->\r\n <div *ngIf=\"isStandalone\" class=\"ieeesa-event-group-card__standalone\">\r\n <div class=\"ieeesa-event-group-card__standalone-main\">\r\n <span class=\"ieeesa-event-group-card__badge ieeesa-event-group-card__badge--standalone\">\r\n {{ constants.eventGroupCard.standaloneBadge }}\r\n </span>\r\n\r\n <div class=\"ieeesa-event-group-card__standalone-title-row\">\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-event-group-card__standalone-name\"\r\n [attr.aria-label]=\"constants.meetingRow.ariaLabel.meetingNameLink\"\r\n (click)=\"onOpenMeeting(event.eventId)\"\r\n >\r\n {{ event.title }}\r\n </button>\r\n <span\r\n *ngIf=\"event.status\"\r\n class=\"ieeesa-event-group-card__status-pill\"\r\n [ngClass]=\"'ieeesa-event-group-card__status-pill--' + statusModifier\"\r\n >\r\n <span class=\"ieeesa-event-group-card__status-dot\" aria-hidden=\"true\"></span>\r\n {{ event.status }}\r\n </span>\r\n </div>\r\n\r\n <p\r\n *ngIf=\"subtitleText\"\r\n class=\"ieeesa-event-group-card__standalone-subtitle\"\r\n >\r\n {{ subtitleText }}\r\n </p>\r\n </div>\r\n\r\n <!-- MEETING DATE column. -->\r\n <dl class=\"ieeesa-event-group-card__standalone-col\">\r\n <dt class=\"ieeesa-event-group-card__standalone-col-label\">\r\n {{ constants.eventGroupCard.meetingDateLabel }}\r\n </dt>\r\n <dd class=\"ieeesa-event-group-card__standalone-col-value\">\r\n {{ formattedStartDate }}<ng-container *ngIf=\"formattedEndDate && formattedEndDate !== formattedStartDate\">\r\n – {{ formattedEndDate }}</ng-container>\r\n </dd>\r\n </dl>\r\n\r\n <!-- TIME & TIMEZONE column. -->\r\n <dl class=\"ieeesa-event-group-card__standalone-col\">\r\n <dt class=\"ieeesa-event-group-card__standalone-col-label\">\r\n {{ constants.eventGroupCard.timeTimezoneLabel }}\r\n </dt>\r\n <dd class=\"ieeesa-event-group-card__standalone-col-value\">\r\n {{ standaloneTime }}\r\n </dd>\r\n </dl>\r\n\r\n <!-- Attendance action column. -->\r\n <div class=\"ieeesa-event-group-card__standalone-actions\">\r\n <span\r\n *ngIf=\"isStandaloneAttending\"\r\n class=\"ieeesa-event-group-card__attending-pill\"\r\n >\r\n <span class=\"ieeesa-event-group-card__status-dot\" aria-hidden=\"true\"></span>\r\n {{ constants.meetingRow.currentlyAttendingIndicator }}\r\n </span>\r\n\r\n <button\r\n *ngIf=\"showStandaloneLog\"\r\n type=\"button\"\r\n class=\"ieeesa-event-group-card__standalone-action ieeesa-event-group-card__standalone-action--log\"\r\n [disabled]=\"resolveIsInFlight(standaloneMeeting)\"\r\n [attr.aria-label]=\"constants.meetingRow.ariaLabel.logAttendance\"\r\n (click)=\"onLogAttendance(event.eventId)\"\r\n >\r\n {{ constants.meetingRow.logAttendanceLabel }}\r\n </button>\r\n\r\n <button\r\n *ngIf=\"showStandaloneLeave\"\r\n type=\"button\"\r\n class=\"ieeesa-event-group-card__standalone-action ieeesa-event-group-card__standalone-action--leave\"\r\n [disabled]=\"resolveIsInFlight(standaloneMeeting)\"\r\n [attr.aria-label]=\"constants.meetingRow.ariaLabel.leaveMeeting\"\r\n (click)=\"onLeaveMeeting(event.eventId)\"\r\n >\r\n {{ constants.meetingRow.leaveMeetingLabel }}\r\n </button>\r\n </div>\r\n </div>\r\n</article>\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-event-group-card{display:flex;flex-direction:column;gap:16px;padding:20px 24px;border:1px solid #d7d6d6;border-radius:8px;background-color:#fff;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026;font-family:Calibri Regular}.ieeesa-event-group-card__header{display:flex;align-items:flex-start;justify-content:space-between;gap:24px}.ieeesa-event-group-card__header-main{display:flex;flex-direction:column;gap:8px;min-width:0}.ieeesa-event-group-card__badge-row{display:flex;align-items:center;gap:12px}.ieeesa-event-group-card__badge{display:inline-flex;align-items:center;padding:4px 12px;border-radius:4px;font-family:Calibri Bold;font-size:.75rem;letter-spacing:.03125em;text-transform:uppercase;color:#00629b;background-color:#eaf3f9}.ieeesa-event-group-card__badge--standalone{color:#333436;background-color:#f0f0f0}.ieeesa-event-group-card__day-indicator{font-size:.875rem;line-height:18px;color:#333436}.ieeesa-event-group-card__title-row{display:flex;align-items:center;flex-wrap:wrap;gap:12px}.ieeesa-event-group-card__title{margin:0;font-family:Calibri Bold;font-size:1.25rem;line-height:24px;color:#333436}.ieeesa-event-group-card__status-pill{display:inline-flex;align-items:center;gap:6px;padding:2px 12px;border-radius:16px;font-size:.8125rem;color:#1a7f37;background-color:#e8f5ec}.ieeesa-event-group-card__status-pill--upcoming,.ieeesa-event-group-card__status-pill--starts-soon{color:#8a6d00;background-color:#fef7e0}.ieeesa-event-group-card__status-pill--upcoming .ieeesa-event-group-card__status-dot,.ieeesa-event-group-card__status-pill--starts-soon .ieeesa-event-group-card__status-dot{background-color:#e5a200}.ieeesa-event-group-card__status-dot{width:8px;height:8px;border-radius:50%;background-color:#1a7f37}.ieeesa-event-group-card__subtitle{margin:0;font-size:.875rem;line-height:18px;color:#333436}.ieeesa-event-group-card__header-side{display:flex;align-items:flex-start;gap:24px;flex-shrink:0}.ieeesa-event-group-card__dates-block{display:flex;flex-direction:column;gap:2px;margin:0;text-align:right}.ieeesa-event-group-card__dates-label{font-family:Calibri Bold;font-size:.75rem;letter-spacing:.03125em;text-transform:uppercase;color:#939094}.ieeesa-event-group-card__dates-value{margin:0;font-size:.875rem;line-height:18px;color:#333436}.ieeesa-event-group-card__timezone-value{margin:0;font-size:.8125rem;color:#939094}.ieeesa-event-group-card__view{flex-shrink:0;min-width:122px;padding:8px 16px;border:1px solid #00629b;border-radius:4px;background-color:#fff;font-size:.875rem;color:#00629b;cursor:pointer}.ieeesa-event-group-card__view:hover{background-color:#eaf3f9}.ieeesa-event-group-card__meetings-bar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;padding-top:16px;border-top:1px solid #d7d6d6}.ieeesa-event-group-card__meetings-open{display:inline-flex;align-items:center;gap:8px;font-size:.875rem;color:#333436}.ieeesa-event-group-card__meetings-dot{width:8px;height:8px;border-radius:50%;background-color:#1a7f37}.ieeesa-event-group-card__meeting-toggle{display:inline-flex;align-items:center;gap:8px;padding:8px 0;border:0;background:none;font-size:.875rem;color:#00629b;cursor:pointer}.ieeesa-event-group-card__meetings{display:flex;flex-direction:column;border:1px solid #d7d6d6;border-radius:8px;overflow:hidden}.ieeesa-event-group-card__paginator{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px;padding:12px 20px;border-top:1px solid #d7d6d6}.ieeesa-event-group-card__paginator-range{font-size:.8125rem;color:#939094}.ieeesa-event-group-card__standalone{display:grid;grid-template-columns:minmax(260px,2.4fr) minmax(130px,1fr) minmax(200px,1.3fr) auto;align-items:center;column-gap:24px}.ieeesa-event-group-card__standalone-main{display:flex;flex-direction:column;gap:6px;min-width:0}.ieeesa-event-group-card__standalone-title-row{display:flex;align-items:center;flex-wrap:wrap;gap:12px}.ieeesa-event-group-card__standalone-name{padding:0;border:0;background:none;text-align:left;text-decoration:underline;font-family:Calibri Bold;font-size:1rem;line-height:20px;color:#00629b;cursor:pointer}.ieeesa-event-group-card__standalone-subtitle{margin:0;font-size:.875rem;line-height:18px;color:#333436}.ieeesa-event-group-card__standalone-col{display:flex;flex-direction:column;gap:4px;margin:0;min-width:0}.ieeesa-event-group-card__standalone-col-label{font-family:Calibri Bold;font-size:.75rem;letter-spacing:.03125em;text-transform:uppercase;color:#939094}.ieeesa-event-group-card__standalone-col-value{margin:0;font-size:.875rem;line-height:18px;color:#333436}.ieeesa-event-group-card__standalone-actions{display:flex;align-items:center;justify-content:flex-end;gap:16px}.ieeesa-event-group-card__attending-pill{display:inline-flex;align-items:center;gap:6px;padding:4px 12px;border-radius:16px;white-space:nowrap;font-size:.8125rem;color:#1a7f37;background-color:#e8f5ec}.ieeesa-event-group-card__standalone-action{min-width:146px;padding:10px 16px;border-radius:4px;font-family:Calibri Bold;font-size:.875rem;cursor:pointer}.ieeesa-event-group-card__standalone-action--log{border:1px solid #00629b;background-color:#00629b;color:#fff}.ieeesa-event-group-card__standalone-action--leave{border:1px solid #00629b;background-color:#fff;color:#00629b}.ieeesa-event-group-card__standalone-action:disabled{border-color:#939094;background-color:#939094;color:#fff;cursor:default}.ieeesa-event-group-card--mobile{padding:16px}.ieeesa-event-group-card--mobile .ieeesa-event-group-card__header{flex-direction:column;align-items:stretch}.ieeesa-event-group-card--mobile .ieeesa-event-group-card__header-side{flex-direction:column;align-items:stretch;gap:12px}.ieeesa-event-group-card--mobile .ieeesa-event-group-card__dates-block{text-align:left}.ieeesa-event-group-card--mobile .ieeesa-event-group-card__view{align-self:stretch;width:100%}.ieeesa-event-group-card--mobile .ieeesa-event-group-card__paginator{flex-direction:column;align-items:stretch}.ieeesa-event-group-card--mobile .ieeesa-event-group-card__standalone{grid-template-columns:1fr;row-gap:12px}.ieeesa-event-group-card--mobile .ieeesa-event-group-card__standalone-actions{justify-content:flex-start}\n"] }]
|
|
1087
|
+
args: [{ selector: 'ieeesa-event-group-card', standalone: true, imports: [CommonModule, MatPaginatorModule, MeetingAttendanceRowComponent], encapsulation: ViewEncapsulation.None, template: "<article\r\n class=\"ieeesa-event-group-card\"\r\n [class.ieeesa-event-group-card--mobile]=\"isMobileView\"\r\n [class.ieeesa-event-group-card--standalone]=\"isStandalone\"\r\n>\r\n <!-- ============================ EVENT ============================ -->\r\n <ng-container *ngIf=\"!isStandalone\">\r\n <header class=\"ieeesa-event-group-card__header\">\r\n <div class=\"ieeesa-event-group-card__header-main\">\r\n <!-- EVENT badge + day indicator. -->\r\n <div class=\"ieeesa-event-group-card__badge-row\">\r\n <span class=\"ieeesa-event-group-card__badge\">\r\n {{ constants.eventGroupCard.eventBadge }}\r\n </span>\r\n <span\r\n *ngIf=\"event.dayIndicator\"\r\n class=\"ieeesa-event-group-card__day-indicator\"\r\n >\r\n {{ event.dayIndicator }}\r\n </span>\r\n </div>\r\n\r\n <div class=\"ieeesa-event-group-card__title-row\">\r\n <h3 class=\"ieeesa-event-group-card__title\">{{ event.title }}</h3>\r\n <span\r\n *ngIf=\"event.status\"\r\n class=\"ieeesa-event-group-card__status-pill\"\r\n [ngClass]=\"'ieeesa-event-group-card__status-pill--' + statusModifier\"\r\n >\r\n {{ event.status }}\r\n </span>\r\n </div>\r\n\r\n <p\r\n *ngIf=\"subtitleText\"\r\n class=\"ieeesa-event-group-card__subtitle\"\r\n >\r\n {{ subtitleText }}\r\n </p>\r\n </div>\r\n\r\n <div class=\"ieeesa-event-group-card__header-side\">\r\n <dl class=\"ieeesa-event-group-card__dates-block\">\r\n <dt class=\"ieeesa-event-group-card__dates-label\">\r\n {{ constants.eventGroupCard.eventDatesLabel }}\r\n </dt>\r\n <dd class=\"ieeesa-event-group-card__dates-line\">\r\n <span class=\"ieeesa-event-group-card__dates-value\">\r\n {{ formattedStartDate }}<ng-container *ngIf=\"formattedEndDate && formattedEndDate !== formattedStartDate\">\r\n – {{ formattedEndDate }}</ng-container>\r\n </span>\r\n <span\r\n *ngIf=\"event.timezone\"\r\n class=\"ieeesa-event-group-card__timezone-value\"\r\n >\r\n ({{ event.timezone }})\r\n </span>\r\n </dd>\r\n </dl>\r\n\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-event-group-card__view\"\r\n [attr.aria-label]=\"constants.eventGroupCard.ariaLabel.viewEvent\"\r\n (click)=\"onViewEvent()\"\r\n >\r\n {{ constants.eventGroupCard.viewEventLabel }}\r\n </button>\r\n </div>\r\n </header>\r\n\r\n <!-- Meetings bar: \"Meetings\" label (left), open-for-attendance count +\r\n Show/Hide toggle (right), matching the Figma layout. -->\r\n <div class=\"ieeesa-event-group-card__meetings-bar\">\r\n <span class=\"ieeesa-event-group-card__meetings-label\">\r\n {{ constants.eventGroupCard.meetingsLabel }}\r\n </span>\r\n\r\n <div class=\"ieeesa-event-group-card__meetings-bar-right\">\r\n <span class=\"ieeesa-event-group-card__meetings-open\">\r\n <span class=\"ieeesa-event-group-card__meetings-dot\" aria-hidden=\"true\"></span>\r\n {{ openForAttendanceSummary }}\r\n </span>\r\n\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-event-group-card__meeting-toggle\"\r\n [attr.aria-expanded]=\"isMeetingListOpen\"\r\n [attr.aria-label]=\"constants.eventGroupCard.ariaLabel.meetingListToggle\"\r\n (click)=\"onToggleMeetingList()\"\r\n >\r\n <span>{{ meetingListToggleLabel }}</span>\r\n <i\r\n class=\"fa-solid\"\r\n [ngClass]=\"isMeetingListOpen ? 'fa-chevron-up' : 'fa-chevron-down'\"\r\n aria-hidden=\"true\"\r\n ></i>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <!-- Expanded inner meeting list + per-event paginator. -->\r\n <div\r\n *ngIf=\"isMeetingListOpen\"\r\n class=\"ieeesa-event-group-card__meetings\"\r\n >\r\n <ieeesa-meeting-attendance-row\r\n *ngFor=\"let meeting of pagedMeetings; trackBy: trackByMeetingId\"\r\n [meeting]=\"meeting\"\r\n [attendanceState]=\"resolveAttendanceState(meeting)\"\r\n [isInFlight]=\"resolveIsInFlight(meeting)\"\r\n [permissions]=\"permissions\"\r\n (openMeeting)=\"onOpenMeeting($event)\"\r\n (logAttendance)=\"onLogAttendance($event)\"\r\n (leaveMeeting)=\"onLeaveMeeting($event)\"\r\n (navigateToMeeting)=\"onNavigateToMeeting($event)\"\r\n ></ieeesa-meeting-attendance-row>\r\n\r\n <div\r\n class=\"ieeesa-event-group-card__paginator\"\r\n [attr.aria-label]=\"constants.eventGroupCard.ariaLabel.meetingListToggle\"\r\n >\r\n <mat-paginator\r\n class=\"ieeesa-event-group-card__paginator-control\"\r\n [pageIndex]=\"pageIndex\"\r\n [pageSize]=\"pageSize\"\r\n [pageSizeOptions]=\"pageSizeOptions\"\r\n [length]=\"totalMeetings\"\r\n (page)=\"onPageChange($event)\"\r\n ></mat-paginator>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- ======================= STANDALONE MEETING ======================= -->\r\n <!-- Single horizontal row: badge+name+subtitle | MEETING DATE | TIME & TIMEZONE | action. -->\r\n <div *ngIf=\"isStandalone\" class=\"ieeesa-event-group-card__standalone\">\r\n <div class=\"ieeesa-event-group-card__standalone-main\">\r\n <span class=\"ieeesa-event-group-card__badge ieeesa-event-group-card__badge--standalone\">\r\n {{ constants.eventGroupCard.standaloneBadge }}\r\n </span>\r\n\r\n <div class=\"ieeesa-event-group-card__standalone-title-row\">\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-event-group-card__standalone-name\"\r\n [attr.aria-label]=\"constants.meetingRow.ariaLabel.meetingNameLink\"\r\n (click)=\"onOpenStandalone()\"\r\n >\r\n {{ event.title }}\r\n </button>\r\n <span\r\n *ngIf=\"event.status\"\r\n class=\"ieeesa-event-group-card__status-pill\"\r\n [ngClass]=\"'ieeesa-event-group-card__status-pill--' + statusModifier\"\r\n >\r\n {{ event.status }}\r\n </span>\r\n </div>\r\n\r\n <p\r\n *ngIf=\"subtitleText\"\r\n class=\"ieeesa-event-group-card__standalone-subtitle\"\r\n >\r\n {{ subtitleText }}\r\n </p>\r\n </div>\r\n\r\n <!-- MEETING DATE column. -->\r\n <dl class=\"ieeesa-event-group-card__standalone-col\">\r\n <dt class=\"ieeesa-event-group-card__standalone-col-label\">\r\n {{ constants.eventGroupCard.meetingDateLabel }}\r\n </dt>\r\n <dd class=\"ieeesa-event-group-card__standalone-col-value\">\r\n {{ formattedStartDate }}<ng-container *ngIf=\"formattedEndDate && formattedEndDate !== formattedStartDate\">\r\n – {{ formattedEndDate }}</ng-container>\r\n </dd>\r\n </dl>\r\n\r\n <!-- TIME & TIMEZONE column. -->\r\n <dl class=\"ieeesa-event-group-card__standalone-col\">\r\n <dt class=\"ieeesa-event-group-card__standalone-col-label\">\r\n {{ constants.eventGroupCard.timeTimezoneLabel }}\r\n </dt>\r\n <dd class=\"ieeesa-event-group-card__standalone-col-value\">\r\n {{ standaloneTime }}\r\n </dd>\r\n </dl>\r\n\r\n <!-- Attendance action column. Shown only for attendance-eligible meetings. -->\r\n <div\r\n *ngIf=\"isStandaloneEligible\"\r\n class=\"ieeesa-event-group-card__standalone-actions\"\r\n >\r\n <span class=\"ieeesa-event-group-card__attending-slot\">\r\n <span\r\n *ngIf=\"isStandaloneAttending\"\r\n class=\"ieeesa-event-group-card__attending-pill\"\r\n >\r\n <span class=\"ieeesa-event-group-card__status-dot\" aria-hidden=\"true\"></span>\r\n {{ constants.meetingRow.currentlyAttendingIndicator }}\r\n </span>\r\n </span>\r\n\r\n <button\r\n *ngIf=\"!isStandaloneAttending\"\r\n type=\"button\"\r\n class=\"ieeesa-event-group-card__standalone-action ieeesa-event-group-card__standalone-action--log\"\r\n [class.ieeesa-event-group-card__standalone-action--inactive]=\"isStandaloneLogDisabled\"\r\n [disabled]=\"isStandaloneLogDisabled\"\r\n [attr.title]=\"isStandaloneLogDisabled ? inactiveMessage : null\"\r\n [attr.aria-label]=\"constants.meetingRow.ariaLabel.logAttendance\"\r\n (click)=\"onNavigateToStandalone()\"\r\n >\r\n {{ constants.meetingRow.logAttendanceLabel }}\r\n </button>\r\n\r\n <button\r\n *ngIf=\"isStandaloneAttending\"\r\n type=\"button\"\r\n class=\"ieeesa-event-group-card__standalone-action ieeesa-event-group-card__standalone-action--leave\"\r\n [attr.aria-label]=\"constants.meetingRow.ariaLabel.leaveMeeting\"\r\n (click)=\"onNavigateToStandalone()\"\r\n >\r\n {{ constants.meetingRow.leaveMeetingLabel }}\r\n </button>\r\n </div>\r\n </div>\r\n</article>\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-event-group-card{display:flex;flex-direction:column;border:1px solid #e2e8f0;border-radius:2px;overflow:hidden;background-color:#f8fafc;font-family:Calibri Regular}.ieeesa-event-group-card__header{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:20px 24px;border-bottom:1px solid #e2e8f0;background-color:#f8fafc}.ieeesa-event-group-card__header-main{display:flex;flex-direction:column;gap:4px;min-width:0}.ieeesa-event-group-card__badge-row{display:flex;align-items:center;gap:8px}.ieeesa-event-group-card__badge{display:inline-flex;align-items:center;align-self:flex-start;width:-moz-fit-content;width:fit-content;padding:2px 6px;border-radius:4px;font-family:Calibri Bold;font-size:10px;font-weight:700;letter-spacing:.03125em;text-transform:uppercase;color:#fff;background-color:#3b82f6}.ieeesa-event-group-card__badge--standalone{align-self:flex-start;width:-moz-fit-content;width:fit-content;padding:2px 6px;border-radius:3px;font-size:10px;letter-spacing:.25px;color:#53616a;background-color:#edf1f3}.ieeesa-event-group-card__day-indicator{font-size:.875rem;line-height:18px;color:#333436}.ieeesa-event-group-card__title-row{display:flex;align-items:center;flex-wrap:wrap;gap:12px}.ieeesa-event-group-card__title{margin:0;font-family:Calibri Bold;font-size:1rem;line-height:20px;color:#0f172a}.ieeesa-event-group-card__status-pill{display:inline-flex;align-items:center;padding:2px 16px;border-radius:23px;font-size:.75rem;line-height:16px;color:#fff;background-color:#4caf50}.ieeesa-event-group-card__status-pill--upcoming,.ieeesa-event-group-card__status-pill--starts-soon{color:#8a6d00;background-color:#fef7e0}.ieeesa-event-group-card__subtitle{margin:0;font-size:.75rem;line-height:16px;color:#64748b}.ieeesa-event-group-card__header-side{display:flex;align-items:center;gap:24px;flex-shrink:0}.ieeesa-event-group-card__dates-block{display:flex;flex-direction:column;align-items:flex-start;gap:4px;margin:0;text-align:left}.ieeesa-event-group-card__dates-label{font-family:Calibri Bold;font-size:.75rem;letter-spacing:.03125em;text-transform:uppercase;color:#64748b}.ieeesa-event-group-card__dates-line{display:flex;align-items:baseline;flex-wrap:wrap;gap:6px;margin:0}.ieeesa-event-group-card__dates-value{font-family:Calibri Bold;font-size:.875rem;line-height:18px;color:#0f172a}.ieeesa-event-group-card__timezone-value{font-size:.875rem;line-height:18px;color:#333436}.ieeesa-event-group-card__view{flex-shrink:0;padding:10px 24px;border:1px solid #878b8f;border-radius:3px;background-color:#f3f8fd;font-family:Calibri Bold;font-size:1rem;color:#0f172a;cursor:pointer}.ieeesa-event-group-card__view:hover{background-color:#eaf3f9}.ieeesa-event-group-card__meetings-bar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;padding:12px 24px 0 32px;background-color:#f8fafc}.ieeesa-event-group-card__meetings-label{font-family:Calibri Bold;font-size:.875rem;color:#0f172a}.ieeesa-event-group-card__meetings-bar-right{display:flex;align-items:center;gap:16px}.ieeesa-event-group-card__meetings-open{display:inline-flex;align-items:center;gap:6px;font-family:Calibri Bold;font-size:.75rem;color:#15803d}.ieeesa-event-group-card__meetings-dot{width:8px;height:8px;border-radius:50%;background-color:#15803d}.ieeesa-event-group-card__meeting-toggle{display:inline-flex;align-items:center;gap:8px;padding:4px 0;border:0;background:none;font-family:Calibri Bold;font-size:.875rem;color:#00629b;cursor:pointer}.ieeesa-event-group-card__meetings{display:flex;flex-direction:column;margin:16px 24px 16px 32px;border:1px solid #e2e8f0;border-radius:2px;overflow:hidden;background-color:#fff}.ieeesa-event-group-card__paginator{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:8px;padding:12px 24px;background-color:#f8fafc}.ieeesa-event-group-card__paginator-range{font-size:.875rem;color:#64748b}.ieeesa-event-group-card__standalone{display:grid;grid-template-columns:minmax(260px,2.4fr) minmax(130px,1fr) minmax(200px,1.3fr) auto;align-items:center;column-gap:24px;min-height:72px;padding:8px 16px;background-color:#fff}.ieeesa-event-group-card__standalone-main{display:flex;flex-direction:column;gap:6px;min-width:0}.ieeesa-event-group-card__standalone-title-row{display:flex;align-items:center;flex-wrap:wrap;gap:12px}.ieeesa-event-group-card__standalone-name{padding:0;border:0;background:none;text-align:left;text-decoration:underline;font-family:Calibri Bold;font-size:.875rem;line-height:18px;color:#00629b;cursor:pointer}.ieeesa-event-group-card__standalone-name:hover{color:#004872}.ieeesa-event-group-card__standalone-subtitle{margin:0;font-size:.875rem;line-height:18px;color:#333436}.ieeesa-event-group-card__standalone-col{display:flex;flex-direction:column;gap:2px;margin:0;min-width:0}.ieeesa-event-group-card__standalone-col-label{font-family:Calibri Bold;font-size:.75rem;letter-spacing:.03125em;text-transform:uppercase;color:#64748b}.ieeesa-event-group-card__standalone-col-value{margin:0;font-size:.875rem;line-height:18px;color:#0f172a}.ieeesa-event-group-card__standalone-actions{display:flex;align-items:center;justify-content:flex-end;gap:16px}.ieeesa-event-group-card__attending-slot{display:inline-flex;align-items:center;justify-content:flex-end;width:150px;flex-shrink:0}.ieeesa-event-group-card__attending-pill{display:inline-flex;align-items:center;gap:6px;padding:4px 12px;border-radius:16px;white-space:nowrap;font-size:.8125rem;color:#15803d;background-color:#e8f5ec}.ieeesa-event-group-card__standalone-action{min-width:146px;padding:10px 24px;border-radius:3px;font-family:Calibri Bold;font-size:1rem;cursor:pointer}.ieeesa-event-group-card__standalone-action--log{border:1px solid #00629b;background-color:#00629b;color:#fff;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026}.ieeesa-event-group-card__standalone-action--leave{border:1px solid #00629b;background-color:#fff;color:#00629b}.ieeesa-event-group-card__standalone-action:disabled,.ieeesa-event-group-card__standalone-action--inactive{border-color:#e2e8f0;background-color:#f4f5f7;color:#939094;box-shadow:none;cursor:not-allowed}.ieeesa-event-group-card--standalone{border-color:#dbe2eb}.ieeesa-event-group-card--mobile .ieeesa-event-group-card__header{flex-direction:column;align-items:stretch}.ieeesa-event-group-card--mobile .ieeesa-event-group-card__header-side{flex-direction:column;align-items:stretch;gap:12px}.ieeesa-event-group-card--mobile .ieeesa-event-group-card__view{align-self:stretch;width:100%}.ieeesa-event-group-card--mobile .ieeesa-event-group-card__paginator{flex-direction:column;align-items:stretch}.ieeesa-event-group-card--mobile .ieeesa-event-group-card__standalone{grid-template-columns:1fr;row-gap:12px}.ieeesa-event-group-card--mobile .ieeesa-event-group-card__standalone-actions{justify-content:flex-start}\n"] }]
|
|
966
1088
|
}], propDecorators: { event: [{
|
|
967
1089
|
type: Input
|
|
968
1090
|
}], permissions: [{
|
|
@@ -985,6 +1107,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
985
1107
|
type: Output
|
|
986
1108
|
}], loadMeetings: [{
|
|
987
1109
|
type: Output
|
|
1110
|
+
}], navigateToMeeting: [{
|
|
1111
|
+
type: Output
|
|
988
1112
|
}] } });
|
|
989
1113
|
|
|
990
1114
|
/**
|
|
@@ -1040,8 +1164,10 @@ class UpcomingMeetingsEventsComponent {
|
|
|
1040
1164
|
this.leaveMeeting = new EventEmitter();
|
|
1041
1165
|
/** Emits the requested page tagged with its event id when a card paginates (Req 6.9). */
|
|
1042
1166
|
this.meetingPageChange = new EventEmitter();
|
|
1043
|
-
/** Emits the event id + one-based page to lazily load an event's child meetings. */
|
|
1167
|
+
/** Emits the event id + one-based page + size to lazily load an event's child meetings. */
|
|
1044
1168
|
this.loadEventMeetings = new EventEmitter();
|
|
1169
|
+
/** Bubbles a navigate-to-meeting request (eventId + meetingId [+ logAttendance]) for the host to route. */
|
|
1170
|
+
this.navigateToMeeting = new EventEmitter();
|
|
1045
1171
|
/** Whether the section's card list is currently expanded; starts collapsed. */
|
|
1046
1172
|
this.isExpanded = false;
|
|
1047
1173
|
/** Section-level page size — 5 events/meetings per page per the design. */
|
|
@@ -1104,6 +1230,53 @@ class UpcomingMeetingsEventsComponent {
|
|
|
1104
1230
|
onSectionPageChange(event) {
|
|
1105
1231
|
this.sectionPageIndex = event.pageIndex;
|
|
1106
1232
|
}
|
|
1233
|
+
/** Number of EVENT rows in the list (for the collapsed summary). */
|
|
1234
|
+
get eventCount() {
|
|
1235
|
+
return (this.events ?? []).filter((entry) => entry.kind === UpcomingItemKind.EVENT).length;
|
|
1236
|
+
}
|
|
1237
|
+
/**
|
|
1238
|
+
* Total number of meetings across the list: each event's `meetingCount` plus
|
|
1239
|
+
* one per standalone meeting (for the collapsed summary).
|
|
1240
|
+
* @return {number} The total meeting count.
|
|
1241
|
+
* @memberof UpcomingMeetingsEventsComponent
|
|
1242
|
+
*/
|
|
1243
|
+
get totalMeetingCount() {
|
|
1244
|
+
return (this.events ?? []).reduce((total, entry) => {
|
|
1245
|
+
return (total +
|
|
1246
|
+
(entry.kind === UpcomingItemKind.EVENT
|
|
1247
|
+
? entry.meetingCount ?? 0
|
|
1248
|
+
: 1));
|
|
1249
|
+
}, 0);
|
|
1250
|
+
}
|
|
1251
|
+
/**
|
|
1252
|
+
* Total number of meetings open for attendance across the list (for the
|
|
1253
|
+
* collapsed summary): each event's open count plus any standalone meeting that
|
|
1254
|
+
* is attendance-eligible.
|
|
1255
|
+
* @return {number} The total open-for-attendance count.
|
|
1256
|
+
* @memberof UpcomingMeetingsEventsComponent
|
|
1257
|
+
*/
|
|
1258
|
+
get totalOpenForAttendanceCount() {
|
|
1259
|
+
return (this.events ?? []).reduce((total, entry) => {
|
|
1260
|
+
if (entry.kind === UpcomingItemKind.EVENT) {
|
|
1261
|
+
return total + (entry.openForAttendanceCount ?? 0);
|
|
1262
|
+
}
|
|
1263
|
+
return total + (entry.attendanceState ? 1 : 0);
|
|
1264
|
+
}, 0);
|
|
1265
|
+
}
|
|
1266
|
+
/**
|
|
1267
|
+
* The collapsed summary line (e.g. "3 events · 50 meetings · 21 open for
|
|
1268
|
+
* attendance") built from the `constants.json` template and the counts.
|
|
1269
|
+
* @return {string} The formatted collapsed summary.
|
|
1270
|
+
* @memberof UpcomingMeetingsEventsComponent
|
|
1271
|
+
*/
|
|
1272
|
+
get collapsedSummary() {
|
|
1273
|
+
const template = this.constants?.upcomingSection?.collapsedSummaryTemplate ??
|
|
1274
|
+
'{events} events \u00b7 {meetings} meetings \u00b7 {open} open for attendance';
|
|
1275
|
+
return template
|
|
1276
|
+
.replace('{events}', `${this.eventCount}`)
|
|
1277
|
+
.replace('{meetings}', `${this.totalMeetingCount}`)
|
|
1278
|
+
.replace('{open}', `${this.totalOpenForAttendanceCount}`);
|
|
1279
|
+
}
|
|
1107
1280
|
/**
|
|
1108
1281
|
* Allows the host/container to open or close the section (e.g. a "Jump to"
|
|
1109
1282
|
* shortcut opens it). Writing the input mirrors the value onto the internal
|
|
@@ -1192,11 +1365,19 @@ class UpcomingMeetingsEventsComponent {
|
|
|
1192
1365
|
* @param {number} page - The one-based page requested by the card.
|
|
1193
1366
|
* @memberof UpcomingMeetingsEventsComponent
|
|
1194
1367
|
*/
|
|
1195
|
-
onLoadEventMeetings(eventId,
|
|
1196
|
-
this.loadEventMeetings.emit({ eventId, page });
|
|
1368
|
+
onLoadEventMeetings(eventId, request) {
|
|
1369
|
+
this.loadEventMeetings.emit({ eventId, page: request.page, size: request.size });
|
|
1370
|
+
}
|
|
1371
|
+
/**
|
|
1372
|
+
* Bubbles a card's navigate-to-meeting request upward unchanged.
|
|
1373
|
+
* @param {{ eventId: string; meetingId: string }} request - The meeting identity.
|
|
1374
|
+
* @memberof UpcomingMeetingsEventsComponent
|
|
1375
|
+
*/
|
|
1376
|
+
onNavigateToMeeting(request) {
|
|
1377
|
+
this.navigateToMeeting.emit(request);
|
|
1197
1378
|
}
|
|
1198
1379
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UpcomingMeetingsEventsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1199
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: UpcomingMeetingsEventsComponent, isStandalone: true, selector: "ieeesa-upcoming-meetings-events", inputs: { events: "events", sectionState: "sectionState", permissions: "permissions", attendanceStates: "attendanceStates", inFlightMeetingIds: "inFlightMeetingIds", isMobileView: "isMobileView", expanded: "expanded" }, outputs: { viewAll: "viewAll", viewEvent: "viewEvent", openMeeting: "openMeeting", logAttendance: "logAttendance", leaveMeeting: "leaveMeeting", meetingPageChange: "meetingPageChange", loadEventMeetings: "loadEventMeetings", expandedChange: "expandedChange" }, ngImport: i0, template: "<section\r\n class=\"ieeesa-upcoming-meetings-events\"\r\n [class.ieeesa-upcoming-meetings-events--mobile]=\"isMobileView\"\r\n>\r\n <header class=\"ieeesa-upcoming-meetings-events__header\">\r\n <!-- Section title (Req 5.1). -->\r\n <div class=\"ieeesa-upcoming-meetings-events__heading\">\r\n <h2 class=\"ieeesa-upcoming-meetings-events__title\">\r\n {{ constants.upcomingSection.title }}\r\n </h2>\r\n </div>\r\n\r\n <!-- View All link + Expand/Collapse toggle (Req 5.1, 5.2, 5.3, 5.4, 14.3). -->\r\n <div class=\"ieeesa-upcoming-meetings-events__actions\">\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-upcoming-meetings-events__view-all\"\r\n [attr.aria-label]=\"constants.upcomingSection.ariaLabel.viewAll\"\r\n (click)=\"onViewAll()\"\r\n >\r\n {{ constants.upcomingSection.viewAllLabel }}\r\n </button>\r\n\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-upcoming-meetings-events__toggle\"\r\n [attr.aria-expanded]=\"isExpanded\"\r\n [attr.aria-label]=\"constants.upcomingSection.ariaLabel.toggle\"\r\n (click)=\"onToggleExpanded()\"\r\n >\r\n <span>{{ isExpanded ? constants.upcomingSection.collapseLabel : constants.upcomingSection.expandLabel }}</span>\r\n <i\r\n class=\"fa-solid\"\r\n [ngClass]=\"isExpanded ? 'fa-chevron-up' : 'fa-chevron-down'\"\r\n aria-hidden=\"true\"\r\n ></i>\r\n </button>\r\n </div>\r\n </header>\r\n\r\n <!-- Card list, shown only while expanded (Req 5.4). -->\r\n <div *ngIf=\"isExpanded\" class=\"ieeesa-upcoming-meetings-events__body\">\r\n <!-- Loader region (Req 13.1). -->\r\n <div\r\n *ngIf=\"sectionState === sectionStates.LOADING\"\r\n class=\"ieeesa-upcoming-meetings-events__loader\"\r\n >\r\n <ieeesa-loader></ieeesa-loader>\r\n </div>\r\n\r\n <!-- Content region: one card per event preserving input order (Req 5.5, 5.6, 13.2). -->\r\n <div\r\n *ngIf=\"sectionState === sectionStates.LOADED\"\r\n class=\"ieeesa-upcoming-meetings-events__cards\"\r\n >\r\n <ieeesa-event-group-card\r\n *ngFor=\"let event of pagedEvents; trackBy: trackByEventId\"\r\n [event]=\"event\"\r\n [permissions]=\"permissions\"\r\n [attendanceStates]=\"attendanceStates\"\r\n [inFlightMeetingIds]=\"inFlightMeetingIds\"\r\n [isMobileView]=\"isMobileView\"\r\n (viewEvent)=\"onViewEvent($event)\"\r\n (openMeeting)=\"onOpenMeeting($event)\"\r\n (logAttendance)=\"onLogAttendance($event)\"\r\n (leaveMeeting)=\"onLeaveMeeting($event)\"\r\n (pageChange)=\"onMeetingPageChange(event.eventId, $event)\"\r\n (loadMeetings)=\"onLoadEventMeetings(event.eventId, $event)\"\r\n ></ieeesa-event-group-card>\r\n\r\n <!-- Section-level paginator: 5 events/meetings per page (Req 3.x, design). -->\r\n <div\r\n *ngIf=\"totalItems > sectionPageSize\"\r\n class=\"ieeesa-upcoming-meetings-events__paginator\"\r\n >\r\n <span class=\"ieeesa-upcoming-meetings-events__paginator-range\">\r\n {{ sectionRangeLabel }}\r\n </span>\r\n <mat-paginator\r\n class=\"ieeesa-upcoming-meetings-events__paginator-control\"\r\n [pageIndex]=\"sectionPageIndex\"\r\n [pageSize]=\"sectionPageSize\"\r\n [length]=\"totalItems\"\r\n [hidePageSize]=\"true\"\r\n (page)=\"onSectionPageChange($event)\"\r\n ></mat-paginator>\r\n </div>\r\n </div>\r\n\r\n <!-- Empty-state region (Req 13.3). -->\r\n <p\r\n *ngIf=\"sectionState === sectionStates.EMPTY\"\r\n class=\"ieeesa-upcoming-meetings-events__empty\"\r\n >\r\n {{ constants.upcomingSection.emptyMessage }}\r\n </p>\r\n\r\n <!-- Error region (Req 13.5). -->\r\n <p\r\n *ngIf=\"sectionState === sectionStates.ERROR\"\r\n class=\"ieeesa-upcoming-meetings-events__error\"\r\n role=\"alert\"\r\n >\r\n {{ constants.upcomingSection.errorMessage }}\r\n </p>\r\n </div>\r\n</section>\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-upcoming-meetings-events{display:flex;flex-direction:column;gap:16px;background-color:#fff;border-radius:12px;box-shadow:0 1px 2px #0003;border:1px solid #e2e8f0;padding:20px 24px}.ieeesa-upcoming-meetings-events__header{display:flex;align-items:center;justify-content:space-between;gap:16px}.ieeesa-upcoming-meetings-events__heading{display:flex;min-width:0}.ieeesa-upcoming-meetings-events__title{margin:0;font-family:Calibri Bold;font-weight:700;font-size:18px;color:#0f172a}.ieeesa-upcoming-meetings-events__actions{display:flex;align-items:center;gap:16px}.ieeesa-upcoming-meetings-events__view-all{flex-shrink:0;background:none;border:none;padding:0;cursor:pointer;font-family:Calibri Bold;font-weight:700;font-size:18px;color:#00629b}.ieeesa-upcoming-meetings-events__view-all:hover{text-decoration:underline}.ieeesa-upcoming-meetings-events__toggle{display:inline-flex;align-items:center;gap:8px;padding:6px 14px;border:1px solid #dbe2eb;border-radius:8px;background-color:#fff;cursor:pointer;font-family:Calibri Bold;font-weight:700;font-size:18px;color:#00629b}.ieeesa-upcoming-meetings-events__toggle:hover{border-color:#00629b}.ieeesa-upcoming-meetings-events__toggle i{font-size:.75rem}.ieeesa-upcoming-meetings-events__body{display:flex;flex-direction:column}.ieeesa-upcoming-meetings-events__loader{display:flex;align-items:center;justify-content:center;padding:24px}.ieeesa-upcoming-meetings-events__cards{display:flex;flex-direction:column;gap:16px}.ieeesa-upcoming-meetings-events__paginator{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:12px;padding-top:8px}.ieeesa-upcoming-meetings-events__paginator-range{font-size:.8125rem;color:#939094}.ieeesa-upcoming-meetings-events__empty,.ieeesa-upcoming-meetings-events__error{margin:0;padding:16px;font-size:.875rem;color:#939094}.ieeesa-upcoming-meetings-events__error{color:#ba0c2f}.ieeesa-upcoming-meetings-events--mobile .ieeesa-upcoming-meetings-events__header{flex-wrap:wrap}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatPaginatorModule }, { kind: "component", type: i2.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }, { kind: "component", type: LoaderComponent, selector: "ieeesa-loader", inputs: ["diameter"] }, { kind: "component", type: EventGroupCardComponent, selector: "ieeesa-event-group-card", inputs: ["event", "permissions", "attendanceStates", "inFlightMeetingIds", "isMobileView"], outputs: ["viewEvent", "openMeeting", "logAttendance", "leaveMeeting", "pageChange", "loadMeetings"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
1380
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: UpcomingMeetingsEventsComponent, isStandalone: true, selector: "ieeesa-upcoming-meetings-events", inputs: { events: "events", sectionState: "sectionState", permissions: "permissions", attendanceStates: "attendanceStates", inFlightMeetingIds: "inFlightMeetingIds", isMobileView: "isMobileView", expanded: "expanded" }, outputs: { viewAll: "viewAll", viewEvent: "viewEvent", openMeeting: "openMeeting", logAttendance: "logAttendance", leaveMeeting: "leaveMeeting", meetingPageChange: "meetingPageChange", loadEventMeetings: "loadEventMeetings", navigateToMeeting: "navigateToMeeting", expandedChange: "expandedChange" }, ngImport: i0, template: "<section\r\n class=\"ieeesa-upcoming-meetings-events\"\r\n [class.ieeesa-upcoming-meetings-events--mobile]=\"isMobileView\"\r\n>\r\n <header class=\"ieeesa-upcoming-meetings-events__header\">\r\n <!-- Section title (Req 5.1). -->\r\n <div class=\"ieeesa-upcoming-meetings-events__heading\">\r\n <h2 class=\"ieeesa-upcoming-meetings-events__title\">\r\n {{ constants.upcomingSection.title }}\r\n </h2>\r\n </div>\r\n\r\n <!-- View All link + Expand/Collapse toggle (Req 5.1, 5.2, 5.3, 5.4, 14.3). -->\r\n <div class=\"ieeesa-upcoming-meetings-events__actions\">\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-upcoming-meetings-events__view-all\"\r\n [attr.aria-label]=\"constants.upcomingSection.ariaLabel.viewAll\"\r\n (click)=\"onViewAll()\"\r\n >\r\n {{ constants.upcomingSection.viewAllLabel }}\r\n </button>\r\n\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-upcoming-meetings-events__toggle\"\r\n [attr.aria-expanded]=\"isExpanded\"\r\n [attr.aria-label]=\"constants.upcomingSection.ariaLabel.toggle\"\r\n (click)=\"onToggleExpanded()\"\r\n >\r\n <span>{{ isExpanded ? constants.upcomingSection.collapseLabel : constants.upcomingSection.expandLabel }}</span>\r\n <i\r\n class=\"fa-solid\"\r\n [ngClass]=\"isExpanded ? 'fa-chevron-up' : 'fa-chevron-down'\"\r\n aria-hidden=\"true\"\r\n ></i>\r\n </button>\r\n </div>\r\n </header>\r\n\r\n <!-- Collapsed summary: events / meetings / open-for-attendance counts.\r\n The open-for-attendance segment is green bold per Figma. -->\r\n <p\r\n *ngIf=\"!isExpanded && sectionState === sectionStates.LOADED\"\r\n class=\"ieeesa-upcoming-meetings-events__summary\"\r\n >\r\n {{ eventCount }} events · {{ totalMeetingCount }} meetings ·\r\n <span class=\"ieeesa-upcoming-meetings-events__summary-open\">\r\n {{ totalOpenForAttendanceCount }} open for attendance\r\n </span>\r\n </p>\r\n\r\n <!-- Card list, shown only while expanded (Req 5.4). -->\r\n <div *ngIf=\"isExpanded\" class=\"ieeesa-upcoming-meetings-events__body\">\r\n <!-- Loader region (Req 13.1). -->\r\n <div\r\n *ngIf=\"sectionState === sectionStates.LOADING\"\r\n class=\"ieeesa-upcoming-meetings-events__loader\"\r\n >\r\n <ieeesa-loader></ieeesa-loader>\r\n </div>\r\n\r\n <!-- Content region: one card per event preserving input order (Req 5.5, 5.6, 13.2). -->\r\n <div\r\n *ngIf=\"sectionState === sectionStates.LOADED\"\r\n class=\"ieeesa-upcoming-meetings-events__cards\"\r\n >\r\n <ieeesa-event-group-card\r\n *ngFor=\"let event of pagedEvents; trackBy: trackByEventId\"\r\n [event]=\"event\"\r\n [permissions]=\"permissions\"\r\n [attendanceStates]=\"attendanceStates\"\r\n [inFlightMeetingIds]=\"inFlightMeetingIds\"\r\n [isMobileView]=\"isMobileView\"\r\n (viewEvent)=\"onViewEvent($event)\"\r\n (openMeeting)=\"onOpenMeeting($event)\"\r\n (logAttendance)=\"onLogAttendance($event)\"\r\n (leaveMeeting)=\"onLeaveMeeting($event)\"\r\n (pageChange)=\"onMeetingPageChange(event.eventId, $event)\"\r\n (loadMeetings)=\"onLoadEventMeetings(event.eventId, $event)\"\r\n (navigateToMeeting)=\"onNavigateToMeeting($event)\"\r\n ></ieeesa-event-group-card>\r\n\r\n <!-- Section-level paginator: 5 events/meetings per page (Req 3.x, design). -->\r\n <div\r\n *ngIf=\"totalItems > sectionPageSize\"\r\n class=\"ieeesa-upcoming-meetings-events__paginator\"\r\n >\r\n <span class=\"ieeesa-upcoming-meetings-events__paginator-range\">\r\n {{ sectionRangeLabel }}\r\n </span>\r\n <mat-paginator\r\n class=\"ieeesa-upcoming-meetings-events__paginator-control\"\r\n [pageIndex]=\"sectionPageIndex\"\r\n [pageSize]=\"sectionPageSize\"\r\n [length]=\"totalItems\"\r\n [hidePageSize]=\"true\"\r\n (page)=\"onSectionPageChange($event)\"\r\n ></mat-paginator>\r\n </div>\r\n </div>\r\n\r\n <!-- Empty-state region (Req 13.3). -->\r\n <p\r\n *ngIf=\"sectionState === sectionStates.EMPTY\"\r\n class=\"ieeesa-upcoming-meetings-events__empty\"\r\n >\r\n {{ constants.upcomingSection.emptyMessage }}\r\n </p>\r\n\r\n <!-- Error region (Req 13.5). -->\r\n <p\r\n *ngIf=\"sectionState === sectionStates.ERROR\"\r\n class=\"ieeesa-upcoming-meetings-events__error\"\r\n role=\"alert\"\r\n >\r\n {{ constants.upcomingSection.errorMessage }}\r\n </p>\r\n </div>\r\n</section>\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-upcoming-meetings-events{display:flex;flex-direction:column;gap:16px;background-color:#fff;border-radius:12px;box-shadow:0 1px 2px #0003;border:1px solid #e2e8f0;padding:20px 24px}.ieeesa-upcoming-meetings-events__header{display:flex;align-items:center;justify-content:space-between;gap:16px}.ieeesa-upcoming-meetings-events__heading{display:flex;min-width:0}.ieeesa-upcoming-meetings-events__title{margin:0;font-family:Calibri Bold;font-weight:700;font-size:18px;color:#0f172a}.ieeesa-upcoming-meetings-events__actions{display:flex;align-items:center;gap:16px}.ieeesa-upcoming-meetings-events__view-all{flex-shrink:0;background:none;border:none;padding:0;cursor:pointer;font-family:Calibri Bold;font-weight:700;font-size:18px;color:#00629b}.ieeesa-upcoming-meetings-events__view-all:hover{text-decoration:underline}.ieeesa-upcoming-meetings-events__toggle{display:inline-flex;align-items:center;gap:8px;padding:6px 14px;border:1px solid #dbe2eb;border-radius:8px;background-color:#fff;cursor:pointer;font-family:Calibri Bold;font-weight:700;font-size:18px;color:#00629b}.ieeesa-upcoming-meetings-events__toggle:hover{border-color:#00629b}.ieeesa-upcoming-meetings-events__toggle i{font-size:.75rem}.ieeesa-upcoming-meetings-events__summary{margin:0;font-size:.875rem;color:#939094}.ieeesa-upcoming-meetings-events__summary-open{font-family:Calibri Bold;font-weight:700;color:#15803d}.ieeesa-upcoming-meetings-events__body{display:flex;flex-direction:column}.ieeesa-upcoming-meetings-events__loader{display:flex;align-items:center;justify-content:center;padding:24px}.ieeesa-upcoming-meetings-events__cards{display:flex;flex-direction:column;gap:16px}.ieeesa-upcoming-meetings-events__paginator{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:12px;padding-top:8px}.ieeesa-upcoming-meetings-events__paginator-range{font-size:.8125rem;color:#939094}.ieeesa-upcoming-meetings-events__empty,.ieeesa-upcoming-meetings-events__error{margin:0;padding:16px;font-size:.875rem;color:#939094}.ieeesa-upcoming-meetings-events__error{color:#ba0c2f}.ieeesa-upcoming-meetings-events--mobile .ieeesa-upcoming-meetings-events__header{flex-wrap:wrap}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatPaginatorModule }, { kind: "component", type: i2.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }, { kind: "component", type: LoaderComponent, selector: "ieeesa-loader", inputs: ["diameter"] }, { kind: "component", type: EventGroupCardComponent, selector: "ieeesa-event-group-card", inputs: ["event", "permissions", "attendanceStates", "inFlightMeetingIds", "isMobileView"], outputs: ["viewEvent", "openMeeting", "logAttendance", "leaveMeeting", "pageChange", "loadMeetings", "navigateToMeeting"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
1200
1381
|
}
|
|
1201
1382
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UpcomingMeetingsEventsComponent, decorators: [{
|
|
1202
1383
|
type: Component,
|
|
@@ -1205,7 +1386,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
1205
1386
|
MatPaginatorModule,
|
|
1206
1387
|
LoaderComponent,
|
|
1207
1388
|
EventGroupCardComponent,
|
|
1208
|
-
], encapsulation: ViewEncapsulation.None, template: "<section\r\n class=\"ieeesa-upcoming-meetings-events\"\r\n [class.ieeesa-upcoming-meetings-events--mobile]=\"isMobileView\"\r\n>\r\n <header class=\"ieeesa-upcoming-meetings-events__header\">\r\n <!-- Section title (Req 5.1). -->\r\n <div class=\"ieeesa-upcoming-meetings-events__heading\">\r\n <h2 class=\"ieeesa-upcoming-meetings-events__title\">\r\n {{ constants.upcomingSection.title }}\r\n </h2>\r\n </div>\r\n\r\n <!-- View All link + Expand/Collapse toggle (Req 5.1, 5.2, 5.3, 5.4, 14.3). -->\r\n <div class=\"ieeesa-upcoming-meetings-events__actions\">\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-upcoming-meetings-events__view-all\"\r\n [attr.aria-label]=\"constants.upcomingSection.ariaLabel.viewAll\"\r\n (click)=\"onViewAll()\"\r\n >\r\n {{ constants.upcomingSection.viewAllLabel }}\r\n </button>\r\n\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-upcoming-meetings-events__toggle\"\r\n [attr.aria-expanded]=\"isExpanded\"\r\n [attr.aria-label]=\"constants.upcomingSection.ariaLabel.toggle\"\r\n (click)=\"onToggleExpanded()\"\r\n >\r\n <span>{{ isExpanded ? constants.upcomingSection.collapseLabel : constants.upcomingSection.expandLabel }}</span>\r\n <i\r\n class=\"fa-solid\"\r\n [ngClass]=\"isExpanded ? 'fa-chevron-up' : 'fa-chevron-down'\"\r\n aria-hidden=\"true\"\r\n ></i>\r\n </button>\r\n </div>\r\n </header>\r\n\r\n <!-- Card list, shown only while expanded (Req 5.4). -->\r\n <div *ngIf=\"isExpanded\" class=\"ieeesa-upcoming-meetings-events__body\">\r\n <!-- Loader region (Req 13.1). -->\r\n <div\r\n *ngIf=\"sectionState === sectionStates.LOADING\"\r\n class=\"ieeesa-upcoming-meetings-events__loader\"\r\n >\r\n <ieeesa-loader></ieeesa-loader>\r\n </div>\r\n\r\n <!-- Content region: one card per event preserving input order (Req 5.5, 5.6, 13.2). -->\r\n <div\r\n *ngIf=\"sectionState === sectionStates.LOADED\"\r\n class=\"ieeesa-upcoming-meetings-events__cards\"\r\n >\r\n <ieeesa-event-group-card\r\n *ngFor=\"let event of pagedEvents; trackBy: trackByEventId\"\r\n [event]=\"event\"\r\n [permissions]=\"permissions\"\r\n [attendanceStates]=\"attendanceStates\"\r\n [inFlightMeetingIds]=\"inFlightMeetingIds\"\r\n [isMobileView]=\"isMobileView\"\r\n (viewEvent)=\"onViewEvent($event)\"\r\n (openMeeting)=\"onOpenMeeting($event)\"\r\n (logAttendance)=\"onLogAttendance($event)\"\r\n (leaveMeeting)=\"onLeaveMeeting($event)\"\r\n (pageChange)=\"onMeetingPageChange(event.eventId, $event)\"\r\n (loadMeetings)=\"onLoadEventMeetings(event.eventId, $event)\"\r\n ></ieeesa-event-group-card>\r\n\r\n <!-- Section-level paginator: 5 events/meetings per page (Req 3.x, design). -->\r\n <div\r\n *ngIf=\"totalItems > sectionPageSize\"\r\n class=\"ieeesa-upcoming-meetings-events__paginator\"\r\n >\r\n <span class=\"ieeesa-upcoming-meetings-events__paginator-range\">\r\n {{ sectionRangeLabel }}\r\n </span>\r\n <mat-paginator\r\n class=\"ieeesa-upcoming-meetings-events__paginator-control\"\r\n [pageIndex]=\"sectionPageIndex\"\r\n [pageSize]=\"sectionPageSize\"\r\n [length]=\"totalItems\"\r\n [hidePageSize]=\"true\"\r\n (page)=\"onSectionPageChange($event)\"\r\n ></mat-paginator>\r\n </div>\r\n </div>\r\n\r\n <!-- Empty-state region (Req 13.3). -->\r\n <p\r\n *ngIf=\"sectionState === sectionStates.EMPTY\"\r\n class=\"ieeesa-upcoming-meetings-events__empty\"\r\n >\r\n {{ constants.upcomingSection.emptyMessage }}\r\n </p>\r\n\r\n <!-- Error region (Req 13.5). -->\r\n <p\r\n *ngIf=\"sectionState === sectionStates.ERROR\"\r\n class=\"ieeesa-upcoming-meetings-events__error\"\r\n role=\"alert\"\r\n >\r\n {{ constants.upcomingSection.errorMessage }}\r\n </p>\r\n </div>\r\n</section>\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-upcoming-meetings-events{display:flex;flex-direction:column;gap:16px;background-color:#fff;border-radius:12px;box-shadow:0 1px 2px #0003;border:1px solid #e2e8f0;padding:20px 24px}.ieeesa-upcoming-meetings-events__header{display:flex;align-items:center;justify-content:space-between;gap:16px}.ieeesa-upcoming-meetings-events__heading{display:flex;min-width:0}.ieeesa-upcoming-meetings-events__title{margin:0;font-family:Calibri Bold;font-weight:700;font-size:18px;color:#0f172a}.ieeesa-upcoming-meetings-events__actions{display:flex;align-items:center;gap:16px}.ieeesa-upcoming-meetings-events__view-all{flex-shrink:0;background:none;border:none;padding:0;cursor:pointer;font-family:Calibri Bold;font-weight:700;font-size:18px;color:#00629b}.ieeesa-upcoming-meetings-events__view-all:hover{text-decoration:underline}.ieeesa-upcoming-meetings-events__toggle{display:inline-flex;align-items:center;gap:8px;padding:6px 14px;border:1px solid #dbe2eb;border-radius:8px;background-color:#fff;cursor:pointer;font-family:Calibri Bold;font-weight:700;font-size:18px;color:#00629b}.ieeesa-upcoming-meetings-events__toggle:hover{border-color:#00629b}.ieeesa-upcoming-meetings-events__toggle i{font-size:.75rem}.ieeesa-upcoming-meetings-events__body{display:flex;flex-direction:column}.ieeesa-upcoming-meetings-events__loader{display:flex;align-items:center;justify-content:center;padding:24px}.ieeesa-upcoming-meetings-events__cards{display:flex;flex-direction:column;gap:16px}.ieeesa-upcoming-meetings-events__paginator{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:12px;padding-top:8px}.ieeesa-upcoming-meetings-events__paginator-range{font-size:.8125rem;color:#939094}.ieeesa-upcoming-meetings-events__empty,.ieeesa-upcoming-meetings-events__error{margin:0;padding:16px;font-size:.875rem;color:#939094}.ieeesa-upcoming-meetings-events__error{color:#ba0c2f}.ieeesa-upcoming-meetings-events--mobile .ieeesa-upcoming-meetings-events__header{flex-wrap:wrap}\n"] }]
|
|
1389
|
+
], encapsulation: ViewEncapsulation.None, template: "<section\r\n class=\"ieeesa-upcoming-meetings-events\"\r\n [class.ieeesa-upcoming-meetings-events--mobile]=\"isMobileView\"\r\n>\r\n <header class=\"ieeesa-upcoming-meetings-events__header\">\r\n <!-- Section title (Req 5.1). -->\r\n <div class=\"ieeesa-upcoming-meetings-events__heading\">\r\n <h2 class=\"ieeesa-upcoming-meetings-events__title\">\r\n {{ constants.upcomingSection.title }}\r\n </h2>\r\n </div>\r\n\r\n <!-- View All link + Expand/Collapse toggle (Req 5.1, 5.2, 5.3, 5.4, 14.3). -->\r\n <div class=\"ieeesa-upcoming-meetings-events__actions\">\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-upcoming-meetings-events__view-all\"\r\n [attr.aria-label]=\"constants.upcomingSection.ariaLabel.viewAll\"\r\n (click)=\"onViewAll()\"\r\n >\r\n {{ constants.upcomingSection.viewAllLabel }}\r\n </button>\r\n\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-upcoming-meetings-events__toggle\"\r\n [attr.aria-expanded]=\"isExpanded\"\r\n [attr.aria-label]=\"constants.upcomingSection.ariaLabel.toggle\"\r\n (click)=\"onToggleExpanded()\"\r\n >\r\n <span>{{ isExpanded ? constants.upcomingSection.collapseLabel : constants.upcomingSection.expandLabel }}</span>\r\n <i\r\n class=\"fa-solid\"\r\n [ngClass]=\"isExpanded ? 'fa-chevron-up' : 'fa-chevron-down'\"\r\n aria-hidden=\"true\"\r\n ></i>\r\n </button>\r\n </div>\r\n </header>\r\n\r\n <!-- Collapsed summary: events / meetings / open-for-attendance counts.\r\n The open-for-attendance segment is green bold per Figma. -->\r\n <p\r\n *ngIf=\"!isExpanded && sectionState === sectionStates.LOADED\"\r\n class=\"ieeesa-upcoming-meetings-events__summary\"\r\n >\r\n {{ eventCount }} events · {{ totalMeetingCount }} meetings ·\r\n <span class=\"ieeesa-upcoming-meetings-events__summary-open\">\r\n {{ totalOpenForAttendanceCount }} open for attendance\r\n </span>\r\n </p>\r\n\r\n <!-- Card list, shown only while expanded (Req 5.4). -->\r\n <div *ngIf=\"isExpanded\" class=\"ieeesa-upcoming-meetings-events__body\">\r\n <!-- Loader region (Req 13.1). -->\r\n <div\r\n *ngIf=\"sectionState === sectionStates.LOADING\"\r\n class=\"ieeesa-upcoming-meetings-events__loader\"\r\n >\r\n <ieeesa-loader></ieeesa-loader>\r\n </div>\r\n\r\n <!-- Content region: one card per event preserving input order (Req 5.5, 5.6, 13.2). -->\r\n <div\r\n *ngIf=\"sectionState === sectionStates.LOADED\"\r\n class=\"ieeesa-upcoming-meetings-events__cards\"\r\n >\r\n <ieeesa-event-group-card\r\n *ngFor=\"let event of pagedEvents; trackBy: trackByEventId\"\r\n [event]=\"event\"\r\n [permissions]=\"permissions\"\r\n [attendanceStates]=\"attendanceStates\"\r\n [inFlightMeetingIds]=\"inFlightMeetingIds\"\r\n [isMobileView]=\"isMobileView\"\r\n (viewEvent)=\"onViewEvent($event)\"\r\n (openMeeting)=\"onOpenMeeting($event)\"\r\n (logAttendance)=\"onLogAttendance($event)\"\r\n (leaveMeeting)=\"onLeaveMeeting($event)\"\r\n (pageChange)=\"onMeetingPageChange(event.eventId, $event)\"\r\n (loadMeetings)=\"onLoadEventMeetings(event.eventId, $event)\"\r\n (navigateToMeeting)=\"onNavigateToMeeting($event)\"\r\n ></ieeesa-event-group-card>\r\n\r\n <!-- Section-level paginator: 5 events/meetings per page (Req 3.x, design). -->\r\n <div\r\n *ngIf=\"totalItems > sectionPageSize\"\r\n class=\"ieeesa-upcoming-meetings-events__paginator\"\r\n >\r\n <span class=\"ieeesa-upcoming-meetings-events__paginator-range\">\r\n {{ sectionRangeLabel }}\r\n </span>\r\n <mat-paginator\r\n class=\"ieeesa-upcoming-meetings-events__paginator-control\"\r\n [pageIndex]=\"sectionPageIndex\"\r\n [pageSize]=\"sectionPageSize\"\r\n [length]=\"totalItems\"\r\n [hidePageSize]=\"true\"\r\n (page)=\"onSectionPageChange($event)\"\r\n ></mat-paginator>\r\n </div>\r\n </div>\r\n\r\n <!-- Empty-state region (Req 13.3). -->\r\n <p\r\n *ngIf=\"sectionState === sectionStates.EMPTY\"\r\n class=\"ieeesa-upcoming-meetings-events__empty\"\r\n >\r\n {{ constants.upcomingSection.emptyMessage }}\r\n </p>\r\n\r\n <!-- Error region (Req 13.5). -->\r\n <p\r\n *ngIf=\"sectionState === sectionStates.ERROR\"\r\n class=\"ieeesa-upcoming-meetings-events__error\"\r\n role=\"alert\"\r\n >\r\n {{ constants.upcomingSection.errorMessage }}\r\n </p>\r\n </div>\r\n</section>\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-upcoming-meetings-events{display:flex;flex-direction:column;gap:16px;background-color:#fff;border-radius:12px;box-shadow:0 1px 2px #0003;border:1px solid #e2e8f0;padding:20px 24px}.ieeesa-upcoming-meetings-events__header{display:flex;align-items:center;justify-content:space-between;gap:16px}.ieeesa-upcoming-meetings-events__heading{display:flex;min-width:0}.ieeesa-upcoming-meetings-events__title{margin:0;font-family:Calibri Bold;font-weight:700;font-size:18px;color:#0f172a}.ieeesa-upcoming-meetings-events__actions{display:flex;align-items:center;gap:16px}.ieeesa-upcoming-meetings-events__view-all{flex-shrink:0;background:none;border:none;padding:0;cursor:pointer;font-family:Calibri Bold;font-weight:700;font-size:18px;color:#00629b}.ieeesa-upcoming-meetings-events__view-all:hover{text-decoration:underline}.ieeesa-upcoming-meetings-events__toggle{display:inline-flex;align-items:center;gap:8px;padding:6px 14px;border:1px solid #dbe2eb;border-radius:8px;background-color:#fff;cursor:pointer;font-family:Calibri Bold;font-weight:700;font-size:18px;color:#00629b}.ieeesa-upcoming-meetings-events__toggle:hover{border-color:#00629b}.ieeesa-upcoming-meetings-events__toggle i{font-size:.75rem}.ieeesa-upcoming-meetings-events__summary{margin:0;font-size:.875rem;color:#939094}.ieeesa-upcoming-meetings-events__summary-open{font-family:Calibri Bold;font-weight:700;color:#15803d}.ieeesa-upcoming-meetings-events__body{display:flex;flex-direction:column}.ieeesa-upcoming-meetings-events__loader{display:flex;align-items:center;justify-content:center;padding:24px}.ieeesa-upcoming-meetings-events__cards{display:flex;flex-direction:column;gap:16px}.ieeesa-upcoming-meetings-events__paginator{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:12px;padding-top:8px}.ieeesa-upcoming-meetings-events__paginator-range{font-size:.8125rem;color:#939094}.ieeesa-upcoming-meetings-events__empty,.ieeesa-upcoming-meetings-events__error{margin:0;padding:16px;font-size:.875rem;color:#939094}.ieeesa-upcoming-meetings-events__error{color:#ba0c2f}.ieeesa-upcoming-meetings-events--mobile .ieeesa-upcoming-meetings-events__header{flex-wrap:wrap}\n"] }]
|
|
1209
1390
|
}], propDecorators: { events: [{
|
|
1210
1391
|
type: Input
|
|
1211
1392
|
}], sectionState: [{
|
|
@@ -1232,6 +1413,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
1232
1413
|
type: Output
|
|
1233
1414
|
}], loadEventMeetings: [{
|
|
1234
1415
|
type: Output
|
|
1416
|
+
}], navigateToMeeting: [{
|
|
1417
|
+
type: Output
|
|
1235
1418
|
}], expanded: [{
|
|
1236
1419
|
type: Input
|
|
1237
1420
|
}], expandedChange: [{
|
|
@@ -1697,7 +1880,7 @@ class YourGroupsComponent {
|
|
|
1697
1880
|
this.visibleRows = rows;
|
|
1698
1881
|
}
|
|
1699
1882
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: YourGroupsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1700
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: YourGroupsComponent, isStandalone: true, selector: "ieeesa-your-groups", inputs: { groups: "groups", sectionState: "sectionState", totalGroups: "totalGroups", pageIndex: "pageIndex", pageSize: "pageSize", expanded: "expanded" }, outputs: { viewAllGroups: "viewAllGroups", pageChange: "pageChange", expandedChange: "expandedChange" }, ngImport: i0, template: "<section class=\"ieeesa-your-groups\">\r\n <!-- Header: title + count, View All link, collapse/expand toggle -->\r\n <div class=\"ieeesa-your-groups__header\">\r\n <div class=\"ieeesa-your-groups__heading\">\r\n <h2 class=\"ieeesa-your-groups__title m-0\">{{ texts?.title }}</h2>\r\n </div>\r\n\r\n <div class=\"ieeesa-your-groups__actions\">\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-your-groups__view-all\"\r\n [attr.aria-label]=\"texts?.ariaLabel?.viewAll\"\r\n (click)=\"onViewAll()\"\r\n >\r\n {{ texts?.viewAllLabel }}\r\n </button>\r\n\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-your-groups__toggle\"\r\n [attr.aria-expanded]=\"isExpanded\"\r\n [attr.aria-label]=\"texts?.ariaLabel?.toggle\"\r\n (click)=\"onToggleExpand()\"\r\n >\r\n <span>{{ isExpanded ? texts?.collapseLabel : texts?.expandLabel }}</span>\r\n <i\r\n class=\"fa-solid\"\r\n [ngClass]=\"isExpanded ? 'fa-chevron-up' : 'fa-chevron-down'\"\r\n aria-hidden=\"true\"\r\n ></i>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <!-- Body: only when the card is expanded. -->\r\n <div class=\"ieeesa-your-groups__body\" *ngIf=\"isExpanded\">\r\n <ieeesa-loader\r\n *ngIf=\"sectionState === sectionStates.LOADING\"\r\n ></ieeesa-loader>\r\n\r\n <p\r\n *ngIf=\"sectionState === sectionStates.ERROR\"\r\n class=\"ieeesa-your-groups__message ieeesa-your-groups__message--error\"\r\n role=\"alert\"\r\n >\r\n {{ texts?.errorMessage }}\r\n </p>\r\n\r\n <p\r\n *ngIf=\"sectionState === sectionStates.EMPTY\"\r\n class=\"ieeesa-your-groups__message\"\r\n role=\"status\"\r\n >\r\n {{ texts?.emptyMessage }}\r\n </p>\r\n\r\n <ng-container *ngIf=\"sectionState === sectionStates.LOADED\">\r\n <table class=\"ieeesa-your-groups__table\">\r\n <thead>\r\n <tr>\r\n <th scope=\"col\">{{ texts?.columns?.group }}</th>\r\n <th scope=\"col\">{{ texts?.columns?.type }}</th>\r\n <th scope=\"col\">{{ texts?.columns?.officerRole }}</th>\r\n <th scope=\"col\">{{ texts?.columns?.affiliation }}</th>\r\n <th scope=\"col\">{{ texts?.columns?.memberLevel }}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let row of visibleRows; trackBy: trackByRow\">\r\n <!-- GROUP ROW -->\r\n <ng-container *ngIf=\"row.kind === 'group'\">\r\n <td class=\"ieeesa-your-groups__group-cell\">\r\n <!-- Group row toggle (level -1): reveals the first hierarchy\r\n node. Same shared icon button as the Groups tree. -->\r\n <ieeesa-icon-button\r\n *ngIf=\"isLevelExpandable(row.group!, -1)\"\r\n class=\"ieeesa-your-groups__hierarchy-toggle\"\r\n [iconButton]=\"getToggleButton(row.group!, -1)\"\r\n [ariaExpanded]=\"isLevelExpanded(row.group!, -1)\"\r\n (iconButtonClick)=\"onToggleLevel(row.group!, -1)\"\r\n ></ieeesa-icon-button>\r\n <!-- Leaf group (no hierarchy): spacer keeps names aligned. -->\r\n <span\r\n *ngIf=\"!isLevelExpandable(row.group!, -1)\"\r\n class=\"ieeesa-your-groups__toggle-spacer\"\r\n aria-hidden=\"true\"\r\n ></span>\r\n <span class=\"ieeesa-your-groups__group-name\">\r\n {{ row.group!.group }}\r\n </span>\r\n </td>\r\n <td>{{ row.group!.type }}</td>\r\n <td>{{ row.group!.officerRole }}</td>\r\n <td>{{ row.group!.affiliation }}</td>\r\n <td>\r\n <span\r\n class=\"ieeesa-your-groups__badge\"\r\n [ngClass]=\"resolveBadgeClass(row.group!.memberLevel)\"\r\n >\r\n {{ row.group!.memberLevel }}\r\n </span>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- HIERARCHY (ancestor) ROW -->\r\n <ng-container *ngIf=\"row.kind === 'hierarchy'\">\r\n <td class=\"ieeesa-your-groups__group-cell ieeesa-your-groups__hierarchy-cell\">\r\n <span\r\n class=\"ieeesa-your-groups__indent\"\r\n [style.width.px]=\"row.level * indentPerLevel\"\r\n aria-hidden=\"true\"\r\n ></span>\r\n <!-- This node's own +/- toggle, when it has a further child to\r\n reveal (step-by-step drill-down like the Groups tree). -->\r\n <ieeesa-icon-button\r\n *ngIf=\"isLevelExpandable(row.group!, row.nodeIndex!)\"\r\n class=\"ieeesa-your-groups__hierarchy-toggle\"\r\n [iconButton]=\"getToggleButton(row.group!, row.nodeIndex!)\"\r\n [ariaExpanded]=\"isLevelExpanded(row.group!, row.nodeIndex!)\"\r\n (iconButtonClick)=\"onToggleLevel(row.group!, row.nodeIndex!)\"\r\n ></ieeesa-icon-button>\r\n <!-- Leaf node: spacer keeps the name aligned with parent nodes\r\n (same footprint as the toggle), no connector arrow. -->\r\n <span\r\n *ngIf=\"!isLevelExpandable(row.group!, row.nodeIndex!)\"\r\n class=\"ieeesa-your-groups__toggle-spacer\"\r\n aria-hidden=\"true\"\r\n ></span>\r\n <span class=\"ieeesa-your-groups__hierarchy-name\">\r\n {{ row.node!.groupName }}\r\n <span\r\n *ngIf=\"row.node!.groupAcronym\"\r\n class=\"ieeesa-your-groups__hierarchy-acronym\"\r\n >\r\n ({{ row.node!.groupAcronym }})\r\n </span>\r\n </span>\r\n </td>\r\n <td colspan=\"4\"></td>\r\n </ng-container>\r\n </tr>\r\n </tbody>\r\n </table>\r\n\r\n <!-- Pagination: the same Angular Material paginator the shared data-table\r\n uses \u2014 it provides the \"Items per page\" dropdown, range label, and\r\n prev/next controls. -->\r\n <mat-paginator\r\n *ngIf=\"groupCount > 0\"\r\n class=\"ieeesa-your-groups__paginator\"\r\n [length]=\"groupCount\"\r\n [pageSize]=\"pageSize\"\r\n [pageIndex]=\"pageIndex\"\r\n [pageSizeOptions]=\"pageSizeOptions\"\r\n (page)=\"onPaginatorChange($event)\"\r\n ></mat-paginator>\r\n </ng-container>\r\n </div>\r\n</section>\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-your-groups{display:block;background-color:#fff;border-radius:12px;box-shadow:0 1px 2px #0003;padding:20px 24px;border:1px solid #E2E8F0}.ieeesa-your-groups__header{display:flex;align-items:center;justify-content:space-between;gap:16px}.ieeesa-your-groups__heading{display:flex;flex-direction:column;gap:2px}.ieeesa-your-groups__title{font-family:Calibri Bold;font-weight:700;font-size:18px;color:#0f172a}.ieeesa-your-groups__count{font-family:Calibri Regular;font-size:.75rem;color:#777a7e}.ieeesa-your-groups__actions{display:flex;align-items:center;gap:16px}.ieeesa-your-groups__view-all{background:none;border:none;padding:0;cursor:pointer;font-family:Calibri Bold;font-weight:700;font-size:18px;color:#00629b}.ieeesa-your-groups__view-all:hover{text-decoration:underline}.ieeesa-your-groups__toggle{display:inline-flex;align-items:center;gap:8px;padding:6px 14px;border:1px solid #dbe2eb;border-radius:8px;background-color:#fff;cursor:pointer;font-family:Calibri Bold;font-weight:700;font-size:18px;color:#00629b}.ieeesa-your-groups__toggle:hover{border-color:#00629b}.ieeesa-your-groups__toggle i{font-size:.75rem}.ieeesa-your-groups__body{margin-top:16px}.ieeesa-your-groups__message{text-align:center;padding:32px 0;font-family:Calibri Regular;font-size:.875rem;color:#777a7e}.ieeesa-your-groups__message--error{color:#ba0c2f}.ieeesa-your-groups__table{width:100%;border-collapse:collapse}.ieeesa-your-groups__table th,.ieeesa-your-groups__table td{text-align:left;padding:14px 16px;border-bottom:1px solid #dbe2eb;vertical-align:middle}.ieeesa-your-groups__table th{background-color:#f4f5f7;color:#333436;font-family:Calibri Bold;font-weight:700;font-size:.875rem}.ieeesa-your-groups__table td{color:#333436;font-size:.875rem}.ieeesa-your-groups__table tbody tr:nth-child(2n) td{background-color:#f8fcff}.ieeesa-your-groups__group-cell{display:flex;align-items:center;gap:10px}.ieeesa-your-groups__indent{flex:0 0 auto;display:inline-block}.ieeesa-your-groups__hierarchy-toggle{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;line-height:0}.ieeesa-your-groups__hierarchy-toggle ::ng-deep .ieeesa-icon-button{display:inline-flex;align-items:flex-start!important;justify-content:center;width:24px;height:24px;min-width:0;padding:0;margin:0;line-height:0}.ieeesa-your-groups__hierarchy-toggle ::ng-deep .ieeesa-icon-button__svg{width:24px;height:24px;display:block}.ieeesa-your-groups__toggle-spacer{flex:0 0 auto;display:inline-block;width:24px;height:24px}.ieeesa-your-groups__group-name{color:#00629b;font-family:Calibri Bold;font-weight:700}.ieeesa-your-groups__hierarchy-cell{gap:6px}.ieeesa-your-groups__hierarchy-name{color:#333436}.ieeesa-your-groups__hierarchy-acronym{color:#777a7e}.ieeesa-your-groups__badge{display:inline-flex;align-items:center;padding:.125em .75em;border-radius:1em;font-size:.875rem;white-space:nowrap}.ieeesa-your-groups__badge--success{color:#2e7d32;background-color:#2e7d321f}.ieeesa-your-groups__badge--warning{color:#b35600;background-color:#b356001f}.ieeesa-your-groups__paginator{margin-top:8px}.ieeesa-your-groups__paginator ::ng-deep .mat-mdc-paginator-container{justify-content:flex-end}.ieeesa-your-groups__paginator ::ng-deep .mat-mdc-paginator{background-color:transparent}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatPaginatorModule }, { kind: "component", type: i2.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }, { kind: "component", type: LoaderComponent, selector: "ieeesa-loader", inputs: ["diameter"] }, { kind: "component", type: IconButtonComponent, selector: "ieeesa-icon-button", inputs: ["iconButton", "isLabelNeeded"], outputs: ["iconButtonClick"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
1883
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: YourGroupsComponent, isStandalone: true, selector: "ieeesa-your-groups", inputs: { groups: "groups", sectionState: "sectionState", totalGroups: "totalGroups", pageIndex: "pageIndex", pageSize: "pageSize", expanded: "expanded" }, outputs: { viewAllGroups: "viewAllGroups", pageChange: "pageChange", expandedChange: "expandedChange" }, ngImport: i0, template: "<section class=\"ieeesa-your-groups\">\r\n <!-- Header: title + count, View All link, collapse/expand toggle -->\r\n <div class=\"ieeesa-your-groups__header\">\r\n <div class=\"ieeesa-your-groups__heading\">\r\n <h2 class=\"ieeesa-your-groups__title m-0\">{{ texts?.title }}</h2>\r\n </div>\r\n\r\n <div class=\"ieeesa-your-groups__actions\">\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-your-groups__view-all\"\r\n [attr.aria-label]=\"texts?.ariaLabel?.viewAll\"\r\n (click)=\"onViewAll()\"\r\n >\r\n {{ texts?.viewAllLabel }}\r\n </button>\r\n\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-your-groups__toggle\"\r\n [attr.aria-expanded]=\"isExpanded\"\r\n [attr.aria-label]=\"texts?.ariaLabel?.toggle\"\r\n (click)=\"onToggleExpand()\"\r\n >\r\n <span>{{ isExpanded ? texts?.collapseLabel : texts?.expandLabel }}</span>\r\n <i\r\n class=\"fa-solid\"\r\n [ngClass]=\"isExpanded ? 'fa-chevron-up' : 'fa-chevron-down'\"\r\n aria-hidden=\"true\"\r\n ></i>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <!-- Body: only when the card is expanded. -->\r\n <div class=\"ieeesa-your-groups__body\" *ngIf=\"isExpanded\">\r\n <ieeesa-loader\r\n *ngIf=\"sectionState === sectionStates.LOADING\"\r\n ></ieeesa-loader>\r\n\r\n <p\r\n *ngIf=\"sectionState === sectionStates.ERROR\"\r\n class=\"ieeesa-your-groups__message ieeesa-your-groups__message--error\"\r\n role=\"alert\"\r\n >\r\n {{ texts?.errorMessage }}\r\n </p>\r\n\r\n <p\r\n *ngIf=\"sectionState === sectionStates.EMPTY\"\r\n class=\"ieeesa-your-groups__message\"\r\n role=\"status\"\r\n >\r\n {{ texts?.emptyMessage }}\r\n </p>\r\n\r\n <ng-container *ngIf=\"sectionState === sectionStates.LOADED\">\r\n <table class=\"ieeesa-your-groups__table\">\r\n <thead>\r\n <tr>\r\n <th scope=\"col\">{{ texts?.columns?.group }}</th>\r\n <th scope=\"col\">{{ texts?.columns?.type }}</th>\r\n <th scope=\"col\">{{ texts?.columns?.officerRole }}</th>\r\n <th scope=\"col\">{{ texts?.columns?.affiliation }}</th>\r\n <th scope=\"col\">{{ texts?.columns?.memberLevel }}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let row of visibleRows; trackBy: trackByRow\">\r\n <!-- GROUP ROW -->\r\n <ng-container *ngIf=\"row.kind === 'group'\">\r\n <td class=\"ieeesa-your-groups__group-cell\">\r\n <!-- Group row toggle (level -1): reveals the first hierarchy\r\n node. Same shared icon button as the Groups tree. -->\r\n <ieeesa-icon-button\r\n *ngIf=\"isLevelExpandable(row.group!, -1)\"\r\n class=\"ieeesa-your-groups__hierarchy-toggle\"\r\n [iconButton]=\"getToggleButton(row.group!, -1)\"\r\n [ariaExpanded]=\"isLevelExpanded(row.group!, -1)\"\r\n (iconButtonClick)=\"onToggleLevel(row.group!, -1)\"\r\n ></ieeesa-icon-button>\r\n <!-- Leaf group (no hierarchy): spacer keeps names aligned. -->\r\n <span\r\n *ngIf=\"!isLevelExpandable(row.group!, -1)\"\r\n class=\"ieeesa-your-groups__toggle-spacer\"\r\n aria-hidden=\"true\"\r\n ></span>\r\n <span class=\"ieeesa-your-groups__group-name\">\r\n {{ row.group!.group }}\r\n </span>\r\n </td>\r\n <td>{{ row.group!.type }}</td>\r\n <td>{{ row.group!.officerRole }}</td>\r\n <td>{{ row.group!.affiliation }}</td>\r\n <td>\r\n <span\r\n class=\"ieeesa-your-groups__badge\"\r\n [ngClass]=\"resolveBadgeClass(row.group!.memberLevel)\"\r\n >\r\n {{ row.group!.memberLevel }}\r\n </span>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- HIERARCHY (ancestor) ROW -->\r\n <ng-container *ngIf=\"row.kind === 'hierarchy'\">\r\n <td class=\"ieeesa-your-groups__group-cell ieeesa-your-groups__hierarchy-cell\">\r\n <span\r\n class=\"ieeesa-your-groups__indent\"\r\n [style.width.px]=\"row.level * indentPerLevel\"\r\n aria-hidden=\"true\"\r\n ></span>\r\n <!-- This node's own +/- toggle, when it has a further child to\r\n reveal (step-by-step drill-down like the Groups tree). -->\r\n <ieeesa-icon-button\r\n *ngIf=\"isLevelExpandable(row.group!, row.nodeIndex!)\"\r\n class=\"ieeesa-your-groups__hierarchy-toggle\"\r\n [iconButton]=\"getToggleButton(row.group!, row.nodeIndex!)\"\r\n [ariaExpanded]=\"isLevelExpanded(row.group!, row.nodeIndex!)\"\r\n (iconButtonClick)=\"onToggleLevel(row.group!, row.nodeIndex!)\"\r\n ></ieeesa-icon-button>\r\n <!-- Leaf node: spacer keeps the name aligned with parent nodes\r\n (same footprint as the toggle), no connector arrow. -->\r\n <span\r\n *ngIf=\"!isLevelExpandable(row.group!, row.nodeIndex!)\"\r\n class=\"ieeesa-your-groups__toggle-spacer\"\r\n aria-hidden=\"true\"\r\n ></span>\r\n <span class=\"ieeesa-your-groups__hierarchy-name\">\r\n {{ row.node!.groupName }}\r\n <span\r\n *ngIf=\"row.node!.groupAcronym\"\r\n class=\"ieeesa-your-groups__hierarchy-acronym\"\r\n >\r\n ({{ row.node!.groupAcronym }})\r\n </span>\r\n </span>\r\n </td>\r\n <td colspan=\"4\"></td>\r\n </ng-container>\r\n </tr>\r\n </tbody>\r\n </table>\r\n\r\n <!-- Pagination: the same Angular Material paginator the shared data-table\r\n uses \u2014 it provides the \"Items per page\" dropdown, range label, and\r\n prev/next controls. -->\r\n <mat-paginator\r\n *ngIf=\"groupCount > 0\"\r\n class=\"ieeesa-your-groups__paginator\"\r\n [length]=\"groupCount\"\r\n [pageSize]=\"pageSize\"\r\n [pageIndex]=\"pageIndex\"\r\n [pageSizeOptions]=\"pageSizeOptions\"\r\n (page)=\"onPaginatorChange($event)\"\r\n ></mat-paginator>\r\n </ng-container>\r\n </div>\r\n</section>\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-your-groups{display:block;background-color:#fff;border-radius:12px;box-shadow:0 1px 2px #0003;padding:20px 24px;border:1px solid #E2E8F0}.ieeesa-your-groups__header{display:flex;align-items:center;justify-content:space-between;gap:16px}.ieeesa-your-groups__heading{display:flex;flex-direction:column;gap:2px}.ieeesa-your-groups__title{font-family:Calibri Bold;font-weight:700;font-size:18px;color:#0f172a}.ieeesa-your-groups__count{font-family:Calibri Regular;font-size:.75rem;color:#777a7e}.ieeesa-your-groups__actions{display:flex;align-items:center;gap:16px}.ieeesa-your-groups__view-all{background:none;border:none;padding:0;cursor:pointer;font-family:Calibri Bold;font-weight:700;font-size:18px;color:#00629b}.ieeesa-your-groups__view-all:hover{text-decoration:underline}.ieeesa-your-groups__toggle{display:inline-flex;align-items:center;gap:8px;padding:6px 14px;border:1px solid #dbe2eb;border-radius:8px;background-color:#fff;cursor:pointer;font-family:Calibri Bold;font-weight:700;font-size:18px;color:#00629b}.ieeesa-your-groups__toggle:hover{border-color:#00629b}.ieeesa-your-groups__toggle i{font-size:.75rem}.ieeesa-your-groups__body{margin-top:16px}.ieeesa-your-groups__message{text-align:center;padding:32px 0;font-family:Calibri Regular;font-size:.875rem;color:#777a7e}.ieeesa-your-groups__message--error{color:#ba0c2f}.ieeesa-your-groups__table{width:100%;border-collapse:collapse}.ieeesa-your-groups__table th,.ieeesa-your-groups__table td{text-align:left;padding:14px 16px;border-bottom:1px solid #dbe2eb;vertical-align:middle}.ieeesa-your-groups__table th{background-color:#f4f5f7;color:#333436;font-family:Calibri Bold;font-weight:700;font-size:.875rem}.ieeesa-your-groups__table td{color:#333436;font-size:.875rem}.ieeesa-your-groups__table tbody tr:nth-child(2n) td{background-color:#f8fcff}.ieeesa-your-groups__group-cell{display:flex;align-items:center;gap:10px}.ieeesa-your-groups__indent{flex:0 0 auto;display:inline-block}.ieeesa-your-groups__hierarchy-toggle{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;line-height:0}.ieeesa-your-groups__hierarchy-toggle .ieeesa-icon-button{display:inline-flex;align-items:flex-start!important;justify-content:center;width:24px;height:24px;min-width:0;padding:0;margin:0;line-height:0}.ieeesa-your-groups__hierarchy-toggle .ieeesa-icon-button__svg{width:24px;height:24px;display:block}.ieeesa-your-groups__toggle-spacer{flex:0 0 auto;display:inline-block;width:24px;height:24px}.ieeesa-your-groups__group-name{color:#00629b;font-family:Calibri Bold;font-weight:700}.ieeesa-your-groups__hierarchy-cell{gap:6px}.ieeesa-your-groups__hierarchy-name{color:#333436}.ieeesa-your-groups__hierarchy-acronym{color:#777a7e}.ieeesa-your-groups__badge{display:inline-flex;align-items:center;padding:.125em .75em;border-radius:1em;font-size:.875rem;white-space:nowrap}.ieeesa-your-groups__badge--success{color:#2e7d32;background-color:#2e7d321f}.ieeesa-your-groups__badge--warning{color:#b35600;background-color:#b356001f}.ieeesa-your-groups__paginator{margin-top:8px}.ieeesa-your-groups__paginator ::ng-deep .mat-mdc-paginator-container{justify-content:flex-end}.ieeesa-your-groups__paginator ::ng-deep .mat-mdc-paginator{background-color:transparent}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatPaginatorModule }, { kind: "component", type: i2.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }, { kind: "component", type: LoaderComponent, selector: "ieeesa-loader", inputs: ["diameter"] }, { kind: "component", type: IconButtonComponent, selector: "ieeesa-icon-button", inputs: ["iconButton", "isLabelNeeded"], outputs: ["iconButtonClick"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
1701
1884
|
}
|
|
1702
1885
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: YourGroupsComponent, decorators: [{
|
|
1703
1886
|
type: Component,
|
|
@@ -1706,7 +1889,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
1706
1889
|
MatPaginatorModule,
|
|
1707
1890
|
LoaderComponent,
|
|
1708
1891
|
IconButtonComponent,
|
|
1709
|
-
], encapsulation: ViewEncapsulation.None, template: "<section class=\"ieeesa-your-groups\">\r\n <!-- Header: title + count, View All link, collapse/expand toggle -->\r\n <div class=\"ieeesa-your-groups__header\">\r\n <div class=\"ieeesa-your-groups__heading\">\r\n <h2 class=\"ieeesa-your-groups__title m-0\">{{ texts?.title }}</h2>\r\n </div>\r\n\r\n <div class=\"ieeesa-your-groups__actions\">\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-your-groups__view-all\"\r\n [attr.aria-label]=\"texts?.ariaLabel?.viewAll\"\r\n (click)=\"onViewAll()\"\r\n >\r\n {{ texts?.viewAllLabel }}\r\n </button>\r\n\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-your-groups__toggle\"\r\n [attr.aria-expanded]=\"isExpanded\"\r\n [attr.aria-label]=\"texts?.ariaLabel?.toggle\"\r\n (click)=\"onToggleExpand()\"\r\n >\r\n <span>{{ isExpanded ? texts?.collapseLabel : texts?.expandLabel }}</span>\r\n <i\r\n class=\"fa-solid\"\r\n [ngClass]=\"isExpanded ? 'fa-chevron-up' : 'fa-chevron-down'\"\r\n aria-hidden=\"true\"\r\n ></i>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <!-- Body: only when the card is expanded. -->\r\n <div class=\"ieeesa-your-groups__body\" *ngIf=\"isExpanded\">\r\n <ieeesa-loader\r\n *ngIf=\"sectionState === sectionStates.LOADING\"\r\n ></ieeesa-loader>\r\n\r\n <p\r\n *ngIf=\"sectionState === sectionStates.ERROR\"\r\n class=\"ieeesa-your-groups__message ieeesa-your-groups__message--error\"\r\n role=\"alert\"\r\n >\r\n {{ texts?.errorMessage }}\r\n </p>\r\n\r\n <p\r\n *ngIf=\"sectionState === sectionStates.EMPTY\"\r\n class=\"ieeesa-your-groups__message\"\r\n role=\"status\"\r\n >\r\n {{ texts?.emptyMessage }}\r\n </p>\r\n\r\n <ng-container *ngIf=\"sectionState === sectionStates.LOADED\">\r\n <table class=\"ieeesa-your-groups__table\">\r\n <thead>\r\n <tr>\r\n <th scope=\"col\">{{ texts?.columns?.group }}</th>\r\n <th scope=\"col\">{{ texts?.columns?.type }}</th>\r\n <th scope=\"col\">{{ texts?.columns?.officerRole }}</th>\r\n <th scope=\"col\">{{ texts?.columns?.affiliation }}</th>\r\n <th scope=\"col\">{{ texts?.columns?.memberLevel }}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let row of visibleRows; trackBy: trackByRow\">\r\n <!-- GROUP ROW -->\r\n <ng-container *ngIf=\"row.kind === 'group'\">\r\n <td class=\"ieeesa-your-groups__group-cell\">\r\n <!-- Group row toggle (level -1): reveals the first hierarchy\r\n node. Same shared icon button as the Groups tree. -->\r\n <ieeesa-icon-button\r\n *ngIf=\"isLevelExpandable(row.group!, -1)\"\r\n class=\"ieeesa-your-groups__hierarchy-toggle\"\r\n [iconButton]=\"getToggleButton(row.group!, -1)\"\r\n [ariaExpanded]=\"isLevelExpanded(row.group!, -1)\"\r\n (iconButtonClick)=\"onToggleLevel(row.group!, -1)\"\r\n ></ieeesa-icon-button>\r\n <!-- Leaf group (no hierarchy): spacer keeps names aligned. -->\r\n <span\r\n *ngIf=\"!isLevelExpandable(row.group!, -1)\"\r\n class=\"ieeesa-your-groups__toggle-spacer\"\r\n aria-hidden=\"true\"\r\n ></span>\r\n <span class=\"ieeesa-your-groups__group-name\">\r\n {{ row.group!.group }}\r\n </span>\r\n </td>\r\n <td>{{ row.group!.type }}</td>\r\n <td>{{ row.group!.officerRole }}</td>\r\n <td>{{ row.group!.affiliation }}</td>\r\n <td>\r\n <span\r\n class=\"ieeesa-your-groups__badge\"\r\n [ngClass]=\"resolveBadgeClass(row.group!.memberLevel)\"\r\n >\r\n {{ row.group!.memberLevel }}\r\n </span>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- HIERARCHY (ancestor) ROW -->\r\n <ng-container *ngIf=\"row.kind === 'hierarchy'\">\r\n <td class=\"ieeesa-your-groups__group-cell ieeesa-your-groups__hierarchy-cell\">\r\n <span\r\n class=\"ieeesa-your-groups__indent\"\r\n [style.width.px]=\"row.level * indentPerLevel\"\r\n aria-hidden=\"true\"\r\n ></span>\r\n <!-- This node's own +/- toggle, when it has a further child to\r\n reveal (step-by-step drill-down like the Groups tree). -->\r\n <ieeesa-icon-button\r\n *ngIf=\"isLevelExpandable(row.group!, row.nodeIndex!)\"\r\n class=\"ieeesa-your-groups__hierarchy-toggle\"\r\n [iconButton]=\"getToggleButton(row.group!, row.nodeIndex!)\"\r\n [ariaExpanded]=\"isLevelExpanded(row.group!, row.nodeIndex!)\"\r\n (iconButtonClick)=\"onToggleLevel(row.group!, row.nodeIndex!)\"\r\n ></ieeesa-icon-button>\r\n <!-- Leaf node: spacer keeps the name aligned with parent nodes\r\n (same footprint as the toggle), no connector arrow. -->\r\n <span\r\n *ngIf=\"!isLevelExpandable(row.group!, row.nodeIndex!)\"\r\n class=\"ieeesa-your-groups__toggle-spacer\"\r\n aria-hidden=\"true\"\r\n ></span>\r\n <span class=\"ieeesa-your-groups__hierarchy-name\">\r\n {{ row.node!.groupName }}\r\n <span\r\n *ngIf=\"row.node!.groupAcronym\"\r\n class=\"ieeesa-your-groups__hierarchy-acronym\"\r\n >\r\n ({{ row.node!.groupAcronym }})\r\n </span>\r\n </span>\r\n </td>\r\n <td colspan=\"4\"></td>\r\n </ng-container>\r\n </tr>\r\n </tbody>\r\n </table>\r\n\r\n <!-- Pagination: the same Angular Material paginator the shared data-table\r\n uses \u2014 it provides the \"Items per page\" dropdown, range label, and\r\n prev/next controls. -->\r\n <mat-paginator\r\n *ngIf=\"groupCount > 0\"\r\n class=\"ieeesa-your-groups__paginator\"\r\n [length]=\"groupCount\"\r\n [pageSize]=\"pageSize\"\r\n [pageIndex]=\"pageIndex\"\r\n [pageSizeOptions]=\"pageSizeOptions\"\r\n (page)=\"onPaginatorChange($event)\"\r\n ></mat-paginator>\r\n </ng-container>\r\n </div>\r\n</section>\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-your-groups{display:block;background-color:#fff;border-radius:12px;box-shadow:0 1px 2px #0003;padding:20px 24px;border:1px solid #E2E8F0}.ieeesa-your-groups__header{display:flex;align-items:center;justify-content:space-between;gap:16px}.ieeesa-your-groups__heading{display:flex;flex-direction:column;gap:2px}.ieeesa-your-groups__title{font-family:Calibri Bold;font-weight:700;font-size:18px;color:#0f172a}.ieeesa-your-groups__count{font-family:Calibri Regular;font-size:.75rem;color:#777a7e}.ieeesa-your-groups__actions{display:flex;align-items:center;gap:16px}.ieeesa-your-groups__view-all{background:none;border:none;padding:0;cursor:pointer;font-family:Calibri Bold;font-weight:700;font-size:18px;color:#00629b}.ieeesa-your-groups__view-all:hover{text-decoration:underline}.ieeesa-your-groups__toggle{display:inline-flex;align-items:center;gap:8px;padding:6px 14px;border:1px solid #dbe2eb;border-radius:8px;background-color:#fff;cursor:pointer;font-family:Calibri Bold;font-weight:700;font-size:18px;color:#00629b}.ieeesa-your-groups__toggle:hover{border-color:#00629b}.ieeesa-your-groups__toggle i{font-size:.75rem}.ieeesa-your-groups__body{margin-top:16px}.ieeesa-your-groups__message{text-align:center;padding:32px 0;font-family:Calibri Regular;font-size:.875rem;color:#777a7e}.ieeesa-your-groups__message--error{color:#ba0c2f}.ieeesa-your-groups__table{width:100%;border-collapse:collapse}.ieeesa-your-groups__table th,.ieeesa-your-groups__table td{text-align:left;padding:14px 16px;border-bottom:1px solid #dbe2eb;vertical-align:middle}.ieeesa-your-groups__table th{background-color:#f4f5f7;color:#333436;font-family:Calibri Bold;font-weight:700;font-size:.875rem}.ieeesa-your-groups__table td{color:#333436;font-size:.875rem}.ieeesa-your-groups__table tbody tr:nth-child(2n) td{background-color:#f8fcff}.ieeesa-your-groups__group-cell{display:flex;align-items:center;gap:10px}.ieeesa-your-groups__indent{flex:0 0 auto;display:inline-block}.ieeesa-your-groups__hierarchy-toggle{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;line-height:0}.ieeesa-your-groups__hierarchy-toggle ::ng-deep .ieeesa-icon-button{display:inline-flex;align-items:flex-start!important;justify-content:center;width:24px;height:24px;min-width:0;padding:0;margin:0;line-height:0}.ieeesa-your-groups__hierarchy-toggle ::ng-deep .ieeesa-icon-button__svg{width:24px;height:24px;display:block}.ieeesa-your-groups__toggle-spacer{flex:0 0 auto;display:inline-block;width:24px;height:24px}.ieeesa-your-groups__group-name{color:#00629b;font-family:Calibri Bold;font-weight:700}.ieeesa-your-groups__hierarchy-cell{gap:6px}.ieeesa-your-groups__hierarchy-name{color:#333436}.ieeesa-your-groups__hierarchy-acronym{color:#777a7e}.ieeesa-your-groups__badge{display:inline-flex;align-items:center;padding:.125em .75em;border-radius:1em;font-size:.875rem;white-space:nowrap}.ieeesa-your-groups__badge--success{color:#2e7d32;background-color:#2e7d321f}.ieeesa-your-groups__badge--warning{color:#b35600;background-color:#b356001f}.ieeesa-your-groups__paginator{margin-top:8px}.ieeesa-your-groups__paginator ::ng-deep .mat-mdc-paginator-container{justify-content:flex-end}.ieeesa-your-groups__paginator ::ng-deep .mat-mdc-paginator{background-color:transparent}\n"] }]
|
|
1892
|
+
], encapsulation: ViewEncapsulation.None, template: "<section class=\"ieeesa-your-groups\">\r\n <!-- Header: title + count, View All link, collapse/expand toggle -->\r\n <div class=\"ieeesa-your-groups__header\">\r\n <div class=\"ieeesa-your-groups__heading\">\r\n <h2 class=\"ieeesa-your-groups__title m-0\">{{ texts?.title }}</h2>\r\n </div>\r\n\r\n <div class=\"ieeesa-your-groups__actions\">\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-your-groups__view-all\"\r\n [attr.aria-label]=\"texts?.ariaLabel?.viewAll\"\r\n (click)=\"onViewAll()\"\r\n >\r\n {{ texts?.viewAllLabel }}\r\n </button>\r\n\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-your-groups__toggle\"\r\n [attr.aria-expanded]=\"isExpanded\"\r\n [attr.aria-label]=\"texts?.ariaLabel?.toggle\"\r\n (click)=\"onToggleExpand()\"\r\n >\r\n <span>{{ isExpanded ? texts?.collapseLabel : texts?.expandLabel }}</span>\r\n <i\r\n class=\"fa-solid\"\r\n [ngClass]=\"isExpanded ? 'fa-chevron-up' : 'fa-chevron-down'\"\r\n aria-hidden=\"true\"\r\n ></i>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <!-- Body: only when the card is expanded. -->\r\n <div class=\"ieeesa-your-groups__body\" *ngIf=\"isExpanded\">\r\n <ieeesa-loader\r\n *ngIf=\"sectionState === sectionStates.LOADING\"\r\n ></ieeesa-loader>\r\n\r\n <p\r\n *ngIf=\"sectionState === sectionStates.ERROR\"\r\n class=\"ieeesa-your-groups__message ieeesa-your-groups__message--error\"\r\n role=\"alert\"\r\n >\r\n {{ texts?.errorMessage }}\r\n </p>\r\n\r\n <p\r\n *ngIf=\"sectionState === sectionStates.EMPTY\"\r\n class=\"ieeesa-your-groups__message\"\r\n role=\"status\"\r\n >\r\n {{ texts?.emptyMessage }}\r\n </p>\r\n\r\n <ng-container *ngIf=\"sectionState === sectionStates.LOADED\">\r\n <table class=\"ieeesa-your-groups__table\">\r\n <thead>\r\n <tr>\r\n <th scope=\"col\">{{ texts?.columns?.group }}</th>\r\n <th scope=\"col\">{{ texts?.columns?.type }}</th>\r\n <th scope=\"col\">{{ texts?.columns?.officerRole }}</th>\r\n <th scope=\"col\">{{ texts?.columns?.affiliation }}</th>\r\n <th scope=\"col\">{{ texts?.columns?.memberLevel }}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let row of visibleRows; trackBy: trackByRow\">\r\n <!-- GROUP ROW -->\r\n <ng-container *ngIf=\"row.kind === 'group'\">\r\n <td class=\"ieeesa-your-groups__group-cell\">\r\n <!-- Group row toggle (level -1): reveals the first hierarchy\r\n node. Same shared icon button as the Groups tree. -->\r\n <ieeesa-icon-button\r\n *ngIf=\"isLevelExpandable(row.group!, -1)\"\r\n class=\"ieeesa-your-groups__hierarchy-toggle\"\r\n [iconButton]=\"getToggleButton(row.group!, -1)\"\r\n [ariaExpanded]=\"isLevelExpanded(row.group!, -1)\"\r\n (iconButtonClick)=\"onToggleLevel(row.group!, -1)\"\r\n ></ieeesa-icon-button>\r\n <!-- Leaf group (no hierarchy): spacer keeps names aligned. -->\r\n <span\r\n *ngIf=\"!isLevelExpandable(row.group!, -1)\"\r\n class=\"ieeesa-your-groups__toggle-spacer\"\r\n aria-hidden=\"true\"\r\n ></span>\r\n <span class=\"ieeesa-your-groups__group-name\">\r\n {{ row.group!.group }}\r\n </span>\r\n </td>\r\n <td>{{ row.group!.type }}</td>\r\n <td>{{ row.group!.officerRole }}</td>\r\n <td>{{ row.group!.affiliation }}</td>\r\n <td>\r\n <span\r\n class=\"ieeesa-your-groups__badge\"\r\n [ngClass]=\"resolveBadgeClass(row.group!.memberLevel)\"\r\n >\r\n {{ row.group!.memberLevel }}\r\n </span>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- HIERARCHY (ancestor) ROW -->\r\n <ng-container *ngIf=\"row.kind === 'hierarchy'\">\r\n <td class=\"ieeesa-your-groups__group-cell ieeesa-your-groups__hierarchy-cell\">\r\n <span\r\n class=\"ieeesa-your-groups__indent\"\r\n [style.width.px]=\"row.level * indentPerLevel\"\r\n aria-hidden=\"true\"\r\n ></span>\r\n <!-- This node's own +/- toggle, when it has a further child to\r\n reveal (step-by-step drill-down like the Groups tree). -->\r\n <ieeesa-icon-button\r\n *ngIf=\"isLevelExpandable(row.group!, row.nodeIndex!)\"\r\n class=\"ieeesa-your-groups__hierarchy-toggle\"\r\n [iconButton]=\"getToggleButton(row.group!, row.nodeIndex!)\"\r\n [ariaExpanded]=\"isLevelExpanded(row.group!, row.nodeIndex!)\"\r\n (iconButtonClick)=\"onToggleLevel(row.group!, row.nodeIndex!)\"\r\n ></ieeesa-icon-button>\r\n <!-- Leaf node: spacer keeps the name aligned with parent nodes\r\n (same footprint as the toggle), no connector arrow. -->\r\n <span\r\n *ngIf=\"!isLevelExpandable(row.group!, row.nodeIndex!)\"\r\n class=\"ieeesa-your-groups__toggle-spacer\"\r\n aria-hidden=\"true\"\r\n ></span>\r\n <span class=\"ieeesa-your-groups__hierarchy-name\">\r\n {{ row.node!.groupName }}\r\n <span\r\n *ngIf=\"row.node!.groupAcronym\"\r\n class=\"ieeesa-your-groups__hierarchy-acronym\"\r\n >\r\n ({{ row.node!.groupAcronym }})\r\n </span>\r\n </span>\r\n </td>\r\n <td colspan=\"4\"></td>\r\n </ng-container>\r\n </tr>\r\n </tbody>\r\n </table>\r\n\r\n <!-- Pagination: the same Angular Material paginator the shared data-table\r\n uses \u2014 it provides the \"Items per page\" dropdown, range label, and\r\n prev/next controls. -->\r\n <mat-paginator\r\n *ngIf=\"groupCount > 0\"\r\n class=\"ieeesa-your-groups__paginator\"\r\n [length]=\"groupCount\"\r\n [pageSize]=\"pageSize\"\r\n [pageIndex]=\"pageIndex\"\r\n [pageSizeOptions]=\"pageSizeOptions\"\r\n (page)=\"onPaginatorChange($event)\"\r\n ></mat-paginator>\r\n </ng-container>\r\n </div>\r\n</section>\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-your-groups{display:block;background-color:#fff;border-radius:12px;box-shadow:0 1px 2px #0003;padding:20px 24px;border:1px solid #E2E8F0}.ieeesa-your-groups__header{display:flex;align-items:center;justify-content:space-between;gap:16px}.ieeesa-your-groups__heading{display:flex;flex-direction:column;gap:2px}.ieeesa-your-groups__title{font-family:Calibri Bold;font-weight:700;font-size:18px;color:#0f172a}.ieeesa-your-groups__count{font-family:Calibri Regular;font-size:.75rem;color:#777a7e}.ieeesa-your-groups__actions{display:flex;align-items:center;gap:16px}.ieeesa-your-groups__view-all{background:none;border:none;padding:0;cursor:pointer;font-family:Calibri Bold;font-weight:700;font-size:18px;color:#00629b}.ieeesa-your-groups__view-all:hover{text-decoration:underline}.ieeesa-your-groups__toggle{display:inline-flex;align-items:center;gap:8px;padding:6px 14px;border:1px solid #dbe2eb;border-radius:8px;background-color:#fff;cursor:pointer;font-family:Calibri Bold;font-weight:700;font-size:18px;color:#00629b}.ieeesa-your-groups__toggle:hover{border-color:#00629b}.ieeesa-your-groups__toggle i{font-size:.75rem}.ieeesa-your-groups__body{margin-top:16px}.ieeesa-your-groups__message{text-align:center;padding:32px 0;font-family:Calibri Regular;font-size:.875rem;color:#777a7e}.ieeesa-your-groups__message--error{color:#ba0c2f}.ieeesa-your-groups__table{width:100%;border-collapse:collapse}.ieeesa-your-groups__table th,.ieeesa-your-groups__table td{text-align:left;padding:14px 16px;border-bottom:1px solid #dbe2eb;vertical-align:middle}.ieeesa-your-groups__table th{background-color:#f4f5f7;color:#333436;font-family:Calibri Bold;font-weight:700;font-size:.875rem}.ieeesa-your-groups__table td{color:#333436;font-size:.875rem}.ieeesa-your-groups__table tbody tr:nth-child(2n) td{background-color:#f8fcff}.ieeesa-your-groups__group-cell{display:flex;align-items:center;gap:10px}.ieeesa-your-groups__indent{flex:0 0 auto;display:inline-block}.ieeesa-your-groups__hierarchy-toggle{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;line-height:0}.ieeesa-your-groups__hierarchy-toggle .ieeesa-icon-button{display:inline-flex;align-items:flex-start!important;justify-content:center;width:24px;height:24px;min-width:0;padding:0;margin:0;line-height:0}.ieeesa-your-groups__hierarchy-toggle .ieeesa-icon-button__svg{width:24px;height:24px;display:block}.ieeesa-your-groups__toggle-spacer{flex:0 0 auto;display:inline-block;width:24px;height:24px}.ieeesa-your-groups__group-name{color:#00629b;font-family:Calibri Bold;font-weight:700}.ieeesa-your-groups__hierarchy-cell{gap:6px}.ieeesa-your-groups__hierarchy-name{color:#333436}.ieeesa-your-groups__hierarchy-acronym{color:#777a7e}.ieeesa-your-groups__badge{display:inline-flex;align-items:center;padding:.125em .75em;border-radius:1em;font-size:.875rem;white-space:nowrap}.ieeesa-your-groups__badge--success{color:#2e7d32;background-color:#2e7d321f}.ieeesa-your-groups__badge--warning{color:#b35600;background-color:#b356001f}.ieeesa-your-groups__paginator{margin-top:8px}.ieeesa-your-groups__paginator ::ng-deep .mat-mdc-paginator-container{justify-content:flex-end}.ieeesa-your-groups__paginator ::ng-deep .mat-mdc-paginator{background-color:transparent}\n"] }]
|
|
1710
1893
|
}], propDecorators: { groups: [{
|
|
1711
1894
|
type: Input
|
|
1712
1895
|
}], sectionState: [{
|
|
@@ -1727,10 +1910,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
1727
1910
|
type: Input
|
|
1728
1911
|
}] } });
|
|
1729
1912
|
|
|
1913
|
+
/**
|
|
1914
|
+
* Pure mappers converting the raw "home" events-&-meetings backend list/detail
|
|
1915
|
+
* items into the dashboard view models. No Angular / service dependencies so
|
|
1916
|
+
* they are trivially unit-testable and shared by {@link DashboardService}.
|
|
1917
|
+
*
|
|
1918
|
+
* Backend dates are ISO-8601 strings; callers format them with luxon at render
|
|
1919
|
+
* time. The list mapper enforces the dashboard rule that STANDALONE_MEETING rows
|
|
1920
|
+
* always sort LAST within the section.
|
|
1921
|
+
*/
|
|
1730
1922
|
/**
|
|
1731
1923
|
* Determines whether a raw list item is an EVENT (owns child meetings) or a
|
|
1732
|
-
* STANDALONE_MEETING
|
|
1733
|
-
*
|
|
1924
|
+
* STANDALONE_MEETING, using the backend `isMeetingEvent` discriminator (falling
|
|
1925
|
+
* back to `hasChildren`).
|
|
1734
1926
|
* @param {EventMeetingListItem} item - The raw list item.
|
|
1735
1927
|
* @return {UpcomingItemKind} The resolved render kind.
|
|
1736
1928
|
*/
|
|
@@ -1740,43 +1932,40 @@ function resolveItemKind(item) {
|
|
|
1740
1932
|
}
|
|
1741
1933
|
/**
|
|
1742
1934
|
* Maps a raw backend list item to the {@link UpcomingEvent} view model. EVENT
|
|
1743
|
-
* rows
|
|
1744
|
-
*
|
|
1935
|
+
* rows carry their total / open-for-attendance counts and start with an empty
|
|
1936
|
+
* `meetings` array (child meetings are lazily loaded on drill-down);
|
|
1937
|
+
* STANDALONE_MEETING rows carry their own group/location + attendance state.
|
|
1745
1938
|
* @param {EventMeetingListItem} item - The raw list item.
|
|
1746
1939
|
* @return {UpcomingEvent} The mapped view model.
|
|
1747
1940
|
*/
|
|
1748
1941
|
function mapListItemToUpcomingEvent(item) {
|
|
1749
1942
|
const kind = resolveItemKind(item);
|
|
1750
|
-
const
|
|
1751
|
-
const dayIndicator = item?.dayIndicator ??
|
|
1752
|
-
(kind === UpcomingItemKind.EVENT
|
|
1753
|
-
? computeDayIndicator(item?.startDateTime, item?.endDateTime, timezone)
|
|
1754
|
-
: '');
|
|
1943
|
+
const isEvent = kind === UpcomingItemKind.EVENT;
|
|
1755
1944
|
return {
|
|
1756
|
-
eventId: item?.id ??
|
|
1945
|
+
eventId: item?.id ?? '',
|
|
1757
1946
|
kind,
|
|
1758
|
-
|
|
1759
|
-
|
|
1760
|
-
// The list
|
|
1761
|
-
|
|
1762
|
-
dayIndicator,
|
|
1763
|
-
meetingCount:
|
|
1764
|
-
|
|
1765
|
-
|
|
1766
|
-
|
|
1947
|
+
title: item?.name ?? '',
|
|
1948
|
+
status: item?.status ?? '',
|
|
1949
|
+
// The list endpoint has no day indicator; it is populated on drill-down
|
|
1950
|
+
// from the event's currentDay / totalDays.
|
|
1951
|
+
dayIndicator: '',
|
|
1952
|
+
meetingCount: isEvent ? item?.totalMeetingCount ?? 0 : 1,
|
|
1953
|
+
openForAttendanceCount: isEvent
|
|
1954
|
+
? item?.meetingsOpenForAttendanceCount ?? 0
|
|
1955
|
+
: 0,
|
|
1767
1956
|
startDateTime: item?.startDateTime,
|
|
1768
1957
|
endDateTime: item?.endDateTime,
|
|
1769
|
-
timezone,
|
|
1958
|
+
timezone: item?.timeZone ?? '',
|
|
1770
1959
|
groupOrCommittee: item?.groupName ?? item?.groupAcronym ?? '',
|
|
1771
|
-
roomOrLocation: item?.meetingLocation ??
|
|
1772
|
-
|
|
1960
|
+
roomOrLocation: item?.meetingLocation ?? '',
|
|
1961
|
+
attendanceState: isEvent ? undefined : item?.attendanceState,
|
|
1773
1962
|
meetings: [],
|
|
1774
1963
|
};
|
|
1775
1964
|
}
|
|
1776
1965
|
/**
|
|
1777
|
-
* Maps a raw backend list
|
|
1778
|
-
*
|
|
1779
|
-
*
|
|
1966
|
+
* Maps a raw backend combined list into the dashboard view models, enforcing
|
|
1967
|
+
* that STANDALONE_MEETING rows always sort LAST while preserving the backend's
|
|
1968
|
+
* within-group ordering for each partition (stable sort).
|
|
1780
1969
|
* @param {EventMeetingListItem[]} items - The raw list items.
|
|
1781
1970
|
* @return {UpcomingEvent[]} The mapped, standalone-last ordered view models.
|
|
1782
1971
|
*/
|
|
@@ -1787,38 +1976,38 @@ function mapEventMeetingList(items) {
|
|
|
1787
1976
|
return [...events, ...standalone];
|
|
1788
1977
|
}
|
|
1789
1978
|
/**
|
|
1790
|
-
* Maps a raw backend
|
|
1979
|
+
* Maps a raw backend drill-down meeting item to the {@link MeetingRow} view
|
|
1791
1980
|
* model used by the event block's expanded meeting list.
|
|
1792
1981
|
* @param {EventMeetingDetailItem} item - The raw child-meeting item.
|
|
1982
|
+
* @param {string} [eventId] - The owning event id (for navigation).
|
|
1793
1983
|
* @return {MeetingRow} The mapped meeting row.
|
|
1794
1984
|
*/
|
|
1795
|
-
function mapDetailItemToMeetingRow(item) {
|
|
1985
|
+
function mapDetailItemToMeetingRow(item, eventId = '') {
|
|
1796
1986
|
const status = item?.status ?? '';
|
|
1797
|
-
|
|
1798
|
-
// meetingsDetails endpoint has no dedicated flag, so derive it from status
|
|
1799
|
-
// (honouring an explicit backend flag when one is provided).
|
|
1800
|
-
const isOpenForAttendance = item?.isOpenForAttendance ?? status.trim().toLowerCase() === 'in progress';
|
|
1987
|
+
const attendanceState = item?.attendanceState ?? AttendanceState.NOT_ATTENDING;
|
|
1801
1988
|
return {
|
|
1802
1989
|
meetingId: item?.meetingId ?? '',
|
|
1990
|
+
eventId,
|
|
1803
1991
|
meetingName: item?.meetingTitle ?? '',
|
|
1804
|
-
groupOrCommittee: item?.groupName ?? '',
|
|
1805
|
-
roomOrLocation: item?.
|
|
1992
|
+
groupOrCommittee: item?.groupName ?? item?.groupAcronym ?? '',
|
|
1993
|
+
roomOrLocation: item?.location ?? '',
|
|
1806
1994
|
startDateTime: item?.meetingStDate,
|
|
1807
1995
|
endDateTime: item?.meetingEdDate,
|
|
1808
1996
|
timezone: item?.timeZone ?? '',
|
|
1809
1997
|
status,
|
|
1810
|
-
|
|
1811
|
-
isOpenForAttendance,
|
|
1998
|
+
attendanceState,
|
|
1999
|
+
isOpenForAttendance: status.trim().toLowerCase() === 'in progress',
|
|
1812
2000
|
};
|
|
1813
2001
|
}
|
|
1814
2002
|
/**
|
|
1815
|
-
* Maps a raw backend
|
|
1816
|
-
*
|
|
2003
|
+
* Maps a raw backend drill-down meeting list to {@link MeetingRow} view models,
|
|
2004
|
+
* tagging each with its owning event id for navigation.
|
|
1817
2005
|
* @param {EventMeetingDetailItem[]} items - The raw child-meeting items.
|
|
2006
|
+
* @param {string} [eventId] - The owning event id.
|
|
1818
2007
|
* @return {MeetingRow[]} The mapped meeting rows.
|
|
1819
2008
|
*/
|
|
1820
|
-
function mapEventMeetingDetails(items) {
|
|
1821
|
-
return (items ?? []).map((item) => mapDetailItemToMeetingRow(item));
|
|
2009
|
+
function mapEventMeetingDetails(items, eventId = '') {
|
|
2010
|
+
return (items ?? []).map((item) => mapDetailItemToMeetingRow(item, eventId));
|
|
1822
2011
|
}
|
|
1823
2012
|
|
|
1824
2013
|
/**
|
|
@@ -1878,18 +2067,10 @@ const endAttendanceAction = (set, meetingId) => {
|
|
|
1878
2067
|
const UNASSIGNED_LABEL = 'Unassigned';
|
|
1879
2068
|
/** Placeholder for an empty cell value. */
|
|
1880
2069
|
const EMPTY_VALUE = '-';
|
|
1881
|
-
/**
|
|
1882
|
-
const UPCOMING_STATUSES = ['In Progress', 'Upcoming'];
|
|
1883
|
-
/** Sort column used for the top-level events & meetings list. */
|
|
1884
|
-
const UPCOMING_SORT_COLUMN = 'startDateTime';
|
|
1885
|
-
/** Sort column used for an event's expanded child-meeting list (meetingsDetails). */
|
|
1886
|
-
const EVENT_MEETINGS_SORT_COLUMN = 'meetingStDate';
|
|
1887
|
-
/** Default page size for the top-level upcoming section list. */
|
|
2070
|
+
/** Default page size for the top-level home events-&-meetings list. */
|
|
1888
2071
|
const UPCOMING_PAGE_SIZE = 10;
|
|
1889
|
-
/** Default page size for an event's
|
|
2072
|
+
/** Default page size for an event's drill-down child-meeting list. */
|
|
1890
2073
|
const EVENT_MEETINGS_PAGE_SIZE = 5;
|
|
1891
|
-
/** Large page size used by the eager count prefetch to capture the full set. */
|
|
1892
|
-
const EVENT_COUNT_PAGE_SIZE = 200;
|
|
1893
2074
|
/**
|
|
1894
2075
|
* DashboardService is the single source of truth for the dashboard landing
|
|
1895
2076
|
* page's data and attendance state. It mirrors the `events-and-meetings`
|
|
@@ -1947,33 +2128,30 @@ class DashboardService {
|
|
|
1947
2128
|
this.userPermissions = userPermissions;
|
|
1948
2129
|
}
|
|
1949
2130
|
/**
|
|
1950
|
-
* Loads the user's upcoming events & meetings from the
|
|
1951
|
-
* `POST {apiBaseUrl}/meetings/eventsAndMeetings
|
|
1952
|
-
*
|
|
1953
|
-
*
|
|
1954
|
-
*
|
|
1955
|
-
*
|
|
1956
|
-
*
|
|
1957
|
-
*
|
|
2131
|
+
* Loads the user's combined upcoming events & standalone meetings from the
|
|
2132
|
+
* backend via `POST {apiBaseUrl}/meetings/home/eventsAndMeetings`. The response
|
|
2133
|
+
* (which carries per-event `totalMeetingCount` / `meetingsOpenForAttendanceCount`
|
|
2134
|
+
* and per-standalone `attendanceState` directly) is mapped into the dashboard
|
|
2135
|
+
* view models (STANDALONE_MEETING rows ordered last), the per-meeting
|
|
2136
|
+
* attendance-state map is seeded, and the section advances through
|
|
2137
|
+
* LOADING → LOADED/EMPTY on success. `appId` is taken from the JWT, so it is
|
|
2138
|
+
* not sent. Follows the shared `pipe(map, catchError(throw))` pattern.
|
|
2139
|
+
* @return {Observable<EventMeetingListResponse>} The home events-&-meetings response envelope.
|
|
1958
2140
|
* @memberof DashboardService
|
|
1959
2141
|
*/
|
|
1960
2142
|
loadUpcomingEvents() {
|
|
1961
2143
|
this.upcomingState.next(DashboardSectionState.LOADING);
|
|
1962
2144
|
const payload = {
|
|
1963
2145
|
payload: {
|
|
1964
|
-
eventId: null,
|
|
1965
|
-
sortColumn: UPCOMING_SORT_COLUMN,
|
|
1966
|
-
ascendingOrder: true,
|
|
1967
2146
|
page: 1,
|
|
1968
2147
|
size: UPCOMING_PAGE_SIZE,
|
|
1969
|
-
|
|
1970
|
-
|
|
1971
|
-
|
|
1972
|
-
},
|
|
2148
|
+
sortColumn: 'startDateTime',
|
|
2149
|
+
ascendingOrder: true,
|
|
2150
|
+
searchTerm: null,
|
|
1973
2151
|
},
|
|
1974
2152
|
};
|
|
1975
2153
|
return this.httpService
|
|
1976
|
-
.postData(`${this.apiBaseUrl}/meetings/eventsAndMeetings`, payload)
|
|
2154
|
+
.postData(`${this.apiBaseUrl}/meetings/home/eventsAndMeetings`, payload)
|
|
1977
2155
|
.pipe(map((response) => {
|
|
1978
2156
|
const events = mapEventMeetingList(response?.body?.eventMeetingList ?? []);
|
|
1979
2157
|
this.upcomingEvents.next(events);
|
|
@@ -1981,9 +2159,6 @@ class DashboardService {
|
|
|
1981
2159
|
this.upcomingState.next(events.length > 0
|
|
1982
2160
|
? DashboardSectionState.LOADED
|
|
1983
2161
|
: DashboardSectionState.EMPTY);
|
|
1984
|
-
// Eagerly fetch each EVENT's meeting count so the "{n} meetings" and
|
|
1985
|
-
// "{n} open for attendance" summaries are correct before expanding.
|
|
1986
|
-
this.loadEventCounts(events);
|
|
1987
2162
|
return response;
|
|
1988
2163
|
}), catchError((error) => {
|
|
1989
2164
|
this.upcomingState.next(DashboardSectionState.ERROR);
|
|
@@ -1991,28 +2166,29 @@ class DashboardService {
|
|
|
1991
2166
|
}));
|
|
1992
2167
|
}
|
|
1993
2168
|
/**
|
|
1994
|
-
* Lazily loads (and paginates) the child meetings of an EVENT
|
|
1995
|
-
* `POST {apiBaseUrl}/meetings/
|
|
1996
|
-
*
|
|
1997
|
-
*
|
|
1998
|
-
*
|
|
1999
|
-
* attendance-state map is extended. Each event paginates
|
|
2169
|
+
* Lazily loads (and paginates) the child meetings of an EVENT via
|
|
2170
|
+
* `POST {apiBaseUrl}/meetings/home/events/{eventId}/meetings` (the drill-down
|
|
2171
|
+
* endpoint). The `eventId` is sent in the URL path; only `page` / `size` are
|
|
2172
|
+
* used in the body. On success the drill-down body (day indicator, counts,
|
|
2173
|
+
* paginator total, and the paged meetings) is merged onto the matching event,
|
|
2174
|
+
* and the per-meeting attendance-state map is extended. Each event paginates
|
|
2175
|
+
* independently.
|
|
2000
2176
|
* @param {string} eventId - The event whose meetings to load.
|
|
2001
2177
|
* @param {number} [page=1] - The one-based page to request.
|
|
2002
2178
|
* @param {number} [size=EVENT_MEETINGS_PAGE_SIZE] - The page size.
|
|
2003
|
-
* @return {Observable<EventMeetingDetailResponse>} The
|
|
2179
|
+
* @return {Observable<EventMeetingDetailResponse>} The drill-down response envelope.
|
|
2004
2180
|
* @memberof DashboardService
|
|
2005
2181
|
*/
|
|
2006
2182
|
loadEventMeetings(eventId, page = 1, size = EVENT_MEETINGS_PAGE_SIZE) {
|
|
2007
|
-
|
|
2008
|
-
|
|
2009
|
-
|
|
2010
|
-
|
|
2011
|
-
|
|
2012
|
-
|
|
2013
|
-
const
|
|
2014
|
-
const
|
|
2015
|
-
this.mergeEventMeetings(eventId, meetings,
|
|
2183
|
+
const payload = {
|
|
2184
|
+
payload: { page, size },
|
|
2185
|
+
};
|
|
2186
|
+
return this.httpService
|
|
2187
|
+
.postData(`${this.apiBaseUrl}/meetings/home/events/${encodeURIComponent(eventId)}/meetings`, payload)
|
|
2188
|
+
.pipe(map((response) => {
|
|
2189
|
+
const body = response?.body;
|
|
2190
|
+
const meetings = mapEventMeetingDetails(body?.meetings ?? [], eventId);
|
|
2191
|
+
this.mergeEventMeetings(eventId, meetings, body);
|
|
2016
2192
|
this.seedAttendanceStatesFromMeetings(meetings);
|
|
2017
2193
|
return response;
|
|
2018
2194
|
}), catchError((error) => {
|
|
@@ -2020,17 +2196,25 @@ class DashboardService {
|
|
|
2020
2196
|
}));
|
|
2021
2197
|
}
|
|
2022
2198
|
/**
|
|
2023
|
-
* Merges a freshly loaded page
|
|
2024
|
-
*
|
|
2025
|
-
* `
|
|
2026
|
-
* `
|
|
2199
|
+
* Merges a freshly loaded drill-down page onto the matching event in the
|
|
2200
|
+
* `upcomingEvents` list: the paged `meetings`, the paginator total
|
|
2201
|
+
* (`totalRecords` = the user's tied upcoming meetings), the event's full
|
|
2202
|
+
* `totalMeetingCount` / `meetingsOpenForAttendanceCount`, and the
|
|
2203
|
+
* "Day X of Y" indicator derived from `currentDay` / `totalDays`. Leaves all
|
|
2204
|
+
* other events untouched.
|
|
2027
2205
|
* @param {string} eventId - The event to merge meetings onto.
|
|
2028
|
-
* @param {MeetingRow[]} meetings - The mapped
|
|
2029
|
-
* @param {
|
|
2206
|
+
* @param {MeetingRow[]} meetings - The mapped drill-down meetings for the page.
|
|
2207
|
+
* @param {EventMeetingDetailBody | undefined} body - The drill-down response body.
|
|
2030
2208
|
* @return {void}
|
|
2031
2209
|
* @memberof DashboardService
|
|
2032
2210
|
*/
|
|
2033
|
-
mergeEventMeetings(eventId, meetings,
|
|
2211
|
+
mergeEventMeetings(eventId, meetings, body) {
|
|
2212
|
+
const totalRecords = body?.totalRecords ?? meetings.length;
|
|
2213
|
+
const totalMeetingCount = body?.totalMeetingCount ?? totalRecords;
|
|
2214
|
+
const openForAttendanceCount = body?.meetingsOpenForAttendanceCount ?? 0;
|
|
2215
|
+
const currentDay = body?.currentDay;
|
|
2216
|
+
const totalDays = body?.totalDays;
|
|
2217
|
+
const dayIndicator = currentDay && totalDays ? `Day ${currentDay} of ${totalDays}` : '';
|
|
2034
2218
|
const next = this.upcomingEvents.value.map((event) => {
|
|
2035
2219
|
if (event.eventId !== eventId) {
|
|
2036
2220
|
return event;
|
|
@@ -2038,81 +2222,15 @@ class DashboardService {
|
|
|
2038
2222
|
return {
|
|
2039
2223
|
...event,
|
|
2040
2224
|
meetings,
|
|
2041
|
-
|
|
2225
|
+
// Paginator length = count of the user's tied upcoming meetings.
|
|
2226
|
+
meetingPageTotal: totalRecords,
|
|
2227
|
+
meetingCount: totalMeetingCount,
|
|
2042
2228
|
openForAttendanceCount,
|
|
2229
|
+
dayIndicator: dayIndicator || event.dayIndicator,
|
|
2043
2230
|
};
|
|
2044
2231
|
});
|
|
2045
2232
|
this.upcomingEvents.next(next);
|
|
2046
2233
|
}
|
|
2047
|
-
/**
|
|
2048
|
-
* Eagerly fetches each EVENT's total meeting count and open-for-attendance
|
|
2049
|
-
* count by requesting a large first page of its child meetings, then merging
|
|
2050
|
-
* only the counts (not the rows) so the collapsed card summaries are accurate
|
|
2051
|
-
* before the user expands. Standalone meetings are skipped. Failures per event
|
|
2052
|
-
* are swallowed so one failing count never breaks the list.
|
|
2053
|
-
* @param {UpcomingEvent[]} events - The loaded events to fetch counts for.
|
|
2054
|
-
* @return {void}
|
|
2055
|
-
* @memberof DashboardService
|
|
2056
|
-
*/
|
|
2057
|
-
loadEventCounts(events) {
|
|
2058
|
-
events
|
|
2059
|
-
.filter((event) => event.kind === UpcomingItemKind.EVENT && event.eventId)
|
|
2060
|
-
.forEach((event) => {
|
|
2061
|
-
this.fetchEventMeetingsPage(event.eventId, 1, EVENT_COUNT_PAGE_SIZE)
|
|
2062
|
-
.pipe(catchError(() => of(null)))
|
|
2063
|
-
.subscribe((response) => {
|
|
2064
|
-
if (!response) {
|
|
2065
|
-
return;
|
|
2066
|
-
}
|
|
2067
|
-
const meetings = mapEventMeetingDetails(response?.body?.meetings ?? []);
|
|
2068
|
-
const total = response?.body?.totalRecords ?? meetings.length;
|
|
2069
|
-
const openCount = meetings.filter((meeting) => meeting.isOpenForAttendance).length;
|
|
2070
|
-
this.mergeEventCounts(event.eventId, total, openCount);
|
|
2071
|
-
this.seedAttendanceStatesFromMeetings(meetings);
|
|
2072
|
-
});
|
|
2073
|
-
});
|
|
2074
|
-
}
|
|
2075
|
-
/**
|
|
2076
|
-
* Merges only the meeting counts onto the matching event, leaving its
|
|
2077
|
-
* `meetings` rows untouched (used by the eager count prefetch).
|
|
2078
|
-
* @param {string} eventId - The event to update.
|
|
2079
|
-
* @param {number} totalRecords - The event's total meeting count.
|
|
2080
|
-
* @param {number} openForAttendanceCount - The open-for-attendance count.
|
|
2081
|
-
* @return {void}
|
|
2082
|
-
* @memberof DashboardService
|
|
2083
|
-
*/
|
|
2084
|
-
mergeEventCounts(eventId, totalRecords, openForAttendanceCount) {
|
|
2085
|
-
const next = this.upcomingEvents.value.map((event) => event.eventId === eventId
|
|
2086
|
-
? { ...event, meetingCount: totalRecords, openForAttendanceCount }
|
|
2087
|
-
: event);
|
|
2088
|
-
this.upcomingEvents.next(next);
|
|
2089
|
-
}
|
|
2090
|
-
/**
|
|
2091
|
-
* Builds and posts the `meetingsDetails` request for a single event page,
|
|
2092
|
-
* returning the raw response envelope. Shared by {@link loadEventMeetings} and
|
|
2093
|
-
* the eager count prefetch.
|
|
2094
|
-
* @param {string} eventId - The event whose meetings to fetch.
|
|
2095
|
-
* @param {number} page - The one-based page to request.
|
|
2096
|
-
* @param {number} size - The page size.
|
|
2097
|
-
* @return {Observable<EventMeetingDetailResponse>} The child-meetings response.
|
|
2098
|
-
* @memberof DashboardService
|
|
2099
|
-
*/
|
|
2100
|
-
fetchEventMeetingsPage(eventId, page, size) {
|
|
2101
|
-
const payload = {
|
|
2102
|
-
payload: {
|
|
2103
|
-
eventId,
|
|
2104
|
-
sortColumn: EVENT_MEETINGS_SORT_COLUMN,
|
|
2105
|
-
ascendingOrder: true,
|
|
2106
|
-
page,
|
|
2107
|
-
size,
|
|
2108
|
-
filter: {
|
|
2109
|
-
status: UPCOMING_STATUSES,
|
|
2110
|
-
isAllMeetingSelected: false,
|
|
2111
|
-
},
|
|
2112
|
-
},
|
|
2113
|
-
};
|
|
2114
|
-
return this.httpService.postData(`${this.apiBaseUrl}/meetings/meetingsDetails`, payload);
|
|
2115
|
-
}
|
|
2116
2234
|
/**
|
|
2117
2235
|
* Loads the user's groups, driving the groups section through
|
|
2118
2236
|
* LOADING → LOADED/EMPTY on success and leaving the caller to set ERROR on
|
|
@@ -2231,8 +2349,24 @@ class DashboardService {
|
|
|
2231
2349
|
* @memberof DashboardService
|
|
2232
2350
|
*/
|
|
2233
2351
|
seedAttendanceStates(events) {
|
|
2234
|
-
const
|
|
2235
|
-
|
|
2352
|
+
const next = {
|
|
2353
|
+
...this.attendanceStates.value,
|
|
2354
|
+
};
|
|
2355
|
+
events.forEach((event) => {
|
|
2356
|
+
// Standalone meetings carry their own attendance state keyed by their id
|
|
2357
|
+
// (eventId == meetingId for standalone rows).
|
|
2358
|
+
if (event.kind === UpcomingItemKind.STANDALONE_MEETING && event.eventId) {
|
|
2359
|
+
next[event.eventId] =
|
|
2360
|
+
event.attendanceState ?? AttendanceState.NOT_ATTENDING;
|
|
2361
|
+
}
|
|
2362
|
+
(event.meetings ?? []).forEach((meeting) => {
|
|
2363
|
+
if (meeting.meetingId) {
|
|
2364
|
+
next[meeting.meetingId] =
|
|
2365
|
+
meeting.attendanceState ?? AttendanceState.NOT_ATTENDING;
|
|
2366
|
+
}
|
|
2367
|
+
});
|
|
2368
|
+
});
|
|
2369
|
+
this.attendanceStates.next(next);
|
|
2236
2370
|
}
|
|
2237
2371
|
/**
|
|
2238
2372
|
* Seeds the attendance-state map from a list of meeting rows, using each
|
|
@@ -2268,9 +2402,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
2268
2402
|
}], ctorParameters: function () { return [{ type: i1$1.HttpService }]; } });
|
|
2269
2403
|
|
|
2270
2404
|
/**
|
|
2271
|
-
* Permission
|
|
2272
|
-
*
|
|
2273
|
-
*
|
|
2405
|
+
* Permission display names that gate the dashboard attendance actions. These
|
|
2406
|
+
* match the local demo mock. The real backend grants attendance capability via
|
|
2407
|
+
* a permission id (see {@link ATTENDANCE_PERMISSION_IDS}) rather than these
|
|
2408
|
+
* display names, so both are accepted.
|
|
2274
2409
|
*/
|
|
2275
2410
|
/* eslint-disable no-unused-vars */
|
|
2276
2411
|
var DashboardPermissionType;
|
|
@@ -2279,19 +2414,32 @@ var DashboardPermissionType;
|
|
|
2279
2414
|
DashboardPermissionType["LEAVE_MEETING"] = "Leave Meeting";
|
|
2280
2415
|
})(DashboardPermissionType || (DashboardPermissionType = {}));
|
|
2281
2416
|
/* eslint-enable no-unused-vars */
|
|
2417
|
+
/**
|
|
2418
|
+
* Real backend permission ids that grant attendance capability. The attendance
|
|
2419
|
+
* (log / leave) actions on the dashboard are gated by the same permission the
|
|
2420
|
+
* `events-and-meetings` library uses for attendance — "View and Export
|
|
2421
|
+
* Attendance" (`PERM_SAAPPS_VIEW_EXPORT_ATTENDANCE`).
|
|
2422
|
+
*/
|
|
2423
|
+
const ATTENDANCE_PERMISSION_IDS = [
|
|
2424
|
+
'PERM_SAAPPS_VIEW_EXPORT_ATTENDANCE',
|
|
2425
|
+
];
|
|
2282
2426
|
class UserPermissionsService {
|
|
2283
2427
|
/**
|
|
2284
|
-
* Returns access provision for the passed action/feature based on whether the
|
|
2428
|
+
* Returns access provision for the passed action/feature based on whether the
|
|
2429
|
+
* signed-in user has an appropriate permission — matched by the legacy display
|
|
2430
|
+
* name (used by the local demo mock) OR by one of the real backend permission
|
|
2431
|
+
* ids in {@link ATTENDANCE_PERMISSION_IDS}.
|
|
2285
2432
|
* @param {DashboardPermissionType} permission
|
|
2286
2433
|
* @param {UserPermission[]} userPermissions
|
|
2287
2434
|
* @return {boolean}
|
|
2288
2435
|
* @memberof UserPermissionsService
|
|
2289
2436
|
*/
|
|
2290
2437
|
validateAccessPermission(permission, userPermissions) {
|
|
2291
|
-
|
|
2292
|
-
|
|
2293
|
-
|
|
2294
|
-
return
|
|
2438
|
+
if (!(userPermissions?.length > 0)) {
|
|
2439
|
+
return false;
|
|
2440
|
+
}
|
|
2441
|
+
return userPermissions.some(({ permissionName, permissionId }) => permissionName === permission ||
|
|
2442
|
+
ATTENDANCE_PERMISSION_IDS.includes(permissionId));
|
|
2295
2443
|
}
|
|
2296
2444
|
/**
|
|
2297
2445
|
* Maps the host-supplied user permissions to the attendance-action permissions consumed by the dashboard rows.
|
|
@@ -2395,8 +2543,8 @@ class DashboardComponent {
|
|
|
2395
2543
|
};
|
|
2396
2544
|
/** Whether the viewport is at/below the mobile breakpoint (Req 15.1, 15.2). */
|
|
2397
2545
|
this.isMobileView = false;
|
|
2398
|
-
/** Whether the Upcoming Meetings & Events card is expanded. Starts
|
|
2399
|
-
this.meetingsExpanded =
|
|
2546
|
+
/** Whether the Upcoming Meetings & Events card is expanded. Starts expanded. */
|
|
2547
|
+
this.meetingsExpanded = true;
|
|
2400
2548
|
/** Whether the Your Groups card is expanded. Starts collapsed. */
|
|
2401
2549
|
this.groupsExpanded = false;
|
|
2402
2550
|
/** The current zero-based page index of the groups table. */
|
|
@@ -2486,17 +2634,26 @@ class DashboardComponent {
|
|
|
2486
2634
|
* @memberof DashboardComponent
|
|
2487
2635
|
*/
|
|
2488
2636
|
onViewEvent(eventId) {
|
|
2489
|
-
|
|
2637
|
+
if (!eventId) {
|
|
2638
|
+
return;
|
|
2639
|
+
}
|
|
2640
|
+
this.dashboardNavigate.emit({
|
|
2641
|
+
path: this.activeRouteConfig.eventDetail,
|
|
2642
|
+
queryParams: { eventId },
|
|
2643
|
+
});
|
|
2490
2644
|
}
|
|
2491
2645
|
/**
|
|
2492
|
-
* Emits the open-meeting navigation intent
|
|
2493
|
-
*
|
|
2646
|
+
* Emits the open-meeting navigation intent to the view-meeting screen,
|
|
2647
|
+
* matching the reference list: a meeting under an event targets
|
|
2648
|
+
* `viewMeetingUnderEvent` with `eventId` + `meetingId` + `actionType=edit`; a
|
|
2649
|
+
* standalone meeting targets `viewMeeting` with `meetingId` + `actionType=edit`.
|
|
2650
|
+
* (Retained for the legacy string `openMeeting` output.)
|
|
2494
2651
|
* @param {string} meetingId - The id of the meeting to open.
|
|
2495
2652
|
* @return {void}
|
|
2496
2653
|
* @memberof DashboardComponent
|
|
2497
2654
|
*/
|
|
2498
2655
|
onOpenMeeting(meetingId) {
|
|
2499
|
-
this.
|
|
2656
|
+
this.onNavigateToMeeting({ eventId: '', meetingId });
|
|
2500
2657
|
}
|
|
2501
2658
|
/**
|
|
2502
2659
|
* Emits the "View All" groups navigation intent, targeting the
|
|
@@ -2531,8 +2688,9 @@ class DashboardComponent {
|
|
|
2531
2688
|
/**
|
|
2532
2689
|
* Lazily loads (or paginates) the child meetings of an expanded EVENT card via
|
|
2533
2690
|
* the service, surfacing the attendance error message on failure. Each event
|
|
2534
|
-
* paginates independently.
|
|
2535
|
-
*
|
|
2691
|
+
* paginates independently. Loading feedback is handled by the host
|
|
2692
|
+
* application's global spinner, so no per-event loading state is tracked here.
|
|
2693
|
+
* @param {{ eventId: string; page: number; size: number }} request - The event id and one-based page to load.
|
|
2536
2694
|
* @return {void}
|
|
2537
2695
|
* @memberof DashboardComponent
|
|
2538
2696
|
*/
|
|
@@ -2541,12 +2699,53 @@ class DashboardComponent {
|
|
|
2541
2699
|
return;
|
|
2542
2700
|
}
|
|
2543
2701
|
this.dashboardService
|
|
2544
|
-
.loadEventMeetings(request.eventId, request.page)
|
|
2702
|
+
.loadEventMeetings(request.eventId, request.page, request.size)
|
|
2545
2703
|
.pipe(takeUntil(this.destroy$))
|
|
2546
2704
|
.subscribe({
|
|
2547
2705
|
error: () => this.showAttendanceError(),
|
|
2548
2706
|
});
|
|
2549
2707
|
}
|
|
2708
|
+
/**
|
|
2709
|
+
* Handles an attendance-button activation for an In-Progress meeting by
|
|
2710
|
+
* emitting a navigation intent to the view-meeting screen with `eventId`,
|
|
2711
|
+
* `meetingId`, and `actionType=edit` query params — producing a URL like
|
|
2712
|
+
* `/events-and-meetings/view-event/view-meeting?eventId=...&meetingId=...&actionType=edit`.
|
|
2713
|
+
* The Log Attendance popup is opened by that destination page.
|
|
2714
|
+
* @param {{ eventId: string; meetingId: string }} request - The meeting identity.
|
|
2715
|
+
* @return {void}
|
|
2716
|
+
* @memberof DashboardComponent
|
|
2717
|
+
*/
|
|
2718
|
+
onNavigateToMeeting(request) {
|
|
2719
|
+
if (!request?.meetingId) {
|
|
2720
|
+
return;
|
|
2721
|
+
}
|
|
2722
|
+
const config = this.activeRouteConfig;
|
|
2723
|
+
const queryParams = {
|
|
2724
|
+
meetingId: request.meetingId,
|
|
2725
|
+
actionType: 'edit',
|
|
2726
|
+
};
|
|
2727
|
+
// Meeting under an event → view-meeting-under-event with eventId; otherwise
|
|
2728
|
+
// the standalone view-meeting route.
|
|
2729
|
+
let path;
|
|
2730
|
+
if (request.eventId) {
|
|
2731
|
+
queryParams['eventId'] = request.eventId;
|
|
2732
|
+
path =
|
|
2733
|
+
config.viewMeetingUnderEvent ??
|
|
2734
|
+
this.constants.defaultRouteConfig.viewMeetingUnderEvent;
|
|
2735
|
+
}
|
|
2736
|
+
else {
|
|
2737
|
+
path =
|
|
2738
|
+
config.viewMeeting ?? this.constants.defaultRouteConfig.viewMeeting;
|
|
2739
|
+
}
|
|
2740
|
+
// Request the matching popup auto-open on the view-meeting page.
|
|
2741
|
+
if (request.logAttendance) {
|
|
2742
|
+
queryParams['logAttendance'] = 'true';
|
|
2743
|
+
}
|
|
2744
|
+
else if (request.leaveMeeting) {
|
|
2745
|
+
queryParams['leaveMeeting'] = 'true';
|
|
2746
|
+
}
|
|
2747
|
+
this.dashboardNavigate.emit({ path, queryParams });
|
|
2748
|
+
}
|
|
2550
2749
|
/**
|
|
2551
2750
|
* Delegates a log-attendance request to the service, surfacing the
|
|
2552
2751
|
* attendance-action error message via the shared {@link AlertsService} on
|
|
@@ -2688,7 +2887,7 @@ class DashboardComponent {
|
|
|
2688
2887
|
});
|
|
2689
2888
|
}
|
|
2690
2889
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DashboardComponent, deps: [{ token: DashboardService }, { token: UserPermissionsService }, { token: i3.BreakpointObserverService }, { token: i1$1.AlertsService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2691
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DashboardComponent, isStandalone: true, selector: "ieeesa-dashboard", inputs: { routePaths: "routePaths", apiBaseURL: "apiBaseURL", userInfo: "userInfo", userPermissions: "userPermissions" }, outputs: { dashboardNavigate: "dashboardNavigate" }, providers: [AlertsService], viewQueries: [{ propertyName: "upcomingSection", first: true, predicate: ["upcomingSection"], descendants: true, read: ElementRef }, { propertyName: "groupsSection", first: true, predicate: ["groupsSection"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div\r\n class=\"ieeesa-dashboard\"\r\n [ngClass]=\"{ 'ieeesa-dashboard--mobile': isMobileView }\"\r\n>\r\n <ieeesa-dashboard-welcome-header\r\n class=\"ieeesa-dashboard__welcome\"\r\n [userName]=\"userInfo?.name ?? ''\"\r\n [meetingsCount]=\"meetingsCount\"\r\n [groupsCount]=\"groupsCount\"\r\n (shortcutSelected)=\"onJumpToShortcut($event)\"\r\n ></ieeesa-dashboard-welcome-header>\r\n\r\n <main class=\"ieeesa-dashboard__content\">\r\n <ieeesa-upcoming-meetings-events\r\n #upcomingSection\r\n class=\"ieeesa-dashboard__upcoming\"\r\n [(expanded)]=\"meetingsExpanded\"\r\n [events]=\"upcomingEvents\"\r\n [sectionState]=\"upcomingState\"\r\n [permissions]=\"attendancePermissions\"\r\n [attendanceStates]=\"attendanceStates\"\r\n [inFlightMeetingIds]=\"inFlightMeetingIds\"\r\n [isMobileView]=\"isMobileView\"\r\n (viewAll)=\"onViewAllEvents()\"\r\n (viewEvent)=\"onViewEvent($event)\"\r\n (openMeeting)=\"onOpenMeeting($event)\"\r\n (logAttendance)=\"onLogAttendance($event)\"\r\n (leaveMeeting)=\"onLeaveMeeting($event)\"\r\n (loadEventMeetings)=\"onLoadEventMeetings($event)\"\r\n ></ieeesa-upcoming-meetings-events>\r\n\r\n <ieeesa-your-groups\r\n #groupsSection\r\n [(expanded)]=\"groupsExpanded\"\r\n [groups]=\"groups\"\r\n [sectionState]=\"groupsState\"\r\n [totalGroups]=\"groups.length\"\r\n [pageIndex]=\"groupsPageIndex\"\r\n [pageSize]=\"groupsPageSize\"\r\n (viewAllGroups)=\"onViewAllGroups()\"\r\n (pageChange)=\"onGroupsPageChange($event)\"\r\n ></ieeesa-your-groups>\r\n </main>\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-dashboard{display:flex;flex-direction:column;gap:24px;padding:16px;height:100vh;max-height:100vh;overflow:hidden}.ieeesa-dashboard__welcome{display:block;flex:0 0 auto}.ieeesa-dashboard__content{display:flex;flex-direction:column;gap:24px;flex:1 1 auto;overflow-y:auto;padding-right:4px}.ieeesa-dashboard__upcoming,.ieeesa-dashboard__groups,.ieeesa-dashboard__footer{display:block}.ieeesa-dashboard--mobile{padding:8px;gap:16px}.ieeesa-dashboard--mobile .ieeesa-dashboard__content{gap:16px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: UpcomingMeetingsEventsComponent, selector: "ieeesa-upcoming-meetings-events", inputs: ["events", "sectionState", "permissions", "attendanceStates", "inFlightMeetingIds", "isMobileView", "expanded"], outputs: ["viewAll", "viewEvent", "openMeeting", "logAttendance", "leaveMeeting", "meetingPageChange", "loadEventMeetings", "expandedChange"] }, { kind: "component", type: YourGroupsComponent, selector: "ieeesa-your-groups", inputs: ["groups", "sectionState", "totalGroups", "pageIndex", "pageSize", "expanded"], outputs: ["viewAllGroups", "pageChange", "expandedChange"] }, { kind: "component", type: DashboardWelcomeHeaderComponent, selector: "ieeesa-dashboard-welcome-header", inputs: ["userName", "meetingsCount", "groupsCount"], outputs: ["shortcutSelected"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
2890
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DashboardComponent, isStandalone: true, selector: "ieeesa-dashboard", inputs: { routePaths: "routePaths", apiBaseURL: "apiBaseURL", userInfo: "userInfo", userPermissions: "userPermissions" }, outputs: { dashboardNavigate: "dashboardNavigate" }, providers: [AlertsService], viewQueries: [{ propertyName: "upcomingSection", first: true, predicate: ["upcomingSection"], descendants: true, read: ElementRef }, { propertyName: "groupsSection", first: true, predicate: ["groupsSection"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div\r\n class=\"ieeesa-dashboard\"\r\n [ngClass]=\"{ 'ieeesa-dashboard--mobile': isMobileView }\"\r\n>\r\n <ieeesa-dashboard-welcome-header\r\n class=\"ieeesa-dashboard__welcome\"\r\n [userName]=\"userInfo?.name ?? ''\"\r\n [meetingsCount]=\"meetingsCount\"\r\n [groupsCount]=\"groupsCount\"\r\n (shortcutSelected)=\"onJumpToShortcut($event)\"\r\n ></ieeesa-dashboard-welcome-header>\r\n\r\n <main class=\"ieeesa-dashboard__content\">\r\n <ieeesa-upcoming-meetings-events\r\n #upcomingSection\r\n class=\"ieeesa-dashboard__upcoming\"\r\n [(expanded)]=\"meetingsExpanded\"\r\n [events]=\"upcomingEvents\"\r\n [sectionState]=\"upcomingState\"\r\n [permissions]=\"attendancePermissions\"\r\n [attendanceStates]=\"attendanceStates\"\r\n [inFlightMeetingIds]=\"inFlightMeetingIds\"\r\n [isMobileView]=\"isMobileView\"\r\n (viewAll)=\"onViewAllEvents()\"\r\n (viewEvent)=\"onViewEvent($event)\"\r\n (openMeeting)=\"onOpenMeeting($event)\"\r\n (logAttendance)=\"onLogAttendance($event)\"\r\n (leaveMeeting)=\"onLeaveMeeting($event)\"\r\n (loadEventMeetings)=\"onLoadEventMeetings($event)\"\r\n (navigateToMeeting)=\"onNavigateToMeeting($event)\"\r\n ></ieeesa-upcoming-meetings-events>\r\n\r\n <ieeesa-your-groups\r\n #groupsSection\r\n [(expanded)]=\"groupsExpanded\"\r\n [groups]=\"groups\"\r\n [sectionState]=\"groupsState\"\r\n [totalGroups]=\"groups.length\"\r\n [pageIndex]=\"groupsPageIndex\"\r\n [pageSize]=\"groupsPageSize\"\r\n (viewAllGroups)=\"onViewAllGroups()\"\r\n (pageChange)=\"onGroupsPageChange($event)\"\r\n ></ieeesa-your-groups>\r\n </main>\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-dashboard{display:flex;flex-direction:column;gap:24px;padding:16px;height:100vh;max-height:100vh;overflow:hidden}.ieeesa-dashboard__welcome{display:block;flex:0 0 auto}.ieeesa-dashboard__content{display:flex;flex-direction:column;gap:24px;flex:1 1 auto;overflow-y:auto;padding-right:4px}.ieeesa-dashboard__upcoming,.ieeesa-dashboard__groups,.ieeesa-dashboard__footer{display:block}.ieeesa-dashboard--mobile{padding:8px;gap:16px}.ieeesa-dashboard--mobile .ieeesa-dashboard__content{gap:16px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: UpcomingMeetingsEventsComponent, selector: "ieeesa-upcoming-meetings-events", inputs: ["events", "sectionState", "permissions", "attendanceStates", "inFlightMeetingIds", "isMobileView", "expanded"], outputs: ["viewAll", "viewEvent", "openMeeting", "logAttendance", "leaveMeeting", "meetingPageChange", "loadEventMeetings", "navigateToMeeting", "expandedChange"] }, { kind: "component", type: YourGroupsComponent, selector: "ieeesa-your-groups", inputs: ["groups", "sectionState", "totalGroups", "pageIndex", "pageSize", "expanded"], outputs: ["viewAllGroups", "pageChange", "expandedChange"] }, { kind: "component", type: DashboardWelcomeHeaderComponent, selector: "ieeesa-dashboard-welcome-header", inputs: ["userName", "meetingsCount", "groupsCount"], outputs: ["shortcutSelected"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
2692
2891
|
}
|
|
2693
2892
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DashboardComponent, decorators: [{
|
|
2694
2893
|
type: Component,
|
|
@@ -2697,7 +2896,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
2697
2896
|
UpcomingMeetingsEventsComponent,
|
|
2698
2897
|
YourGroupsComponent,
|
|
2699
2898
|
DashboardWelcomeHeaderComponent
|
|
2700
|
-
], encapsulation: ViewEncapsulation.None, providers: [AlertsService], template: "<div\r\n class=\"ieeesa-dashboard\"\r\n [ngClass]=\"{ 'ieeesa-dashboard--mobile': isMobileView }\"\r\n>\r\n <ieeesa-dashboard-welcome-header\r\n class=\"ieeesa-dashboard__welcome\"\r\n [userName]=\"userInfo?.name ?? ''\"\r\n [meetingsCount]=\"meetingsCount\"\r\n [groupsCount]=\"groupsCount\"\r\n (shortcutSelected)=\"onJumpToShortcut($event)\"\r\n ></ieeesa-dashboard-welcome-header>\r\n\r\n <main class=\"ieeesa-dashboard__content\">\r\n <ieeesa-upcoming-meetings-events\r\n #upcomingSection\r\n class=\"ieeesa-dashboard__upcoming\"\r\n [(expanded)]=\"meetingsExpanded\"\r\n [events]=\"upcomingEvents\"\r\n [sectionState]=\"upcomingState\"\r\n [permissions]=\"attendancePermissions\"\r\n [attendanceStates]=\"attendanceStates\"\r\n [inFlightMeetingIds]=\"inFlightMeetingIds\"\r\n [isMobileView]=\"isMobileView\"\r\n (viewAll)=\"onViewAllEvents()\"\r\n (viewEvent)=\"onViewEvent($event)\"\r\n (openMeeting)=\"onOpenMeeting($event)\"\r\n (logAttendance)=\"onLogAttendance($event)\"\r\n (leaveMeeting)=\"onLeaveMeeting($event)\"\r\n (loadEventMeetings)=\"onLoadEventMeetings($event)\"\r\n ></ieeesa-upcoming-meetings-events>\r\n\r\n <ieeesa-your-groups\r\n #groupsSection\r\n [(expanded)]=\"groupsExpanded\"\r\n [groups]=\"groups\"\r\n [sectionState]=\"groupsState\"\r\n [totalGroups]=\"groups.length\"\r\n [pageIndex]=\"groupsPageIndex\"\r\n [pageSize]=\"groupsPageSize\"\r\n (viewAllGroups)=\"onViewAllGroups()\"\r\n (pageChange)=\"onGroupsPageChange($event)\"\r\n ></ieeesa-your-groups>\r\n </main>\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-dashboard{display:flex;flex-direction:column;gap:24px;padding:16px;height:100vh;max-height:100vh;overflow:hidden}.ieeesa-dashboard__welcome{display:block;flex:0 0 auto}.ieeesa-dashboard__content{display:flex;flex-direction:column;gap:24px;flex:1 1 auto;overflow-y:auto;padding-right:4px}.ieeesa-dashboard__upcoming,.ieeesa-dashboard__groups,.ieeesa-dashboard__footer{display:block}.ieeesa-dashboard--mobile{padding:8px;gap:16px}.ieeesa-dashboard--mobile .ieeesa-dashboard__content{gap:16px}\n"] }]
|
|
2899
|
+
], encapsulation: ViewEncapsulation.None, providers: [AlertsService], template: "<div\r\n class=\"ieeesa-dashboard\"\r\n [ngClass]=\"{ 'ieeesa-dashboard--mobile': isMobileView }\"\r\n>\r\n <ieeesa-dashboard-welcome-header\r\n class=\"ieeesa-dashboard__welcome\"\r\n [userName]=\"userInfo?.name ?? ''\"\r\n [meetingsCount]=\"meetingsCount\"\r\n [groupsCount]=\"groupsCount\"\r\n (shortcutSelected)=\"onJumpToShortcut($event)\"\r\n ></ieeesa-dashboard-welcome-header>\r\n\r\n <main class=\"ieeesa-dashboard__content\">\r\n <ieeesa-upcoming-meetings-events\r\n #upcomingSection\r\n class=\"ieeesa-dashboard__upcoming\"\r\n [(expanded)]=\"meetingsExpanded\"\r\n [events]=\"upcomingEvents\"\r\n [sectionState]=\"upcomingState\"\r\n [permissions]=\"attendancePermissions\"\r\n [attendanceStates]=\"attendanceStates\"\r\n [inFlightMeetingIds]=\"inFlightMeetingIds\"\r\n [isMobileView]=\"isMobileView\"\r\n (viewAll)=\"onViewAllEvents()\"\r\n (viewEvent)=\"onViewEvent($event)\"\r\n (openMeeting)=\"onOpenMeeting($event)\"\r\n (logAttendance)=\"onLogAttendance($event)\"\r\n (leaveMeeting)=\"onLeaveMeeting($event)\"\r\n (loadEventMeetings)=\"onLoadEventMeetings($event)\"\r\n (navigateToMeeting)=\"onNavigateToMeeting($event)\"\r\n ></ieeesa-upcoming-meetings-events>\r\n\r\n <ieeesa-your-groups\r\n #groupsSection\r\n [(expanded)]=\"groupsExpanded\"\r\n [groups]=\"groups\"\r\n [sectionState]=\"groupsState\"\r\n [totalGroups]=\"groups.length\"\r\n [pageIndex]=\"groupsPageIndex\"\r\n [pageSize]=\"groupsPageSize\"\r\n (viewAllGroups)=\"onViewAllGroups()\"\r\n (pageChange)=\"onGroupsPageChange($event)\"\r\n ></ieeesa-your-groups>\r\n </main>\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-dashboard{display:flex;flex-direction:column;gap:24px;padding:16px;height:100vh;max-height:100vh;overflow:hidden}.ieeesa-dashboard__welcome{display:block;flex:0 0 auto}.ieeesa-dashboard__content{display:flex;flex-direction:column;gap:24px;flex:1 1 auto;overflow-y:auto;padding-right:4px}.ieeesa-dashboard__upcoming,.ieeesa-dashboard__groups,.ieeesa-dashboard__footer{display:block}.ieeesa-dashboard--mobile{padding:8px;gap:16px}.ieeesa-dashboard--mobile .ieeesa-dashboard__content{gap:16px}\n"] }]
|
|
2701
2900
|
}], ctorParameters: function () { return [{ type: DashboardService }, { type: UserPermissionsService }, { type: i3.BreakpointObserverService }, { type: i1$1.AlertsService }]; }, propDecorators: { routePaths: [{
|
|
2702
2901
|
type: Input
|
|
2703
2902
|
}], apiBaseURL: [{
|
|
@@ -2815,10 +3014,12 @@ const DASHBOARD_ROUTES = [
|
|
|
2815
3014
|
];
|
|
2816
3015
|
|
|
2817
3016
|
/**
|
|
2818
|
-
* Request payloads for the dashboard "events
|
|
2819
|
-
*
|
|
2820
|
-
* `
|
|
2821
|
-
*
|
|
3017
|
+
* Request payloads for the dashboard "home" events-&-meetings backend calls.
|
|
3018
|
+
*
|
|
3019
|
+
* `appId` is taken from the JWT, so it is never sent. `page` / `size` are
|
|
3020
|
+
* required; `sortColumn` / `ascendingOrder` / `searchTerm` are optional on the
|
|
3021
|
+
* list endpoint (the service always orders by start date asc, then name asc;
|
|
3022
|
+
* `searchTerm`, when present, must be at least 3 characters).
|
|
2822
3023
|
*/
|
|
2823
3024
|
|
|
2824
3025
|
const DashboardRoutePathsMock = {
|