@memberjunction/ng-timeline 2.122.1 → 2.123.0
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/README.md +385 -245
- package/dist/lib/component/timeline.component.d.ts +404 -60
- package/dist/lib/component/timeline.component.d.ts.map +1 -1
- package/dist/lib/component/timeline.component.js +2029 -132
- package/dist/lib/component/timeline.component.js.map +1 -1
- package/dist/lib/events.d.ts +440 -0
- package/dist/lib/events.d.ts.map +1 -0
- package/dist/lib/events.js +11 -0
- package/dist/lib/events.js.map +1 -0
- package/dist/lib/module.d.ts +14 -6
- package/dist/lib/module.d.ts.map +1 -1
- package/dist/lib/module.js +24 -26
- package/dist/lib/module.js.map +1 -1
- package/dist/lib/timeline-group.d.ts +387 -0
- package/dist/lib/timeline-group.d.ts.map +1 -0
- package/dist/lib/timeline-group.js +523 -0
- package/dist/lib/timeline-group.js.map +1 -0
- package/dist/lib/types.d.ts +491 -0
- package/dist/lib/types.d.ts.map +1 -0
- package/dist/lib/types.js +49 -0
- package/dist/lib/types.js.map +1 -0
- package/dist/public-api.d.ts +12 -0
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +15 -2
- package/dist/public-api.js.map +1 -1
- package/package.json +19 -17
|
@@ -1,100 +1,444 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview MJ Timeline Component - A flexible, responsive timeline for Angular.
|
|
3
|
+
*
|
|
4
|
+
* This component displays chronological data in a timeline format with support for:
|
|
5
|
+
* - Multiple data sources (MemberJunction entities or plain objects)
|
|
6
|
+
* - Virtual scrolling for large datasets
|
|
7
|
+
* - Collapsible time segments
|
|
8
|
+
* - Rich event system with BeforeX/AfterX pattern
|
|
9
|
+
* - Full keyboard navigation and accessibility
|
|
10
|
+
* - Responsive design for all screen sizes
|
|
11
|
+
*
|
|
12
|
+
* @module @memberjunction/ng-timeline
|
|
13
|
+
*/
|
|
14
|
+
import { EventEmitter, OnInit, OnDestroy, AfterViewInit, ElementRef, TemplateRef, ChangeDetectorRef, NgZone } from '@angular/core';
|
|
15
|
+
import { TimelineOrientation, TimelineLayout, TimelineSortOrder, TimeSegmentGrouping, TimelineCardConfig, VirtualScrollConfig, VirtualScrollState, MJTimelineEvent, TimelineSegment, TimelineAction, TimelineDisplayField } from '../types';
|
|
16
|
+
import { TimelineGroup } from '../timeline-group';
|
|
17
|
+
import { BeforeEventClickArgs, AfterEventClickArgs, BeforeEventExpandArgs, AfterEventExpandArgs, BeforeEventCollapseArgs, AfterEventCollapseArgs, BeforeEventHoverArgs, AfterEventHoverArgs, BeforeActionClickArgs, AfterActionClickArgs, BeforeSegmentExpandArgs, AfterSegmentExpandArgs, BeforeSegmentCollapseArgs, AfterSegmentCollapseArgs, BeforeLoadArgs, AfterLoadArgs } from '../events';
|
|
4
18
|
import * as i0 from "@angular/core";
|
|
5
19
|
/**
|
|
20
|
+
* MJ Timeline Component - Displays chronological data in a rich, interactive timeline.
|
|
21
|
+
*
|
|
22
|
+
* The timeline component supports multiple data groups, virtual scrolling for large
|
|
23
|
+
* datasets, collapsible time segments, and a comprehensive event system that allows
|
|
24
|
+
* container components to intercept and modify behavior.
|
|
25
|
+
*
|
|
26
|
+
* @example Basic usage
|
|
27
|
+
* ```html
|
|
28
|
+
* <mj-timeline [groups]="myGroups"></mj-timeline>
|
|
29
|
+
* ```
|
|
30
|
+
*
|
|
31
|
+
* @example Full configuration
|
|
32
|
+
* ```html
|
|
33
|
+
* <mj-timeline
|
|
34
|
+
* [groups]="groups"
|
|
35
|
+
* orientation="vertical"
|
|
36
|
+
* layout="alternating"
|
|
37
|
+
* sortOrder="desc"
|
|
38
|
+
* segmentGrouping="month"
|
|
39
|
+
* [segmentsCollapsible]="true"
|
|
40
|
+
* [virtualScroll]="{ enabled: true, batchSize: 25 }"
|
|
41
|
+
* (beforeEventClick)="onBeforeClick($event)"
|
|
42
|
+
* (afterActionClick)="onAction($event)">
|
|
6
43
|
*
|
|
44
|
+
* <ng-template #emptyTemplate>
|
|
45
|
+
* <div class="custom-empty">No events found</div>
|
|
46
|
+
* </ng-template>
|
|
47
|
+
*
|
|
48
|
+
* </mj-timeline>
|
|
49
|
+
* ```
|
|
7
50
|
*/
|
|
8
|
-
export declare class
|
|
51
|
+
export declare class TimelineComponent<T = any> implements OnInit, OnDestroy, AfterViewInit {
|
|
52
|
+
private cdr;
|
|
53
|
+
private elementRef;
|
|
54
|
+
private ngZone;
|
|
9
55
|
/**
|
|
10
|
-
*
|
|
56
|
+
* Array of timeline groups to display.
|
|
57
|
+
* Each group defines a data source and display configuration.
|
|
11
58
|
*/
|
|
12
|
-
|
|
59
|
+
get groups(): TimelineGroup<T>[];
|
|
60
|
+
set groups(value: TimelineGroup<T>[]);
|
|
61
|
+
private _groups;
|
|
13
62
|
/**
|
|
14
|
-
*
|
|
63
|
+
* Check if timeline groups have meaningfully changed
|
|
15
64
|
*/
|
|
16
|
-
|
|
65
|
+
private didGroupsChange;
|
|
17
66
|
/**
|
|
18
|
-
*
|
|
67
|
+
* Controls whether data loading is allowed.
|
|
68
|
+
* Set to false to defer loading until ready.
|
|
69
|
+
* @default true
|
|
19
70
|
*/
|
|
20
|
-
|
|
71
|
+
get allowLoad(): boolean;
|
|
72
|
+
set allowLoad(value: boolean);
|
|
73
|
+
private _allowLoad;
|
|
21
74
|
/**
|
|
22
|
-
*
|
|
75
|
+
* Timeline orientation.
|
|
76
|
+
* - `vertical`: Events displayed top-to-bottom
|
|
77
|
+
* - `horizontal`: Events displayed left-to-right
|
|
78
|
+
* @default 'vertical'
|
|
23
79
|
*/
|
|
24
|
-
|
|
80
|
+
get orientation(): TimelineOrientation;
|
|
81
|
+
set orientation(value: TimelineOrientation);
|
|
82
|
+
private _orientation;
|
|
25
83
|
/**
|
|
26
|
-
*
|
|
84
|
+
* Layout mode for vertical timeline.
|
|
85
|
+
* - `single`: All cards on one side
|
|
86
|
+
* - `alternating`: Cards alternate sides
|
|
87
|
+
* @default 'single'
|
|
27
88
|
*/
|
|
28
|
-
|
|
89
|
+
get layout(): TimelineLayout;
|
|
90
|
+
set layout(value: TimelineLayout);
|
|
91
|
+
private _layout;
|
|
29
92
|
/**
|
|
30
|
-
*
|
|
93
|
+
* Sort order for events.
|
|
94
|
+
* - `desc`: Newest first
|
|
95
|
+
* - `asc`: Oldest first
|
|
96
|
+
* @default 'desc'
|
|
31
97
|
*/
|
|
32
|
-
|
|
98
|
+
get sortOrder(): TimelineSortOrder;
|
|
99
|
+
set sortOrder(value: TimelineSortOrder);
|
|
100
|
+
private _sortOrder;
|
|
33
101
|
/**
|
|
34
|
-
*
|
|
102
|
+
* How to group events into time segments.
|
|
103
|
+
* @default 'month'
|
|
35
104
|
*/
|
|
36
|
-
|
|
105
|
+
get segmentGrouping(): TimeSegmentGrouping;
|
|
106
|
+
set segmentGrouping(value: TimeSegmentGrouping);
|
|
107
|
+
private _segmentGrouping;
|
|
37
108
|
/**
|
|
38
|
-
*
|
|
109
|
+
* Default card configuration applied to all groups.
|
|
110
|
+
* Individual groups can override these settings.
|
|
39
111
|
*/
|
|
40
|
-
|
|
112
|
+
defaultCardConfig: TimelineCardConfig;
|
|
41
113
|
/**
|
|
42
|
-
*
|
|
114
|
+
* Virtual scrolling configuration.
|
|
43
115
|
*/
|
|
44
|
-
|
|
116
|
+
virtualScroll: VirtualScrollConfig;
|
|
45
117
|
/**
|
|
46
|
-
*
|
|
118
|
+
* Whether time segments can be collapsed.
|
|
119
|
+
* @default true
|
|
47
120
|
*/
|
|
48
|
-
|
|
121
|
+
segmentsCollapsible: boolean;
|
|
49
122
|
/**
|
|
50
|
-
*
|
|
51
|
-
*
|
|
123
|
+
* Whether segments start expanded.
|
|
124
|
+
* @default true
|
|
52
125
|
*/
|
|
53
|
-
|
|
126
|
+
segmentsDefaultExpanded: boolean;
|
|
54
127
|
/**
|
|
55
|
-
*
|
|
56
|
-
*
|
|
128
|
+
* Message shown when no events exist.
|
|
129
|
+
* @default 'No events to display'
|
|
57
130
|
*/
|
|
58
|
-
|
|
131
|
+
emptyMessage: string;
|
|
59
132
|
/**
|
|
60
|
-
*
|
|
61
|
-
*
|
|
62
|
-
* @param params
|
|
63
|
-
* @returns
|
|
133
|
+
* Icon shown with empty message.
|
|
134
|
+
* @default 'fa-regular fa-calendar-xmark'
|
|
64
135
|
*/
|
|
65
|
-
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Displays data on a timeline UI so that information can see a chronolgoical display of the provided data.
|
|
69
|
-
*/
|
|
70
|
-
export declare class TimelineComponent implements AfterViewInit {
|
|
71
|
-
private _groups;
|
|
72
|
-
DisplayOrientation: 'horizontal' | 'vertical';
|
|
136
|
+
emptyIcon: string;
|
|
73
137
|
/**
|
|
74
|
-
*
|
|
138
|
+
* Message shown while loading.
|
|
139
|
+
* @default 'Loading timeline...'
|
|
75
140
|
*/
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
141
|
+
loadingMessage: string;
|
|
142
|
+
/**
|
|
143
|
+
* ARIA label for the timeline container.
|
|
144
|
+
* @default 'Timeline'
|
|
145
|
+
*/
|
|
146
|
+
ariaLabel: string;
|
|
147
|
+
/**
|
|
148
|
+
* Enable keyboard navigation.
|
|
149
|
+
* @default true
|
|
150
|
+
*/
|
|
151
|
+
enableKeyboardNavigation: boolean;
|
|
152
|
+
/**
|
|
153
|
+
* ID of the currently selected event.
|
|
154
|
+
* When set, the corresponding event will be highlighted with the focused style.
|
|
155
|
+
*/
|
|
156
|
+
get selectedEventId(): string | null;
|
|
157
|
+
set selectedEventId(value: string | null);
|
|
158
|
+
private _selectedEventId;
|
|
159
|
+
/** Emitted before an event card is clicked. Set `cancel = true` to prevent. */
|
|
160
|
+
beforeEventClick: EventEmitter<BeforeEventClickArgs<T>>;
|
|
161
|
+
/** Emitted before an event card expands. Set `cancel = true` to prevent. */
|
|
162
|
+
beforeEventExpand: EventEmitter<BeforeEventExpandArgs<T>>;
|
|
163
|
+
/** Emitted before an event card collapses. Set `cancel = true` to prevent. */
|
|
164
|
+
beforeEventCollapse: EventEmitter<BeforeEventCollapseArgs<T>>;
|
|
165
|
+
/** Emitted before hover state changes. Set `cancel = true` to prevent. */
|
|
166
|
+
beforeEventHover: EventEmitter<BeforeEventHoverArgs<T>>;
|
|
167
|
+
/** Emitted before an action button is clicked. Set `cancel = true` to prevent. */
|
|
168
|
+
beforeActionClick: EventEmitter<BeforeActionClickArgs<T>>;
|
|
169
|
+
/** Emitted before a time segment expands. Set `cancel = true` to prevent. */
|
|
170
|
+
beforeSegmentExpand: EventEmitter<BeforeSegmentExpandArgs>;
|
|
171
|
+
/** Emitted before a time segment collapses. Set `cancel = true` to prevent. */
|
|
172
|
+
beforeSegmentCollapse: EventEmitter<BeforeSegmentCollapseArgs>;
|
|
173
|
+
/** Emitted before data loading begins. Set `cancel = true` to prevent. */
|
|
174
|
+
beforeLoad: EventEmitter<BeforeLoadArgs>;
|
|
175
|
+
/** Emitted after an event card is clicked. */
|
|
176
|
+
afterEventClick: EventEmitter<AfterEventClickArgs<T>>;
|
|
177
|
+
/** Emitted after an event card expands. */
|
|
178
|
+
afterEventExpand: EventEmitter<AfterEventExpandArgs<T>>;
|
|
179
|
+
/** Emitted after an event card collapses. */
|
|
180
|
+
afterEventCollapse: EventEmitter<AfterEventCollapseArgs<T>>;
|
|
181
|
+
/** Emitted after hover state changes. */
|
|
182
|
+
afterEventHover: EventEmitter<AfterEventHoverArgs<T>>;
|
|
183
|
+
/** Emitted after an action button is clicked. */
|
|
184
|
+
afterActionClick: EventEmitter<AfterActionClickArgs<T>>;
|
|
185
|
+
/** Emitted after a time segment expands. */
|
|
186
|
+
afterSegmentExpand: EventEmitter<AfterSegmentExpandArgs>;
|
|
187
|
+
/** Emitted after a time segment collapses. */
|
|
188
|
+
afterSegmentCollapse: EventEmitter<AfterSegmentCollapseArgs>;
|
|
189
|
+
/** Emitted after data loading completes. */
|
|
190
|
+
afterLoad: EventEmitter<AfterLoadArgs>;
|
|
191
|
+
/** Custom template for entire card. Context: { event, group } */
|
|
192
|
+
cardTemplate?: TemplateRef<{
|
|
193
|
+
event: MJTimelineEvent<T>;
|
|
194
|
+
group: TimelineGroup<T>;
|
|
195
|
+
}>;
|
|
196
|
+
/** Custom template for card header. Context: { event } */
|
|
197
|
+
headerTemplate?: TemplateRef<{
|
|
198
|
+
event: MJTimelineEvent<T>;
|
|
199
|
+
}>;
|
|
200
|
+
/** Custom template for card body. Context: { event } */
|
|
201
|
+
bodyTemplate?: TemplateRef<{
|
|
202
|
+
event: MJTimelineEvent<T>;
|
|
203
|
+
}>;
|
|
204
|
+
/** Custom template for card actions. Context: { event, actions } */
|
|
205
|
+
actionsTemplate?: TemplateRef<{
|
|
206
|
+
event: MJTimelineEvent<T>;
|
|
207
|
+
actions: TimelineAction[];
|
|
208
|
+
}>;
|
|
209
|
+
/** Custom template for segment header. Context: { segment } */
|
|
210
|
+
segmentHeaderTemplate?: TemplateRef<{
|
|
211
|
+
segment: TimelineSegment;
|
|
212
|
+
}>;
|
|
213
|
+
/** Custom template for empty state. */
|
|
214
|
+
emptyTemplate?: TemplateRef<void>;
|
|
215
|
+
/** Custom template for loading state. */
|
|
216
|
+
loadingTemplate?: TemplateRef<void>;
|
|
217
|
+
scrollContainer?: ElementRef<HTMLElement>;
|
|
218
|
+
/** Current time segments with events. */
|
|
219
|
+
segments: TimelineSegment[];
|
|
220
|
+
/** All flattened events (for non-segmented display). */
|
|
221
|
+
allEvents: MJTimelineEvent<T>[];
|
|
222
|
+
/** Virtual scroll state. */
|
|
223
|
+
scrollState: VirtualScrollState;
|
|
224
|
+
/** Whether initial load is complete. */
|
|
225
|
+
isInitialized: boolean;
|
|
226
|
+
/** Whether currently loading data. */
|
|
227
|
+
isLoading: boolean;
|
|
228
|
+
/** Index of currently focused event (for keyboard navigation). */
|
|
229
|
+
focusedEventIndex: number;
|
|
230
|
+
private _initialized;
|
|
231
|
+
private _hasLoaded;
|
|
232
|
+
private _destroy$;
|
|
233
|
+
private _scroll$;
|
|
234
|
+
private _intersectionObserver?;
|
|
235
|
+
constructor(cdr: ChangeDetectorRef, elementRef: ElementRef, ngZone: NgZone);
|
|
236
|
+
ngOnInit(): void;
|
|
237
|
+
ngAfterViewInit(): void;
|
|
238
|
+
ngOnDestroy(): void;
|
|
239
|
+
/**
|
|
240
|
+
* Refreshes all data from the configured groups.
|
|
241
|
+
* Clears existing data and reloads from sources.
|
|
242
|
+
*/
|
|
243
|
+
refresh(force?: boolean): Promise<void>;
|
|
244
|
+
/**
|
|
245
|
+
* Loads more events (for virtual scrolling).
|
|
246
|
+
*/
|
|
247
|
+
loadMore(): Promise<void>;
|
|
248
|
+
/**
|
|
249
|
+
* Expands all event cards.
|
|
250
|
+
*/
|
|
251
|
+
expandAllEvents(): void;
|
|
252
|
+
/**
|
|
253
|
+
* Collapses all event cards.
|
|
254
|
+
*/
|
|
255
|
+
collapseAllEvents(): void;
|
|
256
|
+
/**
|
|
257
|
+
* Expands all time segments.
|
|
258
|
+
*/
|
|
259
|
+
expandAllSegments(): void;
|
|
260
|
+
/**
|
|
261
|
+
* Collapses all time segments.
|
|
262
|
+
*/
|
|
263
|
+
collapseAllSegments(): void;
|
|
264
|
+
/**
|
|
265
|
+
* Expands a specific event by ID.
|
|
266
|
+
*/
|
|
267
|
+
expandEvent(eventId: string): void;
|
|
268
|
+
/**
|
|
269
|
+
* Collapses a specific event by ID.
|
|
270
|
+
*/
|
|
271
|
+
collapseEvent(eventId: string): void;
|
|
272
|
+
/**
|
|
273
|
+
* Scrolls to a specific event.
|
|
274
|
+
*/
|
|
275
|
+
scrollToEvent(eventId: string, behavior?: ScrollBehavior): void;
|
|
276
|
+
/**
|
|
277
|
+
* Scrolls to a specific date.
|
|
278
|
+
*/
|
|
279
|
+
scrollToDate(date: Date, behavior?: ScrollBehavior): void;
|
|
280
|
+
/**
|
|
281
|
+
* Gets an event by ID.
|
|
282
|
+
*/
|
|
283
|
+
getEvent(eventId: string): MJTimelineEvent<T> | undefined;
|
|
284
|
+
/**
|
|
285
|
+
* Gets all events (flattened).
|
|
286
|
+
*/
|
|
287
|
+
getAllEvents(): MJTimelineEvent<T>[];
|
|
288
|
+
/**
|
|
289
|
+
* Handles click on an event card.
|
|
290
|
+
*/
|
|
291
|
+
onEventClick(event: MJTimelineEvent<T>, index: number, domEvent: Event): void;
|
|
292
|
+
/**
|
|
293
|
+
* Handles expand/collapse toggle on an event.
|
|
294
|
+
*/
|
|
295
|
+
onToggleExpand(event: MJTimelineEvent<T>, index: number, domEvent: Event): void;
|
|
296
|
+
/**
|
|
297
|
+
* Handles mouse enter on an event card.
|
|
298
|
+
*/
|
|
299
|
+
onEventMouseEnter(event: MJTimelineEvent<T>, index: number, domEvent: Event): void;
|
|
300
|
+
/**
|
|
301
|
+
* Handles mouse leave on an event card.
|
|
302
|
+
*/
|
|
303
|
+
onEventMouseLeave(event: MJTimelineEvent<T>, index: number, domEvent: Event): void;
|
|
304
|
+
/**
|
|
305
|
+
* Handles action button click.
|
|
306
|
+
*/
|
|
307
|
+
onActionClick(event: MJTimelineEvent<T>, action: TimelineAction, index: number, domEvent: Event): void;
|
|
308
|
+
/**
|
|
309
|
+
* Handles segment header click.
|
|
310
|
+
*/
|
|
311
|
+
onSegmentClick(segment: TimelineSegment): void;
|
|
312
|
+
/**
|
|
313
|
+
* Handles scroll events for virtual scrolling.
|
|
314
|
+
*/
|
|
315
|
+
onScroll(event: Event): void;
|
|
316
|
+
/**
|
|
317
|
+
* Handles keyboard navigation.
|
|
318
|
+
*/
|
|
319
|
+
onKeyDown(event: KeyboardEvent): void;
|
|
320
|
+
/**
|
|
321
|
+
* Gets the effective card config for an event.
|
|
322
|
+
*/
|
|
323
|
+
getEffectiveCardConfig(event: MJTimelineEvent<T>): TimelineCardConfig;
|
|
324
|
+
/**
|
|
325
|
+
* Gets the color for a group/event.
|
|
326
|
+
*/
|
|
327
|
+
getColor(event: MJTimelineEvent<T>): string;
|
|
328
|
+
/**
|
|
329
|
+
* Gets the icon for a group/event.
|
|
330
|
+
*/
|
|
331
|
+
getIcon(event: MJTimelineEvent<T>): string;
|
|
332
|
+
/**
|
|
333
|
+
* Gets the actions for an event.
|
|
334
|
+
*/
|
|
335
|
+
getActions(event: MJTimelineEvent<T>): TimelineAction[];
|
|
336
|
+
/**
|
|
337
|
+
* Formats a date for display.
|
|
338
|
+
*/
|
|
339
|
+
formatDate(date: Date, format?: string): string;
|
|
340
|
+
/**
|
|
341
|
+
* Gets the value of a display field from an event.
|
|
342
|
+
*/
|
|
343
|
+
getFieldValue(event: MJTimelineEvent<T>, field: TimelineDisplayField): string;
|
|
344
|
+
/**
|
|
345
|
+
* Track by function for ngFor.
|
|
346
|
+
*/
|
|
347
|
+
trackByEventId(_index: number, event: MJTimelineEvent<T>): string;
|
|
348
|
+
/**
|
|
349
|
+
* Track by function for segments.
|
|
350
|
+
*/
|
|
351
|
+
trackBySegmentLabel(_index: number, segment: TimelineSegment): string;
|
|
352
|
+
/**
|
|
353
|
+
* Gets the global index of an event in the allEvents array.
|
|
354
|
+
*/
|
|
355
|
+
getGlobalIndex(event: MJTimelineEvent<T>): number;
|
|
356
|
+
/**
|
|
357
|
+
* Checks if an event is currently selected/focused.
|
|
358
|
+
* An event is selected if either:
|
|
359
|
+
* - Its ID matches the selectedEventId input
|
|
360
|
+
* - Its global index matches the focusedEventIndex (keyboard navigation)
|
|
361
|
+
*/
|
|
362
|
+
isEventSelected(event: MJTimelineEvent<T>, globalIndex: number): boolean;
|
|
363
|
+
/**
|
|
364
|
+
* Loads data from all groups.
|
|
365
|
+
*/
|
|
366
|
+
private loadAllGroups;
|
|
367
|
+
/**
|
|
368
|
+
* Loads data from a single group.
|
|
369
|
+
*/
|
|
370
|
+
private loadGroup;
|
|
371
|
+
/**
|
|
372
|
+
* Loads data from MemberJunction entity.
|
|
373
|
+
*/
|
|
374
|
+
private loadFromEntity;
|
|
375
|
+
/**
|
|
376
|
+
* Loads the next batch for virtual scrolling.
|
|
377
|
+
*/
|
|
378
|
+
private loadNextBatch;
|
|
379
|
+
/**
|
|
380
|
+
* Creates a timeline event from a source record.
|
|
381
|
+
*/
|
|
382
|
+
private createTimelineEvent;
|
|
383
|
+
/**
|
|
384
|
+
* Sorts events by date according to sortOrder.
|
|
385
|
+
*/
|
|
386
|
+
private sortEvents;
|
|
387
|
+
/**
|
|
388
|
+
* Builds time segments from events.
|
|
389
|
+
*/
|
|
390
|
+
private buildSegments;
|
|
391
|
+
/**
|
|
392
|
+
* Gets segment information for a date.
|
|
393
|
+
*/
|
|
394
|
+
private getSegmentInfo;
|
|
395
|
+
/**
|
|
396
|
+
* Toggles event expanded state.
|
|
397
|
+
*/
|
|
398
|
+
private toggleEventExpanded;
|
|
399
|
+
/**
|
|
400
|
+
* Sets event expanded state.
|
|
401
|
+
*/
|
|
402
|
+
private setEventExpanded;
|
|
403
|
+
/**
|
|
404
|
+
* Expands an event with events.
|
|
405
|
+
*/
|
|
406
|
+
private expandEventInternal;
|
|
407
|
+
/**
|
|
408
|
+
* Collapses an event with events.
|
|
409
|
+
*/
|
|
410
|
+
private collapseEventInternal;
|
|
411
|
+
/**
|
|
412
|
+
* Expands a segment.
|
|
413
|
+
*/
|
|
414
|
+
private expandSegment;
|
|
415
|
+
/**
|
|
416
|
+
* Collapses a segment.
|
|
417
|
+
*/
|
|
418
|
+
private collapseSegment;
|
|
80
419
|
/**
|
|
81
|
-
*
|
|
420
|
+
* Sets segment expanded state without events.
|
|
82
421
|
*/
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
422
|
+
private setSegmentExpanded;
|
|
423
|
+
private focusNextEvent;
|
|
424
|
+
private focusPreviousEvent;
|
|
425
|
+
private focusFirstEvent;
|
|
426
|
+
private focusLastEvent;
|
|
427
|
+
private activateFocusedEvent;
|
|
428
|
+
private collapseFocusedEvent;
|
|
429
|
+
private scrollToFocusedEvent;
|
|
430
|
+
private setupIntersectionObserver;
|
|
431
|
+
private onScrollCheck;
|
|
87
432
|
/**
|
|
88
|
-
*
|
|
433
|
+
* Maps event config to card config properties.
|
|
89
434
|
*/
|
|
90
|
-
|
|
435
|
+
private mapEventConfigToCardConfig;
|
|
91
436
|
/**
|
|
92
|
-
*
|
|
93
|
-
*
|
|
437
|
+
* Simple date formatter (replaces Angular DatePipe for standalone use).
|
|
438
|
+
* Uses placeholder tokens to avoid replacement conflicts.
|
|
94
439
|
*/
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
static
|
|
98
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<TimelineComponent, "mj-timeline", never, { "DisplayOrientation": { "alias": "DisplayOrientation"; "required": false; }; "Groups": { "alias": "Groups"; "required": false; }; "AllowLoad": { "alias": "AllowLoad"; "required": false; }; }, {}, never, never, false, never>;
|
|
440
|
+
private formatDateInternal;
|
|
441
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TimelineComponent<any>, never>;
|
|
442
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<TimelineComponent<any>, "mj-timeline", never, { "groups": { "alias": "groups"; "required": false; }; "allowLoad": { "alias": "allowLoad"; "required": false; }; "orientation": { "alias": "orientation"; "required": false; }; "layout": { "alias": "layout"; "required": false; }; "sortOrder": { "alias": "sortOrder"; "required": false; }; "segmentGrouping": { "alias": "segmentGrouping"; "required": false; }; "defaultCardConfig": { "alias": "defaultCardConfig"; "required": false; }; "virtualScroll": { "alias": "virtualScroll"; "required": false; }; "segmentsCollapsible": { "alias": "segmentsCollapsible"; "required": false; }; "segmentsDefaultExpanded": { "alias": "segmentsDefaultExpanded"; "required": false; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; }; "emptyIcon": { "alias": "emptyIcon"; "required": false; }; "loadingMessage": { "alias": "loadingMessage"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "enableKeyboardNavigation": { "alias": "enableKeyboardNavigation"; "required": false; }; "selectedEventId": { "alias": "selectedEventId"; "required": false; }; }, { "beforeEventClick": "beforeEventClick"; "beforeEventExpand": "beforeEventExpand"; "beforeEventCollapse": "beforeEventCollapse"; "beforeEventHover": "beforeEventHover"; "beforeActionClick": "beforeActionClick"; "beforeSegmentExpand": "beforeSegmentExpand"; "beforeSegmentCollapse": "beforeSegmentCollapse"; "beforeLoad": "beforeLoad"; "afterEventClick": "afterEventClick"; "afterEventExpand": "afterEventExpand"; "afterEventCollapse": "afterEventCollapse"; "afterEventHover": "afterEventHover"; "afterActionClick": "afterActionClick"; "afterSegmentExpand": "afterSegmentExpand"; "afterSegmentCollapse": "afterSegmentCollapse"; "afterLoad": "afterLoad"; }, ["cardTemplate", "headerTemplate", "bodyTemplate", "actionsTemplate", "segmentHeaderTemplate", "emptyTemplate", "loadingTemplate"], never, false, never>;
|
|
99
443
|
}
|
|
100
444
|
//# sourceMappingURL=timeline.component.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timeline.component.d.ts","sourceRoot":"","sources":["../../../src/lib/component/timeline.component.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"timeline.component.d.ts","sourceRoot":"","sources":["../../../src/lib/component/timeline.component.ts"],"names":[],"mappings":"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"}
|