@ieeesa-npm/dashboard 0.0.1 → 0.0.3
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 +23 -6
- package/esm2022/lib/assets/dashboard-mock.mjs +5 -1
- package/esm2022/lib/assets/dashboard-route-paths.mock.mjs +7 -5
- package/esm2022/lib/components/event-group-card/event-group-card.component.mjs +168 -31
- package/esm2022/lib/components/meeting-attendance-row/meeting-attendance-row.component.mjs +25 -24
- package/esm2022/lib/components/upcoming-meetings-events/upcoming-meetings-events.component.mjs +103 -5
- package/esm2022/lib/components/welcome-header/dashboard-welcome-header.component.mjs +3 -3
- package/esm2022/lib/components/your-groups/your-groups.component.mjs +264 -118
- package/esm2022/lib/dashboard.component.mjs +54 -14
- package/esm2022/lib/models/event-meeting-list-item.model.mjs +2 -0
- package/esm2022/lib/models/event-meeting-list-payload.model.mjs +8 -0
- package/esm2022/lib/models/group-row.model.mjs +1 -1
- package/esm2022/lib/models/meeting-row.model.mjs +1 -1
- package/esm2022/lib/models/my-groups-view.model.mjs +2 -0
- package/esm2022/lib/models/upcoming-event.model.mjs +13 -2
- package/esm2022/lib/services/dashboard.service.mjs +229 -35
- package/esm2022/lib/utils/date-format.util.mjs +110 -0
- package/esm2022/lib/utils/event-meeting-mapper.util.mjs +96 -0
- package/esm2022/public-api.mjs +3 -1
- package/fesm2022/ieeesa-npm-dashboard.mjs +1300 -444
- package/fesm2022/ieeesa-npm-dashboard.mjs.map +1 -1
- package/lib/components/event-group-card/event-group-card.component.d.ts +100 -132
- package/lib/components/meeting-attendance-row/meeting-attendance-row.component.d.ts +8 -132
- package/lib/components/member-level-badge/member-level-badge.component.d.ts +19 -3
- package/lib/components/upcoming-meetings-events/upcoming-meetings-events.component.d.ts +63 -126
- package/lib/components/your-groups/your-groups.component.d.ts +158 -51
- package/lib/dashboard.component.d.ts +48 -10
- package/lib/models/event-meeting-list-item.model.d.ts +107 -0
- package/lib/models/event-meeting-list-payload.model.d.ts +40 -0
- package/lib/models/group-row.model.d.ts +25 -0
- package/lib/models/meeting-row.model.d.ts +18 -2
- package/lib/models/my-groups-view.model.d.ts +56 -0
- package/lib/models/upcoming-event.model.d.ts +40 -2
- package/lib/services/dashboard.service.d.ts +97 -14
- package/lib/utils/date-format.util.d.ts +60 -0
- package/lib/utils/event-meeting-mapper.util.d.ts +50 -0
- package/package.json +1 -1
- package/public-api.d.ts +2 -0
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import * as i1 from '@angular/common';
|
|
2
2
|
import { CommonModule } from '@angular/common';
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
|
-
import { EventEmitter, Component, ViewEncapsulation, Input, Output, Injectable, NgModule } from '@angular/core';
|
|
5
|
-
import { BehaviorSubject,
|
|
4
|
+
import { EventEmitter, Component, ViewEncapsulation, Input, Output, Injectable, ElementRef, ViewChild, NgModule } from '@angular/core';
|
|
5
|
+
import { BehaviorSubject, map, catchError, of, 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';
|
|
9
|
-
import * as i3 from '@ieeesa-npm/presentation';
|
|
10
|
-
import { LoaderComponent, TableColumnType, DataTableComponent, LegendComponent } from '@ieeesa-npm/presentation';
|
|
11
9
|
import * as i2 from '@angular/material/paginator';
|
|
12
10
|
import { MatPaginatorModule } from '@angular/material/paginator';
|
|
11
|
+
import * as i3 from '@ieeesa-npm/presentation';
|
|
12
|
+
import { LoaderComponent, IconButtonComponent, LegendComponent } from '@ieeesa-npm/presentation';
|
|
13
13
|
import { DateTime } from 'luxon';
|
|
14
14
|
|
|
15
15
|
/* eslint-disable no-unused-vars */
|
|
@@ -28,6 +28,19 @@ var AttendanceState;
|
|
|
28
28
|
AttendanceState["NOT_ATTENDING"] = "NOT_ATTENDING";
|
|
29
29
|
})(AttendanceState || (AttendanceState = {}));
|
|
30
30
|
|
|
31
|
+
/* eslint-disable no-unused-vars */
|
|
32
|
+
/**
|
|
33
|
+
* Discriminates how a row in the "Upcoming Meetings & Events" list is rendered.
|
|
34
|
+
* EVENT rows render as an expandable event block that owns child meetings;
|
|
35
|
+
* STANDALONE_MEETING rows render as a single meeting card and always sort LAST
|
|
36
|
+
* within the list.
|
|
37
|
+
*/
|
|
38
|
+
var UpcomingItemKind;
|
|
39
|
+
(function (UpcomingItemKind) {
|
|
40
|
+
UpcomingItemKind["EVENT"] = "EVENT";
|
|
41
|
+
UpcomingItemKind["STANDALONE_MEETING"] = "STANDALONE_MEETING";
|
|
42
|
+
})(UpcomingItemKind || (UpcomingItemKind = {}));
|
|
43
|
+
|
|
31
44
|
/**
|
|
32
45
|
* Luxon format tokens used across the dashboard library for rendering
|
|
33
46
|
* event/meeting dates, times, and timezones.
|
|
@@ -108,6 +121,115 @@ function resolveAttendanceAction(attendanceState, isInFlight, meetingId) {
|
|
|
108
121
|
return AttendanceAction.LOG_ATTENDANCE;
|
|
109
122
|
}
|
|
110
123
|
|
|
124
|
+
/**
|
|
125
|
+
* Pure luxon date/time formatting helpers for the dashboard library.
|
|
126
|
+
*
|
|
127
|
+
* The real "events & meetings" backend returns date-times as ISO-8601 strings
|
|
128
|
+
* (e.g. "2026-01-01T00:00:00") together with a display timezone string
|
|
129
|
+
* (e.g. "(UTC-04:00) America/New_York"). These helpers parse the ISO value and
|
|
130
|
+
* render it in the item's own zone (never moment). A numeric epoch-milliseconds
|
|
131
|
+
* value is also accepted for backward compatibility with fixtures/tests. All
|
|
132
|
+
* helpers fall back gracefully to an empty string when the value is missing or
|
|
133
|
+
* unparseable.
|
|
134
|
+
*/
|
|
135
|
+
/**
|
|
136
|
+
* Extracts a luxon-usable IANA zone from a backend timezone string such as
|
|
137
|
+
* "(UTC-04:00) America/New_York" or "America/New_York". Returns `undefined`
|
|
138
|
+
* when no usable zone can be derived so luxon falls back to the local zone.
|
|
139
|
+
* @param {string | undefined} timezone - The backend timezone string.
|
|
140
|
+
* @return {string | undefined} The IANA zone id, or undefined.
|
|
141
|
+
*/
|
|
142
|
+
function extractIanaZone(timezone) {
|
|
143
|
+
if (!timezone) {
|
|
144
|
+
return undefined;
|
|
145
|
+
}
|
|
146
|
+
// Strip a leading "(UTC±HH:MM) " offset prefix when present.
|
|
147
|
+
const closingParen = timezone.indexOf(') ');
|
|
148
|
+
const zone = closingParen > -1
|
|
149
|
+
? timezone.slice(closingParen + 2).trim()
|
|
150
|
+
: timezone.trim();
|
|
151
|
+
return zone.length > 0 ? zone : undefined;
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Parses a backend date-time value — either an ISO-8601 string
|
|
155
|
+
* (e.g. "2026-01-01T00:00:00") or an epoch-milliseconds number — into a luxon
|
|
156
|
+
* {@link DateTime} in the supplied timezone. The ISO value is treated as a wall
|
|
157
|
+
* time in the item's zone so the rendered time matches the backend's intent.
|
|
158
|
+
* Returns an invalid DateTime when the value is missing/unparseable.
|
|
159
|
+
* @param {string | number | undefined | null} value - The ISO string or epoch ms.
|
|
160
|
+
* @param {string | undefined} timezone - The backend timezone string.
|
|
161
|
+
* @return {DateTime} The parsed luxon DateTime (may be invalid).
|
|
162
|
+
*/
|
|
163
|
+
function parseBackendDateTime(value, timezone) {
|
|
164
|
+
const zone = extractIanaZone(timezone);
|
|
165
|
+
if (value === undefined || value === null || value === '') {
|
|
166
|
+
return DateTime.invalid('empty');
|
|
167
|
+
}
|
|
168
|
+
if (typeof value === 'number') {
|
|
169
|
+
return zone
|
|
170
|
+
? DateTime.fromMillis(value, { zone })
|
|
171
|
+
: DateTime.fromMillis(value);
|
|
172
|
+
}
|
|
173
|
+
// ISO string: parse as a wall time in the item's zone when known.
|
|
174
|
+
const isoOptions = zone ? { zone } : {};
|
|
175
|
+
const parsed = DateTime.fromISO(value, isoOptions);
|
|
176
|
+
return parsed.isValid ? parsed : DateTime.fromISO(value);
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Formats a backend date-time value (ISO string or epoch ms) with luxon using
|
|
180
|
+
* the supplied format token, honouring the supplied timezone. Returns an empty
|
|
181
|
+
* string when the value is missing or invalid.
|
|
182
|
+
* @param {string | number | undefined | null} value - The ISO string or epoch ms.
|
|
183
|
+
* @param {string} format - The luxon `toFormat` token.
|
|
184
|
+
* @param {string | undefined} timezone - The backend timezone string.
|
|
185
|
+
* @return {string} The formatted value, or an empty string.
|
|
186
|
+
*/
|
|
187
|
+
function formatBackendDateTime(value, format, timezone) {
|
|
188
|
+
const parsed = parseBackendDateTime(value, timezone);
|
|
189
|
+
return parsed.isValid ? parsed.toFormat(format) : '';
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Backward-compatible alias kept for existing callers. Accepts ISO strings or
|
|
193
|
+
* epoch ms and formats them in the item's zone.
|
|
194
|
+
* @param {string | number | undefined | null} value - The ISO string or epoch ms.
|
|
195
|
+
* @param {string} format - The luxon `toFormat` token.
|
|
196
|
+
* @param {string | undefined} timezone - The backend timezone string.
|
|
197
|
+
* @return {string} The formatted value, or an empty string.
|
|
198
|
+
*/
|
|
199
|
+
function formatEpoch(value, format, timezone) {
|
|
200
|
+
return formatBackendDateTime(value, format, timezone);
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Computes a human "Day X of Y" indicator for a multi-day event from its start
|
|
204
|
+
* and end date-times, relative to "now". Returns an empty string when the dates
|
|
205
|
+
* are missing/invalid or the event spans a single day.
|
|
206
|
+
* @param {string | number | undefined | null} start - Event start (ISO or epoch ms).
|
|
207
|
+
* @param {string | number | undefined | null} end - Event end (ISO or epoch ms).
|
|
208
|
+
* @param {string | undefined} timezone - The backend timezone string.
|
|
209
|
+
* @return {string} The "Day X of Y" label, or an empty string.
|
|
210
|
+
*/
|
|
211
|
+
function computeDayIndicator(start, end, timezone) {
|
|
212
|
+
const zone = extractIanaZone(timezone);
|
|
213
|
+
const startDt = parseBackendDateTime(start, timezone);
|
|
214
|
+
const endDt = parseBackendDateTime(end, timezone);
|
|
215
|
+
if (!startDt.isValid || !endDt.isValid) {
|
|
216
|
+
return '';
|
|
217
|
+
}
|
|
218
|
+
const startDay = startDt.startOf('day');
|
|
219
|
+
const endDay = endDt.startOf('day');
|
|
220
|
+
const totalDays = Math.floor(endDay.diff(startDay, 'days').days) + 1;
|
|
221
|
+
// Only meaningful for short, multi-day events (a conference-week style span).
|
|
222
|
+
// Very long spans (e.g. a year-long series) are not shown as "Day X of Y".
|
|
223
|
+
const MAX_DAY_INDICATOR_SPAN = 31;
|
|
224
|
+
if (totalDays <= 1 || totalDays > MAX_DAY_INDICATOR_SPAN) {
|
|
225
|
+
return '';
|
|
226
|
+
}
|
|
227
|
+
const now = (zone ? DateTime.now().setZone(zone) : DateTime.now()).startOf('day');
|
|
228
|
+
const clampedNow = now < startDay ? startDay : now > endDay ? endDay : now;
|
|
229
|
+
const currentDay = Math.floor(clampedNow.diff(startDay, 'days').days) + 1;
|
|
230
|
+
return `Day ${currentDay} of ${totalDays}`;
|
|
231
|
+
}
|
|
232
|
+
|
|
111
233
|
var welcomeHeader = {
|
|
112
234
|
greeting: "Welcome back, ",
|
|
113
235
|
fallbackGreeting: "Welcome back",
|
|
@@ -136,26 +258,41 @@ var upcomingSection = {
|
|
|
136
258
|
toggle: "Collapse or expand upcoming meetings and events"
|
|
137
259
|
},
|
|
138
260
|
emptyMessage: "You have no upcoming meetings or events.",
|
|
139
|
-
errorMessage: "Unable to load upcoming meetings and events. Please try again."
|
|
261
|
+
errorMessage: "Unable to load upcoming meetings and events. Please try again.",
|
|
262
|
+
paginator: {
|
|
263
|
+
rangeTemplate: "{start}-{end} of {total} Meetings & Events"
|
|
264
|
+
}
|
|
140
265
|
};
|
|
141
266
|
var eventGroupCard = {
|
|
267
|
+
eventBadge: "EVENT",
|
|
268
|
+
standaloneBadge: "STANDALONE MEETING",
|
|
269
|
+
viewLabel: "View",
|
|
142
270
|
viewEventLabel: "View Event",
|
|
271
|
+
eventDatesLabel: "EVENT DATES & TIMEZONE",
|
|
272
|
+
meetingDateLabel: "MEETING DATE",
|
|
273
|
+
timeTimezoneLabel: "TIME & TIMEZONE",
|
|
274
|
+
meetingsLabel: "Meetings",
|
|
275
|
+
openForAttendanceTemplate: "{count} Meetings open for attendance",
|
|
143
276
|
meetingListToggle: {
|
|
277
|
+
showLabel: "Show meetings",
|
|
144
278
|
showLabelPrefix: "Show Meetings (",
|
|
145
279
|
showLabelSuffix: " open for attendance)",
|
|
146
|
-
hideLabel: "Hide
|
|
280
|
+
hideLabel: "Hide meetings"
|
|
147
281
|
},
|
|
148
282
|
ariaLabel: {
|
|
283
|
+
view: "View details",
|
|
149
284
|
viewEvent: "View event details",
|
|
150
285
|
meetingListToggle: "Show or hide the meeting list for this event"
|
|
151
286
|
},
|
|
152
287
|
paginator: {
|
|
153
|
-
rangeTemplate: "
|
|
154
|
-
totalTemplate: "{total} meetings"
|
|
288
|
+
rangeTemplate: "{start}-{end} of {total} meetings",
|
|
289
|
+
totalTemplate: "{total} meetings scheduled across the event"
|
|
155
290
|
}
|
|
156
291
|
};
|
|
157
292
|
var meetingRow = {
|
|
158
293
|
emptyFieldPlaceholder: "—",
|
|
294
|
+
timeTimezoneLabel: "TIME & TIMEZONE",
|
|
295
|
+
viewLabel: "View",
|
|
159
296
|
currentlyAttendingIndicator: "Currently Attending",
|
|
160
297
|
logAttendanceLabel: "Log Attendance",
|
|
161
298
|
leaveMeetingLabel: "Leave Meeting",
|
|
@@ -172,6 +309,8 @@ var groupsSection = {
|
|
|
172
309
|
collapseLabel: "Collapse",
|
|
173
310
|
countSuffix: "Groups",
|
|
174
311
|
emptyValue: "-",
|
|
312
|
+
unassignedMemberLevel: "Unassigned",
|
|
313
|
+
itemsPerPageLabel: "Items per page",
|
|
175
314
|
ariaLabel: {
|
|
176
315
|
viewAll: "View all your groups",
|
|
177
316
|
toggle: "Collapse or expand your groups",
|
|
@@ -189,8 +328,8 @@ var groupsSection = {
|
|
|
189
328
|
totalTemplate: "{total} groups"
|
|
190
329
|
},
|
|
191
330
|
memberLevelBadge: {
|
|
192
|
-
|
|
193
|
-
|
|
331
|
+
success: "ieeesa-your-groups__badge--success",
|
|
332
|
+
warning: "ieeesa-your-groups__badge--warning"
|
|
194
333
|
},
|
|
195
334
|
emptyMessage: "You are not a member of any groups.",
|
|
196
335
|
errorMessage: "Unable to load your groups. Please try again."
|
|
@@ -289,6 +428,7 @@ var constants$1 = /*#__PURE__*/Object.freeze({
|
|
|
289
428
|
*/
|
|
290
429
|
class MeetingAttendanceRowComponent {
|
|
291
430
|
constructor() {
|
|
431
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
292
432
|
this.constants = constants$1;
|
|
293
433
|
/** The current attendance state controlling label/indicator and action. */
|
|
294
434
|
this.attendanceState = AttendanceState.NOT_ATTENDING;
|
|
@@ -299,6 +439,12 @@ class MeetingAttendanceRowComponent {
|
|
|
299
439
|
canLogAttendance: false,
|
|
300
440
|
canLeaveMeeting: false,
|
|
301
441
|
};
|
|
442
|
+
/**
|
|
443
|
+
* Renders the leaner "standalone meeting" variant used by standalone-meeting
|
|
444
|
+
* cards (the group/location and status live on the parent card, so the row
|
|
445
|
+
* only shows the TIME & TIMEZONE block and the attendance + View actions).
|
|
446
|
+
*/
|
|
447
|
+
this.compact = false;
|
|
302
448
|
/** Emits the meeting id when the meeting-name link is activated (Req 7.4). */
|
|
303
449
|
this.openMeeting = new EventEmitter();
|
|
304
450
|
/** Emits the meeting id to request logging attendance (Req 7.7). */
|
|
@@ -365,7 +511,8 @@ class MeetingAttendanceRowComponent {
|
|
|
365
511
|
* @memberof MeetingAttendanceRowComponent
|
|
366
512
|
*/
|
|
367
513
|
get formattedDate() {
|
|
368
|
-
|
|
514
|
+
const value = this.meeting?.startDateTime ?? this.meeting?.meetingDate;
|
|
515
|
+
return formatEpoch(value, DateFormats.displayFormat, this.meeting?.timezone);
|
|
369
516
|
}
|
|
370
517
|
/**
|
|
371
518
|
* Formats the meeting time + timezone for display using luxon (Req 7.3).
|
|
@@ -375,9 +522,15 @@ class MeetingAttendanceRowComponent {
|
|
|
375
522
|
* @memberof MeetingAttendanceRowComponent
|
|
376
523
|
*/
|
|
377
524
|
get formattedTime() {
|
|
378
|
-
const time = this.formatIso(this.meeting?.meetingTime, DateFormats.timeMeridiemFormat);
|
|
379
525
|
const timezone = this.meeting?.timezone ?? '';
|
|
380
|
-
|
|
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
|
+
if (!range) {
|
|
531
|
+
return '';
|
|
532
|
+
}
|
|
533
|
+
return timezone ? `${range} ${timezone}` : range;
|
|
381
534
|
}
|
|
382
535
|
/**
|
|
383
536
|
* Handles activation of the attendance action button. Delegates to the pure
|
|
@@ -408,27 +561,12 @@ class MeetingAttendanceRowComponent {
|
|
|
408
561
|
}
|
|
409
562
|
this.openMeeting.emit(this.meeting.meetingId);
|
|
410
563
|
}
|
|
411
|
-
/**
|
|
412
|
-
* Parses an ISO string with luxon and formats it with the supplied token,
|
|
413
|
-
* returning the raw value unchanged when it is missing or unparseable.
|
|
414
|
-
* @param {string | undefined} isoValue - The ISO date/time string.
|
|
415
|
-
* @param {string} format - The luxon format token.
|
|
416
|
-
* @return {string} The formatted value or the raw/empty fallback.
|
|
417
|
-
* @memberof MeetingAttendanceRowComponent
|
|
418
|
-
*/
|
|
419
|
-
formatIso(isoValue, format) {
|
|
420
|
-
if (!isoValue) {
|
|
421
|
-
return '';
|
|
422
|
-
}
|
|
423
|
-
const parsed = DateTime.fromISO(isoValue, { setZone: true });
|
|
424
|
-
return parsed.isValid ? parsed.toFormat(format) : isoValue;
|
|
425
|
-
}
|
|
426
564
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MeetingAttendanceRowComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
427
|
-
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" }, outputs: { openMeeting: "openMeeting", logAttendance: "logAttendance", leaveMeeting: "leaveMeeting" }, ngImport: i0, template: "<div class=\"ieeesa-meeting-attendance-row\">\r\n <div class=\"ieeesa-meeting-attendance-row__details\">\r\n <!-- Meeting-name link (emits openMeeting; non-actionable when id missing). -->\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 ?? 'View meeting details'\"\r\n (click)=\"onOpenMeeting()\"\r\n >\r\n {{ meeting?.meetingName }}\r\n </button>\r\n\r\n <dl class=\"ieeesa-meeting-attendance-row__meta\">\r\n <div class=\"ieeesa-meeting-attendance-row__meta-item\">\r\n <dt class=\"ieeesa-meeting-attendance-row__meta-term\">\r\n {{ constants?.groupsSection?.columns?.group ?? 'Group' }}\r\n </dt>\r\n <dd class=\"ieeesa-meeting-attendance-row__meta-value\">\r\n {{ resolveFieldValue(meeting?.groupOrCommittee) }}\r\n </dd>\r\n </div>\r\n\r\n <div class=\"ieeesa-meeting-attendance-row__meta-item\">\r\n <dt class=\"ieeesa-meeting-attendance-row__meta-term\">\r\n {{ constants?.groupsSection?.columns?.affiliation ?? 'Location' }}\r\n </dt>\r\n <dd class=\"ieeesa-meeting-attendance-row__meta-value\">\r\n {{ resolveFieldValue(meeting?.roomOrLocation) }}\r\n </dd>\r\n </div>\r\n\r\n <div class=\"ieeesa-meeting-attendance-row__meta-item\">\r\n <dt class=\"ieeesa-meeting-attendance-row__meta-term\">Date</dt>\r\n <dd class=\"ieeesa-meeting-attendance-row__meta-value\">\r\n {{ formattedDate }}\r\n </dd>\r\n </div>\r\n\r\n <div class=\"ieeesa-meeting-attendance-row__meta-item\">\r\n <dt class=\"ieeesa-meeting-attendance-row__meta-term\">Time</dt>\r\n <dd class=\"ieeesa-meeting-attendance-row__meta-value\">\r\n {{ formattedTime }}\r\n </dd>\r\n </div>\r\n </dl>\r\n </div>\r\n\r\n <div class=\"ieeesa-meeting-attendance-row__actions\">\r\n <!-- Currently-attending indicator shown only in the attending state. -->\r\n <span\r\n *ngIf=\"isCurrentlyAttending\"\r\n class=\"ieeesa-meeting-attendance-row__attending-indicator\"\r\n >\r\n {{ constants?.meetingRow?.currentlyAttendingIndicator ?? 'Currently Attending' }}\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 ?? 'Log attendance for this meeting'\"\r\n (click)=\"onAttendanceAction()\"\r\n >\r\n {{ constants?.meetingRow?.logAttendanceLabel ?? 'Log Attendance' }}\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 ?? 'Leave this meeting'\"\r\n (click)=\"onAttendanceAction()\"\r\n >\r\n {{ constants?.meetingRow?.leaveMeetingLabel ?? 'Leave Meeting' }}\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:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:12px 16px;border-bottom:1px solid #d7d6d6}.ieeesa-meeting-attendance-row__details{display:flex;flex-direction:column;gap:8px;min-width:0}.ieeesa-meeting-attendance-row__name-link{padding:0;border:0;background:none;text-align:left;text-decoration:underline;color:#00629b;cursor:pointer}.ieeesa-meeting-attendance-row__name-link:disabled{color:#939094;text-decoration:none;cursor:default}.ieeesa-meeting-attendance-row__meta{display:flex;flex-wrap:wrap;gap:4px 24px;margin:0}.ieeesa-meeting-attendance-row__meta-item{display:flex;flex-direction:column;gap:4px}.ieeesa-meeting-attendance-row__meta-term{margin:0;font-size:.75rem;color:#939094}.ieeesa-meeting-attendance-row__meta-value{margin:0;font-size:.875rem;color:#000}.ieeesa-meeting-attendance-row__actions{display:flex;align-items:center;gap:12px;flex-shrink:0}.ieeesa-meeting-attendance-row__attending-indicator{display:inline-flex;align-items:center;padding:4px 12px;border-radius:16px;font-size:.8125rem;color:#00629b;background-color:#f0f5f9}.ieeesa-meeting-attendance-row__action-button{padding:8px 16px;border-radius:4px;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}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
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 }); }
|
|
428
566
|
}
|
|
429
567
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MeetingAttendanceRowComponent, decorators: [{
|
|
430
568
|
type: Component,
|
|
431
|
-
args: [{ selector: 'ieeesa-meeting-attendance-row', standalone: true, imports: [CommonModule], encapsulation: ViewEncapsulation.None, template: "<div class=\"ieeesa-meeting-attendance-row\">\r\n <div class=\"ieeesa-meeting-attendance-row__details\">\r\n <!-- Meeting-name link (emits openMeeting; non-actionable when id missing). -->\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 ?? 'View meeting details'\"\r\n (click)=\"onOpenMeeting()\"\r\n >\r\n {{ meeting?.meetingName }}\r\n </button>\r\n\r\n <dl class=\"ieeesa-meeting-attendance-row__meta\">\r\n <div class=\"ieeesa-meeting-attendance-row__meta-item\">\r\n <dt class=\"ieeesa-meeting-attendance-row__meta-term\">\r\n {{ constants?.groupsSection?.columns?.group ?? 'Group' }}\r\n </dt>\r\n <dd class=\"ieeesa-meeting-attendance-row__meta-value\">\r\n {{ resolveFieldValue(meeting?.groupOrCommittee) }}\r\n </dd>\r\n </div>\r\n\r\n <div class=\"ieeesa-meeting-attendance-row__meta-item\">\r\n <dt class=\"ieeesa-meeting-attendance-row__meta-term\">\r\n {{ constants?.groupsSection?.columns?.affiliation ?? 'Location' }}\r\n </dt>\r\n <dd class=\"ieeesa-meeting-attendance-row__meta-value\">\r\n {{ resolveFieldValue(meeting?.roomOrLocation) }}\r\n </dd>\r\n </div>\r\n\r\n <div class=\"ieeesa-meeting-attendance-row__meta-item\">\r\n <dt class=\"ieeesa-meeting-attendance-row__meta-term\">Date</dt>\r\n <dd class=\"ieeesa-meeting-attendance-row__meta-value\">\r\n {{ formattedDate }}\r\n </dd>\r\n </div>\r\n\r\n <div class=\"ieeesa-meeting-attendance-row__meta-item\">\r\n <dt class=\"ieeesa-meeting-attendance-row__meta-term\">Time</dt>\r\n <dd class=\"ieeesa-meeting-attendance-row__meta-value\">\r\n {{ formattedTime }}\r\n </dd>\r\n </div>\r\n </dl>\r\n </div>\r\n\r\n <div class=\"ieeesa-meeting-attendance-row__actions\">\r\n <!-- Currently-attending indicator shown only in the attending state. -->\r\n <span\r\n *ngIf=\"isCurrentlyAttending\"\r\n class=\"ieeesa-meeting-attendance-row__attending-indicator\"\r\n >\r\n {{ constants?.meetingRow?.currentlyAttendingIndicator ?? 'Currently Attending' }}\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 ?? 'Log attendance for this meeting'\"\r\n (click)=\"onAttendanceAction()\"\r\n >\r\n {{ constants?.meetingRow?.logAttendanceLabel ?? 'Log Attendance' }}\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 ?? 'Leave this meeting'\"\r\n (click)=\"onAttendanceAction()\"\r\n >\r\n {{ constants?.meetingRow?.leaveMeetingLabel ?? 'Leave Meeting' }}\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:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:12px 16px;border-bottom:1px solid #d7d6d6}.ieeesa-meeting-attendance-row__details{display:flex;flex-direction:column;gap:8px;min-width:0}.ieeesa-meeting-attendance-row__name-link{padding:0;border:0;background:none;text-align:left;text-decoration:underline;color:#00629b;cursor:pointer}.ieeesa-meeting-attendance-row__name-link:disabled{color:#939094;text-decoration:none;cursor:default}.ieeesa-meeting-attendance-row__meta{display:flex;flex-wrap:wrap;gap:4px 24px;margin:0}.ieeesa-meeting-attendance-row__meta-item{display:flex;flex-direction:column;gap:4px}.ieeesa-meeting-attendance-row__meta-term{margin:0;font-size:.75rem;color:#939094}.ieeesa-meeting-attendance-row__meta-value{margin:0;font-size:.875rem;color:#000}.ieeesa-meeting-attendance-row__actions{display:flex;align-items:center;gap:12px;flex-shrink:0}.ieeesa-meeting-attendance-row__attending-indicator{display:inline-flex;align-items:center;padding:4px 12px;border-radius:16px;font-size:.8125rem;color:#00629b;background-color:#f0f5f9}.ieeesa-meeting-attendance-row__action-button{padding:8px 16px;border-radius:4px;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}\n"] }]
|
|
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"] }]
|
|
432
570
|
}], propDecorators: { meeting: [{
|
|
433
571
|
type: Input
|
|
434
572
|
}], attendanceState: [{
|
|
@@ -437,6 +575,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
437
575
|
type: Input
|
|
438
576
|
}], permissions: [{
|
|
439
577
|
type: Input
|
|
578
|
+
}], compact: [{
|
|
579
|
+
type: Input
|
|
440
580
|
}], openMeeting: [{
|
|
441
581
|
type: Output
|
|
442
582
|
}], logAttendance: [{
|
|
@@ -463,7 +603,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
463
603
|
class EventGroupCardComponent {
|
|
464
604
|
constructor() {
|
|
465
605
|
/** User-facing strings sourced from `constants.json`. */
|
|
606
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
466
607
|
this.constants = constants$1;
|
|
608
|
+
/** Enum reference for EVENT vs STANDALONE_MEETING comparisons in the template. */
|
|
609
|
+
this.itemKinds = UpcomingItemKind;
|
|
467
610
|
/** Host permissions gating the per-row log-attendance / leave-meeting buttons. */
|
|
468
611
|
this.permissions = {
|
|
469
612
|
canLogAttendance: false,
|
|
@@ -485,6 +628,12 @@ class EventGroupCardComponent {
|
|
|
485
628
|
this.leaveMeeting = new EventEmitter();
|
|
486
629
|
/** Emits the requested page when the per-card paginator changes (Req 6.9, 3.3). */
|
|
487
630
|
this.pageChange = new EventEmitter();
|
|
631
|
+
/**
|
|
632
|
+
* Emits the one-based page to load when the meeting list is opened (or paged)
|
|
633
|
+
* so the container can lazily fetch the event's child meetings from the
|
|
634
|
+
* backend. Standalone-meeting cards never emit this.
|
|
635
|
+
*/
|
|
636
|
+
this.loadMeetings = new EventEmitter();
|
|
488
637
|
/** The default page size for the per-card meeting paginator. */
|
|
489
638
|
this.defaultPageSize = 5;
|
|
490
639
|
/** The current zero-based page index of the meeting list. */
|
|
@@ -494,6 +643,28 @@ class EventGroupCardComponent {
|
|
|
494
643
|
/** Whether the meeting list is currently shown (toggled open). */
|
|
495
644
|
this.isMeetingListOpen = false;
|
|
496
645
|
}
|
|
646
|
+
/**
|
|
647
|
+
* The event status slugified into a BEM modifier suffix (lowercase, spaces to
|
|
648
|
+
* hyphens), e.g. "In Progress" -> "in-progress", used to colour the status
|
|
649
|
+
* pill per status.
|
|
650
|
+
* @return {string} The status modifier suffix.
|
|
651
|
+
* @memberof EventGroupCardComponent
|
|
652
|
+
*/
|
|
653
|
+
get statusModifier() {
|
|
654
|
+
return (this.event?.status ?? '')
|
|
655
|
+
.trim()
|
|
656
|
+
.toLowerCase()
|
|
657
|
+
.replace(/\s+/g, '-');
|
|
658
|
+
}
|
|
659
|
+
/**
|
|
660
|
+
* Whether this card renders a STANDALONE_MEETING (leaner single-meeting card
|
|
661
|
+
* with no child-meeting list) rather than an expandable EVENT block.
|
|
662
|
+
* @return {boolean} True for standalone-meeting cards.
|
|
663
|
+
* @memberof EventGroupCardComponent
|
|
664
|
+
*/
|
|
665
|
+
get isStandalone() {
|
|
666
|
+
return this.event?.kind === UpcomingItemKind.STANDALONE_MEETING;
|
|
667
|
+
}
|
|
497
668
|
/**
|
|
498
669
|
* The full list of meetings for the event, defaulting to an empty list when
|
|
499
670
|
* the event has none.
|
|
@@ -503,18 +674,25 @@ class EventGroupCardComponent {
|
|
|
503
674
|
get meetings() {
|
|
504
675
|
return this.event?.meetings ?? [];
|
|
505
676
|
}
|
|
506
|
-
/**
|
|
677
|
+
/**
|
|
678
|
+
* The total number of meetings for the event (paginator length). Uses the
|
|
679
|
+
* backend `meetingCount` (the full total) rather than the length of the
|
|
680
|
+
* currently loaded page, so the paginator can advance through every page.
|
|
681
|
+
* @return {number} The total meeting count.
|
|
682
|
+
* @memberof EventGroupCardComponent
|
|
683
|
+
*/
|
|
507
684
|
get totalMeetings() {
|
|
508
|
-
return this.meetings.length;
|
|
685
|
+
return this.event?.meetingCount || this.meetings.length;
|
|
509
686
|
}
|
|
510
687
|
/**
|
|
511
|
-
* The
|
|
688
|
+
* The meetings to render for the current page. The server returns exactly one
|
|
689
|
+
* page of meetings into `event.meetings`, so the card renders them as-is
|
|
690
|
+
* without local slicing (pagination is server-side).
|
|
512
691
|
* @return {MeetingRow[]} The meetings on the current page.
|
|
513
692
|
* @memberof EventGroupCardComponent
|
|
514
693
|
*/
|
|
515
694
|
get pagedMeetings() {
|
|
516
|
-
|
|
517
|
-
return this.meetings.slice(start, start + this.pageSize);
|
|
695
|
+
return this.meetings;
|
|
518
696
|
}
|
|
519
697
|
/**
|
|
520
698
|
* The one-based index of the first meeting shown on the current page, or 0
|
|
@@ -559,6 +737,25 @@ class EventGroupCardComponent {
|
|
|
559
737
|
'{total} meetings';
|
|
560
738
|
return template.replace('{total}', `${this.event?.meetingCount ?? 0}`);
|
|
561
739
|
}
|
|
740
|
+
/**
|
|
741
|
+
* The header sub-line: the group · location line for a STANDALONE meeting, or
|
|
742
|
+
* the "{n} meetings scheduled across the event" summary for an EVENT when its
|
|
743
|
+
* meeting count is known (hidden until the count is loaded so it never shows
|
|
744
|
+
* "0 meetings").
|
|
745
|
+
* @return {string} The sub-line text, or an empty string to hide it.
|
|
746
|
+
* @memberof EventGroupCardComponent
|
|
747
|
+
*/
|
|
748
|
+
get subtitleText() {
|
|
749
|
+
if (this.isStandalone) {
|
|
750
|
+
const group = this.event?.groupOrCommittee ?? '';
|
|
751
|
+
const location = this.event?.roomOrLocation ?? '';
|
|
752
|
+
if (group && location) {
|
|
753
|
+
return `${group} \u00b7 ${location}`;
|
|
754
|
+
}
|
|
755
|
+
return group || location;
|
|
756
|
+
}
|
|
757
|
+
return (this.event?.meetingCount ?? 0) > 0 ? this.meetingCountSummary : '';
|
|
758
|
+
}
|
|
562
759
|
/**
|
|
563
760
|
* The meeting-list show/hide toggle label. When the list is hidden the label
|
|
564
761
|
* reads "Show Meetings ({count} open for attendance)" built from the
|
|
@@ -570,19 +767,93 @@ class EventGroupCardComponent {
|
|
|
570
767
|
get meetingListToggleLabel() {
|
|
571
768
|
const toggle = this.constants?.eventGroupCard?.meetingListToggle;
|
|
572
769
|
if (this.isMeetingListOpen) {
|
|
573
|
-
return toggle?.hideLabel ?? 'Hide
|
|
770
|
+
return toggle?.hideLabel ?? 'Hide meetings';
|
|
771
|
+
}
|
|
772
|
+
return toggle?.showLabel ?? 'Show meetings';
|
|
773
|
+
}
|
|
774
|
+
/**
|
|
775
|
+
* The "{count} Meetings open for attendance" summary shown in the event's
|
|
776
|
+
* meetings bar, built from the `constants.json` template and the event's
|
|
777
|
+
* open-for-attendance count (Req 6.5).
|
|
778
|
+
* @return {string} The formatted open-for-attendance summary.
|
|
779
|
+
* @memberof EventGroupCardComponent
|
|
780
|
+
*/
|
|
781
|
+
get openForAttendanceSummary() {
|
|
782
|
+
const template = this.constants?.eventGroupCard?.openForAttendanceTemplate ??
|
|
783
|
+
'{count} Meetings open for attendance';
|
|
784
|
+
return template.replace('{count}', `${this.event?.openForAttendanceCount ?? 0}`);
|
|
785
|
+
}
|
|
786
|
+
/**
|
|
787
|
+
* The {@link MeetingRow} view model for a STANDALONE_MEETING card, projected
|
|
788
|
+
* from the event entry so the shared {@link MeetingAttendanceRowComponent}
|
|
789
|
+
* renders its time/timezone block and attendance action.
|
|
790
|
+
* @return {MeetingRow} The standalone meeting row.
|
|
791
|
+
* @memberof EventGroupCardComponent
|
|
792
|
+
*/
|
|
793
|
+
get standaloneMeeting() {
|
|
794
|
+
return {
|
|
795
|
+
meetingId: this.event?.eventId ?? '',
|
|
796
|
+
meetingName: this.event?.title ?? '',
|
|
797
|
+
groupOrCommittee: this.event?.groupOrCommittee,
|
|
798
|
+
roomOrLocation: this.event?.roomOrLocation,
|
|
799
|
+
startDateTime: this.event?.startDateTime ?? this.event?.startDate,
|
|
800
|
+
endDateTime: this.event?.endDateTime ?? this.event?.endDate,
|
|
801
|
+
timezone: this.event?.timezone ?? '',
|
|
802
|
+
status: this.event?.status,
|
|
803
|
+
isMemberOfGroup: this.event?.isMemberOfGroup,
|
|
804
|
+
};
|
|
805
|
+
}
|
|
806
|
+
/**
|
|
807
|
+
* The formatted "start – end time (timezone)" string for a STANDALONE meeting,
|
|
808
|
+
* mirroring the inner meeting row's TIME & TIMEZONE value.
|
|
809
|
+
* @return {string} The formatted time + timezone.
|
|
810
|
+
* @memberof EventGroupCardComponent
|
|
811
|
+
*/
|
|
812
|
+
get standaloneTime() {
|
|
813
|
+
const timezone = this.event?.timezone ?? '';
|
|
814
|
+
const start = formatEpoch(this.event?.startDateTime ?? this.event?.startDate, DateFormats.timeMeridiemFormat, timezone);
|
|
815
|
+
const end = formatEpoch(this.event?.endDateTime ?? this.event?.endDate, DateFormats.timeMeridiemFormat, timezone);
|
|
816
|
+
const range = end ? `${start} \u2013 ${end}` : start;
|
|
817
|
+
if (!range) {
|
|
818
|
+
return '';
|
|
574
819
|
}
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
820
|
+
return timezone ? `${range} ${timezone}` : range;
|
|
821
|
+
}
|
|
822
|
+
/**
|
|
823
|
+
* Whether the STANDALONE meeting is currently being attended (drives the pill
|
|
824
|
+
* and the leave action).
|
|
825
|
+
* @return {boolean} True when the standalone meeting is currently attending.
|
|
826
|
+
* @memberof EventGroupCardComponent
|
|
827
|
+
*/
|
|
828
|
+
get isStandaloneAttending() {
|
|
829
|
+
return (this.resolveAttendanceState(this.standaloneMeeting) ===
|
|
830
|
+
AttendanceState.CURRENTLY_ATTENDING);
|
|
831
|
+
}
|
|
832
|
+
/**
|
|
833
|
+
* Whether the STANDALONE meeting's Log Attendance button is shown (not
|
|
834
|
+
* attending and the host grants the permission).
|
|
835
|
+
* @return {boolean} True when the log-attendance button is visible.
|
|
836
|
+
* @memberof EventGroupCardComponent
|
|
837
|
+
*/
|
|
838
|
+
get showStandaloneLog() {
|
|
839
|
+
return !this.isStandaloneAttending && !!this.permissions?.canLogAttendance;
|
|
840
|
+
}
|
|
841
|
+
/**
|
|
842
|
+
* Whether the STANDALONE meeting's Leave Meeting button is shown (attending
|
|
843
|
+
* and the host grants the permission).
|
|
844
|
+
* @return {boolean} True when the leave-meeting button is visible.
|
|
845
|
+
* @memberof EventGroupCardComponent
|
|
846
|
+
*/
|
|
847
|
+
get showStandaloneLeave() {
|
|
848
|
+
return this.isStandaloneAttending && !!this.permissions?.canLeaveMeeting;
|
|
578
849
|
}
|
|
579
|
-
/** The luxon-formatted start date of the event (Req 6.2). */
|
|
850
|
+
/** The luxon-formatted start date of the event (ISO or epoch ms) (Req 6.2). */
|
|
580
851
|
get formattedStartDate() {
|
|
581
|
-
return this.
|
|
852
|
+
return this.formatDate(this.event?.startDateTime ?? this.event?.startDate);
|
|
582
853
|
}
|
|
583
|
-
/** The luxon-formatted end date of the event (Req 6.2). */
|
|
854
|
+
/** The luxon-formatted end date of the event (ISO or epoch ms) (Req 6.2). */
|
|
584
855
|
get formattedEndDate() {
|
|
585
|
-
return this.
|
|
856
|
+
return this.formatDate(this.event?.endDateTime ?? this.event?.endDate);
|
|
586
857
|
}
|
|
587
858
|
/**
|
|
588
859
|
* `trackBy` for the meeting-row `*ngFor`, keyed by the stable meeting id so
|
|
@@ -617,11 +888,15 @@ class EventGroupCardComponent {
|
|
|
617
888
|
return this.inFlightMeetingIds?.has(meeting?.meetingId) ?? false;
|
|
618
889
|
}
|
|
619
890
|
/**
|
|
620
|
-
* Toggles the meeting-list visibility
|
|
891
|
+
* Toggles the meeting-list visibility, lazily requesting the first page of the
|
|
892
|
+
* event's child meetings from the container the first time it is opened (Req 6.6).
|
|
621
893
|
* @memberof EventGroupCardComponent
|
|
622
894
|
*/
|
|
623
895
|
onToggleMeetingList() {
|
|
624
896
|
this.isMeetingListOpen = !this.isMeetingListOpen;
|
|
897
|
+
if (this.isMeetingListOpen) {
|
|
898
|
+
this.loadMeetings.emit(this.pageIndex + 1);
|
|
899
|
+
}
|
|
625
900
|
}
|
|
626
901
|
/**
|
|
627
902
|
* Handles the "View Event" button, emitting the event id to the host (Req 6.4).
|
|
@@ -667,28 +942,27 @@ class EventGroupCardComponent {
|
|
|
667
942
|
pageIndex: event.pageIndex,
|
|
668
943
|
pageSize: event.pageSize,
|
|
669
944
|
});
|
|
945
|
+
// Request the newly selected page's child meetings from the container.
|
|
946
|
+
this.loadMeetings.emit(event.pageIndex + 1);
|
|
670
947
|
}
|
|
671
948
|
/**
|
|
672
|
-
*
|
|
673
|
-
*
|
|
674
|
-
*
|
|
675
|
-
* @param {
|
|
676
|
-
* @
|
|
949
|
+
* Formats a date for display, preferring the epoch-milliseconds value (from
|
|
950
|
+
* the real API) formatted in the event's timezone and falling back to a legacy
|
|
951
|
+
* ISO string. Returns an empty string when neither is present.
|
|
952
|
+
* @param {number | undefined} epochMs - The epoch-milliseconds value.
|
|
953
|
+
* @param {string | undefined} isoValue - The legacy ISO fallback.
|
|
954
|
+
* @return {string} The formatted date or an empty string.
|
|
677
955
|
* @memberof EventGroupCardComponent
|
|
678
956
|
*/
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
return '';
|
|
682
|
-
}
|
|
683
|
-
const parsed = DateTime.fromISO(isoValue, { setZone: true });
|
|
684
|
-
return parsed.isValid ? parsed.toFormat(format) : isoValue;
|
|
957
|
+
formatDate(value) {
|
|
958
|
+
return formatEpoch(value, DateFormats.displayFormat, this.event?.timezone);
|
|
685
959
|
}
|
|
686
960
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EventGroupCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
687
|
-
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" }, ngImport: i0, template: "<article\r\n class=\"ieeesa-event-group-card\"\r\n [class.ieeesa-event-group-card--mobile]=\"isMobileView\"\r\n>\r\n <header class=\"ieeesa-event-group-card__header\">\r\n <div class=\"ieeesa-event-group-card__heading\">\r\n <!-- Status badge (Req 6.1). -->\r\n <span\r\n *ngIf=\"event?.status\"\r\n class=\"ieeesa-event-group-card__status\"\r\n >\r\n {{ event?.status }}\r\n </span>\r\n\r\n <!-- Event title (Req 6.1). -->\r\n <h3 class=\"ieeesa-event-group-card__title\">{{ event?.title }}</h3>\r\n\r\n <!-- Day indicator (Req 6.1). -->\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 <!-- View Event action (Req 6.3, 6.4). -->\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-event-group-card__view-event\"\r\n [attr.aria-label]=\"constants?.eventGroupCard?.ariaLabel?.viewEvent ?? 'View event details'\"\r\n (click)=\"onViewEvent()\"\r\n >\r\n {{ constants?.eventGroupCard?.viewEventLabel ?? 'View Event' }}\r\n </button>\r\n </header>\r\n\r\n <dl class=\"ieeesa-event-group-card__meta\">\r\n <!-- Meeting-count summary sub-line (Req 6.1). -->\r\n <div class=\"ieeesa-event-group-card__meta-item\">\r\n <dd class=\"ieeesa-event-group-card__meeting-count\">\r\n {{ meetingCountSummary }}\r\n </dd>\r\n </div>\r\n\r\n <!-- Start / end date (Req 6.2). -->\r\n <div class=\"ieeesa-event-group-card__meta-item\">\r\n <dd class=\"ieeesa-event-group-card__dates\">\r\n {{ formattedStartDate }}<ng-container *ngIf=\"formattedEndDate\">\r\n – {{ formattedEndDate }}</ng-container>\r\n </dd>\r\n </div>\r\n\r\n <!-- Timezone (Req 6.2). -->\r\n <div class=\"ieeesa-event-group-card__meta-item\" *ngIf=\"event?.timezone\">\r\n <dd class=\"ieeesa-event-group-card__timezone\">{{ event?.timezone }}</dd>\r\n </div>\r\n </dl>\r\n\r\n <!-- Meeting-list show/hide toggle labeled with open-for-attendance count (Req 6.5, 6.6). -->\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 ?? 'Show or hide the meeting list for this event'\"\r\n (click)=\"onToggleMeetingList()\"\r\n >\r\n {{ meetingListToggleLabel }}\r\n </button>\r\n\r\n <!-- Meeting list + per-card paginator, shown only when the toggle is open (Req 6.7, 6.8). -->\r\n <div *ngIf=\"isMeetingListOpen\" class=\"ieeesa-event-group-card__meetings\">\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 ?? 'Meeting list pagination'\"\r\n >\r\n <!-- Range + total count label from constants.json (Req 6.8). -->\r\n <span class=\"ieeesa-event-group-card__paginator-range\">\r\n {{ rangeLabel }}\r\n </span>\r\n\r\n <!-- Presentation paginator emitting pageChange({ pageIndex, pageSize }) (Req 6.9, 3.3). -->\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</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:12px;padding:16px;border:1px solid #d7d6d6;border-radius:8px;background-color:#fff}.ieeesa-event-group-card__header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.ieeesa-event-group-card__heading{display:flex;flex-direction:column;gap:4px;min-width:0}.ieeesa-event-group-card__status{display:inline-flex;align-items:center;align-self:flex-start;padding:4px 12px;border-radius:16px;font-size:.75rem;color:#00629b;background-color:#f0f5f9}.ieeesa-event-group-card__title{margin:0;font-size:1.125rem;color:#000}.ieeesa-event-group-card__day-indicator{font-size:.8125rem;color:#939094}.ieeesa-event-group-card__view-event{flex-shrink:0;padding:8px 16px;border:1px solid #00629b;border-radius:4px;background-color:#fff;font-size:.875rem;color:#00629b;cursor:pointer}.ieeesa-event-group-card__meta{display:flex;flex-wrap:wrap;gap:4px 24px;margin:0}.ieeesa-event-group-card__meta-item{display:flex;flex-direction:column;gap:4px}.ieeesa-event-group-card__meeting-count,.ieeesa-event-group-card__dates,.ieeesa-event-group-card__timezone{margin:0;font-size:.875rem;color:#000}.ieeesa-event-group-card__timezone{color:#939094}.ieeesa-event-group-card__meeting-toggle{align-self:flex-start;padding:8px 0;border:0;background:none;text-align:left;text-decoration:underline;font-size:.875rem;color:#00629b;cursor:pointer}.ieeesa-event-group-card__meetings{display:flex;flex-direction:column;border-top:1px solid #d7d6d6}.ieeesa-event-group-card__paginator{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px;padding-top:8px}.ieeesa-event-group-card__paginator-range{font-size:.8125rem;color:#939094}.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__view-event{align-self:stretch}.ieeesa-event-group-card--mobile .ieeesa-event-group-card__paginator{flex-direction:column;align-items:stretch}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { 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"], outputs: ["openMeeting", "logAttendance", "leaveMeeting"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
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 }); }
|
|
688
962
|
}
|
|
689
963
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EventGroupCardComponent, decorators: [{
|
|
690
964
|
type: Component,
|
|
691
|
-
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>\r\n <header class=\"ieeesa-event-group-card__header\">\r\n <div class=\"ieeesa-event-group-card__heading\">\r\n <!-- Status badge (Req 6.1). -->\r\n <span\r\n *ngIf=\"event?.status\"\r\n class=\"ieeesa-event-group-card__status\"\r\n >\r\n {{ event?.status }}\r\n </span>\r\n\r\n <!-- Event title (Req 6.1). -->\r\n <h3 class=\"ieeesa-event-group-card__title\">{{ event?.title }}</h3>\r\n\r\n <!-- Day indicator (Req 6.1). -->\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 <!-- View Event action (Req 6.3, 6.4). -->\r\n <button\r\n type=\"button\"\r\n class=\"ieeesa-event-group-card__view-event\"\r\n [attr.aria-label]=\"constants?.eventGroupCard?.ariaLabel?.viewEvent ?? 'View event details'\"\r\n (click)=\"onViewEvent()\"\r\n >\r\n {{ constants?.eventGroupCard?.viewEventLabel ?? 'View Event' }}\r\n </button>\r\n </header>\r\n\r\n <dl class=\"ieeesa-event-group-card__meta\">\r\n <!-- Meeting-count summary sub-line (Req 6.1). -->\r\n <div class=\"ieeesa-event-group-card__meta-item\">\r\n <dd class=\"ieeesa-event-group-card__meeting-count\">\r\n {{ meetingCountSummary }}\r\n </dd>\r\n </div>\r\n\r\n <!-- Start / end date (Req 6.2). -->\r\n <div class=\"ieeesa-event-group-card__meta-item\">\r\n <dd class=\"ieeesa-event-group-card__dates\">\r\n {{ formattedStartDate }}<ng-container *ngIf=\"formattedEndDate\">\r\n – {{ formattedEndDate }}</ng-container>\r\n </dd>\r\n </div>\r\n\r\n <!-- Timezone (Req 6.2). -->\r\n <div class=\"ieeesa-event-group-card__meta-item\" *ngIf=\"event?.timezone\">\r\n <dd class=\"ieeesa-event-group-card__timezone\">{{ event?.timezone }}</dd>\r\n </div>\r\n </dl>\r\n\r\n <!-- Meeting-list show/hide toggle labeled with open-for-attendance count (Req 6.5, 6.6). -->\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 ?? 'Show or hide the meeting list for this event'\"\r\n (click)=\"onToggleMeetingList()\"\r\n >\r\n {{ meetingListToggleLabel }}\r\n </button>\r\n\r\n <!-- Meeting list + per-card paginator, shown only when the toggle is open (Req 6.7, 6.8). -->\r\n <div *ngIf=\"isMeetingListOpen\" class=\"ieeesa-event-group-card__meetings\">\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 ?? 'Meeting list pagination'\"\r\n >\r\n <!-- Range + total count label from constants.json (Req 6.8). -->\r\n <span class=\"ieeesa-event-group-card__paginator-range\">\r\n {{ rangeLabel }}\r\n </span>\r\n\r\n <!-- Presentation paginator emitting pageChange({ pageIndex, pageSize }) (Req 6.9, 3.3). -->\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</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:12px;padding:16px;border:1px solid #d7d6d6;border-radius:8px;background-color:#fff}.ieeesa-event-group-card__header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.ieeesa-event-group-card__heading{display:flex;flex-direction:column;gap:4px;min-width:0}.ieeesa-event-group-card__status{display:inline-flex;align-items:center;align-self:flex-start;padding:4px 12px;border-radius:16px;font-size:.75rem;color:#00629b;background-color:#f0f5f9}.ieeesa-event-group-card__title{margin:0;font-size:1.125rem;color:#000}.ieeesa-event-group-card__day-indicator{font-size:.8125rem;color:#939094}.ieeesa-event-group-card__view-event{flex-shrink:0;padding:8px 16px;border:1px solid #00629b;border-radius:4px;background-color:#fff;font-size:.875rem;color:#00629b;cursor:pointer}.ieeesa-event-group-card__meta{display:flex;flex-wrap:wrap;gap:4px 24px;margin:0}.ieeesa-event-group-card__meta-item{display:flex;flex-direction:column;gap:4px}.ieeesa-event-group-card__meeting-count,.ieeesa-event-group-card__dates,.ieeesa-event-group-card__timezone{margin:0;font-size:.875rem;color:#000}.ieeesa-event-group-card__timezone{color:#939094}.ieeesa-event-group-card__meeting-toggle{align-self:flex-start;padding:8px 0;border:0;background:none;text-align:left;text-decoration:underline;font-size:.875rem;color:#00629b;cursor:pointer}.ieeesa-event-group-card__meetings{display:flex;flex-direction:column;border-top:1px solid #d7d6d6}.ieeesa-event-group-card__paginator{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px;padding-top:8px}.ieeesa-event-group-card__paginator-range{font-size:.8125rem;color:#939094}.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__view-event{align-self:stretch}.ieeesa-event-group-card--mobile .ieeesa-event-group-card__paginator{flex-direction:column;align-items:stretch}\n"] }]
|
|
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"] }]
|
|
692
966
|
}], propDecorators: { event: [{
|
|
693
967
|
type: Input
|
|
694
968
|
}], permissions: [{
|
|
@@ -709,6 +983,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
709
983
|
type: Output
|
|
710
984
|
}], pageChange: [{
|
|
711
985
|
type: Output
|
|
986
|
+
}], loadMeetings: [{
|
|
987
|
+
type: Output
|
|
712
988
|
}] } });
|
|
713
989
|
|
|
714
990
|
/**
|
|
@@ -733,6 +1009,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
733
1009
|
class UpcomingMeetingsEventsComponent {
|
|
734
1010
|
constructor() {
|
|
735
1011
|
/** User-facing strings sourced from `constants.json`. */
|
|
1012
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
736
1013
|
this.constants = constants$1;
|
|
737
1014
|
/** Enum reference for template comparisons against `sectionState`. */
|
|
738
1015
|
this.sectionStates = DashboardSectionState;
|
|
@@ -763,8 +1040,81 @@ class UpcomingMeetingsEventsComponent {
|
|
|
763
1040
|
this.leaveMeeting = new EventEmitter();
|
|
764
1041
|
/** Emits the requested page tagged with its event id when a card paginates (Req 6.9). */
|
|
765
1042
|
this.meetingPageChange = new EventEmitter();
|
|
1043
|
+
/** Emits the event id + one-based page to lazily load an event's child meetings. */
|
|
1044
|
+
this.loadEventMeetings = new EventEmitter();
|
|
766
1045
|
/** Whether the section's card list is currently expanded; starts collapsed. */
|
|
767
1046
|
this.isExpanded = false;
|
|
1047
|
+
/** Section-level page size — 5 events/meetings per page per the design. */
|
|
1048
|
+
this.sectionPageSize = 5;
|
|
1049
|
+
/** The current zero-based page index of the section list. */
|
|
1050
|
+
this.sectionPageIndex = 0;
|
|
1051
|
+
/**
|
|
1052
|
+
* Emits the new expanded state whenever the user toggles the section, so a
|
|
1053
|
+
* two-way `[(expanded)]` binding keeps the host's flag in sync (otherwise a
|
|
1054
|
+
* host-opened section the user then collapses leaves the host flag stale,
|
|
1055
|
+
* making a repeat "Jump to" a no-op).
|
|
1056
|
+
* @memberof UpcomingMeetingsEventsComponent
|
|
1057
|
+
*/
|
|
1058
|
+
this.expandedChange = new EventEmitter();
|
|
1059
|
+
}
|
|
1060
|
+
/** The total number of events/meetings in the section (paginator length). */
|
|
1061
|
+
get totalItems() {
|
|
1062
|
+
return this.events?.length ?? 0;
|
|
1063
|
+
}
|
|
1064
|
+
/**
|
|
1065
|
+
* The slice of events/meetings for the current section page (5 per page),
|
|
1066
|
+
* used by the card `*ngFor`.
|
|
1067
|
+
* @return {UpcomingEvent[]} The events on the current page.
|
|
1068
|
+
* @memberof UpcomingMeetingsEventsComponent
|
|
1069
|
+
*/
|
|
1070
|
+
get pagedEvents() {
|
|
1071
|
+
const start = this.sectionPageIndex * this.sectionPageSize;
|
|
1072
|
+
return (this.events ?? []).slice(start, start + this.sectionPageSize);
|
|
1073
|
+
}
|
|
1074
|
+
/** The one-based index of the first item shown on the current page. */
|
|
1075
|
+
get sectionRangeStart() {
|
|
1076
|
+
return this.totalItems === 0
|
|
1077
|
+
? 0
|
|
1078
|
+
: this.sectionPageIndex * this.sectionPageSize + 1;
|
|
1079
|
+
}
|
|
1080
|
+
/** The one-based index of the last item shown on the current page. */
|
|
1081
|
+
get sectionRangeEnd() {
|
|
1082
|
+
return Math.min((this.sectionPageIndex + 1) * this.sectionPageSize, this.totalItems);
|
|
1083
|
+
}
|
|
1084
|
+
/**
|
|
1085
|
+
* The section paginator range label (e.g. "1-5 of 20 Meetings & Events")
|
|
1086
|
+
* built from the `constants.json` template.
|
|
1087
|
+
* @return {string} The formatted range label.
|
|
1088
|
+
* @memberof UpcomingMeetingsEventsComponent
|
|
1089
|
+
*/
|
|
1090
|
+
get sectionRangeLabel() {
|
|
1091
|
+
const template = this.constants?.upcomingSection?.paginator?.rangeTemplate ??
|
|
1092
|
+
'{start}-{end} of {total} Meetings & Events';
|
|
1093
|
+
return template
|
|
1094
|
+
.replace('{start}', `${this.sectionRangeStart}`)
|
|
1095
|
+
.replace('{end}', `${this.sectionRangeEnd}`)
|
|
1096
|
+
.replace('{total}', `${this.totalItems}`);
|
|
1097
|
+
}
|
|
1098
|
+
/**
|
|
1099
|
+
* Handles the section paginator change, updating the current section page.
|
|
1100
|
+
* @param {PageEvent} event - The Material paginator page event.
|
|
1101
|
+
* @return {void}
|
|
1102
|
+
* @memberof UpcomingMeetingsEventsComponent
|
|
1103
|
+
*/
|
|
1104
|
+
onSectionPageChange(event) {
|
|
1105
|
+
this.sectionPageIndex = event.pageIndex;
|
|
1106
|
+
}
|
|
1107
|
+
/**
|
|
1108
|
+
* Allows the host/container to open or close the section (e.g. a "Jump to"
|
|
1109
|
+
* shortcut opens it). Writing the input mirrors the value onto the internal
|
|
1110
|
+
* expand state while leaving the user's own toggle free to change it after.
|
|
1111
|
+
* @memberof UpcomingMeetingsEventsComponent
|
|
1112
|
+
*/
|
|
1113
|
+
set expanded(value) {
|
|
1114
|
+
this.isExpanded = !!value;
|
|
1115
|
+
}
|
|
1116
|
+
get expanded() {
|
|
1117
|
+
return this.isExpanded;
|
|
768
1118
|
}
|
|
769
1119
|
/**
|
|
770
1120
|
* `trackBy` for the event-group-card `*ngFor`, keyed by the stable event id so
|
|
@@ -784,6 +1134,7 @@ class UpcomingMeetingsEventsComponent {
|
|
|
784
1134
|
*/
|
|
785
1135
|
onToggleExpanded() {
|
|
786
1136
|
this.isExpanded = !this.isExpanded;
|
|
1137
|
+
this.expandedChange.emit(this.isExpanded);
|
|
787
1138
|
}
|
|
788
1139
|
/**
|
|
789
1140
|
* Handles the "View All" link, emitting the `viewAll` intent to the host (Req 5.2).
|
|
@@ -834,12 +1185,27 @@ class UpcomingMeetingsEventsComponent {
|
|
|
834
1185
|
onMeetingPageChange(eventId, page) {
|
|
835
1186
|
this.meetingPageChange.emit({ eventId, ...page });
|
|
836
1187
|
}
|
|
1188
|
+
/**
|
|
1189
|
+
* Bubbles a card's lazy child-meeting load request upward, tagged with the
|
|
1190
|
+
* originating event id so the container can fetch that event's meetings.
|
|
1191
|
+
* @param {string} eventId - The event whose meetings to load.
|
|
1192
|
+
* @param {number} page - The one-based page requested by the card.
|
|
1193
|
+
* @memberof UpcomingMeetingsEventsComponent
|
|
1194
|
+
*/
|
|
1195
|
+
onLoadEventMeetings(eventId, page) {
|
|
1196
|
+
this.loadEventMeetings.emit({ eventId, page });
|
|
1197
|
+
}
|
|
837
1198
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UpcomingMeetingsEventsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
838
|
-
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" }, outputs: { viewAll: "viewAll", viewEvent: "viewEvent", openMeeting: "openMeeting", logAttendance: "logAttendance", leaveMeeting: "leaveMeeting", meetingPageChange: "meetingPageChange" }, 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 ?? 'Upcoming Meetings & Events' }}\r\n </h2>\r\n </div>\r\n\r\n <!-- View All link + Expand/Collapse toggle, matching the Your Groups card\r\n header (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 ?? 'View all upcoming meetings and events'\"\r\n (click)=\"onViewAll()\"\r\n >\r\n {{ constants?.upcomingSection?.viewAllLabel ?? 'View All' }}\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 ?? 'Collapse or expand upcoming meetings and events'\"\r\n (click)=\"onToggleExpanded()\"\r\n >\r\n <span>{{ isExpanded ? (constants?.upcomingSection?.collapseLabel ?? 'Collapse') : (constants?.upcomingSection?.expandLabel ?? 'Expand') }}</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\r\n *ngIf=\"isExpanded\"\r\n class=\"ieeesa-upcoming-meetings-events__body\"\r\n >\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 events; 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 ></ieeesa-event-group-card>\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 ?? 'You have no upcoming meetings or events.' }}\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 ?? 'Unable to load upcoming meetings and events. Please try again.' }}\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:1.125rem;color:#333436}.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:.875rem;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:.875rem;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__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: "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"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
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 }); }
|
|
839
1200
|
}
|
|
840
1201
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UpcomingMeetingsEventsComponent, decorators: [{
|
|
841
1202
|
type: Component,
|
|
842
|
-
args: [{ selector: 'ieeesa-upcoming-meetings-events', standalone: true, imports: [CommonModule, LoaderComponent, EventGroupCardComponent], 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 ?? 'Upcoming Meetings & Events' }}\r\n </h2>\r\n </div>\r\n\r\n <!-- View All link + Expand/Collapse toggle, matching the Your Groups card\r\n header (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 ?? 'View all upcoming meetings and events'\"\r\n (click)=\"onViewAll()\"\r\n >\r\n {{ constants?.upcomingSection?.viewAllLabel ?? 'View All' }}\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 ?? 'Collapse or expand upcoming meetings and events'\"\r\n (click)=\"onToggleExpanded()\"\r\n >\r\n <span>{{ isExpanded ? (constants?.upcomingSection?.collapseLabel ?? 'Collapse') : (constants?.upcomingSection?.expandLabel ?? 'Expand') }}</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\r\n *ngIf=\"isExpanded\"\r\n class=\"ieeesa-upcoming-meetings-events__body\"\r\n >\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 events; 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 ></ieeesa-event-group-card>\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 ?? 'You have no upcoming meetings or events.' }}\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 ?? 'Unable to load upcoming meetings and events. Please try again.' }}\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:1.125rem;color:#333436}.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:.875rem;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:.875rem;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__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"] }]
|
|
1203
|
+
args: [{ selector: 'ieeesa-upcoming-meetings-events', standalone: true, imports: [
|
|
1204
|
+
CommonModule,
|
|
1205
|
+
MatPaginatorModule,
|
|
1206
|
+
LoaderComponent,
|
|
1207
|
+
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"] }]
|
|
843
1209
|
}], propDecorators: { events: [{
|
|
844
1210
|
type: Input
|
|
845
1211
|
}], sectionState: [{
|
|
@@ -864,6 +1230,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
864
1230
|
type: Output
|
|
865
1231
|
}], meetingPageChange: [{
|
|
866
1232
|
type: Output
|
|
1233
|
+
}], loadEventMeetings: [{
|
|
1234
|
+
type: Output
|
|
1235
|
+
}], expanded: [{
|
|
1236
|
+
type: Input
|
|
1237
|
+
}], expandedChange: [{
|
|
1238
|
+
type: Output
|
|
867
1239
|
}] } });
|
|
868
1240
|
|
|
869
1241
|
/**
|
|
@@ -997,11 +1369,11 @@ class DashboardWelcomeHeaderComponent {
|
|
|
997
1369
|
];
|
|
998
1370
|
}
|
|
999
1371
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DashboardWelcomeHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1000
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DashboardWelcomeHeaderComponent, isStandalone: true, selector: "ieeesa-dashboard-welcome-header", inputs: { userName: "userName", meetingsCount: "meetingsCount", groupsCount: "groupsCount" }, outputs: { shortcutSelected: "shortcutSelected" }, ngImport: i0, template: "<div class=\"ieeesa-dashboard-welcome-header\">\r\n <!-- Greeting + helper line -->\r\n <div class=\"ieeesa-dashboard-welcome-header__intro\">\r\n <h1 class=\"ieeesa-dashboard-welcome-header__greeting m-0\">\r\n {{ greeting }}\r\n </h1>\r\n <p class=\"ieeesa-dashboard-welcome-header__helper-text m-0\">\r\n {{ texts?.helperText }}\r\n </p>\r\n </div>\r\n\r\n <!-- \"Jump to\" shortcuts: each icon expands on hover/focus into a pill with\r\n the section label and its count badge. -->\r\n <div class=\"ieeesa-dashboard-welcome-header__jump-to\">\r\n <span class=\"ieeesa-dashboard-welcome-header__jump-to-label\">\r\n {{ texts?.jumpToLabel }}\r\n </span>\r\n\r\n <button\r\n *ngFor=\"let shortcut of shortcuts; trackBy: trackByTarget\"\r\n type=\"button\"\r\n class=\"ieeesa-dashboard-welcome-header__shortcut\"\r\n [attr.aria-label]=\"shortcut.ariaLabel + ' (' + shortcut.count + ')'\"\r\n (click)=\"onShortcutClick(shortcut.target)\"\r\n >\r\n <img\r\n class=\"ieeesa-dashboard-welcome-header__shortcut-icon\"\r\n [src]=\"shortcut.iconUrl\"\r\n alt=\"\"\r\n aria-hidden=\"true\"\r\n />\r\n <span class=\"ieeesa-dashboard-welcome-header__shortcut-label\">\r\n {{ shortcut.label }}\r\n </span>\r\n <span class=\"ieeesa-dashboard-welcome-header__shortcut-count\">\r\n {{ shortcut.count }}\r\n </span>\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-dashboard-welcome-header{display:flex;align-items:center;justify-content:flex-start;gap:10%;flex-wrap:wrap}.ieeesa-dashboard-welcome-header__intro{display:flex;flex-direction:column;gap:4px}.ieeesa-dashboard-welcome-header__greeting{font-family:Calibri Bold;font-weight:700;font-style:normal;font-size:18px;line-height:27px;letter-spacing:0px;color:#111}.ieeesa-dashboard-welcome-header__helper-text{font-family:Calibri Regular;font-weight:400;font-style:normal;font-size:12px;line-height:16.5px;letter-spacing:0px;color:#6a7282}.ieeesa-dashboard-welcome-header__jump-to{display:inline-flex;align-items:center;gap:20px;min-width:228px;width:-moz-fit-content;width:fit-content;height:60px;padding-left:18px;padding-right:18px;background-color:#fff;border-radius:10px;box-shadow:0 1px 2px #0003}.ieeesa-dashboard-welcome-header__jump-to-label{font-family:Calibri Bold;font-weight:700;font-size:.8125rem;letter-spacing:.03125em;text-transform:uppercase;color:#333436;white-space:nowrap}.ieeesa-dashboard-welcome-header__shortcut{display:inline-flex;align-items:center;justify-content:center;gap:0;width:40px;height:40px;padding:0;border:1.5px solid #D1D5DC;border-radius:20px;background-color:#fff;color:#00629b;cursor:pointer;overflow:hidden;transition:width .25s ease,padding .25s ease,gap .2s ease,background-color .2s ease,border-color .2s ease}.ieeesa-dashboard-welcome-header__shortcut:hover,.ieeesa-dashboard-welcome-header__shortcut:focus-visible{width:auto;gap:8px;padding:0 14px;border-color:#00629b;background-color:#eaf3f9;outline:none}.ieeesa-dashboard-welcome-header__shortcut-icon{flex:0 0 auto;width:20px;height:20px;display:block}.ieeesa-dashboard-welcome-header__shortcut-label{max-width:0;opacity:0;overflow:hidden;white-space:nowrap;font-family:Calibri Bold;font-weight:700;font-size:.875rem;color:#333436;transition:max-width .25s ease,opacity .2s ease}.ieeesa-dashboard-welcome-header__shortcut-count{display:inline-flex;align-items:center;justify-content:center;max-width:0;padding:0;opacity:0;overflow:hidden;border-radius:12px;background-color:#eaf3f9;color:#00629b;font-family:Calibri Bold;font-weight:700;font-size:.75rem;white-space:nowrap;transition:max-width .25s ease,opacity .2s ease,padding .2s ease}.ieeesa-dashboard-welcome-header__shortcut:hover .ieeesa-dashboard-welcome-header__shortcut-label,.ieeesa-dashboard-welcome-header__shortcut:focus-visible .ieeesa-dashboard-welcome-header__shortcut-label{max-width:240px;opacity:1}.ieeesa-dashboard-welcome-header__shortcut:hover .ieeesa-dashboard-welcome-header__shortcut-count,.ieeesa-dashboard-welcome-header__shortcut:focus-visible .ieeesa-dashboard-welcome-header__shortcut-count{max-width:48px;padding:2px 10px;opacity:1}@media (max-width: 767px){.ieeesa-dashboard-welcome-header{align-items:flex-start}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
1372
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DashboardWelcomeHeaderComponent, isStandalone: true, selector: "ieeesa-dashboard-welcome-header", inputs: { userName: "userName", meetingsCount: "meetingsCount", groupsCount: "groupsCount" }, outputs: { shortcutSelected: "shortcutSelected" }, ngImport: i0, template: "<div class=\"ieeesa-dashboard-welcome-header\">\r\n <!-- Greeting + helper line -->\r\n <div class=\"ieeesa-dashboard-welcome-header__intro\">\r\n <h1 class=\"ieeesa-dashboard-welcome-header__greeting m-0\">\r\n {{ greeting }}\r\n </h1>\r\n <p class=\"ieeesa-dashboard-welcome-header__helper-text m-0\">\r\n {{ texts?.helperText }}\r\n </p>\r\n </div>\r\n\r\n <!-- \"Jump to\" shortcuts: each icon expands on hover/focus into a pill with\r\n the section label and its count badge. -->\r\n <div class=\"ieeesa-dashboard-welcome-header__jump-to\">\r\n <span class=\"ieeesa-dashboard-welcome-header__jump-to-label\">\r\n {{ texts?.jumpToLabel }}\r\n </span>\r\n\r\n <button\r\n *ngFor=\"let shortcut of shortcuts; trackBy: trackByTarget\"\r\n type=\"button\"\r\n class=\"ieeesa-dashboard-welcome-header__shortcut\"\r\n [attr.aria-label]=\"shortcut.ariaLabel + ' (' + shortcut.count + ')'\"\r\n (click)=\"onShortcutClick(shortcut.target)\"\r\n >\r\n <img\r\n class=\"ieeesa-dashboard-welcome-header__shortcut-icon\"\r\n [src]=\"shortcut.iconUrl\"\r\n alt=\"\"\r\n aria-hidden=\"true\"\r\n />\r\n <span class=\"ieeesa-dashboard-welcome-header__shortcut-label\">\r\n {{ shortcut.label }}\r\n </span>\r\n <span class=\"ieeesa-dashboard-welcome-header__shortcut-count\">\r\n {{ shortcut.count }}\r\n </span>\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-dashboard-welcome-header{display:flex;align-items:center;justify-content:flex-start;gap:10%;flex-wrap:wrap}.ieeesa-dashboard-welcome-header__intro{display:flex;flex-direction:column;gap:4px}.ieeesa-dashboard-welcome-header__greeting{font-family:Calibri Bold;font-weight:700;font-style:normal;font-size:18px;line-height:27px;letter-spacing:0px;color:#111}.ieeesa-dashboard-welcome-header__helper-text{font-family:Calibri Regular;font-weight:400;font-style:normal;font-size:12px;line-height:16.5px;letter-spacing:0px;color:#6a7282}.ieeesa-dashboard-welcome-header__jump-to{display:inline-flex;align-items:center;gap:20px;min-width:228px;width:-moz-fit-content;width:fit-content;height:60px;padding-left:18px;padding-right:18px;background-color:#fff;border-radius:10px;box-shadow:0 1px 2px #0003}.ieeesa-dashboard-welcome-header__jump-to-label{font-family:Calibri Bold;font-weight:700;font-size:.8125rem;letter-spacing:.03125em;text-transform:uppercase;color:#333436;white-space:nowrap}.ieeesa-dashboard-welcome-header__shortcut{display:inline-flex;align-items:center;justify-content:center;gap:0;width:40px;height:40px;padding:0;border:1.5px solid #D1D5DC;border-radius:20px;background-color:#fff;color:#00629b;cursor:pointer;overflow:hidden;will-change:width,padding;transition:width .32s cubic-bezier(.22,1,.36,1),padding .32s cubic-bezier(.22,1,.36,1),gap .32s cubic-bezier(.22,1,.36,1),background-color .25s ease,border-color .25s ease,box-shadow .25s ease}.ieeesa-dashboard-welcome-header__shortcut:hover,.ieeesa-dashboard-welcome-header__shortcut:focus-visible{width:auto;gap:8px;padding:0 14px;border-color:#00629b;background-color:#eaf3f9;box-shadow:0 1px 2px #0003;outline:none}.ieeesa-dashboard-welcome-header__shortcut-icon{flex:0 0 auto;width:20px;height:20px;display:block}.ieeesa-dashboard-welcome-header__shortcut-label{max-width:0;opacity:0;overflow:hidden;white-space:nowrap;font-family:Calibri Bold;font-weight:700;font-size:.875rem;color:#333436;transition:max-width .32s cubic-bezier(.22,1,.36,1),opacity .18s ease}.ieeesa-dashboard-welcome-header__shortcut-count{display:inline-flex;align-items:center;justify-content:center;max-width:0;padding:0;opacity:0;overflow:hidden;border-radius:12px;background-color:#eaf3f9;color:#00629b;font-family:Calibri Bold;font-weight:700;font-size:.75rem;white-space:nowrap;transition:max-width .32s cubic-bezier(.22,1,.36,1),opacity .18s ease,padding .2s ease}.ieeesa-dashboard-welcome-header__shortcut:hover .ieeesa-dashboard-welcome-header__shortcut-label,.ieeesa-dashboard-welcome-header__shortcut:focus-visible .ieeesa-dashboard-welcome-header__shortcut-label{max-width:240px;opacity:1;transition:max-width .32s cubic-bezier(.22,1,.36,1),opacity .22s ease .1s}.ieeesa-dashboard-welcome-header__shortcut:hover .ieeesa-dashboard-welcome-header__shortcut-count,.ieeesa-dashboard-welcome-header__shortcut:focus-visible .ieeesa-dashboard-welcome-header__shortcut-count{max-width:48px;padding:2px 10px;opacity:1;transition:max-width .32s cubic-bezier(.22,1,.36,1),opacity .22s ease .14s,padding .2s ease}@media (max-width: 767px){.ieeesa-dashboard-welcome-header{align-items:flex-start}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
1001
1373
|
}
|
|
1002
1374
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DashboardWelcomeHeaderComponent, decorators: [{
|
|
1003
1375
|
type: Component,
|
|
1004
|
-
args: [{ selector: 'ieeesa-dashboard-welcome-header', standalone: true, imports: [CommonModule], encapsulation: ViewEncapsulation.None, template: "<div class=\"ieeesa-dashboard-welcome-header\">\r\n <!-- Greeting + helper line -->\r\n <div class=\"ieeesa-dashboard-welcome-header__intro\">\r\n <h1 class=\"ieeesa-dashboard-welcome-header__greeting m-0\">\r\n {{ greeting }}\r\n </h1>\r\n <p class=\"ieeesa-dashboard-welcome-header__helper-text m-0\">\r\n {{ texts?.helperText }}\r\n </p>\r\n </div>\r\n\r\n <!-- \"Jump to\" shortcuts: each icon expands on hover/focus into a pill with\r\n the section label and its count badge. -->\r\n <div class=\"ieeesa-dashboard-welcome-header__jump-to\">\r\n <span class=\"ieeesa-dashboard-welcome-header__jump-to-label\">\r\n {{ texts?.jumpToLabel }}\r\n </span>\r\n\r\n <button\r\n *ngFor=\"let shortcut of shortcuts; trackBy: trackByTarget\"\r\n type=\"button\"\r\n class=\"ieeesa-dashboard-welcome-header__shortcut\"\r\n [attr.aria-label]=\"shortcut.ariaLabel + ' (' + shortcut.count + ')'\"\r\n (click)=\"onShortcutClick(shortcut.target)\"\r\n >\r\n <img\r\n class=\"ieeesa-dashboard-welcome-header__shortcut-icon\"\r\n [src]=\"shortcut.iconUrl\"\r\n alt=\"\"\r\n aria-hidden=\"true\"\r\n />\r\n <span class=\"ieeesa-dashboard-welcome-header__shortcut-label\">\r\n {{ shortcut.label }}\r\n </span>\r\n <span class=\"ieeesa-dashboard-welcome-header__shortcut-count\">\r\n {{ shortcut.count }}\r\n </span>\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-dashboard-welcome-header{display:flex;align-items:center;justify-content:flex-start;gap:10%;flex-wrap:wrap}.ieeesa-dashboard-welcome-header__intro{display:flex;flex-direction:column;gap:4px}.ieeesa-dashboard-welcome-header__greeting{font-family:Calibri Bold;font-weight:700;font-style:normal;font-size:18px;line-height:27px;letter-spacing:0px;color:#111}.ieeesa-dashboard-welcome-header__helper-text{font-family:Calibri Regular;font-weight:400;font-style:normal;font-size:12px;line-height:16.5px;letter-spacing:0px;color:#6a7282}.ieeesa-dashboard-welcome-header__jump-to{display:inline-flex;align-items:center;gap:20px;min-width:228px;width:-moz-fit-content;width:fit-content;height:60px;padding-left:18px;padding-right:18px;background-color:#fff;border-radius:10px;box-shadow:0 1px 2px #0003}.ieeesa-dashboard-welcome-header__jump-to-label{font-family:Calibri Bold;font-weight:700;font-size:.8125rem;letter-spacing:.03125em;text-transform:uppercase;color:#333436;white-space:nowrap}.ieeesa-dashboard-welcome-header__shortcut{display:inline-flex;align-items:center;justify-content:center;gap:0;width:40px;height:40px;padding:0;border:1.5px solid #D1D5DC;border-radius:20px;background-color:#fff;color:#00629b;cursor:pointer;overflow:hidden;transition:width .25s ease,padding .25s ease,gap .2s ease,background-color .2s ease,border-color .2s ease}.ieeesa-dashboard-welcome-header__shortcut:hover,.ieeesa-dashboard-welcome-header__shortcut:focus-visible{width:auto;gap:8px;padding:0 14px;border-color:#00629b;background-color:#eaf3f9;outline:none}.ieeesa-dashboard-welcome-header__shortcut-icon{flex:0 0 auto;width:20px;height:20px;display:block}.ieeesa-dashboard-welcome-header__shortcut-label{max-width:0;opacity:0;overflow:hidden;white-space:nowrap;font-family:Calibri Bold;font-weight:700;font-size:.875rem;color:#333436;transition:max-width .25s ease,opacity .2s ease}.ieeesa-dashboard-welcome-header__shortcut-count{display:inline-flex;align-items:center;justify-content:center;max-width:0;padding:0;opacity:0;overflow:hidden;border-radius:12px;background-color:#eaf3f9;color:#00629b;font-family:Calibri Bold;font-weight:700;font-size:.75rem;white-space:nowrap;transition:max-width .25s ease,opacity .2s ease,padding .2s ease}.ieeesa-dashboard-welcome-header__shortcut:hover .ieeesa-dashboard-welcome-header__shortcut-label,.ieeesa-dashboard-welcome-header__shortcut:focus-visible .ieeesa-dashboard-welcome-header__shortcut-label{max-width:240px;opacity:1}.ieeesa-dashboard-welcome-header__shortcut:hover .ieeesa-dashboard-welcome-header__shortcut-count,.ieeesa-dashboard-welcome-header__shortcut:focus-visible .ieeesa-dashboard-welcome-header__shortcut-count{max-width:48px;padding:2px 10px;opacity:1}@media (max-width: 767px){.ieeesa-dashboard-welcome-header{align-items:flex-start}}\n"] }]
|
|
1376
|
+
args: [{ selector: 'ieeesa-dashboard-welcome-header', standalone: true, imports: [CommonModule], encapsulation: ViewEncapsulation.None, template: "<div class=\"ieeesa-dashboard-welcome-header\">\r\n <!-- Greeting + helper line -->\r\n <div class=\"ieeesa-dashboard-welcome-header__intro\">\r\n <h1 class=\"ieeesa-dashboard-welcome-header__greeting m-0\">\r\n {{ greeting }}\r\n </h1>\r\n <p class=\"ieeesa-dashboard-welcome-header__helper-text m-0\">\r\n {{ texts?.helperText }}\r\n </p>\r\n </div>\r\n\r\n <!-- \"Jump to\" shortcuts: each icon expands on hover/focus into a pill with\r\n the section label and its count badge. -->\r\n <div class=\"ieeesa-dashboard-welcome-header__jump-to\">\r\n <span class=\"ieeesa-dashboard-welcome-header__jump-to-label\">\r\n {{ texts?.jumpToLabel }}\r\n </span>\r\n\r\n <button\r\n *ngFor=\"let shortcut of shortcuts; trackBy: trackByTarget\"\r\n type=\"button\"\r\n class=\"ieeesa-dashboard-welcome-header__shortcut\"\r\n [attr.aria-label]=\"shortcut.ariaLabel + ' (' + shortcut.count + ')'\"\r\n (click)=\"onShortcutClick(shortcut.target)\"\r\n >\r\n <img\r\n class=\"ieeesa-dashboard-welcome-header__shortcut-icon\"\r\n [src]=\"shortcut.iconUrl\"\r\n alt=\"\"\r\n aria-hidden=\"true\"\r\n />\r\n <span class=\"ieeesa-dashboard-welcome-header__shortcut-label\">\r\n {{ shortcut.label }}\r\n </span>\r\n <span class=\"ieeesa-dashboard-welcome-header__shortcut-count\">\r\n {{ shortcut.count }}\r\n </span>\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-dashboard-welcome-header{display:flex;align-items:center;justify-content:flex-start;gap:10%;flex-wrap:wrap}.ieeesa-dashboard-welcome-header__intro{display:flex;flex-direction:column;gap:4px}.ieeesa-dashboard-welcome-header__greeting{font-family:Calibri Bold;font-weight:700;font-style:normal;font-size:18px;line-height:27px;letter-spacing:0px;color:#111}.ieeesa-dashboard-welcome-header__helper-text{font-family:Calibri Regular;font-weight:400;font-style:normal;font-size:12px;line-height:16.5px;letter-spacing:0px;color:#6a7282}.ieeesa-dashboard-welcome-header__jump-to{display:inline-flex;align-items:center;gap:20px;min-width:228px;width:-moz-fit-content;width:fit-content;height:60px;padding-left:18px;padding-right:18px;background-color:#fff;border-radius:10px;box-shadow:0 1px 2px #0003}.ieeesa-dashboard-welcome-header__jump-to-label{font-family:Calibri Bold;font-weight:700;font-size:.8125rem;letter-spacing:.03125em;text-transform:uppercase;color:#333436;white-space:nowrap}.ieeesa-dashboard-welcome-header__shortcut{display:inline-flex;align-items:center;justify-content:center;gap:0;width:40px;height:40px;padding:0;border:1.5px solid #D1D5DC;border-radius:20px;background-color:#fff;color:#00629b;cursor:pointer;overflow:hidden;will-change:width,padding;transition:width .32s cubic-bezier(.22,1,.36,1),padding .32s cubic-bezier(.22,1,.36,1),gap .32s cubic-bezier(.22,1,.36,1),background-color .25s ease,border-color .25s ease,box-shadow .25s ease}.ieeesa-dashboard-welcome-header__shortcut:hover,.ieeesa-dashboard-welcome-header__shortcut:focus-visible{width:auto;gap:8px;padding:0 14px;border-color:#00629b;background-color:#eaf3f9;box-shadow:0 1px 2px #0003;outline:none}.ieeesa-dashboard-welcome-header__shortcut-icon{flex:0 0 auto;width:20px;height:20px;display:block}.ieeesa-dashboard-welcome-header__shortcut-label{max-width:0;opacity:0;overflow:hidden;white-space:nowrap;font-family:Calibri Bold;font-weight:700;font-size:.875rem;color:#333436;transition:max-width .32s cubic-bezier(.22,1,.36,1),opacity .18s ease}.ieeesa-dashboard-welcome-header__shortcut-count{display:inline-flex;align-items:center;justify-content:center;max-width:0;padding:0;opacity:0;overflow:hidden;border-radius:12px;background-color:#eaf3f9;color:#00629b;font-family:Calibri Bold;font-weight:700;font-size:.75rem;white-space:nowrap;transition:max-width .32s cubic-bezier(.22,1,.36,1),opacity .18s ease,padding .2s ease}.ieeesa-dashboard-welcome-header__shortcut:hover .ieeesa-dashboard-welcome-header__shortcut-label,.ieeesa-dashboard-welcome-header__shortcut:focus-visible .ieeesa-dashboard-welcome-header__shortcut-label{max-width:240px;opacity:1;transition:max-width .32s cubic-bezier(.22,1,.36,1),opacity .22s ease .1s}.ieeesa-dashboard-welcome-header__shortcut:hover .ieeesa-dashboard-welcome-header__shortcut-count,.ieeesa-dashboard-welcome-header__shortcut:focus-visible .ieeesa-dashboard-welcome-header__shortcut-count{max-width:48px;padding:2px 10px;opacity:1;transition:max-width .32s cubic-bezier(.22,1,.36,1),opacity .22s ease .14s,padding .2s ease}@media (max-width: 767px){.ieeesa-dashboard-welcome-header{align-items:flex-start}}\n"] }]
|
|
1005
1377
|
}], propDecorators: { userName: [{
|
|
1006
1378
|
type: Input
|
|
1007
1379
|
}], meetingsCount: [{
|
|
@@ -1013,239 +1385,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
1013
1385
|
}] } });
|
|
1014
1386
|
|
|
1015
1387
|
/**
|
|
1016
|
-
*
|
|
1017
|
-
*
|
|
1018
|
-
*
|
|
1019
|
-
*
|
|
1020
|
-
*
|
|
1021
|
-
*
|
|
1388
|
+
* Groups_Section (`ieeesa-your-groups`) renders the signed-in user's groups in
|
|
1389
|
+
* a collapsible card as a custom hierarchy table styled like the My Profile
|
|
1390
|
+
* Find Groups tree: each group row carries a blue +/- toggle (when it has an
|
|
1391
|
+
* ancestor hierarchy) that expands to reveal the group's hierarchy path
|
|
1392
|
+
* (root→leaf), indented. Columns: Group, Type, Officer Role, Affiliation,
|
|
1393
|
+
* Member Level (the member level renders as a coloured pill — green for an
|
|
1394
|
+
* assigned level, amber for "Unassigned"). The card paginates the top-level
|
|
1395
|
+
* groups (5 per page).
|
|
1022
1396
|
*
|
|
1023
|
-
*
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
title: 'NESC Revision Cycle Kickoff',
|
|
1029
|
-
status: 'In Progress',
|
|
1030
|
-
dayIndicator: 'Day 1 of 3',
|
|
1031
|
-
meetingCount: 6,
|
|
1032
|
-
openForAttendanceCount: 3,
|
|
1033
|
-
startDate: '2025-03-14T09:00:00',
|
|
1034
|
-
endDate: '2025-03-16T17:00:00',
|
|
1035
|
-
timezone: 'America/New_York',
|
|
1036
|
-
meetings: [
|
|
1037
|
-
{
|
|
1038
|
-
meetingId: 'MTG-001',
|
|
1039
|
-
meetingName: 'Opening Plenary',
|
|
1040
|
-
groupOrCommittee: 'NESC Main Committee',
|
|
1041
|
-
roomOrLocation: 'Grand Ballroom A',
|
|
1042
|
-
meetingDate: '2025-03-14T09:00:00',
|
|
1043
|
-
meetingTime: '2025-03-14T09:00:00',
|
|
1044
|
-
timezone: 'America/New_York',
|
|
1045
|
-
isOpenForAttendance: true,
|
|
1046
|
-
attendanceState: AttendanceState.CURRENTLY_ATTENDING,
|
|
1047
|
-
},
|
|
1048
|
-
{
|
|
1049
|
-
meetingId: 'MTG-002',
|
|
1050
|
-
meetingName: 'Subcommittee 1 Working Session',
|
|
1051
|
-
groupOrCommittee: 'Subcommittee 1 - Grounding',
|
|
1052
|
-
// RoomOrLocation intentionally omitted to exercise the empty-field placeholder.
|
|
1053
|
-
meetingDate: '2025-03-14T11:00:00',
|
|
1054
|
-
meetingTime: '2025-03-14T11:00:00',
|
|
1055
|
-
timezone: 'America/New_York',
|
|
1056
|
-
isOpenForAttendance: true,
|
|
1057
|
-
attendanceState: AttendanceState.NOT_ATTENDING,
|
|
1058
|
-
},
|
|
1059
|
-
{
|
|
1060
|
-
meetingId: 'MTG-003',
|
|
1061
|
-
meetingName: 'Subcommittee 2 Working Session',
|
|
1062
|
-
// GroupOrCommittee intentionally empty to exercise the empty-field placeholder.
|
|
1063
|
-
groupOrCommittee: '',
|
|
1064
|
-
roomOrLocation: 'Room 204',
|
|
1065
|
-
meetingDate: '2025-03-14T13:30:00',
|
|
1066
|
-
meetingTime: '2025-03-14T13:30:00',
|
|
1067
|
-
timezone: 'America/New_York',
|
|
1068
|
-
isOpenForAttendance: true,
|
|
1069
|
-
attendanceState: AttendanceState.NOT_ATTENDING,
|
|
1070
|
-
},
|
|
1071
|
-
{
|
|
1072
|
-
meetingId: 'MTG-004',
|
|
1073
|
-
meetingName: 'Editorial Review',
|
|
1074
|
-
groupOrCommittee: 'Editorial Task Force',
|
|
1075
|
-
roomOrLocation: 'Room 118',
|
|
1076
|
-
meetingDate: '2025-03-15T09:00:00',
|
|
1077
|
-
meetingTime: '2025-03-15T09:00:00',
|
|
1078
|
-
timezone: 'America/New_York',
|
|
1079
|
-
isOpenForAttendance: false,
|
|
1080
|
-
attendanceState: AttendanceState.NOT_ATTENDING,
|
|
1081
|
-
},
|
|
1082
|
-
{
|
|
1083
|
-
meetingId: 'MTG-005',
|
|
1084
|
-
meetingName: 'Interpretations Panel',
|
|
1085
|
-
groupOrCommittee: 'Interpretations Subcommittee',
|
|
1086
|
-
roomOrLocation: 'Room 310',
|
|
1087
|
-
meetingDate: '2025-03-15T14:00:00',
|
|
1088
|
-
meetingTime: '2025-03-15T14:00:00',
|
|
1089
|
-
timezone: 'America/New_York',
|
|
1090
|
-
isOpenForAttendance: true,
|
|
1091
|
-
attendanceState: AttendanceState.CURRENTLY_ATTENDING,
|
|
1092
|
-
},
|
|
1093
|
-
{
|
|
1094
|
-
meetingId: 'MTG-006',
|
|
1095
|
-
meetingName: 'Closing Plenary',
|
|
1096
|
-
groupOrCommittee: 'NESC Main Committee',
|
|
1097
|
-
roomOrLocation: 'Grand Ballroom A',
|
|
1098
|
-
meetingDate: '2025-03-16T15:00:00',
|
|
1099
|
-
meetingTime: '2025-03-16T15:00:00',
|
|
1100
|
-
timezone: 'America/New_York',
|
|
1101
|
-
isOpenForAttendance: false,
|
|
1102
|
-
attendanceState: AttendanceState.NOT_ATTENDING,
|
|
1103
|
-
},
|
|
1104
|
-
],
|
|
1105
|
-
},
|
|
1106
|
-
{
|
|
1107
|
-
eventId: 'EVT-002',
|
|
1108
|
-
title: 'Standards Board Quarterly Meeting',
|
|
1109
|
-
status: 'Upcoming',
|
|
1110
|
-
dayIndicator: 'Day 1 of 1',
|
|
1111
|
-
meetingCount: 3,
|
|
1112
|
-
openForAttendanceCount: 1,
|
|
1113
|
-
startDate: '2025-04-02T08:30:00',
|
|
1114
|
-
endDate: '2025-04-02T16:00:00',
|
|
1115
|
-
timezone: 'America/Los_Angeles',
|
|
1116
|
-
meetings: [
|
|
1117
|
-
{
|
|
1118
|
-
meetingId: 'MTG-101',
|
|
1119
|
-
meetingName: 'Board Opening Remarks',
|
|
1120
|
-
groupOrCommittee: 'Standards Board',
|
|
1121
|
-
roomOrLocation: 'Pacific Hall',
|
|
1122
|
-
meetingDate: '2025-04-02T08:30:00',
|
|
1123
|
-
meetingTime: '2025-04-02T08:30:00',
|
|
1124
|
-
timezone: 'America/Los_Angeles',
|
|
1125
|
-
isOpenForAttendance: true,
|
|
1126
|
-
attendanceState: AttendanceState.NOT_ATTENDING,
|
|
1127
|
-
},
|
|
1128
|
-
{
|
|
1129
|
-
meetingId: 'MTG-102',
|
|
1130
|
-
meetingName: 'Ballot Review Session',
|
|
1131
|
-
// Both optional location/group fields omitted to exercise placeholders.
|
|
1132
|
-
meetingDate: '2025-04-02T10:30:00',
|
|
1133
|
-
meetingTime: '2025-04-02T10:30:00',
|
|
1134
|
-
timezone: 'America/Los_Angeles',
|
|
1135
|
-
isOpenForAttendance: false,
|
|
1136
|
-
attendanceState: AttendanceState.NOT_ATTENDING,
|
|
1137
|
-
},
|
|
1138
|
-
{
|
|
1139
|
-
meetingId: 'MTG-103',
|
|
1140
|
-
meetingName: 'Action Items & Wrap-up',
|
|
1141
|
-
groupOrCommittee: 'Standards Board',
|
|
1142
|
-
roomOrLocation: 'Pacific Hall',
|
|
1143
|
-
meetingDate: '2025-04-02T15:00:00',
|
|
1144
|
-
meetingTime: '2025-04-02T15:00:00',
|
|
1145
|
-
timezone: 'America/Los_Angeles',
|
|
1146
|
-
isOpenForAttendance: false,
|
|
1147
|
-
attendanceState: AttendanceState.CURRENTLY_ATTENDING,
|
|
1148
|
-
},
|
|
1149
|
-
],
|
|
1150
|
-
},
|
|
1151
|
-
{
|
|
1152
|
-
eventId: 'EVT-003',
|
|
1153
|
-
title: 'Working Group Interim',
|
|
1154
|
-
status: 'Upcoming',
|
|
1155
|
-
// DayIndicator intentionally omitted (optional field).
|
|
1156
|
-
meetingCount: 0,
|
|
1157
|
-
openForAttendanceCount: 0,
|
|
1158
|
-
startDate: '2025-05-20T09:00:00',
|
|
1159
|
-
endDate: '2025-05-20T12:00:00',
|
|
1160
|
-
timezone: 'Europe/London',
|
|
1161
|
-
meetings: [],
|
|
1162
|
-
},
|
|
1163
|
-
];
|
|
1164
|
-
/**
|
|
1165
|
-
* Mock a single meeting row with an empty `meetingId` to exercise the
|
|
1166
|
-
* non-actionable (empty/undefined id) path in the meeting row component.
|
|
1167
|
-
*
|
|
1168
|
-
* TODO: Replace mock with real API call when BE is ready
|
|
1169
|
-
*/
|
|
1170
|
-
const DashboardNonActionableMeetingMock = {
|
|
1171
|
-
meetingId: '',
|
|
1172
|
-
meetingName: 'Unscheduled Placeholder Session',
|
|
1173
|
-
groupOrCommittee: '',
|
|
1174
|
-
meetingDate: '2025-06-01T09:00:00',
|
|
1175
|
-
meetingTime: '2025-06-01T09:00:00',
|
|
1176
|
-
timezone: 'America/New_York',
|
|
1177
|
-
isOpenForAttendance: false,
|
|
1178
|
-
attendanceState: AttendanceState.NOT_ATTENDING,
|
|
1179
|
-
};
|
|
1180
|
-
/**
|
|
1181
|
-
* Mock groups fixtures for the dashboard "Your Groups" section.
|
|
1182
|
-
*
|
|
1183
|
-
* Includes rows with missing optional fields (`type`, `officerRole`,
|
|
1184
|
-
* `affiliation`) and a spread of member levels so the member-level badge
|
|
1185
|
-
* colour map and empty-field placeholders are exercised.
|
|
1186
|
-
*
|
|
1187
|
-
* TODO: Replace mock with real API call when BE is ready
|
|
1188
|
-
*/
|
|
1189
|
-
const DashboardGroupsMock = [
|
|
1190
|
-
{
|
|
1191
|
-
groupId: 'GRP-001',
|
|
1192
|
-
group: 'NESC Main Committee',
|
|
1193
|
-
type: 'Committee',
|
|
1194
|
-
officerRole: 'Chair',
|
|
1195
|
-
affiliation: 'Employer Corp',
|
|
1196
|
-
memberLevel: 'Senior Member',
|
|
1197
|
-
},
|
|
1198
|
-
{
|
|
1199
|
-
groupId: 'GRP-002',
|
|
1200
|
-
group: 'Subcommittee 1 - Grounding',
|
|
1201
|
-
type: 'Subcommittee',
|
|
1202
|
-
// OfficerRole intentionally omitted (member with no officer role).
|
|
1203
|
-
affiliation: 'Standards Member',
|
|
1204
|
-
memberLevel: 'Member',
|
|
1205
|
-
},
|
|
1206
|
-
{
|
|
1207
|
-
groupId: 'GRP-003',
|
|
1208
|
-
group: 'Editorial Task Force',
|
|
1209
|
-
// Type and affiliation intentionally omitted to exercise placeholders.
|
|
1210
|
-
officerRole: 'Secretary',
|
|
1211
|
-
memberLevel: 'Fellow',
|
|
1212
|
-
},
|
|
1213
|
-
{
|
|
1214
|
-
groupId: 'GRP-004',
|
|
1215
|
-
group: 'Interpretations Subcommittee',
|
|
1216
|
-
type: 'Subcommittee',
|
|
1217
|
-
officerRole: 'Member',
|
|
1218
|
-
affiliation: 'Tech Solutions Inc',
|
|
1219
|
-
memberLevel: 'Associate Member',
|
|
1220
|
-
},
|
|
1221
|
-
{
|
|
1222
|
-
groupId: 'GRP-005',
|
|
1223
|
-
group: 'Standards Board',
|
|
1224
|
-
type: 'Board',
|
|
1225
|
-
officerRole: 'Vice Chair',
|
|
1226
|
-
affiliation: 'CodeCraft Studio',
|
|
1227
|
-
memberLevel: 'Senior Member',
|
|
1228
|
-
},
|
|
1229
|
-
];
|
|
1230
|
-
|
|
1231
|
-
/**
|
|
1232
|
-
* Groups_Section (`ieeesa-your-groups`) renders the signed-in user's groups as a
|
|
1233
|
-
* paginated table inside a collapsible card. It shows the section title and a
|
|
1234
|
-
* "{n} Groups" count, a "View All" link, and a collapse/expand toggle that
|
|
1235
|
-
* controls the table's visibility (reflected via `[attr.aria-expanded]`). When
|
|
1236
|
-
* loaded it renders the groups table with the Presentation_Library
|
|
1237
|
-
* {@link DataTableComponent} using the columns Group, Type, Officer Role,
|
|
1238
|
-
* Affiliation, and Member Level (labels sourced from `constants.json`). The
|
|
1239
|
-
* Group cell is a LINK column that emits `groupSelected(groupId)`, and the
|
|
1240
|
-
* Member Level cell renders as a colored pill via the data-table's inline-badge
|
|
1241
|
-
* mechanism (green for voting-type levels, amber otherwise).
|
|
1242
|
-
*
|
|
1243
|
-
* The section is purely presentational: it emits navigation and pagination
|
|
1244
|
-
* intents via `@Output()` and never performs navigation or HTTP itself. The
|
|
1245
|
-
* Loader / empty-state / error regions are mutually exclusive and driven solely
|
|
1246
|
-
* by the `sectionState` input.
|
|
1247
|
-
* @export
|
|
1248
|
-
* @class YourGroupsComponent
|
|
1397
|
+
* Purely presentational: data arrives via `@Input`, intents leave via
|
|
1398
|
+
* `@Output`; no API or navigation here. States (loader / empty / error / table)
|
|
1399
|
+
* are driven by `sectionState`.
|
|
1400
|
+
* @export
|
|
1401
|
+
* @class YourGroupsComponent
|
|
1249
1402
|
*/
|
|
1250
1403
|
class YourGroupsComponent {
|
|
1251
1404
|
constructor() {
|
|
@@ -1255,159 +1408,305 @@ class YourGroupsComponent {
|
|
|
1255
1408
|
this.texts = this.constants?.groupsSection;
|
|
1256
1409
|
/** Enum reference for template comparisons against `sectionState`. */
|
|
1257
1410
|
this.sectionStates = DashboardSectionState;
|
|
1411
|
+
/** Per-level indentation step (px) for the expanded hierarchy rows. */
|
|
1412
|
+
this.indentPerLevel = 28;
|
|
1413
|
+
/** Selectable "Items per page" page sizes. */
|
|
1414
|
+
this.pageSizeOptions = [5, 10, 25];
|
|
1258
1415
|
/**
|
|
1259
|
-
*
|
|
1260
|
-
*
|
|
1261
|
-
*
|
|
1262
|
-
*/
|
|
1263
|
-
this.groups = DashboardGroupsMock;
|
|
1264
|
-
/**
|
|
1265
|
-
* The section's load/empty/error state driving the mutually-exclusive
|
|
1266
|
-
* regions. Defaults to LOADED (no loader) since the component renders dummy
|
|
1267
|
-
* data for now; the host can set LOADING/EMPTY/ERROR once the API is wired.
|
|
1416
|
+
* Expand (+) icon button — the SAME sprite icon the Groups package uses for
|
|
1417
|
+
* its tree expand toggle (icon-expand-collapse-plus), rendered via the shared
|
|
1418
|
+
* IconButtonComponent for a consistent look across the app.
|
|
1268
1419
|
*/
|
|
1420
|
+
this.expandIconButton = {
|
|
1421
|
+
id: 1,
|
|
1422
|
+
iconURL: 'assets/images/sprites/sprites.svg#icon-expand-collapse-plus',
|
|
1423
|
+
ariaLabel: 'Expand group',
|
|
1424
|
+
toolTip: 'Expand group',
|
|
1425
|
+
};
|
|
1426
|
+
/** Collapse (−) icon button — the Groups package's icon-expand-collapse-minus. */
|
|
1427
|
+
this.collapseIconButton = {
|
|
1428
|
+
id: 2,
|
|
1429
|
+
iconURL: 'assets/images/sprites/sprites.svg#icon-expand-collapse-minus',
|
|
1430
|
+
ariaLabel: 'Collapse group',
|
|
1431
|
+
toolTip: 'Collapse group',
|
|
1432
|
+
};
|
|
1433
|
+
this.groupsValue = [];
|
|
1434
|
+
/** The section's load/empty/error state driving the mutually-exclusive regions. */
|
|
1269
1435
|
this.sectionState = DashboardSectionState.LOADED;
|
|
1270
1436
|
/** Total number of groups (for the "{n} Groups" count and paginator). */
|
|
1271
1437
|
this.totalGroups = 0;
|
|
1272
|
-
|
|
1273
|
-
this.
|
|
1274
|
-
/** Current page size. */
|
|
1275
|
-
this.pageSize = 10;
|
|
1276
|
-
/** Emits the selected group's id when its name link is clicked. */
|
|
1277
|
-
this.groupSelected = new EventEmitter();
|
|
1438
|
+
this.pageIndexValue = 0;
|
|
1439
|
+
this.pageSizeValue = 5;
|
|
1278
1440
|
/** Emits when the "View All" link is activated. */
|
|
1279
1441
|
this.viewAllGroups = new EventEmitter();
|
|
1280
1442
|
/** Emits the requested page when the paginator changes. */
|
|
1281
1443
|
this.pageChange = new EventEmitter();
|
|
1444
|
+
/**
|
|
1445
|
+
* Emits the new expanded state whenever the user toggles the card, so a
|
|
1446
|
+
* two-way `[(expanded)]` binding keeps the host's flag in sync. Without this,
|
|
1447
|
+
* a host that opened the card (expanded=true) and then the user collapsing it
|
|
1448
|
+
* would leave the host flag stale, so re-opening via the same input value
|
|
1449
|
+
* would be a no-op.
|
|
1450
|
+
* @memberof YourGroupsComponent
|
|
1451
|
+
*/
|
|
1452
|
+
this.expandedChange = new EventEmitter();
|
|
1282
1453
|
/** Whether the card is expanded (table visible). Starts collapsed. */
|
|
1283
1454
|
this.isExpanded = false;
|
|
1284
|
-
/**
|
|
1285
|
-
|
|
1286
|
-
|
|
1287
|
-
|
|
1288
|
-
|
|
1289
|
-
|
|
1290
|
-
|
|
1291
|
-
|
|
1292
|
-
|
|
1293
|
-
|
|
1294
|
-
|
|
1295
|
-
|
|
1296
|
-
|
|
1297
|
-
|
|
1298
|
-
|
|
1299
|
-
|
|
1300
|
-
|
|
1301
|
-
|
|
1302
|
-
|
|
1303
|
-
|
|
1304
|
-
|
|
1305
|
-
|
|
1306
|
-
|
|
1307
|
-
|
|
1308
|
-
|
|
1309
|
-
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
|
|
1313
|
-
|
|
1314
|
-
|
|
1315
|
-
|
|
1316
|
-
|
|
1317
|
-
|
|
1318
|
-
|
|
1319
|
-
|
|
1320
|
-
|
|
1321
|
-
|
|
1322
|
-
|
|
1323
|
-
|
|
1324
|
-
|
|
1325
|
-
|
|
1326
|
-
|
|
1327
|
-
|
|
1328
|
-
|
|
1329
|
-
|
|
1330
|
-
|
|
1331
|
-
|
|
1332
|
-
|
|
1455
|
+
/**
|
|
1456
|
+
* Keys of the hierarchy levels currently expanded, each `"<groupId>:<index>"`.
|
|
1457
|
+
* Index -1 is the group row itself (its toggle reveals the first hierarchy
|
|
1458
|
+
* node); index N is the Nth hierarchy node (its toggle reveals node N+1). A
|
|
1459
|
+
* level only reveals the NEXT node, matching the Groups module's step-by-step
|
|
1460
|
+
* drill-down.
|
|
1461
|
+
*/
|
|
1462
|
+
this.expandedKeys = new Set();
|
|
1463
|
+
/** The flattened rows currently rendered (group rows + any revealed hierarchy rows). */
|
|
1464
|
+
this.visibleRows = [];
|
|
1465
|
+
}
|
|
1466
|
+
/**
|
|
1467
|
+
* Returns the +/- toggle icon button for a level, matching the Groups tree:
|
|
1468
|
+
* the minus (collapse) icon when that level is expanded, otherwise the plus
|
|
1469
|
+
* (expand) icon.
|
|
1470
|
+
* @param {GroupRow} group
|
|
1471
|
+
* @param {number} index - -1 for the group row, else the node index.
|
|
1472
|
+
* @return {IconButton}
|
|
1473
|
+
* @memberof YourGroupsComponent
|
|
1474
|
+
*/
|
|
1475
|
+
getToggleButton(group, index) {
|
|
1476
|
+
const button = this.isLevelExpanded(group, index)
|
|
1477
|
+
? this.collapseIconButton
|
|
1478
|
+
: this.expandIconButton;
|
|
1479
|
+
// Include the target's name so each toggle has a distinct accessible name
|
|
1480
|
+
// (e.g. "Expand group Tech working"). Return a NEW object so the shared
|
|
1481
|
+
// expand/collapse configs are never mutated.
|
|
1482
|
+
const name = index < 0
|
|
1483
|
+
? group.group
|
|
1484
|
+
: group.hierarchy?.[index]?.groupName ?? group.group;
|
|
1485
|
+
return { ...button, ariaLabel: `${button.ariaLabel} ${name}` };
|
|
1486
|
+
}
|
|
1487
|
+
/** The groups rendered in the table. */
|
|
1488
|
+
set groups(value) {
|
|
1489
|
+
this.groupsValue = value ?? [];
|
|
1490
|
+
this.rebuildRows();
|
|
1491
|
+
}
|
|
1492
|
+
get groups() {
|
|
1493
|
+
return this.groupsValue;
|
|
1494
|
+
}
|
|
1495
|
+
/** Current zero-based page index. */
|
|
1496
|
+
set pageIndex(value) {
|
|
1497
|
+
this.pageIndexValue = value ?? 0;
|
|
1498
|
+
this.rebuildRows();
|
|
1499
|
+
}
|
|
1500
|
+
get pageIndex() {
|
|
1501
|
+
return this.pageIndexValue;
|
|
1502
|
+
}
|
|
1503
|
+
/** Current page size (defaults to 5 rows per page per the design). */
|
|
1504
|
+
set pageSize(value) {
|
|
1505
|
+
this.pageSizeValue = value ?? 5;
|
|
1506
|
+
this.rebuildRows();
|
|
1507
|
+
}
|
|
1508
|
+
get pageSize() {
|
|
1509
|
+
return this.pageSizeValue;
|
|
1510
|
+
}
|
|
1511
|
+
/**
|
|
1512
|
+
* Allows the host/container to open or close the card (e.g. a "Jump to"
|
|
1513
|
+
* shortcut opens it).
|
|
1514
|
+
* @memberof YourGroupsComponent
|
|
1515
|
+
*/
|
|
1516
|
+
set expanded(value) {
|
|
1517
|
+
this.isExpanded = !!value;
|
|
1518
|
+
}
|
|
1519
|
+
get expanded() {
|
|
1520
|
+
return this.isExpanded;
|
|
1333
1521
|
}
|
|
1334
1522
|
/**
|
|
1335
|
-
* The count shown in the header subtitle
|
|
1336
|
-
*
|
|
1523
|
+
* The count shown in the header subtitle — the server total when provided,
|
|
1524
|
+
* otherwise the number of groups.
|
|
1337
1525
|
* @readonly
|
|
1338
1526
|
* @memberof YourGroupsComponent
|
|
1339
1527
|
*/
|
|
1340
1528
|
get groupCount() {
|
|
1341
|
-
return this.totalGroups || this.groups
|
|
1529
|
+
return this.totalGroups || this.groups.length || 0;
|
|
1342
1530
|
}
|
|
1343
1531
|
/**
|
|
1344
|
-
*
|
|
1345
|
-
*
|
|
1532
|
+
* Builds the expand/collapse key for a hierarchy level. Index -1 is the group
|
|
1533
|
+
* row itself; index N is the Nth hierarchy node.
|
|
1534
|
+
* @param {GroupRow} group
|
|
1535
|
+
* @param {number} index
|
|
1536
|
+
* @return {string}
|
|
1346
1537
|
* @memberof YourGroupsComponent
|
|
1347
1538
|
*/
|
|
1348
|
-
|
|
1349
|
-
return {
|
|
1350
|
-
recordsPerPage: this.pageSize,
|
|
1351
|
-
pageSizeOptions: [5, 10, 25, 50],
|
|
1352
|
-
totalRecords: this.groupCount,
|
|
1353
|
-
};
|
|
1539
|
+
levelKey(group, index) {
|
|
1540
|
+
return `${group.groupId}:${index}`;
|
|
1354
1541
|
}
|
|
1355
1542
|
/**
|
|
1356
|
-
*
|
|
1543
|
+
* Whether a level shows a +/- toggle.
|
|
1544
|
+
*
|
|
1545
|
+
* - Group row (index -1): expandable when it has ANY hierarchy node, matching
|
|
1546
|
+
* the Groups module which shows the toggle on every group that has related
|
|
1547
|
+
* hierarchy (driven by hasChildren, true for all these groups).
|
|
1548
|
+
* - Hierarchy node (index N): expandable only when there is a further node
|
|
1549
|
+
* after it (step-by-step drill-down); the deepest node is a leaf, no toggle.
|
|
1550
|
+
* @param {GroupRow} group
|
|
1551
|
+
* @param {number} index - -1 for the group row, else the node index.
|
|
1552
|
+
* @return {boolean}
|
|
1357
1553
|
* @memberof YourGroupsComponent
|
|
1358
1554
|
*/
|
|
1359
|
-
|
|
1360
|
-
|
|
1555
|
+
isLevelExpandable(group, index) {
|
|
1556
|
+
const length = group?.hierarchy?.length ?? 0;
|
|
1557
|
+
if (index < 0) {
|
|
1558
|
+
// Group row: a toggle only when it has RELATED groups to show — i.e. the
|
|
1559
|
+
// hierarchy has more than just the group's own node. A single-node
|
|
1560
|
+
// hierarchy (only itself) has nothing to reveal, so no toggle.
|
|
1561
|
+
return length > 1;
|
|
1562
|
+
}
|
|
1563
|
+
// Hierarchy node: expandable only if a deeper node follows it.
|
|
1564
|
+
return index < length - 1;
|
|
1361
1565
|
}
|
|
1362
1566
|
/**
|
|
1363
|
-
*
|
|
1567
|
+
* Whether the group row shows a toggle (has related hierarchy to drill into).
|
|
1568
|
+
* @param {GroupRow} group
|
|
1569
|
+
* @return {boolean}
|
|
1364
1570
|
* @memberof YourGroupsComponent
|
|
1365
1571
|
*/
|
|
1366
|
-
|
|
1367
|
-
|
|
1572
|
+
hasHierarchy(group) {
|
|
1573
|
+
return (group?.hierarchy?.length ?? 0) > 1;
|
|
1368
1574
|
}
|
|
1369
1575
|
/**
|
|
1370
|
-
*
|
|
1371
|
-
* @param {
|
|
1576
|
+
* Whether a given level is currently expanded (its next node is revealed).
|
|
1577
|
+
* @param {GroupRow} group
|
|
1578
|
+
* @param {number} index
|
|
1579
|
+
* @return {boolean}
|
|
1372
1580
|
* @memberof YourGroupsComponent
|
|
1373
1581
|
*/
|
|
1374
|
-
|
|
1375
|
-
|
|
1376
|
-
|
|
1377
|
-
|
|
1582
|
+
isLevelExpanded(group, index) {
|
|
1583
|
+
return this.expandedKeys.has(this.levelKey(group, index));
|
|
1584
|
+
}
|
|
1585
|
+
/** Convenience for the group row (level -1). */
|
|
1586
|
+
isGroupExpanded(group) {
|
|
1587
|
+
return this.isLevelExpanded(group, -1);
|
|
1588
|
+
}
|
|
1589
|
+
/**
|
|
1590
|
+
* Toggles a level's expansion (reveals/hides its next node). Collapsing a
|
|
1591
|
+
* level also collapses everything deeper under it so re-opening starts fresh.
|
|
1592
|
+
* @param {GroupRow} group
|
|
1593
|
+
* @param {number} index - -1 for the group row, else the node index.
|
|
1594
|
+
* @memberof YourGroupsComponent
|
|
1595
|
+
*/
|
|
1596
|
+
onToggleLevel(group, index) {
|
|
1597
|
+
if (!this.isLevelExpandable(group, index)) {
|
|
1598
|
+
return;
|
|
1599
|
+
}
|
|
1600
|
+
const key = this.levelKey(group, index);
|
|
1601
|
+
if (this.expandedKeys.has(key)) {
|
|
1602
|
+
// Collapse this level and any deeper levels of the same group.
|
|
1603
|
+
const length = group?.hierarchy?.length ?? 0;
|
|
1604
|
+
for (let deeper = index; deeper < length; deeper++) {
|
|
1605
|
+
this.expandedKeys.delete(this.levelKey(group, deeper));
|
|
1606
|
+
}
|
|
1607
|
+
}
|
|
1608
|
+
else {
|
|
1609
|
+
this.expandedKeys.add(key);
|
|
1378
1610
|
}
|
|
1611
|
+
this.rebuildRows();
|
|
1379
1612
|
}
|
|
1380
1613
|
/**
|
|
1381
|
-
*
|
|
1614
|
+
* Toggles the card's expanded/collapsed state (whole table visibility) and
|
|
1615
|
+
* emits the new state so the host's two-way binding stays in sync.
|
|
1616
|
+
* @memberof YourGroupsComponent
|
|
1617
|
+
*/
|
|
1618
|
+
onToggleExpand() {
|
|
1619
|
+
this.isExpanded = !this.isExpanded;
|
|
1620
|
+
this.expandedChange.emit(this.isExpanded);
|
|
1621
|
+
}
|
|
1622
|
+
/**
|
|
1623
|
+
* Emits the "View All" intent for the host.
|
|
1624
|
+
* @memberof YourGroupsComponent
|
|
1625
|
+
*/
|
|
1626
|
+
onViewAll() {
|
|
1627
|
+
this.viewAllGroups.emit();
|
|
1628
|
+
}
|
|
1629
|
+
/**
|
|
1630
|
+
* Re-emits the Material paginator change (page index or "Items per page"
|
|
1631
|
+
* size) as a {@link PageChange} for the host.
|
|
1382
1632
|
* @param {PageEvent} event - The Material paginator event.
|
|
1383
1633
|
* @memberof YourGroupsComponent
|
|
1384
1634
|
*/
|
|
1385
|
-
|
|
1635
|
+
onPaginatorChange(event) {
|
|
1386
1636
|
this.pageChange.emit({
|
|
1387
1637
|
pageIndex: event.pageIndex,
|
|
1388
1638
|
pageSize: event.pageSize,
|
|
1389
1639
|
});
|
|
1390
1640
|
}
|
|
1391
1641
|
/**
|
|
1392
|
-
* Resolves the pill CSS class
|
|
1393
|
-
*
|
|
1394
|
-
* @param {string} memberLevel
|
|
1642
|
+
* Resolves the member-level pill CSS class, mirroring the My Groups profile
|
|
1643
|
+
* tab: an assigned level renders green (success), "Unassigned" renders amber.
|
|
1644
|
+
* @param {string} memberLevel
|
|
1395
1645
|
* @return {string}
|
|
1396
1646
|
* @memberof YourGroupsComponent
|
|
1397
1647
|
*/
|
|
1398
1648
|
resolveBadgeClass(memberLevel) {
|
|
1399
|
-
const
|
|
1400
|
-
|
|
1401
|
-
|
|
1402
|
-
|
|
1403
|
-
|
|
1649
|
+
const badge = this.texts?.memberLevelBadge;
|
|
1650
|
+
return memberLevel === this.texts?.unassignedMemberLevel
|
|
1651
|
+
? badge?.warning
|
|
1652
|
+
: badge?.success;
|
|
1653
|
+
}
|
|
1654
|
+
/**
|
|
1655
|
+
* TrackBy for the rendered table rows.
|
|
1656
|
+
* @param {number} index
|
|
1657
|
+
* @param {TableRow} row
|
|
1658
|
+
* @return {string}
|
|
1659
|
+
* @memberof YourGroupsComponent
|
|
1660
|
+
*/
|
|
1661
|
+
trackByRow(index, row) {
|
|
1662
|
+
return row.kind === 'group'
|
|
1663
|
+
? `g:${row.group?.groupId}`
|
|
1664
|
+
: `h:${row.group?.groupId}:${row.node?.groupId}:${index}`;
|
|
1665
|
+
}
|
|
1666
|
+
/**
|
|
1667
|
+
* Rebuilds the visible rows for the current page. Each group reveals its
|
|
1668
|
+
* hierarchy ONE level at a time (Groups-module style): the group row reveals
|
|
1669
|
+
* node 0 only when its own level (-1) is expanded; node 0 reveals node 1 only
|
|
1670
|
+
* when node 0's level is expanded; and so on. Each revealed node that still
|
|
1671
|
+
* has a child carries its own +/- toggle.
|
|
1672
|
+
* @memberof YourGroupsComponent
|
|
1673
|
+
*/
|
|
1674
|
+
rebuildRows() {
|
|
1675
|
+
const start = this.pageIndex * this.pageSize;
|
|
1676
|
+
const pageGroups = this.groups.slice(start, start + this.pageSize);
|
|
1677
|
+
const rows = [];
|
|
1678
|
+
pageGroups.forEach((group) => {
|
|
1679
|
+
rows.push({ kind: 'group', group, level: 0 });
|
|
1680
|
+
const hierarchy = group.hierarchy ?? [];
|
|
1681
|
+
// Walk the path, revealing each next node only while the chain of
|
|
1682
|
+
// parent levels above it stays expanded. Stop as soon as a level is
|
|
1683
|
+
// collapsed.
|
|
1684
|
+
for (let index = 0; index < hierarchy.length; index++) {
|
|
1685
|
+
if (!this.isLevelExpanded(group, index - 1)) {
|
|
1686
|
+
break;
|
|
1687
|
+
}
|
|
1688
|
+
rows.push({
|
|
1689
|
+
kind: 'hierarchy',
|
|
1690
|
+
group,
|
|
1691
|
+
node: hierarchy[index],
|
|
1692
|
+
nodeIndex: index,
|
|
1693
|
+
level: index + 1,
|
|
1694
|
+
});
|
|
1695
|
+
}
|
|
1696
|
+
});
|
|
1697
|
+
this.visibleRows = rows;
|
|
1404
1698
|
}
|
|
1405
1699
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: YourGroupsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1406
|
-
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" }, outputs: { groupSelected: "groupSelected", viewAllGroups: "viewAllGroups", pageChange: "pageChange" }, 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 <p class=\"ieeesa-your-groups__count m-0\">\r\n {{ groupCount }} {{ texts?.countSuffix }}\r\n </p>\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 expanded. Loader / error / empty / table are mutually\r\n exclusive, driven by sectionState. -->\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 <ieeesa-data-table\r\n *ngIf=\"sectionState === sectionStates.LOADED\"\r\n class=\"ieeesa-your-groups__table\"\r\n [tableDataInfo]=\"groups\"\r\n [columnSchemaInfo]=\"columnSchema\"\r\n [tableActions]=\"tableActions\"\r\n [paginatorConfig]=\"paginatorConfig\"\r\n [pageIndex]=\"pageIndex\"\r\n [pageSize]=\"pageSize\"\r\n (columnDataOnRowLinkClick)=\"onGroupLinkClick($event)\"\r\n (paginationChange)=\"onPageChange($event)\"\r\n ></ieeesa-data-table>\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:flex-start;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:1.125rem;color:#333436}.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:.875rem;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:.875rem;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 .ieeesa-your-groups__badge--success{background-color:#78d7ef2e;color:#002c37}.ieeesa-your-groups .ieeesa-your-groups__badge--warning{background-color:#ffd92e38;color:#333436}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: DataTableComponent, selector: "ieeesa-data-table", inputs: ["tableDataInfo", "nestedTableDataInfo", "columnSchemaInfo", "nestedTableColumnSchemaInfo", "tableActions", "hasNestedTable", "tableColumnActions", "tableColumnActionMenuSize", "tableRowActions", "nestedTableRowActions", "caption", "viewAll", "paginatorConfig", "nestedPaginatorConfig", "legends", "pageIndex", "pageSize", "searchPlaceHolderText", "rowEditButton", "rowDeleteButton", "tableEditButton", "tableDeleteButton", "rowExpandButton", "rowCollapseButton", "isNestedTableHeaderNeeded", "addButton", "defaultColumnSortDirection", "defaultSortedColumn", "isClearSortNeeded", "filters", "selectedFilterOptions", "appliedFilterOptions", "searchType", "className", "searchSupportMessage", "inbuiltSortingNeeded", "isCellTextOverflowEllipsis", "isTableHeaderNeeded", "tableColumnsHeaderText", "verticalColumnHeaderNumber", "scrollbarSupportMessage", "isScrollSupportMessageNeeded", "isStickyHeaderNeeded", "customStickyHeaderNeeded", "headerElementClassName", "minCharToSearch", "searchResultMessage", "rowMenuActionIcon", "canDisableCheckbox", "isEllipsisRequiredForLink"], outputs: ["rowSelected", "selectedRowToEdit", "selectedRowToDelete", "selectedRowsToDelete", "rowLink", "addRow", "columnDataOnRowLinkClick", "menuActionClick", "selectActionMenu", "paginationChange", "selectedFilter", "removeFilteredOption", "filteredOptions", "searchedValue", "sortChange", "selectedRowsInfo", "rowExpansionClick", "tableColumnMenuActionClick", "tableColumnMenuToggleButton", "rowSlideToggle", "rowDropdownChange"] }, { kind: "component", type: LoaderComponent, selector: "ieeesa-loader", inputs: ["diameter"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
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 }); }
|
|
1407
1701
|
}
|
|
1408
1702
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: YourGroupsComponent, decorators: [{
|
|
1409
1703
|
type: Component,
|
|
1410
|
-
args: [{ selector: 'ieeesa-your-groups', standalone: true, imports: [CommonModule, DataTableComponent, LoaderComponent], 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 <p class=\"ieeesa-your-groups__count m-0\">\r\n {{ groupCount }} {{ texts?.countSuffix }}\r\n </p>\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 expanded. Loader / error / empty / table are mutually\r\n exclusive, driven by sectionState. -->\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 <ieeesa-data-table\r\n *ngIf=\"sectionState === sectionStates.LOADED\"\r\n class=\"ieeesa-your-groups__table\"\r\n [tableDataInfo]=\"groups\"\r\n [columnSchemaInfo]=\"columnSchema\"\r\n [tableActions]=\"tableActions\"\r\n [paginatorConfig]=\"paginatorConfig\"\r\n [pageIndex]=\"pageIndex\"\r\n [pageSize]=\"pageSize\"\r\n (columnDataOnRowLinkClick)=\"onGroupLinkClick($event)\"\r\n (paginationChange)=\"onPageChange($event)\"\r\n ></ieeesa-data-table>\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:flex-start;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:1.125rem;color:#333436}.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:.875rem;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:.875rem;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 .ieeesa-your-groups__badge--success{background-color:#78d7ef2e;color:#002c37}.ieeesa-your-groups .ieeesa-your-groups__badge--warning{background-color:#ffd92e38;color:#333436}\n"] }]
|
|
1704
|
+
args: [{ selector: 'ieeesa-your-groups', standalone: true, imports: [
|
|
1705
|
+
CommonModule,
|
|
1706
|
+
MatPaginatorModule,
|
|
1707
|
+
LoaderComponent,
|
|
1708
|
+
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"] }]
|
|
1411
1710
|
}], propDecorators: { groups: [{
|
|
1412
1711
|
type: Input
|
|
1413
1712
|
}], sectionState: [{
|
|
@@ -1418,14 +1717,110 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
1418
1717
|
type: Input
|
|
1419
1718
|
}], pageSize: [{
|
|
1420
1719
|
type: Input
|
|
1421
|
-
}], groupSelected: [{
|
|
1422
|
-
type: Output
|
|
1423
1720
|
}], viewAllGroups: [{
|
|
1424
1721
|
type: Output
|
|
1425
1722
|
}], pageChange: [{
|
|
1426
1723
|
type: Output
|
|
1724
|
+
}], expandedChange: [{
|
|
1725
|
+
type: Output
|
|
1726
|
+
}], expanded: [{
|
|
1727
|
+
type: Input
|
|
1427
1728
|
}] } });
|
|
1428
1729
|
|
|
1730
|
+
/**
|
|
1731
|
+
* Determines whether a raw list item is an EVENT (owns child meetings) or a
|
|
1732
|
+
* STANDALONE_MEETING. An item is an EVENT when the backend flags it with
|
|
1733
|
+
* `isMeetingEvent === true` or `hasChildren === true`.
|
|
1734
|
+
* @param {EventMeetingListItem} item - The raw list item.
|
|
1735
|
+
* @return {UpcomingItemKind} The resolved render kind.
|
|
1736
|
+
*/
|
|
1737
|
+
function resolveItemKind(item) {
|
|
1738
|
+
const isEvent = item?.isMeetingEvent === true || item?.hasChildren === true;
|
|
1739
|
+
return isEvent ? UpcomingItemKind.EVENT : UpcomingItemKind.STANDALONE_MEETING;
|
|
1740
|
+
}
|
|
1741
|
+
/**
|
|
1742
|
+
* Maps a raw backend list item to the {@link UpcomingEvent} view model. EVENT
|
|
1743
|
+
* rows start with an empty `meetings` array (child meetings are lazily loaded on
|
|
1744
|
+
* expand); STANDALONE_MEETING rows carry their own group/location fields.
|
|
1745
|
+
* @param {EventMeetingListItem} item - The raw list item.
|
|
1746
|
+
* @return {UpcomingEvent} The mapped view model.
|
|
1747
|
+
*/
|
|
1748
|
+
function mapListItemToUpcomingEvent(item) {
|
|
1749
|
+
const kind = resolveItemKind(item);
|
|
1750
|
+
const timezone = item?.timeZone ?? '';
|
|
1751
|
+
const dayIndicator = item?.dayIndicator ??
|
|
1752
|
+
(kind === UpcomingItemKind.EVENT
|
|
1753
|
+
? computeDayIndicator(item?.startDateTime, item?.endDateTime, timezone)
|
|
1754
|
+
: '');
|
|
1755
|
+
return {
|
|
1756
|
+
eventId: item?.id ?? item?.eventId ?? item?.meetingId ?? '',
|
|
1757
|
+
kind,
|
|
1758
|
+
// The list endpoint uses `name`; fall back to `meetingTitle` for meeting rows.
|
|
1759
|
+
title: item?.name ?? item?.meetingTitle ?? '',
|
|
1760
|
+
// The list screen copies status into contentUnderLink; accept either.
|
|
1761
|
+
status: item?.status ?? item?.contentUnderLink ?? '',
|
|
1762
|
+
dayIndicator,
|
|
1763
|
+
meetingCount: kind === UpcomingItemKind.STANDALONE_MEETING
|
|
1764
|
+
? 1
|
|
1765
|
+
: item?.meetingCount ?? 0,
|
|
1766
|
+
openForAttendanceCount: item?.openForAttendanceCount ?? 0,
|
|
1767
|
+
startDateTime: item?.startDateTime,
|
|
1768
|
+
endDateTime: item?.endDateTime,
|
|
1769
|
+
timezone,
|
|
1770
|
+
groupOrCommittee: item?.groupName ?? item?.groupAcronym ?? '',
|
|
1771
|
+
roomOrLocation: item?.meetingLocation ?? item?.room ?? '',
|
|
1772
|
+
isMemberOfGroup: item?.isMemberOfGroup ?? false,
|
|
1773
|
+
meetings: [],
|
|
1774
|
+
};
|
|
1775
|
+
}
|
|
1776
|
+
/**
|
|
1777
|
+
* Maps a raw backend list of events & meetings into the dashboard view models,
|
|
1778
|
+
* enforcing that STANDALONE_MEETING rows always sort LAST while preserving the
|
|
1779
|
+
* backend's within-group ordering for each partition (stable sort).
|
|
1780
|
+
* @param {EventMeetingListItem[]} items - The raw list items.
|
|
1781
|
+
* @return {UpcomingEvent[]} The mapped, standalone-last ordered view models.
|
|
1782
|
+
*/
|
|
1783
|
+
function mapEventMeetingList(items) {
|
|
1784
|
+
const mapped = (items ?? []).map((item) => mapListItemToUpcomingEvent(item));
|
|
1785
|
+
const events = mapped.filter((entry) => entry.kind === UpcomingItemKind.EVENT);
|
|
1786
|
+
const standalone = mapped.filter((entry) => entry.kind === UpcomingItemKind.STANDALONE_MEETING);
|
|
1787
|
+
return [...events, ...standalone];
|
|
1788
|
+
}
|
|
1789
|
+
/**
|
|
1790
|
+
* Maps a raw backend child-meeting detail item to the {@link MeetingRow} view
|
|
1791
|
+
* model used by the event block's expanded meeting list.
|
|
1792
|
+
* @param {EventMeetingDetailItem} item - The raw child-meeting item.
|
|
1793
|
+
* @return {MeetingRow} The mapped meeting row.
|
|
1794
|
+
*/
|
|
1795
|
+
function mapDetailItemToMeetingRow(item) {
|
|
1796
|
+
const status = item?.status ?? '';
|
|
1797
|
+
// A meeting is "open for attendance" while it is In Progress. The
|
|
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';
|
|
1801
|
+
return {
|
|
1802
|
+
meetingId: item?.meetingId ?? '',
|
|
1803
|
+
meetingName: item?.meetingTitle ?? '',
|
|
1804
|
+
groupOrCommittee: item?.groupName ?? '',
|
|
1805
|
+
roomOrLocation: item?.meetingLocation ?? '',
|
|
1806
|
+
startDateTime: item?.meetingStDate,
|
|
1807
|
+
endDateTime: item?.meetingEdDate,
|
|
1808
|
+
timezone: item?.timeZone ?? '',
|
|
1809
|
+
status,
|
|
1810
|
+
isMemberOfGroup: item?.isMemberOfGroup ?? false,
|
|
1811
|
+
isOpenForAttendance,
|
|
1812
|
+
};
|
|
1813
|
+
}
|
|
1814
|
+
/**
|
|
1815
|
+
* Maps a raw backend list of child-meeting detail items to {@link MeetingRow}
|
|
1816
|
+
* view models.
|
|
1817
|
+
* @param {EventMeetingDetailItem[]} items - The raw child-meeting items.
|
|
1818
|
+
* @return {MeetingRow[]} The mapped meeting rows.
|
|
1819
|
+
*/
|
|
1820
|
+
function mapEventMeetingDetails(items) {
|
|
1821
|
+
return (items ?? []).map((item) => mapDetailItemToMeetingRow(item));
|
|
1822
|
+
}
|
|
1823
|
+
|
|
1429
1824
|
/**
|
|
1430
1825
|
* Pure reducers for the dashboard attendance state. These functions never
|
|
1431
1826
|
* mutate their inputs; each returns a new object/set so they can be exercised
|
|
@@ -1479,6 +1874,22 @@ const endAttendanceAction = (set, meetingId) => {
|
|
|
1479
1874
|
return next;
|
|
1480
1875
|
};
|
|
1481
1876
|
|
|
1877
|
+
/** Fallback label for an empty group type / member level, matching the My Groups tab. */
|
|
1878
|
+
const UNASSIGNED_LABEL = 'Unassigned';
|
|
1879
|
+
/** Placeholder for an empty cell value. */
|
|
1880
|
+
const EMPTY_VALUE = '-';
|
|
1881
|
+
/** Statuses included in the upcoming section, matching the view-events-meetings-list screen. */
|
|
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. */
|
|
1888
|
+
const UPCOMING_PAGE_SIZE = 10;
|
|
1889
|
+
/** Default page size for an event's expanded child-meeting list. */
|
|
1890
|
+
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;
|
|
1482
1893
|
/**
|
|
1483
1894
|
* DashboardService is the single source of truth for the dashboard landing
|
|
1484
1895
|
* page's data and attendance state. It mirrors the `events-and-meetings`
|
|
@@ -1488,11 +1899,12 @@ const endAttendanceAction = (set, meetingId) => {
|
|
|
1488
1899
|
* through the shared `HttpService` from `@ieeesa-npm/utility` (never
|
|
1489
1900
|
* `HttpClient` directly).
|
|
1490
1901
|
*
|
|
1491
|
-
* The upcoming-events
|
|
1492
|
-
*
|
|
1493
|
-
* the
|
|
1494
|
-
*
|
|
1495
|
-
*
|
|
1902
|
+
* The upcoming-events load calls the real `POST /meetings/eventsAndMeetings`
|
|
1903
|
+
* endpoint (child meetings are lazily loaded per-event via
|
|
1904
|
+
* `POST /meetings/meetingsDetails`); the groups load calls `GET
|
|
1905
|
+
* /groups/my-groups`. The attendance actions compose the pure reducers from
|
|
1906
|
+
* `attendance-reducers.ts` so the displayed `AttendanceState` only advances on a
|
|
1907
|
+
* successful resolution and the prior state is retained on failure.
|
|
1496
1908
|
* @export
|
|
1497
1909
|
* @class DashboardService
|
|
1498
1910
|
*/
|
|
@@ -1535,35 +1947,172 @@ class DashboardService {
|
|
|
1535
1947
|
this.userPermissions = userPermissions;
|
|
1536
1948
|
}
|
|
1537
1949
|
/**
|
|
1538
|
-
* Loads the user's upcoming events
|
|
1539
|
-
*
|
|
1540
|
-
*
|
|
1541
|
-
*
|
|
1542
|
-
*
|
|
1543
|
-
*
|
|
1544
|
-
*
|
|
1950
|
+
* Loads the user's upcoming events & meetings from the real backend via
|
|
1951
|
+
* `POST {apiBaseUrl}/meetings/eventsAndMeetings`, the same endpoint the
|
|
1952
|
+
* `view-events-meetings-list` screen uses. The response is mapped into the
|
|
1953
|
+
* dashboard view models (with STANDALONE_MEETING rows ordered last), the
|
|
1954
|
+
* per-meeting attendance-state map is seeded, and the section advances through
|
|
1955
|
+
* LOADING → LOADED/EMPTY on success, leaving the caller to set ERROR on
|
|
1956
|
+
* failure. Follows the shared `pipe(map, catchError(throw))` pattern.
|
|
1957
|
+
* @return {Observable<EventMeetingListResponse>} The upcoming events & meetings response envelope.
|
|
1545
1958
|
* @memberof DashboardService
|
|
1546
1959
|
*/
|
|
1547
1960
|
loadUpcomingEvents() {
|
|
1548
1961
|
this.upcomingState.next(DashboardSectionState.LOADING);
|
|
1549
|
-
|
|
1550
|
-
|
|
1551
|
-
|
|
1552
|
-
|
|
1553
|
-
|
|
1554
|
-
|
|
1555
|
-
|
|
1962
|
+
const payload = {
|
|
1963
|
+
payload: {
|
|
1964
|
+
eventId: null,
|
|
1965
|
+
sortColumn: UPCOMING_SORT_COLUMN,
|
|
1966
|
+
ascendingOrder: true,
|
|
1967
|
+
page: 1,
|
|
1968
|
+
size: UPCOMING_PAGE_SIZE,
|
|
1969
|
+
filter: {
|
|
1970
|
+
status: UPCOMING_STATUSES,
|
|
1971
|
+
isAllMeetingSelected: false,
|
|
1972
|
+
},
|
|
1973
|
+
},
|
|
1974
|
+
};
|
|
1975
|
+
return this.httpService
|
|
1976
|
+
.postData(`${this.apiBaseUrl}/meetings/eventsAndMeetings`, payload)
|
|
1977
|
+
.pipe(map((response) => {
|
|
1978
|
+
const events = mapEventMeetingList(response?.body?.eventMeetingList ?? []);
|
|
1556
1979
|
this.upcomingEvents.next(events);
|
|
1557
1980
|
this.seedAttendanceStates(events);
|
|
1558
1981
|
this.upcomingState.next(events.length > 0
|
|
1559
1982
|
? DashboardSectionState.LOADED
|
|
1560
1983
|
: 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);
|
|
1561
1987
|
return response;
|
|
1562
1988
|
}), catchError((error) => {
|
|
1563
1989
|
this.upcomingState.next(DashboardSectionState.ERROR);
|
|
1564
1990
|
throw error;
|
|
1565
1991
|
}));
|
|
1566
1992
|
}
|
|
1993
|
+
/**
|
|
1994
|
+
* Lazily loads (and paginates) the child meetings of an EVENT row via
|
|
1995
|
+
* `POST {apiBaseUrl}/meetings/meetingsDetails` — the per-event expand endpoint
|
|
1996
|
+
* used by the reference screen. On success the loaded meetings are mapped and
|
|
1997
|
+
* merged onto the matching event in the `upcomingEvents` list (with its
|
|
1998
|
+
* `meetingCount` / `openForAttendanceCount` refreshed), and the per-meeting
|
|
1999
|
+
* attendance-state map is extended. Each event paginates independently.
|
|
2000
|
+
* @param {string} eventId - The event whose meetings to load.
|
|
2001
|
+
* @param {number} [page=1] - The one-based page to request.
|
|
2002
|
+
* @param {number} [size=EVENT_MEETINGS_PAGE_SIZE] - The page size.
|
|
2003
|
+
* @return {Observable<EventMeetingDetailResponse>} The child-meetings response envelope.
|
|
2004
|
+
* @memberof DashboardService
|
|
2005
|
+
*/
|
|
2006
|
+
loadEventMeetings(eventId, page = 1, size = EVENT_MEETINGS_PAGE_SIZE) {
|
|
2007
|
+
return this.fetchEventMeetingsPage(eventId, page, size).pipe(map((response) => {
|
|
2008
|
+
const meetings = mapEventMeetingDetails(response?.body?.meetings ?? []);
|
|
2009
|
+
const total = response?.body?.totalRecords ?? meetings.length;
|
|
2010
|
+
// Prefer the already-known full open count on the event; fall back to
|
|
2011
|
+
// the current page's open count when it hasn't been prefetched.
|
|
2012
|
+
const existing = this.upcomingEvents.value.find((event) => event.eventId === eventId);
|
|
2013
|
+
const pageOpenCount = meetings.filter((meeting) => meeting.isOpenForAttendance).length;
|
|
2014
|
+
const openForAttendanceCount = existing?.openForAttendanceCount || pageOpenCount;
|
|
2015
|
+
this.mergeEventMeetings(eventId, meetings, total, openForAttendanceCount);
|
|
2016
|
+
this.seedAttendanceStatesFromMeetings(meetings);
|
|
2017
|
+
return response;
|
|
2018
|
+
}), catchError((error) => {
|
|
2019
|
+
throw error;
|
|
2020
|
+
}));
|
|
2021
|
+
}
|
|
2022
|
+
/**
|
|
2023
|
+
* Merges a freshly loaded page of child meetings onto the matching event in
|
|
2024
|
+
* the `upcomingEvents` list, refreshing the event's `meetings`,
|
|
2025
|
+
* `meetingCount` (from the backend `totalRecords`), and
|
|
2026
|
+
* `openForAttendanceCount`. Leaves all other events untouched.
|
|
2027
|
+
* @param {string} eventId - The event to merge meetings onto.
|
|
2028
|
+
* @param {MeetingRow[]} meetings - The mapped child meetings for the page.
|
|
2029
|
+
* @param {number} totalRecords - The event's total meeting count from the backend.
|
|
2030
|
+
* @return {void}
|
|
2031
|
+
* @memberof DashboardService
|
|
2032
|
+
*/
|
|
2033
|
+
mergeEventMeetings(eventId, meetings, totalRecords, openForAttendanceCount) {
|
|
2034
|
+
const next = this.upcomingEvents.value.map((event) => {
|
|
2035
|
+
if (event.eventId !== eventId) {
|
|
2036
|
+
return event;
|
|
2037
|
+
}
|
|
2038
|
+
return {
|
|
2039
|
+
...event,
|
|
2040
|
+
meetings,
|
|
2041
|
+
meetingCount: totalRecords,
|
|
2042
|
+
openForAttendanceCount,
|
|
2043
|
+
};
|
|
2044
|
+
});
|
|
2045
|
+
this.upcomingEvents.next(next);
|
|
2046
|
+
}
|
|
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
|
+
}
|
|
1567
2116
|
/**
|
|
1568
2117
|
* Loads the user's groups, driving the groups section through
|
|
1569
2118
|
* LOADING → LOADED/EMPTY on success and leaving the caller to set ERROR on
|
|
@@ -1575,13 +2124,10 @@ class DashboardService {
|
|
|
1575
2124
|
*/
|
|
1576
2125
|
loadGroups() {
|
|
1577
2126
|
this.groupsState.next(DashboardSectionState.LOADING);
|
|
1578
|
-
|
|
1579
|
-
|
|
1580
|
-
|
|
1581
|
-
body
|
|
1582
|
-
});
|
|
1583
|
-
return response$.pipe(map((response) => {
|
|
1584
|
-
const groups = response?.body ?? [];
|
|
2127
|
+
return this.httpService
|
|
2128
|
+
.getData(`${this.apiBaseUrl}/groups/my-groups`)
|
|
2129
|
+
.pipe(map((response) => {
|
|
2130
|
+
const groups = (response?.body?.groups ?? []).map((group) => this.mapGroup(group));
|
|
1585
2131
|
this.groups.next(groups);
|
|
1586
2132
|
this.groupsState.next(groups.length > 0
|
|
1587
2133
|
? DashboardSectionState.LOADED
|
|
@@ -1592,6 +2138,35 @@ class DashboardService {
|
|
|
1592
2138
|
throw error;
|
|
1593
2139
|
}));
|
|
1594
2140
|
}
|
|
2141
|
+
/**
|
|
2142
|
+
* Maps a backend {@link MyGroupView} to the table-facing {@link GroupRow}.
|
|
2143
|
+
* Mirrors the My Groups profile tab: the type falls back to "Unassigned" when
|
|
2144
|
+
* `groupTypeName` is null, affiliations are comma-joined, empty officer role /
|
|
2145
|
+
* affiliation render as a placeholder, and a blank member level becomes
|
|
2146
|
+
* "Unassigned" (rendered as the warning pill by the Your Groups component).
|
|
2147
|
+
* @param {MyGroupView} group - The backend group view.
|
|
2148
|
+
* @return {GroupRow}
|
|
2149
|
+
* @memberof DashboardService
|
|
2150
|
+
*/
|
|
2151
|
+
mapGroup(group) {
|
|
2152
|
+
// The backend returns officer roles as an `officer` array of
|
|
2153
|
+
// { officerId, officerName }. Join the names for the Officer Role column
|
|
2154
|
+
// (e.g. "Chair" or "Chair, Vice Chair"); show the placeholder when empty.
|
|
2155
|
+
const officerRole = (group.officer ?? [])
|
|
2156
|
+
.map((officer) => officer?.officerName?.trim())
|
|
2157
|
+
.filter((name) => !!name)
|
|
2158
|
+
.join(', ') || EMPTY_VALUE;
|
|
2159
|
+
return {
|
|
2160
|
+
groupId: group.groupId,
|
|
2161
|
+
group: group.groupName,
|
|
2162
|
+
type: group.groupTypeName || group.groupType || UNASSIGNED_LABEL,
|
|
2163
|
+
officerRole,
|
|
2164
|
+
affiliation: group.affiliations?.join(', ') || EMPTY_VALUE,
|
|
2165
|
+
memberLevel: group.memberLevel?.trim() || UNASSIGNED_LABEL,
|
|
2166
|
+
// Carry the ancestor hierarchy through for the expandable hierarchy rows.
|
|
2167
|
+
hierarchy: group.hierarchy ?? [],
|
|
2168
|
+
};
|
|
2169
|
+
}
|
|
1595
2170
|
/**
|
|
1596
2171
|
* Logs attendance for a meeting. Marks the meeting in-flight (retaining the
|
|
1597
2172
|
* prior displayed state), posts through `HttpService`, applies the
|
|
@@ -1656,16 +2231,29 @@ class DashboardService {
|
|
|
1656
2231
|
* @memberof DashboardService
|
|
1657
2232
|
*/
|
|
1658
2233
|
seedAttendanceStates(events) {
|
|
2234
|
+
const meetings = events.flatMap((event) => event.meetings ?? []);
|
|
2235
|
+
this.seedAttendanceStatesFromMeetings(meetings);
|
|
2236
|
+
}
|
|
2237
|
+
/**
|
|
2238
|
+
* Seeds the attendance-state map from a list of meeting rows, using each
|
|
2239
|
+
* meeting's `attendanceState` (defaulting to `NOT_ATTENDING`) without
|
|
2240
|
+
* overwriting ids absent from the new list. Shared by the list load and the
|
|
2241
|
+
* per-event expand so freshly loaded child meetings pick up their state.
|
|
2242
|
+
* @param {MeetingRow[]} meetings - The meeting rows to seed from.
|
|
2243
|
+
* @return {void}
|
|
2244
|
+
* @memberof DashboardService
|
|
2245
|
+
*/
|
|
2246
|
+
seedAttendanceStatesFromMeetings(meetings) {
|
|
1659
2247
|
const next = {
|
|
1660
2248
|
...this.attendanceStates.value,
|
|
1661
2249
|
};
|
|
1662
|
-
|
|
1663
|
-
|
|
1664
|
-
|
|
1665
|
-
|
|
1666
|
-
meeting.
|
|
1667
|
-
|
|
1668
|
-
}
|
|
2250
|
+
meetings.forEach((meeting) => {
|
|
2251
|
+
if (meeting.meetingId) {
|
|
2252
|
+
next[meeting.meetingId] =
|
|
2253
|
+
meeting.attendanceState ??
|
|
2254
|
+
next[meeting.meetingId] ??
|
|
2255
|
+
AttendanceState.NOT_ATTENDING;
|
|
2256
|
+
}
|
|
1669
2257
|
});
|
|
1670
2258
|
this.attendanceStates.next(next);
|
|
1671
2259
|
}
|
|
@@ -1807,10 +2395,14 @@ class DashboardComponent {
|
|
|
1807
2395
|
};
|
|
1808
2396
|
/** Whether the viewport is at/below the mobile breakpoint (Req 15.1, 15.2). */
|
|
1809
2397
|
this.isMobileView = false;
|
|
2398
|
+
/** Whether the Upcoming Meetings & Events card is expanded. Starts collapsed. */
|
|
2399
|
+
this.meetingsExpanded = false;
|
|
2400
|
+
/** Whether the Your Groups card is expanded. Starts collapsed. */
|
|
2401
|
+
this.groupsExpanded = false;
|
|
1810
2402
|
/** The current zero-based page index of the groups table. */
|
|
1811
2403
|
this.groupsPageIndex = 0;
|
|
1812
|
-
/** The current page size of the groups table. */
|
|
1813
|
-
this.groupsPageSize =
|
|
2404
|
+
/** The current page size of the groups table (5 rows per page per the design). */
|
|
2405
|
+
this.groupsPageSize = 5;
|
|
1814
2406
|
/** Completes on destroy to tear down all subscriptions (Req 2.4, 2.5). */
|
|
1815
2407
|
this.destroy$ = new Subject();
|
|
1816
2408
|
}
|
|
@@ -1852,19 +2444,30 @@ class DashboardComponent {
|
|
|
1852
2444
|
// No date-scoped reload yet; retained for future date filtering (Req 4.4).
|
|
1853
2445
|
}
|
|
1854
2446
|
/**
|
|
1855
|
-
* Handles a welcome-header "Jump to" shortcut
|
|
1856
|
-
*
|
|
1857
|
-
*
|
|
1858
|
-
* `viewAllGroups` (/groups).
|
|
2447
|
+
* Handles a welcome-header "Jump to" shortcut: opens the matching section's
|
|
2448
|
+
* card (so its content is visible) and smoothly scrolls it into view. It does
|
|
2449
|
+
* NOT navigate away — the shortcut is an in-page jump to the section.
|
|
1859
2450
|
* @param {DashboardJumpTarget} target - The selected shortcut target.
|
|
1860
2451
|
* @return {void}
|
|
1861
2452
|
* @memberof DashboardComponent
|
|
1862
2453
|
*/
|
|
1863
2454
|
onJumpToShortcut(target) {
|
|
1864
|
-
const
|
|
1865
|
-
? this.
|
|
1866
|
-
: this.
|
|
1867
|
-
|
|
2455
|
+
const section = target === DashboardJumpTarget.MEETINGS
|
|
2456
|
+
? this.upcomingSection
|
|
2457
|
+
: this.groupsSection;
|
|
2458
|
+
if (target === DashboardJumpTarget.MEETINGS) {
|
|
2459
|
+
this.meetingsExpanded = true;
|
|
2460
|
+
}
|
|
2461
|
+
else {
|
|
2462
|
+
this.groupsExpanded = true;
|
|
2463
|
+
}
|
|
2464
|
+
// Scroll after the expand has rendered so the target's final position is used.
|
|
2465
|
+
setTimeout(() => {
|
|
2466
|
+
section?.nativeElement?.scrollIntoView({
|
|
2467
|
+
behavior: 'smooth',
|
|
2468
|
+
block: 'start',
|
|
2469
|
+
});
|
|
2470
|
+
});
|
|
1868
2471
|
}
|
|
1869
2472
|
/**
|
|
1870
2473
|
* Emits the "View All" upcoming-events navigation intent, targeting the
|
|
@@ -1925,6 +2528,25 @@ class DashboardComponent {
|
|
|
1925
2528
|
this.groupsPageIndex = page.pageIndex;
|
|
1926
2529
|
this.groupsPageSize = page.pageSize;
|
|
1927
2530
|
}
|
|
2531
|
+
/**
|
|
2532
|
+
* Lazily loads (or paginates) the child meetings of an expanded EVENT card via
|
|
2533
|
+
* the service, surfacing the attendance error message on failure. Each event
|
|
2534
|
+
* paginates independently.
|
|
2535
|
+
* @param {{ eventId: string; page: number }} request - The event id and one-based page to load.
|
|
2536
|
+
* @return {void}
|
|
2537
|
+
* @memberof DashboardComponent
|
|
2538
|
+
*/
|
|
2539
|
+
onLoadEventMeetings(request) {
|
|
2540
|
+
if (!request?.eventId) {
|
|
2541
|
+
return;
|
|
2542
|
+
}
|
|
2543
|
+
this.dashboardService
|
|
2544
|
+
.loadEventMeetings(request.eventId, request.page)
|
|
2545
|
+
.pipe(takeUntil(this.destroy$))
|
|
2546
|
+
.subscribe({
|
|
2547
|
+
error: () => this.showAttendanceError(),
|
|
2548
|
+
});
|
|
2549
|
+
}
|
|
1928
2550
|
/**
|
|
1929
2551
|
* Delegates a log-attendance request to the service, surfacing the
|
|
1930
2552
|
* attendance-action error message via the shared {@link AlertsService} on
|
|
@@ -2066,7 +2688,7 @@ class DashboardComponent {
|
|
|
2066
2688
|
});
|
|
2067
2689
|
}
|
|
2068
2690
|
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 }); }
|
|
2069
|
-
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], 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 [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 class=\"ieeesa-dashboard__upcoming\"\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 ></ieeesa-upcoming-meetings-events>\r\n\r\n <ieeesa-your-groups\r\n [groups]=\"groups | slice: (groupsPageIndex * groupsPageSize) : ((groupsPageIndex + 1) * groupsPageSize)\"\r\n [sectionState]=\"groupsState\"\r\n [totalGroups]=\"groups.length\"\r\n [pageIndex]=\"groupsPageIndex\"\r\n [pageSize]=\"groupsPageSize\"\r\n (groupSelected)=\"onGroupSelected($event)\"\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}.ieeesa-dashboard__content{display:flex;flex-direction:column;gap:24px}.ieeesa-dashboard__welcome,.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: "pipe", type: i1.SlicePipe, name: "slice" }, { kind: "component", type: UpcomingMeetingsEventsComponent, selector: "ieeesa-upcoming-meetings-events", inputs: ["events", "sectionState", "permissions", "attendanceStates", "inFlightMeetingIds", "isMobileView"], outputs: ["viewAll", "viewEvent", "openMeeting", "logAttendance", "leaveMeeting", "meetingPageChange"] }, { kind: "component", type: YourGroupsComponent, selector: "ieeesa-your-groups", inputs: ["groups", "sectionState", "totalGroups", "pageIndex", "pageSize"], outputs: ["groupSelected", "viewAllGroups", "pageChange"] }, { kind: "component", type: DashboardWelcomeHeaderComponent, selector: "ieeesa-dashboard-welcome-header", inputs: ["userName", "meetingsCount", "groupsCount"], outputs: ["shortcutSelected"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
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 }); }
|
|
2070
2692
|
}
|
|
2071
2693
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DashboardComponent, decorators: [{
|
|
2072
2694
|
type: Component,
|
|
@@ -2075,7 +2697,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
2075
2697
|
UpcomingMeetingsEventsComponent,
|
|
2076
2698
|
YourGroupsComponent,
|
|
2077
2699
|
DashboardWelcomeHeaderComponent
|
|
2078
|
-
], 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 [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 class=\"ieeesa-dashboard__upcoming\"\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 ></ieeesa-upcoming-meetings-events>\r\n\r\n <ieeesa-your-groups\r\n [groups]=\"groups | slice: (groupsPageIndex * groupsPageSize) : ((groupsPageIndex + 1) * groupsPageSize)\"\r\n [sectionState]=\"groupsState\"\r\n [totalGroups]=\"groups.length\"\r\n [pageIndex]=\"groupsPageIndex\"\r\n [pageSize]=\"groupsPageSize\"\r\n (groupSelected)=\"onGroupSelected($event)\"\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}.ieeesa-dashboard__content{display:flex;flex-direction:column;gap:24px}.ieeesa-dashboard__welcome,.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"] }]
|
|
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"] }]
|
|
2079
2701
|
}], ctorParameters: function () { return [{ type: DashboardService }, { type: UserPermissionsService }, { type: i3.BreakpointObserverService }, { type: i1$1.AlertsService }]; }, propDecorators: { routePaths: [{
|
|
2080
2702
|
type: Input
|
|
2081
2703
|
}], apiBaseURL: [{
|
|
@@ -2086,6 +2708,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
2086
2708
|
type: Input
|
|
2087
2709
|
}], dashboardNavigate: [{
|
|
2088
2710
|
type: Output
|
|
2711
|
+
}], upcomingSection: [{
|
|
2712
|
+
type: ViewChild,
|
|
2713
|
+
args: ['upcomingSection', { read: ElementRef }]
|
|
2714
|
+
}], groupsSection: [{
|
|
2715
|
+
type: ViewChild,
|
|
2716
|
+
args: ['groupsSection', { read: ElementRef }]
|
|
2089
2717
|
}] } });
|
|
2090
2718
|
|
|
2091
2719
|
var dashboard_component = /*#__PURE__*/Object.freeze({
|
|
@@ -2186,13 +2814,22 @@ const DASHBOARD_ROUTES = [
|
|
|
2186
2814
|
},
|
|
2187
2815
|
];
|
|
2188
2816
|
|
|
2817
|
+
/**
|
|
2818
|
+
* Request payloads for the dashboard "events & meetings" backend calls. These
|
|
2819
|
+
* mirror the `events-and-meetings` library's `GetEventsAndMeetingsPayload` /
|
|
2820
|
+
* `GetMeetingsByEventIdPayload` so the dashboard reuses the exact contract the
|
|
2821
|
+
* existing `view-events-meetings-list` screen posts.
|
|
2822
|
+
*/
|
|
2823
|
+
|
|
2189
2824
|
const DashboardRoutePathsMock = {
|
|
2190
2825
|
eventDetail: 'events-and-meetings/view-event',
|
|
2191
2826
|
meetingDetail: 'events-and-meetings/view-meeting',
|
|
2192
|
-
|
|
2193
|
-
|
|
2194
|
-
|
|
2195
|
-
|
|
2827
|
+
/*
|
|
2828
|
+
* The demo app only registers a flat `groups` route (no group-detail screen),
|
|
2829
|
+
* so group-row navigation targets it rather than a `view-group` child that the
|
|
2830
|
+
* demo does not implement. A consuming app with a real group-detail route
|
|
2831
|
+
* supplies its own path via the `routePaths` input.
|
|
2832
|
+
*/
|
|
2196
2833
|
groupDetail: 'groups',
|
|
2197
2834
|
viewAllEvents: 'events-and-meetings/view-events-meetings-list',
|
|
2198
2835
|
viewAllGroups: 'groups',
|
|
@@ -2221,6 +2858,225 @@ const DashboardUserPermissionsMock = [
|
|
|
2221
2858
|
},
|
|
2222
2859
|
];
|
|
2223
2860
|
|
|
2861
|
+
/**
|
|
2862
|
+
* Mock upcoming-events + groups fixtures for the dashboard library.
|
|
2863
|
+
*
|
|
2864
|
+
* These exercise the key presentation edge cases:
|
|
2865
|
+
* - empty/undefined `groupOrCommittee` and `roomOrLocation` (empty-field placeholder)
|
|
2866
|
+
* - a mix of `CURRENTLY_ATTENDING` / `NOT_ATTENDING` attendance states
|
|
2867
|
+
* - events with many meetings so per-card pagination is exercised
|
|
2868
|
+
*
|
|
2869
|
+
* TODO: Replace mock with real API call when BE is ready
|
|
2870
|
+
*/
|
|
2871
|
+
const DashboardUpcomingEventsMock = [
|
|
2872
|
+
{
|
|
2873
|
+
eventId: 'EVT-001',
|
|
2874
|
+
kind: UpcomingItemKind.EVENT,
|
|
2875
|
+
title: 'NESC Revision Cycle Kickoff',
|
|
2876
|
+
status: 'In Progress',
|
|
2877
|
+
dayIndicator: 'Day 1 of 3',
|
|
2878
|
+
meetingCount: 6,
|
|
2879
|
+
openForAttendanceCount: 3,
|
|
2880
|
+
startDate: '2025-03-14T09:00:00',
|
|
2881
|
+
endDate: '2025-03-16T17:00:00',
|
|
2882
|
+
timezone: 'America/New_York',
|
|
2883
|
+
meetings: [
|
|
2884
|
+
{
|
|
2885
|
+
meetingId: 'MTG-001',
|
|
2886
|
+
meetingName: 'Opening Plenary',
|
|
2887
|
+
groupOrCommittee: 'NESC Main Committee',
|
|
2888
|
+
roomOrLocation: 'Grand Ballroom A',
|
|
2889
|
+
meetingDate: '2025-03-14T09:00:00',
|
|
2890
|
+
meetingTime: '2025-03-14T09:00:00',
|
|
2891
|
+
timezone: 'America/New_York',
|
|
2892
|
+
isOpenForAttendance: true,
|
|
2893
|
+
attendanceState: AttendanceState.CURRENTLY_ATTENDING,
|
|
2894
|
+
},
|
|
2895
|
+
{
|
|
2896
|
+
meetingId: 'MTG-002',
|
|
2897
|
+
meetingName: 'Subcommittee 1 Working Session',
|
|
2898
|
+
groupOrCommittee: 'Subcommittee 1 - Grounding',
|
|
2899
|
+
// RoomOrLocation intentionally omitted to exercise the empty-field placeholder.
|
|
2900
|
+
meetingDate: '2025-03-14T11:00:00',
|
|
2901
|
+
meetingTime: '2025-03-14T11:00:00',
|
|
2902
|
+
timezone: 'America/New_York',
|
|
2903
|
+
isOpenForAttendance: true,
|
|
2904
|
+
attendanceState: AttendanceState.NOT_ATTENDING,
|
|
2905
|
+
},
|
|
2906
|
+
{
|
|
2907
|
+
meetingId: 'MTG-003',
|
|
2908
|
+
meetingName: 'Subcommittee 2 Working Session',
|
|
2909
|
+
// GroupOrCommittee intentionally empty to exercise the empty-field placeholder.
|
|
2910
|
+
groupOrCommittee: '',
|
|
2911
|
+
roomOrLocation: 'Room 204',
|
|
2912
|
+
meetingDate: '2025-03-14T13:30:00',
|
|
2913
|
+
meetingTime: '2025-03-14T13:30:00',
|
|
2914
|
+
timezone: 'America/New_York',
|
|
2915
|
+
isOpenForAttendance: true,
|
|
2916
|
+
attendanceState: AttendanceState.NOT_ATTENDING,
|
|
2917
|
+
},
|
|
2918
|
+
{
|
|
2919
|
+
meetingId: 'MTG-004',
|
|
2920
|
+
meetingName: 'Editorial Review',
|
|
2921
|
+
groupOrCommittee: 'Editorial Task Force',
|
|
2922
|
+
roomOrLocation: 'Room 118',
|
|
2923
|
+
meetingDate: '2025-03-15T09:00:00',
|
|
2924
|
+
meetingTime: '2025-03-15T09:00:00',
|
|
2925
|
+
timezone: 'America/New_York',
|
|
2926
|
+
isOpenForAttendance: false,
|
|
2927
|
+
attendanceState: AttendanceState.NOT_ATTENDING,
|
|
2928
|
+
},
|
|
2929
|
+
{
|
|
2930
|
+
meetingId: 'MTG-005',
|
|
2931
|
+
meetingName: 'Interpretations Panel',
|
|
2932
|
+
groupOrCommittee: 'Interpretations Subcommittee',
|
|
2933
|
+
roomOrLocation: 'Room 310',
|
|
2934
|
+
meetingDate: '2025-03-15T14:00:00',
|
|
2935
|
+
meetingTime: '2025-03-15T14:00:00',
|
|
2936
|
+
timezone: 'America/New_York',
|
|
2937
|
+
isOpenForAttendance: true,
|
|
2938
|
+
attendanceState: AttendanceState.CURRENTLY_ATTENDING,
|
|
2939
|
+
},
|
|
2940
|
+
{
|
|
2941
|
+
meetingId: 'MTG-006',
|
|
2942
|
+
meetingName: 'Closing Plenary',
|
|
2943
|
+
groupOrCommittee: 'NESC Main Committee',
|
|
2944
|
+
roomOrLocation: 'Grand Ballroom A',
|
|
2945
|
+
meetingDate: '2025-03-16T15:00:00',
|
|
2946
|
+
meetingTime: '2025-03-16T15:00:00',
|
|
2947
|
+
timezone: 'America/New_York',
|
|
2948
|
+
isOpenForAttendance: false,
|
|
2949
|
+
attendanceState: AttendanceState.NOT_ATTENDING,
|
|
2950
|
+
},
|
|
2951
|
+
],
|
|
2952
|
+
},
|
|
2953
|
+
{
|
|
2954
|
+
eventId: 'EVT-002',
|
|
2955
|
+
kind: UpcomingItemKind.EVENT,
|
|
2956
|
+
title: 'Standards Board Quarterly Meeting',
|
|
2957
|
+
status: 'Upcoming',
|
|
2958
|
+
dayIndicator: 'Day 1 of 1',
|
|
2959
|
+
meetingCount: 3,
|
|
2960
|
+
openForAttendanceCount: 1,
|
|
2961
|
+
startDate: '2025-04-02T08:30:00',
|
|
2962
|
+
endDate: '2025-04-02T16:00:00',
|
|
2963
|
+
timezone: 'America/Los_Angeles',
|
|
2964
|
+
meetings: [
|
|
2965
|
+
{
|
|
2966
|
+
meetingId: 'MTG-101',
|
|
2967
|
+
meetingName: 'Board Opening Remarks',
|
|
2968
|
+
groupOrCommittee: 'Standards Board',
|
|
2969
|
+
roomOrLocation: 'Pacific Hall',
|
|
2970
|
+
meetingDate: '2025-04-02T08:30:00',
|
|
2971
|
+
meetingTime: '2025-04-02T08:30:00',
|
|
2972
|
+
timezone: 'America/Los_Angeles',
|
|
2973
|
+
isOpenForAttendance: true,
|
|
2974
|
+
attendanceState: AttendanceState.NOT_ATTENDING,
|
|
2975
|
+
},
|
|
2976
|
+
{
|
|
2977
|
+
meetingId: 'MTG-102',
|
|
2978
|
+
meetingName: 'Ballot Review Session',
|
|
2979
|
+
// Both optional location/group fields omitted to exercise placeholders.
|
|
2980
|
+
meetingDate: '2025-04-02T10:30:00',
|
|
2981
|
+
meetingTime: '2025-04-02T10:30:00',
|
|
2982
|
+
timezone: 'America/Los_Angeles',
|
|
2983
|
+
isOpenForAttendance: false,
|
|
2984
|
+
attendanceState: AttendanceState.NOT_ATTENDING,
|
|
2985
|
+
},
|
|
2986
|
+
{
|
|
2987
|
+
meetingId: 'MTG-103',
|
|
2988
|
+
meetingName: 'Action Items & Wrap-up',
|
|
2989
|
+
groupOrCommittee: 'Standards Board',
|
|
2990
|
+
roomOrLocation: 'Pacific Hall',
|
|
2991
|
+
meetingDate: '2025-04-02T15:00:00',
|
|
2992
|
+
meetingTime: '2025-04-02T15:00:00',
|
|
2993
|
+
timezone: 'America/Los_Angeles',
|
|
2994
|
+
isOpenForAttendance: false,
|
|
2995
|
+
attendanceState: AttendanceState.CURRENTLY_ATTENDING,
|
|
2996
|
+
},
|
|
2997
|
+
],
|
|
2998
|
+
},
|
|
2999
|
+
{
|
|
3000
|
+
eventId: 'EVT-003',
|
|
3001
|
+
kind: UpcomingItemKind.EVENT,
|
|
3002
|
+
title: 'Working Group Interim',
|
|
3003
|
+
status: 'Upcoming',
|
|
3004
|
+
// DayIndicator intentionally omitted (optional field).
|
|
3005
|
+
meetingCount: 0,
|
|
3006
|
+
openForAttendanceCount: 0,
|
|
3007
|
+
startDate: '2025-05-20T09:00:00',
|
|
3008
|
+
endDate: '2025-05-20T12:00:00',
|
|
3009
|
+
timezone: 'Europe/London',
|
|
3010
|
+
meetings: [],
|
|
3011
|
+
},
|
|
3012
|
+
];
|
|
3013
|
+
/**
|
|
3014
|
+
* Mock a single meeting row with an empty `meetingId` to exercise the
|
|
3015
|
+
* non-actionable (empty/undefined id) path in the meeting row component.
|
|
3016
|
+
*
|
|
3017
|
+
* TODO: Replace mock with real API call when BE is ready
|
|
3018
|
+
*/
|
|
3019
|
+
const DashboardNonActionableMeetingMock = {
|
|
3020
|
+
meetingId: '',
|
|
3021
|
+
meetingName: 'Unscheduled Placeholder Session',
|
|
3022
|
+
groupOrCommittee: '',
|
|
3023
|
+
meetingDate: '2025-06-01T09:00:00',
|
|
3024
|
+
meetingTime: '2025-06-01T09:00:00',
|
|
3025
|
+
timezone: 'America/New_York',
|
|
3026
|
+
isOpenForAttendance: false,
|
|
3027
|
+
attendanceState: AttendanceState.NOT_ATTENDING,
|
|
3028
|
+
};
|
|
3029
|
+
/**
|
|
3030
|
+
* Mock groups fixtures for the dashboard "Your Groups" section.
|
|
3031
|
+
*
|
|
3032
|
+
* Includes rows with missing optional fields (`type`, `officerRole`,
|
|
3033
|
+
* `affiliation`) and a spread of member levels so the member-level badge
|
|
3034
|
+
* colour map and empty-field placeholders are exercised.
|
|
3035
|
+
*
|
|
3036
|
+
* TODO: Replace mock with real API call when BE is ready
|
|
3037
|
+
*/
|
|
3038
|
+
const DashboardGroupsMock = [
|
|
3039
|
+
{
|
|
3040
|
+
groupId: 'GRP-001',
|
|
3041
|
+
group: 'NESC Main Committee',
|
|
3042
|
+
type: 'Committee',
|
|
3043
|
+
officerRole: 'Chair',
|
|
3044
|
+
affiliation: 'Employer Corp',
|
|
3045
|
+
memberLevel: 'Senior Member',
|
|
3046
|
+
},
|
|
3047
|
+
{
|
|
3048
|
+
groupId: 'GRP-002',
|
|
3049
|
+
group: 'Subcommittee 1 - Grounding',
|
|
3050
|
+
type: 'Subcommittee',
|
|
3051
|
+
// OfficerRole intentionally omitted (member with no officer role).
|
|
3052
|
+
affiliation: 'Standards Member',
|
|
3053
|
+
memberLevel: 'Member',
|
|
3054
|
+
},
|
|
3055
|
+
{
|
|
3056
|
+
groupId: 'GRP-003',
|
|
3057
|
+
group: 'Editorial Task Force',
|
|
3058
|
+
// Type and affiliation intentionally omitted to exercise placeholders.
|
|
3059
|
+
officerRole: 'Secretary',
|
|
3060
|
+
memberLevel: 'Fellow',
|
|
3061
|
+
},
|
|
3062
|
+
{
|
|
3063
|
+
groupId: 'GRP-004',
|
|
3064
|
+
group: 'Interpretations Subcommittee',
|
|
3065
|
+
type: 'Subcommittee',
|
|
3066
|
+
officerRole: 'Member',
|
|
3067
|
+
affiliation: 'Tech Solutions Inc',
|
|
3068
|
+
memberLevel: 'Associate Member',
|
|
3069
|
+
},
|
|
3070
|
+
{
|
|
3071
|
+
groupId: 'GRP-005',
|
|
3072
|
+
group: 'Standards Board',
|
|
3073
|
+
type: 'Board',
|
|
3074
|
+
officerRole: 'Vice Chair',
|
|
3075
|
+
affiliation: 'CodeCraft Studio',
|
|
3076
|
+
memberLevel: 'Senior Member',
|
|
3077
|
+
},
|
|
3078
|
+
];
|
|
3079
|
+
|
|
2224
3080
|
/*
|
|
2225
3081
|
* Public API Surface of dashboard
|
|
2226
3082
|
*/
|
|
@@ -2230,5 +3086,5 @@ const DashboardUserPermissionsMock = [
|
|
|
2230
3086
|
* Generated bundle index. Do not edit.
|
|
2231
3087
|
*/
|
|
2232
3088
|
|
|
2233
|
-
export { AttendanceState, DASHBOARD_ROUTES, DashboardComponent, DashboardGroupsMock, DashboardJumpTarget, DashboardModule, DashboardNonActionableMeetingMock, DashboardPermissionType, DashboardRoutePathsMock, DashboardSectionState, DashboardService, DashboardUpcomingEventsMock, DashboardUserPermissionsMock, DashboardWelcomeHeaderComponent, EventGroupCardComponent, MeetingAttendanceRowComponent, MemberLevelBadgeComponent, UpcomingMeetingsEventsComponent, UserPermissionsService, YourGroupsComponent };
|
|
3089
|
+
export { AttendanceState, DASHBOARD_ROUTES, DashboardComponent, DashboardGroupsMock, DashboardJumpTarget, DashboardModule, DashboardNonActionableMeetingMock, DashboardPermissionType, DashboardRoutePathsMock, DashboardSectionState, DashboardService, DashboardUpcomingEventsMock, DashboardUserPermissionsMock, DashboardWelcomeHeaderComponent, EventGroupCardComponent, MeetingAttendanceRowComponent, MemberLevelBadgeComponent, UpcomingItemKind, UpcomingMeetingsEventsComponent, UserPermissionsService, YourGroupsComponent };
|
|
2234
3090
|
//# sourceMappingURL=ieeesa-npm-dashboard.mjs.map
|