@frxjs/ngx-timeline 1.0.6 → 1.2.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.
Files changed (42) hide show
  1. package/README.md +138 -136
  2. package/esm2020/frxjs-ngx-timeline.mjs +5 -0
  3. package/{esm2015/lib/components/index.js → esm2020/lib/components/index.mjs} +3 -3
  4. package/esm2020/lib/components/ngx-timeline-event/ngx-timeline-event.component.mjs +58 -0
  5. package/esm2020/lib/components/ngx-timeline.component.mjs +157 -0
  6. package/esm2020/lib/models/NgxConfigObj.mjs +93 -0
  7. package/esm2020/lib/models/NgxTimelineEvent.mjs +6 -0
  8. package/{esm2015/lib/models/index.js → esm2020/lib/models/index.mjs} +3 -3
  9. package/esm2020/lib/ngx-timeline.module.mjs +28 -0
  10. package/{esm2015/lib/pipes/index.js → esm2020/lib/pipes/index.mjs} +2 -2
  11. package/esm2020/lib/pipes/ngx-date-pipe.mjs +31 -0
  12. package/{esm2015/public-api.js → esm2020/public-api.mjs} +7 -7
  13. package/fesm2015/frxjs-ngx-timeline.mjs +366 -0
  14. package/fesm2015/frxjs-ngx-timeline.mjs.map +1 -0
  15. package/fesm2020/frxjs-ngx-timeline.mjs +365 -0
  16. package/fesm2020/frxjs-ngx-timeline.mjs.map +1 -0
  17. package/frxjs-ngx-timeline.d.ts +5 -7
  18. package/lib/components/index.d.ts +2 -2
  19. package/lib/components/ngx-timeline-event/ngx-timeline-event.component.d.ts +38 -35
  20. package/lib/components/ngx-timeline.component.d.ts +79 -76
  21. package/lib/models/NgxConfigObj.d.ts +59 -59
  22. package/lib/models/NgxTimelineEvent.d.ts +29 -29
  23. package/lib/models/index.d.ts +2 -2
  24. package/lib/ngx-timeline.module.d.ts +10 -2
  25. package/lib/pipes/index.d.ts +1 -1
  26. package/lib/pipes/ngx-date-pipe.d.ts +10 -7
  27. package/package.json +22 -9
  28. package/public-api.d.ts +4 -4
  29. package/bundles/frxjs-ngx-timeline.umd.js +0 -696
  30. package/bundles/frxjs-ngx-timeline.umd.js.map +0 -1
  31. package/bundles/frxjs-ngx-timeline.umd.min.js +0 -2
  32. package/bundles/frxjs-ngx-timeline.umd.min.js.map +0 -1
  33. package/esm2015/frxjs-ngx-timeline.js +0 -8
  34. package/esm2015/lib/components/ngx-timeline-event/ngx-timeline-event.component.js +0 -55
  35. package/esm2015/lib/components/ngx-timeline.component.js +0 -147
  36. package/esm2015/lib/models/NgxConfigObj.js +0 -93
  37. package/esm2015/lib/models/NgxTimelineEvent.js +0 -6
  38. package/esm2015/lib/ngx-timeline.module.js +0 -23
  39. package/esm2015/lib/pipes/ngx-date-pipe.js +0 -28
  40. package/fesm2015/frxjs-ngx-timeline.js +0 -350
  41. package/fesm2015/frxjs-ngx-timeline.js.map +0 -1
  42. package/frxjs-ngx-timeline.metadata.json +0 -1
package/README.md CHANGED
@@ -1,136 +1,138 @@
1
- # NgxTimeline ![check-code-coverage](https://img.shields.io/badge/coverage-100%25-brightgreen)
2
-
3
- The main goal of this angular library is to give you the possibility to integrate a timeline in your app.
4
- <br/>
5
- Go to [here](https://emanuelefricano93.github.io/frxjs-Ngx-Timeline/) and discover all possible configurations for the timeline
6
-
7
- ![image](https://user-images.githubusercontent.com/26500344/130092921-8338496a-31df-46fa-b75f-40989eb53d33.png)
8
- <p align = "center">
9
- Fig.1 - Preview of <a href="https://emanuelefricano93.github.io/frxjs-Ngx-Timeline/">Timeline example configuration page</a>
10
- </p>
11
- <br/><br/>
12
-
13
-
14
- ## Installation
15
- Running the following command to install the library
16
- ```
17
- npm install @frxjs/ngx-timeline
18
- ```
19
- <br/><br/>
20
-
21
-
22
-
23
- ## Examples of Usage
24
-
25
- After installing the library and including NgxTimelineModule in your imports module you could add one of following examples to your template in order to display your timeline
26
-
27
- ```
28
- <ngx-timeline [events]="events"></ngx-timeline>
29
- <ngx-timeline [events]="events" [langCode]="it"></ngx-timeline>
30
- <ngx-timeline [events]="events" [langCode]="it" [enableAnimation]="false"></ngx-timeline>
31
- ```
32
- <br/><br/>
33
-
34
- ## Configuration
35
-
36
- ### Input
37
- Input name | Explanation | Mandatory | Type/Supported Values | Default value
38
- --- | --- | --- | --- | ---
39
- events | list of events to be displayed | yes | NgxTimelineEvent | no default
40
- langCode | language code use to format dates | no | <ul><li>'en'</li><li>'it'</li><li>'fr'</li><li>'de'</li><li>'es'</li></ul> | 'en'
41
- enableAnimation | Boolean used to enable or disable the animations | no | boolean | true
42
- groupEvent | Logic to be applied in order to group events | no | enum NgxTimelineEventGroup | NgxTimelineEventGroup.MONTH_YEAR
43
- changeSideInGroup | Logic to be applied in order to put evetns on LEFT or RIGHT | no | enum NgxTimelineEventChangeSideInGroup | NgxTimelineEventChangeSideInGroup.ON_DIFFERENT_DAY
44
- periodCustomTemplate | Custom Template displayed before a group of events | no | TemplateRef<any> | no default
45
- eventCustomTemplate | Custom Template displayed to show a single event | no | TemplateRef<any> | no default
46
- centerIconCustomTemplate | Custom Template displayed to show an separator icon | no | TemplateRef<any> | no default
47
- dateInstantCustomTemplate | Custom Template displayed to show the side date | no | TemplateRef<any> | no default
48
- innerEventCustomTemplate | Custom Template displayed to show the inner event | no | TemplateRef<any> | no default
49
- <br/>
50
-
51
- ### Output
52
- Output name | Explanation | Mandatory | Type/Supported Values | Default value
53
- --- | --- | --- | --- | ---
54
- clickEmitter | Output click event emitter | no | BehaviorSubject<NgxTimelineItem> | no default
55
- <br/>
56
-
57
- ### Types and Enums
58
- ```typescript
59
- interface NgxTimelineEvent {
60
- timestamp?: Date;
61
- title?: string;
62
- description?: string;
63
- id?: any;
64
- }
65
- ```
66
- ```typescript
67
- enum NgxTimelineEventGroup {
68
- YEAR = 'YEAR',
69
- MONTH_YEAR = 'MONTH_YEAR',
70
- DAY_MONTH_YEAR = 'DAY_MONTH_YEAR'
71
- }
72
- ```
73
- ```typescript
74
- enum NgxTimelineEventChangeSideInGroup {
75
- ALL = 'ALL',
76
- ON_DIFFERENT_HMS = 'ON_DIFFERENT_HMS',
77
- ON_DIFFERENT_DAY = 'ON_DIFFERENT_DAY',
78
- ON_DIFFERENT_MONTH = 'ON_DIFFERENT_MONTH'
79
- }
80
- ```
81
- <br/>
82
-
83
- ### Examples with contexts of custom templates
84
- ```html
85
- <ng-template #periodCustomTemplate let-period=period let-index=index>
86
- <div [ngClass]="{'transparent first-line': !index}" class="line"></div>
87
- <div class="period-container">
88
- <p>
89
- {{index}} - {{period | json }}
90
- </p>
91
- </div>
92
- <div class="line"></div>
93
- </ng-template>
94
- ```
95
- ```html
96
- <ng-template #centerIconCustomTemplate>
97
- <div class="icon-container">
98
- <img src="assets/image.png"/>
99
- </div>
100
- </ng-template>
101
- ```
102
- ```html
103
- <ng-template #innerEventCustomTemplate let-event=event>
104
- <div class="event" (click)="handleClick(event)">
105
- {{event | json}}
106
- </div>
107
- </ng-template>
108
- ```
109
- ```html
110
- <ng-template #eventCustomTemplate let-event=event let-colSidePosition=colSidePosition>
111
- <div class="event" (click)="handleClick(event)">
112
- {{event | json}}
113
- </div>
114
- </ng-template>
115
- ```
116
- ```html
117
- <ng-template #dateInstantCustomTemplate let-item=item>
118
- <span>
119
- {{item | json}}
120
- </span>
121
- </ng-template>
122
- ```
123
- <br/><br/>
124
-
125
- ## How to contribute
126
- First of all, in order to track everything, open an issue describing the problem or a missing functionality you would like to add to the lib.
127
-
128
- To start the contribution:
129
- - `npm run watch-lib` (you are builduing the lib with --watch options)
130
- - `npm run start-dev` (you are linking the lib and starting the demo app )
131
-
132
- Every time you will change the code in your lib, any update will trigger the re-load of the app.
133
- When your code will be ready, create a Pull Request and put the link in a comment under the issue you opened before.
134
- Now is time to enjoy and start to code.
135
-
136
- Thanks in advance for your contribution
1
+ # NgxTimeline ![check-code-coverage](https://img.shields.io/badge/coverage-100%25-brightgreen)
2
+
3
+ The main goal of this angular library is to give you the possibility to integrate a timeline in your app.
4
+ <br/>
5
+ Version 1.2.0 is compatible with angular 13.
6
+ <br/>
7
+ Go [here](https://emanuelefricano93.github.io/frxjs-Ngx-Timeline/) and discover all possible configurations for the timeline
8
+
9
+ ![image](https://user-images.githubusercontent.com/26500344/130092921-8338496a-31df-46fa-b75f-40989eb53d33.png)
10
+ <p align = "center">
11
+ Fig.1 - Preview of <a href="https://emanuelefricano93.github.io/frxjs-Ngx-Timeline/">Timeline example configuration page</a>
12
+ </p>
13
+ <br/><br/>
14
+
15
+
16
+ ## Installation
17
+ Running the following command to install the library
18
+ ```
19
+ npm install @frxjs/ngx-timeline
20
+ ```
21
+ <br/><br/>
22
+
23
+
24
+
25
+ ## Examples of Usage
26
+
27
+ After installing the library and including NgxTimelineModule in your imports module you could add one of following examples to your template in order to display your timeline
28
+
29
+ ```
30
+ <ngx-timeline [events]="events"></ngx-timeline>
31
+ <ngx-timeline [events]="events" [langCode]="it"></ngx-timeline>
32
+ <ngx-timeline [events]="events" [langCode]="it" [enableAnimation]="false"></ngx-timeline>
33
+ ```
34
+ <br/><br/>
35
+
36
+ ## Configuration
37
+
38
+ ### Input
39
+ Input name | Explanation | Mandatory | Type/Supported Values | Default value
40
+ --- | --- | --- | --- | ---
41
+ events | list of events to be displayed | yes | NgxTimelineEvent | no default
42
+ langCode | language code use to format dates | no | <ul><li>'en'</li><li>'it'</li><li>'fr'</li><li>'de'</li><li>'es'</li></ul> | 'en'
43
+ enableAnimation | Boolean used to enable or disable the animations | no | boolean | true
44
+ groupEvent | Logic to be applied in order to group events | no | enum NgxTimelineEventGroup | NgxTimelineEventGroup.MONTH_YEAR
45
+ changeSideInGroup | Logic to be applied in order to put evetns on LEFT or RIGHT | no | enum NgxTimelineEventChangeSideInGroup | NgxTimelineEventChangeSideInGroup.ON_DIFFERENT_DAY
46
+ periodCustomTemplate | Custom Template displayed before a group of events | no | TemplateRef<any> | no default
47
+ eventCustomTemplate | Custom Template displayed to show a single event | no | TemplateRef<any> | no default
48
+ centerIconCustomTemplate | Custom Template displayed to show an separator icon | no | TemplateRef<any> | no default
49
+ dateInstantCustomTemplate | Custom Template displayed to show the side date | no | TemplateRef<any> | no default
50
+ innerEventCustomTemplate | Custom Template displayed to show the inner event | no | TemplateRef<any> | no default
51
+ <br/>
52
+
53
+ ### Output
54
+ Output name | Explanation | Mandatory | Type/Supported Values | Default value
55
+ --- | --- | --- | --- | ---
56
+ clickEmitter | Output click event emitter | no | BehaviorSubject<NgxTimelineItem> | no default
57
+ <br/>
58
+
59
+ ### Types and Enums
60
+ ```typescript
61
+ interface NgxTimelineEvent {
62
+ timestamp?: Date;
63
+ title?: string;
64
+ description?: string;
65
+ id?: any;
66
+ }
67
+ ```
68
+ ```typescript
69
+ enum NgxTimelineEventGroup {
70
+ YEAR = 'YEAR',
71
+ MONTH_YEAR = 'MONTH_YEAR',
72
+ DAY_MONTH_YEAR = 'DAY_MONTH_YEAR'
73
+ }
74
+ ```
75
+ ```typescript
76
+ enum NgxTimelineEventChangeSideInGroup {
77
+ ALL = 'ALL',
78
+ ON_DIFFERENT_HMS = 'ON_DIFFERENT_HMS',
79
+ ON_DIFFERENT_DAY = 'ON_DIFFERENT_DAY',
80
+ ON_DIFFERENT_MONTH = 'ON_DIFFERENT_MONTH'
81
+ }
82
+ ```
83
+ <br/>
84
+
85
+ ### Examples with contexts of custom templates
86
+ ```html
87
+ <ng-template #periodCustomTemplate let-period=period let-index=index>
88
+ <div [ngClass]="{'transparent first-line': !index}" class="line"></div>
89
+ <div class="period-container">
90
+ <p>
91
+ {{index}} - {{period | json }}
92
+ </p>
93
+ </div>
94
+ <div class="line"></div>
95
+ </ng-template>
96
+ ```
97
+ ```html
98
+ <ng-template #centerIconCustomTemplate>
99
+ <div class="icon-container">
100
+ <img src="assets/image.png"/>
101
+ </div>
102
+ </ng-template>
103
+ ```
104
+ ```html
105
+ <ng-template #innerEventCustomTemplate let-event=event>
106
+ <div class="event" (click)="handleClick(event)">
107
+ {{event | json}}
108
+ </div>
109
+ </ng-template>
110
+ ```
111
+ ```html
112
+ <ng-template #eventCustomTemplate let-event=event let-colSidePosition=colSidePosition>
113
+ <div class="event" (click)="handleClick(event)">
114
+ {{event | json}}
115
+ </div>
116
+ </ng-template>
117
+ ```
118
+ ```html
119
+ <ng-template #dateInstantCustomTemplate let-item=item>
120
+ <span>
121
+ {{item | json}}
122
+ </span>
123
+ </ng-template>
124
+ ```
125
+ <br/><br/>
126
+
127
+ ## How to contribute
128
+ First of all, in order to track everything, open an issue describing the problem or a missing functionality you would like to add to the lib.
129
+
130
+ To start the contribution:
131
+ - `npm run watch-lib` (you are builduing the lib with --watch options)
132
+ - `npm run start-dev` (you are linking the lib and starting the demo app )
133
+
134
+ Every time you will change the code in your lib, any update will trigger the re-load of the app.
135
+ When your code will be ready, create a Pull Request and put the link in a comment under the issue you opened before.
136
+ Now is time to enjoy and start to code.
137
+
138
+ Thanks in advance for your contribution
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJ4anMtbmd4LXRpbWVsaW5lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvbmd4LXRpbWVsaW5lL3NyYy9mcnhqcy1uZ3gtdGltZWxpbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
@@ -1,3 +1,3 @@
1
- export * from './ngx-timeline.component';
2
- export * from './ngx-timeline-event/ngx-timeline-event.component';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGltZWxpbmUvc3JjL2xpYi9jb21wb25lbnRzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyxtREFBbUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbmd4LXRpbWVsaW5lLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbmd4LXRpbWVsaW5lLWV2ZW50L25neC10aW1lbGluZS1ldmVudC5jb21wb25lbnQnO1xyXG4iXX0=
1
+ export * from './ngx-timeline.component';
2
+ export * from './ngx-timeline-event/ngx-timeline-event.component';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGltZWxpbmUvc3JjL2xpYi9jb21wb25lbnRzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyxtREFBbUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbmd4LXRpbWVsaW5lLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL25neC10aW1lbGluZS1ldmVudC9uZ3gtdGltZWxpbmUtZXZlbnQuY29tcG9uZW50JztcbiJdfQ==
@@ -0,0 +1,58 @@
1
+ import { Component, Input, Output } from '@angular/core';
2
+ import { NgxTimelineItemPosition } from '../../models/NgxTimelineEvent';
3
+ import { DatePipe } from '@angular/common';
4
+ import { BehaviorSubject } from 'rxjs';
5
+ import { supportedLanguageCodes } from '../../models';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/common";
8
+ export class NgxTimelineEventComponent {
9
+ constructor() {
10
+ /**
11
+ * Boolean used to enable or disable the animations
12
+ */
13
+ this.enableAnimation = true;
14
+ /**
15
+ * Output click event emitter
16
+ */
17
+ this.clickEmitter = new BehaviorSubject(null);
18
+ this.ngxTimelineItemPosition = NgxTimelineItemPosition;
19
+ this.monthAbbr = 'MMM';
20
+ this.dayFormat = 'dd';
21
+ }
22
+ getDateObj() {
23
+ let day;
24
+ let month;
25
+ let year;
26
+ const dateTimestamp = this.event?.eventInfo?.timestamp;
27
+ if (dateTimestamp) {
28
+ const timestamp = new Date(dateTimestamp);
29
+ const langCode = this.getLangCode();
30
+ month = new DatePipe(langCode).transform(timestamp, this.monthAbbr);
31
+ day = new DatePipe(langCode).transform(timestamp, this.dayFormat);
32
+ year = timestamp.getFullYear();
33
+ }
34
+ return { day, month, year };
35
+ }
36
+ getLangCode() {
37
+ return this.langCode && supportedLanguageCodes.includes(this.langCode) ? this.langCode : supportedLanguageCodes[0];
38
+ }
39
+ }
40
+ NgxTimelineEventComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: NgxTimelineEventComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
41
+ NgxTimelineEventComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.1", type: NgxTimelineEventComponent, selector: "ngx-timeline-event", inputs: { event: "event", colSidePosition: "colSidePosition", langCode: "langCode", innerEventCustomTemplate: "innerEventCustomTemplate", enableAnimation: "enableAnimation" }, outputs: { clickEmitter: "clickEmitter" }, ngImport: i0, template: "<div class=\"event-wrapper-container\" (click)=\"clickEmitter.next(event)\">\n <div *ngIf=\"colSidePosition===ngxTimelineItemPosition.ON_RIGHT\" class=\"arrow left\"></div>\n <div class=\"event\" [ngClass]=\"{'enableAnimation': enableAnimation}\">\n <ng-container *ngTemplateOutlet=\"innerEventCustomTemplate || innerEventContainer; context: {event: event}\"\n >\n </ng-container>\n </div>\n <div *ngIf=\"colSidePosition===ngxTimelineItemPosition.ON_LEFT\" class=\"arrow right\"></div>\n</div>\n\n<ng-template #innerEventContainer let-event=event>\n <div class=\"event-container\" [ngClass]=\"{'reverse': colSidePosition === ngxTimelineItemPosition.ON_LEFT}\">\n <div class=\"event-info-container\">\n <div class=\"event-info-header\">\n <div class=\"title-container\">{{event?.eventInfo?.title | titlecase}}</div>\n </div>\n <div class=\"event-info-body\">\n <p class=\"event-info-description\">{{event?.eventInfo?.description}}</p>\n </div>\n </div>\n\n <div class=\"event-divider-container\">\n <hr/>\n </div>\n\n <div class=\"event-date-container\" *ngIf=\"getDateObj() as dateObj\">\n <div>\n <p>{{dateObj?.month}}</p>\n </div>\n <div>\n <p class=\"day\">{{dateObj?.day}}</p>\n </div>\n <div>\n <p>{{dateObj?.year}}</p>\n </div>\n </div>\n </div>\n</ng-template>\n", styles: [".event-wrapper-container{display:flex;justify-content:center;align-items:center;cursor:pointer}.arrow{width:0;height:0;border-top:.5rem solid transparent;border-bottom:.5rem solid transparent;border-radius:6px;z-index:10}.arrow.right{filter:drop-shadow(2px 0px 0px #244a6e22);border-left:.5rem solid white}.arrow.left{filter:drop-shadow(-1px 0px 0px #244a6e22);border-right:.5rem solid white}.event{background:white;border-radius:.8rem;padding:1rem;width:100%;margin:1rem 0}.event.enableAnimation:hover{padding:2rem;transition:all .5s ease-in-out}.event.enableAnimation:not(:hover){padding:1rem;transition:all .5s ease-in-out}.event:not(.hour){background:#ffffff 0% 0% no-repeat padding-box;box-shadow:0 3px 6px #244a6e52}.event.hour{padding:.5rem;background:none;display:flex;justify-content:center;align-items:center}.event.hour.right{justify-content:flex-start}.event.hour.left{justify-content:flex-end}.event .hour-inner-container{margin:0}.event-container{display:flex}.event-container.reverse{flex-direction:row-reverse}.event-container .event-info-container{display:flex;flex-direction:column;align-items:flex-start;padding:.1rem;flex:88 88 0}.event-container .event-info-container .event-info-header{display:flex;align-items:center;width:100%}.event-container .event-info-container .event-info-header .icon-container{margin-right:.3rem}.event-container .event-info-container .event-info-header .icon-container nb-icon{color:orange;width:1.5rem;height:1.5rem;margin-bottom:.1rem}.event-container .event-info-container .event-info-header .title-container{font-weight:700;font-size:15px}.event-container .event-info-container .event-info-body{padding:.5rem 0;display:flex;flex-direction:column;justify-content:flex-start;overflow-wrap:anywhere}.event-container .event-info-container .event-info-body .event-info-description{margin-bottom:.5rem;font-size:13px}.event-container .event-info-container .event-info-body .expiration-container,.event-container .event-info-container .event-info-body .category-container{display:flex;font-size:13px;justify-content:flex-start;align-items:center}.event-container .event-info-container .event-info-body .expiration-container p,.event-container .event-info-container .event-info-body .category-container p{font-size:13px;margin:0}.event-container .event-info-container .event-info-body .expiration-container .expiration-label,.event-container .event-info-container .event-info-body .expiration-container .category-label,.event-container .event-info-container .event-info-body .category-container .expiration-label,.event-container .event-info-container .event-info-body .category-container .category-label{margin-right:.5rem}.event-container .event-info-container .event-info-body .expiration-container .expiration-value,.event-container .event-info-container .event-info-body .expiration-container .category-value,.event-container .event-info-container .event-info-body .category-container .expiration-value,.event-container .event-info-container .event-info-body .category-container .category-value{font-weight:700}.event-container .event-info-container .event-info-footer{font-size:15px;cursor:pointer;padding-top:1rem}.event-container .event-info-container .event-info-footer .footer-inner-container{display:flex;justify-content:flex-start;align-items:flex-end}.event-container .event-info-container .event-info-footer .footer-inner-container nb-icon{color:#006cb4;width:1rem;height:1rem;margin-bottom:.1rem}.event-container .event-info-container .event-info-footer p{margin:0;color:#006cb4}.event-container .event-divider-container{display:flex;justify-content:center;align-items:center;padding:.1rem;flex:5 5 0}.event-container .event-divider-container hr{height:100%;width:1px;background:#e9e9e9}.event-container .event-date-container{display:flex;justify-content:center;align-items:center;flex-direction:column;padding:.1rem;flex:15 15 0}.event-container .event-date-container p{margin:0;text-align:center}.event-container .event-date-container p.day{font-size:32px;font-weight:700;padding:.5rem 0}\n"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], pipes: { "titlecase": i1.TitleCasePipe } });
42
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.1", ngImport: i0, type: NgxTimelineEventComponent, decorators: [{
43
+ type: Component,
44
+ args: [{ selector: 'ngx-timeline-event', template: "<div class=\"event-wrapper-container\" (click)=\"clickEmitter.next(event)\">\n <div *ngIf=\"colSidePosition===ngxTimelineItemPosition.ON_RIGHT\" class=\"arrow left\"></div>\n <div class=\"event\" [ngClass]=\"{'enableAnimation': enableAnimation}\">\n <ng-container *ngTemplateOutlet=\"innerEventCustomTemplate || innerEventContainer; context: {event: event}\"\n >\n </ng-container>\n </div>\n <div *ngIf=\"colSidePosition===ngxTimelineItemPosition.ON_LEFT\" class=\"arrow right\"></div>\n</div>\n\n<ng-template #innerEventContainer let-event=event>\n <div class=\"event-container\" [ngClass]=\"{'reverse': colSidePosition === ngxTimelineItemPosition.ON_LEFT}\">\n <div class=\"event-info-container\">\n <div class=\"event-info-header\">\n <div class=\"title-container\">{{event?.eventInfo?.title | titlecase}}</div>\n </div>\n <div class=\"event-info-body\">\n <p class=\"event-info-description\">{{event?.eventInfo?.description}}</p>\n </div>\n </div>\n\n <div class=\"event-divider-container\">\n <hr/>\n </div>\n\n <div class=\"event-date-container\" *ngIf=\"getDateObj() as dateObj\">\n <div>\n <p>{{dateObj?.month}}</p>\n </div>\n <div>\n <p class=\"day\">{{dateObj?.day}}</p>\n </div>\n <div>\n <p>{{dateObj?.year}}</p>\n </div>\n </div>\n </div>\n</ng-template>\n", styles: [".event-wrapper-container{display:flex;justify-content:center;align-items:center;cursor:pointer}.arrow{width:0;height:0;border-top:.5rem solid transparent;border-bottom:.5rem solid transparent;border-radius:6px;z-index:10}.arrow.right{filter:drop-shadow(2px 0px 0px #244a6e22);border-left:.5rem solid white}.arrow.left{filter:drop-shadow(-1px 0px 0px #244a6e22);border-right:.5rem solid white}.event{background:white;border-radius:.8rem;padding:1rem;width:100%;margin:1rem 0}.event.enableAnimation:hover{padding:2rem;transition:all .5s ease-in-out}.event.enableAnimation:not(:hover){padding:1rem;transition:all .5s ease-in-out}.event:not(.hour){background:#ffffff 0% 0% no-repeat padding-box;box-shadow:0 3px 6px #244a6e52}.event.hour{padding:.5rem;background:none;display:flex;justify-content:center;align-items:center}.event.hour.right{justify-content:flex-start}.event.hour.left{justify-content:flex-end}.event .hour-inner-container{margin:0}.event-container{display:flex}.event-container.reverse{flex-direction:row-reverse}.event-container .event-info-container{display:flex;flex-direction:column;align-items:flex-start;padding:.1rem;flex:88 88 0}.event-container .event-info-container .event-info-header{display:flex;align-items:center;width:100%}.event-container .event-info-container .event-info-header .icon-container{margin-right:.3rem}.event-container .event-info-container .event-info-header .icon-container nb-icon{color:orange;width:1.5rem;height:1.5rem;margin-bottom:.1rem}.event-container .event-info-container .event-info-header .title-container{font-weight:700;font-size:15px}.event-container .event-info-container .event-info-body{padding:.5rem 0;display:flex;flex-direction:column;justify-content:flex-start;overflow-wrap:anywhere}.event-container .event-info-container .event-info-body .event-info-description{margin-bottom:.5rem;font-size:13px}.event-container .event-info-container .event-info-body .expiration-container,.event-container .event-info-container .event-info-body .category-container{display:flex;font-size:13px;justify-content:flex-start;align-items:center}.event-container .event-info-container .event-info-body .expiration-container p,.event-container .event-info-container .event-info-body .category-container p{font-size:13px;margin:0}.event-container .event-info-container .event-info-body .expiration-container .expiration-label,.event-container .event-info-container .event-info-body .expiration-container .category-label,.event-container .event-info-container .event-info-body .category-container .expiration-label,.event-container .event-info-container .event-info-body .category-container .category-label{margin-right:.5rem}.event-container .event-info-container .event-info-body .expiration-container .expiration-value,.event-container .event-info-container .event-info-body .expiration-container .category-value,.event-container .event-info-container .event-info-body .category-container .expiration-value,.event-container .event-info-container .event-info-body .category-container .category-value{font-weight:700}.event-container .event-info-container .event-info-footer{font-size:15px;cursor:pointer;padding-top:1rem}.event-container .event-info-container .event-info-footer .footer-inner-container{display:flex;justify-content:flex-start;align-items:flex-end}.event-container .event-info-container .event-info-footer .footer-inner-container nb-icon{color:#006cb4;width:1rem;height:1rem;margin-bottom:.1rem}.event-container .event-info-container .event-info-footer p{margin:0;color:#006cb4}.event-container .event-divider-container{display:flex;justify-content:center;align-items:center;padding:.1rem;flex:5 5 0}.event-container .event-divider-container hr{height:100%;width:1px;background:#e9e9e9}.event-container .event-date-container{display:flex;justify-content:center;align-items:center;flex-direction:column;padding:.1rem;flex:15 15 0}.event-container .event-date-container p{margin:0;text-align:center}.event-container .event-date-container p.day{font-size:32px;font-weight:700;padding:.5rem 0}\n"] }]
45
+ }], ctorParameters: function () { return []; }, propDecorators: { event: [{
46
+ type: Input
47
+ }], colSidePosition: [{
48
+ type: Input
49
+ }], langCode: [{
50
+ type: Input
51
+ }], innerEventCustomTemplate: [{
52
+ type: Input
53
+ }], enableAnimation: [{
54
+ type: Input
55
+ }], clickEmitter: [{
56
+ type: Output
57
+ }] } });
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXRpbWVsaW5lLWV2ZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10aW1lbGluZS9zcmMvbGliL2NvbXBvbmVudHMvbmd4LXRpbWVsaW5lLWV2ZW50L25neC10aW1lbGluZS1ldmVudC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGltZWxpbmUvc3JjL2xpYi9jb21wb25lbnRzL25neC10aW1lbGluZS1ldmVudC9uZ3gtdGltZWxpbmUtZXZlbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFjLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBa0IsdUJBQXVCLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUN2RixPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNyQyxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSxjQUFjLENBQUM7OztBQU9wRCxNQUFNLE9BQU8seUJBQXlCO0lBK0JwQztRQWRBOztXQUVHO1FBQ00sb0JBQWUsR0FBRyxJQUFJLENBQUM7UUFDaEM7O1dBRUc7UUFDTyxpQkFBWSxHQUFxQyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVyRiw0QkFBdUIsR0FBRyx1QkFBdUIsQ0FBQztRQUVqQyxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLGNBQVMsR0FBRyxJQUFJLENBQUM7SUFFbEIsQ0FBQztJQUVqQixVQUFVO1FBQ1IsSUFBSSxHQUFHLENBQUM7UUFDUixJQUFJLEtBQUssQ0FBQztRQUNWLElBQUksSUFBSSxDQUFDO1FBQ1QsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDO1FBQ3ZELElBQUksYUFBYSxFQUFFO1lBQ2pCLE1BQU0sU0FBUyxHQUFHLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQzFDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNwQyxLQUFLLEdBQUcsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDcEUsR0FBRyxHQUFHLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ2xFLElBQUksR0FBRyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDaEM7UUFFRCxPQUFPLEVBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUMsQ0FBQztJQUM1QixDQUFDO0lBRVMsV0FBVztRQUNuQixPQUFPLElBQUksQ0FBQyxRQUFRLElBQUksc0JBQXNCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckgsQ0FBQzs7c0hBbkRVLHlCQUF5QjswR0FBekIseUJBQXlCLHFSQ1h0QyxnM0NBc0NBOzJGRDNCYSx5QkFBeUI7a0JBTHJDLFNBQVM7K0JBQ0Usb0JBQW9COzBFQVFyQixLQUFLO3NCQUFiLEtBQUs7Z0JBSUcsZUFBZTtzQkFBdkIsS0FBSztnQkFJRyxRQUFRO3NCQUFoQixLQUFLO2dCQUlHLHdCQUF3QjtzQkFBaEMsS0FBSztnQkFJRyxlQUFlO3NCQUF2QixLQUFLO2dCQUlJLFlBQVk7c0JBQXJCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgVGVtcGxhdGVSZWZ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtOZ3hUaW1lbGluZUl0ZW0sIE5neFRpbWVsaW5lSXRlbVBvc2l0aW9ufSBmcm9tICcuLi8uLi9tb2RlbHMvTmd4VGltZWxpbmVFdmVudCc7XG5pbXBvcnQge0RhdGVQaXBlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3R9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtzdXBwb3J0ZWRMYW5ndWFnZUNvZGVzfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZ3gtdGltZWxpbmUtZXZlbnQnLFxuICB0ZW1wbGF0ZVVybDogJy4vbmd4LXRpbWVsaW5lLWV2ZW50LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbmd4LXRpbWVsaW5lLWV2ZW50LmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIE5neFRpbWVsaW5lRXZlbnRDb21wb25lbnQge1xuICAvKipcbiAgICogRXZlbnQgdG8gYmUgZGlzcGxheWVkXG4gICAqL1xuICBASW5wdXQoKSBldmVudDogTmd4VGltZWxpbmVJdGVtO1xuICAvKipcbiAgICogRXZlbnQgcG9zaXRpb24gcmVzcGVjdCB0byB0aGUgdmVydGljYWwgbGluZSAoTEVGVCBvciBSSUdIVClcbiAgICovXG4gIEBJbnB1dCgpIGNvbFNpZGVQb3NpdGlvbjogTmd4VGltZWxpbmVJdGVtUG9zaXRpb247XG4gIC8qKlxuICAgKiBMYW5ndWFnZSBjb2RlIHVzZWQgdG8gZm9ybWF0IHRoZSBkYXRlc1xuICAgKi9cbiAgQElucHV0KCkgbGFuZ0NvZGU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBJbm5lciBjdXN0b20gdGVtcGxhdGUgdXNlZCB0byBkaXNwbGF5IHRoZSBldmVudCBkZXRhaWxcbiAgICovXG4gIEBJbnB1dCgpIGlubmVyRXZlbnRDdXN0b21UZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT47XG4gIC8qKlxuICAgKiBCb29sZWFuIHVzZWQgdG8gZW5hYmxlIG9yIGRpc2FibGUgdGhlIGFuaW1hdGlvbnNcbiAgICovXG4gIEBJbnB1dCgpIGVuYWJsZUFuaW1hdGlvbiA9IHRydWU7XG4gIC8qKlxuICAgKiBPdXRwdXQgY2xpY2sgZXZlbnQgZW1pdHRlclxuICAgKi9cbiAgQE91dHB1dCgpIGNsaWNrRW1pdHRlcjogQmVoYXZpb3JTdWJqZWN0PE5neFRpbWVsaW5lSXRlbT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KG51bGwpO1xuXG4gIG5neFRpbWVsaW5lSXRlbVBvc2l0aW9uID0gTmd4VGltZWxpbmVJdGVtUG9zaXRpb247XG5cbiAgcHJpdmF0ZSByZWFkb25seSBtb250aEFiYnIgPSAnTU1NJztcbiAgcHJpdmF0ZSByZWFkb25seSBkYXlGb3JtYXQgPSAnZGQnO1xuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgZ2V0RGF0ZU9iaigpOiBhbnkge1xuICAgIGxldCBkYXk7XG4gICAgbGV0IG1vbnRoO1xuICAgIGxldCB5ZWFyO1xuICAgIGNvbnN0IGRhdGVUaW1lc3RhbXAgPSB0aGlzLmV2ZW50Py5ldmVudEluZm8/LnRpbWVzdGFtcDtcbiAgICBpZiAoZGF0ZVRpbWVzdGFtcCkge1xuICAgICAgY29uc3QgdGltZXN0YW1wID0gbmV3IERhdGUoZGF0ZVRpbWVzdGFtcCk7XG4gICAgICBjb25zdCBsYW5nQ29kZSA9IHRoaXMuZ2V0TGFuZ0NvZGUoKTtcbiAgICAgIG1vbnRoID0gbmV3IERhdGVQaXBlKGxhbmdDb2RlKS50cmFuc2Zvcm0odGltZXN0YW1wLCB0aGlzLm1vbnRoQWJicik7XG4gICAgICBkYXkgPSBuZXcgRGF0ZVBpcGUobGFuZ0NvZGUpLnRyYW5zZm9ybSh0aW1lc3RhbXAsIHRoaXMuZGF5Rm9ybWF0KTtcbiAgICAgIHllYXIgPSB0aW1lc3RhbXAuZ2V0RnVsbFllYXIoKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge2RheSwgbW9udGgsIHllYXJ9O1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldExhbmdDb2RlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMubGFuZ0NvZGUgJiYgc3VwcG9ydGVkTGFuZ3VhZ2VDb2Rlcy5pbmNsdWRlcyh0aGlzLmxhbmdDb2RlKSA/IHRoaXMubGFuZ0NvZGUgOiBzdXBwb3J0ZWRMYW5ndWFnZUNvZGVzWzBdO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZXZlbnQtd3JhcHBlci1jb250YWluZXJcIiAoY2xpY2spPVwiY2xpY2tFbWl0dGVyLm5leHQoZXZlbnQpXCI+XG4gIDxkaXYgKm5nSWY9XCJjb2xTaWRlUG9zaXRpb249PT1uZ3hUaW1lbGluZUl0ZW1Qb3NpdGlvbi5PTl9SSUdIVFwiIGNsYXNzPVwiYXJyb3cgbGVmdFwiPjwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiZXZlbnRcIiBbbmdDbGFzc109XCJ7J2VuYWJsZUFuaW1hdGlvbic6IGVuYWJsZUFuaW1hdGlvbn1cIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW5uZXJFdmVudEN1c3RvbVRlbXBsYXRlIHx8IGlubmVyRXZlbnRDb250YWluZXI7IGNvbnRleHQ6IHtldmVudDogZXZlbnR9XCJcbiAgICA+XG4gIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cImNvbFNpZGVQb3NpdGlvbj09PW5neFRpbWVsaW5lSXRlbVBvc2l0aW9uLk9OX0xFRlRcIiBjbGFzcz1cImFycm93IHJpZ2h0XCI+PC9kaXY+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNpbm5lckV2ZW50Q29udGFpbmVyIGxldC1ldmVudD1ldmVudD5cbiAgPGRpdiBjbGFzcz1cImV2ZW50LWNvbnRhaW5lclwiIFtuZ0NsYXNzXT1cInsncmV2ZXJzZSc6IGNvbFNpZGVQb3NpdGlvbiA9PT0gbmd4VGltZWxpbmVJdGVtUG9zaXRpb24uT05fTEVGVH1cIj5cbiAgICA8ZGl2IGNsYXNzPVwiZXZlbnQtaW5mby1jb250YWluZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJldmVudC1pbmZvLWhlYWRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGUtY29udGFpbmVyXCI+e3tldmVudD8uZXZlbnRJbmZvPy50aXRsZSB8IHRpdGxlY2FzZX19PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJldmVudC1pbmZvLWJvZHlcIj5cbiAgICAgICAgPHAgY2xhc3M9XCJldmVudC1pbmZvLWRlc2NyaXB0aW9uXCI+e3tldmVudD8uZXZlbnRJbmZvPy5kZXNjcmlwdGlvbn19PC9wPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZXZlbnQtZGl2aWRlci1jb250YWluZXJcIj5cbiAgICAgIDxoci8+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZXZlbnQtZGF0ZS1jb250YWluZXJcIiAqbmdJZj1cImdldERhdGVPYmooKSBhcyBkYXRlT2JqXCI+XG4gICAgICA8ZGl2PlxuICAgICAgICA8cD57e2RhdGVPYmo/Lm1vbnRofX08L3A+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxwIGNsYXNzPVwiZGF5XCI+e3tkYXRlT2JqPy5kYXl9fTwvcD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdj5cbiAgICAgICAgPHA+e3tkYXRlT2JqPy55ZWFyfX08L3A+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19