@ruc-lib/timeline 2.0.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.
@@ -0,0 +1,246 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Component, Input, NgModule } from '@angular/core';
3
+ import * as i1 from '@angular/common';
4
+ import { CommonModule } from '@angular/common';
5
+ import * as i2 from '@angular/material/icon';
6
+ import { MatIconModule } from '@angular/material/icon';
7
+ import * as i3 from '@angular/material/tooltip';
8
+ import { MatTooltipModule } from '@angular/material/tooltip';
9
+ import * as i4 from '@angular/material/card';
10
+ import { MatCardModule } from '@angular/material/card';
11
+
12
+ class RuclibTimelineComponent {
13
+ constructor() { }
14
+ /**
15
+ * To get position of the timeline
16
+ * @param position
17
+ * @param index
18
+ * @returns default: left
19
+ */
20
+ getItemPosition(position, index) {
21
+ switch (position) {
22
+ case 'alternate': {
23
+ const layout = this.getLayout();
24
+ if (index % 2 == 0) {
25
+ return layout === 'horizontal' ? 'top' : 'left';
26
+ }
27
+ else {
28
+ return layout === 'horizontal' ? 'bottom' : 'right';
29
+ }
30
+ }
31
+ case 'top':
32
+ return 'top';
33
+ case 'bottom':
34
+ return 'bottom';
35
+ case 'right':
36
+ return 'right';
37
+ case 'left':
38
+ default:
39
+ return 'left';
40
+ }
41
+ }
42
+ /**
43
+ * To get layout of the timeline
44
+ * @param layout
45
+ * @returns default: vertical
46
+ */
47
+ getItemLayout(layout = '') {
48
+ switch (layout) {
49
+ case 'horizontal':
50
+ return 'horizontal';
51
+ case 'vertical':
52
+ default:
53
+ return 'vertical';
54
+ }
55
+ }
56
+ /**
57
+ * To get data from the input
58
+ */
59
+ getData() {
60
+ var _a, _b;
61
+ if ((_a = this.rucInputData) === null || _a === void 0 ? void 0 : _a.data) {
62
+ this.data = ((_b = this.rucInputData.data) === null || _b === void 0 ? void 0 : _b.sort((a, b) => (a === null || a === void 0 ? void 0 : a.id) - (b === null || b === void 0 ? void 0 : b.id))) || [];
63
+ }
64
+ return typeof this.data !== 'undefined' ? this.data : [];
65
+ }
66
+ /**
67
+ * To get position of the timeline
68
+ * @returns default: left
69
+ */
70
+ getPosition(index = -1) {
71
+ var _a, _b;
72
+ if (index === -1) {
73
+ return (_a = this.rucInputData) === null || _a === void 0 ? void 0 : _a.position;
74
+ }
75
+ return this.getItemPosition(((_b = this.rucInputData) === null || _b === void 0 ? void 0 : _b.position) || 'left', index); // Provide a default if position is undefined
76
+ }
77
+ /**
78
+ * To get layout of the timeline
79
+ * @returns default: vertical
80
+ */
81
+ getLayout() {
82
+ var _a;
83
+ return this.getItemLayout((_a = this.rucInputData) === null || _a === void 0 ? void 0 : _a.layout); // Provide a default if layout is undefined
84
+ }
85
+ /**
86
+ * To get highlight color of the timeline
87
+ * @returns default: undefined
88
+ */
89
+ getHighlightColor() {
90
+ var _a;
91
+ return (_a = this.rucInputData) === null || _a === void 0 ? void 0 : _a.highlightColor;
92
+ }
93
+ /**
94
+ * To get title font color of the timeline
95
+ * @returns default: undefined
96
+ */
97
+ getTitleColor() {
98
+ var _a;
99
+ return (_a = this.rucInputData) === null || _a === void 0 ? void 0 : _a.titleFontColor;
100
+ }
101
+ /**
102
+ * To get sub title font color of the timeline
103
+ * @returns default: undefined
104
+ */
105
+ getSubTitleColor() {
106
+ var _a;
107
+ return (_a = this.rucInputData) === null || _a === void 0 ? void 0 : _a.subTitleFontColor;
108
+ }
109
+ /**
110
+ * To get title font size of the timeline
111
+ * @returns default: undefined
112
+ */
113
+ getTitleFontSize() {
114
+ var _a;
115
+ return (_a = this.rucInputData) === null || _a === void 0 ? void 0 : _a.titleFontSize;
116
+ }
117
+ /**
118
+ * To get subtitle font size of the timeline
119
+ * @returns default: undefined
120
+ */
121
+ getSubTitleFontSize() {
122
+ var _a;
123
+ return (_a = this.rucInputData) === null || _a === void 0 ? void 0 : _a.subTitleFontSize;
124
+ }
125
+ /**
126
+ * To get title background color of the timeline
127
+ * @returns default: undefined
128
+ */
129
+ getTitleBackgroundColor() {
130
+ var _a;
131
+ return (_a = this.rucInputData) === null || _a === void 0 ? void 0 : _a.titleBackgroundColor;
132
+ }
133
+ /**
134
+ * To get subtitle background color of the timeline
135
+ * @returns default: undefined
136
+ */
137
+ getSubTitleBackgroundColor() {
138
+ var _a;
139
+ return (_a = this.rucInputData) === null || _a === void 0 ? void 0 : _a.subTitleBackgroundColor;
140
+ }
141
+ /**
142
+ * To get max title length of the timeline
143
+ * @returns default: undefined
144
+ */
145
+ getMaxTitleLength() {
146
+ var _a;
147
+ return (_a = this.rucInputData) === null || _a === void 0 ? void 0 : _a.maxTitleLength;
148
+ }
149
+ /**
150
+ * To get max sub title length of the timeline
151
+ * @returns default: undefined
152
+ */
153
+ getMaxSubtitleLength() {
154
+ var _a;
155
+ return (_a = this.rucInputData) === null || _a === void 0 ? void 0 : _a.maxSubTitleLength;
156
+ }
157
+ /**
158
+ * To check if the isInfo variable is defined and value is true|false in timeline
159
+ * @returns default: undefined
160
+ */
161
+ isInfo() {
162
+ var _a;
163
+ return (_a = this.rucInputData) === null || _a === void 0 ? void 0 : _a.isInfo;
164
+ }
165
+ /**
166
+ * To get title in timeline
167
+ * @param title
168
+ * @param key
169
+ * @returns default: title
170
+ */
171
+ getTitle(title = '', key = '') {
172
+ switch (key) {
173
+ case 'title': {
174
+ const checkLength = this.getMaxTitleLength();
175
+ return this.isLengthDefined(title, checkLength);
176
+ }
177
+ case 'subtitle': {
178
+ const checkLength = this.getMaxSubtitleLength();
179
+ return this.isLengthDefined(title, checkLength);
180
+ }
181
+ default: {
182
+ return title;
183
+ }
184
+ }
185
+ }
186
+ /**
187
+ * To check if the length is defined
188
+ * @param title
189
+ * @param checkLength
190
+ * @returns default: title
191
+ */
192
+ isLengthDefined(title = '', checkLength) {
193
+ if (typeof checkLength !== 'undefined' && checkLength > 0 && title !== '') {
194
+ const str = title.substring(0, checkLength);
195
+ return title.length === checkLength ? str : str + '...';
196
+ }
197
+ return title;
198
+ }
199
+ /**
200
+ * To check if the template variable is defined and value is true|false in timeline
201
+ * @returns default: false
202
+ */
203
+ isCard() {
204
+ var _a, _b;
205
+ return typeof ((_a = this.rucInputData) === null || _a === void 0 ? void 0 : _a.isTemplate) !== 'undefined' ? (_b = this.rucInputData) === null || _b === void 0 ? void 0 : _b.isTemplate : false;
206
+ }
207
+ /**
208
+ * To get the color of icon
209
+ * @returns default: false
210
+ */
211
+ getIconColor() {
212
+ var _a;
213
+ return ((_a = this.rucInputData) === null || _a === void 0 ? void 0 : _a.iconColor) || 'primary';
214
+ }
215
+ }
216
+ RuclibTimelineComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RuclibTimelineComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
217
+ RuclibTimelineComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: RuclibTimelineComponent, selector: "uxp-ruclib-timeline", inputs: { customTheme: "customTheme", rucInputData: "rucInputData" }, ngImport: i0, template: "<div class={{customTheme}}>\r\n <ul class=\"w-full timeline timeline-{{getPosition()}} timeline-{{getLayout()}}\"\r\n [ngClass]=\"{'timeline-card': !!isCard()}\">\r\n <li class=\"timeline-event\" *ngFor=\"let item of getData(); let i = index\">\r\n <ng-container *ngIf=\"getPosition() === 'opposite' then oppositeTemplate else simpleOppositeTemplate\"></ng-container>\r\n <ng-template #oppositeTemplate>\r\n <div class=\"timeline-event-opposite divya\">\r\n <ng-template *ngIf=\"true then titleTemplate\"></ng-template>\r\n </div>\r\n </ng-template>\r\n <ng-template #simpleOppositeTemplate>\r\n <div class=\"timeline-event-opposite rajput\"></div>\r\n </ng-template>\r\n \r\n <div class=\"timeline-event-separator\">\r\n <div class=\"timeline-event-marker\" [ngClass]=\"{'timeline-event-marker-active': !item.icon}\">\r\n <mat-icon\r\n color=\"{{getIconColor()}}\"\r\n class=\"timeline-icon-circle\"\r\n *ngIf=\"item.icon\"\r\n role=\"img\"\r\n [attr.aria-label]=\"item.iconAriaLabel || item.icon\"\r\n >{{item.icon}}</mat-icon>\r\n </div>\r\n <div class=\"timeline-event-connector\" *ngIf=\"i !== (getData()?.length - 1)\"></div>\r\n </div>\r\n <div class=\"timeline-event-content\" [style.background-color]=\"getHighlightColor()\">\r\n <ng-container *ngIf=\"isCard(); then cardTemplate\"></ng-container>\r\n\r\n <ng-container *ngIf=\"getPosition() === 'opposite' then subtitleTemplate\"></ng-container>\r\n\r\n <ng-container *ngIf=\"(!isCard() && getPosition() !== 'opposite') then dataTemplate\"></ng-container>\r\n \r\n <ng-template #cardTemplate>\r\n <!-- Fot Template -->\r\n <mat-card class=\"m-mat-card\" appearance=\"outlined\">\r\n <mat-card-header>\r\n <mat-card-title-group>\r\n <mat-card-title>{{item.title}}</mat-card-title>\r\n <mat-card-subtitle>{{item.subtitle}}</mat-card-subtitle>\r\n <img\r\n mat-card-lg-image\r\n src=\"{{item.imageUrl}}\"\r\n [alt]=\"item.imageAltText || item.title || 'Timeline event image'\"\r\n >\r\n </mat-card-title-group>\r\n </mat-card-header>\r\n <mat-card-content>\r\n {{item.content}}\r\n </mat-card-content>\r\n </mat-card>\r\n </ng-template>\r\n\r\n <ng-template #dataTemplate>\r\n <ng-template *ngIf=\"true then titleTemplate\"></ng-template>\r\n \r\n <ng-template *ngIf=\"true then subtitleTemplate\"></ng-template>\r\n </ng-template>\r\n\r\n <ng-template #titleTemplate>\r\n <!-- Fot Title -->\r\n <div \r\n class=\"timeline-event-title\"\r\n [ngClass]=\"{'timeline-icon-question-mark-active': !!item.iconTitle}\" \r\n [style.background-color]=\"getTitleBackgroundColor()\"\r\n *ngIf=\"!!item.title\"\r\n >\r\n <span \r\n [ngClass]=\"{'description-ellipsis-active': !!getMaxTitleLength()}\"\r\n [style.color]=\"getTitleColor()\"\r\n [style.font-size]=\"getTitleFontSize()\"\r\n [matTooltipDisabled]=\"!(item?.title && item?.title?.length > getMaxTitleLength())\"\r\n [matTooltip]=\"item.title\"\r\n matTooltipPosition=\"above\">\r\n {{getTitle(item.title, 'title')}}\r\n </span>\r\n <span *ngIf=\"!!item.iconTitle\" class=\"timeline-icon-question-mark\" aria-hidden=\"true\">\r\n <mat-icon\r\n color=\"{{getIconColor()}}\"\r\n class=\"timeline-icon-circle timeline-icon\"\r\n >{{item.iconTitle}}</mat-icon>\r\n </span>\r\n <span *ngIf=\"isInfo()\" class=\"timeline-icon-question-mark\">\r\n <mat-icon\r\n color=\"{{getIconColor()}}\"\r\n class=\"timeline-icon-question-mark-icon\"\r\n [matTooltip]=\"item?.titleInfo\"\r\n matTooltipPosition=\"above\" \r\n role=\"button\" \r\n aria-label=\"More information about title\"\r\n >{{item.titleInfoIcon}}</mat-icon> \r\n </span>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template #subtitleTemplate>\r\n <!-- Fot Sub Title -->\r\n <div\r\n class=\"timeline-event-sub-title\"\r\n [ngClass]=\"{'timeline-icon-question-mark-active': !!item.iconSubTitle}\"\r\n [style.background-color]=\"getSubTitleBackgroundColor()\"\r\n *ngIf=\"!!item.subtitle\"\r\n >\r\n <span \r\n [ngClass]=\"{'description-ellipsis-active': !!getMaxSubtitleLength()}\"\r\n [style.color]=\"getSubTitleColor()\"\r\n [style.font-size]=\"getSubTitleFontSize()\"\r\n [matTooltipDisabled]=\"!(item.subtitle && item.subtitle.length > getMaxSubtitleLength())\"\r\n [matTooltip]=\"item.subtitle\"\r\n matTooltipPosition=\"above\"\r\n >\r\n {{getTitle(item.subtitle, 'subtitle')}}\r\n </span>\r\n <span *ngIf=\"!!item.iconSubTitle\" class=\"timeline-icon-question-mark\" aria-hidden=\"true\">\r\n <mat-icon\r\n color=\"{{getIconColor()}}\"\r\n class=\"timeline-icon-circle timeline-icon\"\r\n >{{item.iconSubTitle}}</mat-icon>\r\n </span>\r\n <span *ngIf=\"isInfo()\" class=\"timeline-icon-question-mark\">\r\n <mat-icon\r\n color=\"{{getIconColor()}}\"\r\n class=\"timeline-icon-question-mark-icon\"\r\n [matTooltip]=\"item?.subTitleInfo\"\r\n matTooltipPosition=\"above\" \r\n role=\"button\"\r\n aria-label=\"More information about subtitle\"\r\n >{{item.subTitleInfoIcon}}</mat-icon>\r\n </span>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </li>\r\n </ul>\r\n</div>\r\n", styles: ["*,:before,:after{box-sizing:border-box}.timeline{display:flex;flex-grow:1;flex-direction:column;direction:ltr}.timeline.w-full{max-width:800px;margin:auto}.timeline.timeline-vertical .timeline-event{display:flex;position:relative}.timeline.timeline-vertical .timeline-event:last-child{min-height:0;margin-bottom:0}.timeline.timeline-vertical .timeline-event-connector{width:2px;min-height:30px}.timeline.timeline-vertical .timeline-event-opposite,.timeline.timeline-vertical .timeline-event-content{padding:0 .5rem}.timeline.timeline-vertical.timeline-left .timeline-event-opposite{text-align:right}.timeline.timeline-vertical.timeline-left .timeline-event-content{text-align:left}.timeline.timeline-vertical.timeline-left .timeline-icon-question-mark{padding:0 .375rem}.timeline.timeline-vertical.timeline-left .timeline-icon-question-mark-active{padding:.375rem 0;justify-content:start!important}.timeline.timeline-vertical.timeline-right .timeline-event{flex-direction:row-reverse}.timeline.timeline-vertical.timeline-right .timeline-event-opposite,.timeline.timeline-vertical.timeline-right.timeline-card .timeline-event-content{text-align:left}.timeline.timeline-vertical.timeline-right .timeline-event-content{text-align:right}.timeline.timeline-vertical.timeline-right .timeline-icon-question-mark{padding-right:1.5rem}.timeline.timeline-vertical.timeline-alternate .timeline-event:nth-child(odd) .timeline-event-opposite{text-align:right}.timeline.timeline-vertical.timeline-alternate .timeline-event:nth-child(odd) .timeline-event-content{text-align:left}.timeline.timeline-vertical.timeline-alternate .timeline-event:nth-child(odd) .timeline-icon-question-mark-active{justify-content:start!important}.timeline.timeline-vertical.timeline-alternate .timeline-event:nth-child(even){flex-direction:row-reverse}.timeline.timeline-vertical.timeline-alternate .timeline-event:nth-child(even) .timeline-event-opposite{text-align:left}.timeline.timeline-vertical.timeline-alternate .timeline-event:nth-child(even) .timeline-event-content{text-align:right}.timeline.timeline-vertical.timeline-alternate .timeline-event .timeline-icon-question-mark{padding-right:1.5rem}.timeline.timeline-vertical.timeline-alternate.timeline-card .timeline-event .timeline-event-content{text-align:left}.timeline.timeline-vertical.timeline-opposite .timeline-event-opposite{display:flex;justify-content:flex-end;align-items:normal}.timeline.timeline-horizontal{flex-direction:row}.timeline.timeline-horizontal .timeline-event{display:flex;position:relative;flex-direction:column;flex:1}.timeline.timeline-horizontal .timeline-event-connector{width:100%;height:2px}.timeline.timeline-horizontal.timeline-top .timeline-icon-question-mark{padding-right:1.5rem}.timeline.timeline-horizontal.timeline-bottom .timeline-event{flex-direction:column-reverse}.timeline.timeline-horizontal.timeline-bottom .timeline-icon-question-mark{padding-right:1.5rem}.timeline.timeline-horizontal.timeline-alternate{min-height:29vh}.timeline.timeline-horizontal.timeline-alternate.timeline-card{white-space:nowrap;min-height:45vh;flex:1}.timeline.timeline-horizontal.timeline-alternate .timeline-event{min-height:calc(100% - 80px)}.timeline.timeline-horizontal.timeline-alternate .timeline-event:nth-child(even){flex-direction:column-reverse}.timeline.timeline-horizontal.timeline-alternate .timeline-event-opposite{flex:1}.timeline.timeline-horizontal.timeline-alternate .timeline-icon-question-mark{padding-right:1.5rem}.timeline.timeline-horizontal .timeline-event-content{margin-bottom:auto;padding-left:1px;margin-right:8px;padding:1rem 0}.timeline.timeline-horizontal .timeline-event-content .timeline-icon-question-mark-active{padding:.375rem 0;justify-content:start}.timeline.timeline-horizontal .timeline-event-opposite{flex:0;padding:1rem 0}.timeline.timeline-horizontal .timeline-event-separator{flex-direction:row}.timeline .timeline-event-separator{flex:0;display:flex;align-items:center;flex-direction:column}.timeline .timeline-event-separator .timeline-event-marker{display:inline-flex;align-items:center;justify-content:center;position:relative;align-self:baseline;border-width:2px;border-style:solid;border-color:#e2e8f0;border-radius:50%;width:25px;height:25px}.timeline .timeline-event-separator .timeline-event-marker:after{content:\" \";position:absolute;width:100%;height:100%;border-radius:50%}.timeline .timeline-event-separator .timeline-event-marker.timeline-event-marker-active:before{content:\" \";border-radius:50%;width:.375rem;height:.375rem;background:#ccc}.timeline .timeline-event-separator .timeline-event-connector{flex-grow:1;background:#e2e8f0}.timeline .timeline-event-opposite{line-height:1;flex:1}.timeline .timeline-event-content{flex:1;margin-bottom:10px;line-height:1}.timeline .timeline-event-content .m-mat-card{max-width:400px;margin-bottom:8px}.timeline .timeline-event-content .timeline-event-title{padding:.375rem 0}.timeline .timeline-event-content .timeline-event-sub-title{padding:.125rem .15rem}.timeline .timeline-event-content .timeline-icon-question-mark-active{padding:.375rem 0;display:flex;align-items:normal;justify-content:end}.timeline .timeline-icon-circle{position:absolute;border-radius:50%;font-size:var(--timeline-icon-glyph-size)!important;display:flex;align-items:center;justify-content:center;z-index:1;box-sizing:border-box}.timeline .timeline-icon{align-items:normal}.timeline .timeline-icon-question-mark-icon{position:absolute;font-size:var(--timeline-icon-glyph-size)!important;align-items:normal;justify-content:center}\n"], dependencies: [{ 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: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i4.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i4.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i4.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i4.MatCardLgImage, selector: "[mat-card-lg-image], [matCardImageLarge]" }, { kind: "directive", type: i4.MatCardSubtitle, selector: "mat-card-subtitle, [mat-card-subtitle], [matCardSubtitle]" }, { kind: "directive", type: i4.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "component", type: i4.MatCardTitleGroup, selector: "mat-card-title-group" }] });
218
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RuclibTimelineComponent, decorators: [{
219
+ type: Component,
220
+ args: [{ selector: 'uxp-ruclib-timeline', template: "<div class={{customTheme}}>\r\n <ul class=\"w-full timeline timeline-{{getPosition()}} timeline-{{getLayout()}}\"\r\n [ngClass]=\"{'timeline-card': !!isCard()}\">\r\n <li class=\"timeline-event\" *ngFor=\"let item of getData(); let i = index\">\r\n <ng-container *ngIf=\"getPosition() === 'opposite' then oppositeTemplate else simpleOppositeTemplate\"></ng-container>\r\n <ng-template #oppositeTemplate>\r\n <div class=\"timeline-event-opposite divya\">\r\n <ng-template *ngIf=\"true then titleTemplate\"></ng-template>\r\n </div>\r\n </ng-template>\r\n <ng-template #simpleOppositeTemplate>\r\n <div class=\"timeline-event-opposite rajput\"></div>\r\n </ng-template>\r\n \r\n <div class=\"timeline-event-separator\">\r\n <div class=\"timeline-event-marker\" [ngClass]=\"{'timeline-event-marker-active': !item.icon}\">\r\n <mat-icon\r\n color=\"{{getIconColor()}}\"\r\n class=\"timeline-icon-circle\"\r\n *ngIf=\"item.icon\"\r\n role=\"img\"\r\n [attr.aria-label]=\"item.iconAriaLabel || item.icon\"\r\n >{{item.icon}}</mat-icon>\r\n </div>\r\n <div class=\"timeline-event-connector\" *ngIf=\"i !== (getData()?.length - 1)\"></div>\r\n </div>\r\n <div class=\"timeline-event-content\" [style.background-color]=\"getHighlightColor()\">\r\n <ng-container *ngIf=\"isCard(); then cardTemplate\"></ng-container>\r\n\r\n <ng-container *ngIf=\"getPosition() === 'opposite' then subtitleTemplate\"></ng-container>\r\n\r\n <ng-container *ngIf=\"(!isCard() && getPosition() !== 'opposite') then dataTemplate\"></ng-container>\r\n \r\n <ng-template #cardTemplate>\r\n <!-- Fot Template -->\r\n <mat-card class=\"m-mat-card\" appearance=\"outlined\">\r\n <mat-card-header>\r\n <mat-card-title-group>\r\n <mat-card-title>{{item.title}}</mat-card-title>\r\n <mat-card-subtitle>{{item.subtitle}}</mat-card-subtitle>\r\n <img\r\n mat-card-lg-image\r\n src=\"{{item.imageUrl}}\"\r\n [alt]=\"item.imageAltText || item.title || 'Timeline event image'\"\r\n >\r\n </mat-card-title-group>\r\n </mat-card-header>\r\n <mat-card-content>\r\n {{item.content}}\r\n </mat-card-content>\r\n </mat-card>\r\n </ng-template>\r\n\r\n <ng-template #dataTemplate>\r\n <ng-template *ngIf=\"true then titleTemplate\"></ng-template>\r\n \r\n <ng-template *ngIf=\"true then subtitleTemplate\"></ng-template>\r\n </ng-template>\r\n\r\n <ng-template #titleTemplate>\r\n <!-- Fot Title -->\r\n <div \r\n class=\"timeline-event-title\"\r\n [ngClass]=\"{'timeline-icon-question-mark-active': !!item.iconTitle}\" \r\n [style.background-color]=\"getTitleBackgroundColor()\"\r\n *ngIf=\"!!item.title\"\r\n >\r\n <span \r\n [ngClass]=\"{'description-ellipsis-active': !!getMaxTitleLength()}\"\r\n [style.color]=\"getTitleColor()\"\r\n [style.font-size]=\"getTitleFontSize()\"\r\n [matTooltipDisabled]=\"!(item?.title && item?.title?.length > getMaxTitleLength())\"\r\n [matTooltip]=\"item.title\"\r\n matTooltipPosition=\"above\">\r\n {{getTitle(item.title, 'title')}}\r\n </span>\r\n <span *ngIf=\"!!item.iconTitle\" class=\"timeline-icon-question-mark\" aria-hidden=\"true\">\r\n <mat-icon\r\n color=\"{{getIconColor()}}\"\r\n class=\"timeline-icon-circle timeline-icon\"\r\n >{{item.iconTitle}}</mat-icon>\r\n </span>\r\n <span *ngIf=\"isInfo()\" class=\"timeline-icon-question-mark\">\r\n <mat-icon\r\n color=\"{{getIconColor()}}\"\r\n class=\"timeline-icon-question-mark-icon\"\r\n [matTooltip]=\"item?.titleInfo\"\r\n matTooltipPosition=\"above\" \r\n role=\"button\" \r\n aria-label=\"More information about title\"\r\n >{{item.titleInfoIcon}}</mat-icon> \r\n </span>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template #subtitleTemplate>\r\n <!-- Fot Sub Title -->\r\n <div\r\n class=\"timeline-event-sub-title\"\r\n [ngClass]=\"{'timeline-icon-question-mark-active': !!item.iconSubTitle}\"\r\n [style.background-color]=\"getSubTitleBackgroundColor()\"\r\n *ngIf=\"!!item.subtitle\"\r\n >\r\n <span \r\n [ngClass]=\"{'description-ellipsis-active': !!getMaxSubtitleLength()}\"\r\n [style.color]=\"getSubTitleColor()\"\r\n [style.font-size]=\"getSubTitleFontSize()\"\r\n [matTooltipDisabled]=\"!(item.subtitle && item.subtitle.length > getMaxSubtitleLength())\"\r\n [matTooltip]=\"item.subtitle\"\r\n matTooltipPosition=\"above\"\r\n >\r\n {{getTitle(item.subtitle, 'subtitle')}}\r\n </span>\r\n <span *ngIf=\"!!item.iconSubTitle\" class=\"timeline-icon-question-mark\" aria-hidden=\"true\">\r\n <mat-icon\r\n color=\"{{getIconColor()}}\"\r\n class=\"timeline-icon-circle timeline-icon\"\r\n >{{item.iconSubTitle}}</mat-icon>\r\n </span>\r\n <span *ngIf=\"isInfo()\" class=\"timeline-icon-question-mark\">\r\n <mat-icon\r\n color=\"{{getIconColor()}}\"\r\n class=\"timeline-icon-question-mark-icon\"\r\n [matTooltip]=\"item?.subTitleInfo\"\r\n matTooltipPosition=\"above\" \r\n role=\"button\"\r\n aria-label=\"More information about subtitle\"\r\n >{{item.subTitleInfoIcon}}</mat-icon>\r\n </span>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </li>\r\n </ul>\r\n</div>\r\n", styles: ["*,:before,:after{box-sizing:border-box}.timeline{display:flex;flex-grow:1;flex-direction:column;direction:ltr}.timeline.w-full{max-width:800px;margin:auto}.timeline.timeline-vertical .timeline-event{display:flex;position:relative}.timeline.timeline-vertical .timeline-event:last-child{min-height:0;margin-bottom:0}.timeline.timeline-vertical .timeline-event-connector{width:2px;min-height:30px}.timeline.timeline-vertical .timeline-event-opposite,.timeline.timeline-vertical .timeline-event-content{padding:0 .5rem}.timeline.timeline-vertical.timeline-left .timeline-event-opposite{text-align:right}.timeline.timeline-vertical.timeline-left .timeline-event-content{text-align:left}.timeline.timeline-vertical.timeline-left .timeline-icon-question-mark{padding:0 .375rem}.timeline.timeline-vertical.timeline-left .timeline-icon-question-mark-active{padding:.375rem 0;justify-content:start!important}.timeline.timeline-vertical.timeline-right .timeline-event{flex-direction:row-reverse}.timeline.timeline-vertical.timeline-right .timeline-event-opposite,.timeline.timeline-vertical.timeline-right.timeline-card .timeline-event-content{text-align:left}.timeline.timeline-vertical.timeline-right .timeline-event-content{text-align:right}.timeline.timeline-vertical.timeline-right .timeline-icon-question-mark{padding-right:1.5rem}.timeline.timeline-vertical.timeline-alternate .timeline-event:nth-child(odd) .timeline-event-opposite{text-align:right}.timeline.timeline-vertical.timeline-alternate .timeline-event:nth-child(odd) .timeline-event-content{text-align:left}.timeline.timeline-vertical.timeline-alternate .timeline-event:nth-child(odd) .timeline-icon-question-mark-active{justify-content:start!important}.timeline.timeline-vertical.timeline-alternate .timeline-event:nth-child(even){flex-direction:row-reverse}.timeline.timeline-vertical.timeline-alternate .timeline-event:nth-child(even) .timeline-event-opposite{text-align:left}.timeline.timeline-vertical.timeline-alternate .timeline-event:nth-child(even) .timeline-event-content{text-align:right}.timeline.timeline-vertical.timeline-alternate .timeline-event .timeline-icon-question-mark{padding-right:1.5rem}.timeline.timeline-vertical.timeline-alternate.timeline-card .timeline-event .timeline-event-content{text-align:left}.timeline.timeline-vertical.timeline-opposite .timeline-event-opposite{display:flex;justify-content:flex-end;align-items:normal}.timeline.timeline-horizontal{flex-direction:row}.timeline.timeline-horizontal .timeline-event{display:flex;position:relative;flex-direction:column;flex:1}.timeline.timeline-horizontal .timeline-event-connector{width:100%;height:2px}.timeline.timeline-horizontal.timeline-top .timeline-icon-question-mark{padding-right:1.5rem}.timeline.timeline-horizontal.timeline-bottom .timeline-event{flex-direction:column-reverse}.timeline.timeline-horizontal.timeline-bottom .timeline-icon-question-mark{padding-right:1.5rem}.timeline.timeline-horizontal.timeline-alternate{min-height:29vh}.timeline.timeline-horizontal.timeline-alternate.timeline-card{white-space:nowrap;min-height:45vh;flex:1}.timeline.timeline-horizontal.timeline-alternate .timeline-event{min-height:calc(100% - 80px)}.timeline.timeline-horizontal.timeline-alternate .timeline-event:nth-child(even){flex-direction:column-reverse}.timeline.timeline-horizontal.timeline-alternate .timeline-event-opposite{flex:1}.timeline.timeline-horizontal.timeline-alternate .timeline-icon-question-mark{padding-right:1.5rem}.timeline.timeline-horizontal .timeline-event-content{margin-bottom:auto;padding-left:1px;margin-right:8px;padding:1rem 0}.timeline.timeline-horizontal .timeline-event-content .timeline-icon-question-mark-active{padding:.375rem 0;justify-content:start}.timeline.timeline-horizontal .timeline-event-opposite{flex:0;padding:1rem 0}.timeline.timeline-horizontal .timeline-event-separator{flex-direction:row}.timeline .timeline-event-separator{flex:0;display:flex;align-items:center;flex-direction:column}.timeline .timeline-event-separator .timeline-event-marker{display:inline-flex;align-items:center;justify-content:center;position:relative;align-self:baseline;border-width:2px;border-style:solid;border-color:#e2e8f0;border-radius:50%;width:25px;height:25px}.timeline .timeline-event-separator .timeline-event-marker:after{content:\" \";position:absolute;width:100%;height:100%;border-radius:50%}.timeline .timeline-event-separator .timeline-event-marker.timeline-event-marker-active:before{content:\" \";border-radius:50%;width:.375rem;height:.375rem;background:#ccc}.timeline .timeline-event-separator .timeline-event-connector{flex-grow:1;background:#e2e8f0}.timeline .timeline-event-opposite{line-height:1;flex:1}.timeline .timeline-event-content{flex:1;margin-bottom:10px;line-height:1}.timeline .timeline-event-content .m-mat-card{max-width:400px;margin-bottom:8px}.timeline .timeline-event-content .timeline-event-title{padding:.375rem 0}.timeline .timeline-event-content .timeline-event-sub-title{padding:.125rem .15rem}.timeline .timeline-event-content .timeline-icon-question-mark-active{padding:.375rem 0;display:flex;align-items:normal;justify-content:end}.timeline .timeline-icon-circle{position:absolute;border-radius:50%;font-size:var(--timeline-icon-glyph-size)!important;display:flex;align-items:center;justify-content:center;z-index:1;box-sizing:border-box}.timeline .timeline-icon{align-items:normal}.timeline .timeline-icon-question-mark-icon{position:absolute;font-size:var(--timeline-icon-glyph-size)!important;align-items:normal;justify-content:center}\n"] }]
221
+ }], ctorParameters: function () { return []; }, propDecorators: { customTheme: [{
222
+ type: Input
223
+ }], rucInputData: [{
224
+ type: Input
225
+ }] } });
226
+
227
+ class RuclibTimelineModule {
228
+ }
229
+ RuclibTimelineModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RuclibTimelineModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
230
+ RuclibTimelineModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: RuclibTimelineModule, declarations: [RuclibTimelineComponent], imports: [CommonModule, MatIconModule, MatTooltipModule, MatCardModule], exports: [RuclibTimelineComponent] });
231
+ RuclibTimelineModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RuclibTimelineModule, imports: [CommonModule, MatIconModule, MatTooltipModule, MatCardModule] });
232
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RuclibTimelineModule, decorators: [{
233
+ type: NgModule,
234
+ args: [{
235
+ imports: [CommonModule, MatIconModule, MatTooltipModule, MatCardModule],
236
+ declarations: [RuclibTimelineComponent],
237
+ exports: [RuclibTimelineComponent],
238
+ }]
239
+ }] });
240
+
241
+ /**
242
+ * Generated bundle index. Do not edit.
243
+ */
244
+
245
+ export { RuclibTimelineComponent, RuclibTimelineModule };
246
+ //# sourceMappingURL=ruc-lib-timeline.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ruc-lib-timeline.mjs","sources":["../../src/lib/ruclib-timeline/ruclib-timeline.component.ts","../../src/lib/ruclib-timeline/ruclib-timeline.component.html","../../src/lib/ruclib-timeline.module.ts","../../src/ruc-lib-timeline.ts"],"sourcesContent":["import { Component, Input } from '@angular/core';\r\nimport { RucTimelineInput, RucTimelineItemData } from '../../model/ruclib-timeline.model';\r\n\r\n@Component({\r\n selector: 'uxp-ruclib-timeline',\r\n templateUrl: './ruclib-timeline.component.html',\r\n styleUrls: ['./ruclib-timeline.component.scss'],\r\n})\r\nexport class RuclibTimelineComponent {\r\n @Input() customTheme!: string;\r\n @Input() rucInputData?: RucTimelineInput;\r\n data: RucTimelineItemData[] | undefined;\r\n\r\n constructor() {}\r\n\r\n /**\r\n * To get position of the timeline\r\n * @param position \r\n * @param index \r\n * @returns default: left\r\n */\r\n private getItemPosition(position: string, index: number): string {\r\n switch (position) {\r\n case 'alternate': {\r\n const layout = this.getLayout();\r\n if(index % 2 == 0) {\r\n return layout === 'horizontal' ? 'top' :'left';\r\n } else {\r\n return layout === 'horizontal' ? 'bottom' :'right';\r\n }\r\n }\r\n case 'top':\r\n return 'top';\r\n case 'bottom':\r\n return 'bottom';\r\n case 'right':\r\n return 'right';\r\n case 'left':\r\n default: \r\n return 'left'\r\n }\r\n }\r\n \r\n\r\n /**\r\n * To get layout of the timeline\r\n * @param layout \r\n * @returns default: vertical\r\n */\r\n private getItemLayout(layout: string = ''): string {\r\n switch (layout) {\r\n case 'horizontal':\r\n return 'horizontal';\r\n case 'vertical':\r\n default: \r\n return 'vertical';\r\n }\r\n } \r\n \r\n \r\n /**\r\n * To get data from the input\r\n */\r\n getData(): RucTimelineItemData[] | any {\r\n if (this.rucInputData?.data) {\r\n this.data = this.rucInputData.data?.sort((a: RucTimelineItemData, b: RucTimelineItemData) => a?.id - b?.id) || [];\r\n }\r\n return typeof this.data !== 'undefined' ? this.data : [];\r\n }\r\n\r\n /**\r\n * To get position of the timeline\r\n * @returns default: left\r\n */\r\n getPosition(index: number = -1): string | undefined {\r\n if(index === -1) {\r\n return this.rucInputData?.position;\r\n }\r\n return this.getItemPosition(this.rucInputData?.position || 'left', index); // Provide a default if position is undefined\r\n } \r\n \r\n\r\n /**\r\n * To get layout of the timeline\r\n * @returns default: vertical\r\n */\r\n getLayout(): string {\r\n return this.getItemLayout(this.rucInputData?.layout) // Provide a default if layout is undefined\r\n } \r\n \r\n /**\r\n * To get highlight color of the timeline\r\n * @returns default: undefined\r\n */\r\n getHighlightColor(): string | undefined {\r\n return this.rucInputData?.highlightColor;\r\n }\r\n\r\n /**\r\n * To get title font color of the timeline\r\n * @returns default: undefined\r\n */\r\n getTitleColor(): string | undefined {\r\n return this.rucInputData?.titleFontColor;\r\n }\r\n\r\n /**\r\n * To get sub title font color of the timeline\r\n * @returns default: undefined\r\n */\r\n getSubTitleColor(): string | undefined {\r\n return this.rucInputData?.subTitleFontColor;\r\n } \r\n \r\n /**\r\n * To get title font size of the timeline\r\n * @returns default: undefined\r\n */\r\n getTitleFontSize(): string | undefined {\r\n return this.rucInputData?.titleFontSize;\r\n }\r\n\r\n /**\r\n * To get subtitle font size of the timeline\r\n * @returns default: undefined\r\n */\r\n getSubTitleFontSize(): string | undefined {\r\n return this.rucInputData?.subTitleFontSize;\r\n }\r\n\r\n /**\r\n * To get title background color of the timeline\r\n * @returns default: undefined\r\n */\r\n getTitleBackgroundColor(): string | undefined {\r\n return this.rucInputData?.titleBackgroundColor;\r\n }\r\n\r\n /**\r\n * To get subtitle background color of the timeline\r\n * @returns default: undefined\r\n */\r\n getSubTitleBackgroundColor(): string | undefined {\r\n return this.rucInputData?.subTitleBackgroundColor;\r\n }\r\n \r\n /**\r\n * To get max title length of the timeline\r\n * @returns default: undefined\r\n */\r\n getMaxTitleLength(): number | any {\r\n return this.rucInputData?.maxTitleLength;\r\n }\r\n\r\n /**\r\n * To get max sub title length of the timeline\r\n * @returns default: undefined\r\n */\r\n getMaxSubtitleLength(): number | any {\r\n return this.rucInputData?.maxSubTitleLength;\r\n }\r\n\r\n /**\r\n * To check if the isInfo variable is defined and value is true|false in timeline\r\n * @returns default: undefined\r\n */\r\n isInfo() {\r\n return this.rucInputData?.isInfo;\r\n }\r\n\r\n /**\r\n * To get title in timeline\r\n * @param title \r\n * @param key \r\n * @returns default: title\r\n */\r\n getTitle(title: string = '', key: 'title' | 'subtitle' | '' = ''): string {\r\n switch(key) {\r\n case 'title': {\r\n const checkLength = this.getMaxTitleLength();\r\n return this.isLengthDefined(title, checkLength);\r\n }\r\n case 'subtitle': {\r\n const checkLength = this.getMaxSubtitleLength();\r\n return this.isLengthDefined(title, checkLength);\r\n }\r\n default: {\r\n return title;\r\n }\r\n } \r\n } \r\n \r\n /**\r\n * To check if the length is defined\r\n * @param title \r\n * @param checkLength \r\n * @returns default: title\r\n */\r\n isLengthDefined(title: string = '', checkLength: number | undefined): string { \r\n if(typeof checkLength !== 'undefined' && checkLength > 0 && title !== '') {\r\n const str = title.substring(0, checkLength);\r\n return title.length === checkLength ? str : str+'...';\r\n }\r\n return title;\r\n }\r\n\r\n /**\r\n * To check if the template variable is defined and value is true|false in timeline\r\n * @returns default: false\r\n */\r\n isCard() {\r\n return typeof this.rucInputData?.isTemplate !== 'undefined' ? this.rucInputData?.isTemplate : false;\r\n }\r\n\r\n /**\r\n * To get the color of icon\r\n * @returns default: false\r\n */\r\n getIconColor(): string {\r\n return this.rucInputData?.iconColor || 'primary';\r\n }\r\n}\r\n","<div class={{customTheme}}>\r\n <ul class=\"w-full timeline timeline-{{getPosition()}} timeline-{{getLayout()}}\"\r\n [ngClass]=\"{'timeline-card': !!isCard()}\">\r\n <li class=\"timeline-event\" *ngFor=\"let item of getData(); let i = index\">\r\n <ng-container *ngIf=\"getPosition() === 'opposite' then oppositeTemplate else simpleOppositeTemplate\"></ng-container>\r\n <ng-template #oppositeTemplate>\r\n <div class=\"timeline-event-opposite divya\">\r\n <ng-template *ngIf=\"true then titleTemplate\"></ng-template>\r\n </div>\r\n </ng-template>\r\n <ng-template #simpleOppositeTemplate>\r\n <div class=\"timeline-event-opposite rajput\"></div>\r\n </ng-template>\r\n \r\n <div class=\"timeline-event-separator\">\r\n <div class=\"timeline-event-marker\" [ngClass]=\"{'timeline-event-marker-active': !item.icon}\">\r\n <mat-icon\r\n color=\"{{getIconColor()}}\"\r\n class=\"timeline-icon-circle\"\r\n *ngIf=\"item.icon\"\r\n role=\"img\"\r\n [attr.aria-label]=\"item.iconAriaLabel || item.icon\"\r\n >{{item.icon}}</mat-icon>\r\n </div>\r\n <div class=\"timeline-event-connector\" *ngIf=\"i !== (getData()?.length - 1)\"></div>\r\n </div>\r\n <div class=\"timeline-event-content\" [style.background-color]=\"getHighlightColor()\">\r\n <ng-container *ngIf=\"isCard(); then cardTemplate\"></ng-container>\r\n\r\n <ng-container *ngIf=\"getPosition() === 'opposite' then subtitleTemplate\"></ng-container>\r\n\r\n <ng-container *ngIf=\"(!isCard() && getPosition() !== 'opposite') then dataTemplate\"></ng-container>\r\n \r\n <ng-template #cardTemplate>\r\n <!-- Fot Template -->\r\n <mat-card class=\"m-mat-card\" appearance=\"outlined\">\r\n <mat-card-header>\r\n <mat-card-title-group>\r\n <mat-card-title>{{item.title}}</mat-card-title>\r\n <mat-card-subtitle>{{item.subtitle}}</mat-card-subtitle>\r\n <img\r\n mat-card-lg-image\r\n src=\"{{item.imageUrl}}\"\r\n [alt]=\"item.imageAltText || item.title || 'Timeline event image'\"\r\n >\r\n </mat-card-title-group>\r\n </mat-card-header>\r\n <mat-card-content>\r\n {{item.content}}\r\n </mat-card-content>\r\n </mat-card>\r\n </ng-template>\r\n\r\n <ng-template #dataTemplate>\r\n <ng-template *ngIf=\"true then titleTemplate\"></ng-template>\r\n \r\n <ng-template *ngIf=\"true then subtitleTemplate\"></ng-template>\r\n </ng-template>\r\n\r\n <ng-template #titleTemplate>\r\n <!-- Fot Title -->\r\n <div \r\n class=\"timeline-event-title\"\r\n [ngClass]=\"{'timeline-icon-question-mark-active': !!item.iconTitle}\" \r\n [style.background-color]=\"getTitleBackgroundColor()\"\r\n *ngIf=\"!!item.title\"\r\n >\r\n <span \r\n [ngClass]=\"{'description-ellipsis-active': !!getMaxTitleLength()}\"\r\n [style.color]=\"getTitleColor()\"\r\n [style.font-size]=\"getTitleFontSize()\"\r\n [matTooltipDisabled]=\"!(item?.title && item?.title?.length > getMaxTitleLength())\"\r\n [matTooltip]=\"item.title\"\r\n matTooltipPosition=\"above\">\r\n {{getTitle(item.title, 'title')}}\r\n </span>\r\n <span *ngIf=\"!!item.iconTitle\" class=\"timeline-icon-question-mark\" aria-hidden=\"true\">\r\n <mat-icon\r\n color=\"{{getIconColor()}}\"\r\n class=\"timeline-icon-circle timeline-icon\"\r\n >{{item.iconTitle}}</mat-icon>\r\n </span>\r\n <span *ngIf=\"isInfo()\" class=\"timeline-icon-question-mark\">\r\n <mat-icon\r\n color=\"{{getIconColor()}}\"\r\n class=\"timeline-icon-question-mark-icon\"\r\n [matTooltip]=\"item?.titleInfo\"\r\n matTooltipPosition=\"above\" \r\n role=\"button\" \r\n aria-label=\"More information about title\"\r\n >{{item.titleInfoIcon}}</mat-icon> \r\n </span>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template #subtitleTemplate>\r\n <!-- Fot Sub Title -->\r\n <div\r\n class=\"timeline-event-sub-title\"\r\n [ngClass]=\"{'timeline-icon-question-mark-active': !!item.iconSubTitle}\"\r\n [style.background-color]=\"getSubTitleBackgroundColor()\"\r\n *ngIf=\"!!item.subtitle\"\r\n >\r\n <span \r\n [ngClass]=\"{'description-ellipsis-active': !!getMaxSubtitleLength()}\"\r\n [style.color]=\"getSubTitleColor()\"\r\n [style.font-size]=\"getSubTitleFontSize()\"\r\n [matTooltipDisabled]=\"!(item.subtitle && item.subtitle.length > getMaxSubtitleLength())\"\r\n [matTooltip]=\"item.subtitle\"\r\n matTooltipPosition=\"above\"\r\n >\r\n {{getTitle(item.subtitle, 'subtitle')}}\r\n </span>\r\n <span *ngIf=\"!!item.iconSubTitle\" class=\"timeline-icon-question-mark\" aria-hidden=\"true\">\r\n <mat-icon\r\n color=\"{{getIconColor()}}\"\r\n class=\"timeline-icon-circle timeline-icon\"\r\n >{{item.iconSubTitle}}</mat-icon>\r\n </span>\r\n <span *ngIf=\"isInfo()\" class=\"timeline-icon-question-mark\">\r\n <mat-icon\r\n color=\"{{getIconColor()}}\"\r\n class=\"timeline-icon-question-mark-icon\"\r\n [matTooltip]=\"item?.subTitleInfo\"\r\n matTooltipPosition=\"above\" \r\n role=\"button\"\r\n aria-label=\"More information about subtitle\"\r\n >{{item.subTitleInfoIcon}}</mat-icon>\r\n </span>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </li>\r\n </ul>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RuclibTimelineComponent } from './ruclib-timeline/ruclib-timeline.component';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport {MatCardModule} from '@angular/material/card';\r\n\r\n@NgModule({\r\n imports: [CommonModule, MatIconModule, MatTooltipModule, MatCardModule],\r\n declarations: [RuclibTimelineComponent],\r\n exports: [RuclibTimelineComponent],\r\n})\r\nexport class RuclibTimelineModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;MAQa,uBAAuB,CAAA;AAKlC,IAAA,WAAA,GAAA,GAAgB;AAEhB;;;;;AAKG;IACK,eAAe,CAAC,QAAgB,EAAE,KAAa,EAAA;AACrD,QAAA,QAAQ,QAAQ;YACd,KAAK,WAAW,EAAE;AACd,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;AAChC,gBAAA,IAAG,KAAK,GAAG,CAAC,IAAI,CAAC,EAAE;oBACjB,OAAO,MAAM,KAAK,YAAY,GAAG,KAAK,GAAE,MAAM,CAAC;AAChD,iBAAA;AAAM,qBAAA;oBACL,OAAO,MAAM,KAAK,YAAY,GAAG,QAAQ,GAAE,OAAO,CAAC;AACpD,iBAAA;AACF,aAAA;AACH,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,KAAK,CAAC;AACf,YAAA,KAAK,QAAQ;AACX,gBAAA,OAAO,QAAQ,CAAC;AAClB,YAAA,KAAK,OAAO;AACV,gBAAA,OAAO,OAAO,CAAC;AACjB,YAAA,KAAK,MAAM,CAAC;AACZ,YAAA;AACE,gBAAA,OAAO,MAAM,CAAA;AAChB,SAAA;KACF;AAGD;;;;AAIG;IACK,aAAa,CAAC,SAAiB,EAAE,EAAA;AACvC,QAAA,QAAQ,MAAM;AACZ,YAAA,KAAK,YAAY;AACf,gBAAA,OAAO,YAAY,CAAC;AACtB,YAAA,KAAK,UAAU,CAAC;AAChB,YAAA;AACE,gBAAA,OAAO,UAAU,CAAC;AACrB,SAAA;KACF;AAGD;;AAEG;IACH,OAAO,GAAA;;AACL,QAAA,IAAI,MAAA,IAAI,CAAC,YAAY,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,EAAE;AAC3B,YAAA,IAAI,CAAC,IAAI,GAAG,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,YAAY,CAAC,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,CAAC,CAAC,CAAsB,EAAE,CAAsB,KAAK,CAAA,CAAC,aAAD,CAAC,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAD,CAAC,CAAE,EAAE,KAAG,CAAC,KAAA,IAAA,IAAD,CAAC,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAD,CAAC,CAAE,EAAE,CAAA,CAAC,KAAI,EAAE,CAAC;AACnH,SAAA;AACD,QAAA,OAAO,OAAO,IAAI,CAAC,IAAI,KAAK,WAAW,GAAG,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;KAC1D;AAED;;;AAGG;AACH,IAAA,WAAW,CAAC,KAAgB,GAAA,CAAC,CAAC,EAAA;;AAC5B,QAAA,IAAG,KAAK,KAAK,CAAC,CAAC,EAAE;AACf,YAAA,OAAO,MAAA,IAAI,CAAC,YAAY,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,QAAQ,CAAC;AACpC,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,YAAY,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,QAAQ,KAAI,MAAM,EAAE,KAAK,CAAC,CAAC;KAC3E;AAGA;;;AAGE;IACH,SAAS,GAAA;;AACP,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,CAAA,EAAA,GAAA,IAAI,CAAC,YAAY,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,CAAC,CAAA;KACrD;AAED;;;AAGG;IACH,iBAAiB,GAAA;;AACf,QAAA,OAAO,MAAA,IAAI,CAAC,YAAY,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,cAAc,CAAC;KAC1C;AAED;;;AAGG;IACH,aAAa,GAAA;;AACX,QAAA,OAAO,MAAA,IAAI,CAAC,YAAY,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,cAAc,CAAC;KAC1C;AAED;;;AAGG;IACH,gBAAgB,GAAA;;AACd,QAAA,OAAO,MAAA,IAAI,CAAC,YAAY,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,iBAAiB,CAAC;KAC7C;AAED;;;AAGG;IACH,gBAAgB,GAAA;;AACd,QAAA,OAAO,MAAA,IAAI,CAAC,YAAY,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,aAAa,CAAC;KACzC;AAED;;;AAGG;IACH,mBAAmB,GAAA;;AACjB,QAAA,OAAO,MAAA,IAAI,CAAC,YAAY,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,gBAAgB,CAAC;KAC5C;AAED;;;AAGG;IACH,uBAAuB,GAAA;;AACrB,QAAA,OAAO,MAAA,IAAI,CAAC,YAAY,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,oBAAoB,CAAC;KAChD;AAED;;;AAGG;IACH,0BAA0B,GAAA;;AACxB,QAAA,OAAO,MAAA,IAAI,CAAC,YAAY,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,uBAAuB,CAAC;KACnD;AAED;;;AAGG;IACH,iBAAiB,GAAA;;AACf,QAAA,OAAO,MAAA,IAAI,CAAC,YAAY,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,cAAc,CAAC;KAC1C;AAED;;;AAGG;IACH,oBAAoB,GAAA;;AAClB,QAAA,OAAO,MAAA,IAAI,CAAC,YAAY,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,iBAAiB,CAAC;KAC7C;AAED;;;AAGG;IACH,MAAM,GAAA;;AACJ,QAAA,OAAO,MAAA,IAAI,CAAC,YAAY,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,CAAC;KAClC;AAED;;;;;AAKG;AACH,IAAA,QAAQ,CAAC,KAAA,GAAgB,EAAE,EAAE,MAAiC,EAAE,EAAA;AAC9D,QAAA,QAAO,GAAG;YACR,KAAK,OAAO,EAAE;AACZ,gBAAA,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAC7C,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;AACjD,aAAA;YACD,KAAK,UAAU,EAAE;AACf,gBAAA,MAAM,WAAW,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBAChD,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;AACjD,aAAA;AACD,YAAA,SAAS;AACP,gBAAA,OAAO,KAAK,CAAC;AACd,aAAA;AACF,SAAA;KACF;AAED;;;;;AAKG;AACH,IAAA,eAAe,CAAC,KAAA,GAAgB,EAAE,EAAE,WAA+B,EAAA;AACjE,QAAA,IAAG,OAAO,WAAW,KAAK,WAAW,IAAI,WAAW,GAAG,CAAC,IAAI,KAAK,KAAK,EAAE,EAAE;YACxE,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;AAC5C,YAAA,OAAO,KAAK,CAAC,MAAM,KAAK,WAAW,GAAG,GAAG,GAAG,GAAG,GAAC,KAAK,CAAC;AACvD,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KACd;AAED;;;AAGG;IACH,MAAM,GAAA;;QACJ,OAAO,QAAO,CAAA,EAAA,GAAA,IAAI,CAAC,YAAY,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,UAAU,CAAA,KAAK,WAAW,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,YAAY,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,UAAU,GAAG,KAAK,CAAC;KACrG;AAED;;;AAGG;IACH,YAAY,GAAA;;QACV,OAAO,CAAA,MAAA,IAAI,CAAC,YAAY,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,SAAS,KAAI,SAAS,CAAC;KAClD;;qHApNU,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,uBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,iICRpC,0oMAuIA,EAAA,MAAA,EAAA,CAAA,07KAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,0CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2DAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,kDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FD/Ha,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBALnC,SAAS;+BACE,qBAAqB,EAAA,QAAA,EAAA,0oMAAA,EAAA,MAAA,EAAA,CAAA,07KAAA,CAAA,EAAA,CAAA;0EAKtB,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,YAAY,EAAA,CAAA;sBAApB,KAAK;;;MEEK,oBAAoB,CAAA;;kHAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;mHAApB,oBAAoB,EAAA,YAAA,EAAA,CAHhB,uBAAuB,CAAA,EAAA,OAAA,EAAA,CAD5B,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,aAAa,CAAA,EAAA,OAAA,EAAA,CAE5D,uBAAuB,CAAA,EAAA,CAAA,CAAA;AAEtB,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,YAJrB,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,aAAa,CAAA,EAAA,CAAA,CAAA;4FAI3D,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,aAAa,CAAC;oBACvE,YAAY,EAAE,CAAC,uBAAuB,CAAC;oBACvC,OAAO,EAAE,CAAC,uBAAuB,CAAC;iBACnC,CAAA;;;ACXD;;AAEG;;;;"}
@@ -0,0 +1,231 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Component, Input, NgModule } from '@angular/core';
3
+ import * as i1 from '@angular/common';
4
+ import { CommonModule } from '@angular/common';
5
+ import * as i2 from '@angular/material/icon';
6
+ import { MatIconModule } from '@angular/material/icon';
7
+ import * as i3 from '@angular/material/tooltip';
8
+ import { MatTooltipModule } from '@angular/material/tooltip';
9
+ import * as i4 from '@angular/material/card';
10
+ import { MatCardModule } from '@angular/material/card';
11
+
12
+ class RuclibTimelineComponent {
13
+ constructor() { }
14
+ /**
15
+ * To get position of the timeline
16
+ * @param position
17
+ * @param index
18
+ * @returns default: left
19
+ */
20
+ getItemPosition(position, index) {
21
+ switch (position) {
22
+ case 'alternate': {
23
+ const layout = this.getLayout();
24
+ if (index % 2 == 0) {
25
+ return layout === 'horizontal' ? 'top' : 'left';
26
+ }
27
+ else {
28
+ return layout === 'horizontal' ? 'bottom' : 'right';
29
+ }
30
+ }
31
+ case 'top':
32
+ return 'top';
33
+ case 'bottom':
34
+ return 'bottom';
35
+ case 'right':
36
+ return 'right';
37
+ case 'left':
38
+ default:
39
+ return 'left';
40
+ }
41
+ }
42
+ /**
43
+ * To get layout of the timeline
44
+ * @param layout
45
+ * @returns default: vertical
46
+ */
47
+ getItemLayout(layout = '') {
48
+ switch (layout) {
49
+ case 'horizontal':
50
+ return 'horizontal';
51
+ case 'vertical':
52
+ default:
53
+ return 'vertical';
54
+ }
55
+ }
56
+ /**
57
+ * To get data from the input
58
+ */
59
+ getData() {
60
+ if (this.rucInputData?.data) {
61
+ this.data = this.rucInputData.data?.sort((a, b) => a?.id - b?.id) || [];
62
+ }
63
+ return typeof this.data !== 'undefined' ? this.data : [];
64
+ }
65
+ /**
66
+ * To get position of the timeline
67
+ * @returns default: left
68
+ */
69
+ getPosition(index = -1) {
70
+ if (index === -1) {
71
+ return this.rucInputData?.position;
72
+ }
73
+ return this.getItemPosition(this.rucInputData?.position || 'left', index); // Provide a default if position is undefined
74
+ }
75
+ /**
76
+ * To get layout of the timeline
77
+ * @returns default: vertical
78
+ */
79
+ getLayout() {
80
+ return this.getItemLayout(this.rucInputData?.layout); // Provide a default if layout is undefined
81
+ }
82
+ /**
83
+ * To get highlight color of the timeline
84
+ * @returns default: undefined
85
+ */
86
+ getHighlightColor() {
87
+ return this.rucInputData?.highlightColor;
88
+ }
89
+ /**
90
+ * To get title font color of the timeline
91
+ * @returns default: undefined
92
+ */
93
+ getTitleColor() {
94
+ return this.rucInputData?.titleFontColor;
95
+ }
96
+ /**
97
+ * To get sub title font color of the timeline
98
+ * @returns default: undefined
99
+ */
100
+ getSubTitleColor() {
101
+ return this.rucInputData?.subTitleFontColor;
102
+ }
103
+ /**
104
+ * To get title font size of the timeline
105
+ * @returns default: undefined
106
+ */
107
+ getTitleFontSize() {
108
+ return this.rucInputData?.titleFontSize;
109
+ }
110
+ /**
111
+ * To get subtitle font size of the timeline
112
+ * @returns default: undefined
113
+ */
114
+ getSubTitleFontSize() {
115
+ return this.rucInputData?.subTitleFontSize;
116
+ }
117
+ /**
118
+ * To get title background color of the timeline
119
+ * @returns default: undefined
120
+ */
121
+ getTitleBackgroundColor() {
122
+ return this.rucInputData?.titleBackgroundColor;
123
+ }
124
+ /**
125
+ * To get subtitle background color of the timeline
126
+ * @returns default: undefined
127
+ */
128
+ getSubTitleBackgroundColor() {
129
+ return this.rucInputData?.subTitleBackgroundColor;
130
+ }
131
+ /**
132
+ * To get max title length of the timeline
133
+ * @returns default: undefined
134
+ */
135
+ getMaxTitleLength() {
136
+ return this.rucInputData?.maxTitleLength;
137
+ }
138
+ /**
139
+ * To get max sub title length of the timeline
140
+ * @returns default: undefined
141
+ */
142
+ getMaxSubtitleLength() {
143
+ return this.rucInputData?.maxSubTitleLength;
144
+ }
145
+ /**
146
+ * To check if the isInfo variable is defined and value is true|false in timeline
147
+ * @returns default: undefined
148
+ */
149
+ isInfo() {
150
+ return this.rucInputData?.isInfo;
151
+ }
152
+ /**
153
+ * To get title in timeline
154
+ * @param title
155
+ * @param key
156
+ * @returns default: title
157
+ */
158
+ getTitle(title = '', key = '') {
159
+ switch (key) {
160
+ case 'title': {
161
+ const checkLength = this.getMaxTitleLength();
162
+ return this.isLengthDefined(title, checkLength);
163
+ }
164
+ case 'subtitle': {
165
+ const checkLength = this.getMaxSubtitleLength();
166
+ return this.isLengthDefined(title, checkLength);
167
+ }
168
+ default: {
169
+ return title;
170
+ }
171
+ }
172
+ }
173
+ /**
174
+ * To check if the length is defined
175
+ * @param title
176
+ * @param checkLength
177
+ * @returns default: title
178
+ */
179
+ isLengthDefined(title = '', checkLength) {
180
+ if (typeof checkLength !== 'undefined' && checkLength > 0 && title !== '') {
181
+ const str = title.substring(0, checkLength);
182
+ return title.length === checkLength ? str : str + '...';
183
+ }
184
+ return title;
185
+ }
186
+ /**
187
+ * To check if the template variable is defined and value is true|false in timeline
188
+ * @returns default: false
189
+ */
190
+ isCard() {
191
+ return typeof this.rucInputData?.isTemplate !== 'undefined' ? this.rucInputData?.isTemplate : false;
192
+ }
193
+ /**
194
+ * To get the color of icon
195
+ * @returns default: false
196
+ */
197
+ getIconColor() {
198
+ return this.rucInputData?.iconColor || 'primary';
199
+ }
200
+ }
201
+ RuclibTimelineComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RuclibTimelineComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
202
+ RuclibTimelineComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: RuclibTimelineComponent, selector: "uxp-ruclib-timeline", inputs: { customTheme: "customTheme", rucInputData: "rucInputData" }, ngImport: i0, template: "<div class={{customTheme}}>\r\n <ul class=\"w-full timeline timeline-{{getPosition()}} timeline-{{getLayout()}}\"\r\n [ngClass]=\"{'timeline-card': !!isCard()}\">\r\n <li class=\"timeline-event\" *ngFor=\"let item of getData(); let i = index\">\r\n <ng-container *ngIf=\"getPosition() === 'opposite' then oppositeTemplate else simpleOppositeTemplate\"></ng-container>\r\n <ng-template #oppositeTemplate>\r\n <div class=\"timeline-event-opposite divya\">\r\n <ng-template *ngIf=\"true then titleTemplate\"></ng-template>\r\n </div>\r\n </ng-template>\r\n <ng-template #simpleOppositeTemplate>\r\n <div class=\"timeline-event-opposite rajput\"></div>\r\n </ng-template>\r\n \r\n <div class=\"timeline-event-separator\">\r\n <div class=\"timeline-event-marker\" [ngClass]=\"{'timeline-event-marker-active': !item.icon}\">\r\n <mat-icon\r\n color=\"{{getIconColor()}}\"\r\n class=\"timeline-icon-circle\"\r\n *ngIf=\"item.icon\"\r\n role=\"img\"\r\n [attr.aria-label]=\"item.iconAriaLabel || item.icon\"\r\n >{{item.icon}}</mat-icon>\r\n </div>\r\n <div class=\"timeline-event-connector\" *ngIf=\"i !== (getData()?.length - 1)\"></div>\r\n </div>\r\n <div class=\"timeline-event-content\" [style.background-color]=\"getHighlightColor()\">\r\n <ng-container *ngIf=\"isCard(); then cardTemplate\"></ng-container>\r\n\r\n <ng-container *ngIf=\"getPosition() === 'opposite' then subtitleTemplate\"></ng-container>\r\n\r\n <ng-container *ngIf=\"(!isCard() && getPosition() !== 'opposite') then dataTemplate\"></ng-container>\r\n \r\n <ng-template #cardTemplate>\r\n <!-- Fot Template -->\r\n <mat-card class=\"m-mat-card\" appearance=\"outlined\">\r\n <mat-card-header>\r\n <mat-card-title-group>\r\n <mat-card-title>{{item.title}}</mat-card-title>\r\n <mat-card-subtitle>{{item.subtitle}}</mat-card-subtitle>\r\n <img\r\n mat-card-lg-image\r\n src=\"{{item.imageUrl}}\"\r\n [alt]=\"item.imageAltText || item.title || 'Timeline event image'\"\r\n >\r\n </mat-card-title-group>\r\n </mat-card-header>\r\n <mat-card-content>\r\n {{item.content}}\r\n </mat-card-content>\r\n </mat-card>\r\n </ng-template>\r\n\r\n <ng-template #dataTemplate>\r\n <ng-template *ngIf=\"true then titleTemplate\"></ng-template>\r\n \r\n <ng-template *ngIf=\"true then subtitleTemplate\"></ng-template>\r\n </ng-template>\r\n\r\n <ng-template #titleTemplate>\r\n <!-- Fot Title -->\r\n <div \r\n class=\"timeline-event-title\"\r\n [ngClass]=\"{'timeline-icon-question-mark-active': !!item.iconTitle}\" \r\n [style.background-color]=\"getTitleBackgroundColor()\"\r\n *ngIf=\"!!item.title\"\r\n >\r\n <span \r\n [ngClass]=\"{'description-ellipsis-active': !!getMaxTitleLength()}\"\r\n [style.color]=\"getTitleColor()\"\r\n [style.font-size]=\"getTitleFontSize()\"\r\n [matTooltipDisabled]=\"!(item?.title && item?.title?.length > getMaxTitleLength())\"\r\n [matTooltip]=\"item.title\"\r\n matTooltipPosition=\"above\">\r\n {{getTitle(item.title, 'title')}}\r\n </span>\r\n <span *ngIf=\"!!item.iconTitle\" class=\"timeline-icon-question-mark\" aria-hidden=\"true\">\r\n <mat-icon\r\n color=\"{{getIconColor()}}\"\r\n class=\"timeline-icon-circle timeline-icon\"\r\n >{{item.iconTitle}}</mat-icon>\r\n </span>\r\n <span *ngIf=\"isInfo()\" class=\"timeline-icon-question-mark\">\r\n <mat-icon\r\n color=\"{{getIconColor()}}\"\r\n class=\"timeline-icon-question-mark-icon\"\r\n [matTooltip]=\"item?.titleInfo\"\r\n matTooltipPosition=\"above\" \r\n role=\"button\" \r\n aria-label=\"More information about title\"\r\n >{{item.titleInfoIcon}}</mat-icon> \r\n </span>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template #subtitleTemplate>\r\n <!-- Fot Sub Title -->\r\n <div\r\n class=\"timeline-event-sub-title\"\r\n [ngClass]=\"{'timeline-icon-question-mark-active': !!item.iconSubTitle}\"\r\n [style.background-color]=\"getSubTitleBackgroundColor()\"\r\n *ngIf=\"!!item.subtitle\"\r\n >\r\n <span \r\n [ngClass]=\"{'description-ellipsis-active': !!getMaxSubtitleLength()}\"\r\n [style.color]=\"getSubTitleColor()\"\r\n [style.font-size]=\"getSubTitleFontSize()\"\r\n [matTooltipDisabled]=\"!(item.subtitle && item.subtitle.length > getMaxSubtitleLength())\"\r\n [matTooltip]=\"item.subtitle\"\r\n matTooltipPosition=\"above\"\r\n >\r\n {{getTitle(item.subtitle, 'subtitle')}}\r\n </span>\r\n <span *ngIf=\"!!item.iconSubTitle\" class=\"timeline-icon-question-mark\" aria-hidden=\"true\">\r\n <mat-icon\r\n color=\"{{getIconColor()}}\"\r\n class=\"timeline-icon-circle timeline-icon\"\r\n >{{item.iconSubTitle}}</mat-icon>\r\n </span>\r\n <span *ngIf=\"isInfo()\" class=\"timeline-icon-question-mark\">\r\n <mat-icon\r\n color=\"{{getIconColor()}}\"\r\n class=\"timeline-icon-question-mark-icon\"\r\n [matTooltip]=\"item?.subTitleInfo\"\r\n matTooltipPosition=\"above\" \r\n role=\"button\"\r\n aria-label=\"More information about subtitle\"\r\n >{{item.subTitleInfoIcon}}</mat-icon>\r\n </span>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </li>\r\n </ul>\r\n</div>\r\n", styles: ["*,:before,:after{box-sizing:border-box}.timeline{display:flex;flex-grow:1;flex-direction:column;direction:ltr}.timeline.w-full{max-width:800px;margin:auto}.timeline.timeline-vertical .timeline-event{display:flex;position:relative}.timeline.timeline-vertical .timeline-event:last-child{min-height:0;margin-bottom:0}.timeline.timeline-vertical .timeline-event-connector{width:2px;min-height:30px}.timeline.timeline-vertical .timeline-event-opposite,.timeline.timeline-vertical .timeline-event-content{padding:0 .5rem}.timeline.timeline-vertical.timeline-left .timeline-event-opposite{text-align:right}.timeline.timeline-vertical.timeline-left .timeline-event-content{text-align:left}.timeline.timeline-vertical.timeline-left .timeline-icon-question-mark{padding:0 .375rem}.timeline.timeline-vertical.timeline-left .timeline-icon-question-mark-active{padding:.375rem 0;justify-content:start!important}.timeline.timeline-vertical.timeline-right .timeline-event{flex-direction:row-reverse}.timeline.timeline-vertical.timeline-right .timeline-event-opposite,.timeline.timeline-vertical.timeline-right.timeline-card .timeline-event-content{text-align:left}.timeline.timeline-vertical.timeline-right .timeline-event-content{text-align:right}.timeline.timeline-vertical.timeline-right .timeline-icon-question-mark{padding-right:1.5rem}.timeline.timeline-vertical.timeline-alternate .timeline-event:nth-child(odd) .timeline-event-opposite{text-align:right}.timeline.timeline-vertical.timeline-alternate .timeline-event:nth-child(odd) .timeline-event-content{text-align:left}.timeline.timeline-vertical.timeline-alternate .timeline-event:nth-child(odd) .timeline-icon-question-mark-active{justify-content:start!important}.timeline.timeline-vertical.timeline-alternate .timeline-event:nth-child(even){flex-direction:row-reverse}.timeline.timeline-vertical.timeline-alternate .timeline-event:nth-child(even) .timeline-event-opposite{text-align:left}.timeline.timeline-vertical.timeline-alternate .timeline-event:nth-child(even) .timeline-event-content{text-align:right}.timeline.timeline-vertical.timeline-alternate .timeline-event .timeline-icon-question-mark{padding-right:1.5rem}.timeline.timeline-vertical.timeline-alternate.timeline-card .timeline-event .timeline-event-content{text-align:left}.timeline.timeline-vertical.timeline-opposite .timeline-event-opposite{display:flex;justify-content:flex-end;align-items:normal}.timeline.timeline-horizontal{flex-direction:row}.timeline.timeline-horizontal .timeline-event{display:flex;position:relative;flex-direction:column;flex:1}.timeline.timeline-horizontal .timeline-event-connector{width:100%;height:2px}.timeline.timeline-horizontal.timeline-top .timeline-icon-question-mark{padding-right:1.5rem}.timeline.timeline-horizontal.timeline-bottom .timeline-event{flex-direction:column-reverse}.timeline.timeline-horizontal.timeline-bottom .timeline-icon-question-mark{padding-right:1.5rem}.timeline.timeline-horizontal.timeline-alternate{min-height:29vh}.timeline.timeline-horizontal.timeline-alternate.timeline-card{white-space:nowrap;min-height:45vh;flex:1}.timeline.timeline-horizontal.timeline-alternate .timeline-event{min-height:calc(100% - 80px)}.timeline.timeline-horizontal.timeline-alternate .timeline-event:nth-child(even){flex-direction:column-reverse}.timeline.timeline-horizontal.timeline-alternate .timeline-event-opposite{flex:1}.timeline.timeline-horizontal.timeline-alternate .timeline-icon-question-mark{padding-right:1.5rem}.timeline.timeline-horizontal .timeline-event-content{margin-bottom:auto;padding-left:1px;margin-right:8px;padding:1rem 0}.timeline.timeline-horizontal .timeline-event-content .timeline-icon-question-mark-active{padding:.375rem 0;justify-content:start}.timeline.timeline-horizontal .timeline-event-opposite{flex:0;padding:1rem 0}.timeline.timeline-horizontal .timeline-event-separator{flex-direction:row}.timeline .timeline-event-separator{flex:0;display:flex;align-items:center;flex-direction:column}.timeline .timeline-event-separator .timeline-event-marker{display:inline-flex;align-items:center;justify-content:center;position:relative;align-self:baseline;border-width:2px;border-style:solid;border-color:#e2e8f0;border-radius:50%;width:25px;height:25px}.timeline .timeline-event-separator .timeline-event-marker:after{content:\" \";position:absolute;width:100%;height:100%;border-radius:50%}.timeline .timeline-event-separator .timeline-event-marker.timeline-event-marker-active:before{content:\" \";border-radius:50%;width:.375rem;height:.375rem;background:#ccc}.timeline .timeline-event-separator .timeline-event-connector{flex-grow:1;background:#e2e8f0}.timeline .timeline-event-opposite{line-height:1;flex:1}.timeline .timeline-event-content{flex:1;margin-bottom:10px;line-height:1}.timeline .timeline-event-content .m-mat-card{max-width:400px;margin-bottom:8px}.timeline .timeline-event-content .timeline-event-title{padding:.375rem 0}.timeline .timeline-event-content .timeline-event-sub-title{padding:.125rem .15rem}.timeline .timeline-event-content .timeline-icon-question-mark-active{padding:.375rem 0;display:flex;align-items:normal;justify-content:end}.timeline .timeline-icon-circle{position:absolute;border-radius:50%;font-size:var(--timeline-icon-glyph-size)!important;display:flex;align-items:center;justify-content:center;z-index:1;box-sizing:border-box}.timeline .timeline-icon{align-items:normal}.timeline .timeline-icon-question-mark-icon{position:absolute;font-size:var(--timeline-icon-glyph-size)!important;align-items:normal;justify-content:center}\n"], dependencies: [{ 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: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i4.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i4.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i4.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i4.MatCardLgImage, selector: "[mat-card-lg-image], [matCardImageLarge]" }, { kind: "directive", type: i4.MatCardSubtitle, selector: "mat-card-subtitle, [mat-card-subtitle], [matCardSubtitle]" }, { kind: "directive", type: i4.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "component", type: i4.MatCardTitleGroup, selector: "mat-card-title-group" }] });
203
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RuclibTimelineComponent, decorators: [{
204
+ type: Component,
205
+ args: [{ selector: 'uxp-ruclib-timeline', template: "<div class={{customTheme}}>\r\n <ul class=\"w-full timeline timeline-{{getPosition()}} timeline-{{getLayout()}}\"\r\n [ngClass]=\"{'timeline-card': !!isCard()}\">\r\n <li class=\"timeline-event\" *ngFor=\"let item of getData(); let i = index\">\r\n <ng-container *ngIf=\"getPosition() === 'opposite' then oppositeTemplate else simpleOppositeTemplate\"></ng-container>\r\n <ng-template #oppositeTemplate>\r\n <div class=\"timeline-event-opposite divya\">\r\n <ng-template *ngIf=\"true then titleTemplate\"></ng-template>\r\n </div>\r\n </ng-template>\r\n <ng-template #simpleOppositeTemplate>\r\n <div class=\"timeline-event-opposite rajput\"></div>\r\n </ng-template>\r\n \r\n <div class=\"timeline-event-separator\">\r\n <div class=\"timeline-event-marker\" [ngClass]=\"{'timeline-event-marker-active': !item.icon}\">\r\n <mat-icon\r\n color=\"{{getIconColor()}}\"\r\n class=\"timeline-icon-circle\"\r\n *ngIf=\"item.icon\"\r\n role=\"img\"\r\n [attr.aria-label]=\"item.iconAriaLabel || item.icon\"\r\n >{{item.icon}}</mat-icon>\r\n </div>\r\n <div class=\"timeline-event-connector\" *ngIf=\"i !== (getData()?.length - 1)\"></div>\r\n </div>\r\n <div class=\"timeline-event-content\" [style.background-color]=\"getHighlightColor()\">\r\n <ng-container *ngIf=\"isCard(); then cardTemplate\"></ng-container>\r\n\r\n <ng-container *ngIf=\"getPosition() === 'opposite' then subtitleTemplate\"></ng-container>\r\n\r\n <ng-container *ngIf=\"(!isCard() && getPosition() !== 'opposite') then dataTemplate\"></ng-container>\r\n \r\n <ng-template #cardTemplate>\r\n <!-- Fot Template -->\r\n <mat-card class=\"m-mat-card\" appearance=\"outlined\">\r\n <mat-card-header>\r\n <mat-card-title-group>\r\n <mat-card-title>{{item.title}}</mat-card-title>\r\n <mat-card-subtitle>{{item.subtitle}}</mat-card-subtitle>\r\n <img\r\n mat-card-lg-image\r\n src=\"{{item.imageUrl}}\"\r\n [alt]=\"item.imageAltText || item.title || 'Timeline event image'\"\r\n >\r\n </mat-card-title-group>\r\n </mat-card-header>\r\n <mat-card-content>\r\n {{item.content}}\r\n </mat-card-content>\r\n </mat-card>\r\n </ng-template>\r\n\r\n <ng-template #dataTemplate>\r\n <ng-template *ngIf=\"true then titleTemplate\"></ng-template>\r\n \r\n <ng-template *ngIf=\"true then subtitleTemplate\"></ng-template>\r\n </ng-template>\r\n\r\n <ng-template #titleTemplate>\r\n <!-- Fot Title -->\r\n <div \r\n class=\"timeline-event-title\"\r\n [ngClass]=\"{'timeline-icon-question-mark-active': !!item.iconTitle}\" \r\n [style.background-color]=\"getTitleBackgroundColor()\"\r\n *ngIf=\"!!item.title\"\r\n >\r\n <span \r\n [ngClass]=\"{'description-ellipsis-active': !!getMaxTitleLength()}\"\r\n [style.color]=\"getTitleColor()\"\r\n [style.font-size]=\"getTitleFontSize()\"\r\n [matTooltipDisabled]=\"!(item?.title && item?.title?.length > getMaxTitleLength())\"\r\n [matTooltip]=\"item.title\"\r\n matTooltipPosition=\"above\">\r\n {{getTitle(item.title, 'title')}}\r\n </span>\r\n <span *ngIf=\"!!item.iconTitle\" class=\"timeline-icon-question-mark\" aria-hidden=\"true\">\r\n <mat-icon\r\n color=\"{{getIconColor()}}\"\r\n class=\"timeline-icon-circle timeline-icon\"\r\n >{{item.iconTitle}}</mat-icon>\r\n </span>\r\n <span *ngIf=\"isInfo()\" class=\"timeline-icon-question-mark\">\r\n <mat-icon\r\n color=\"{{getIconColor()}}\"\r\n class=\"timeline-icon-question-mark-icon\"\r\n [matTooltip]=\"item?.titleInfo\"\r\n matTooltipPosition=\"above\" \r\n role=\"button\" \r\n aria-label=\"More information about title\"\r\n >{{item.titleInfoIcon}}</mat-icon> \r\n </span>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template #subtitleTemplate>\r\n <!-- Fot Sub Title -->\r\n <div\r\n class=\"timeline-event-sub-title\"\r\n [ngClass]=\"{'timeline-icon-question-mark-active': !!item.iconSubTitle}\"\r\n [style.background-color]=\"getSubTitleBackgroundColor()\"\r\n *ngIf=\"!!item.subtitle\"\r\n >\r\n <span \r\n [ngClass]=\"{'description-ellipsis-active': !!getMaxSubtitleLength()}\"\r\n [style.color]=\"getSubTitleColor()\"\r\n [style.font-size]=\"getSubTitleFontSize()\"\r\n [matTooltipDisabled]=\"!(item.subtitle && item.subtitle.length > getMaxSubtitleLength())\"\r\n [matTooltip]=\"item.subtitle\"\r\n matTooltipPosition=\"above\"\r\n >\r\n {{getTitle(item.subtitle, 'subtitle')}}\r\n </span>\r\n <span *ngIf=\"!!item.iconSubTitle\" class=\"timeline-icon-question-mark\" aria-hidden=\"true\">\r\n <mat-icon\r\n color=\"{{getIconColor()}}\"\r\n class=\"timeline-icon-circle timeline-icon\"\r\n >{{item.iconSubTitle}}</mat-icon>\r\n </span>\r\n <span *ngIf=\"isInfo()\" class=\"timeline-icon-question-mark\">\r\n <mat-icon\r\n color=\"{{getIconColor()}}\"\r\n class=\"timeline-icon-question-mark-icon\"\r\n [matTooltip]=\"item?.subTitleInfo\"\r\n matTooltipPosition=\"above\" \r\n role=\"button\"\r\n aria-label=\"More information about subtitle\"\r\n >{{item.subTitleInfoIcon}}</mat-icon>\r\n </span>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </li>\r\n </ul>\r\n</div>\r\n", styles: ["*,:before,:after{box-sizing:border-box}.timeline{display:flex;flex-grow:1;flex-direction:column;direction:ltr}.timeline.w-full{max-width:800px;margin:auto}.timeline.timeline-vertical .timeline-event{display:flex;position:relative}.timeline.timeline-vertical .timeline-event:last-child{min-height:0;margin-bottom:0}.timeline.timeline-vertical .timeline-event-connector{width:2px;min-height:30px}.timeline.timeline-vertical .timeline-event-opposite,.timeline.timeline-vertical .timeline-event-content{padding:0 .5rem}.timeline.timeline-vertical.timeline-left .timeline-event-opposite{text-align:right}.timeline.timeline-vertical.timeline-left .timeline-event-content{text-align:left}.timeline.timeline-vertical.timeline-left .timeline-icon-question-mark{padding:0 .375rem}.timeline.timeline-vertical.timeline-left .timeline-icon-question-mark-active{padding:.375rem 0;justify-content:start!important}.timeline.timeline-vertical.timeline-right .timeline-event{flex-direction:row-reverse}.timeline.timeline-vertical.timeline-right .timeline-event-opposite,.timeline.timeline-vertical.timeline-right.timeline-card .timeline-event-content{text-align:left}.timeline.timeline-vertical.timeline-right .timeline-event-content{text-align:right}.timeline.timeline-vertical.timeline-right .timeline-icon-question-mark{padding-right:1.5rem}.timeline.timeline-vertical.timeline-alternate .timeline-event:nth-child(odd) .timeline-event-opposite{text-align:right}.timeline.timeline-vertical.timeline-alternate .timeline-event:nth-child(odd) .timeline-event-content{text-align:left}.timeline.timeline-vertical.timeline-alternate .timeline-event:nth-child(odd) .timeline-icon-question-mark-active{justify-content:start!important}.timeline.timeline-vertical.timeline-alternate .timeline-event:nth-child(even){flex-direction:row-reverse}.timeline.timeline-vertical.timeline-alternate .timeline-event:nth-child(even) .timeline-event-opposite{text-align:left}.timeline.timeline-vertical.timeline-alternate .timeline-event:nth-child(even) .timeline-event-content{text-align:right}.timeline.timeline-vertical.timeline-alternate .timeline-event .timeline-icon-question-mark{padding-right:1.5rem}.timeline.timeline-vertical.timeline-alternate.timeline-card .timeline-event .timeline-event-content{text-align:left}.timeline.timeline-vertical.timeline-opposite .timeline-event-opposite{display:flex;justify-content:flex-end;align-items:normal}.timeline.timeline-horizontal{flex-direction:row}.timeline.timeline-horizontal .timeline-event{display:flex;position:relative;flex-direction:column;flex:1}.timeline.timeline-horizontal .timeline-event-connector{width:100%;height:2px}.timeline.timeline-horizontal.timeline-top .timeline-icon-question-mark{padding-right:1.5rem}.timeline.timeline-horizontal.timeline-bottom .timeline-event{flex-direction:column-reverse}.timeline.timeline-horizontal.timeline-bottom .timeline-icon-question-mark{padding-right:1.5rem}.timeline.timeline-horizontal.timeline-alternate{min-height:29vh}.timeline.timeline-horizontal.timeline-alternate.timeline-card{white-space:nowrap;min-height:45vh;flex:1}.timeline.timeline-horizontal.timeline-alternate .timeline-event{min-height:calc(100% - 80px)}.timeline.timeline-horizontal.timeline-alternate .timeline-event:nth-child(even){flex-direction:column-reverse}.timeline.timeline-horizontal.timeline-alternate .timeline-event-opposite{flex:1}.timeline.timeline-horizontal.timeline-alternate .timeline-icon-question-mark{padding-right:1.5rem}.timeline.timeline-horizontal .timeline-event-content{margin-bottom:auto;padding-left:1px;margin-right:8px;padding:1rem 0}.timeline.timeline-horizontal .timeline-event-content .timeline-icon-question-mark-active{padding:.375rem 0;justify-content:start}.timeline.timeline-horizontal .timeline-event-opposite{flex:0;padding:1rem 0}.timeline.timeline-horizontal .timeline-event-separator{flex-direction:row}.timeline .timeline-event-separator{flex:0;display:flex;align-items:center;flex-direction:column}.timeline .timeline-event-separator .timeline-event-marker{display:inline-flex;align-items:center;justify-content:center;position:relative;align-self:baseline;border-width:2px;border-style:solid;border-color:#e2e8f0;border-radius:50%;width:25px;height:25px}.timeline .timeline-event-separator .timeline-event-marker:after{content:\" \";position:absolute;width:100%;height:100%;border-radius:50%}.timeline .timeline-event-separator .timeline-event-marker.timeline-event-marker-active:before{content:\" \";border-radius:50%;width:.375rem;height:.375rem;background:#ccc}.timeline .timeline-event-separator .timeline-event-connector{flex-grow:1;background:#e2e8f0}.timeline .timeline-event-opposite{line-height:1;flex:1}.timeline .timeline-event-content{flex:1;margin-bottom:10px;line-height:1}.timeline .timeline-event-content .m-mat-card{max-width:400px;margin-bottom:8px}.timeline .timeline-event-content .timeline-event-title{padding:.375rem 0}.timeline .timeline-event-content .timeline-event-sub-title{padding:.125rem .15rem}.timeline .timeline-event-content .timeline-icon-question-mark-active{padding:.375rem 0;display:flex;align-items:normal;justify-content:end}.timeline .timeline-icon-circle{position:absolute;border-radius:50%;font-size:var(--timeline-icon-glyph-size)!important;display:flex;align-items:center;justify-content:center;z-index:1;box-sizing:border-box}.timeline .timeline-icon{align-items:normal}.timeline .timeline-icon-question-mark-icon{position:absolute;font-size:var(--timeline-icon-glyph-size)!important;align-items:normal;justify-content:center}\n"] }]
206
+ }], ctorParameters: function () { return []; }, propDecorators: { customTheme: [{
207
+ type: Input
208
+ }], rucInputData: [{
209
+ type: Input
210
+ }] } });
211
+
212
+ class RuclibTimelineModule {
213
+ }
214
+ RuclibTimelineModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RuclibTimelineModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
215
+ RuclibTimelineModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: RuclibTimelineModule, declarations: [RuclibTimelineComponent], imports: [CommonModule, MatIconModule, MatTooltipModule, MatCardModule], exports: [RuclibTimelineComponent] });
216
+ RuclibTimelineModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RuclibTimelineModule, imports: [CommonModule, MatIconModule, MatTooltipModule, MatCardModule] });
217
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: RuclibTimelineModule, decorators: [{
218
+ type: NgModule,
219
+ args: [{
220
+ imports: [CommonModule, MatIconModule, MatTooltipModule, MatCardModule],
221
+ declarations: [RuclibTimelineComponent],
222
+ exports: [RuclibTimelineComponent],
223
+ }]
224
+ }] });
225
+
226
+ /**
227
+ * Generated bundle index. Do not edit.
228
+ */
229
+
230
+ export { RuclibTimelineComponent, RuclibTimelineModule };
231
+ //# sourceMappingURL=ruc-lib-timeline.mjs.map