@naniteninja/dashboard-components-lib 2.0.2 → 2.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/naniteninja-dashboard-components-lib.mjs +1158 -943
- package/fesm2022/naniteninja-dashboard-components-lib.mjs.map +1 -1
- package/index.d.ts +993 -894
- package/{naniteninja-dashboard-components-lib-2.0.2.tgz → naniteninja-dashboard-components-lib-2.0.4.tgz} +0 -0
- package/package.json +4 -17
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
import * as i1 from '@angular/common';
|
|
2
2
|
import { CommonModule, formatDate, formatNumber } from '@angular/common';
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
|
-
import { EventEmitter, Output, Input, ViewChild, Optional, Inject, Component,
|
|
4
|
+
import { EventEmitter, Output, Input, ViewChild, Optional, Inject, Component, ChangeDetectionStrategy, NgModule, LOCALE_ID, Injectable, Pipe, inject, ChangeDetectorRef, ElementRef, Renderer2, InjectionToken, NgZone, ViewEncapsulation, ContentChild, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
|
|
5
5
|
import { MatButtonModule } from '@angular/material/button';
|
|
6
6
|
import { MatMenuModule } from '@angular/material/menu';
|
|
7
|
-
import * as
|
|
7
|
+
import * as i1$1 from '@ngx-translate/core';
|
|
8
8
|
import { TranslateModule } from '@ngx-translate/core';
|
|
9
|
-
import { interval, take, takeUntil, Subject, map, debounceTime, distinctUntilChanged, switchMap, first, BehaviorSubject, animationFrameScheduler, defer, finalize, shareReplay, from, concatMap, Observable
|
|
9
|
+
import { interval, take, takeUntil, Subject, map, debounceTime, distinctUntilChanged, switchMap, first, of, BehaviorSubject, animationFrameScheduler, defer, finalize, shareReplay, from, concatMap, Observable } from 'rxjs';
|
|
10
10
|
import * as i2 from '@naniteninja/ionic-lib';
|
|
11
|
-
import { MODAL_DATA, BaseCardModule, ButtonsModule, PopperModule, LibModalComponent,
|
|
11
|
+
import { MODAL_DATA, BaseCardModule, ButtonsModule, PopperModule, LibModalComponent, DirectiveModule, AvatarComponent, InputFieldModule, FormFieldModule, BaseComponent, DateRangeValidator, TimeRangeValidator, LibMapModule, DashedCheckboxModule, InputDateFieldModule, InputFieldSelectModule, InputTimeFieldModule, LibModalModule, LibErrorMessageComponent, SectionSeparatorComponent, FormFieldType as FormFieldType$1, PopupModalService, ToggleModule, ImageCardModule, PipeModule } from '@naniteninja/ionic-lib';
|
|
12
12
|
import { trigger, transition, style, query, sequence, animate, stagger } from '@angular/animations';
|
|
13
|
-
import * as i1$1 from '@angular/forms';
|
|
14
|
-
import { FormControl, ReactiveFormsModule, FormsModule, Validators, FormGroup, NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
15
13
|
import { addDays, set, isSameDay, getHours, isEqual, startOfDay, isBefore, isSameWeek, getDay, differenceInMinutes, getMinutes, addMinutes, endOfDay } from 'date-fns';
|
|
16
14
|
import * as i2$1 from '@ionic/angular';
|
|
17
15
|
import { IonicModule } from '@ionic/angular';
|
|
16
|
+
import * as i1$2 from '@angular/forms';
|
|
17
|
+
import { FormControl, FormsModule, ReactiveFormsModule, Validators, FormGroup, NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
18
18
|
import { RRule } from 'rrule';
|
|
19
19
|
import { Weekday } from 'rrule/dist/esm/weekday';
|
|
20
20
|
import * as i4 from '@angular/material/icon';
|
|
@@ -33,6 +33,221 @@ import { TraitVisualComponent } from '@naniteninja/trait-visual';
|
|
|
33
33
|
import { register } from 'swiper/element/bundle';
|
|
34
34
|
import moment from 'moment';
|
|
35
35
|
|
|
36
|
+
var AgendaItemType;
|
|
37
|
+
(function (AgendaItemType) {
|
|
38
|
+
AgendaItemType["DAY"] = "day";
|
|
39
|
+
AgendaItemType["AD"] = "ad";
|
|
40
|
+
})(AgendaItemType || (AgendaItemType = {}));
|
|
41
|
+
|
|
42
|
+
var AlertStatusFields;
|
|
43
|
+
(function (AlertStatusFields) {
|
|
44
|
+
AlertStatusFields["upcomingDates"] = "upcomingDates";
|
|
45
|
+
AlertStatusFields["compatibilityProfileTrait"] = "compatibilityProfileTrait";
|
|
46
|
+
AlertStatusFields["compatibilityProfileSpider"] = "compatibilityProfileSpider";
|
|
47
|
+
AlertStatusFields["chatHandoff"] = "chatHandoff";
|
|
48
|
+
AlertStatusFields["chatProgress"] = "chatProgress";
|
|
49
|
+
AlertStatusFields["chatMeetupAgenda"] = "chatMeetupAgenda";
|
|
50
|
+
AlertStatusFields["face"] = "face";
|
|
51
|
+
})(AlertStatusFields || (AlertStatusFields = {}));
|
|
52
|
+
|
|
53
|
+
var AutoDelegationEventTypes;
|
|
54
|
+
(function (AutoDelegationEventTypes) {
|
|
55
|
+
AutoDelegationEventTypes["Click"] = "click";
|
|
56
|
+
AutoDelegationEventTypes["Countdown"] = "countdown";
|
|
57
|
+
})(AutoDelegationEventTypes || (AutoDelegationEventTypes = {}));
|
|
58
|
+
|
|
59
|
+
var AutoDelegationEventValue;
|
|
60
|
+
(function (AutoDelegationEventValue) {
|
|
61
|
+
AutoDelegationEventValue["CountdownCompleted"] = "countdown-completed";
|
|
62
|
+
AutoDelegationEventValue["RequestRejected"] = "request-rejected";
|
|
63
|
+
AutoDelegationEventValue["RequestAcceped"] = "request-accepted";
|
|
64
|
+
})(AutoDelegationEventValue || (AutoDelegationEventValue = {}));
|
|
65
|
+
|
|
66
|
+
var CalendarAccountEnum;
|
|
67
|
+
(function (CalendarAccountEnum) {
|
|
68
|
+
CalendarAccountEnum["GOOGLE"] = "Google";
|
|
69
|
+
CalendarAccountEnum["MICROSOFT"] = "Microsoft";
|
|
70
|
+
})(CalendarAccountEnum || (CalendarAccountEnum = {}));
|
|
71
|
+
|
|
72
|
+
var CalendarAccountIconsEnum;
|
|
73
|
+
(function (CalendarAccountIconsEnum) {
|
|
74
|
+
CalendarAccountIconsEnum["Google"] = "googleCalender";
|
|
75
|
+
CalendarAccountIconsEnum["Microsoft"] = "microsoft";
|
|
76
|
+
})(CalendarAccountIconsEnum || (CalendarAccountIconsEnum = {}));
|
|
77
|
+
|
|
78
|
+
var CircleVariable;
|
|
79
|
+
(function (CircleVariable) {
|
|
80
|
+
CircleVariable["Partial"] = "partial";
|
|
81
|
+
CircleVariable["Complete"] = "complete";
|
|
82
|
+
})(CircleVariable || (CircleVariable = {}));
|
|
83
|
+
|
|
84
|
+
var ClientDashboardTabs;
|
|
85
|
+
(function (ClientDashboardTabs) {
|
|
86
|
+
ClientDashboardTabs[ClientDashboardTabs["ChatScheduler"] = 0] = "ChatScheduler";
|
|
87
|
+
ClientDashboardTabs[ClientDashboardTabs["ChatCompatibility"] = 1] = "ChatCompatibility";
|
|
88
|
+
ClientDashboardTabs[ClientDashboardTabs["ChatHandoff"] = 2] = "ChatHandoff";
|
|
89
|
+
})(ClientDashboardTabs || (ClientDashboardTabs = {}));
|
|
90
|
+
|
|
91
|
+
var ClientHomeComponent;
|
|
92
|
+
(function (ClientHomeComponent) {
|
|
93
|
+
ClientHomeComponent["ChatCompatibility"] = "ChatCompatibility";
|
|
94
|
+
ClientHomeComponent["ChatHandoff"] = "ChatHandoff";
|
|
95
|
+
ClientHomeComponent["ChatScheduler"] = "ChatScheduler";
|
|
96
|
+
ClientHomeComponent["ClientMatchSpiderChart"] = "ClientMatchSpiderChart";
|
|
97
|
+
ClientHomeComponent["ClientMatchTraitChart"] = "ClientMatchTraitChart";
|
|
98
|
+
})(ClientHomeComponent || (ClientHomeComponent = {}));
|
|
99
|
+
|
|
100
|
+
var CONVERSATION_FLAG;
|
|
101
|
+
(function (CONVERSATION_FLAG) {
|
|
102
|
+
CONVERSATION_FLAG["UNRESPONSIVE"] = "unresponsive";
|
|
103
|
+
CONVERSATION_FLAG["REDELEGATION"] = "redelegation";
|
|
104
|
+
})(CONVERSATION_FLAG || (CONVERSATION_FLAG = {}));
|
|
105
|
+
|
|
106
|
+
var COUNTER_FLAG_BASE;
|
|
107
|
+
(function (COUNTER_FLAG_BASE) {
|
|
108
|
+
COUNTER_FLAG_BASE["StartConversation"] = "startConversation";
|
|
109
|
+
COUNTER_FLAG_BASE["LastResponse"] = "lastResponse";
|
|
110
|
+
})(COUNTER_FLAG_BASE || (COUNTER_FLAG_BASE = {}));
|
|
111
|
+
|
|
112
|
+
var Direction;
|
|
113
|
+
(function (Direction) {
|
|
114
|
+
Direction["horizontal"] = "horizontal";
|
|
115
|
+
Direction["vertical"] = "vertical";
|
|
116
|
+
})(Direction || (Direction = {}));
|
|
117
|
+
|
|
118
|
+
var EventTypes;
|
|
119
|
+
(function (EventTypes) {
|
|
120
|
+
EventTypes["DATE"] = "Date";
|
|
121
|
+
EventTypes["GOOGLE"] = "Google";
|
|
122
|
+
EventTypes["MICROSOFT"] = "Microsoft";
|
|
123
|
+
EventTypes["SYSTEM"] = "System";
|
|
124
|
+
EventTypes["USER"] = "User";
|
|
125
|
+
EventTypes["ITINERARY"] = "Itinerary";
|
|
126
|
+
})(EventTypes || (EventTypes = {}));
|
|
127
|
+
|
|
128
|
+
var FormFieldType;
|
|
129
|
+
(function (FormFieldType) {
|
|
130
|
+
FormFieldType["date"] = "date";
|
|
131
|
+
FormFieldType["text"] = "text";
|
|
132
|
+
FormFieldType["textarea"] = "textarea";
|
|
133
|
+
FormFieldType["typeahead"] = "typeahead";
|
|
134
|
+
FormFieldType["multiselect"] = "multiselect";
|
|
135
|
+
FormFieldType["select"] = "select";
|
|
136
|
+
FormFieldType["checkbox"] = "checkbox";
|
|
137
|
+
FormFieldType["toggle"] = "toggle";
|
|
138
|
+
FormFieldType["radio"] = "radio";
|
|
139
|
+
FormFieldType["textlist"] = "textlist";
|
|
140
|
+
FormFieldType["number"] = "number";
|
|
141
|
+
FormFieldType["message"] = "message";
|
|
142
|
+
FormFieldType["time"] = "time";
|
|
143
|
+
FormFieldType["multifield"] = "multifield";
|
|
144
|
+
FormFieldType["action"] = "action";
|
|
145
|
+
FormFieldType["currency"] = "currency";
|
|
146
|
+
FormFieldType["banner"] = "banner";
|
|
147
|
+
FormFieldType["percentage"] = "percentage";
|
|
148
|
+
FormFieldType["multiselectdropdown"] = "multiselectdropdown";
|
|
149
|
+
FormFieldType["hyperlink"] = "hyperlink";
|
|
150
|
+
FormFieldType["injectable"] = "injectable";
|
|
151
|
+
FormFieldType["datetime"] = "datetime";
|
|
152
|
+
FormFieldType["rating"] = "rating";
|
|
153
|
+
FormFieldType["incrementer"] = "incrementer";
|
|
154
|
+
FormFieldType["range"] = "range";
|
|
155
|
+
FormFieldType["password"] = "password";
|
|
156
|
+
})(FormFieldType || (FormFieldType = {}));
|
|
157
|
+
|
|
158
|
+
var HandoffPanelVersion;
|
|
159
|
+
(function (HandoffPanelVersion) {
|
|
160
|
+
HandoffPanelVersion["STANDARD"] = "standard";
|
|
161
|
+
HandoffPanelVersion["PRO"] = "pro";
|
|
162
|
+
HandoffPanelVersion["SUPER"] = "super";
|
|
163
|
+
})(HandoffPanelVersion || (HandoffPanelVersion = {}));
|
|
164
|
+
|
|
165
|
+
var INNER_CIRCLE_STATE;
|
|
166
|
+
(function (INNER_CIRCLE_STATE) {
|
|
167
|
+
INNER_CIRCLE_STATE["Waiting"] = "waiting";
|
|
168
|
+
INNER_CIRCLE_STATE["Quiet"] = "quiet";
|
|
169
|
+
INNER_CIRCLE_STATE["Unresponsive"] = "unresponsive";
|
|
170
|
+
INNER_CIRCLE_STATE["Redelegation"] = "redelegation";
|
|
171
|
+
})(INNER_CIRCLE_STATE || (INNER_CIRCLE_STATE = {}));
|
|
172
|
+
|
|
173
|
+
var LocalStorageKeys;
|
|
174
|
+
(function (LocalStorageKeys) {
|
|
175
|
+
LocalStorageKeys["LongPressForSendImmediately"] = "longPressForSendImmediately";
|
|
176
|
+
})(LocalStorageKeys || (LocalStorageKeys = {}));
|
|
177
|
+
|
|
178
|
+
var MatcherStatuses;
|
|
179
|
+
(function (MatcherStatuses) {
|
|
180
|
+
MatcherStatuses["STATUS0"] = "no contact";
|
|
181
|
+
MatcherStatuses["STATUS1"] = "1st exchange";
|
|
182
|
+
MatcherStatuses["STATUS2"] = "2nd exchange";
|
|
183
|
+
MatcherStatuses["STATUS3"] = "3rd exchange";
|
|
184
|
+
MatcherStatuses["STATUS4"] = "2+ laughs";
|
|
185
|
+
MatcherStatuses["STATUS5"] = "idea signalled";
|
|
186
|
+
MatcherStatuses["STATUS6"] = "alt contact";
|
|
187
|
+
MatcherStatuses["STATUS7"] = "any romance";
|
|
188
|
+
MatcherStatuses["STATUS8"] = "locale confirmed";
|
|
189
|
+
MatcherStatuses["STATUS9"] = "time confirmed";
|
|
190
|
+
MatcherStatuses["STATUS10"] = "all followup";
|
|
191
|
+
})(MatcherStatuses || (MatcherStatuses = {}));
|
|
192
|
+
|
|
193
|
+
var EditRecurringEventOptions;
|
|
194
|
+
(function (EditRecurringEventOptions) {
|
|
195
|
+
EditRecurringEventOptions["CURRENT"] = "CURRENT";
|
|
196
|
+
EditRecurringEventOptions["FOLLOWING"] = "FOLLOWING";
|
|
197
|
+
EditRecurringEventOptions["ALL"] = "ALL";
|
|
198
|
+
})(EditRecurringEventOptions || (EditRecurringEventOptions = {}));
|
|
199
|
+
|
|
200
|
+
var RecurringTypes;
|
|
201
|
+
(function (RecurringTypes) {
|
|
202
|
+
RecurringTypes["DAILY"] = "DAILY";
|
|
203
|
+
RecurringTypes["WEEKLY"] = "WEEKLY";
|
|
204
|
+
RecurringTypes["MONTHLY"] = "MONTHLY";
|
|
205
|
+
RecurringTypes["ANNUALLY"] = "ANNUALLY";
|
|
206
|
+
})(RecurringTypes || (RecurringTypes = {}));
|
|
207
|
+
|
|
208
|
+
var ScheduleDateStatus;
|
|
209
|
+
(function (ScheduleDateStatus) {
|
|
210
|
+
ScheduleDateStatus["Suggested"] = "suggested";
|
|
211
|
+
ScheduleDateStatus["Canceled"] = "canceled";
|
|
212
|
+
ScheduleDateStatus["Pending"] = "pending";
|
|
213
|
+
})(ScheduleDateStatus || (ScheduleDateStatus = {}));
|
|
214
|
+
|
|
215
|
+
var SenderTypes;
|
|
216
|
+
(function (SenderTypes) {
|
|
217
|
+
SenderTypes["USER"] = "user";
|
|
218
|
+
SenderTypes["OTHER"] = "other";
|
|
219
|
+
})(SenderTypes || (SenderTypes = {}));
|
|
220
|
+
|
|
221
|
+
var StatusTypes;
|
|
222
|
+
(function (StatusTypes) {
|
|
223
|
+
StatusTypes["Info"] = "info";
|
|
224
|
+
StatusTypes["Warning"] = "warning";
|
|
225
|
+
StatusTypes["Error"] = "error";
|
|
226
|
+
StatusTypes["Success"] = "success";
|
|
227
|
+
})(StatusTypes || (StatusTypes = {}));
|
|
228
|
+
|
|
229
|
+
var SendMessageType;
|
|
230
|
+
(function (SendMessageType) {
|
|
231
|
+
SendMessageType["INMEDIATELY"] = "send_immediately";
|
|
232
|
+
SendMessageType["AFTER"] = "send_after";
|
|
233
|
+
SendMessageType["SPECIFIC"] = "specify_time";
|
|
234
|
+
})(SendMessageType || (SendMessageType = {}));
|
|
235
|
+
|
|
236
|
+
var VisualManagerModalEventTypes;
|
|
237
|
+
(function (VisualManagerModalEventTypes) {
|
|
238
|
+
VisualManagerModalEventTypes["Click"] = "click";
|
|
239
|
+
VisualManagerModalEventTypes["Close"] = "close";
|
|
240
|
+
})(VisualManagerModalEventTypes || (VisualManagerModalEventTypes = {}));
|
|
241
|
+
|
|
242
|
+
var VisualManagerModalEventValue;
|
|
243
|
+
(function (VisualManagerModalEventValue) {
|
|
244
|
+
VisualManagerModalEventValue["Apply"] = "apply";
|
|
245
|
+
VisualManagerModalEventValue["Reset"] = "reset";
|
|
246
|
+
VisualManagerModalEventValue["AddPreference"] = "add-preference";
|
|
247
|
+
VisualManagerModalEventValue["RemovePreference"] = "remove-preference";
|
|
248
|
+
VisualManagerModalEventValue["Close"] = "close";
|
|
249
|
+
})(VisualManagerModalEventValue || (VisualManagerModalEventValue = {}));
|
|
250
|
+
|
|
36
251
|
/**
|
|
37
252
|
* operations.ts - Contains common operations utility functions.
|
|
38
253
|
*
|
|
@@ -71,19 +286,6 @@ const SeeMoreAnimation = trigger('dropDownMenu', [
|
|
|
71
286
|
]),
|
|
72
287
|
]);
|
|
73
288
|
|
|
74
|
-
var AutoDelegationEventTypes;
|
|
75
|
-
(function (AutoDelegationEventTypes) {
|
|
76
|
-
AutoDelegationEventTypes["Click"] = "click";
|
|
77
|
-
AutoDelegationEventTypes["Countdown"] = "countdown";
|
|
78
|
-
})(AutoDelegationEventTypes || (AutoDelegationEventTypes = {}));
|
|
79
|
-
|
|
80
|
-
var AutoDelegationEventValue;
|
|
81
|
-
(function (AutoDelegationEventValue) {
|
|
82
|
-
AutoDelegationEventValue["CountdownCompleted"] = "countdown-completed";
|
|
83
|
-
AutoDelegationEventValue["RequestRejected"] = "request-rejected";
|
|
84
|
-
AutoDelegationEventValue["RequestAcceped"] = "request-accepted";
|
|
85
|
-
})(AutoDelegationEventValue || (AutoDelegationEventValue = {}));
|
|
86
|
-
|
|
87
289
|
class LibAutoDelegationModalComponent {
|
|
88
290
|
constructor(changeDetectorRef, popupModalService, modalData) {
|
|
89
291
|
this.changeDetectorRef = changeDetectorRef;
|
|
@@ -98,291 +300,63 @@ class LibAutoDelegationModalComponent {
|
|
|
98
300
|
this.componentData = null;
|
|
99
301
|
if (modalData) {
|
|
100
302
|
// Can use that component as modal and pass Inputs
|
|
101
|
-
this.componentData = modalData;
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
ngOnInit() {
|
|
105
|
-
if (!this.componentData) {
|
|
106
|
-
// Can use that component as child and pass Inputs
|
|
107
|
-
this.componentData = {
|
|
108
|
-
countdown: this.countdown,
|
|
109
|
-
expandedBaseCard: this.expandedBaseCard,
|
|
110
|
-
menuItems: this.menuItems,
|
|
111
|
-
data: this.data || null,
|
|
112
|
-
};
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
ngAfterViewInit() {
|
|
116
|
-
this.activeCountdownPathId = CommonOperations.randomString(100);
|
|
117
|
-
interval(1000)
|
|
118
|
-
.pipe(take(this.componentData?.countdown + 1))
|
|
119
|
-
.subscribe({
|
|
120
|
-
next: (elapsedSeconds) => {
|
|
121
|
-
this.currentCountdownAt = this.componentData?.countdown - elapsedSeconds;
|
|
122
|
-
this.strokeDashOffset = this.totalStrokeLength * ((this.componentData?.countdown - this.currentCountdownAt) / this.componentData?.countdown);
|
|
123
|
-
this.changeDetectorRef.detectChanges();
|
|
124
|
-
},
|
|
125
|
-
complete: () => {
|
|
126
|
-
if (this.data) {
|
|
127
|
-
this.event.emit({ type: AutoDelegationEventTypes.Countdown, value: AutoDelegationEventValue.CountdownCompleted });
|
|
128
|
-
}
|
|
129
|
-
else {
|
|
130
|
-
this.popupModalService.hide({ type: AutoDelegationEventTypes.Countdown, value: AutoDelegationEventValue.CountdownCompleted });
|
|
131
|
-
}
|
|
132
|
-
},
|
|
133
|
-
});
|
|
134
|
-
this.popupModalService.setChildModalElementRef(this.childModalElementRef);
|
|
135
|
-
}
|
|
136
|
-
reject() {
|
|
137
|
-
if (this.data) {
|
|
138
|
-
this.event.emit({ type: AutoDelegationEventTypes.Click, value: AutoDelegationEventValue.RequestRejected });
|
|
139
|
-
}
|
|
140
|
-
else {
|
|
141
|
-
this.popupModalService.hide({ type: AutoDelegationEventTypes.Click, value: AutoDelegationEventValue.RequestRejected });
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
accept() {
|
|
145
|
-
if (this.data) {
|
|
146
|
-
this.event.emit({ type: AutoDelegationEventTypes.Click, value: AutoDelegationEventValue.RequestAcceped });
|
|
147
|
-
}
|
|
148
|
-
else {
|
|
149
|
-
this.popupModalService.hide({ type: AutoDelegationEventTypes.Click, value: AutoDelegationEventValue.RequestAcceped });
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibAutoDelegationModalComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i2.PopupModalService }, { token: MODAL_DATA, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
153
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.14", type: LibAutoDelegationModalComponent, isStandalone: true, selector: "lib-auto-delegation-modal", inputs: { countdown: "countdown", expandedBaseCard: "expandedBaseCard", data: "data", menuItems: "menuItems" }, outputs: { event: "event" }, providers: [LibModalComponent], viewQueries: [{ propertyName: "childModalElementRef", first: true, predicate: ["childModalElementRef"], descendants: true }], ngImport: i0, template: "<div class=\"auto-delegation\" [ngClass]=\"{ 'edit-radus': !componentData?.expandedBaseCard }\">\n <header class=\"auto-delegation__header\">\n <div class=\"auto-delegation__info\">\n <img class=\"auto-delegation__avatar\" [src]=\"componentData?.data?.imgSrc\" alt=\"User Avatar\" />\n <div class=\"auto-delegation__wapper overflow\">\n <div class=\"auto-delegation__title overflow\">{{ componentData?.data?.title }}</div>\n <span class=\"auto-delegation__name\">{{ componentData?.data?.name }}, </span>\n <span class=\"auto-delegation__location\">{{ componentData?.data?.location }}</span>\n </div>\n </div>\n @if (componentData?.menuItems?.length) {\n <div class=\"auto-delegation__menu\">\n <div>\n <lib-menu-btn [disableTranslation]=\"true\" [menuItems]=\"componentData?.menuItems\">\n <img height=\"25px\" width=\"5px\" src=\"assets/auto-delegation-modal/menu.svg\" alt=\"\" />\n </lib-menu-btn>\n </div>\n </div>\n }\n </header>\n <div class=\"auto-delegation__details\">\n <div class=\"auto-delegation__meetings\">\n <div class=\"auto-delegation__meetings-count gradient-text\">{{ componentData?.data?.meetings }} {{ 'AUTO_DELEGATION.MEETINGS' | translate }}</div>\n <div class=\"auto-delegation__meetings-duration gradient-text\">{{ componentData?.data?.days }}</div>\n </div>\n <div class=\"auto-delegation__price\">\n <div class=\"auto-delegation__price-value gradient-text\">\n $\n <div class=\"auto-delegation__price-number gradient-text\">{{ componentData?.data?.price }}</div>\n </div>\n </div>\n </div>\n <div class=\"auto-delegation__lists\">\n <ul class=\"auto-delegation__lists-features\">\n @for (opt of componentData?.data?.planOptions; track opt) {\n <li class=\"auto-delegation__lists-feature\">{{ opt }}</li>\n }\n </ul>\n </div>\n\n <div class=\"auto-delegation__action\">\n <div class=\"auto-delegation__action-timer\">\n <div class=\"auto-delegation__countdown\">\n <!-- Background Image -->\n <img class=\"auto-delegation__countdown-background-image\" src=\"assets/auto-delegation-modal/timer-center-dot.svg\" />\n <!-- SVG Countdown Animation -->\n <svg class=\"auto-delegation__countdown-active-stroke\" width=\"100%\" height=\"100%\" viewBox=\"0 0 103 103\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g\n class=\"auto-delegation__countdown-active-g\"\n [attr.mask]=\"'url(#' + activeCountdownPathId + ')'\"\n opacity=\"1\"\n [style.transform]=\"'rotate(' + 0 + 'deg)'\"\n style=\"transform-origin: center\"\n >\n <circle cx=\"50\" cy=\"50\" r=\"50\" fill=\"#FFB5E9\" />\n </g>\n <defs>\n <mask [attr.id]=\"activeCountdownPathId\">\n <circle\n d=\"M 9.04 78.68 A 50 50 0 1 1 90.96 78.68\"\n class=\"auto-delegation__animated-path\"\n cx=\"50\"\n cy=\"50\"\n r=\"42.5\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-width=\"10.64\"\n [attr.stroke-dasharray]=\"totalStrokeLength\"\n [attr.stroke-dashoffset]=\"strokeDashOffset\"\n />\n </mask>\n </defs>\n </svg>\n\n <!-- Countdown Timer -->\n <div class=\"auto-delegation__countdown-number\">{{ currentCountdownAt }} s</div>\n </div>\n </div>\n\n <div #childModalElementRef class=\"auto-delegation__glowing-text\" (click)=\"accept()\">{{ 'AUTO_DELEGATION.ACCEPT_REQUEST' | translate }}</div>\n <div class=\"auto-delegation__close-button\" (click)=\"reject()\">\n <img class=\"auto-delegation__close-icon\" src=\"assets/auto-delegation-modal/cross.svg\" alt=\"cross-icon\" />\n </div>\n </div>\n <div class=\"auto-delegation__dropDown\">\n <span (click)=\"componentData.expandedBaseCard = !componentData.expandedBaseCard\"\n >{{ 'DASHBOARD.SEE_' + (componentData?.expandedBaseCard ? 'LESS' : 'MORE') | translate }}...\n </span>\n </div>\n\n @if (componentData?.expandedBaseCard) {\n <div class=\"auto-delegation__profile\" [@dropDownMenu]>\n <div class=\"auto-delegation__profile-header\">\n <div>\n <h3 class=\"red-text\">{{ 'AUTO_DELEGATION.SCORE_PREFERRED' | translate }}</h3>\n <p>{{ componentData?.data?.score }} / {{ componentData?.data?.preferred }}+</p>\n </div>\n <div>\n <h3 class=\"red-text text-right\">{{ 'AUTO_DELEGATION.LIFE_TIME_FEE' | translate }}</h3>\n <p class=\"text-right\">{{ componentData?.data?.lifeTimeFee }}</p>\n </div>\n </div>\n <div class=\"auto-delegation__profile-header\">\n <div>\n <h3 class=\"red-text\">{{ 'AUTO_DELEGATION.LIFE_TIME_MEETUPS' | translate }}</h3>\n <p>{{ componentData?.data?.lifeTimeMeetups }}</p>\n </div>\n <div>\n <h3 class=\"red-text text-right\">{{ 'AUTO_DELEGATION.JOIN_DATE' | translate }}</h3>\n <p class=\"text-right\">{{ componentData?.data?.joinDate }}</p>\n </div>\n </div>\n <div class=\"auto-delegation__profile-summary-container\">\n <div class=\"auto-delegation__profile-summary\">\n <div>\n <h4>{{ 'AUTO_DELEGATION.PREFERENCES' | translate }} <br />{{ 'AUTO_DELEGATION.SUMMARY' | translate }}:</h4>\n <div>\n <p>\n {{ componentData?.data?.preferences?.bust?.value }}\u00B1{{ componentData?.data?.preferences?.bust?.moe }} {{ componentData?.data?.preferences?.waist?.value }}\u00B1{{\n componentData?.data?.preferences?.waist?.moe\n }}\n {{ componentData?.data?.preferences?.height?.value }}\u00B1{{ componentData?.data?.preferences?.height?.moe }}\n </p>\n </div>\n <div>\n <p>{{ 'AUTO_DELEGATION.CELIBACY' | translate }} {{ componentData?.data?.preferences.celibacy }}+</p>\n <p>{{ 'AUTO_DELEGATION.COOPERATION' | translate }} {{ componentData?.data?.preferences.cooperation }}+</p>\n <p>{{ 'AUTO_DELEGATION.INTELLIGENCE' | translate }} {{ componentData?.data?.preferences.intelligence }}+</p>\n </div>\n </div>\n <div>\n <h4 class=\"text-right\">{{ 'AUTO_DELEGATION.PREFERENCES_PROFILE' | translate }}</h4>\n <p class=\"text-right\">{{ componentData?.data?.preferencesProfile }}</p>\n <div>\n <h4 class=\"text-right\">{{ 'AUTO_DELEGATION.WEIGHT_HEIGHT_PREF' | translate }}</h4>\n <p class=\"text-right\">{{ componentData?.data?.weight }}/{{ componentData?.data?.heightpref }}</p>\n </div>\n </div>\n </div>\n <div class=\"auto-delegation__profile-summary\">\n <div>\n <h4>\n {{ 'AUTO_DELEGATION.PROFILE' | translate }} <br />\n {{ 'AUTO_DELEGATION.SUMMARY' | translate }}:\n </h4>\n <div *ngFor=\"let item of componentData?.data?.profile\">\n <p>{{ item }}</p>\n </div>\n </div>\n <div class=\"auto-delegation__col-center\">\n <h4 class=\"text-right\">{{ 'AUTO_DELEGATION.COMMUNICATION_STYLE' | translate }}</h4>\n <p class=\"text-right\">{{ componentData?.data?.communicationStyle }}</p>\n <div>\n <h4 class=\"text-right\">{{ 'AUTO_DELEGATION.GOAL' | translate }}</h4>\n <p class=\"text-right\">{{ componentData?.data?.goal }}</p>\n </div>\n </div>\n </div>\n </div>\n </div>\n }\n</div>\n", styles: [":host{font-size:clamp(0px,3.2dvw,15px)}:host *{box-sizing:border-box}.auto-delegation{-webkit-backdrop-filter:blur(.625em);backdrop-filter:blur(.625em);background:#d3d3d333;color:#fff;padding:1.625em 2.75em 2.25em;width:28.125em;margin:0 auto;border-radius:1.5625em;font-family:Gilroy;overflow-y:scroll;max-height:95vh}.auto-delegation__header{display:flex;justify-content:space-between;align-items:flex-start}.auto-delegation__details{display:flex;justify-content:space-between;align-items:center}.auto-delegation__avatar{width:3.75em;height:3.75em;border-radius:50%;object-fit:cover}.auto-delegation__wapper{padding-bottom:.375em}.auto-delegation__info{display:flex;gap:.75em;align-items:center;width:18.75em;height:4.6875em}.auto-delegation__title{font-size:1.875em;font-weight:400;padding-bottom:.5em;font-family:Calistoga;width:13.75em}.auto-delegation__name{font-size:.875em;font-weight:600;font-family:Gilroy}.auto-delegation__menu{cursor:pointer}.auto-delegation__location{font-size:.875em;font-weight:400;font-family:Gilroy;color:#ccc}.auto-delegation__meeting{width:100%;height:100%}.auto-delegation__meetings-count,.auto-delegation__meetings-duration{font-family:Gilroy;font-size:1.0625em;font-weight:400}.auto-delegation__price{text-align:end}.auto-delegation__price-value{display:flex;justify-content:flex-end;align-items:flex-start;gap:.25em}.auto-delegation__price-number{font-size:2.25em;font-weight:400}.auto-delegation__price-market{font-size:.5em;color:#8e8e8e}.auto-delegation__lists-features{padding-left:.9375em}.auto-delegation__lists{list-style:none;display:flex;justify-content:space-between;align-items:flex-start}.auto-delegation__action{border-radius:2em;background-color:#2b2929;display:flex;align-items:center;margin-top:.3125em;padding:0;height:3.4375em;justify-content:space-between}.auto-delegation__action__timer{border:.0625em solid gray;border-radius:100%;height:3.125em;width:3.125em;font-size:.875em;color:#f39c12}.auto-delegation__summary,.auto-delegation__preferences{margin-top:1em;font-size:.875em;line-height:1.5}.auto-delegation__preferences-summary{font-size:.75em;color:#aaa}.auto-delegation__glowing-text{font-family:Calistoga;font-size:1.5em;font-weight:800;color:#fff;text-align:center;margin-right:1.25em;text-shadow:0 0 .3125em #ff89ac,0 0 .625em #ff89ac,0 0 1.25em #ff89ac,0 0 2.5em #ff2475,0 0 5em #ff2475;-webkit-text-fill-color:#fff;cursor:pointer}.auto-delegation__close-button{display:flex;align-items:center;background:linear-gradient(228deg,#101113 10%,#2b2f33);padding:.625em;border-radius:100%;border:.0625em solid black;margin-right:.3125em;cursor:pointer}.auto-delegation__close-icon{width:1.375em;height:1.375em}.auto-delegation__dropDown{margin-top:.9375em;margin-bottom:.625em;display:flex;justify-content:center}.auto-delegation__dropDown>span{font-family:Gilroy;cursor:pointer;font-size:.625em;color:#8e8e8e}.auto-delegation__profile-summary-container{margin-top:1.25em}.auto-delegation__profile{overflow:hidden}.auto-delegation__profile-header,.auto-delegation__profile-summary{display:flex;justify-content:space-between}.auto-delegation__profile-header>div,.auto-delegation__profile-summary>div{text-align:left;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:11.25em}.auto-delegation__profile-summary div h4{font-weight:500;font-family:Gilroy;font-size:1em;margin-bottom:0;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.auto-delegation__profile-summary div p{color:#8e8e8e;font-size:.85em;font-weight:400;font-family:Gilroy;margin:.125em!important;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.auto-delegation__countdown{position:relative;width:4.375em;height:4.375em;right:.75em}.auto-delegation__countdown-background-image{background:linear-gradient(274deg,#232323 50%,#2b2f33);box-shadow:.01em -.0525em 1.53em #82676e,.49em .49em 1.715em #141415;border:2px solid #464646;border-radius:100%;position:absolute;top:.6em;left:.9em;width:3.2em;height:3.2em}.auto-delegation__countdown-active-stroke{position:absolute;width:3.5em;height:3.5em;top:.6em;left:.6em;animation-duration:.8s;transform:rotate(90deg)}.auto-delegation__countdown-number{height:3em;width:3em;display:flex;justify-content:center;align-items:center;background:linear-gradient(66deg,#101113 12%,#2b2f33);box-shadow:inset -.49em -.49em 1.715em #453d3f,inset .49em .49em 1.715em #141415;border:2px solid #333333;border-radius:100%;position:absolute;top:50%;left:57%;transform:translate(-50%,-50%);font-weight:600;font-size:.6em;color:#fff}.auto-delegation__col-center{display:flex;flex-direction:column;justify-content:center}.auto-delegation__animated-path{transition:stroke-dashoffset 1s linear}.gradient-text{background:linear-gradient(to top,#efc5d1,#fe638e);-webkit-background-clip:text;-webkit-text-fill-color:transparent}.auto-delegation:before{content:\"\";position:absolute;inset:0;border-radius:1.5625em;padding:.125em;background:linear-gradient(to top,transparent,transparent,#ccabc4);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;z-index:-1}.red-text{font-family:Gilroy;margin-top:.5em;margin-bottom:0;font-size:1.0625em;color:#f4446c;font-weight:600}.text-right{text-align:end}.overflow{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}@media (max-width: 768px){:host{font-size:calc(clamp(0px,3.2dvw,15px)*.8)}}.edit-radus{border-radius:5.5625em!important}.edit-radus:before{border-radius:5.5625em!important}::-webkit-scrollbar{width:0;background:transparent}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: BaseCardModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: ButtonsModule }, { kind: "component", type: i2.MenuBtnComponent, selector: "lib-menu-btn", inputs: ["menuBtnIcon", "menuBtnTooltip", "menuBtnTooltipPosition", "menuBtnIconName", "menuBtnImgUrl", "menuBtnNotificationIconUrl", "menuDirection", "hasNotification", "menuItems", "disableTranslation", "listItem", "listItemIndex", "selectable", "overlayClass", "isUserMenu", "onlyCloseOnClickOutside", "hoverOutline", "disabled", "type", "form", "label", "showArrowIcon", "disableTextShadow", "loading$"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: PopperModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }], animations: [SeeMoreAnimation] }); }
|
|
154
|
-
}
|
|
155
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibAutoDelegationModalComponent, decorators: [{
|
|
156
|
-
type: Component,
|
|
157
|
-
args: [{ selector: 'lib-auto-delegation-modal', animations: [SeeMoreAnimation], imports: [CommonModule, BaseCardModule, TranslateModule, ButtonsModule, MatMenuModule, MatButtonModule, PopperModule], providers: [LibModalComponent], template: "<div class=\"auto-delegation\" [ngClass]=\"{ 'edit-radus': !componentData?.expandedBaseCard }\">\n <header class=\"auto-delegation__header\">\n <div class=\"auto-delegation__info\">\n <img class=\"auto-delegation__avatar\" [src]=\"componentData?.data?.imgSrc\" alt=\"User Avatar\" />\n <div class=\"auto-delegation__wapper overflow\">\n <div class=\"auto-delegation__title overflow\">{{ componentData?.data?.title }}</div>\n <span class=\"auto-delegation__name\">{{ componentData?.data?.name }}, </span>\n <span class=\"auto-delegation__location\">{{ componentData?.data?.location }}</span>\n </div>\n </div>\n @if (componentData?.menuItems?.length) {\n <div class=\"auto-delegation__menu\">\n <div>\n <lib-menu-btn [disableTranslation]=\"true\" [menuItems]=\"componentData?.menuItems\">\n <img height=\"25px\" width=\"5px\" src=\"assets/auto-delegation-modal/menu.svg\" alt=\"\" />\n </lib-menu-btn>\n </div>\n </div>\n }\n </header>\n <div class=\"auto-delegation__details\">\n <div class=\"auto-delegation__meetings\">\n <div class=\"auto-delegation__meetings-count gradient-text\">{{ componentData?.data?.meetings }} {{ 'AUTO_DELEGATION.MEETINGS' | translate }}</div>\n <div class=\"auto-delegation__meetings-duration gradient-text\">{{ componentData?.data?.days }}</div>\n </div>\n <div class=\"auto-delegation__price\">\n <div class=\"auto-delegation__price-value gradient-text\">\n $\n <div class=\"auto-delegation__price-number gradient-text\">{{ componentData?.data?.price }}</div>\n </div>\n </div>\n </div>\n <div class=\"auto-delegation__lists\">\n <ul class=\"auto-delegation__lists-features\">\n @for (opt of componentData?.data?.planOptions; track opt) {\n <li class=\"auto-delegation__lists-feature\">{{ opt }}</li>\n }\n </ul>\n </div>\n\n <div class=\"auto-delegation__action\">\n <div class=\"auto-delegation__action-timer\">\n <div class=\"auto-delegation__countdown\">\n <!-- Background Image -->\n <img class=\"auto-delegation__countdown-background-image\" src=\"assets/auto-delegation-modal/timer-center-dot.svg\" />\n <!-- SVG Countdown Animation -->\n <svg class=\"auto-delegation__countdown-active-stroke\" width=\"100%\" height=\"100%\" viewBox=\"0 0 103 103\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g\n class=\"auto-delegation__countdown-active-g\"\n [attr.mask]=\"'url(#' + activeCountdownPathId + ')'\"\n opacity=\"1\"\n [style.transform]=\"'rotate(' + 0 + 'deg)'\"\n style=\"transform-origin: center\"\n >\n <circle cx=\"50\" cy=\"50\" r=\"50\" fill=\"#FFB5E9\" />\n </g>\n <defs>\n <mask [attr.id]=\"activeCountdownPathId\">\n <circle\n d=\"M 9.04 78.68 A 50 50 0 1 1 90.96 78.68\"\n class=\"auto-delegation__animated-path\"\n cx=\"50\"\n cy=\"50\"\n r=\"42.5\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-width=\"10.64\"\n [attr.stroke-dasharray]=\"totalStrokeLength\"\n [attr.stroke-dashoffset]=\"strokeDashOffset\"\n />\n </mask>\n </defs>\n </svg>\n\n <!-- Countdown Timer -->\n <div class=\"auto-delegation__countdown-number\">{{ currentCountdownAt }} s</div>\n </div>\n </div>\n\n <div #childModalElementRef class=\"auto-delegation__glowing-text\" (click)=\"accept()\">{{ 'AUTO_DELEGATION.ACCEPT_REQUEST' | translate }}</div>\n <div class=\"auto-delegation__close-button\" (click)=\"reject()\">\n <img class=\"auto-delegation__close-icon\" src=\"assets/auto-delegation-modal/cross.svg\" alt=\"cross-icon\" />\n </div>\n </div>\n <div class=\"auto-delegation__dropDown\">\n <span (click)=\"componentData.expandedBaseCard = !componentData.expandedBaseCard\"\n >{{ 'DASHBOARD.SEE_' + (componentData?.expandedBaseCard ? 'LESS' : 'MORE') | translate }}...\n </span>\n </div>\n\n @if (componentData?.expandedBaseCard) {\n <div class=\"auto-delegation__profile\" [@dropDownMenu]>\n <div class=\"auto-delegation__profile-header\">\n <div>\n <h3 class=\"red-text\">{{ 'AUTO_DELEGATION.SCORE_PREFERRED' | translate }}</h3>\n <p>{{ componentData?.data?.score }} / {{ componentData?.data?.preferred }}+</p>\n </div>\n <div>\n <h3 class=\"red-text text-right\">{{ 'AUTO_DELEGATION.LIFE_TIME_FEE' | translate }}</h3>\n <p class=\"text-right\">{{ componentData?.data?.lifeTimeFee }}</p>\n </div>\n </div>\n <div class=\"auto-delegation__profile-header\">\n <div>\n <h3 class=\"red-text\">{{ 'AUTO_DELEGATION.LIFE_TIME_MEETUPS' | translate }}</h3>\n <p>{{ componentData?.data?.lifeTimeMeetups }}</p>\n </div>\n <div>\n <h3 class=\"red-text text-right\">{{ 'AUTO_DELEGATION.JOIN_DATE' | translate }}</h3>\n <p class=\"text-right\">{{ componentData?.data?.joinDate }}</p>\n </div>\n </div>\n <div class=\"auto-delegation__profile-summary-container\">\n <div class=\"auto-delegation__profile-summary\">\n <div>\n <h4>{{ 'AUTO_DELEGATION.PREFERENCES' | translate }} <br />{{ 'AUTO_DELEGATION.SUMMARY' | translate }}:</h4>\n <div>\n <p>\n {{ componentData?.data?.preferences?.bust?.value }}\u00B1{{ componentData?.data?.preferences?.bust?.moe }} {{ componentData?.data?.preferences?.waist?.value }}\u00B1{{\n componentData?.data?.preferences?.waist?.moe\n }}\n {{ componentData?.data?.preferences?.height?.value }}\u00B1{{ componentData?.data?.preferences?.height?.moe }}\n </p>\n </div>\n <div>\n <p>{{ 'AUTO_DELEGATION.CELIBACY' | translate }} {{ componentData?.data?.preferences.celibacy }}+</p>\n <p>{{ 'AUTO_DELEGATION.COOPERATION' | translate }} {{ componentData?.data?.preferences.cooperation }}+</p>\n <p>{{ 'AUTO_DELEGATION.INTELLIGENCE' | translate }} {{ componentData?.data?.preferences.intelligence }}+</p>\n </div>\n </div>\n <div>\n <h4 class=\"text-right\">{{ 'AUTO_DELEGATION.PREFERENCES_PROFILE' | translate }}</h4>\n <p class=\"text-right\">{{ componentData?.data?.preferencesProfile }}</p>\n <div>\n <h4 class=\"text-right\">{{ 'AUTO_DELEGATION.WEIGHT_HEIGHT_PREF' | translate }}</h4>\n <p class=\"text-right\">{{ componentData?.data?.weight }}/{{ componentData?.data?.heightpref }}</p>\n </div>\n </div>\n </div>\n <div class=\"auto-delegation__profile-summary\">\n <div>\n <h4>\n {{ 'AUTO_DELEGATION.PROFILE' | translate }} <br />\n {{ 'AUTO_DELEGATION.SUMMARY' | translate }}:\n </h4>\n <div *ngFor=\"let item of componentData?.data?.profile\">\n <p>{{ item }}</p>\n </div>\n </div>\n <div class=\"auto-delegation__col-center\">\n <h4 class=\"text-right\">{{ 'AUTO_DELEGATION.COMMUNICATION_STYLE' | translate }}</h4>\n <p class=\"text-right\">{{ componentData?.data?.communicationStyle }}</p>\n <div>\n <h4 class=\"text-right\">{{ 'AUTO_DELEGATION.GOAL' | translate }}</h4>\n <p class=\"text-right\">{{ componentData?.data?.goal }}</p>\n </div>\n </div>\n </div>\n </div>\n </div>\n }\n</div>\n", styles: [":host{font-size:clamp(0px,3.2dvw,15px)}:host *{box-sizing:border-box}.auto-delegation{-webkit-backdrop-filter:blur(.625em);backdrop-filter:blur(.625em);background:#d3d3d333;color:#fff;padding:1.625em 2.75em 2.25em;width:28.125em;margin:0 auto;border-radius:1.5625em;font-family:Gilroy;overflow-y:scroll;max-height:95vh}.auto-delegation__header{display:flex;justify-content:space-between;align-items:flex-start}.auto-delegation__details{display:flex;justify-content:space-between;align-items:center}.auto-delegation__avatar{width:3.75em;height:3.75em;border-radius:50%;object-fit:cover}.auto-delegation__wapper{padding-bottom:.375em}.auto-delegation__info{display:flex;gap:.75em;align-items:center;width:18.75em;height:4.6875em}.auto-delegation__title{font-size:1.875em;font-weight:400;padding-bottom:.5em;font-family:Calistoga;width:13.75em}.auto-delegation__name{font-size:.875em;font-weight:600;font-family:Gilroy}.auto-delegation__menu{cursor:pointer}.auto-delegation__location{font-size:.875em;font-weight:400;font-family:Gilroy;color:#ccc}.auto-delegation__meeting{width:100%;height:100%}.auto-delegation__meetings-count,.auto-delegation__meetings-duration{font-family:Gilroy;font-size:1.0625em;font-weight:400}.auto-delegation__price{text-align:end}.auto-delegation__price-value{display:flex;justify-content:flex-end;align-items:flex-start;gap:.25em}.auto-delegation__price-number{font-size:2.25em;font-weight:400}.auto-delegation__price-market{font-size:.5em;color:#8e8e8e}.auto-delegation__lists-features{padding-left:.9375em}.auto-delegation__lists{list-style:none;display:flex;justify-content:space-between;align-items:flex-start}.auto-delegation__action{border-radius:2em;background-color:#2b2929;display:flex;align-items:center;margin-top:.3125em;padding:0;height:3.4375em;justify-content:space-between}.auto-delegation__action__timer{border:.0625em solid gray;border-radius:100%;height:3.125em;width:3.125em;font-size:.875em;color:#f39c12}.auto-delegation__summary,.auto-delegation__preferences{margin-top:1em;font-size:.875em;line-height:1.5}.auto-delegation__preferences-summary{font-size:.75em;color:#aaa}.auto-delegation__glowing-text{font-family:Calistoga;font-size:1.5em;font-weight:800;color:#fff;text-align:center;margin-right:1.25em;text-shadow:0 0 .3125em #ff89ac,0 0 .625em #ff89ac,0 0 1.25em #ff89ac,0 0 2.5em #ff2475,0 0 5em #ff2475;-webkit-text-fill-color:#fff;cursor:pointer}.auto-delegation__close-button{display:flex;align-items:center;background:linear-gradient(228deg,#101113 10%,#2b2f33);padding:.625em;border-radius:100%;border:.0625em solid black;margin-right:.3125em;cursor:pointer}.auto-delegation__close-icon{width:1.375em;height:1.375em}.auto-delegation__dropDown{margin-top:.9375em;margin-bottom:.625em;display:flex;justify-content:center}.auto-delegation__dropDown>span{font-family:Gilroy;cursor:pointer;font-size:.625em;color:#8e8e8e}.auto-delegation__profile-summary-container{margin-top:1.25em}.auto-delegation__profile{overflow:hidden}.auto-delegation__profile-header,.auto-delegation__profile-summary{display:flex;justify-content:space-between}.auto-delegation__profile-header>div,.auto-delegation__profile-summary>div{text-align:left;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:11.25em}.auto-delegation__profile-summary div h4{font-weight:500;font-family:Gilroy;font-size:1em;margin-bottom:0;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.auto-delegation__profile-summary div p{color:#8e8e8e;font-size:.85em;font-weight:400;font-family:Gilroy;margin:.125em!important;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.auto-delegation__countdown{position:relative;width:4.375em;height:4.375em;right:.75em}.auto-delegation__countdown-background-image{background:linear-gradient(274deg,#232323 50%,#2b2f33);box-shadow:.01em -.0525em 1.53em #82676e,.49em .49em 1.715em #141415;border:2px solid #464646;border-radius:100%;position:absolute;top:.6em;left:.9em;width:3.2em;height:3.2em}.auto-delegation__countdown-active-stroke{position:absolute;width:3.5em;height:3.5em;top:.6em;left:.6em;animation-duration:.8s;transform:rotate(90deg)}.auto-delegation__countdown-number{height:3em;width:3em;display:flex;justify-content:center;align-items:center;background:linear-gradient(66deg,#101113 12%,#2b2f33);box-shadow:inset -.49em -.49em 1.715em #453d3f,inset .49em .49em 1.715em #141415;border:2px solid #333333;border-radius:100%;position:absolute;top:50%;left:57%;transform:translate(-50%,-50%);font-weight:600;font-size:.6em;color:#fff}.auto-delegation__col-center{display:flex;flex-direction:column;justify-content:center}.auto-delegation__animated-path{transition:stroke-dashoffset 1s linear}.gradient-text{background:linear-gradient(to top,#efc5d1,#fe638e);-webkit-background-clip:text;-webkit-text-fill-color:transparent}.auto-delegation:before{content:\"\";position:absolute;inset:0;border-radius:1.5625em;padding:.125em;background:linear-gradient(to top,transparent,transparent,#ccabc4);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;z-index:-1}.red-text{font-family:Gilroy;margin-top:.5em;margin-bottom:0;font-size:1.0625em;color:#f4446c;font-weight:600}.text-right{text-align:end}.overflow{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}@media (max-width: 768px){:host{font-size:calc(clamp(0px,3.2dvw,15px)*.8)}}.edit-radus{border-radius:5.5625em!important}.edit-radus:before{border-radius:5.5625em!important}::-webkit-scrollbar{width:0;background:transparent}\n"] }]
|
|
158
|
-
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i2.PopupModalService }, { type: undefined, decorators: [{
|
|
159
|
-
type: Optional
|
|
160
|
-
}, {
|
|
161
|
-
type: Inject,
|
|
162
|
-
args: [MODAL_DATA]
|
|
163
|
-
}] }], propDecorators: { childModalElementRef: [{
|
|
164
|
-
type: ViewChild,
|
|
165
|
-
args: ['childModalElementRef']
|
|
166
|
-
}], countdown: [{
|
|
167
|
-
type: Input
|
|
168
|
-
}], expandedBaseCard: [{
|
|
169
|
-
type: Input
|
|
170
|
-
}], data: [{
|
|
171
|
-
type: Input
|
|
172
|
-
}], menuItems: [{
|
|
173
|
-
type: Input
|
|
174
|
-
}], event: [{
|
|
175
|
-
type: Output
|
|
176
|
-
}] } });
|
|
177
|
-
|
|
178
|
-
var VisualManagerModalEventTypes;
|
|
179
|
-
(function (VisualManagerModalEventTypes) {
|
|
180
|
-
VisualManagerModalEventTypes["Click"] = "click";
|
|
181
|
-
VisualManagerModalEventTypes["Close"] = "close";
|
|
182
|
-
})(VisualManagerModalEventTypes || (VisualManagerModalEventTypes = {}));
|
|
183
|
-
|
|
184
|
-
var VisualManagerModalEventValue;
|
|
185
|
-
(function (VisualManagerModalEventValue) {
|
|
186
|
-
VisualManagerModalEventValue["Apply"] = "apply";
|
|
187
|
-
VisualManagerModalEventValue["Reset"] = "reset";
|
|
188
|
-
VisualManagerModalEventValue["AddPreference"] = "add-preference";
|
|
189
|
-
VisualManagerModalEventValue["RemovePreference"] = "remove-preference";
|
|
190
|
-
VisualManagerModalEventValue["Close"] = "close";
|
|
191
|
-
})(VisualManagerModalEventValue || (VisualManagerModalEventValue = {}));
|
|
192
|
-
|
|
193
|
-
class LibVisualManagerModalComponent {
|
|
194
|
-
get selectedItems() {
|
|
195
|
-
return this.preferences.filter((p) => p.isSelected);
|
|
196
|
-
}
|
|
197
|
-
get deselectedItems() {
|
|
198
|
-
return this.preferences.filter((p) => !p.isSelected);
|
|
199
|
-
}
|
|
200
|
-
constructor(changeDetectorRef, popupModalService, modalData) {
|
|
201
|
-
this.changeDetectorRef = changeDetectorRef;
|
|
202
|
-
this.popupModalService = popupModalService;
|
|
203
|
-
this.modalData = modalData;
|
|
204
|
-
this.event = new EventEmitter();
|
|
205
|
-
this.componentData = null;
|
|
206
|
-
this.preferences = [];
|
|
207
|
-
this.originalPreferences = [];
|
|
208
|
-
this.preferenceControls = new Map();
|
|
209
|
-
if (modalData) {
|
|
210
|
-
this.componentData = modalData;
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
ngOnInit() {
|
|
214
|
-
if (!this.componentData) {
|
|
215
|
-
this.componentData = {
|
|
216
|
-
data: this.data || { preferences: [] },
|
|
217
|
-
};
|
|
218
|
-
}
|
|
219
|
-
// Create a deep copy for working state
|
|
220
|
-
this.preferences = JSON.parse(JSON.stringify(this.componentData.data.preferences || []));
|
|
221
|
-
// Keep original for reset
|
|
222
|
-
this.originalPreferences = JSON.parse(JSON.stringify(this.componentData.data.preferences || []));
|
|
223
|
-
// Create FormControls for each preference name
|
|
224
|
-
this.preferences.forEach((preference) => {
|
|
225
|
-
this.preferenceControls.set(preference.id, new FormControl(preference.name));
|
|
226
|
-
});
|
|
227
|
-
}
|
|
228
|
-
ngAfterViewInit() {
|
|
229
|
-
if (this.childModalElementRef) {
|
|
230
|
-
this.popupModalService.setChildModalElementRef(this.childModalElementRef);
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
togglePreference(preference, event) {
|
|
234
|
-
if (event) {
|
|
235
|
-
event.preventDefault();
|
|
236
|
-
event.stopPropagation();
|
|
237
|
-
}
|
|
238
|
-
const index = this.preferences.findIndex((p) => p.id === preference.id);
|
|
239
|
-
if (index !== -1) {
|
|
240
|
-
const wasSelected = this.preferences[index].isSelected;
|
|
241
|
-
this.preferences[index].isSelected = !wasSelected;
|
|
242
|
-
// Force change detection to update the view
|
|
243
|
-
this.changeDetectorRef.detectChanges();
|
|
244
|
-
const eventValue = this.preferences[index].isSelected
|
|
245
|
-
? VisualManagerModalEventValue.AddPreference
|
|
246
|
-
: VisualManagerModalEventValue.RemovePreference;
|
|
247
|
-
// Emit event but don't close the modal - user can continue toggling items
|
|
248
|
-
if (this.data) {
|
|
249
|
-
this.event.emit({
|
|
250
|
-
type: VisualManagerModalEventTypes.Click,
|
|
251
|
-
value: eventValue,
|
|
252
|
-
data: { preferenceId: preference.id, preferences: this.preferences },
|
|
253
|
-
});
|
|
254
|
-
}
|
|
255
|
-
}
|
|
256
|
-
}
|
|
257
|
-
apply() {
|
|
258
|
-
if (this.data) {
|
|
259
|
-
this.event.emit({
|
|
260
|
-
type: VisualManagerModalEventTypes.Click,
|
|
261
|
-
value: VisualManagerModalEventValue.Apply,
|
|
262
|
-
data: { preferences: this.preferences },
|
|
263
|
-
});
|
|
264
|
-
}
|
|
265
|
-
else {
|
|
266
|
-
this.popupModalService.hide({
|
|
267
|
-
type: VisualManagerModalEventTypes.Click,
|
|
268
|
-
value: VisualManagerModalEventValue.Apply,
|
|
269
|
-
data: { preferences: this.preferences },
|
|
270
|
-
});
|
|
303
|
+
this.componentData = modalData;
|
|
271
304
|
}
|
|
272
305
|
}
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
}
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
306
|
+
ngOnInit() {
|
|
307
|
+
if (!this.componentData) {
|
|
308
|
+
// Can use that component as child and pass Inputs
|
|
309
|
+
this.componentData = {
|
|
310
|
+
countdown: this.countdown,
|
|
311
|
+
expandedBaseCard: this.expandedBaseCard,
|
|
312
|
+
menuItems: this.menuItems,
|
|
313
|
+
data: this.data || null,
|
|
314
|
+
};
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
ngAfterViewInit() {
|
|
318
|
+
this.activeCountdownPathId = CommonOperations.randomString(100);
|
|
319
|
+
interval(1000)
|
|
320
|
+
.pipe(take(this.componentData?.countdown + 1))
|
|
321
|
+
.subscribe({
|
|
322
|
+
next: (elapsedSeconds) => {
|
|
323
|
+
this.currentCountdownAt = this.componentData?.countdown - elapsedSeconds;
|
|
324
|
+
this.strokeDashOffset = this.totalStrokeLength * ((this.componentData?.countdown - this.currentCountdownAt) / this.componentData?.countdown);
|
|
325
|
+
this.changeDetectorRef.detectChanges();
|
|
326
|
+
},
|
|
327
|
+
complete: () => {
|
|
328
|
+
if (this.data) {
|
|
329
|
+
this.event.emit({ type: AutoDelegationEventTypes.Countdown, value: AutoDelegationEventValue.CountdownCompleted });
|
|
330
|
+
}
|
|
331
|
+
else {
|
|
332
|
+
this.popupModalService.hide({ type: AutoDelegationEventTypes.Countdown, value: AutoDelegationEventValue.CountdownCompleted });
|
|
333
|
+
}
|
|
334
|
+
},
|
|
285
335
|
});
|
|
286
|
-
this.
|
|
336
|
+
this.popupModalService.setChildModalElementRef(this.childModalElementRef);
|
|
337
|
+
}
|
|
338
|
+
reject() {
|
|
287
339
|
if (this.data) {
|
|
288
|
-
this.event.emit({
|
|
289
|
-
type: VisualManagerModalEventTypes.Click,
|
|
290
|
-
value: VisualManagerModalEventValue.Reset,
|
|
291
|
-
data: { preferences: this.preferences },
|
|
292
|
-
});
|
|
340
|
+
this.event.emit({ type: AutoDelegationEventTypes.Click, value: AutoDelegationEventValue.RequestRejected });
|
|
293
341
|
}
|
|
294
342
|
else {
|
|
295
|
-
this.popupModalService.hide({
|
|
296
|
-
type: VisualManagerModalEventTypes.Click,
|
|
297
|
-
value: VisualManagerModalEventValue.Reset,
|
|
298
|
-
data: { preferences: this.preferences },
|
|
299
|
-
});
|
|
343
|
+
this.popupModalService.hide({ type: AutoDelegationEventTypes.Click, value: AutoDelegationEventValue.RequestRejected });
|
|
300
344
|
}
|
|
301
345
|
}
|
|
302
|
-
|
|
346
|
+
accept() {
|
|
303
347
|
if (this.data) {
|
|
304
|
-
this.event.emit({
|
|
305
|
-
type: VisualManagerModalEventTypes.Close,
|
|
306
|
-
value: VisualManagerModalEventValue.Close,
|
|
307
|
-
});
|
|
348
|
+
this.event.emit({ type: AutoDelegationEventTypes.Click, value: AutoDelegationEventValue.RequestAcceped });
|
|
308
349
|
}
|
|
309
350
|
else {
|
|
310
|
-
this.popupModalService.hide({
|
|
311
|
-
type: VisualManagerModalEventTypes.Close,
|
|
312
|
-
value: VisualManagerModalEventValue.Close,
|
|
313
|
-
});
|
|
314
|
-
}
|
|
315
|
-
}
|
|
316
|
-
onPreferenceNameChange(preference, newName) {
|
|
317
|
-
const index = this.preferences.findIndex((p) => p.id === preference.id);
|
|
318
|
-
if (index !== -1) {
|
|
319
|
-
this.preferences[index].name = newName || '';
|
|
320
|
-
const control = this.preferenceControls.get(preference.id);
|
|
321
|
-
if (control && control.value !== newName) {
|
|
322
|
-
control.setValue(newName || '', { emitEvent: false });
|
|
323
|
-
}
|
|
324
|
-
this.changeDetectorRef.detectChanges();
|
|
325
|
-
}
|
|
326
|
-
}
|
|
327
|
-
getPreferenceControl(preferenceId) {
|
|
328
|
-
return this.preferenceControls.get(preferenceId) || new FormControl('');
|
|
329
|
-
}
|
|
330
|
-
onDragStart(event, preference, isSelected) {
|
|
331
|
-
if (event.dataTransfer) {
|
|
332
|
-
event.dataTransfer.effectAllowed = 'move';
|
|
333
|
-
event.dataTransfer.setData('text/plain', JSON.stringify({ id: preference.id, isSelected }));
|
|
334
|
-
}
|
|
335
|
-
if (event.target) {
|
|
336
|
-
event.target.style.opacity = '0.5';
|
|
337
|
-
}
|
|
338
|
-
}
|
|
339
|
-
onDragEnd(event) {
|
|
340
|
-
if (event.target) {
|
|
341
|
-
event.target.style.opacity = '1';
|
|
342
|
-
}
|
|
343
|
-
}
|
|
344
|
-
onDragOver(event) {
|
|
345
|
-
event.preventDefault();
|
|
346
|
-
if (event.dataTransfer) {
|
|
347
|
-
event.dataTransfer.dropEffect = 'move';
|
|
348
|
-
}
|
|
349
|
-
}
|
|
350
|
-
onDrop(event, targetPreference, isSelected) {
|
|
351
|
-
event.preventDefault();
|
|
352
|
-
event.stopPropagation();
|
|
353
|
-
if (!event.dataTransfer) {
|
|
354
|
-
return;
|
|
355
|
-
}
|
|
356
|
-
const data = event.dataTransfer.getData('text/plain');
|
|
357
|
-
if (!data) {
|
|
358
|
-
return;
|
|
359
|
-
}
|
|
360
|
-
try {
|
|
361
|
-
const { id: draggedId, isSelected: draggedIsSelected } = JSON.parse(data);
|
|
362
|
-
// Only allow reordering within the same section (selected or deselected)
|
|
363
|
-
if (draggedIsSelected !== isSelected) {
|
|
364
|
-
return;
|
|
365
|
-
}
|
|
366
|
-
const draggedIndex = this.preferences.findIndex((p) => p.id === draggedId);
|
|
367
|
-
const targetIndex = this.preferences.findIndex((p) => p.id === targetPreference.id);
|
|
368
|
-
if (draggedIndex === -1 || targetIndex === -1 || draggedIndex === targetIndex) {
|
|
369
|
-
return;
|
|
370
|
-
}
|
|
371
|
-
// Reorder the items
|
|
372
|
-
const [draggedItem] = this.preferences.splice(draggedIndex, 1);
|
|
373
|
-
this.preferences.splice(targetIndex, 0, draggedItem);
|
|
374
|
-
this.changeDetectorRef.detectChanges();
|
|
375
|
-
}
|
|
376
|
-
catch (error) {
|
|
377
|
-
console.error('Error handling drop:', error);
|
|
351
|
+
this.popupModalService.hide({ type: AutoDelegationEventTypes.Click, value: AutoDelegationEventValue.RequestAcceped });
|
|
378
352
|
}
|
|
379
353
|
}
|
|
380
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type:
|
|
381
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.14", type: LibVisualManagerModalComponent, isStandalone: true, selector: "lib-visual-manager-modal", inputs: { data: "data" }, outputs: { event: "event" }, providers: [LibModalComponent], viewQueries: [{ propertyName: "childModalElementRef", first: true, predicate: ["childModalElementRef"], descendants: true }], ngImport: i0, template: "<div class=\"visual-manager-modal\" #childModalElementRef>\n <header class=\"visual-manager-modal__header\">\n <div class=\"visual-manager-modal__header-left\">\n <img class=\"visual-manager-modal__filter-icon\" src=\"assets/icons/filter-icon.svg\" alt=\"Filter icon\" />\n <h2 class=\"visual-manager-modal__title\">{{ 'VISUAL_MANAGER_MODAL.TITLE' | translate }}</h2>\n </div>\n <button class=\"visual-manager-modal__close-button\" (click)=\"close()\">\n <img class=\"visual-manager-modal__close-icon\" src=\"assets/icons/close-icon.svg\" alt=\"Close\" />\n </button>\n </header>\n\n <div class=\"visual-manager-modal__content\">\n <!-- Selected Items Section -->\n @if (selectedItems.length > 0) {\n <div class=\"visual-manager-modal__section\">\n <ol class=\"visual-manager-modal__list visual-manager-modal__list--ordered\">\n @for (preference of selectedItems; track preference.id; let i = $index) {\n <li \n class=\"visual-manager-modal__item\"\n (dragover)=\"onDragOver($event)\"\n (drop)=\"onDrop($event, preference, true)\"\n >\n <span class=\"visual-manager-modal__item-number\">{{ i + 1 }}</span>\n <div class=\"visual-manager-modal__input-wrapper\">\n <lib-input-field\n class=\"visual-manager-modal__item-name\"\n [formControl]=\"getPreferenceControl(preference.id)\"\n (valueChange)=\"onPreferenceNameChange(preference, $event)\"\n ></lib-input-field>\n <button class=\"visual-manager-modal__action-button1\" > </button>\n <button\n class=\"visual-manager-modal__action-button\"\n (click)=\"togglePreference(preference, $event)\"\n >\n <img class=\"visual-manager-modal__action-icon\" src=\"assets/icons/close-icon.svg\" alt=\"Remove\" />\n </button>\n </div>\n <img \n class=\"visual-manager-modal__drag-handle\" \n src=\"assets/icons/drag-handle.svg\" \n alt=\"Drag handle\"\n draggable=\"true\"\n (dragstart)=\"onDragStart($event, preference, true)\"\n (dragend)=\"onDragEnd($event)\"\n />\n </li>\n }\n </ol>\n </div>\n }\n\n <!-- Separator -->\n @if (selectedItems.length > 0 && deselectedItems.length > 0) {\n <div class=\"visual-manager-modal__separator\"></div>\n }\n\n <!-- Deselected Items Section -->\n @if (deselectedItems.length > 0) {\n <div class=\"visual-manager-modal__section\">\n <ul class=\"visual-manager-modal__list\">\n @for (preference of deselectedItems; track preference.id) {\n <li \n class=\"visual-manager-modal__item\"\n (dragover)=\"onDragOver($event)\"\n (drop)=\"onDrop($event, preference, false)\"\n >\n <div class=\"visual-manager-modal__input-wrapper\">\n <lib-input-field\n class=\"visual-manager-modal__item-name\"\n [formControl]=\"getPreferenceControl(preference.id)\"\n (valueChange)=\"onPreferenceNameChange(preference, $event)\"\n ></lib-input-field>\n <button class=\"visual-manager-modal__action-button1\" > </button>\n <button\n class=\"visual-manager-modal__action-button\"\n (click)=\"togglePreference(preference, $event)\"\n >\n <img class=\"visual-manager-modal__action-icon\" src=\"assets/icons/plus.svg\" alt=\"Add\" />\n </button>\n </div>\n <img \n class=\"visual-manager-modal__drag-handle\" \n src=\"assets/icons/drag-handle.svg\" \n alt=\"Drag handle\"\n draggable=\"true\"\n (dragstart)=\"onDragStart($event, preference, false)\"\n (dragend)=\"onDragEnd($event)\"\n />\n </li>\n }\n </ul>\n </div>\n }\n </div>\n\n <footer class=\"visual-manager-modal__footer\">\n <lib-secondary-btn (click)=\"reset()\">\n {{ 'VISUAL_MANAGER_MODAL.RESET' | translate }}\n </lib-secondary-btn>\n <lib-primary-btn (click)=\"apply()\">\n {{ 'VISUAL_MANAGER_MODAL.APPLY' | translate }}\n </lib-primary-btn>\n </footer>\n</div>\n\n", styles: [":host{font-size:clamp(0px,3.2dvw,15px)}:host *{box-sizing:border-box}.visual-manager-modal{-webkit-backdrop-filter:blur(.625em);backdrop-filter:blur(.625em);background:linear-gradient(180deg,#323133,#1f1e20);color:#fff;padding:1.5em 2em;width:28.125em;margin:0 auto;border-radius:1.5625em;font-family:Gilroy;box-shadow:.5em .5em 1em #00000080,-.5em -.5em 1em #ffffff0d;position:relative;display:flex;flex-direction:column}.visual-manager-modal__header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:1.5em;padding-bottom:1em;border-bottom:1px solid rgba(255,255,255,.1);gap:.75em}.visual-manager-modal__header-left{display:flex;flex-direction:column;align-items:center;gap:.5em;flex:1}.visual-manager-modal__filter-icon{width:3em;height:3em;cursor:pointer;flex-shrink:0}.visual-manager-modal__title{font-size:1.25em;font-weight:500;font-family:Gilroy;margin:0;color:#fff}.visual-manager-modal__close-button{background:transparent;border:none;cursor:pointer;padding:.25em;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:background .2s}.visual-manager-modal__close-button:hover{background:#ffffff1a}.visual-manager-modal__close-icon{width:2em;height:2em;filter:brightness(0) saturate(100%) invert(39%) sepia(0%) saturate(0%) hue-rotate(0deg) brightness(98%) contrast(105%)}.visual-manager-modal__content{margin-bottom:1.5em;max-height:50vh;overflow-y:auto;flex:1;display:flex;flex-direction:column;gap:1em}.visual-manager-modal__section{display:flex;flex-direction:column;gap:.75em}.visual-manager-modal__section-label{font-size:.9em;font-weight:500;color:#4a9eff;margin-bottom:.25em}.visual-manager-modal__separator{height:1px;background:#ffffff1a;margin:.5em 0}.visual-manager-modal__list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.75em}.visual-manager-modal__list--ordered{list-style:none}.visual-manager-modal__item{display:flex;align-items:center;gap:.5em;width:100%}.visual-manager-modal__item-number{display:flex;align-items:center;justify-content:center;min-width:1.5em;height:1.5em;font-size:.9em;font-weight:500;color:#ffffffb3;flex-shrink:0}.visual-manager-modal__input-wrapper{position:relative;flex:1;min-width:0}.visual-manager-modal__item-name{width:100%}.visual-manager-modal__item-name ::ng-deep .content-wrapper{position:relative}.visual-manager-modal__item-name ::ng-deep .input-field,.visual-manager-modal__item-name ::ng-deep .input-field-readonly{padding-right:2.5em}.visual-manager-modal__action-button{position:absolute;right:.4em;top:50%;transform:translateY(-50%);background:linear-gradient(174.9deg,#595859cf -26.99%,#29252dcf 22.7% 100.94%);border:none;cursor:pointer;padding:0;display:flex;align-items:center;justify-content:center;z-index:10;transition:all .2s;width:3em;height:3em;border-radius:50%;pointer-events:auto;-webkit-backdrop-filter:blur(.5326657891px);backdrop-filter:blur(.5326657891px);box-shadow:7.24px 6.58px 17.77px 1.65px #121212a6,0 0 2.45px #0000004d}.visual-manager-modal__action-button:active{opacity:.9;box-shadow:inset 2px 2px 4px #0006,inset -2px -2px 4px #ffffff14}.visual-manager-modal__action-button1{position:absolute;right:.4em;top:50%;transform:translateY(-50%);background:linear-gradient(174.9deg,#69686acf 28.4%,#29252dcf 92.06% 100.94%);border:none;cursor:pointer;padding:0;display:flex;align-items:center;justify-content:center;z-index:10;transition:all .2s;width:3em;height:3em;border-radius:50%;pointer-events:auto;-webkit-backdrop-filter:blur(.5326657891px);backdrop-filter:blur(.5326657891px);box-shadow:0 2.56px 2.56px .82px #0000006e,0 0 10.65px 5.33px #4242429c}.visual-manager-modal__action-icon{width:1em;height:1em;display:block}.visual-manager-modal__drag-handle{width:1em;height:1em;cursor:grab;flex-shrink:0;opacity:.6;-webkit-user-select:none;user-select:none}.visual-manager-modal__drag-handle:active{cursor:grabbing}.visual-manager-modal__item.dragging{opacity:.5}.visual-manager-modal__footer{display:flex;justify-content:space-between;gap:1em;padding-top:1em;border-top:1px solid rgba(255,255,255,.1);margin-top:auto}.visual-manager-modal__footer lib-secondary-btn,.visual-manager-modal__footer lib-primary-btn{flex:1}.visual-manager-modal__content::-webkit-scrollbar{width:.5em}.visual-manager-modal__content::-webkit-scrollbar-track{background:#0003;border-radius:.25em}.visual-manager-modal__content::-webkit-scrollbar-thumb{background:#fff3;border-radius:.25em}.visual-manager-modal__content::-webkit-scrollbar-thumb:hover{background:#ffffff4d}@media (max-width: 768px){:host{font-size:calc(clamp(0px,3.2dvw,15px)*.8)}.visual-manager-modal{width:90%;padding:1.25em 1.5em}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: ButtonsModule }, { kind: "component", type: i2.PrimaryBtnComponent, selector: "lib-primary-btn", inputs: ["hoverOutline", "disabled", "type", "form", "label", "showArrowIcon", "disableTextShadow", "loading$"] }, { kind: "component", type: i2.SecondaryBtnComponent, selector: "lib-secondary-btn", inputs: ["hoverOutline", "disabled", "type", "form", "label", "showArrowIcon", "disableTextShadow", "loading$"] }, { kind: "ngmodule", type: InputFieldModule }, { kind: "component", type: i2.InputFieldComponent, selector: "lib-input-field,[lib-input-field]", inputs: ["name", "autocomplete", "label", "placeholder", "type", "readonly", "focus", "enableGoogleAddress", "locationAutocompleteConfig", "defaultLocation", "mask", "prefix", "suffix", "maxLength", "value", "address", "textarea", "resize", "counter", "patterns", "trimWhiteSpace", "disabled"], outputs: ["mapError", "locationChange", "keyDown", "onBlur"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }] }); }
|
|
354
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibAutoDelegationModalComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i2.PopupModalService }, { token: MODAL_DATA, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
355
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.14", type: LibAutoDelegationModalComponent, isStandalone: true, selector: "lib-auto-delegation-modal", inputs: { countdown: "countdown", expandedBaseCard: "expandedBaseCard", data: "data", menuItems: "menuItems" }, outputs: { event: "event" }, providers: [LibModalComponent], viewQueries: [{ propertyName: "childModalElementRef", first: true, predicate: ["childModalElementRef"], descendants: true }], ngImport: i0, template: "<div class=\"auto-delegation\" [ngClass]=\"{ 'edit-radus': !componentData?.expandedBaseCard }\">\n <header class=\"auto-delegation__header\">\n <div class=\"auto-delegation__info\">\n <img class=\"auto-delegation__avatar\" [src]=\"componentData?.data?.imgSrc\" alt=\"User Avatar\" />\n <div class=\"auto-delegation__wapper overflow\">\n <div class=\"auto-delegation__title overflow\">{{ componentData?.data?.title }}</div>\n <span class=\"auto-delegation__name\">{{ componentData?.data?.name }}, </span>\n <span class=\"auto-delegation__location\">{{ componentData?.data?.location }}</span>\n </div>\n </div>\n @if (componentData?.menuItems?.length) {\n <div class=\"auto-delegation__menu\">\n <div>\n <lib-menu-btn [disableTranslation]=\"true\" [menuItems]=\"componentData?.menuItems\">\n <img height=\"25px\" width=\"5px\" src=\"assets/auto-delegation-modal/menu.svg\" alt=\"\" />\n </lib-menu-btn>\n </div>\n </div>\n }\n </header>\n <div class=\"auto-delegation__details\">\n <div class=\"auto-delegation__meetings\">\n <div class=\"auto-delegation__meetings-count gradient-text\">{{ componentData?.data?.meetings }} {{ 'AUTO_DELEGATION.MEETINGS' | translate }}</div>\n <div class=\"auto-delegation__meetings-duration gradient-text\">{{ componentData?.data?.days }}</div>\n </div>\n <div class=\"auto-delegation__price\">\n <div class=\"auto-delegation__price-value gradient-text\">\n $\n <div class=\"auto-delegation__price-number gradient-text\">{{ componentData?.data?.price }}</div>\n </div>\n </div>\n </div>\n <div class=\"auto-delegation__lists\">\n <ul class=\"auto-delegation__lists-features\">\n @for (opt of componentData?.data?.planOptions; track opt) {\n <li class=\"auto-delegation__lists-feature\">{{ opt }}</li>\n }\n </ul>\n </div>\n\n <div class=\"auto-delegation__action\">\n <div class=\"auto-delegation__action-timer\">\n <div class=\"auto-delegation__countdown\">\n <!-- Background Image -->\n <img class=\"auto-delegation__countdown-background-image\" src=\"assets/auto-delegation-modal/timer-center-dot.svg\" />\n <!-- SVG Countdown Animation -->\n <svg class=\"auto-delegation__countdown-active-stroke\" width=\"100%\" height=\"100%\" viewBox=\"0 0 103 103\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g\n class=\"auto-delegation__countdown-active-g\"\n [attr.mask]=\"'url(#' + activeCountdownPathId + ')'\"\n opacity=\"1\"\n [style.transform]=\"'rotate(' + 0 + 'deg)'\"\n style=\"transform-origin: center\"\n >\n <circle cx=\"50\" cy=\"50\" r=\"50\" fill=\"#FFB5E9\" />\n </g>\n <defs>\n <mask [attr.id]=\"activeCountdownPathId\">\n <circle\n d=\"M 9.04 78.68 A 50 50 0 1 1 90.96 78.68\"\n class=\"auto-delegation__animated-path\"\n cx=\"50\"\n cy=\"50\"\n r=\"42.5\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-width=\"10.64\"\n [attr.stroke-dasharray]=\"totalStrokeLength\"\n [attr.stroke-dashoffset]=\"strokeDashOffset\"\n />\n </mask>\n </defs>\n </svg>\n\n <!-- Countdown Timer -->\n <div class=\"auto-delegation__countdown-number\">{{ currentCountdownAt }} s</div>\n </div>\n </div>\n\n <div #childModalElementRef class=\"auto-delegation__glowing-text\" (click)=\"accept()\">{{ 'AUTO_DELEGATION.ACCEPT_REQUEST' | translate }}</div>\n <div class=\"auto-delegation__close-button\" (click)=\"reject()\">\n <img class=\"auto-delegation__close-icon\" src=\"assets/auto-delegation-modal/cross.svg\" alt=\"cross-icon\" />\n </div>\n </div>\n <div class=\"auto-delegation__dropDown\">\n <span (click)=\"componentData.expandedBaseCard = !componentData.expandedBaseCard\"\n >{{ 'DASHBOARD.SEE_' + (componentData?.expandedBaseCard ? 'LESS' : 'MORE') | translate }}...\n </span>\n </div>\n\n @if (componentData?.expandedBaseCard) {\n <div class=\"auto-delegation__profile\" [@dropDownMenu]>\n <div class=\"auto-delegation__profile-header\">\n <div>\n <h3 class=\"red-text\">{{ 'AUTO_DELEGATION.SCORE_PREFERRED' | translate }}</h3>\n <p>{{ componentData?.data?.score }} / {{ componentData?.data?.preferred }}+</p>\n </div>\n <div>\n <h3 class=\"red-text text-right\">{{ 'AUTO_DELEGATION.LIFE_TIME_FEE' | translate }}</h3>\n <p class=\"text-right\">{{ componentData?.data?.lifeTimeFee }}</p>\n </div>\n </div>\n <div class=\"auto-delegation__profile-header\">\n <div>\n <h3 class=\"red-text\">{{ 'AUTO_DELEGATION.LIFE_TIME_MEETUPS' | translate }}</h3>\n <p>{{ componentData?.data?.lifeTimeMeetups }}</p>\n </div>\n <div>\n <h3 class=\"red-text text-right\">{{ 'AUTO_DELEGATION.JOIN_DATE' | translate }}</h3>\n <p class=\"text-right\">{{ componentData?.data?.joinDate }}</p>\n </div>\n </div>\n <div class=\"auto-delegation__profile-summary-container\">\n <div class=\"auto-delegation__profile-summary\">\n <div>\n <h4>{{ 'AUTO_DELEGATION.PREFERENCES' | translate }} <br />{{ 'AUTO_DELEGATION.SUMMARY' | translate }}:</h4>\n <div>\n <p>\n {{ componentData?.data?.preferences?.bust?.value }}\u00B1{{ componentData?.data?.preferences?.bust?.moe }} {{ componentData?.data?.preferences?.waist?.value }}\u00B1{{\n componentData?.data?.preferences?.waist?.moe\n }}\n {{ componentData?.data?.preferences?.height?.value }}\u00B1{{ componentData?.data?.preferences?.height?.moe }}\n </p>\n </div>\n <div>\n <p>{{ 'AUTO_DELEGATION.CELIBACY' | translate }} {{ componentData?.data?.preferences.celibacy }}+</p>\n <p>{{ 'AUTO_DELEGATION.COOPERATION' | translate }} {{ componentData?.data?.preferences.cooperation }}+</p>\n <p>{{ 'AUTO_DELEGATION.INTELLIGENCE' | translate }} {{ componentData?.data?.preferences.intelligence }}+</p>\n </div>\n </div>\n <div>\n <h4 class=\"text-right\">{{ 'AUTO_DELEGATION.PREFERENCES_PROFILE' | translate }}</h4>\n <p class=\"text-right\">{{ componentData?.data?.preferencesProfile }}</p>\n <div>\n <h4 class=\"text-right\">{{ 'AUTO_DELEGATION.WEIGHT_HEIGHT_PREF' | translate }}</h4>\n <p class=\"text-right\">{{ componentData?.data?.weight }}/{{ componentData?.data?.heightpref }}</p>\n </div>\n </div>\n </div>\n <div class=\"auto-delegation__profile-summary\">\n <div>\n <h4>\n {{ 'AUTO_DELEGATION.PROFILE' | translate }} <br />\n {{ 'AUTO_DELEGATION.SUMMARY' | translate }}:\n </h4>\n <div *ngFor=\"let item of componentData?.data?.profile\">\n <p>{{ item }}</p>\n </div>\n </div>\n <div class=\"auto-delegation__col-center\">\n <h4 class=\"text-right\">{{ 'AUTO_DELEGATION.COMMUNICATION_STYLE' | translate }}</h4>\n <p class=\"text-right\">{{ componentData?.data?.communicationStyle }}</p>\n <div>\n <h4 class=\"text-right\">{{ 'AUTO_DELEGATION.GOAL' | translate }}</h4>\n <p class=\"text-right\">{{ componentData?.data?.goal }}</p>\n </div>\n </div>\n </div>\n </div>\n </div>\n }\n</div>\n", styles: [":host{font-size:clamp(0px,3.2dvw,15px)}:host *{box-sizing:border-box}.auto-delegation{-webkit-backdrop-filter:blur(.625em);backdrop-filter:blur(.625em);background:#d3d3d333;color:#fff;padding:1.625em 2.75em 2.25em;width:28.125em;margin:0 auto;border-radius:1.5625em;font-family:Gilroy;overflow-y:scroll;max-height:95vh}.auto-delegation__header{display:flex;justify-content:space-between;align-items:flex-start}.auto-delegation__details{display:flex;justify-content:space-between;align-items:center}.auto-delegation__avatar{width:3.75em;height:3.75em;border-radius:50%;object-fit:cover}.auto-delegation__wapper{padding-bottom:.375em}.auto-delegation__info{display:flex;gap:.75em;align-items:center;width:18.75em;height:4.6875em}.auto-delegation__title{font-size:1.875em;font-weight:400;padding-bottom:.5em;font-family:Calistoga;width:13.75em}.auto-delegation__name{font-size:.875em;font-weight:600;font-family:Gilroy}.auto-delegation__menu{cursor:pointer}.auto-delegation__location{font-size:.875em;font-weight:400;font-family:Gilroy;color:#ccc}.auto-delegation__meeting{width:100%;height:100%}.auto-delegation__meetings-count,.auto-delegation__meetings-duration{font-family:Gilroy;font-size:1.0625em;font-weight:400}.auto-delegation__price{text-align:end}.auto-delegation__price-value{display:flex;justify-content:flex-end;align-items:flex-start;gap:.25em}.auto-delegation__price-number{font-size:2.25em;font-weight:400}.auto-delegation__price-market{font-size:.5em;color:#8e8e8e}.auto-delegation__lists-features{padding-left:.9375em}.auto-delegation__lists{list-style:none;display:flex;justify-content:space-between;align-items:flex-start}.auto-delegation__action{border-radius:2em;background-color:#2b2929;display:flex;align-items:center;margin-top:.3125em;padding:0;height:3.4375em;justify-content:space-between}.auto-delegation__action__timer{border:.0625em solid gray;border-radius:100%;height:3.125em;width:3.125em;font-size:.875em;color:#f39c12}.auto-delegation__summary,.auto-delegation__preferences{margin-top:1em;font-size:.875em;line-height:1.5}.auto-delegation__preferences-summary{font-size:.75em;color:#aaa}.auto-delegation__glowing-text{font-family:Calistoga;font-size:1.5em;font-weight:800;color:#fff;text-align:center;margin-right:1.25em;text-shadow:0 0 .3125em #ff89ac,0 0 .625em #ff89ac,0 0 1.25em #ff89ac,0 0 2.5em #ff2475,0 0 5em #ff2475;-webkit-text-fill-color:#fff;cursor:pointer}.auto-delegation__close-button{display:flex;align-items:center;background:linear-gradient(228deg,#101113 10%,#2b2f33);padding:.625em;border-radius:100%;border:.0625em solid black;margin-right:.3125em;cursor:pointer}.auto-delegation__close-icon{width:1.375em;height:1.375em}.auto-delegation__dropDown{margin-top:.9375em;margin-bottom:.625em;display:flex;justify-content:center}.auto-delegation__dropDown>span{font-family:Gilroy;cursor:pointer;font-size:.625em;color:#8e8e8e}.auto-delegation__profile-summary-container{margin-top:1.25em}.auto-delegation__profile{overflow:hidden}.auto-delegation__profile-header,.auto-delegation__profile-summary{display:flex;justify-content:space-between}.auto-delegation__profile-header>div,.auto-delegation__profile-summary>div{text-align:left;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:11.25em}.auto-delegation__profile-summary div h4{font-weight:500;font-family:Gilroy;font-size:1em;margin-bottom:0;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.auto-delegation__profile-summary div p{color:#8e8e8e;font-size:.85em;font-weight:400;font-family:Gilroy;margin:.125em!important;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.auto-delegation__countdown{position:relative;width:4.375em;height:4.375em;right:.75em}.auto-delegation__countdown-background-image{background:linear-gradient(274deg,#232323 50%,#2b2f33);box-shadow:.01em -.0525em 1.53em #82676e,.49em .49em 1.715em #141415;border:2px solid #464646;border-radius:100%;position:absolute;top:.6em;left:.9em;width:3.2em;height:3.2em}.auto-delegation__countdown-active-stroke{position:absolute;width:3.5em;height:3.5em;top:.6em;left:.6em;animation-duration:.8s;transform:rotate(90deg)}.auto-delegation__countdown-number{height:3em;width:3em;display:flex;justify-content:center;align-items:center;background:linear-gradient(66deg,#101113 12%,#2b2f33);box-shadow:inset -.49em -.49em 1.715em #453d3f,inset .49em .49em 1.715em #141415;border:2px solid #333333;border-radius:100%;position:absolute;top:50%;left:57%;transform:translate(-50%,-50%);font-weight:600;font-size:.6em;color:#fff}.auto-delegation__col-center{display:flex;flex-direction:column;justify-content:center}.auto-delegation__animated-path{transition:stroke-dashoffset 1s linear}.gradient-text{background:linear-gradient(to top,#efc5d1,#fe638e);-webkit-background-clip:text;-webkit-text-fill-color:transparent}.auto-delegation:before{content:\"\";position:absolute;inset:0;border-radius:1.5625em;padding:.125em;background:linear-gradient(to top,transparent,transparent,#ccabc4);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;z-index:-1}.red-text{font-family:Gilroy;margin-top:.5em;margin-bottom:0;font-size:1.0625em;color:#f4446c;font-weight:600}.text-right{text-align:end}.overflow{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}@media (max-width: 768px){:host{font-size:calc(clamp(0px,3.2dvw,15px)*.8)}}.edit-radus{border-radius:5.5625em!important}.edit-radus:before{border-radius:5.5625em!important}::-webkit-scrollbar{width:0;background:transparent}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: BaseCardModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: ButtonsModule }, { kind: "component", type: i2.MenuBtnComponent, selector: "lib-menu-btn", inputs: ["menuBtnIcon", "menuBtnTooltip", "menuBtnTooltipPosition", "menuBtnIconName", "menuBtnImgUrl", "menuBtnNotificationIconUrl", "menuDirection", "hasNotification", "menuItems", "disableTranslation", "listItem", "listItemIndex", "selectable", "overlayClass", "isUserMenu", "onlyCloseOnClickOutside", "hoverOutline", "disabled", "type", "form", "label", "showArrowIcon", "disableTextShadow", "loading$"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: PopperModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], animations: [SeeMoreAnimation] }); }
|
|
382
356
|
}
|
|
383
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type:
|
|
357
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibAutoDelegationModalComponent, decorators: [{
|
|
384
358
|
type: Component,
|
|
385
|
-
args: [{ selector: 'lib-visual-manager-modal', standalone: true, imports: [CommonModule, TranslateModule, ButtonsModule, InputFieldModule, ReactiveFormsModule], providers: [LibModalComponent], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "<div class=\"visual-manager-modal\" #childModalElementRef>\n <header class=\"visual-manager-modal__header\">\n <div class=\"visual-manager-modal__header-left\">\n <img class=\"visual-manager-modal__filter-icon\" src=\"assets/icons/filter-icon.svg\" alt=\"Filter icon\" />\n <h2 class=\"visual-manager-modal__title\">{{ 'VISUAL_MANAGER_MODAL.TITLE' | translate }}</h2>\n </div>\n <button class=\"visual-manager-modal__close-button\" (click)=\"close()\">\n <img class=\"visual-manager-modal__close-icon\" src=\"assets/icons/close-icon.svg\" alt=\"Close\" />\n </button>\n </header>\n\n <div class=\"visual-manager-modal__content\">\n <!-- Selected Items Section -->\n @if (selectedItems.length > 0) {\n <div class=\"visual-manager-modal__section\">\n <ol class=\"visual-manager-modal__list visual-manager-modal__list--ordered\">\n @for (preference of selectedItems; track preference.id; let i = $index) {\n <li \n class=\"visual-manager-modal__item\"\n (dragover)=\"onDragOver($event)\"\n (drop)=\"onDrop($event, preference, true)\"\n >\n <span class=\"visual-manager-modal__item-number\">{{ i + 1 }}</span>\n <div class=\"visual-manager-modal__input-wrapper\">\n <lib-input-field\n class=\"visual-manager-modal__item-name\"\n [formControl]=\"getPreferenceControl(preference.id)\"\n (valueChange)=\"onPreferenceNameChange(preference, $event)\"\n ></lib-input-field>\n <button class=\"visual-manager-modal__action-button1\" > </button>\n <button\n class=\"visual-manager-modal__action-button\"\n (click)=\"togglePreference(preference, $event)\"\n >\n <img class=\"visual-manager-modal__action-icon\" src=\"assets/icons/close-icon.svg\" alt=\"Remove\" />\n </button>\n </div>\n <img \n class=\"visual-manager-modal__drag-handle\" \n src=\"assets/icons/drag-handle.svg\" \n alt=\"Drag handle\"\n draggable=\"true\"\n (dragstart)=\"onDragStart($event, preference, true)\"\n (dragend)=\"onDragEnd($event)\"\n />\n </li>\n }\n </ol>\n </div>\n }\n\n <!-- Separator -->\n @if (selectedItems.length > 0 && deselectedItems.length > 0) {\n <div class=\"visual-manager-modal__separator\"></div>\n }\n\n <!-- Deselected Items Section -->\n @if (deselectedItems.length > 0) {\n <div class=\"visual-manager-modal__section\">\n <ul class=\"visual-manager-modal__list\">\n @for (preference of deselectedItems; track preference.id) {\n <li \n class=\"visual-manager-modal__item\"\n (dragover)=\"onDragOver($event)\"\n (drop)=\"onDrop($event, preference, false)\"\n >\n <div class=\"visual-manager-modal__input-wrapper\">\n <lib-input-field\n class=\"visual-manager-modal__item-name\"\n [formControl]=\"getPreferenceControl(preference.id)\"\n (valueChange)=\"onPreferenceNameChange(preference, $event)\"\n ></lib-input-field>\n <button class=\"visual-manager-modal__action-button1\" > </button>\n <button\n class=\"visual-manager-modal__action-button\"\n (click)=\"togglePreference(preference, $event)\"\n >\n <img class=\"visual-manager-modal__action-icon\" src=\"assets/icons/plus.svg\" alt=\"Add\" />\n </button>\n </div>\n <img \n class=\"visual-manager-modal__drag-handle\" \n src=\"assets/icons/drag-handle.svg\" \n alt=\"Drag handle\"\n draggable=\"true\"\n (dragstart)=\"onDragStart($event, preference, false)\"\n (dragend)=\"onDragEnd($event)\"\n />\n </li>\n }\n </ul>\n </div>\n }\n </div>\n\n <footer class=\"visual-manager-modal__footer\">\n <lib-secondary-btn (click)=\"reset()\">\n {{ 'VISUAL_MANAGER_MODAL.RESET' | translate }}\n </lib-secondary-btn>\n <lib-primary-btn (click)=\"apply()\">\n {{ 'VISUAL_MANAGER_MODAL.APPLY' | translate }}\n </lib-primary-btn>\n </footer>\n</div>\n\n", styles: [":host{font-size:clamp(0px,3.2dvw,15px)}:host *{box-sizing:border-box}.visual-manager-modal{-webkit-backdrop-filter:blur(.625em);backdrop-filter:blur(.625em);background:linear-gradient(180deg,#323133,#1f1e20);color:#fff;padding:1.5em 2em;width:28.125em;margin:0 auto;border-radius:1.5625em;font-family:Gilroy;box-shadow:.5em .5em 1em #00000080,-.5em -.5em 1em #ffffff0d;position:relative;display:flex;flex-direction:column}.visual-manager-modal__header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:1.5em;padding-bottom:1em;border-bottom:1px solid rgba(255,255,255,.1);gap:.75em}.visual-manager-modal__header-left{display:flex;flex-direction:column;align-items:center;gap:.5em;flex:1}.visual-manager-modal__filter-icon{width:3em;height:3em;cursor:pointer;flex-shrink:0}.visual-manager-modal__title{font-size:1.25em;font-weight:500;font-family:Gilroy;margin:0;color:#fff}.visual-manager-modal__close-button{background:transparent;border:none;cursor:pointer;padding:.25em;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:background .2s}.visual-manager-modal__close-button:hover{background:#ffffff1a}.visual-manager-modal__close-icon{width:2em;height:2em;filter:brightness(0) saturate(100%) invert(39%) sepia(0%) saturate(0%) hue-rotate(0deg) brightness(98%) contrast(105%)}.visual-manager-modal__content{margin-bottom:1.5em;max-height:50vh;overflow-y:auto;flex:1;display:flex;flex-direction:column;gap:1em}.visual-manager-modal__section{display:flex;flex-direction:column;gap:.75em}.visual-manager-modal__section-label{font-size:.9em;font-weight:500;color:#4a9eff;margin-bottom:.25em}.visual-manager-modal__separator{height:1px;background:#ffffff1a;margin:.5em 0}.visual-manager-modal__list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.75em}.visual-manager-modal__list--ordered{list-style:none}.visual-manager-modal__item{display:flex;align-items:center;gap:.5em;width:100%}.visual-manager-modal__item-number{display:flex;align-items:center;justify-content:center;min-width:1.5em;height:1.5em;font-size:.9em;font-weight:500;color:#ffffffb3;flex-shrink:0}.visual-manager-modal__input-wrapper{position:relative;flex:1;min-width:0}.visual-manager-modal__item-name{width:100%}.visual-manager-modal__item-name ::ng-deep .content-wrapper{position:relative}.visual-manager-modal__item-name ::ng-deep .input-field,.visual-manager-modal__item-name ::ng-deep .input-field-readonly{padding-right:2.5em}.visual-manager-modal__action-button{position:absolute;right:.4em;top:50%;transform:translateY(-50%);background:linear-gradient(174.9deg,#595859cf -26.99%,#29252dcf 22.7% 100.94%);border:none;cursor:pointer;padding:0;display:flex;align-items:center;justify-content:center;z-index:10;transition:all .2s;width:3em;height:3em;border-radius:50%;pointer-events:auto;-webkit-backdrop-filter:blur(.5326657891px);backdrop-filter:blur(.5326657891px);box-shadow:7.24px 6.58px 17.77px 1.65px #121212a6,0 0 2.45px #0000004d}.visual-manager-modal__action-button:active{opacity:.9;box-shadow:inset 2px 2px 4px #0006,inset -2px -2px 4px #ffffff14}.visual-manager-modal__action-button1{position:absolute;right:.4em;top:50%;transform:translateY(-50%);background:linear-gradient(174.9deg,#69686acf 28.4%,#29252dcf 92.06% 100.94%);border:none;cursor:pointer;padding:0;display:flex;align-items:center;justify-content:center;z-index:10;transition:all .2s;width:3em;height:3em;border-radius:50%;pointer-events:auto;-webkit-backdrop-filter:blur(.5326657891px);backdrop-filter:blur(.5326657891px);box-shadow:0 2.56px 2.56px .82px #0000006e,0 0 10.65px 5.33px #4242429c}.visual-manager-modal__action-icon{width:1em;height:1em;display:block}.visual-manager-modal__drag-handle{width:1em;height:1em;cursor:grab;flex-shrink:0;opacity:.6;-webkit-user-select:none;user-select:none}.visual-manager-modal__drag-handle:active{cursor:grabbing}.visual-manager-modal__item.dragging{opacity:.5}.visual-manager-modal__footer{display:flex;justify-content:space-between;gap:1em;padding-top:1em;border-top:1px solid rgba(255,255,255,.1);margin-top:auto}.visual-manager-modal__footer lib-secondary-btn,.visual-manager-modal__footer lib-primary-btn{flex:1}.visual-manager-modal__content::-webkit-scrollbar{width:.5em}.visual-manager-modal__content::-webkit-scrollbar-track{background:#0003;border-radius:.25em}.visual-manager-modal__content::-webkit-scrollbar-thumb{background:#fff3;border-radius:.25em}.visual-manager-modal__content::-webkit-scrollbar-thumb:hover{background:#ffffff4d}@media (max-width: 768px){:host{font-size:calc(clamp(0px,3.2dvw,15px)*.8)}.visual-manager-modal{width:90%;padding:1.25em 1.5em}}\n"] }]
|
|
359
|
+
args: [{ selector: 'lib-auto-delegation-modal', animations: [SeeMoreAnimation], imports: [CommonModule, BaseCardModule, TranslateModule, ButtonsModule, MatMenuModule, MatButtonModule, PopperModule], providers: [LibModalComponent], template: "<div class=\"auto-delegation\" [ngClass]=\"{ 'edit-radus': !componentData?.expandedBaseCard }\">\n <header class=\"auto-delegation__header\">\n <div class=\"auto-delegation__info\">\n <img class=\"auto-delegation__avatar\" [src]=\"componentData?.data?.imgSrc\" alt=\"User Avatar\" />\n <div class=\"auto-delegation__wapper overflow\">\n <div class=\"auto-delegation__title overflow\">{{ componentData?.data?.title }}</div>\n <span class=\"auto-delegation__name\">{{ componentData?.data?.name }}, </span>\n <span class=\"auto-delegation__location\">{{ componentData?.data?.location }}</span>\n </div>\n </div>\n @if (componentData?.menuItems?.length) {\n <div class=\"auto-delegation__menu\">\n <div>\n <lib-menu-btn [disableTranslation]=\"true\" [menuItems]=\"componentData?.menuItems\">\n <img height=\"25px\" width=\"5px\" src=\"assets/auto-delegation-modal/menu.svg\" alt=\"\" />\n </lib-menu-btn>\n </div>\n </div>\n }\n </header>\n <div class=\"auto-delegation__details\">\n <div class=\"auto-delegation__meetings\">\n <div class=\"auto-delegation__meetings-count gradient-text\">{{ componentData?.data?.meetings }} {{ 'AUTO_DELEGATION.MEETINGS' | translate }}</div>\n <div class=\"auto-delegation__meetings-duration gradient-text\">{{ componentData?.data?.days }}</div>\n </div>\n <div class=\"auto-delegation__price\">\n <div class=\"auto-delegation__price-value gradient-text\">\n $\n <div class=\"auto-delegation__price-number gradient-text\">{{ componentData?.data?.price }}</div>\n </div>\n </div>\n </div>\n <div class=\"auto-delegation__lists\">\n <ul class=\"auto-delegation__lists-features\">\n @for (opt of componentData?.data?.planOptions; track opt) {\n <li class=\"auto-delegation__lists-feature\">{{ opt }}</li>\n }\n </ul>\n </div>\n\n <div class=\"auto-delegation__action\">\n <div class=\"auto-delegation__action-timer\">\n <div class=\"auto-delegation__countdown\">\n <!-- Background Image -->\n <img class=\"auto-delegation__countdown-background-image\" src=\"assets/auto-delegation-modal/timer-center-dot.svg\" />\n <!-- SVG Countdown Animation -->\n <svg class=\"auto-delegation__countdown-active-stroke\" width=\"100%\" height=\"100%\" viewBox=\"0 0 103 103\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g\n class=\"auto-delegation__countdown-active-g\"\n [attr.mask]=\"'url(#' + activeCountdownPathId + ')'\"\n opacity=\"1\"\n [style.transform]=\"'rotate(' + 0 + 'deg)'\"\n style=\"transform-origin: center\"\n >\n <circle cx=\"50\" cy=\"50\" r=\"50\" fill=\"#FFB5E9\" />\n </g>\n <defs>\n <mask [attr.id]=\"activeCountdownPathId\">\n <circle\n d=\"M 9.04 78.68 A 50 50 0 1 1 90.96 78.68\"\n class=\"auto-delegation__animated-path\"\n cx=\"50\"\n cy=\"50\"\n r=\"42.5\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-width=\"10.64\"\n [attr.stroke-dasharray]=\"totalStrokeLength\"\n [attr.stroke-dashoffset]=\"strokeDashOffset\"\n />\n </mask>\n </defs>\n </svg>\n\n <!-- Countdown Timer -->\n <div class=\"auto-delegation__countdown-number\">{{ currentCountdownAt }} s</div>\n </div>\n </div>\n\n <div #childModalElementRef class=\"auto-delegation__glowing-text\" (click)=\"accept()\">{{ 'AUTO_DELEGATION.ACCEPT_REQUEST' | translate }}</div>\n <div class=\"auto-delegation__close-button\" (click)=\"reject()\">\n <img class=\"auto-delegation__close-icon\" src=\"assets/auto-delegation-modal/cross.svg\" alt=\"cross-icon\" />\n </div>\n </div>\n <div class=\"auto-delegation__dropDown\">\n <span (click)=\"componentData.expandedBaseCard = !componentData.expandedBaseCard\"\n >{{ 'DASHBOARD.SEE_' + (componentData?.expandedBaseCard ? 'LESS' : 'MORE') | translate }}...\n </span>\n </div>\n\n @if (componentData?.expandedBaseCard) {\n <div class=\"auto-delegation__profile\" [@dropDownMenu]>\n <div class=\"auto-delegation__profile-header\">\n <div>\n <h3 class=\"red-text\">{{ 'AUTO_DELEGATION.SCORE_PREFERRED' | translate }}</h3>\n <p>{{ componentData?.data?.score }} / {{ componentData?.data?.preferred }}+</p>\n </div>\n <div>\n <h3 class=\"red-text text-right\">{{ 'AUTO_DELEGATION.LIFE_TIME_FEE' | translate }}</h3>\n <p class=\"text-right\">{{ componentData?.data?.lifeTimeFee }}</p>\n </div>\n </div>\n <div class=\"auto-delegation__profile-header\">\n <div>\n <h3 class=\"red-text\">{{ 'AUTO_DELEGATION.LIFE_TIME_MEETUPS' | translate }}</h3>\n <p>{{ componentData?.data?.lifeTimeMeetups }}</p>\n </div>\n <div>\n <h3 class=\"red-text text-right\">{{ 'AUTO_DELEGATION.JOIN_DATE' | translate }}</h3>\n <p class=\"text-right\">{{ componentData?.data?.joinDate }}</p>\n </div>\n </div>\n <div class=\"auto-delegation__profile-summary-container\">\n <div class=\"auto-delegation__profile-summary\">\n <div>\n <h4>{{ 'AUTO_DELEGATION.PREFERENCES' | translate }} <br />{{ 'AUTO_DELEGATION.SUMMARY' | translate }}:</h4>\n <div>\n <p>\n {{ componentData?.data?.preferences?.bust?.value }}\u00B1{{ componentData?.data?.preferences?.bust?.moe }} {{ componentData?.data?.preferences?.waist?.value }}\u00B1{{\n componentData?.data?.preferences?.waist?.moe\n }}\n {{ componentData?.data?.preferences?.height?.value }}\u00B1{{ componentData?.data?.preferences?.height?.moe }}\n </p>\n </div>\n <div>\n <p>{{ 'AUTO_DELEGATION.CELIBACY' | translate }} {{ componentData?.data?.preferences.celibacy }}+</p>\n <p>{{ 'AUTO_DELEGATION.COOPERATION' | translate }} {{ componentData?.data?.preferences.cooperation }}+</p>\n <p>{{ 'AUTO_DELEGATION.INTELLIGENCE' | translate }} {{ componentData?.data?.preferences.intelligence }}+</p>\n </div>\n </div>\n <div>\n <h4 class=\"text-right\">{{ 'AUTO_DELEGATION.PREFERENCES_PROFILE' | translate }}</h4>\n <p class=\"text-right\">{{ componentData?.data?.preferencesProfile }}</p>\n <div>\n <h4 class=\"text-right\">{{ 'AUTO_DELEGATION.WEIGHT_HEIGHT_PREF' | translate }}</h4>\n <p class=\"text-right\">{{ componentData?.data?.weight }}/{{ componentData?.data?.heightpref }}</p>\n </div>\n </div>\n </div>\n <div class=\"auto-delegation__profile-summary\">\n <div>\n <h4>\n {{ 'AUTO_DELEGATION.PROFILE' | translate }} <br />\n {{ 'AUTO_DELEGATION.SUMMARY' | translate }}:\n </h4>\n <div *ngFor=\"let item of componentData?.data?.profile\">\n <p>{{ item }}</p>\n </div>\n </div>\n <div class=\"auto-delegation__col-center\">\n <h4 class=\"text-right\">{{ 'AUTO_DELEGATION.COMMUNICATION_STYLE' | translate }}</h4>\n <p class=\"text-right\">{{ componentData?.data?.communicationStyle }}</p>\n <div>\n <h4 class=\"text-right\">{{ 'AUTO_DELEGATION.GOAL' | translate }}</h4>\n <p class=\"text-right\">{{ componentData?.data?.goal }}</p>\n </div>\n </div>\n </div>\n </div>\n </div>\n }\n</div>\n", styles: [":host{font-size:clamp(0px,3.2dvw,15px)}:host *{box-sizing:border-box}.auto-delegation{-webkit-backdrop-filter:blur(.625em);backdrop-filter:blur(.625em);background:#d3d3d333;color:#fff;padding:1.625em 2.75em 2.25em;width:28.125em;margin:0 auto;border-radius:1.5625em;font-family:Gilroy;overflow-y:scroll;max-height:95vh}.auto-delegation__header{display:flex;justify-content:space-between;align-items:flex-start}.auto-delegation__details{display:flex;justify-content:space-between;align-items:center}.auto-delegation__avatar{width:3.75em;height:3.75em;border-radius:50%;object-fit:cover}.auto-delegation__wapper{padding-bottom:.375em}.auto-delegation__info{display:flex;gap:.75em;align-items:center;width:18.75em;height:4.6875em}.auto-delegation__title{font-size:1.875em;font-weight:400;padding-bottom:.5em;font-family:Calistoga;width:13.75em}.auto-delegation__name{font-size:.875em;font-weight:600;font-family:Gilroy}.auto-delegation__menu{cursor:pointer}.auto-delegation__location{font-size:.875em;font-weight:400;font-family:Gilroy;color:#ccc}.auto-delegation__meeting{width:100%;height:100%}.auto-delegation__meetings-count,.auto-delegation__meetings-duration{font-family:Gilroy;font-size:1.0625em;font-weight:400}.auto-delegation__price{text-align:end}.auto-delegation__price-value{display:flex;justify-content:flex-end;align-items:flex-start;gap:.25em}.auto-delegation__price-number{font-size:2.25em;font-weight:400}.auto-delegation__price-market{font-size:.5em;color:#8e8e8e}.auto-delegation__lists-features{padding-left:.9375em}.auto-delegation__lists{list-style:none;display:flex;justify-content:space-between;align-items:flex-start}.auto-delegation__action{border-radius:2em;background-color:#2b2929;display:flex;align-items:center;margin-top:.3125em;padding:0;height:3.4375em;justify-content:space-between}.auto-delegation__action__timer{border:.0625em solid gray;border-radius:100%;height:3.125em;width:3.125em;font-size:.875em;color:#f39c12}.auto-delegation__summary,.auto-delegation__preferences{margin-top:1em;font-size:.875em;line-height:1.5}.auto-delegation__preferences-summary{font-size:.75em;color:#aaa}.auto-delegation__glowing-text{font-family:Calistoga;font-size:1.5em;font-weight:800;color:#fff;text-align:center;margin-right:1.25em;text-shadow:0 0 .3125em #ff89ac,0 0 .625em #ff89ac,0 0 1.25em #ff89ac,0 0 2.5em #ff2475,0 0 5em #ff2475;-webkit-text-fill-color:#fff;cursor:pointer}.auto-delegation__close-button{display:flex;align-items:center;background:linear-gradient(228deg,#101113 10%,#2b2f33);padding:.625em;border-radius:100%;border:.0625em solid black;margin-right:.3125em;cursor:pointer}.auto-delegation__close-icon{width:1.375em;height:1.375em}.auto-delegation__dropDown{margin-top:.9375em;margin-bottom:.625em;display:flex;justify-content:center}.auto-delegation__dropDown>span{font-family:Gilroy;cursor:pointer;font-size:.625em;color:#8e8e8e}.auto-delegation__profile-summary-container{margin-top:1.25em}.auto-delegation__profile{overflow:hidden}.auto-delegation__profile-header,.auto-delegation__profile-summary{display:flex;justify-content:space-between}.auto-delegation__profile-header>div,.auto-delegation__profile-summary>div{text-align:left;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:11.25em}.auto-delegation__profile-summary div h4{font-weight:500;font-family:Gilroy;font-size:1em;margin-bottom:0;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.auto-delegation__profile-summary div p{color:#8e8e8e;font-size:.85em;font-weight:400;font-family:Gilroy;margin:.125em!important;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.auto-delegation__countdown{position:relative;width:4.375em;height:4.375em;right:.75em}.auto-delegation__countdown-background-image{background:linear-gradient(274deg,#232323 50%,#2b2f33);box-shadow:.01em -.0525em 1.53em #82676e,.49em .49em 1.715em #141415;border:2px solid #464646;border-radius:100%;position:absolute;top:.6em;left:.9em;width:3.2em;height:3.2em}.auto-delegation__countdown-active-stroke{position:absolute;width:3.5em;height:3.5em;top:.6em;left:.6em;animation-duration:.8s;transform:rotate(90deg)}.auto-delegation__countdown-number{height:3em;width:3em;display:flex;justify-content:center;align-items:center;background:linear-gradient(66deg,#101113 12%,#2b2f33);box-shadow:inset -.49em -.49em 1.715em #453d3f,inset .49em .49em 1.715em #141415;border:2px solid #333333;border-radius:100%;position:absolute;top:50%;left:57%;transform:translate(-50%,-50%);font-weight:600;font-size:.6em;color:#fff}.auto-delegation__col-center{display:flex;flex-direction:column;justify-content:center}.auto-delegation__animated-path{transition:stroke-dashoffset 1s linear}.gradient-text{background:linear-gradient(to top,#efc5d1,#fe638e);-webkit-background-clip:text;-webkit-text-fill-color:transparent}.auto-delegation:before{content:\"\";position:absolute;inset:0;border-radius:1.5625em;padding:.125em;background:linear-gradient(to top,transparent,transparent,#ccabc4);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;z-index:-1}.red-text{font-family:Gilroy;margin-top:.5em;margin-bottom:0;font-size:1.0625em;color:#f4446c;font-weight:600}.text-right{text-align:end}.overflow{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}@media (max-width: 768px){:host{font-size:calc(clamp(0px,3.2dvw,15px)*.8)}}.edit-radus{border-radius:5.5625em!important}.edit-radus:before{border-radius:5.5625em!important}::-webkit-scrollbar{width:0;background:transparent}\n"] }]
|
|
386
360
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i2.PopupModalService }, { type: undefined, decorators: [{
|
|
387
361
|
type: Optional
|
|
388
362
|
}, {
|
|
@@ -391,24 +365,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImpo
|
|
|
391
365
|
}] }], propDecorators: { childModalElementRef: [{
|
|
392
366
|
type: ViewChild,
|
|
393
367
|
args: ['childModalElementRef']
|
|
368
|
+
}], countdown: [{
|
|
369
|
+
type: Input
|
|
370
|
+
}], expandedBaseCard: [{
|
|
371
|
+
type: Input
|
|
394
372
|
}], data: [{
|
|
395
373
|
type: Input
|
|
374
|
+
}], menuItems: [{
|
|
375
|
+
type: Input
|
|
396
376
|
}], event: [{
|
|
397
377
|
type: Output
|
|
398
378
|
}] } });
|
|
399
379
|
|
|
400
|
-
var Direction;
|
|
401
|
-
(function (Direction) {
|
|
402
|
-
Direction["horizontal"] = "horizontal";
|
|
403
|
-
Direction["vertical"] = "vertical";
|
|
404
|
-
})(Direction || (Direction = {}));
|
|
405
|
-
|
|
406
|
-
var AgendaItemType;
|
|
407
|
-
(function (AgendaItemType) {
|
|
408
|
-
AgendaItemType["DAY"] = "day";
|
|
409
|
-
AgendaItemType["AD"] = "ad";
|
|
410
|
-
})(AgendaItemType || (AgendaItemType = {}));
|
|
411
|
-
|
|
412
380
|
class AgendaDayCardComponent {
|
|
413
381
|
constructor() {
|
|
414
382
|
this.fullName = '';
|
|
@@ -568,24 +536,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImpo
|
|
|
568
536
|
}]
|
|
569
537
|
}] });
|
|
570
538
|
|
|
571
|
-
var EventTypes;
|
|
572
|
-
(function (EventTypes) {
|
|
573
|
-
EventTypes["DATE"] = "Date";
|
|
574
|
-
EventTypes["GOOGLE"] = "Google";
|
|
575
|
-
EventTypes["MICROSOFT"] = "Microsoft";
|
|
576
|
-
EventTypes["SYSTEM"] = "System";
|
|
577
|
-
EventTypes["USER"] = "User";
|
|
578
|
-
EventTypes["ITINERARY"] = "Itinerary";
|
|
579
|
-
})(EventTypes || (EventTypes = {}));
|
|
580
|
-
|
|
581
|
-
var RecurringTypes;
|
|
582
|
-
(function (RecurringTypes) {
|
|
583
|
-
RecurringTypes["DAILY"] = "DAILY";
|
|
584
|
-
RecurringTypes["WEEKLY"] = "WEEKLY";
|
|
585
|
-
RecurringTypes["MONTHLY"] = "MONTHLY";
|
|
586
|
-
RecurringTypes["ANNUALLY"] = "ANNUALLY";
|
|
587
|
-
})(RecurringTypes || (RecurringTypes = {}));
|
|
588
|
-
|
|
589
539
|
const recurringOptions = [
|
|
590
540
|
{ title: 'CALENDAR.DOES_NOT_REPEAT', type: null, name: 'Does not repeat' },
|
|
591
541
|
{
|
|
@@ -826,9 +776,8 @@ class FallbackTranslatePipe {
|
|
|
826
776
|
const translated = this.translate.instant(key);
|
|
827
777
|
return translated === key ? fallback : translated;
|
|
828
778
|
}
|
|
829
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: FallbackTranslatePipe, deps: [{ token:
|
|
779
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: FallbackTranslatePipe, deps: [{ token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
830
780
|
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.14", ngImport: i0, type: FallbackTranslatePipe, isStandalone: true, name: "fallbackTranslate" }); }
|
|
831
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: FallbackTranslatePipe, providedIn: 'root' }); }
|
|
832
781
|
}
|
|
833
782
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: FallbackTranslatePipe, decorators: [{
|
|
834
783
|
type: Pipe,
|
|
@@ -836,12 +785,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImpo
|
|
|
836
785
|
name: 'fallbackTranslate',
|
|
837
786
|
standalone: true,
|
|
838
787
|
}]
|
|
839
|
-
}, {
|
|
840
|
-
type: Injectable,
|
|
841
|
-
args: [{
|
|
842
|
-
providedIn: 'root',
|
|
843
|
-
}]
|
|
844
|
-
}], ctorParameters: () => [{ type: i3.TranslateService }] });
|
|
788
|
+
}], ctorParameters: () => [{ type: i1$1.TranslateService }] });
|
|
845
789
|
|
|
846
790
|
class LibEventInfoComponent {
|
|
847
791
|
constructor(fallbackTranslatePipe, calendarUtilService) {
|
|
@@ -861,54 +805,17 @@ class LibEventInfoComponent {
|
|
|
861
805
|
this.note = this.recurringException?.note || this.updatedRecurringException?.note || this.event.note;
|
|
862
806
|
}
|
|
863
807
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibEventInfoComponent, deps: [{ token: FallbackTranslatePipe }, { token: CalendarUtilsService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
864
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.14", type: LibEventInfoComponent, isStandalone: true, selector: "lib-event-info", inputs: { event: "event", calendars: "calendars" }, ngImport: i0, template: "<div class=\"event-info-body\">\n <div class=\"data-item\" *ngIf=\"event.allDay\">\n <span><mat-icon class=\"all-day\">done_all</mat-icon> {{ 'CALENDAR.ALL_DAY' | translate }}</span>\n </div>\n <div class=\"data-item\">\n <span> <mat-icon>event</mat-icon> {{ 'CALENDAR.STARTS' | translate }}</span>\n <span class=\"event-time\">\n {{ recurringException?.startDate || event.recurringStartDate || event.startDate | date: 'yyyy-MM-dd' }}\n <span *ngIf=\"!event.allDay\"> - {{ event.startTime | date: 'h:mm a' }}</span>\n </span>\n </div>\n <div class=\"data-item\">\n <span><mat-icon>event_available</mat-icon> {{ 'CALENDAR.ENDS' | translate }}</span>\n <span class=\"event-time\">\n {{ recurringException?.endDate || event.recurringEndDate || event.endDate | date: 'yyyy-MM-dd' }}\n <span *ngIf=\"!event.allDay\"> - {{ event.endTime | date: 'h:mm a' }}</span>\n </span>\n </div>\n\n <div class=\"data-item\">\n @if (event.recurringPattern?.type) {\n <span><mat-icon>event_repeat</mat-icon> {{ 'CALENDAR.RECURRING' | translate }}</span>\n <span class=\"recurring-type\">{{ 'CALENDAR.' + event.recurringPattern.type | translate }}</span>\n } @else if (address) {\n <span><mat-icon>location_on</mat-icon> {{ 'LOCATION.TITLE' | translate }}</span>\n <span [innerHTML]=\"address\"></span>\n } @else if (calendarAccount) {\n <span><mat-icon>email</mat-icon> {{ 'CALENDAR.ACCOUNT' | translate }}</span>\n <span [style.color]=\"calendarAccount.theme?.backgroundColor || ''\">{{ calendarAccount.email }}</span>\n } @else if (note) {\n <span><mat-icon>event_note</mat-icon> {{ 'FIELDS.NOTE' | translate }}</span>\n <span class=\"event-note\" [innerHTML]=\"note\"></span>\n }\n </div>\n</div>\n", styles: [".text-style,.event-info-body .data-item{font-family:Gilroy-Regular,serif;font-style:normal;font-weight:500;font-size:16px}.event-info-body{padding:0 15px 20px;max-height:calc(var(--viewport-height) * 60);position:relative;display:block;overflow:auto}.event-info-body .data-item{margin-top:20px;display:flex}.event-info-body .data-item.centred{flex-direction:column;align-items:center;margin-bottom:10px}.event-info-body .data-item span{font-size:14px}.event-info-body .data-item span:first-child{min-width:85px}.event-info-body .data-item span:first-child .mat-icon{position:relative;top:-4px}.event-info-body .data-item span.event-time{display:flex;gap:5px}.event-info-body .data-item span .mat-icon{margin:0 5px 0 0}.event-info-body .data-item span:nth-child(1){display:flex;font-weight:500}.event-info-body .data-item span:nth-child(2){margin-left:20px;opacity:.7}.event-info-body .data-item span.recurring-type{background:var(--cyrano-pink-shade-2);color:#fff;padding:5px 10px;border-radius:30px;height:25px;margin-top:-5px}.event-info-body .data-item .mat-icon.all-day{color:var(--cyrano-pink-shade-1)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.DatePipe, name: "date" }, { kind: "pipe", type:
|
|
808
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.14", type: LibEventInfoComponent, isStandalone: true, selector: "lib-event-info", inputs: { event: "event", calendars: "calendars" }, providers: [FallbackTranslatePipe, CalendarUtilsService], ngImport: i0, template: "<div class=\"event-info-body\">\n <div class=\"data-item\" *ngIf=\"event.allDay\">\n <span><mat-icon class=\"all-day\">done_all</mat-icon> {{ 'CALENDAR.ALL_DAY' | translate }}</span>\n </div>\n <div class=\"data-item\">\n <span> <mat-icon>event</mat-icon> {{ 'CALENDAR.STARTS' | translate }}</span>\n <span class=\"event-time\">\n {{ recurringException?.startDate || event.recurringStartDate || event.startDate | date: 'yyyy-MM-dd' }}\n <span *ngIf=\"!event.allDay\"> - {{ event.startTime | date: 'h:mm a' }}</span>\n </span>\n </div>\n <div class=\"data-item\">\n <span><mat-icon>event_available</mat-icon> {{ 'CALENDAR.ENDS' | translate }}</span>\n <span class=\"event-time\">\n {{ recurringException?.endDate || event.recurringEndDate || event.endDate | date: 'yyyy-MM-dd' }}\n <span *ngIf=\"!event.allDay\"> - {{ event.endTime | date: 'h:mm a' }}</span>\n </span>\n </div>\n\n <div class=\"data-item\">\n @if (event.recurringPattern?.type) {\n <span><mat-icon>event_repeat</mat-icon> {{ 'CALENDAR.RECURRING' | translate }}</span>\n <span class=\"recurring-type\">{{ 'CALENDAR.' + event.recurringPattern.type | translate }}</span>\n } @else if (address) {\n <span><mat-icon>location_on</mat-icon> {{ 'LOCATION.TITLE' | translate }}</span>\n <span [innerHTML]=\"address\"></span>\n } @else if (calendarAccount) {\n <span><mat-icon>email</mat-icon> {{ 'CALENDAR.ACCOUNT' | translate }}</span>\n <span [style.color]=\"calendarAccount.theme?.backgroundColor || ''\">{{ calendarAccount.email }}</span>\n } @else if (note) {\n <span><mat-icon>event_note</mat-icon> {{ 'FIELDS.NOTE' | translate }}</span>\n <span class=\"event-note\" [innerHTML]=\"note\"></span>\n }\n </div>\n</div>\n", styles: [".text-style,.event-info-body .data-item{font-family:Gilroy-Regular,serif;font-style:normal;font-weight:500;font-size:16px}.event-info-body{padding:0 15px 20px;max-height:calc(var(--viewport-height) * 60);position:relative;display:block;overflow:auto}.event-info-body .data-item{margin-top:20px;display:flex}.event-info-body .data-item.centred{flex-direction:column;align-items:center;margin-bottom:10px}.event-info-body .data-item span{font-size:14px}.event-info-body .data-item span:first-child{min-width:85px}.event-info-body .data-item span:first-child .mat-icon{position:relative;top:-4px}.event-info-body .data-item span.event-time{display:flex;gap:5px}.event-info-body .data-item span .mat-icon{margin:0 5px 0 0}.event-info-body .data-item span:nth-child(1){display:flex;font-weight:500}.event-info-body .data-item span:nth-child(2){margin-left:20px;opacity:.7}.event-info-body .data-item span.recurring-type{background:var(--cyrano-pink-shade-2);color:#fff;padding:5px 10px;border-radius:30px;height:25px;margin-top:-5px}.event-info-body .data-item .mat-icon.all-day{color:var(--cyrano-pink-shade-1)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.DatePipe, name: "date" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
865
809
|
}
|
|
866
810
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibEventInfoComponent, decorators: [{
|
|
867
811
|
type: Component,
|
|
868
|
-
args: [{ selector: 'lib-event-info', changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule, MatIconModule, FallbackTranslatePipe,
|
|
812
|
+
args: [{ selector: 'lib-event-info', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, MatIconModule, TranslateModule], providers: [FallbackTranslatePipe, CalendarUtilsService], template: "<div class=\"event-info-body\">\n <div class=\"data-item\" *ngIf=\"event.allDay\">\n <span><mat-icon class=\"all-day\">done_all</mat-icon> {{ 'CALENDAR.ALL_DAY' | translate }}</span>\n </div>\n <div class=\"data-item\">\n <span> <mat-icon>event</mat-icon> {{ 'CALENDAR.STARTS' | translate }}</span>\n <span class=\"event-time\">\n {{ recurringException?.startDate || event.recurringStartDate || event.startDate | date: 'yyyy-MM-dd' }}\n <span *ngIf=\"!event.allDay\"> - {{ event.startTime | date: 'h:mm a' }}</span>\n </span>\n </div>\n <div class=\"data-item\">\n <span><mat-icon>event_available</mat-icon> {{ 'CALENDAR.ENDS' | translate }}</span>\n <span class=\"event-time\">\n {{ recurringException?.endDate || event.recurringEndDate || event.endDate | date: 'yyyy-MM-dd' }}\n <span *ngIf=\"!event.allDay\"> - {{ event.endTime | date: 'h:mm a' }}</span>\n </span>\n </div>\n\n <div class=\"data-item\">\n @if (event.recurringPattern?.type) {\n <span><mat-icon>event_repeat</mat-icon> {{ 'CALENDAR.RECURRING' | translate }}</span>\n <span class=\"recurring-type\">{{ 'CALENDAR.' + event.recurringPattern.type | translate }}</span>\n } @else if (address) {\n <span><mat-icon>location_on</mat-icon> {{ 'LOCATION.TITLE' | translate }}</span>\n <span [innerHTML]=\"address\"></span>\n } @else if (calendarAccount) {\n <span><mat-icon>email</mat-icon> {{ 'CALENDAR.ACCOUNT' | translate }}</span>\n <span [style.color]=\"calendarAccount.theme?.backgroundColor || ''\">{{ calendarAccount.email }}</span>\n } @else if (note) {\n <span><mat-icon>event_note</mat-icon> {{ 'FIELDS.NOTE' | translate }}</span>\n <span class=\"event-note\" [innerHTML]=\"note\"></span>\n }\n </div>\n</div>\n", styles: [".text-style,.event-info-body .data-item{font-family:Gilroy-Regular,serif;font-style:normal;font-weight:500;font-size:16px}.event-info-body{padding:0 15px 20px;max-height:calc(var(--viewport-height) * 60);position:relative;display:block;overflow:auto}.event-info-body .data-item{margin-top:20px;display:flex}.event-info-body .data-item.centred{flex-direction:column;align-items:center;margin-bottom:10px}.event-info-body .data-item span{font-size:14px}.event-info-body .data-item span:first-child{min-width:85px}.event-info-body .data-item span:first-child .mat-icon{position:relative;top:-4px}.event-info-body .data-item span.event-time{display:flex;gap:5px}.event-info-body .data-item span .mat-icon{margin:0 5px 0 0}.event-info-body .data-item span:nth-child(1){display:flex;font-weight:500}.event-info-body .data-item span:nth-child(2){margin-left:20px;opacity:.7}.event-info-body .data-item span.recurring-type{background:var(--cyrano-pink-shade-2);color:#fff;padding:5px 10px;border-radius:30px;height:25px;margin-top:-5px}.event-info-body .data-item .mat-icon.all-day{color:var(--cyrano-pink-shade-1)}\n"] }]
|
|
869
813
|
}], ctorParameters: () => [{ type: FallbackTranslatePipe }, { type: CalendarUtilsService }], propDecorators: { event: [{
|
|
870
814
|
type: Input
|
|
871
815
|
}], calendars: [{
|
|
872
816
|
type: Input
|
|
873
817
|
}] } });
|
|
874
818
|
|
|
875
|
-
var FormFieldType;
|
|
876
|
-
(function (FormFieldType) {
|
|
877
|
-
FormFieldType["date"] = "date";
|
|
878
|
-
FormFieldType["text"] = "text";
|
|
879
|
-
FormFieldType["textarea"] = "textarea";
|
|
880
|
-
FormFieldType["typeahead"] = "typeahead";
|
|
881
|
-
FormFieldType["multiselect"] = "multiselect";
|
|
882
|
-
FormFieldType["select"] = "select";
|
|
883
|
-
FormFieldType["checkbox"] = "checkbox";
|
|
884
|
-
FormFieldType["toggle"] = "toggle";
|
|
885
|
-
FormFieldType["radio"] = "radio";
|
|
886
|
-
FormFieldType["textlist"] = "textlist";
|
|
887
|
-
FormFieldType["number"] = "number";
|
|
888
|
-
FormFieldType["message"] = "message";
|
|
889
|
-
FormFieldType["time"] = "time";
|
|
890
|
-
FormFieldType["multifield"] = "multifield";
|
|
891
|
-
FormFieldType["action"] = "action";
|
|
892
|
-
FormFieldType["currency"] = "currency";
|
|
893
|
-
FormFieldType["banner"] = "banner";
|
|
894
|
-
FormFieldType["percentage"] = "percentage";
|
|
895
|
-
FormFieldType["multiselectdropdown"] = "multiselectdropdown";
|
|
896
|
-
FormFieldType["hyperlink"] = "hyperlink";
|
|
897
|
-
FormFieldType["injectable"] = "injectable";
|
|
898
|
-
FormFieldType["datetime"] = "datetime";
|
|
899
|
-
FormFieldType["rating"] = "rating";
|
|
900
|
-
FormFieldType["incrementer"] = "incrementer";
|
|
901
|
-
FormFieldType["range"] = "range";
|
|
902
|
-
FormFieldType["password"] = "password";
|
|
903
|
-
})(FormFieldType || (FormFieldType = {}));
|
|
904
|
-
|
|
905
|
-
var EditRecurringEventOptions;
|
|
906
|
-
(function (EditRecurringEventOptions) {
|
|
907
|
-
EditRecurringEventOptions["CURRENT"] = "CURRENT";
|
|
908
|
-
EditRecurringEventOptions["FOLLOWING"] = "FOLLOWING";
|
|
909
|
-
EditRecurringEventOptions["ALL"] = "ALL";
|
|
910
|
-
})(EditRecurringEventOptions || (EditRecurringEventOptions = {}));
|
|
911
|
-
|
|
912
819
|
class LibEditRecurringEventComponent {
|
|
913
820
|
constructor(fallbackTranslatePipe) {
|
|
914
821
|
this.fallbackTranslatePipe = fallbackTranslatePipe;
|
|
@@ -927,11 +834,11 @@ class LibEditRecurringEventComponent {
|
|
|
927
834
|
this.editOptionsCtrl.setValue(this.excludeCurrentInstance ? EditRecurringEventOptions.FOLLOWING : EditRecurringEventOptions.CURRENT);
|
|
928
835
|
}
|
|
929
836
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibEditRecurringEventComponent, deps: [{ token: FallbackTranslatePipe }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
930
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.14", type: LibEditRecurringEventComponent, isStandalone: true, selector: "lib-edit-recurring-event", inputs: { excludeCurrentInstance: "excludeCurrentInstance", editOptionsCtrl: "editOptionsCtrl" }, ngImport: i0, template: "@if (options) {\n <div class=\"edit-recurring-options\">\n <lib-form-field\n class=\"recurring-edit-options\"\n [formFieldControl]=\"editOptionsCtrl\"\n [radioTranslateLabels]=\"true\"\n [radioRippleEffect]=\"false\"\n [options]=\"options\"\n [type]=\"radioFieldType\"\n ></lib-form-field>\n </div>\n}\n", styles: [".edit-recurring-options{padding:20px 10px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: InputFieldModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: FormFieldModule }, { kind: "component", type: i2.FormFieldComponent, selector: "lib-form-field", inputs: ["fieldName", "label", "placeholder", "message", "useTooltips", "descriptionText", "formFieldControl", "submitted", "required", "type", "plusIconUrl", "minusIconUrl", "maxLength", "max", "min", "pinValue", "dualKnobs", "reverseBarColor", "defaultValue", "noMargin", "options", "iconHtml", "invalidPatternMessage", "dateFormat", "currencySymbol", "hideCents", "isEditable", "rowEditConfirmationObsv", "errorInlineMode", "showLabelInRequiredErrorMessage", "decimalPosition", "hyperlinkTarget", "readOnly", "focus", "showRequiredIndicator", "maxDate", "minDate", "radioTranslateLabels", "radioDeselectable", "radioRippleEffect"], outputs: ["rowEdit", "focusOut", "valueChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
837
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.14", type: LibEditRecurringEventComponent, isStandalone: true, selector: "lib-edit-recurring-event", inputs: { excludeCurrentInstance: "excludeCurrentInstance", editOptionsCtrl: "editOptionsCtrl" }, providers: [FallbackTranslatePipe], ngImport: i0, template: "@if (options) {\n <div class=\"edit-recurring-options\">\n <lib-form-field\n class=\"recurring-edit-options\"\n [formFieldControl]=\"editOptionsCtrl\"\n [radioTranslateLabels]=\"true\"\n [radioRippleEffect]=\"false\"\n [options]=\"options\"\n [type]=\"radioFieldType\"\n ></lib-form-field>\n </div>\n}\n", styles: [".edit-recurring-options{padding:20px 10px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: InputFieldModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: FormFieldModule }, { kind: "component", type: i2.FormFieldComponent, selector: "lib-form-field", inputs: ["fieldName", "label", "placeholder", "message", "useTooltips", "descriptionText", "formFieldControl", "submitted", "required", "type", "plusIconUrl", "minusIconUrl", "maxLength", "max", "min", "pinValue", "dualKnobs", "reverseBarColor", "defaultValue", "noMargin", "options", "iconHtml", "invalidPatternMessage", "dateFormat", "currencySymbol", "hideCents", "isEditable", "rowEditConfirmationObsv", "errorInlineMode", "showLabelInRequiredErrorMessage", "decimalPosition", "hyperlinkTarget", "readOnly", "focus", "showRequiredIndicator", "maxDate", "minDate", "radioTranslateLabels", "radioDeselectable", "radioRippleEffect"], outputs: ["rowEdit", "focusOut", "valueChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
931
838
|
}
|
|
932
839
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibEditRecurringEventComponent, decorators: [{
|
|
933
840
|
type: Component,
|
|
934
|
-
args: [{ selector: 'lib-edit-recurring-event', changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule,
|
|
841
|
+
args: [{ selector: 'lib-edit-recurring-event', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, TranslateModule, InputFieldModule, FormsModule, ReactiveFormsModule, FormFieldModule], providers: [FallbackTranslatePipe], template: "@if (options) {\n <div class=\"edit-recurring-options\">\n <lib-form-field\n class=\"recurring-edit-options\"\n [formFieldControl]=\"editOptionsCtrl\"\n [radioTranslateLabels]=\"true\"\n [radioRippleEffect]=\"false\"\n [options]=\"options\"\n [type]=\"radioFieldType\"\n ></lib-form-field>\n </div>\n}\n", styles: [".edit-recurring-options{padding:20px 10px}\n"] }]
|
|
935
842
|
}], ctorParameters: () => [{ type: FallbackTranslatePipe }], propDecorators: { excludeCurrentInstance: [{
|
|
936
843
|
type: Input
|
|
937
844
|
}], editOptionsCtrl: [{
|
|
@@ -1173,13 +1080,13 @@ class LibEventFormComponent extends BaseComponent {
|
|
|
1173
1080
|
this.submitFormEvent(this._draggedEvent, this.draggedEvent);
|
|
1174
1081
|
}
|
|
1175
1082
|
}
|
|
1176
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibEventFormComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1$
|
|
1177
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.14", type: LibEventFormComponent, isStandalone: false, selector: "lib-event-form", inputs: { calendars: "calendars", event: "event", draggedEvent: "draggedEvent" }, outputs: { updateRecurringEvent: "updateRecurringEvent", updateDraggedEvent: "updateDraggedEvent", delete: "delete", closeForm: "closeForm", submitForm: "submitForm" }, usesInheritance: true, ngImport: i0, template: "<lib-bottom-modal\n [title]=\"modalTitle\"\n [(isOpen)]=\"openModal\"\n [(showConfirm)]=\"showConfirm\"\n [confirmButton]=\"'CONFIRM.YES' | fallbackTranslate: 'Yes'\"\n [confirmCancelButton]=\"'CONFIRM.No' | fallbackTranslate: 'No'\"\n [confirmationTitle]=\"'CONFIRM.ARE_YOU_SURE' | fallbackTranslate: 'Confirm Deletion'\"\n [confirmationMsg]=\"'CONFIRM.ARE_YOU_SURE_MESSAGE' | fallbackTranslate: 'Sure you want to delete?'\"\n [showCloseBtn]=\"!cancelButtonTitle && editMode\"\n [customClass]=\"'calendar-event-modal'\"\n [loading]=\"loading$ | async\"\n [validModal]=\"(!form || form.valid) && (loading$ | async) !== true\"\n [submitButtonTitle]=\"submitButtonTitle\"\n [secondaryButtonTitle]=\"secondaryButtonTitle\"\n [cancelButtonTitle]=\"cancelButtonTitle\"\n (secondaryButtonClick)=\"onModalSecondaryButtonClick()\"\n (closeModal)=\"resetModal()\"\n (submitModal)=\"onSubmitModal()\"\n (confirmEvent)=\"onDeleteConfirm()\"\n>\n <div class=\"event-modal\">\n <lib-event-info [event]=\"event\" [calendars]=\"calendars\" *ngIf=\"!form && editMode && !openRecurringOptions\"></lib-event-info>\n <lib-edit-recurring-event [editOptionsCtrl]=\"editOptionsCtrl\" [excludeCurrentInstance]=\"recurringTypeChanged\" *ngIf=\"openRecurringOptions\"></lib-edit-recurring-event>\n <ng-content></ng-content>\n <form [formGroup]=\"form\" *ngIf=\"form && !openRecurringOptions\" autocomplete=\"off\" appFocusInvalidInput (ngSubmit)=\"saveEvent()\" (keyup.enter)=\"saveEvent()\" id=\"event-form\">\n <div class=\"form-body\">\n <div class=\"form-row center-content\">\n <div class=\"event-title-field\">\n <lib-input-field\n maxLength=\"2000\"\n formControlName=\"title\"\n type=\"text\"\n [readonly]=\"loading$ | async\"\n [label]=\"'CALENDAR.TITLE_FIELD' | fallbackTranslate: 'Title'\"\n [trimWhiteSpace]=\"false\"\n ></lib-input-field>\n <lib-error-message class=\"input-error event-input-field-error\" [config]=\"{ control: form.controls['title'] }\"></lib-error-message>\n </div>\n </div>\n <div class=\"form-row event-dates\">\n <div class=\"input-field-container input-field-container-group\">\n <div class=\"event-date-container\" [ngClass]=\"{ 'input-field-container-full-row': !form.controls['allDay'].value }\">\n <lib-input-date-field\n class=\"event-date\"\n formControlName=\"startDate\"\n [readonly]=\"loading$ | async\"\n [hieActions]=\"true\"\n [showIcon]=\"true\"\n [label]=\"'CALENDAR.START_DATE' | fallbackTranslate: 'Start Date'\"\n ></lib-input-date-field>\n <lib-error-message class=\"input-error event-input-field-error\" [config]=\"{ control: form.controls['startDate'] }\"></lib-error-message>\n </div>\n @if (form.controls['allDay'].value) {\n <lib-input-date-field\n class=\"event-date event-end-date\"\n formControlName=\"endDate\"\n [disabled]=\"loading$ | async\"\n [hieActions]=\"true\"\n [showIcon]=\"true\"\n [label]=\"'CALENDAR.END_DATE' | fallbackTranslate: 'End Date'\"\n ></lib-input-date-field>\n <lib-error-message class=\"input-error event-input-field-error\" [config]=\"{ control: form.controls['endDate'] }\"></lib-error-message>\n }\n </div>\n </div>\n\n @if (!form.controls['allDay'].value) {\n <div class=\"form-row\">\n <div class=\"input-field-container input-field-container-group time-fields-group\">\n <div class=\"time-field\">\n <lib-input-time-field\n formControlName=\"startTime\"\n [showIcon]=\"true\"\n [startDate]=\"eventStart\"\n [interval]=\"15\"\n [disabled]=\"loading$ | async\"\n [label]=\"'CALENDAR.STARTS' | fallbackTranslate: 'Starts'\"\n ></lib-input-time-field>\n <lib-error-message class=\"input-error event-input-field-error\" [config]=\"{ control: form.controls['startTime'] }\"></lib-error-message>\n </div>\n <div class=\"time-field\">\n <lib-input-time-field\n class=\"end-time\"\n formControlName=\"endTime\"\n [interval]=\"15\"\n [showIcon]=\"true\"\n [displaySlotTime]=\"true\"\n [fromTime]=\"\n form.controls.startTime.value && form.controls.startTime.value['slotValue'] ? form.controls.startTime.value['slotValue'] : form.controls.startTime.value\n \"\n [startDate]=\"eventStart\"\n [disabled]=\"loading$ | async\"\n [label]=\"'CALENDAR.ENDS' | fallbackTranslate: 'Ends'\"\n ></lib-input-time-field>\n <lib-error-message class=\"input-error event-input-field-error\" [config]=\"{ control: form.controls['endTime'] }\"></lib-error-message>\n </div>\n </div>\n </div>\n }\n\n <div class=\"form-row recurring\">\n <div class=\"recurring-select\" formGroupName=\"recurringPattern\">\n <lib-input-field-select\n formControlName=\"type\"\n [optionLabel]=\"(recurringOptions[0].title | fallbackTranslate: 'noTrnslations') === 'noTrnslations' ? 'name' : 'title'\"\n [optionValue]=\"'type'\"\n [options]=\"recurringOptions\"\n [disabled]=\"loading$ | async\"\n >\n </lib-input-field-select>\n </div>\n <div class=\"allDay-container\">\n <ion-item class=\"no-shadow allDay\">\n <label>\n <lib-dashed-checkbox formControlName=\"allDay\" [disabled]=\"loading$ | async\"></lib-dashed-checkbox>\n <span>{{ 'CALENDAR.ALL_DAY' | fallbackTranslate: 'All day' }}</span>\n </label>\n </ion-item>\n </div>\n </div>\n\n <div class=\"form-row address\">\n <div class=\"input-field-container\">\n <lib-input-field\n maxLength=\"2000\"\n [trimWhiteSpace]=\"false\"\n formControlName=\"address\"\n [enableGoogleAddress]=\"true\"\n [address]=\"form.controls['address'].value\"\n (locationChange)=\"onLocationChange($event)\"\n [readonly]=\"loading$ | async\"\n [label]=\"'FIELDS.ADD_LOCATION' | fallbackTranslate: 'Location'\"\n >\n </lib-input-field>\n <lib-error-message class=\"input-error\" [config]=\"{ control: form.controls['address'] }\"></lib-error-message>\n </div>\n </div>\n\n <div class=\"form-row\">\n <div class=\"event-note-field\">\n <lib-input-field\n formControlName=\"note\"\n [textarea]=\"true\"\n [label]=\"'FIELDS.ADD_DESCRIPTION' | fallbackTranslate: 'Description'\"\n maxLength=\"2000\"\n [readonly]=\"loading$ | async\"\n ></lib-input-field>\n </div>\n </div>\n </div>\n </form>\n </div>\n</lib-bottom-modal>\n", styles: [".event-modal{--input-width: 100%;--input-height: 48px;--border-radius: 100px;--input-icon-color: #fe3c72;--input-font-color: #fff;--dropdown-background: linear-gradient(191.18deg, #27242c 61.33%, #0c0b0e 101.43%);--input-font-family: \"Gilroy-Regular\", serif;--label-color: grey;--input-field-box-shadow: inset 17px 22px 20px 2.5px rgba(17, 16, 20, .7), inset -2px -2px 8px rgba(203, 199, 209, .5);--input-number-filed-font: var(--font-family);--textarea-height: 100px !important;position:relative;display:block;width:100%;padding:0 20px 10px;max-height:72vh;overflow:auto}.event-modal .form-row{display:flex;flex-direction:row;margin-bottom:10px}.event-modal .form-row.form-footer{align-items:flex-end;justify-content:flex-end;margin-bottom:-15px}.event-modal .form-row.form-footer lib-primary-btn{width:100px}.event-modal .form-row.form-row-error{margin:-10px 0 0;padding:0;height:20px}.event-modal .form-row.recurring{margin:12px 0;display:flex}.event-modal .form-row.recurring .allDay-container,.event-modal .form-row.recurring .recurring-select{width:50%}.event-modal .form-row.recurring .recurring-select lib-input-field-select{width:100%}.event-modal .form-row.recurring .allDay-container{display:flex;flex-direction:row;justify-content:flex-start;align-items:flex-end;margin-top:-10px}.event-modal form{padding:5px 5px 0}.event-modal form .form-body{max-width:100%;position:relative;display:block}.event-modal ion-item ion-label{font-family:Gilroy-Regular,serif!important}.event-modal ion-item ion-label:not(.allDay){display:flex!important;flex-direction:row;align-items:center;justify-content:center}.event-modal ion-item.allDay{margin-top:-10px;width:fit-content;--min-height: 50px}.event-modal ion-item.allDay label{display:flex;gap:10px;align-items:center;font-family:Gilroy-Regular,serif;cursor:pointer}.event-modal ion-item.allDay lib-dashed-checkbox{--size: 24px;--color: var(--cyrano-pink-shade-1)}.event-modal .event-title-field,.event-modal .event-note-field{position:relative;display:block;width:100%;padding-top:10px}.event-modal .event-title-field lib-input-field,.event-modal .event-note-field lib-input-field{position:relative;width:100%;min-width:100%}.event-modal .input-field-container{padding-top:2px;width:100%}.event-modal .input-field-container.input-field-container-group{display:flex;gap:5px}.event-modal .input-field-container.input-field-container-group div{width:50%}.event-modal .input-field-container.input-field-container-group div.input-field-container-full-row{width:100%}.event-modal .input-field-container .time-fields{display:flex;gap:10px}.event-modal .input-field-container lib-input-field{width:100%}.event-modal .field-error{position:relative;display:block;width:100%}@media screen and (max-width: 500px){.event-modal .event-date-container{margin-bottom:15px}.event-modal .input-field-container-group{display:flex;flex-direction:column}.event-modal .input-field-container-group div{width:100%!important}.event-modal .input-field-container-group.time-fields-group{flex-direction:row}.event-modal .form-row.recurring{display:block}.event-modal .form-row.recurring .allDay-container,.event-modal .form-row.recurring .recurring-select{width:100%}.event-modal .form-row.recurring .allDay-container{display:flex;flex-direction:row;justify-content:flex-start;align-items:flex-end}.event-modal .form-row.recurring .allDay-container ion-item.allDay{padding-left:0;margin-top:10px}.event-modal .form-row.address{margin-top:-20px}.event-modal .form-row.event-dates{margin-bottom:0}}@media screen and (max-width: 350px){.event-modal .input-placeholder.input-placeholder-date .time-placeholder{margin-left:0}}.event-modal .event-input-field-error{margin-top:-20px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$1.IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1$1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "component", type: i2.DashedCheckboxComponent, selector: "lib-dashed-checkbox", inputs: ["checked", "disabled"], outputs: ["toggle"] }, { kind: "component", type: i2.InputDateFieldComponent, selector: "lib-input-date-field", inputs: ["label", "defaultDate", "maxDate", "minDate", "showTime", "hieActions", "readonly", "defaultDayHighlight", "showIcon", "timeOnly", "view", "disabled", "dateFormat", "placeholder", "appendTo", "stepMinute", "mask", "styleClass", "timeFormat"], outputs: ["focusEvent"] }, { kind: "component", type: i2.InputFieldComponent, selector: "lib-input-field,[lib-input-field]", inputs: ["name", "autocomplete", "label", "placeholder", "type", "readonly", "focus", "enableGoogleAddress", "locationAutocompleteConfig", "defaultLocation", "mask", "prefix", "suffix", "maxLength", "value", "address", "textarea", "resize", "counter", "patterns", "trimWhiteSpace", "disabled"], outputs: ["mapError", "locationChange", "keyDown", "onBlur"] }, { kind: "component", type: i2.InputFieldSelectComponent, selector: "lib-input-field-select", inputs: ["multiple", "label", "placeholder", "optionLabel", "optionValue", "options", "optionsTemplates", "filterBy", "enableFilter", "readonly", "disabled", "showClear", "editable", "withTemplate", "enableTranslation"], outputs: ["valueChange"] }, { kind: "component", type: i2.InputTimeFieldComponent, selector: "lib-input-time-field", inputs: ["startDate", "interval", "displaySlotTime", "fromTime", "format", "label", "readonly", "showIcon", "disabled"], outputs: ["focusEvent"] }, { kind: "component", type: i2.BottomModalComponent, selector: "lib-bottom-modal", inputs: ["breakpoints", "initialBreakpoint", "isOpen", "canDismiss", "showArrow", "showBackBtn", "showConfirm", "showCloseBtn", "loading", "showHeaderSeparator", "title", "confirmationTitle", "confirmationMsg", "confirmButton", "confirmCancelButton", "description", "secondaryButtonTitle", "submitButtonTitle", "cancelButtonTitle", "validModal", "adaptToContentHeight", "customClass"], outputs: ["isOpenChange", "breakpointChange", "closeModal", "submitModal", "secondaryButtonClick", "backClick", "showConfirmChange", "confirmEvent"] }, { kind: "component", type: i2.LibErrorMessageComponent, selector: "lib-error-message", inputs: ["config"] }, { kind: "component", type: LibEventInfoComponent, selector: "lib-event-info", inputs: ["event", "calendars"] }, { kind: "component", type: LibEditRecurringEventComponent, selector: "lib-edit-recurring-event", inputs: ["excludeCurrentInstance", "editOptionsCtrl"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: FallbackTranslatePipe, name: "fallbackTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1083
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibEventFormComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1$2.FormBuilder }, { token: CalendarUtilsService }, { token: FallbackTranslatePipe }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1084
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.14", type: LibEventFormComponent, isStandalone: false, selector: "lib-event-form", inputs: { calendars: "calendars", event: "event", draggedEvent: "draggedEvent" }, outputs: { updateRecurringEvent: "updateRecurringEvent", updateDraggedEvent: "updateDraggedEvent", delete: "delete", closeForm: "closeForm", submitForm: "submitForm" }, usesInheritance: true, ngImport: i0, template: "<lib-bottom-modal\n [title]=\"modalTitle\"\n [(isOpen)]=\"openModal\"\n [(showConfirm)]=\"showConfirm\"\n [confirmButton]=\"'CONFIRM.YES' | fallbackTranslate: 'Yes'\"\n [confirmCancelButton]=\"'CONFIRM.No' | fallbackTranslate: 'No'\"\n [confirmationTitle]=\"'CONFIRM.ARE_YOU_SURE' | fallbackTranslate: 'Confirm Deletion'\"\n [confirmationMsg]=\"'CONFIRM.ARE_YOU_SURE_MESSAGE' | fallbackTranslate: 'Sure you want to delete?'\"\n [showCloseBtn]=\"!cancelButtonTitle && editMode\"\n [customClass]=\"'calendar-event-modal'\"\n [loading]=\"loading$ | async\"\n [validModal]=\"(!form || form.valid) && (loading$ | async) !== true\"\n [submitButtonTitle]=\"submitButtonTitle\"\n [secondaryButtonTitle]=\"secondaryButtonTitle\"\n [cancelButtonTitle]=\"cancelButtonTitle\"\n (secondaryButtonClick)=\"onModalSecondaryButtonClick()\"\n (closeModal)=\"resetModal()\"\n (submitModal)=\"onSubmitModal()\"\n (confirmEvent)=\"onDeleteConfirm()\"\n>\n <div class=\"event-modal\">\n <lib-event-info [event]=\"event\" [calendars]=\"calendars\" *ngIf=\"!form && editMode && !openRecurringOptions\"></lib-event-info>\n <lib-edit-recurring-event [editOptionsCtrl]=\"editOptionsCtrl\" [excludeCurrentInstance]=\"recurringTypeChanged\" *ngIf=\"openRecurringOptions\"></lib-edit-recurring-event>\n <ng-content></ng-content>\n <form [formGroup]=\"form\" *ngIf=\"form && !openRecurringOptions\" autocomplete=\"off\" appFocusInvalidInput (ngSubmit)=\"saveEvent()\" (keyup.enter)=\"saveEvent()\" id=\"event-form\">\n <div class=\"form-body\">\n <div class=\"form-row center-content\">\n <div class=\"event-title-field\">\n <lib-input-field\n maxLength=\"2000\"\n formControlName=\"title\"\n type=\"text\"\n [readonly]=\"loading$ | async\"\n [label]=\"'CALENDAR.TITLE_FIELD' | fallbackTranslate: 'Title'\"\n [trimWhiteSpace]=\"false\"\n ></lib-input-field>\n <lib-error-message class=\"input-error event-input-field-error\" [config]=\"{ control: form.controls['title'] }\"></lib-error-message>\n </div>\n </div>\n <div class=\"form-row event-dates\">\n <div class=\"input-field-container input-field-container-group\">\n <div class=\"event-date-container\" [ngClass]=\"{ 'input-field-container-full-row': !form.controls['allDay'].value }\">\n <lib-input-date-field\n class=\"event-date\"\n formControlName=\"startDate\"\n [readonly]=\"loading$ | async\"\n [hieActions]=\"true\"\n [showIcon]=\"true\"\n [label]=\"'CALENDAR.START_DATE' | fallbackTranslate: 'Start Date'\"\n ></lib-input-date-field>\n <lib-error-message class=\"input-error event-input-field-error\" [config]=\"{ control: form.controls['startDate'] }\"></lib-error-message>\n </div>\n @if (form.controls['allDay'].value) {\n <lib-input-date-field\n class=\"event-date event-end-date\"\n formControlName=\"endDate\"\n [disabled]=\"loading$ | async\"\n [hieActions]=\"true\"\n [showIcon]=\"true\"\n [label]=\"'CALENDAR.END_DATE' | fallbackTranslate: 'End Date'\"\n ></lib-input-date-field>\n <lib-error-message class=\"input-error event-input-field-error\" [config]=\"{ control: form.controls['endDate'] }\"></lib-error-message>\n }\n </div>\n </div>\n\n @if (!form.controls['allDay'].value) {\n <div class=\"form-row\">\n <div class=\"input-field-container input-field-container-group time-fields-group\">\n <div class=\"time-field\">\n <lib-input-time-field\n formControlName=\"startTime\"\n [showIcon]=\"true\"\n [startDate]=\"eventStart\"\n [interval]=\"15\"\n [disabled]=\"loading$ | async\"\n [label]=\"'CALENDAR.STARTS' | fallbackTranslate: 'Starts'\"\n ></lib-input-time-field>\n <lib-error-message class=\"input-error event-input-field-error\" [config]=\"{ control: form.controls['startTime'] }\"></lib-error-message>\n </div>\n <div class=\"time-field\">\n <lib-input-time-field\n class=\"end-time\"\n formControlName=\"endTime\"\n [interval]=\"15\"\n [showIcon]=\"true\"\n [displaySlotTime]=\"true\"\n [fromTime]=\"\n form.controls.startTime.value && form.controls.startTime.value['slotValue'] ? form.controls.startTime.value['slotValue'] : form.controls.startTime.value\n \"\n [startDate]=\"eventStart\"\n [disabled]=\"loading$ | async\"\n [label]=\"'CALENDAR.ENDS' | fallbackTranslate: 'Ends'\"\n ></lib-input-time-field>\n <lib-error-message class=\"input-error event-input-field-error\" [config]=\"{ control: form.controls['endTime'] }\"></lib-error-message>\n </div>\n </div>\n </div>\n }\n\n <div class=\"form-row recurring\">\n <div class=\"recurring-select\" formGroupName=\"recurringPattern\">\n <lib-input-field-select\n formControlName=\"type\"\n [optionLabel]=\"(recurringOptions[0].title | fallbackTranslate: 'noTrnslations') === 'noTrnslations' ? 'name' : 'title'\"\n [optionValue]=\"'type'\"\n [options]=\"recurringOptions\"\n [disabled]=\"loading$ | async\"\n >\n </lib-input-field-select>\n </div>\n <div class=\"allDay-container\">\n <ion-item class=\"no-shadow allDay\">\n <label>\n <lib-dashed-checkbox formControlName=\"allDay\" [disabled]=\"loading$ | async\"></lib-dashed-checkbox>\n <span>{{ 'CALENDAR.ALL_DAY' | fallbackTranslate: 'All day' }}</span>\n </label>\n </ion-item>\n </div>\n </div>\n\n <div class=\"form-row address\">\n <div class=\"input-field-container\">\n <lib-input-field\n maxLength=\"2000\"\n [trimWhiteSpace]=\"false\"\n formControlName=\"address\"\n [enableGoogleAddress]=\"true\"\n [address]=\"form.controls['address'].value\"\n (locationChange)=\"onLocationChange($event)\"\n [readonly]=\"loading$ | async\"\n [label]=\"'FIELDS.ADD_LOCATION' | fallbackTranslate: 'Location'\"\n >\n </lib-input-field>\n <lib-error-message class=\"input-error\" [config]=\"{ control: form.controls['address'] }\"></lib-error-message>\n </div>\n </div>\n\n <div class=\"form-row\">\n <div class=\"event-note-field\">\n <lib-input-field\n formControlName=\"note\"\n [textarea]=\"true\"\n [label]=\"'FIELDS.ADD_DESCRIPTION' | fallbackTranslate: 'Description'\"\n maxLength=\"2000\"\n [readonly]=\"loading$ | async\"\n ></lib-input-field>\n </div>\n </div>\n </div>\n </form>\n </div>\n</lib-bottom-modal>\n", styles: [".event-modal{--input-width: 100%;--input-height: 48px;--border-radius: 100px;--input-icon-color: #fe3c72;--input-font-color: #fff;--dropdown-background: linear-gradient(191.18deg, #27242c 61.33%, #0c0b0e 101.43%);--input-font-family: \"Gilroy-Regular\", serif;--label-color: grey;--input-field-box-shadow: inset 17px 22px 20px 2.5px rgba(17, 16, 20, .7), inset -2px -2px 8px rgba(203, 199, 209, .5);--input-number-filed-font: var(--font-family);--textarea-height: 100px !important;position:relative;display:block;width:100%;padding:0 20px 10px;max-height:72vh;overflow:auto}.event-modal .form-row{display:flex;flex-direction:row;margin-bottom:10px}.event-modal .form-row.form-footer{align-items:flex-end;justify-content:flex-end;margin-bottom:-15px}.event-modal .form-row.form-footer lib-primary-btn{width:100px}.event-modal .form-row.form-row-error{margin:-10px 0 0;padding:0;height:20px}.event-modal .form-row.recurring{margin:12px 0;display:flex}.event-modal .form-row.recurring .allDay-container,.event-modal .form-row.recurring .recurring-select{width:50%}.event-modal .form-row.recurring .recurring-select lib-input-field-select{width:100%}.event-modal .form-row.recurring .allDay-container{display:flex;flex-direction:row;justify-content:flex-start;align-items:flex-end;margin-top:-10px}.event-modal form{padding:5px 5px 0}.event-modal form .form-body{max-width:100%;position:relative;display:block}.event-modal ion-item ion-label{font-family:Gilroy-Regular,serif!important}.event-modal ion-item ion-label:not(.allDay){display:flex!important;flex-direction:row;align-items:center;justify-content:center}.event-modal ion-item.allDay{margin-top:-10px;width:fit-content;--min-height: 50px}.event-modal ion-item.allDay label{display:flex;gap:10px;align-items:center;font-family:Gilroy-Regular,serif;cursor:pointer}.event-modal ion-item.allDay lib-dashed-checkbox{--size: 24px;--color: var(--cyrano-pink-shade-1)}.event-modal .event-title-field,.event-modal .event-note-field{position:relative;display:block;width:100%;padding-top:10px}.event-modal .event-title-field lib-input-field,.event-modal .event-note-field lib-input-field{position:relative;width:100%;min-width:100%}.event-modal .input-field-container{padding-top:2px;width:100%}.event-modal .input-field-container.input-field-container-group{display:flex;gap:5px}.event-modal .input-field-container.input-field-container-group div{width:50%}.event-modal .input-field-container.input-field-container-group div.input-field-container-full-row{width:100%}.event-modal .input-field-container .time-fields{display:flex;gap:10px}.event-modal .input-field-container lib-input-field{width:100%}.event-modal .field-error{position:relative;display:block;width:100%}@media screen and (max-width: 500px){.event-modal .event-date-container{margin-bottom:15px}.event-modal .input-field-container-group{display:flex;flex-direction:column}.event-modal .input-field-container-group div{width:100%!important}.event-modal .input-field-container-group.time-fields-group{flex-direction:row}.event-modal .form-row.recurring{display:block}.event-modal .form-row.recurring .allDay-container,.event-modal .form-row.recurring .recurring-select{width:100%}.event-modal .form-row.recurring .allDay-container{display:flex;flex-direction:row;justify-content:flex-start;align-items:flex-end}.event-modal .form-row.recurring .allDay-container ion-item.allDay{padding-left:0;margin-top:10px}.event-modal .form-row.address{margin-top:-20px}.event-modal .form-row.event-dates{margin-bottom:0}}@media screen and (max-width: 350px){.event-modal .input-placeholder.input-placeholder-date .time-placeholder{margin-left:0}}.event-modal .event-input-field-error{margin-top:-20px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$1.IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "directive", type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1$2.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "component", type: i2.DashedCheckboxComponent, selector: "lib-dashed-checkbox", inputs: ["checked", "disabled"], outputs: ["toggle"] }, { kind: "component", type: i2.InputDateFieldComponent, selector: "lib-input-date-field", inputs: ["label", "defaultDate", "maxDate", "minDate", "showTime", "hieActions", "readonly", "defaultDayHighlight", "showIcon", "timeOnly", "view", "disabled", "dateFormat", "placeholder", "appendTo", "stepMinute", "mask", "styleClass", "timeFormat"], outputs: ["focusEvent"] }, { kind: "component", type: i2.InputFieldComponent, selector: "lib-input-field,[lib-input-field]", inputs: ["name", "autocomplete", "label", "placeholder", "type", "readonly", "focus", "enableGoogleAddress", "locationAutocompleteConfig", "defaultLocation", "mask", "prefix", "suffix", "maxLength", "value", "address", "textarea", "resize", "counter", "patterns", "trimWhiteSpace", "disabled"], outputs: ["mapError", "locationChange", "keyDown", "onBlur"] }, { kind: "component", type: i2.InputFieldSelectComponent, selector: "lib-input-field-select", inputs: ["multiple", "label", "placeholder", "optionLabel", "optionValue", "options", "optionsTemplates", "filterBy", "enableFilter", "readonly", "disabled", "showClear", "editable", "withTemplate", "enableTranslation"], outputs: ["valueChange"] }, { kind: "component", type: i2.InputTimeFieldComponent, selector: "lib-input-time-field", inputs: ["startDate", "interval", "displaySlotTime", "fromTime", "format", "label", "readonly", "showIcon", "disabled"], outputs: ["focusEvent"] }, { kind: "component", type: i2.BottomModalComponent, selector: "lib-bottom-modal", inputs: ["breakpoints", "initialBreakpoint", "isOpen", "canDismiss", "showArrow", "showBackBtn", "showConfirm", "showCloseBtn", "loading", "showHeaderSeparator", "title", "confirmationTitle", "confirmationMsg", "confirmButton", "confirmCancelButton", "description", "secondaryButtonTitle", "submitButtonTitle", "cancelButtonTitle", "validModal", "adaptToContentHeight", "customClass"], outputs: ["isOpenChange", "breakpointChange", "closeModal", "submitModal", "secondaryButtonClick", "backClick", "showConfirmChange", "confirmEvent"] }, { kind: "component", type: i2.LibErrorMessageComponent, selector: "lib-error-message", inputs: ["config"] }, { kind: "component", type: LibEventInfoComponent, selector: "lib-event-info", inputs: ["event", "calendars"] }, { kind: "component", type: LibEditRecurringEventComponent, selector: "lib-edit-recurring-event", inputs: ["excludeCurrentInstance", "editOptionsCtrl"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: FallbackTranslatePipe, name: "fallbackTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1178
1085
|
}
|
|
1179
1086
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibEventFormComponent, decorators: [{
|
|
1180
1087
|
type: Component,
|
|
1181
1088
|
args: [{ selector: 'lib-event-form', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<lib-bottom-modal\n [title]=\"modalTitle\"\n [(isOpen)]=\"openModal\"\n [(showConfirm)]=\"showConfirm\"\n [confirmButton]=\"'CONFIRM.YES' | fallbackTranslate: 'Yes'\"\n [confirmCancelButton]=\"'CONFIRM.No' | fallbackTranslate: 'No'\"\n [confirmationTitle]=\"'CONFIRM.ARE_YOU_SURE' | fallbackTranslate: 'Confirm Deletion'\"\n [confirmationMsg]=\"'CONFIRM.ARE_YOU_SURE_MESSAGE' | fallbackTranslate: 'Sure you want to delete?'\"\n [showCloseBtn]=\"!cancelButtonTitle && editMode\"\n [customClass]=\"'calendar-event-modal'\"\n [loading]=\"loading$ | async\"\n [validModal]=\"(!form || form.valid) && (loading$ | async) !== true\"\n [submitButtonTitle]=\"submitButtonTitle\"\n [secondaryButtonTitle]=\"secondaryButtonTitle\"\n [cancelButtonTitle]=\"cancelButtonTitle\"\n (secondaryButtonClick)=\"onModalSecondaryButtonClick()\"\n (closeModal)=\"resetModal()\"\n (submitModal)=\"onSubmitModal()\"\n (confirmEvent)=\"onDeleteConfirm()\"\n>\n <div class=\"event-modal\">\n <lib-event-info [event]=\"event\" [calendars]=\"calendars\" *ngIf=\"!form && editMode && !openRecurringOptions\"></lib-event-info>\n <lib-edit-recurring-event [editOptionsCtrl]=\"editOptionsCtrl\" [excludeCurrentInstance]=\"recurringTypeChanged\" *ngIf=\"openRecurringOptions\"></lib-edit-recurring-event>\n <ng-content></ng-content>\n <form [formGroup]=\"form\" *ngIf=\"form && !openRecurringOptions\" autocomplete=\"off\" appFocusInvalidInput (ngSubmit)=\"saveEvent()\" (keyup.enter)=\"saveEvent()\" id=\"event-form\">\n <div class=\"form-body\">\n <div class=\"form-row center-content\">\n <div class=\"event-title-field\">\n <lib-input-field\n maxLength=\"2000\"\n formControlName=\"title\"\n type=\"text\"\n [readonly]=\"loading$ | async\"\n [label]=\"'CALENDAR.TITLE_FIELD' | fallbackTranslate: 'Title'\"\n [trimWhiteSpace]=\"false\"\n ></lib-input-field>\n <lib-error-message class=\"input-error event-input-field-error\" [config]=\"{ control: form.controls['title'] }\"></lib-error-message>\n </div>\n </div>\n <div class=\"form-row event-dates\">\n <div class=\"input-field-container input-field-container-group\">\n <div class=\"event-date-container\" [ngClass]=\"{ 'input-field-container-full-row': !form.controls['allDay'].value }\">\n <lib-input-date-field\n class=\"event-date\"\n formControlName=\"startDate\"\n [readonly]=\"loading$ | async\"\n [hieActions]=\"true\"\n [showIcon]=\"true\"\n [label]=\"'CALENDAR.START_DATE' | fallbackTranslate: 'Start Date'\"\n ></lib-input-date-field>\n <lib-error-message class=\"input-error event-input-field-error\" [config]=\"{ control: form.controls['startDate'] }\"></lib-error-message>\n </div>\n @if (form.controls['allDay'].value) {\n <lib-input-date-field\n class=\"event-date event-end-date\"\n formControlName=\"endDate\"\n [disabled]=\"loading$ | async\"\n [hieActions]=\"true\"\n [showIcon]=\"true\"\n [label]=\"'CALENDAR.END_DATE' | fallbackTranslate: 'End Date'\"\n ></lib-input-date-field>\n <lib-error-message class=\"input-error event-input-field-error\" [config]=\"{ control: form.controls['endDate'] }\"></lib-error-message>\n }\n </div>\n </div>\n\n @if (!form.controls['allDay'].value) {\n <div class=\"form-row\">\n <div class=\"input-field-container input-field-container-group time-fields-group\">\n <div class=\"time-field\">\n <lib-input-time-field\n formControlName=\"startTime\"\n [showIcon]=\"true\"\n [startDate]=\"eventStart\"\n [interval]=\"15\"\n [disabled]=\"loading$ | async\"\n [label]=\"'CALENDAR.STARTS' | fallbackTranslate: 'Starts'\"\n ></lib-input-time-field>\n <lib-error-message class=\"input-error event-input-field-error\" [config]=\"{ control: form.controls['startTime'] }\"></lib-error-message>\n </div>\n <div class=\"time-field\">\n <lib-input-time-field\n class=\"end-time\"\n formControlName=\"endTime\"\n [interval]=\"15\"\n [showIcon]=\"true\"\n [displaySlotTime]=\"true\"\n [fromTime]=\"\n form.controls.startTime.value && form.controls.startTime.value['slotValue'] ? form.controls.startTime.value['slotValue'] : form.controls.startTime.value\n \"\n [startDate]=\"eventStart\"\n [disabled]=\"loading$ | async\"\n [label]=\"'CALENDAR.ENDS' | fallbackTranslate: 'Ends'\"\n ></lib-input-time-field>\n <lib-error-message class=\"input-error event-input-field-error\" [config]=\"{ control: form.controls['endTime'] }\"></lib-error-message>\n </div>\n </div>\n </div>\n }\n\n <div class=\"form-row recurring\">\n <div class=\"recurring-select\" formGroupName=\"recurringPattern\">\n <lib-input-field-select\n formControlName=\"type\"\n [optionLabel]=\"(recurringOptions[0].title | fallbackTranslate: 'noTrnslations') === 'noTrnslations' ? 'name' : 'title'\"\n [optionValue]=\"'type'\"\n [options]=\"recurringOptions\"\n [disabled]=\"loading$ | async\"\n >\n </lib-input-field-select>\n </div>\n <div class=\"allDay-container\">\n <ion-item class=\"no-shadow allDay\">\n <label>\n <lib-dashed-checkbox formControlName=\"allDay\" [disabled]=\"loading$ | async\"></lib-dashed-checkbox>\n <span>{{ 'CALENDAR.ALL_DAY' | fallbackTranslate: 'All day' }}</span>\n </label>\n </ion-item>\n </div>\n </div>\n\n <div class=\"form-row address\">\n <div class=\"input-field-container\">\n <lib-input-field\n maxLength=\"2000\"\n [trimWhiteSpace]=\"false\"\n formControlName=\"address\"\n [enableGoogleAddress]=\"true\"\n [address]=\"form.controls['address'].value\"\n (locationChange)=\"onLocationChange($event)\"\n [readonly]=\"loading$ | async\"\n [label]=\"'FIELDS.ADD_LOCATION' | fallbackTranslate: 'Location'\"\n >\n </lib-input-field>\n <lib-error-message class=\"input-error\" [config]=\"{ control: form.controls['address'] }\"></lib-error-message>\n </div>\n </div>\n\n <div class=\"form-row\">\n <div class=\"event-note-field\">\n <lib-input-field\n formControlName=\"note\"\n [textarea]=\"true\"\n [label]=\"'FIELDS.ADD_DESCRIPTION' | fallbackTranslate: 'Description'\"\n maxLength=\"2000\"\n [readonly]=\"loading$ | async\"\n ></lib-input-field>\n </div>\n </div>\n </div>\n </form>\n </div>\n</lib-bottom-modal>\n", styles: [".event-modal{--input-width: 100%;--input-height: 48px;--border-radius: 100px;--input-icon-color: #fe3c72;--input-font-color: #fff;--dropdown-background: linear-gradient(191.18deg, #27242c 61.33%, #0c0b0e 101.43%);--input-font-family: \"Gilroy-Regular\", serif;--label-color: grey;--input-field-box-shadow: inset 17px 22px 20px 2.5px rgba(17, 16, 20, .7), inset -2px -2px 8px rgba(203, 199, 209, .5);--input-number-filed-font: var(--font-family);--textarea-height: 100px !important;position:relative;display:block;width:100%;padding:0 20px 10px;max-height:72vh;overflow:auto}.event-modal .form-row{display:flex;flex-direction:row;margin-bottom:10px}.event-modal .form-row.form-footer{align-items:flex-end;justify-content:flex-end;margin-bottom:-15px}.event-modal .form-row.form-footer lib-primary-btn{width:100px}.event-modal .form-row.form-row-error{margin:-10px 0 0;padding:0;height:20px}.event-modal .form-row.recurring{margin:12px 0;display:flex}.event-modal .form-row.recurring .allDay-container,.event-modal .form-row.recurring .recurring-select{width:50%}.event-modal .form-row.recurring .recurring-select lib-input-field-select{width:100%}.event-modal .form-row.recurring .allDay-container{display:flex;flex-direction:row;justify-content:flex-start;align-items:flex-end;margin-top:-10px}.event-modal form{padding:5px 5px 0}.event-modal form .form-body{max-width:100%;position:relative;display:block}.event-modal ion-item ion-label{font-family:Gilroy-Regular,serif!important}.event-modal ion-item ion-label:not(.allDay){display:flex!important;flex-direction:row;align-items:center;justify-content:center}.event-modal ion-item.allDay{margin-top:-10px;width:fit-content;--min-height: 50px}.event-modal ion-item.allDay label{display:flex;gap:10px;align-items:center;font-family:Gilroy-Regular,serif;cursor:pointer}.event-modal ion-item.allDay lib-dashed-checkbox{--size: 24px;--color: var(--cyrano-pink-shade-1)}.event-modal .event-title-field,.event-modal .event-note-field{position:relative;display:block;width:100%;padding-top:10px}.event-modal .event-title-field lib-input-field,.event-modal .event-note-field lib-input-field{position:relative;width:100%;min-width:100%}.event-modal .input-field-container{padding-top:2px;width:100%}.event-modal .input-field-container.input-field-container-group{display:flex;gap:5px}.event-modal .input-field-container.input-field-container-group div{width:50%}.event-modal .input-field-container.input-field-container-group div.input-field-container-full-row{width:100%}.event-modal .input-field-container .time-fields{display:flex;gap:10px}.event-modal .input-field-container lib-input-field{width:100%}.event-modal .field-error{position:relative;display:block;width:100%}@media screen and (max-width: 500px){.event-modal .event-date-container{margin-bottom:15px}.event-modal .input-field-container-group{display:flex;flex-direction:column}.event-modal .input-field-container-group div{width:100%!important}.event-modal .input-field-container-group.time-fields-group{flex-direction:row}.event-modal .form-row.recurring{display:block}.event-modal .form-row.recurring .allDay-container,.event-modal .form-row.recurring .recurring-select{width:100%}.event-modal .form-row.recurring .allDay-container{display:flex;flex-direction:row;justify-content:flex-start;align-items:flex-end}.event-modal .form-row.recurring .allDay-container ion-item.allDay{padding-left:0;margin-top:10px}.event-modal .form-row.address{margin-top:-20px}.event-modal .form-row.event-dates{margin-bottom:0}}@media screen and (max-width: 350px){.event-modal .input-placeholder.input-placeholder-date .time-placeholder{margin-left:0}}.event-modal .event-input-field-error{margin-top:-20px}\n"] }]
|
|
1182
|
-
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1$
|
|
1089
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1$2.FormBuilder }, { type: CalendarUtilsService }, { type: FallbackTranslatePipe }], propDecorators: { calendars: [{
|
|
1183
1090
|
type: Input
|
|
1184
1091
|
}], event: [{
|
|
1185
1092
|
type: Input
|
|
@@ -1227,7 +1134,7 @@ class LibEventFormModule {
|
|
|
1227
1134
|
LibEventInfoComponent,
|
|
1228
1135
|
LibEditRecurringEventComponent,
|
|
1229
1136
|
BaseComponent], exports: [LibEventFormComponent] }); }
|
|
1230
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibEventFormModule, providers: [CalendarUtilsService], imports: [CommonModule,
|
|
1137
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibEventFormModule, providers: [CalendarUtilsService, FallbackTranslatePipe], imports: [CommonModule,
|
|
1231
1138
|
IonicModule,
|
|
1232
1139
|
TranslateModule,
|
|
1233
1140
|
FormsModule,
|
|
@@ -1270,29 +1177,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImpo
|
|
|
1270
1177
|
LibEditRecurringEventComponent,
|
|
1271
1178
|
BaseComponent,
|
|
1272
1179
|
],
|
|
1273
|
-
providers: [CalendarUtilsService],
|
|
1180
|
+
providers: [CalendarUtilsService, FallbackTranslatePipe],
|
|
1274
1181
|
}]
|
|
1275
1182
|
}] });
|
|
1276
1183
|
|
|
1277
|
-
var CalendarAccountEnum;
|
|
1278
|
-
(function (CalendarAccountEnum) {
|
|
1279
|
-
CalendarAccountEnum["GOOGLE"] = "Google";
|
|
1280
|
-
CalendarAccountEnum["MICROSOFT"] = "Microsoft";
|
|
1281
|
-
})(CalendarAccountEnum || (CalendarAccountEnum = {}));
|
|
1282
|
-
|
|
1283
|
-
var CalendarAccountIconsEnum;
|
|
1284
|
-
(function (CalendarAccountIconsEnum) {
|
|
1285
|
-
CalendarAccountIconsEnum["Google"] = "googleCalender";
|
|
1286
|
-
CalendarAccountIconsEnum["Microsoft"] = "microsoft";
|
|
1287
|
-
})(CalendarAccountIconsEnum || (CalendarAccountIconsEnum = {}));
|
|
1288
|
-
|
|
1289
|
-
var ScheduleDateStatus;
|
|
1290
|
-
(function (ScheduleDateStatus) {
|
|
1291
|
-
ScheduleDateStatus["Suggested"] = "suggested";
|
|
1292
|
-
ScheduleDateStatus["Canceled"] = "canceled";
|
|
1293
|
-
ScheduleDateStatus["Pending"] = "pending";
|
|
1294
|
-
})(ScheduleDateStatus || (ScheduleDateStatus = {}));
|
|
1295
|
-
|
|
1296
1184
|
const mockSchedule = [
|
|
1297
1185
|
{
|
|
1298
1186
|
day: 'Mon',
|
|
@@ -1476,7 +1364,7 @@ class LibSchedulerComponent {
|
|
|
1476
1364
|
this.cdr.detectChanges();
|
|
1477
1365
|
}
|
|
1478
1366
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibSchedulerComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1479
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.14", type: LibSchedulerComponent, isStandalone: true, selector: "lib-scheduler", inputs: { adsTemplate: "adsTemplate", loading$: "loading$", emptyMessage: "emptyMessage", displayBookedStatuses: "displayBookedStatuses", displayEmptyDays: "displayEmptyDays", events$: "events$", startDate: "startDate", endDate: "endDate", default: "default" }, outputs: { bookEvent: "bookEvent", removeSuggestion: "removeSuggestion" }, ngImport: i0, template: "<div class=\"scheduler-container\" *ngIf=\"(loading$ | async) !== true; else loadingScheduler\">\n <div class=\"title f-lg f-gilroy-regular\" *ngIf=\"displayBookedStatuses\">{{ bookedCount }} {{ 'BOOKED' | translate }} - {{ suggestedCount }} {{ 'SUGGESTED' | translate }}</div>\n <ng-container *ngTemplateOutlet=\"adsTemplate\"></ng-container>\n <div class=\"content wrapper\" libDraggableScroll direction=\"vertical\" *ngIf=\"bookedCount > 0 || suggestedCount > 0 || displayEmptyDays; else emptyScheduler\">\n @for (eventDay of eventsDays; let dayIndex = $index; track eventDay) {\n <div class=\"block\">\n <div class=\"day\">\n <div class=\"day_name f-md f-gilroy-regular\">{{ eventDay.day }} <lib-section-separator></lib-section-separator></div>\n @for (event of eventDay.events; let eventIndex = $index; track event) {\n <div class=\"day-event\" *ngIf=\"event.suggestions?.length > 0\">\n <div class=\"main_block\" [class.expanded]=\"event.expanded && !event.booked\">\n <div class=\"event-header\" (click)=\"toggleExpand(dayIndex, eventIndex)\">\n <img src=\"assets/scheduler/arrow.svg\" class=\"show_more\" />\n <div class=\"time f-calistoga f-lg\">{{ event.start | date: 'h a' }}</div>\n <div class=\"wrapper\">\n <div class=\"free_time f-gilroy-regular f-md\">\n ~{{ event.hours }}\n <span [class.booked]=\"event.booked\">\n {{ (event.booked ? 'BOOKED' : 'FREE') | translate }}\n </span>\n </div>\n <div class=\"suggestions-count f-gilroy-regular f-sm\" *ngIf=\"event.suggestions?.length > 0\">\n <div>{{ event.suggestions.length }} {{ 'EVENT_SUGGETIONS_MSG' | translate }}</div>\n </div>\n </div>\n </div>\n @for (suggestion of event.suggestions; let suggestedIndex = $index; track suggestion) {\n <div class=\"suggestion_items\">\n <div class=\"suggested-by-wrapper\">\n @for (profile of suggestion?.profiles; track profile) {\n <div class=\"suggested-by\">\n <img class=\"profile\" [src]=\"profile?.img || 'assets/icons/default-profile.svg'\" />\n @if (profile?.suggested) {\n <img class=\"heart\" src=\"assets/scheduler/heart.svg\" />\n } @else if (profile?.cancelled) {\n <img class=\"heart\" src=\"assets/scheduler/cancel_active.svg\" />\n }\n </div>\n }\n <span class=\"schedule-title\"> {{ suggestion.title }} </span>\n </div>\n <div class=\"icons\">\n <img [src]=\"'assets/scheduler/cancel' + (suggestion.canceled ? '_active' : '') + '.svg'\" (click)=\"cancelSuggestion(dayIndex, eventIndex, suggestedIndex)\" />\n <img [src]=\"'assets/scheduler/accept' + (suggestion.checked ? '_active' : '') + '.svg'\" (click)=\"acceptSuggestion(dayIndex, eventIndex, suggestedIndex)\" />\n </div>\n </div>\n }\n </div>\n </div>\n }\n </div>\n </div>\n }\n </div>\n <ng-template #emptyScheduler>\n <lib-section-separator></lib-section-separator>\n <div class=\"empty-messsage messsage f-lg f-gilroy-regular\">{{ emptyMessage }}</div>\n </ng-template>\n</div>\n\n<ng-template #loadingScheduler>\n <div class=\"scheduler-container\">\n <div class=\"content\">\n @for (eventDay of eventsDays; let dayIndex = $index; track eventDay) {\n <div class=\"block\">\n <div class=\"day\">\n <div class=\"day_name f-md f-gilroy-regular\">{{ eventDay.day }} <lib-section-separator></lib-section-separator></div>\n <p-skeleton width=\"100%\" height=\"20px\" borderRadius=\"20px\"></p-skeleton>\n </div>\n </div>\n }\n </div>\n </div>\n</ng-template>\n", styles: [".scheduler-container{position:relative;border-radius:16px}.scheduler-container .title{text-align:center;font-weight:500;margin-top:20px}.scheduler-container .empty-messsage{margin-bottom:40px}.scheduler-container .content{display:flex;flex-direction:column;row-gap:3px}.scheduler-container .content .block{position:relative;z-index:1}.scheduler-container .content .block .day{display:flex;flex-direction:column;row-gap:3px}.scheduler-container .content .block .day .day_name{color:#ebebf599;font-weight:500;display:flex;align-items:center}.scheduler-container .content .block .day .day_name lib-section-separator{width:-webkit-fill-available;--margin-top: .1rem;--margin-bottom: .1rem;margin:0 20px}.scheduler-container .content .block .day .day-event{background:linear-gradient(162deg,#c35a8b -9%,#524b57 32%);padding:2px 2px 0;border-radius:15px}.scheduler-container .content .block .day .day-event .main_block{border-radius:15px;background:linear-gradient(90deg,#fe3c7299 -9%,#3a323f 14%);padding:8px 10px;color:#ebebf599;box-shadow:-1px -3px 8px #ffffff1a}.scheduler-container .content .block .day .day-event .main_block .show_more{width:20px;height:20px;transition:.3s;transform:rotate(-90deg)}.scheduler-container .content .block .day .day-event .main_block .time{color:var(--ion-text-color, #fff5f5)}.scheduler-container .content .block .day .day-event .main_block .free_time{font-weight:500}.scheduler-container .content .block .day .day-event .main_block .free_time .blocked{color:#fe3c72}.scheduler-container .content .block .day .day-event .main_block .event-header{cursor:pointer;display:flex;align-items:center;column-gap:10px}.scheduler-container .content .block .day .day-event .main_block .icons{display:flex;column-gap:10px;padding-right:10px}.scheduler-container .content .block .day .day-event .main_block .icons img{width:25px;height:25px;cursor:pointer}.scheduler-container .content .block .day .day-event .main_block .suggestion_items{transition:.3s;height:0;overflow:hidden;display:flex;justify-content:space-between;margin-top:0}.scheduler-container .content .block .day .day-event .main_block .suggestion_items .suggested-by-wrapper{display:flex;align-items:center}.scheduler-container .content .block .day .day-event .main_block .suggestion_items .suggested-by-wrapper .schedule-title{padding-left:30px}.scheduler-container .content .block .day .day-event .main_block .suggestion_items .suggested-by-wrapper .suggested-by{border:2px solid #28252d;width:25px;height:25px;position:relative;border-radius:50%}.scheduler-container .content .block .day .day-event .main_block .suggestion_items .suggested-by-wrapper .suggested-by .profile{position:absolute;width:100%;height:100%;border-radius:50%}.scheduler-container .content .block .day .day-event .main_block .suggestion_items .suggested-by-wrapper .suggested-by .heart{width:25px;height:25px;position:absolute;top:-4px;right:-12px}.scheduler-container .content .block .day .day-event .main_block .wrapper{flex-direction:row;flex-grow:1;display:flex;justify-content:space-between}.scheduler-container .content .block .day .day-event .main_block.expanded .suggestion_items{transition:.3s;height:30px;margin-top:10px}.scheduler-container .content .block .day .day-event .main_block.expanded .show_more{transition:.3s;transform:rotate(0)}.scheduler-container .content .block .day .day-event .booked{pointer-events:none;color:var(--cyrano-pink-shade-1)}@media (max-width: 576px){.scheduler-container .title{margin-top:10px;font-size:10.25px}.scheduler-container .empty-messsage{font-size:8px}.scheduler-container .content,.scheduler-container .content .block .day{row-gap:3px}.scheduler-container .content .block .day .day_name{font-size:8px}.scheduler-container .content .block .day .day-event{margin-bottom:5px}.scheduler-container .content .block .day .day-event .main_block{padding:5px;border-radius:12px}.scheduler-container .content .block .day .day-event .main_block .show_more{width:12px;height:12px}.scheduler-container .content .block .day .day-event .main_block .wrapper{flex-direction:row;display:flex;justify-content:space-between}.scheduler-container .content .block .day .day-event .main_block .time{margin-right:5px;font-size:12px;font-size:10px;justify-content:space-between}.scheduler-container .content .block .day .day-event .main_block .suggestions-count{text-align:right;font-weight:500;line-height:9.42px;letter-spacing:.07px;font-size:8px;padding-right:10px}.scheduler-container .content .block .day .day-event .main_block .free_time{font-size:10.25px}.scheduler-container .content .block .day .day-event .main_block .event-header{column-gap:5px}.scheduler-container .content .block .day .day-event .main_block .icons img{width:10px;height:10px}.scheduler-container .content .block .day .day-event .main_block .suggestion_items{padding-left:23px;font-size:8px;letter-spacing:.07px}.scheduler-container .content .block .day .day-event .expanded .suggestion_items{height:10px;margin-top:7px}}.day-event .main_block:has(.blocked) .suggestion_items{height:0!important;margin-top:0!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "component", type: SectionSeparatorComponent, selector: "lib-section-separator" }, { kind: "ngmodule", type: SkeletonModule }, { kind: "component", type: i2$2.Skeleton, selector: "p-skeleton", inputs: ["styleClass", "shape", "animation", "borderRadius", "size", "width", "height"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.DatePipe, name: "date" }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1367
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.14", type: LibSchedulerComponent, isStandalone: true, selector: "lib-scheduler", inputs: { adsTemplate: "adsTemplate", loading$: "loading$", emptyMessage: "emptyMessage", displayBookedStatuses: "displayBookedStatuses", displayEmptyDays: "displayEmptyDays", events$: "events$", startDate: "startDate", endDate: "endDate", default: "default" }, outputs: { bookEvent: "bookEvent", removeSuggestion: "removeSuggestion" }, ngImport: i0, template: "<div class=\"scheduler-container\" *ngIf=\"(loading$ | async) !== true; else loadingScheduler\">\n <div class=\"title f-lg f-gilroy-regular\" *ngIf=\"displayBookedStatuses\">{{ bookedCount }} {{ 'BOOKED' | translate }} - {{ suggestedCount }} {{ 'SUGGESTED' | translate }}</div>\n <ng-container *ngTemplateOutlet=\"adsTemplate\"></ng-container>\n <div class=\"content wrapper\" libDraggableScroll direction=\"vertical\" *ngIf=\"bookedCount > 0 || suggestedCount > 0 || displayEmptyDays; else emptyScheduler\">\n @for (eventDay of eventsDays; let dayIndex = $index; track eventDay) {\n <div class=\"block\">\n <div class=\"day\">\n <div class=\"day_name f-md f-gilroy-regular\">{{ eventDay.day }} <lib-section-separator></lib-section-separator></div>\n @for (event of eventDay.events; let eventIndex = $index; track event) {\n <div class=\"day-event\" *ngIf=\"event.suggestions?.length > 0\">\n <div class=\"main_block\" [class.expanded]=\"event.expanded && !event.booked\">\n <div class=\"event-header\" (click)=\"toggleExpand(dayIndex, eventIndex)\">\n <img src=\"assets/scheduler/arrow.svg\" class=\"show_more\" />\n <div class=\"time f-calistoga f-lg\">{{ event.start | date: 'h a' }}</div>\n <div class=\"wrapper\">\n <div class=\"free_time f-gilroy-regular f-md\">\n ~{{ event.hours }}\n <span [class.booked]=\"event.booked\">\n {{ (event.booked ? 'BOOKED' : 'FREE') | translate }}\n </span>\n </div>\n <div class=\"suggestions-count f-gilroy-regular f-sm\" *ngIf=\"event.suggestions?.length > 0\">\n <div>{{ event.suggestions.length }} {{ 'EVENT_SUGGETIONS_MSG' | translate }}</div>\n </div>\n </div>\n </div>\n @for (suggestion of event.suggestions; let suggestedIndex = $index; track suggestion) {\n <div class=\"suggestion_items\">\n <div class=\"suggested-by-wrapper\">\n @for (profile of suggestion?.profiles; track profile) {\n <div class=\"suggested-by\">\n <img class=\"profile\" [src]=\"profile?.img || 'assets/icons/default-profile.svg'\" />\n @if (profile?.suggested) {\n <img class=\"heart\" src=\"assets/scheduler/heart.svg\" />\n } @else if (profile?.cancelled) {\n <img class=\"heart\" src=\"assets/scheduler/cancel_active.svg\" />\n }\n </div>\n }\n <span class=\"schedule-title\"> {{ suggestion.title }} </span>\n </div>\n <div class=\"icons\">\n <img [src]=\"'assets/scheduler/cancel' + (suggestion.canceled ? '_active' : '') + '.svg'\" (click)=\"cancelSuggestion(dayIndex, eventIndex, suggestedIndex)\" />\n <img [src]=\"'assets/scheduler/accept' + (suggestion.checked ? '_active' : '') + '.svg'\" (click)=\"acceptSuggestion(dayIndex, eventIndex, suggestedIndex)\" />\n </div>\n </div>\n }\n </div>\n </div>\n }\n </div>\n </div>\n }\n </div>\n <ng-template #emptyScheduler>\n <lib-section-separator></lib-section-separator>\n <div class=\"empty-messsage messsage f-lg f-gilroy-regular\">{{ emptyMessage }}</div>\n </ng-template>\n</div>\n\n<ng-template #loadingScheduler>\n <div class=\"scheduler-container\">\n <div class=\"content\">\n @for (eventDay of eventsDays; let dayIndex = $index; track eventDay) {\n <div class=\"block\">\n <div class=\"day\">\n <div class=\"day_name f-md f-gilroy-regular\">{{ eventDay.day }} <lib-section-separator></lib-section-separator></div>\n <p-skeleton width=\"100%\" height=\"20px\" borderRadius=\"20px\"></p-skeleton>\n </div>\n </div>\n }\n </div>\n </div>\n</ng-template>\n", styles: [".scheduler-container{position:relative;border-radius:16px}.scheduler-container .title{text-align:center;font-weight:500;margin-top:20px}.scheduler-container .empty-messsage{margin-bottom:40px}.scheduler-container .content{display:flex;flex-direction:column;row-gap:3px}.scheduler-container .content .block{position:relative;z-index:1}.scheduler-container .content .block .day{display:flex;flex-direction:column;row-gap:3px}.scheduler-container .content .block .day .day_name{color:#ebebf599;font-weight:500;display:flex;align-items:center}.scheduler-container .content .block .day .day_name lib-section-separator{width:-webkit-fill-available;--margin-top: .1rem;--margin-bottom: .1rem;margin:0 20px}.scheduler-container .content .block .day .day-event{background:linear-gradient(162deg,#c35a8b -9%,#524b57 32%);padding:2px 2px 0;border-radius:15px}.scheduler-container .content .block .day .day-event .main_block{border-radius:15px;background:linear-gradient(90deg,#fe3c7299 -9%,#3a323f 14%);padding:8px 10px;color:#ebebf599;box-shadow:-1px -3px 8px #ffffff1a}.scheduler-container .content .block .day .day-event .main_block .show_more{width:20px;height:20px;transition:.3s;transform:rotate(-90deg)}.scheduler-container .content .block .day .day-event .main_block .time{color:var(--ion-text-color, #fff5f5)}.scheduler-container .content .block .day .day-event .main_block .free_time{font-weight:500}.scheduler-container .content .block .day .day-event .main_block .free_time .blocked{color:#fe3c72}.scheduler-container .content .block .day .day-event .main_block .event-header{cursor:pointer;display:flex;align-items:center;column-gap:10px}.scheduler-container .content .block .day .day-event .main_block .icons{display:flex;column-gap:10px;padding-right:10px}.scheduler-container .content .block .day .day-event .main_block .icons img{width:25px;height:25px;cursor:pointer}.scheduler-container .content .block .day .day-event .main_block .suggestion_items{transition:.3s;height:0;overflow:hidden;display:flex;justify-content:space-between;margin-top:0}.scheduler-container .content .block .day .day-event .main_block .suggestion_items .suggested-by-wrapper{display:flex;align-items:center}.scheduler-container .content .block .day .day-event .main_block .suggestion_items .suggested-by-wrapper .schedule-title{padding-left:30px}.scheduler-container .content .block .day .day-event .main_block .suggestion_items .suggested-by-wrapper .suggested-by{border:2px solid #28252d;width:25px;height:25px;position:relative;border-radius:50%}.scheduler-container .content .block .day .day-event .main_block .suggestion_items .suggested-by-wrapper .suggested-by .profile{position:absolute;width:100%;height:100%;border-radius:50%}.scheduler-container .content .block .day .day-event .main_block .suggestion_items .suggested-by-wrapper .suggested-by .heart{width:25px;height:25px;position:absolute;top:-4px;right:-12px}.scheduler-container .content .block .day .day-event .main_block .wrapper{flex-direction:row;flex-grow:1;display:flex;justify-content:space-between}.scheduler-container .content .block .day .day-event .main_block.expanded .suggestion_items{transition:.3s;height:30px;margin-top:10px}.scheduler-container .content .block .day .day-event .main_block.expanded .show_more{transition:.3s;transform:rotate(0)}.scheduler-container .content .block .day .day-event .booked{pointer-events:none;color:var(--cyrano-pink-shade-1)}@media (max-width: 576px){.scheduler-container .title{margin-top:10px;font-size:10.25px}.scheduler-container .empty-messsage{font-size:8px}.scheduler-container .content,.scheduler-container .content .block .day{row-gap:3px}.scheduler-container .content .block .day .day_name{font-size:8px}.scheduler-container .content .block .day .day-event{margin-bottom:5px}.scheduler-container .content .block .day .day-event .main_block{padding:5px;border-radius:12px}.scheduler-container .content .block .day .day-event .main_block .show_more{width:12px;height:12px}.scheduler-container .content .block .day .day-event .main_block .wrapper{flex-direction:row;display:flex;justify-content:space-between}.scheduler-container .content .block .day .day-event .main_block .time{margin-right:5px;font-size:12px;font-size:10px;justify-content:space-between}.scheduler-container .content .block .day .day-event .main_block .suggestions-count{text-align:right;font-weight:500;line-height:9.42px;letter-spacing:.07px;font-size:8px;padding-right:10px}.scheduler-container .content .block .day .day-event .main_block .free_time{font-size:10.25px}.scheduler-container .content .block .day .day-event .main_block .event-header{column-gap:5px}.scheduler-container .content .block .day .day-event .main_block .icons img{width:10px;height:10px}.scheduler-container .content .block .day .day-event .main_block .suggestion_items{padding-left:23px;font-size:8px;letter-spacing:.07px}.scheduler-container .content .block .day .day-event .expanded .suggestion_items{height:10px;margin-top:7px}}.day-event .main_block:has(.blocked) .suggestion_items{height:0!important;margin-top:0!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "component", type: SectionSeparatorComponent, selector: "lib-section-separator" }, { kind: "ngmodule", type: SkeletonModule }, { kind: "component", type: i2$2.Skeleton, selector: "p-skeleton", inputs: ["styleClass", "shape", "animation", "borderRadius", "size", "width", "height"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.DatePipe, name: "date" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1480
1368
|
}
|
|
1481
1369
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibSchedulerComponent, decorators: [{
|
|
1482
1370
|
type: Component,
|
|
@@ -1526,26 +1414,12 @@ const innerProgressTealColors = {
|
|
|
1526
1414
|
const progressDefaultColors = {
|
|
1527
1415
|
primary: '#FE3C72',
|
|
1528
1416
|
secondary: '#E15561',
|
|
1529
|
-
tertiary: '#FE3C3C',
|
|
1530
|
-
gradientPrimary: '#f0788d',
|
|
1531
|
-
gradientSecondary: '#f84776',
|
|
1532
|
-
complete: '#ff858f',
|
|
1533
|
-
incomplete: '#E15561',
|
|
1534
|
-
};
|
|
1535
|
-
|
|
1536
|
-
var INNER_CIRCLE_STATE;
|
|
1537
|
-
(function (INNER_CIRCLE_STATE) {
|
|
1538
|
-
INNER_CIRCLE_STATE["Waiting"] = "waiting";
|
|
1539
|
-
INNER_CIRCLE_STATE["Quiet"] = "quiet";
|
|
1540
|
-
INNER_CIRCLE_STATE["Unresponsive"] = "unresponsive";
|
|
1541
|
-
INNER_CIRCLE_STATE["Redelegation"] = "redelegation";
|
|
1542
|
-
})(INNER_CIRCLE_STATE || (INNER_CIRCLE_STATE = {}));
|
|
1543
|
-
|
|
1544
|
-
var CircleVariable;
|
|
1545
|
-
(function (CircleVariable) {
|
|
1546
|
-
CircleVariable["Partial"] = "partial";
|
|
1547
|
-
CircleVariable["Complete"] = "complete";
|
|
1548
|
-
})(CircleVariable || (CircleVariable = {}));
|
|
1417
|
+
tertiary: '#FE3C3C',
|
|
1418
|
+
gradientPrimary: '#f0788d',
|
|
1419
|
+
gradientSecondary: '#f84776',
|
|
1420
|
+
complete: '#ff858f',
|
|
1421
|
+
incomplete: '#E15561',
|
|
1422
|
+
};
|
|
1549
1423
|
|
|
1550
1424
|
class CircleProgressComponent {
|
|
1551
1425
|
set config(newConfig) {
|
|
@@ -1710,11 +1584,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImpo
|
|
|
1710
1584
|
type: Output
|
|
1711
1585
|
}] } });
|
|
1712
1586
|
|
|
1713
|
-
var LocalStorageKeys;
|
|
1714
|
-
(function (LocalStorageKeys) {
|
|
1715
|
-
LocalStorageKeys["LongPressForSendImmediately"] = "longPressForSendImmediately";
|
|
1716
|
-
})(LocalStorageKeys || (LocalStorageKeys = {}));
|
|
1717
|
-
|
|
1718
1587
|
class AbstractCacheService {
|
|
1719
1588
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: AbstractCacheService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1720
1589
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: AbstractCacheService }); }
|
|
@@ -1723,7 +1592,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImpo
|
|
|
1723
1592
|
type: Injectable
|
|
1724
1593
|
}] });
|
|
1725
1594
|
|
|
1726
|
-
class ChatService {
|
|
1595
|
+
let ChatService$1 = class ChatService {
|
|
1727
1596
|
constructor(cacheService) {
|
|
1728
1597
|
this.cacheService = cacheService;
|
|
1729
1598
|
}
|
|
@@ -1772,8 +1641,8 @@ class ChatService {
|
|
|
1772
1641
|
}
|
|
1773
1642
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ChatService, deps: [{ token: AbstractCacheService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1774
1643
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ChatService, providedIn: 'root' }); }
|
|
1775
|
-
}
|
|
1776
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ChatService, decorators: [{
|
|
1644
|
+
};
|
|
1645
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ChatService$1, decorators: [{
|
|
1777
1646
|
type: Injectable,
|
|
1778
1647
|
args: [{
|
|
1779
1648
|
providedIn: 'root',
|
|
@@ -1850,13 +1719,13 @@ class LibMessageModalComponent {
|
|
|
1850
1719
|
longPressEnabled: this.toggleLongPress.value,
|
|
1851
1720
|
});
|
|
1852
1721
|
}
|
|
1853
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibMessageModalComponent, deps: [{ token: i1$
|
|
1854
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.14", type: LibMessageModalComponent, isStandalone: false, selector: "lib-message-modal", viewQueries: [{ propertyName: "toggleTemplate", first: true, predicate: ["toggleTemplate"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"message-modal\">\r\n <header class=\"message-modal__header\">\r\n <div class=\"message-modal__info\">\r\n <div class=\"message-modal__title\">Send Message</div>\r\n </div>\r\n </header>\r\n <form class=\"message-modal__radio-btn\" [formGroup]=\"formTime\">\r\n <lib-form-field [formFieldControl]=\"messageType\" [radioTranslateLabels]=\"true\" [options]=\"options\" [type]=\"type\"></lib-form-field>\r\n @if (messageType?.value === 'specify_time') {\r\n <lib-input-date-field [formControlName]=\"'time'\" label=\"\" [timeOnly]=\"true\" [showIcon]=\"true\"></lib-input-date-field>\r\n }\r\n </form>\r\n <div>\r\n <lib-primary-btn (click)=\"onSubmit()\" [disabled]=\"formTime.valid\">Send</lib-primary-btn>\r\n </div>\r\n</div>\r\n\r\n<ng-template #toggleTemplate>\r\n <div class=\"long-press-toggle\">\r\n <lib-toggle [formControl]=\"toggleLongPress\"></lib-toggle>\r\n <div class=\"long-press-toggle__text\">{{ 'MESSAGE_MODAL.LONG_PRESS' | translate }}</div>\r\n </div>\r\n</ng-template>\r\n", styles: [":host{font-size:clamp(0px,3.2dvw,12px)}:host *{box-sizing:border-box}:host lib-toggle{font-size:.6em}.long-press-toggle{margin:10px;display:flex}.long-press-toggle__text{margin-left:.8em;font-size:1.1em;font-family:Gilroy}.message-modal{-webkit-backdrop-filter:blur(.625em);backdrop-filter:blur(.625em);background:linear-gradient(transparent,#b0b0b01f 15%);margin:auto;color:#fff;padding:1.5em 2.5em;width:27em;border-radius:3.6625em;font-family:Gilroy;display:flex;flex-direction:column;gap:17px}.message-modal__header{display:flex;justify-content:center;align-items:flex-start}.message-modal__title{font-size:1.875em;font-weight:300;font-family:Calistoga;color:#fff5f5}.message-modal__radio-btn{display:flex;flex-direction:column}.message-modal:before{content:\"\";position:absolute;inset:0;border-radius:3.6625em;padding:.125em;background:linear-gradient(to top,transparent,transparent,#ccabc4);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;z-index:-1}.overflow{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}@media (max-width: 768px){:host{font-size:calc(clamp(0px,3.2dvw,12px)*.8)}}\n"], dependencies: [{ kind: "component", type: i2.FormFieldComponent, selector: "lib-form-field", inputs: ["fieldName", "label", "placeholder", "message", "useTooltips", "descriptionText", "formFieldControl", "submitted", "required", "type", "plusIconUrl", "minusIconUrl", "maxLength", "max", "min", "pinValue", "dualKnobs", "reverseBarColor", "defaultValue", "noMargin", "options", "iconHtml", "invalidPatternMessage", "dateFormat", "currencySymbol", "hideCents", "isEditable", "rowEditConfirmationObsv", "errorInlineMode", "showLabelInRequiredErrorMessage", "decimalPosition", "hyperlinkTarget", "readOnly", "focus", "showRequiredIndicator", "maxDate", "minDate", "radioTranslateLabels", "radioDeselectable", "radioRippleEffect"], outputs: ["rowEdit", "focusOut", "valueChange"] }, { kind: "component", type: i2.PrimaryBtnComponent, selector: "lib-primary-btn", inputs: ["hoverOutline", "disabled", "type", "form", "label", "showArrowIcon", "disableTextShadow", "loading$"] }, { kind: "component", type: i2.InputDateFieldComponent, selector: "lib-input-date-field", inputs: ["label", "defaultDate", "maxDate", "minDate", "showTime", "hieActions", "readonly", "defaultDayHighlight", "showIcon", "timeOnly", "view", "disabled", "dateFormat", "placeholder", "appendTo", "stepMinute", "mask", "styleClass", "timeFormat"], outputs: ["focusEvent"] }, { kind: "directive", type: i1$
|
|
1722
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibMessageModalComponent, deps: [{ token: i1$2.FormBuilder }, { token: i2.PopupModalService }, { token: ChatService$1 }, { token: MODAL_DATA, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1723
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.14", type: LibMessageModalComponent, isStandalone: false, selector: "lib-message-modal", viewQueries: [{ propertyName: "toggleTemplate", first: true, predicate: ["toggleTemplate"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"message-modal\">\r\n <header class=\"message-modal__header\">\r\n <div class=\"message-modal__info\">\r\n <div class=\"message-modal__title\">Send Message</div>\r\n </div>\r\n </header>\r\n <form class=\"message-modal__radio-btn\" [formGroup]=\"formTime\">\r\n <lib-form-field [formFieldControl]=\"messageType\" [radioTranslateLabels]=\"true\" [options]=\"options\" [type]=\"type\"></lib-form-field>\r\n @if (messageType?.value === 'specify_time') {\r\n <lib-input-date-field [formControlName]=\"'time'\" label=\"\" [timeOnly]=\"true\" [showIcon]=\"true\"></lib-input-date-field>\r\n }\r\n </form>\r\n <div>\r\n <lib-primary-btn (click)=\"onSubmit()\" [disabled]=\"formTime.valid\">Send</lib-primary-btn>\r\n </div>\r\n</div>\r\n\r\n<ng-template #toggleTemplate>\r\n <div class=\"long-press-toggle\">\r\n <lib-toggle [formControl]=\"toggleLongPress\"></lib-toggle>\r\n <div class=\"long-press-toggle__text\">{{ 'MESSAGE_MODAL.LONG_PRESS' | translate }}</div>\r\n </div>\r\n</ng-template>\r\n", styles: [":host{font-size:clamp(0px,3.2dvw,12px)}:host *{box-sizing:border-box}:host lib-toggle{font-size:.6em}.long-press-toggle{margin:10px;display:flex}.long-press-toggle__text{margin-left:.8em;font-size:1.1em;font-family:Gilroy}.message-modal{-webkit-backdrop-filter:blur(.625em);backdrop-filter:blur(.625em);background:linear-gradient(transparent,#b0b0b01f 15%);margin:auto;color:#fff;padding:1.5em 2.5em;width:27em;border-radius:3.6625em;font-family:Gilroy;display:flex;flex-direction:column;gap:17px}.message-modal__header{display:flex;justify-content:center;align-items:flex-start}.message-modal__title{font-size:1.875em;font-weight:300;font-family:Calistoga;color:#fff5f5}.message-modal__radio-btn{display:flex;flex-direction:column}.message-modal:before{content:\"\";position:absolute;inset:0;border-radius:3.6625em;padding:.125em;background:linear-gradient(to top,transparent,transparent,#ccabc4);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;z-index:-1}.overflow{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}@media (max-width: 768px){:host{font-size:calc(clamp(0px,3.2dvw,12px)*.8)}}\n"], dependencies: [{ kind: "component", type: i2.FormFieldComponent, selector: "lib-form-field", inputs: ["fieldName", "label", "placeholder", "message", "useTooltips", "descriptionText", "formFieldControl", "submitted", "required", "type", "plusIconUrl", "minusIconUrl", "maxLength", "max", "min", "pinValue", "dualKnobs", "reverseBarColor", "defaultValue", "noMargin", "options", "iconHtml", "invalidPatternMessage", "dateFormat", "currencySymbol", "hideCents", "isEditable", "rowEditConfirmationObsv", "errorInlineMode", "showLabelInRequiredErrorMessage", "decimalPosition", "hyperlinkTarget", "readOnly", "focus", "showRequiredIndicator", "maxDate", "minDate", "radioTranslateLabels", "radioDeselectable", "radioRippleEffect"], outputs: ["rowEdit", "focusOut", "valueChange"] }, { kind: "component", type: i2.PrimaryBtnComponent, selector: "lib-primary-btn", inputs: ["hoverOutline", "disabled", "type", "form", "label", "showArrowIcon", "disableTextShadow", "loading$"] }, { kind: "component", type: i2.InputDateFieldComponent, selector: "lib-input-date-field", inputs: ["label", "defaultDate", "maxDate", "minDate", "showTime", "hieActions", "readonly", "defaultDayHighlight", "showIcon", "timeOnly", "view", "disabled", "dateFormat", "placeholder", "appendTo", "stepMinute", "mask", "styleClass", "timeFormat"], outputs: ["focusEvent"] }, { kind: "directive", type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i2.ToggleComponent, selector: "lib-toggle", inputs: ["disabled", "toggleState", "variant", "left", "right", "thumbImg", "multipleOptions"], outputs: ["toggleStateChange"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1855
1724
|
}
|
|
1856
1725
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibMessageModalComponent, decorators: [{
|
|
1857
1726
|
type: Component,
|
|
1858
1727
|
args: [{ selector: 'lib-message-modal', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<div class=\"message-modal\">\r\n <header class=\"message-modal__header\">\r\n <div class=\"message-modal__info\">\r\n <div class=\"message-modal__title\">Send Message</div>\r\n </div>\r\n </header>\r\n <form class=\"message-modal__radio-btn\" [formGroup]=\"formTime\">\r\n <lib-form-field [formFieldControl]=\"messageType\" [radioTranslateLabels]=\"true\" [options]=\"options\" [type]=\"type\"></lib-form-field>\r\n @if (messageType?.value === 'specify_time') {\r\n <lib-input-date-field [formControlName]=\"'time'\" label=\"\" [timeOnly]=\"true\" [showIcon]=\"true\"></lib-input-date-field>\r\n }\r\n </form>\r\n <div>\r\n <lib-primary-btn (click)=\"onSubmit()\" [disabled]=\"formTime.valid\">Send</lib-primary-btn>\r\n </div>\r\n</div>\r\n\r\n<ng-template #toggleTemplate>\r\n <div class=\"long-press-toggle\">\r\n <lib-toggle [formControl]=\"toggleLongPress\"></lib-toggle>\r\n <div class=\"long-press-toggle__text\">{{ 'MESSAGE_MODAL.LONG_PRESS' | translate }}</div>\r\n </div>\r\n</ng-template>\r\n", styles: [":host{font-size:clamp(0px,3.2dvw,12px)}:host *{box-sizing:border-box}:host lib-toggle{font-size:.6em}.long-press-toggle{margin:10px;display:flex}.long-press-toggle__text{margin-left:.8em;font-size:1.1em;font-family:Gilroy}.message-modal{-webkit-backdrop-filter:blur(.625em);backdrop-filter:blur(.625em);background:linear-gradient(transparent,#b0b0b01f 15%);margin:auto;color:#fff;padding:1.5em 2.5em;width:27em;border-radius:3.6625em;font-family:Gilroy;display:flex;flex-direction:column;gap:17px}.message-modal__header{display:flex;justify-content:center;align-items:flex-start}.message-modal__title{font-size:1.875em;font-weight:300;font-family:Calistoga;color:#fff5f5}.message-modal__radio-btn{display:flex;flex-direction:column}.message-modal:before{content:\"\";position:absolute;inset:0;border-radius:3.6625em;padding:.125em;background:linear-gradient(to top,transparent,transparent,#ccabc4);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;z-index:-1}.overflow{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}@media (max-width: 768px){:host{font-size:calc(clamp(0px,3.2dvw,12px)*.8)}}\n"] }]
|
|
1859
|
-
}], ctorParameters: () => [{ type: i1$
|
|
1728
|
+
}], ctorParameters: () => [{ type: i1$2.FormBuilder }, { type: i2.PopupModalService }, { type: ChatService$1 }, { type: undefined, decorators: [{
|
|
1860
1729
|
type: Optional
|
|
1861
1730
|
}, {
|
|
1862
1731
|
type: Inject,
|
|
@@ -1866,19 +1735,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImpo
|
|
|
1866
1735
|
args: ['toggleTemplate', { static: true }]
|
|
1867
1736
|
}] } });
|
|
1868
1737
|
|
|
1869
|
-
var SenderTypes;
|
|
1870
|
-
(function (SenderTypes) {
|
|
1871
|
-
SenderTypes["USER"] = "user";
|
|
1872
|
-
SenderTypes["OTHER"] = "other";
|
|
1873
|
-
})(SenderTypes || (SenderTypes = {}));
|
|
1874
|
-
|
|
1875
|
-
var SendMessageType;
|
|
1876
|
-
(function (SendMessageType) {
|
|
1877
|
-
SendMessageType["INMEDIATELY"] = "send_immediately";
|
|
1878
|
-
SendMessageType["AFTER"] = "send_after";
|
|
1879
|
-
SendMessageType["SPECIFIC"] = "specify_time";
|
|
1880
|
-
})(SendMessageType || (SendMessageType = {}));
|
|
1881
|
-
|
|
1882
1738
|
class GifSelectorService {
|
|
1883
1739
|
constructor() {
|
|
1884
1740
|
this.http = inject(HttpClient);
|
|
@@ -1975,7 +1831,7 @@ class GifSelectorComponent {
|
|
|
1975
1831
|
this.selectGif.emit(url);
|
|
1976
1832
|
}
|
|
1977
1833
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: GifSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1978
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.14", type: GifSelectorComponent, isStandalone: true, selector: "lib-gif-selector", outputs: { selectGif: "selectGif" }, ngImport: i0, template: "<form [formGroup]=\"form\" autocomplete=\"off\" libFocusInvalidInput *ngIf=\"form\">\n <input type=\"text\" formControlName=\"gifTerm\" />\n <div\n infiniteScroll\n [infiniteScrollDistance]=\"distance\"\n [infiniteScrollThrottle]=\"throttle\"\n [scrollWindow]=\"false\"\n (scrolled)=\"onScrollGifs()\"\n class=\"gifs-container\"\n style=\"display: flex; gap: 1px; flex-wrap: wrap\"\n >\n <img [src]=\"gif.media_formats.nanogif.url\" class=\"gif\" *ngFor=\"let gif of gifs\" (click)=\"onGifClick(gif.media_formats.nanogif.url)\" />\n </div>\n</form>\n", styles: [":host{width:100%;height:100%;font-size:clamp(0px,3.2dvw,15px)}:host form{border-radius:1em 1em 0 0;background-color:#000;width:100%;height:100%}:host form input[type=text]{height:2em;margin:0;font-size:.8em}:host form .gifs-container{height:calc(100% - 3em);overflow-y:auto;display:flex;flex-wrap:wrap;align-items:center}:host form .gifs-container .gif{flex:2 1 auto;width:auto;max-width:33%;max-height:13em;height:fit-content;object-fit:contain;object-position:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: InfiniteScrollModule }, { kind: "directive", type: i2$3.InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$
|
|
1834
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.14", type: GifSelectorComponent, isStandalone: true, selector: "lib-gif-selector", outputs: { selectGif: "selectGif" }, ngImport: i0, template: "<form [formGroup]=\"form\" autocomplete=\"off\" libFocusInvalidInput *ngIf=\"form\">\n <input type=\"text\" formControlName=\"gifTerm\" />\n <div\n infiniteScroll\n [infiniteScrollDistance]=\"distance\"\n [infiniteScrollThrottle]=\"throttle\"\n [scrollWindow]=\"false\"\n (scrolled)=\"onScrollGifs()\"\n class=\"gifs-container\"\n style=\"display: flex; gap: 1px; flex-wrap: wrap\"\n >\n <img [src]=\"gif.media_formats.nanogif.url\" class=\"gif\" *ngFor=\"let gif of gifs\" (click)=\"onGifClick(gif.media_formats.nanogif.url)\" />\n </div>\n</form>\n", styles: [":host{width:100%;height:100%;font-size:clamp(0px,3.2dvw,15px)}:host form{border-radius:1em 1em 0 0;background-color:#000;width:100%;height:100%}:host form input[type=text]{height:2em;margin:0;font-size:.8em}:host form .gifs-container{height:calc(100% - 3em);overflow-y:auto;display:flex;flex-wrap:wrap;align-items:center}:host form .gifs-container .gif{flex:2 1 auto;width:auto;max-width:33%;max-height:13em;height:fit-content;object-fit:contain;object-position:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: InfiniteScrollModule }, { kind: "directive", type: i2$3.InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1979
1835
|
}
|
|
1980
1836
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: GifSelectorComponent, decorators: [{
|
|
1981
1837
|
type: Component,
|
|
@@ -2003,7 +1859,7 @@ class ChatComponent {
|
|
|
2003
1859
|
this.cdr = inject(ChangeDetectorRef);
|
|
2004
1860
|
this.elementRef = inject(ElementRef);
|
|
2005
1861
|
this.popupModalService = inject(PopupModalService);
|
|
2006
|
-
this.chatService = inject(ChatService);
|
|
1862
|
+
this.chatService = inject(ChatService$1);
|
|
2007
1863
|
this.renderer = inject(Renderer2);
|
|
2008
1864
|
this.scrollThreshold = 200;
|
|
2009
1865
|
this.messages = [];
|
|
@@ -2230,7 +2086,7 @@ class ChatComponent {
|
|
|
2230
2086
|
useExisting: ChatComponent,
|
|
2231
2087
|
multi: true,
|
|
2232
2088
|
},
|
|
2233
|
-
], viewQueries: [{ propertyName: "emojiPickerRef", first: true, predicate: ["emojiPicker"], descendants: true }, { propertyName: "scrollableContainer", first: true, predicate: ["scrollableContainer"], descendants: true }, { propertyName: "chatInput", first: true, predicate: ["chatInput"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"chat-component\">\n <div class=\"chat-container\">\n <div class=\"go-button\" *ngIf=\"isAtStartChat\" (click)=\"scrollToBottom()\">\u2193</div>\n <div\n class=\"dateMessages\"\n #scrollableContainer\n infiniteScroll\n [infiniteScrollDistance]=\"distance\"\n [infiniteScrollThrottle]=\"throttle\"\n [scrollWindow]=\"false\"\n (scrolledUp)=\"onScrollChats()\"\n (scroll)=\"onScrollMessages($event)\"\n >\n <div class=\"chat-item-container chat-item-container_init\">\n <div class=\"date-message\">\n <span>{{ prospectJoinDate ? (prospectJoinDate | date: 'MMM d, HH:mm') : '-' }}</span>\n </div>\n <div class=\"chat-item init-chat\">\n <div class=\"chat-item_text\">{{ 'CHAT.INITIAL_TEXT' | translate }}</div>\n </div>\n </div>\n <div\n *ngFor=\"let dateMessage of messages\"\n class=\"chat-item-container\"\n [class.chat-item-container_user]=\"dateMessage.message.sender === 'user'\"\n [class.chat-item-container_other]=\"dateMessage.message.sender === 'other'\"\n >\n <div class=\"date-message\" *ngIf=\"dateMessage.isFirstMessage && includeTime\">\n <span>{{ dateMessage.date | date: 'MMM d' }}</span>\n </div>\n <div class=\"chat-item\" [class.user-chat]=\"dateMessage.message.sender === 'user'\" [class.other-chat]=\"dateMessage.message.sender === 'other'\">\n @if (dateMessage.message.message !== '') {\n <div class=\"chat-item_text\">{{ dateMessage.message.message }}</div>\n } @else if (dateMessage.message.attachments[0].url !== '') {\n <img class=\"chat-item_image\" [src]=\"dateMessage.message.attachments[0].url\" alt=\"\" />\n }\n <div class=\"chat-item_timestamp\" *ngIf=\"includeTime\">\n {{ dateMessage.message.timestamp | date: 'shortTime' }}\n </div>\n </div>\n </div>\n </div>\n <div class=\"bottom-gradient-fade\"></div>\n </div>\n <form autocomplete=\"off\" libFocusInvalidInput *ngIf=\"textControl\" class=\"message-sender\">\n <lib-input-field\n #chatInput\n [formControl]=\"textControl\"\n [value]=\"newTextMessage\"\n [label]=\"\"\n [textarea]=\"true\"\n placeholder=\"Send Message to Client Prospect\"\n (keyDown)=\"onKeyDown($event)\"\n [maxLength]=\"maxLength\"\n >\n </lib-input-field>\n <div class=\"chat-buttons\">\n <div class=\"send\" libLongPress [longPressEnabled]=\"longPressEnabled\" (shortPress)=\"onSendText()\" (longPress)=\"onLongPress()\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 23 22\" fill=\"none\">\n <g filter=\"url(#filter0_d_748_3387)\">\n <path\n d=\"M14.6311 17.0545L18.3229 5.85996C18.692 4.77867 17.646 3.69738 16.6001 4.07901L5.77092 7.89533C4.54033 8.34056 4.54033 10.1215 5.83244 10.5032L9.46266 11.5208C10.2625 11.7753 10.9394 12.4113 11.1239 13.2381L12.1084 16.9908C12.4776 18.3266 14.2004 18.3266 14.6311 17.0545Z\"\n fill=\"url(#paint0_linear_748_3387)\"\n />\n </g>\n <defs>\n <filter id=\"filter0_d_748_3387\" x=\"0.85553\" y=\"0.000732422\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\n <feOffset />\n <feGaussianBlur stdDeviation=\"2\" />\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 1 0 0 0 0 0.0961538 0 0 0 0 0.593269 0 0 0 1 0\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_748_3387\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_748_3387\" result=\"shape\" />\n </filter>\n <linearGradient id=\"paint0_linear_748_3387\" x1=\"18.5134\" y1=\"2.81097\" x2=\"0.162773\" y2=\"35.3556\" gradientUnits=\"userSpaceOnUse\">\n <stop stop-color=\"#FE3C72\" />\n <stop offset=\"0.384615\" stop-color=\"#FFB5E9\" />\n </linearGradient>\n </defs>\n </svg>\n </div>\n <lib-popup customClass=\"message-modal-container\" [isOpen]=\"toggleMessageModal\" [modalComponent]=\"ModalComponent\" [modalComponentData]=\"{ modal: {} }\"> </lib-popup>\n <div\n [ngClass]=\"{ 'emoji-picker-trigger': true, active: emojiVisibility }\"\n [name]=\"emojiPickerConfig?.pickerIcon ? '' : 'body-outline'\"\n (click)=\"handleEmojiPickerClick()\"\n [src]=\"emojiPickerConfig?.pickerIcon\"\n class=\"emoji\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\" fill=\"none\" overflow=\"auto\">\n <g>\n <mask id=\"path-1-outside-1_422_3414\" maskUnits=\"userSpaceOnUse\" x=\"-0.72551\" y=\"-0.713776\" fill=\"url(#paint0_linear_748_3387)\">\n <path\n d=\"M5.13057 0.286224C7.81253 0.286224 9.98665 2.53373 9.98665 5.30623C9.98665 8.07823 7.81205 10.3252 5.13057 10.3252C2.44861 10.3257 0.27449 8.07823 0.27449 5.30623C0.27449 2.53373 2.44861 0.286224 5.13057 0.286224ZM5.13057 1.03908C4.58476 1.03296 4.0432 1.1388 3.53723 1.35049C3.03126 1.56218 2.57092 1.8755 2.18287 2.27233C1.79482 2.66915 1.48675 3.1416 1.2765 3.66233C1.06625 4.18305 0.95799 4.74172 0.95799 5.30598C0.95799 5.87025 1.06625 6.42891 1.2765 6.94964C1.48675 7.47036 1.79482 7.94281 2.18287 8.33964C2.57092 8.73646 3.03126 9.04979 3.53723 9.26147C4.0432 9.47316 4.58476 9.57901 5.13057 9.57289C6.21752 9.5607 7.25594 9.10579 8.02039 8.30691C8.78485 7.50804 9.21362 6.42969 9.21362 5.30598C9.21362 4.18228 8.78485 3.10393 8.02039 2.30505C7.25594 1.50618 6.21752 1.05126 5.13057 1.03908ZM3.41283 6.70302C3.61718 6.97193 3.87803 7.18925 4.17563 7.33855C4.47323 7.48785 4.79978 7.56522 5.13057 7.56479C5.461 7.5652 5.78721 7.48798 6.08453 7.33895C6.38186 7.18992 6.64253 6.97298 6.84685 6.70453C6.8765 6.66574 6.91325 6.63337 6.955 6.60926C6.99675 6.58515 7.04268 6.56978 7.09018 6.56403C7.13767 6.55827 7.1858 6.56224 7.23181 6.57571C7.27782 6.58919 7.32082 6.6119 7.35834 6.64254C7.39586 6.67319 7.42717 6.71118 7.45049 6.75434C7.47381 6.7975 7.48868 6.84498 7.49425 6.89408C7.49982 6.94318 7.49598 6.99293 7.48294 7.0405C7.46991 7.08806 7.44795 7.13251 7.4183 7.1713C7.14582 7.52897 6.79833 7.818 6.40202 8.01658C6.00572 8.21516 5.57097 8.3181 5.13057 8.31764C4.68953 8.31808 4.25416 8.21484 3.8574 8.01572C3.46064 7.8166 3.11287 7.52681 2.84042 7.16828C2.81083 7.12943 2.78894 7.08493 2.77599 7.03733C2.76304 6.98973 2.75929 6.93996 2.76495 6.89086C2.77061 6.84176 2.78556 6.7943 2.80897 6.75117C2.83237 6.70805 2.86376 6.67011 2.90135 6.63953C2.93893 6.60895 2.98198 6.58632 3.02802 6.57293C3.07407 6.55955 3.12221 6.55567 3.16971 6.56152C3.21721 6.56737 3.26312 6.58283 3.30484 6.60702C3.34655 6.63122 3.38325 6.66367 3.41283 6.70252V6.70302ZM3.67404 3.67506C3.75515 3.67268 3.83589 3.68715 3.9115 3.7176C3.98711 3.74805 4.05604 3.79386 4.11422 3.85233C4.17241 3.9108 4.21866 3.98073 4.25024 4.058C4.28182 4.13527 4.29809 4.2183 4.29809 4.30218C4.29809 4.38606 4.28182 4.46909 4.25024 4.54636C4.21866 4.62363 4.17241 4.69356 4.11422 4.75203C4.05604 4.8105 3.98711 4.85631 3.9115 4.88676C3.83589 4.91721 3.75515 4.93168 3.67404 4.92931C3.51612 4.92469 3.36616 4.85659 3.25604 4.73948C3.14592 4.62238 3.08431 4.4655 3.08431 4.30218C3.08431 4.13886 3.14592 3.98198 3.25604 3.86488C3.36616 3.74777 3.51612 3.67968 3.67404 3.67506ZM6.5871 3.67506C6.66821 3.67268 6.74896 3.68715 6.82457 3.7176C6.90018 3.74805 6.96911 3.79386 7.02729 3.85233C7.08547 3.9108 7.13172 3.98073 7.1633 4.058C7.19488 4.13527 7.21116 4.2183 7.21116 4.30218C7.21116 4.38606 7.19488 4.46909 7.1633 4.54636C7.13172 4.62363 7.08547 4.69356 7.02729 4.75203C6.96911 4.8105 6.90018 4.85631 6.82457 4.88676C6.74896 4.91721 6.66821 4.93168 6.5871 4.92931C6.42918 4.92469 6.27923 4.85659 6.16911 4.73948C6.05898 4.62238 5.99738 4.4655 5.99738 4.30218C5.99738 4.13886 6.05898 3.98198 6.16911 3.86488C6.27923 3.74777 6.42918 3.67968 6.5871 3.67506Z\"\n />\n </mask>\n <path\n _ngcontent-ng-c433636891=\"\"\n d=\"M5.13057 0.286224C7.81253 0.286224 9.98665 2.53373 9.98665 5.30623C9.98665 8.07823 7.81205 10.3252 5.13057 10.3252C2.44861 10.3257 0.27449 8.07823 0.27449 5.30623C0.27449 2.53373 2.44861 0.286224 5.13057 0.286224ZM5.13057 1.03908C4.58476 1.03296 4.0432 1.1388 3.53723 1.35049C3.03126 1.56218 2.57092 1.8755 2.18287 2.27233C1.79482 2.66915 1.48675 3.1416 1.2765 3.66233C1.06625 4.18305 0.95799 4.74172 0.95799 5.30598C0.95799 5.87025 1.06625 6.42891 1.2765 6.94964C1.48675 7.47036 1.79482 7.94281 2.18287 8.33964C2.57092 8.73646 3.03126 9.04979 3.53723 9.26147C4.0432 9.47316 4.58476 9.57901 5.13057 9.57289C6.21752 9.5607 7.25594 9.10579 8.02039 8.30691C8.78485 7.50804 9.21362 6.42969 9.21362 5.30598C9.21362 4.18228 8.78485 3.10393 8.02039 2.30505C7.25594 1.50618 6.21752 1.05126 5.13057 1.03908ZM3.41283 6.70302C3.61718 6.97193 3.87803 7.18925 4.17563 7.33855C4.47323 7.48785 4.79978 7.56522 5.13057 7.56479C5.461 7.5652 5.78721 7.48798 6.08453 7.33895C6.38186 7.18992 6.64253 6.97298 6.84685 6.70453C6.8765 6.66574 6.91325 6.63337 6.955 6.60926C6.99675 6.58515 7.04268 6.56978 7.09018 6.56403C7.13767 6.55827 7.1858 6.56224 7.23181 6.57571C7.27782 6.58919 7.32082 6.6119 7.35834 6.64254C7.39586 6.67319 7.42717 6.71118 7.45049 6.75434C7.47381 6.7975 7.48868 6.84498 7.49425 6.89408C7.49982 6.94318 7.49598 6.99293 7.48294 7.0405C7.46991 7.08806 7.44795 7.13251 7.4183 7.1713C7.14582 7.52897 6.79833 7.818 6.40202 8.01658C6.00572 8.21516 5.57097 8.3181 5.13057 8.31764C4.68953 8.31808 4.25416 8.21484 3.8574 8.01572C3.46064 7.8166 3.11287 7.52681 2.84042 7.16828C2.81083 7.12943 2.78894 7.08493 2.77599 7.03733C2.76304 6.98973 2.75929 6.93996 2.76495 6.89086C2.77061 6.84176 2.78556 6.7943 2.80897 6.75117C2.83237 6.70805 2.86376 6.67011 2.90135 6.63953C2.93893 6.60895 2.98198 6.58632 3.02802 6.57293C3.07407 6.55955 3.12221 6.55567 3.16971 6.56152C3.21721 6.56737 3.26312 6.58283 3.30484 6.60702C3.34655 6.63122 3.38325 6.66367 3.41283 6.70252V6.70302ZM3.67404 3.67506C3.75515 3.67268 3.83589 3.68715 3.9115 3.7176C3.98711 3.74805 4.05604 3.79386 4.11422 3.85233C4.17241 3.9108 4.21866 3.98073 4.25024 4.058C4.28182 4.13527 4.29809 4.2183 4.29809 4.30218C4.29809 4.38606 4.28182 4.46909 4.25024 4.54636C4.21866 4.62363 4.17241 4.69356 4.11422 4.75203C4.05604 4.8105 3.98711 4.85631 3.9115 4.88676C3.83589 4.91721 3.75515 4.93168 3.67404 4.92931C3.51612 4.92469 3.36616 4.85659 3.25604 4.73948C3.14592 4.62238 3.08431 4.4655 3.08431 4.30218C3.08431 4.13886 3.14592 3.98198 3.25604 3.86488C3.36616 3.74777 3.51612 3.67968 3.67404 3.67506ZM6.5871 3.67506C6.66821 3.67268 6.74896 3.68715 6.82457 3.7176C6.90018 3.74805 6.96911 3.79386 7.02729 3.85233C7.08547 3.9108 7.13172 3.98073 7.1633 4.058C7.19488 4.13527 7.21116 4.2183 7.21116 4.30218C7.21116 4.38606 7.19488 4.46909 7.1633 4.54636C7.13172 4.62363 7.08547 4.69356 7.02729 4.75203C6.96911 4.8105 6.90018 4.85631 6.82457 4.88676C6.74896 4.91721 6.66821 4.93168 6.5871 4.92931C6.42918 4.92469 6.27923 4.85659 6.16911 4.73948C6.05898 4.62238 5.99738 4.4655 5.99738 4.30218C5.99738 4.13886 6.05898 3.98198 6.16911 3.86488C6.27923 3.74777 6.42918 3.67968 6.5871 3.67506Z\"\n fill=\"url(#paint0_linear_748_3387)\"\n ></path>\n <path\n _ngcontent-ng-c433636891=\"\"\n d=\"M5.13057 0.286224C7.81253 0.286224 9.98665 2.53373 9.98665 5.30623C9.98665 8.07823 7.81205 10.3252 5.13057 10.3252C2.44861 10.3257 0.27449 8.07823 0.27449 5.30623C0.27449 2.53373 2.44861 0.286224 5.13057 0.286224ZM5.13057 1.03908C4.58476 1.03296 4.0432 1.1388 3.53723 1.35049C3.03126 1.56218 2.57092 1.8755 2.18287 2.27233C1.79482 2.66915 1.48675 3.1416 1.2765 3.66233C1.06625 4.18305 0.95799 4.74172 0.95799 5.30598C0.95799 5.87025 1.06625 6.42891 1.2765 6.94964C1.48675 7.47036 1.79482 7.94281 2.18287 8.33964C2.57092 8.73646 3.03126 9.04979 3.53723 9.26147C4.0432 9.47316 4.58476 9.57901 5.13057 9.57289C6.21752 9.5607 7.25594 9.10579 8.02039 8.30691C8.78485 7.50804 9.21362 6.42969 9.21362 5.30598C9.21362 4.18228 8.78485 3.10393 8.02039 2.30505C7.25594 1.50618 6.21752 1.05126 5.13057 1.03908ZM3.41283 6.70302C3.61718 6.97193 3.87803 7.18925 4.17563 7.33855C4.47323 7.48785 4.79978 7.56522 5.13057 7.56479C5.461 7.5652 5.78721 7.48798 6.08453 7.33895C6.38186 7.18992 6.64253 6.97298 6.84685 6.70453C6.8765 6.66574 6.91325 6.63337 6.955 6.60926C6.99675 6.58515 7.04268 6.56978 7.09018 6.56403C7.13767 6.55827 7.1858 6.56224 7.23181 6.57571C7.27782 6.58919 7.32082 6.6119 7.35834 6.64254C7.39586 6.67319 7.42717 6.71118 7.45049 6.75434C7.47381 6.7975 7.48868 6.84498 7.49425 6.89408C7.49982 6.94318 7.49598 6.99293 7.48294 7.0405C7.46991 7.08806 7.44795 7.13251 7.4183 7.1713C7.14582 7.52897 6.79833 7.818 6.40202 8.01658C6.00572 8.21516 5.57097 8.3181 5.13057 8.31764C4.68953 8.31808 4.25416 8.21484 3.8574 8.01572C3.46064 7.8166 3.11287 7.52681 2.84042 7.16828C2.81083 7.12943 2.78894 7.08493 2.77599 7.03733C2.76304 6.98973 2.75929 6.93996 2.76495 6.89086C2.77061 6.84176 2.78556 6.7943 2.80897 6.75117C2.83237 6.70805 2.86376 6.67011 2.90135 6.63953C2.93893 6.60895 2.98198 6.58632 3.02802 6.57293C3.07407 6.55955 3.12221 6.55567 3.16971 6.56152C3.21721 6.56737 3.26312 6.58283 3.30484 6.60702C3.34655 6.63122 3.38325 6.66367 3.41283 6.70252V6.70302ZM3.67404 3.67506C3.75515 3.67268 3.83589 3.68715 3.9115 3.7176C3.98711 3.74805 4.05604 3.79386 4.11422 3.85233C4.17241 3.9108 4.21866 3.98073 4.25024 4.058C4.28182 4.13527 4.29809 4.2183 4.29809 4.30218C4.29809 4.38606 4.28182 4.46909 4.25024 4.54636C4.21866 4.62363 4.17241 4.69356 4.11422 4.75203C4.05604 4.8105 3.98711 4.85631 3.9115 4.88676C3.83589 4.91721 3.75515 4.93168 3.67404 4.92931C3.51612 4.92469 3.36616 4.85659 3.25604 4.73948C3.14592 4.62238 3.08431 4.4655 3.08431 4.30218C3.08431 4.13886 3.14592 3.98198 3.25604 3.86488C3.36616 3.74777 3.51612 3.67968 3.67404 3.67506ZM6.5871 3.67506C6.66821 3.67268 6.74896 3.68715 6.82457 3.7176C6.90018 3.74805 6.96911 3.79386 7.02729 3.85233C7.08547 3.9108 7.13172 3.98073 7.1633 4.058C7.19488 4.13527 7.21116 4.2183 7.21116 4.30218C7.21116 4.38606 7.19488 4.46909 7.1633 4.54636C7.13172 4.62363 7.08547 4.69356 7.02729 4.75203C6.96911 4.8105 6.90018 4.85631 6.82457 4.88676C6.74896 4.91721 6.66821 4.93168 6.5871 4.92931C6.42918 4.92469 6.27923 4.85659 6.16911 4.73948C6.05898 4.62238 5.99738 4.4655 5.99738 4.30218C5.99738 4.13886 6.05898 3.98198 6.16911 3.86488C6.27923 3.74777 6.42918 3.67968 6.5871 3.67506Z\"\n stroke=\"url(#paint0_linear_748_3387)\"\n fill=\"url(#paint0_linear_748_3387)\"\n stroke-width=\"0.492535\"\n mask=\"url(#path-1-outside-1_422_3414)\"\n ></path>\n </g>\n <defs xmlns=\"http://www.w3.org/2000/svg\">\n <filter id=\"filter0_d_748_7685\" x=\"0\" y=\"0\" width=\"30\" height=\"30\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\n <feOffset />\n <feGaussianBlur stdDeviation=\"2\" />\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 1 0 0 0 0 0.0961538 0 0 0 0 0.593269 0 0 0 1 0\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_748_7685\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_748_7685\" result=\"shape\" />\n </filter>\n <linearGradient id=\"paint0_linear_748_7685\" x1=\"14.1509\" y1=\"3.43372\" x2=\"0.992799\" y2=\"26.7715\" gradientUnits=\"userSpaceOnUse\">\n <stop stop-color=\"#FE3C72\" />\n <stop offset=\"0.384615\" stop-color=\"#FFB5E9\" />\n </linearGradient>\n <linearGradient id=\"paint0_linear_748_3387\" x1=\"18.5134\" y1=\"2.81097\" x2=\"0.162773\" y2=\"35.3556\" gradientUnits=\"userSpaceOnUse\">\n <stop stop-color=\"#FE3C72\" />\n <stop offset=\"0.384615\" stop-color=\"#FFB5E9\" />\n </linearGradient>\n </defs>\n </svg>\n </div>\n @if (enableGifPicker) {\n <div class=\"gifs\" (click)=\"handleGifPickerClick()\"></div>\n <div class=\"gifs\" *ngIf=\"includeGifMessage\" (click)=\"handleGifPickerClick()\">\n <svg viewBox=\"0 0 11 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g>\n <path\n d=\"M7.055 10.9995H4.899C3.2535 10.9995 2.4305 10.9995 1.859 10.6005C1.69694 10.4873 1.55167 10.3518 1.4275 10.198C1 9.66501 1 8.89801 1 7.36301V6.09051C1 4.60901 1 3.86801 1.2365 3.27651C1.617 2.32501 2.4215 1.57501 3.4415 1.22001C4.075 0.999512 4.87 0.999512 6.4585 0.999512C7.3665 0.999512 7.82 0.999512 8.1825 1.12551C8.7655 1.32851 9.225 1.75701 9.4425 2.30051C9.5775 2.63851 9.5775 3.06201 9.5775 3.90851V4.99951\"\n stroke=\"url(#paint0_linear_748_3387)\"\n stroke-width=\"0.75\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M1 5.99951C1 5.07951 1.753 4.33301 2.682 4.33301C3.018 4.33301 3.414 4.39101 3.7405 4.30451C3.88281 4.26736 4.01278 4.19328 4.11726 4.08976C4.22174 3.98624 4.29703 3.85697 4.3355 3.71501C4.4225 3.39151 4.364 2.99901 4.364 2.66601C4.364 1.74601 5.117 0.999512 6.045 0.999512M6.046 8.99951H7.3075M4.833 6.92451C4.77 6.52451 4.6925 6.52401 4.028 6.49951H3.523C3.2445 6.49951 3.0185 6.72351 3.0185 6.99951V8.49951C3.0185 8.77551 3.2445 8.99951 3.5235 8.99951H4.4315C4.6265 8.99951 4.833 8.84301 4.833 8.64951V8.09951C4.833 8.04451 4.7765 7.94751 4.721 7.94751H4.159M6.046 6.49951H6.6765M6.6765 6.49951H7.3075M6.6765 6.49951V8.93701M10.2505 6.49951H8.989C8.7105 6.49951 8.4845 6.72351 8.4845 6.99951V7.74951M8.4845 7.74951V8.99951M8.4845 7.74951H9.746\"\n stroke=\"url(#paint0_linear_748_3387)\"\n stroke-width=\"0.75\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </g>\n <defs xmlns=\"http://www.w3.org/2000/svg\">\n <filter id=\"filter0_d_748_7685\" x=\"0\" y=\"0\" width=\"30\" height=\"30\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\n <feOffset />\n <feGaussianBlur stdDeviation=\"2\" />\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 1 0 0 0 0 0.0961538 0 0 0 0 0.593269 0 0 0 1 0\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_748_7685\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_748_7685\" result=\"shape\" />\n </filter>\n <linearGradient id=\"paint0_linear_748_7685\" x1=\"14.1509\" y1=\"3.43372\" x2=\"0.992799\" y2=\"26.7715\" gradientUnits=\"userSpaceOnUse\">\n <stop stop-color=\"#FE3C72\" />\n <stop offset=\"0.384615\" stop-color=\"#FFB5E9\" />\n </linearGradient>\n <linearGradient id=\"paint0_linear_748_3387\" x1=\"18.5134\" y1=\"2.81097\" x2=\"0.162773\" y2=\"35.3556\" gradientUnits=\"userSpaceOnUse\">\n <stop stop-color=\"#FE3C72\" />\n <stop offset=\"0.384615\" stop-color=\"#FFB5E9\" />\n </linearGradient>\n </defs>\n </svg>\n </div>\n }\n </div>\n <div class=\"emoji-picker-space\" [ngStyle]=\"{ 'z-index': !(gifVisibility || emojiVisibility) ? -1 : 11 }\" (blur)=\"onBlurPickerSpace()\">\n @if (gifVisibility && enableGifPicker) {\n <lib-gif-selector (selectGif)=\"onGifClick($event)\"></lib-gif-selector>\n }\n @if (emojiPickerOpened) {\n <emoji-picker #emojiPicker [ngStyle]=\"{ display: emojiVisibility ? '' : 'none' }\" emoji-version=\"15.0\" (emoji-click)=\"onEmojiclick($event)\"></emoji-picker>\n }\n </div>\n </form>\n</div>\n", styles: [":host{--height-chat-conversation: 11em;--max-width-container: 27em;--color-background-dark: #1d1b21;--color-chat-other: #453945;--color-chat-user: #403b45;--color-chat-init: #fe3c72;--color-text-white: white;--color-text-gray: rgb(123, 123, 123);--color-background-emoji: #29252d;--color-gradient-start: #746b8381;--color-gradient-end: rgba(0, 0, 0, 0);font-size:clamp(0px,3.2dvw,15px);display:flex;flex-direction:column;width:100%;max-width:var(--max-width-container)}:host .chat-component{display:flex;flex-direction:column;position:relative}:host .chat-component .bottom-gradient-fade{position:absolute;bottom:0;left:0;width:100%;height:40px;background:linear-gradient(180deg,transparent,#27242c);z-index:1;pointer-events:none}:host .chat-component .chat-container{position:relative}:host .chat-component .chat-container .go-button{color:#fff;font-size:1em;position:absolute;bottom:.2em;right:.7em;background-color:var(--color-background-dark);border-radius:50%;width:2em;height:2em;display:flex;justify-content:center;align-items:center;z-index:10}:host .chat-component .chat-container .go-button:hover{cursor:pointer}:host .chat-component .chat-container .dateMessages{display:flex;flex-direction:column;gap:1em;padding-bottom:8px;padding-top:1.6em;height:var(--height-chat-conversation);width:var(--max-width-container);overflow-y:scroll}:host .chat-component .chat-container .dateMessages .chat-item-container{display:flex;flex-direction:column;gap:1em}:host .chat-component .chat-container .dateMessages .chat-item-container .date-message{width:100%;display:flex;justify-content:center;align-items:center;font-size:.861em}:host .chat-component .chat-container .dateMessages .chat-item-container .date-message span{background-color:#000;color:var(--color-text-white);border-radius:1em;padding:.5em}:host .chat-component .chat-container .dateMessages .chat-item-container_user{align-items:flex-end}:host .chat-component .chat-container .dateMessages .chat-item-container_other{align-items:flex-start}:host .chat-component .chat-container .dateMessages .chat-item-container_init{align-items:center}:host .chat-component .chat-container .dateMessages .chat-item{max-width:80%;min-height:3.5em;padding:1em;border-radius:1.076em;position:relative;box-shadow:0 4px 4px #00000040}:host .chat-component .chat-container .dateMessages .chat-item .chat-item_text{font-size:.861em;color:var(--color-text-white);word-break:break-word;overflow-wrap:break-word;-webkit-hyphens:auto;hyphens:auto}:host .chat-component .chat-container .dateMessages .chat-item .chat-item_image{width:7em;height:auto}:host .chat-component .chat-container .dateMessages .chat-item .chat-item_timestamp{margin-top:.2em;font-size:.8em;color:var(--color-text-gray);text-align:end}:host .chat-component .chat-container .dateMessages .chat-item:before{content:\"\";position:absolute;inset:0;border-radius:1.076em;padding:.05em;background:linear-gradient(180deg,var(--color-gradient-start),var(--color-gradient-end) 50%);mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude}:host .chat-component .chat-container .dateMessages .other-chat{background-color:var(--color-chat-other);border-bottom-left-radius:0}:host .chat-component .chat-container .dateMessages .user-chat{background-color:var(--color-chat-user);border-bottom-right-radius:0}:host .chat-component .chat-container .dateMessages .init-chat{min-height:2em;padding:.7em;background-color:var(--color-chat-init)}:host .chat-component .chat-container .dateMessages .init-chat .chat-item_text{font-size:.761em;color:#000}:host .chat-component .chat-container .dateMessages .other-chat:before{border-bottom-left-radius:0!important}:host .chat-component .chat-container .dateMessages .user-chat:before{border-bottom-right-radius:0!important}:host .message-sender{position:relative}:host .message-sender lib-input-field{--input-font-size: calc(clamp(0px, 3.2dvw, 15px)*.8) ;--input-padding: calc(clamp(0px, 3.2dvw, 15px)*1.2) calc(clamp(0px, 3.2dvw, 15px)*3.5) calc(clamp(0px, 3.2dvw, 15px)*1.2) calc(clamp(0px, 3.2dvw, 15px)*1.6) ;--placeholder-font-size: calc(clamp(0px, 3.2dvw, 15px)*.8) ;--textarea-height: calc(clamp(0px, 3.2dvw, 15px)*7) }:host .message-sender .chat-buttons .send,:host .message-sender .chat-buttons .emoji,:host .message-sender .chat-buttons .attach,:host .message-sender .chat-buttons .gifs{position:absolute;right:.6em;width:1.7em;height:1.7em;border-radius:50%;z-index:10}:host .message-sender .chat-buttons .send:hover,:host .message-sender .chat-buttons .emoji:hover,:host .message-sender .chat-buttons .attach:hover,:host .message-sender .chat-buttons .gifs:hover{cursor:pointer}:host .message-sender .chat-buttons .send{top:.9em}:host .message-sender .chat-buttons .send svg{width:1.7em;height:1.9em}:host .message-sender .chat-buttons .emoji{top:3.1em}:host .message-sender .chat-buttons .emoji svg{overflow:visible;width:2.33em;height:1.848em}:host .message-sender .chat-buttons .emoji svg mask{width:.733em;height:1.466em}:host .message-sender .chat-buttons .attach{top:5em;background-color:#87ceeb}:host .message-sender .chat-buttons .gifs{top:5em}:host .message-sender .chat-buttons .gifs svg{width:1.166em;height:1.2984em;margin-left:.25em}:host .message-sender .emoji-picker-space{position:absolute;top:-12em;height:12em;width:100%}:host .message-sender .emoji-picker-space emoji-picker{--background: var(--color-background-emoji);height:100%;width:100%;--input-font-size: .8em;--input-font-color: var(--color-text-white)}\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: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i2.InputFieldComponent, selector: "lib-input-field,[lib-input-field]", inputs: ["name", "autocomplete", "label", "placeholder", "type", "readonly", "focus", "enableGoogleAddress", "locationAutocompleteConfig", "defaultLocation", "mask", "prefix", "suffix", "maxLength", "value", "address", "textarea", "resize", "counter", "patterns", "trimWhiteSpace", "disabled"], outputs: ["mapError", "locationChange", "keyDown", "onBlur"] }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: GifSelectorComponent, selector: "lib-gif-selector", outputs: ["selectGif"] }, { kind: "component", type: i2.LibModalComponent, selector: "lib-popup", inputs: ["isOpen", "icon", "title", "message", "extendedMessage", "cancelButton", "confirmButton", "checkboxText", "progBarCurrentStep", "progBarTotalSteps", "customClass", "backdropDismiss", "modalComponent", "modalComponentData"], outputs: ["modalConfirm", "modalDismiss", "afterCloseEvent"] }, { kind: "directive", type: i2$3.InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }, { kind: "pipe", type: i1.DatePipe, name: "date" }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
2089
|
+
], viewQueries: [{ propertyName: "emojiPickerRef", first: true, predicate: ["emojiPicker"], descendants: true }, { propertyName: "scrollableContainer", first: true, predicate: ["scrollableContainer"], descendants: true }, { propertyName: "chatInput", first: true, predicate: ["chatInput"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"chat-component\">\n <div class=\"chat-container\">\n <div class=\"go-button\" *ngIf=\"isAtStartChat\" (click)=\"scrollToBottom()\">\u2193</div>\n <div\n class=\"dateMessages\"\n #scrollableContainer\n infiniteScroll\n [infiniteScrollDistance]=\"distance\"\n [infiniteScrollThrottle]=\"throttle\"\n [scrollWindow]=\"false\"\n (scrolledUp)=\"onScrollChats()\"\n (scroll)=\"onScrollMessages($event)\"\n >\n <div class=\"chat-item-container chat-item-container_init\">\n <div class=\"date-message\">\n <span>{{ prospectJoinDate ? (prospectJoinDate | date: 'MMM d, HH:mm') : '-' }}</span>\n </div>\n <div class=\"chat-item init-chat\">\n <div class=\"chat-item_text\">{{ 'CHAT.INITIAL_TEXT' | translate }}</div>\n </div>\n </div>\n <div\n *ngFor=\"let dateMessage of messages\"\n class=\"chat-item-container\"\n [class.chat-item-container_user]=\"dateMessage.message.sender === 'user'\"\n [class.chat-item-container_other]=\"dateMessage.message.sender === 'other'\"\n >\n <div class=\"date-message\" *ngIf=\"dateMessage.isFirstMessage && includeTime\">\n <span>{{ dateMessage.date | date: 'MMM d' }}</span>\n </div>\n <div class=\"chat-item\" [class.user-chat]=\"dateMessage.message.sender === 'user'\" [class.other-chat]=\"dateMessage.message.sender === 'other'\">\n @if (dateMessage.message.message !== '') {\n <div class=\"chat-item_text\">{{ dateMessage.message.message }}</div>\n } @else if (dateMessage.message.attachments[0].url !== '') {\n <img class=\"chat-item_image\" [src]=\"dateMessage.message.attachments[0].url\" alt=\"\" />\n }\n <div class=\"chat-item_timestamp\" *ngIf=\"includeTime\">\n {{ dateMessage.message.timestamp | date: 'shortTime' }}\n </div>\n </div>\n </div>\n </div>\n <div class=\"bottom-gradient-fade\"></div>\n </div>\n <form autocomplete=\"off\" libFocusInvalidInput *ngIf=\"textControl\" class=\"message-sender\">\n <lib-input-field\n #chatInput\n [formControl]=\"textControl\"\n [value]=\"newTextMessage\"\n [label]=\"\"\n [textarea]=\"true\"\n placeholder=\"Send Message to Client Prospect\"\n (keyDown)=\"onKeyDown($event)\"\n [maxLength]=\"maxLength\"\n >\n </lib-input-field>\n <div class=\"chat-buttons\">\n <div class=\"send\" libLongPress [longPressEnabled]=\"longPressEnabled\" (shortPress)=\"onSendText()\" (longPress)=\"onLongPress()\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 23 22\" fill=\"none\">\n <g filter=\"url(#filter0_d_748_3387)\">\n <path\n d=\"M14.6311 17.0545L18.3229 5.85996C18.692 4.77867 17.646 3.69738 16.6001 4.07901L5.77092 7.89533C4.54033 8.34056 4.54033 10.1215 5.83244 10.5032L9.46266 11.5208C10.2625 11.7753 10.9394 12.4113 11.1239 13.2381L12.1084 16.9908C12.4776 18.3266 14.2004 18.3266 14.6311 17.0545Z\"\n fill=\"url(#paint0_linear_748_3387)\"\n />\n </g>\n <defs>\n <filter id=\"filter0_d_748_3387\" x=\"0.85553\" y=\"0.000732422\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\n <feOffset />\n <feGaussianBlur stdDeviation=\"2\" />\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 1 0 0 0 0 0.0961538 0 0 0 0 0.593269 0 0 0 1 0\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_748_3387\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_748_3387\" result=\"shape\" />\n </filter>\n <linearGradient id=\"paint0_linear_748_3387\" x1=\"18.5134\" y1=\"2.81097\" x2=\"0.162773\" y2=\"35.3556\" gradientUnits=\"userSpaceOnUse\">\n <stop stop-color=\"#FE3C72\" />\n <stop offset=\"0.384615\" stop-color=\"#FFB5E9\" />\n </linearGradient>\n </defs>\n </svg>\n </div>\n <lib-popup customClass=\"message-modal-container\" [isOpen]=\"toggleMessageModal\" [modalComponent]=\"ModalComponent\" [modalComponentData]=\"{ modal: {} }\"> </lib-popup>\n <div\n [ngClass]=\"{ 'emoji-picker-trigger': true, active: emojiVisibility }\"\n [name]=\"emojiPickerConfig?.pickerIcon ? '' : 'body-outline'\"\n (click)=\"handleEmojiPickerClick()\"\n [src]=\"emojiPickerConfig?.pickerIcon\"\n class=\"emoji\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\" fill=\"none\" overflow=\"auto\">\n <g>\n <mask id=\"path-1-outside-1_422_3414\" maskUnits=\"userSpaceOnUse\" x=\"-0.72551\" y=\"-0.713776\" fill=\"url(#paint0_linear_748_3387)\">\n <path\n d=\"M5.13057 0.286224C7.81253 0.286224 9.98665 2.53373 9.98665 5.30623C9.98665 8.07823 7.81205 10.3252 5.13057 10.3252C2.44861 10.3257 0.27449 8.07823 0.27449 5.30623C0.27449 2.53373 2.44861 0.286224 5.13057 0.286224ZM5.13057 1.03908C4.58476 1.03296 4.0432 1.1388 3.53723 1.35049C3.03126 1.56218 2.57092 1.8755 2.18287 2.27233C1.79482 2.66915 1.48675 3.1416 1.2765 3.66233C1.06625 4.18305 0.95799 4.74172 0.95799 5.30598C0.95799 5.87025 1.06625 6.42891 1.2765 6.94964C1.48675 7.47036 1.79482 7.94281 2.18287 8.33964C2.57092 8.73646 3.03126 9.04979 3.53723 9.26147C4.0432 9.47316 4.58476 9.57901 5.13057 9.57289C6.21752 9.5607 7.25594 9.10579 8.02039 8.30691C8.78485 7.50804 9.21362 6.42969 9.21362 5.30598C9.21362 4.18228 8.78485 3.10393 8.02039 2.30505C7.25594 1.50618 6.21752 1.05126 5.13057 1.03908ZM3.41283 6.70302C3.61718 6.97193 3.87803 7.18925 4.17563 7.33855C4.47323 7.48785 4.79978 7.56522 5.13057 7.56479C5.461 7.5652 5.78721 7.48798 6.08453 7.33895C6.38186 7.18992 6.64253 6.97298 6.84685 6.70453C6.8765 6.66574 6.91325 6.63337 6.955 6.60926C6.99675 6.58515 7.04268 6.56978 7.09018 6.56403C7.13767 6.55827 7.1858 6.56224 7.23181 6.57571C7.27782 6.58919 7.32082 6.6119 7.35834 6.64254C7.39586 6.67319 7.42717 6.71118 7.45049 6.75434C7.47381 6.7975 7.48868 6.84498 7.49425 6.89408C7.49982 6.94318 7.49598 6.99293 7.48294 7.0405C7.46991 7.08806 7.44795 7.13251 7.4183 7.1713C7.14582 7.52897 6.79833 7.818 6.40202 8.01658C6.00572 8.21516 5.57097 8.3181 5.13057 8.31764C4.68953 8.31808 4.25416 8.21484 3.8574 8.01572C3.46064 7.8166 3.11287 7.52681 2.84042 7.16828C2.81083 7.12943 2.78894 7.08493 2.77599 7.03733C2.76304 6.98973 2.75929 6.93996 2.76495 6.89086C2.77061 6.84176 2.78556 6.7943 2.80897 6.75117C2.83237 6.70805 2.86376 6.67011 2.90135 6.63953C2.93893 6.60895 2.98198 6.58632 3.02802 6.57293C3.07407 6.55955 3.12221 6.55567 3.16971 6.56152C3.21721 6.56737 3.26312 6.58283 3.30484 6.60702C3.34655 6.63122 3.38325 6.66367 3.41283 6.70252V6.70302ZM3.67404 3.67506C3.75515 3.67268 3.83589 3.68715 3.9115 3.7176C3.98711 3.74805 4.05604 3.79386 4.11422 3.85233C4.17241 3.9108 4.21866 3.98073 4.25024 4.058C4.28182 4.13527 4.29809 4.2183 4.29809 4.30218C4.29809 4.38606 4.28182 4.46909 4.25024 4.54636C4.21866 4.62363 4.17241 4.69356 4.11422 4.75203C4.05604 4.8105 3.98711 4.85631 3.9115 4.88676C3.83589 4.91721 3.75515 4.93168 3.67404 4.92931C3.51612 4.92469 3.36616 4.85659 3.25604 4.73948C3.14592 4.62238 3.08431 4.4655 3.08431 4.30218C3.08431 4.13886 3.14592 3.98198 3.25604 3.86488C3.36616 3.74777 3.51612 3.67968 3.67404 3.67506ZM6.5871 3.67506C6.66821 3.67268 6.74896 3.68715 6.82457 3.7176C6.90018 3.74805 6.96911 3.79386 7.02729 3.85233C7.08547 3.9108 7.13172 3.98073 7.1633 4.058C7.19488 4.13527 7.21116 4.2183 7.21116 4.30218C7.21116 4.38606 7.19488 4.46909 7.1633 4.54636C7.13172 4.62363 7.08547 4.69356 7.02729 4.75203C6.96911 4.8105 6.90018 4.85631 6.82457 4.88676C6.74896 4.91721 6.66821 4.93168 6.5871 4.92931C6.42918 4.92469 6.27923 4.85659 6.16911 4.73948C6.05898 4.62238 5.99738 4.4655 5.99738 4.30218C5.99738 4.13886 6.05898 3.98198 6.16911 3.86488C6.27923 3.74777 6.42918 3.67968 6.5871 3.67506Z\"\n />\n </mask>\n <path\n _ngcontent-ng-c433636891=\"\"\n d=\"M5.13057 0.286224C7.81253 0.286224 9.98665 2.53373 9.98665 5.30623C9.98665 8.07823 7.81205 10.3252 5.13057 10.3252C2.44861 10.3257 0.27449 8.07823 0.27449 5.30623C0.27449 2.53373 2.44861 0.286224 5.13057 0.286224ZM5.13057 1.03908C4.58476 1.03296 4.0432 1.1388 3.53723 1.35049C3.03126 1.56218 2.57092 1.8755 2.18287 2.27233C1.79482 2.66915 1.48675 3.1416 1.2765 3.66233C1.06625 4.18305 0.95799 4.74172 0.95799 5.30598C0.95799 5.87025 1.06625 6.42891 1.2765 6.94964C1.48675 7.47036 1.79482 7.94281 2.18287 8.33964C2.57092 8.73646 3.03126 9.04979 3.53723 9.26147C4.0432 9.47316 4.58476 9.57901 5.13057 9.57289C6.21752 9.5607 7.25594 9.10579 8.02039 8.30691C8.78485 7.50804 9.21362 6.42969 9.21362 5.30598C9.21362 4.18228 8.78485 3.10393 8.02039 2.30505C7.25594 1.50618 6.21752 1.05126 5.13057 1.03908ZM3.41283 6.70302C3.61718 6.97193 3.87803 7.18925 4.17563 7.33855C4.47323 7.48785 4.79978 7.56522 5.13057 7.56479C5.461 7.5652 5.78721 7.48798 6.08453 7.33895C6.38186 7.18992 6.64253 6.97298 6.84685 6.70453C6.8765 6.66574 6.91325 6.63337 6.955 6.60926C6.99675 6.58515 7.04268 6.56978 7.09018 6.56403C7.13767 6.55827 7.1858 6.56224 7.23181 6.57571C7.27782 6.58919 7.32082 6.6119 7.35834 6.64254C7.39586 6.67319 7.42717 6.71118 7.45049 6.75434C7.47381 6.7975 7.48868 6.84498 7.49425 6.89408C7.49982 6.94318 7.49598 6.99293 7.48294 7.0405C7.46991 7.08806 7.44795 7.13251 7.4183 7.1713C7.14582 7.52897 6.79833 7.818 6.40202 8.01658C6.00572 8.21516 5.57097 8.3181 5.13057 8.31764C4.68953 8.31808 4.25416 8.21484 3.8574 8.01572C3.46064 7.8166 3.11287 7.52681 2.84042 7.16828C2.81083 7.12943 2.78894 7.08493 2.77599 7.03733C2.76304 6.98973 2.75929 6.93996 2.76495 6.89086C2.77061 6.84176 2.78556 6.7943 2.80897 6.75117C2.83237 6.70805 2.86376 6.67011 2.90135 6.63953C2.93893 6.60895 2.98198 6.58632 3.02802 6.57293C3.07407 6.55955 3.12221 6.55567 3.16971 6.56152C3.21721 6.56737 3.26312 6.58283 3.30484 6.60702C3.34655 6.63122 3.38325 6.66367 3.41283 6.70252V6.70302ZM3.67404 3.67506C3.75515 3.67268 3.83589 3.68715 3.9115 3.7176C3.98711 3.74805 4.05604 3.79386 4.11422 3.85233C4.17241 3.9108 4.21866 3.98073 4.25024 4.058C4.28182 4.13527 4.29809 4.2183 4.29809 4.30218C4.29809 4.38606 4.28182 4.46909 4.25024 4.54636C4.21866 4.62363 4.17241 4.69356 4.11422 4.75203C4.05604 4.8105 3.98711 4.85631 3.9115 4.88676C3.83589 4.91721 3.75515 4.93168 3.67404 4.92931C3.51612 4.92469 3.36616 4.85659 3.25604 4.73948C3.14592 4.62238 3.08431 4.4655 3.08431 4.30218C3.08431 4.13886 3.14592 3.98198 3.25604 3.86488C3.36616 3.74777 3.51612 3.67968 3.67404 3.67506ZM6.5871 3.67506C6.66821 3.67268 6.74896 3.68715 6.82457 3.7176C6.90018 3.74805 6.96911 3.79386 7.02729 3.85233C7.08547 3.9108 7.13172 3.98073 7.1633 4.058C7.19488 4.13527 7.21116 4.2183 7.21116 4.30218C7.21116 4.38606 7.19488 4.46909 7.1633 4.54636C7.13172 4.62363 7.08547 4.69356 7.02729 4.75203C6.96911 4.8105 6.90018 4.85631 6.82457 4.88676C6.74896 4.91721 6.66821 4.93168 6.5871 4.92931C6.42918 4.92469 6.27923 4.85659 6.16911 4.73948C6.05898 4.62238 5.99738 4.4655 5.99738 4.30218C5.99738 4.13886 6.05898 3.98198 6.16911 3.86488C6.27923 3.74777 6.42918 3.67968 6.5871 3.67506Z\"\n fill=\"url(#paint0_linear_748_3387)\"\n ></path>\n <path\n _ngcontent-ng-c433636891=\"\"\n d=\"M5.13057 0.286224C7.81253 0.286224 9.98665 2.53373 9.98665 5.30623C9.98665 8.07823 7.81205 10.3252 5.13057 10.3252C2.44861 10.3257 0.27449 8.07823 0.27449 5.30623C0.27449 2.53373 2.44861 0.286224 5.13057 0.286224ZM5.13057 1.03908C4.58476 1.03296 4.0432 1.1388 3.53723 1.35049C3.03126 1.56218 2.57092 1.8755 2.18287 2.27233C1.79482 2.66915 1.48675 3.1416 1.2765 3.66233C1.06625 4.18305 0.95799 4.74172 0.95799 5.30598C0.95799 5.87025 1.06625 6.42891 1.2765 6.94964C1.48675 7.47036 1.79482 7.94281 2.18287 8.33964C2.57092 8.73646 3.03126 9.04979 3.53723 9.26147C4.0432 9.47316 4.58476 9.57901 5.13057 9.57289C6.21752 9.5607 7.25594 9.10579 8.02039 8.30691C8.78485 7.50804 9.21362 6.42969 9.21362 5.30598C9.21362 4.18228 8.78485 3.10393 8.02039 2.30505C7.25594 1.50618 6.21752 1.05126 5.13057 1.03908ZM3.41283 6.70302C3.61718 6.97193 3.87803 7.18925 4.17563 7.33855C4.47323 7.48785 4.79978 7.56522 5.13057 7.56479C5.461 7.5652 5.78721 7.48798 6.08453 7.33895C6.38186 7.18992 6.64253 6.97298 6.84685 6.70453C6.8765 6.66574 6.91325 6.63337 6.955 6.60926C6.99675 6.58515 7.04268 6.56978 7.09018 6.56403C7.13767 6.55827 7.1858 6.56224 7.23181 6.57571C7.27782 6.58919 7.32082 6.6119 7.35834 6.64254C7.39586 6.67319 7.42717 6.71118 7.45049 6.75434C7.47381 6.7975 7.48868 6.84498 7.49425 6.89408C7.49982 6.94318 7.49598 6.99293 7.48294 7.0405C7.46991 7.08806 7.44795 7.13251 7.4183 7.1713C7.14582 7.52897 6.79833 7.818 6.40202 8.01658C6.00572 8.21516 5.57097 8.3181 5.13057 8.31764C4.68953 8.31808 4.25416 8.21484 3.8574 8.01572C3.46064 7.8166 3.11287 7.52681 2.84042 7.16828C2.81083 7.12943 2.78894 7.08493 2.77599 7.03733C2.76304 6.98973 2.75929 6.93996 2.76495 6.89086C2.77061 6.84176 2.78556 6.7943 2.80897 6.75117C2.83237 6.70805 2.86376 6.67011 2.90135 6.63953C2.93893 6.60895 2.98198 6.58632 3.02802 6.57293C3.07407 6.55955 3.12221 6.55567 3.16971 6.56152C3.21721 6.56737 3.26312 6.58283 3.30484 6.60702C3.34655 6.63122 3.38325 6.66367 3.41283 6.70252V6.70302ZM3.67404 3.67506C3.75515 3.67268 3.83589 3.68715 3.9115 3.7176C3.98711 3.74805 4.05604 3.79386 4.11422 3.85233C4.17241 3.9108 4.21866 3.98073 4.25024 4.058C4.28182 4.13527 4.29809 4.2183 4.29809 4.30218C4.29809 4.38606 4.28182 4.46909 4.25024 4.54636C4.21866 4.62363 4.17241 4.69356 4.11422 4.75203C4.05604 4.8105 3.98711 4.85631 3.9115 4.88676C3.83589 4.91721 3.75515 4.93168 3.67404 4.92931C3.51612 4.92469 3.36616 4.85659 3.25604 4.73948C3.14592 4.62238 3.08431 4.4655 3.08431 4.30218C3.08431 4.13886 3.14592 3.98198 3.25604 3.86488C3.36616 3.74777 3.51612 3.67968 3.67404 3.67506ZM6.5871 3.67506C6.66821 3.67268 6.74896 3.68715 6.82457 3.7176C6.90018 3.74805 6.96911 3.79386 7.02729 3.85233C7.08547 3.9108 7.13172 3.98073 7.1633 4.058C7.19488 4.13527 7.21116 4.2183 7.21116 4.30218C7.21116 4.38606 7.19488 4.46909 7.1633 4.54636C7.13172 4.62363 7.08547 4.69356 7.02729 4.75203C6.96911 4.8105 6.90018 4.85631 6.82457 4.88676C6.74896 4.91721 6.66821 4.93168 6.5871 4.92931C6.42918 4.92469 6.27923 4.85659 6.16911 4.73948C6.05898 4.62238 5.99738 4.4655 5.99738 4.30218C5.99738 4.13886 6.05898 3.98198 6.16911 3.86488C6.27923 3.74777 6.42918 3.67968 6.5871 3.67506Z\"\n stroke=\"url(#paint0_linear_748_3387)\"\n fill=\"url(#paint0_linear_748_3387)\"\n stroke-width=\"0.492535\"\n mask=\"url(#path-1-outside-1_422_3414)\"\n ></path>\n </g>\n <defs xmlns=\"http://www.w3.org/2000/svg\">\n <filter id=\"filter0_d_748_7685\" x=\"0\" y=\"0\" width=\"30\" height=\"30\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\n <feOffset />\n <feGaussianBlur stdDeviation=\"2\" />\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 1 0 0 0 0 0.0961538 0 0 0 0 0.593269 0 0 0 1 0\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_748_7685\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_748_7685\" result=\"shape\" />\n </filter>\n <linearGradient id=\"paint0_linear_748_7685\" x1=\"14.1509\" y1=\"3.43372\" x2=\"0.992799\" y2=\"26.7715\" gradientUnits=\"userSpaceOnUse\">\n <stop stop-color=\"#FE3C72\" />\n <stop offset=\"0.384615\" stop-color=\"#FFB5E9\" />\n </linearGradient>\n <linearGradient id=\"paint0_linear_748_3387\" x1=\"18.5134\" y1=\"2.81097\" x2=\"0.162773\" y2=\"35.3556\" gradientUnits=\"userSpaceOnUse\">\n <stop stop-color=\"#FE3C72\" />\n <stop offset=\"0.384615\" stop-color=\"#FFB5E9\" />\n </linearGradient>\n </defs>\n </svg>\n </div>\n @if (enableGifPicker) {\n <div class=\"gifs\" (click)=\"handleGifPickerClick()\"></div>\n <div class=\"gifs\" *ngIf=\"includeGifMessage\" (click)=\"handleGifPickerClick()\">\n <svg viewBox=\"0 0 11 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g>\n <path\n d=\"M7.055 10.9995H4.899C3.2535 10.9995 2.4305 10.9995 1.859 10.6005C1.69694 10.4873 1.55167 10.3518 1.4275 10.198C1 9.66501 1 8.89801 1 7.36301V6.09051C1 4.60901 1 3.86801 1.2365 3.27651C1.617 2.32501 2.4215 1.57501 3.4415 1.22001C4.075 0.999512 4.87 0.999512 6.4585 0.999512C7.3665 0.999512 7.82 0.999512 8.1825 1.12551C8.7655 1.32851 9.225 1.75701 9.4425 2.30051C9.5775 2.63851 9.5775 3.06201 9.5775 3.90851V4.99951\"\n stroke=\"url(#paint0_linear_748_3387)\"\n stroke-width=\"0.75\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M1 5.99951C1 5.07951 1.753 4.33301 2.682 4.33301C3.018 4.33301 3.414 4.39101 3.7405 4.30451C3.88281 4.26736 4.01278 4.19328 4.11726 4.08976C4.22174 3.98624 4.29703 3.85697 4.3355 3.71501C4.4225 3.39151 4.364 2.99901 4.364 2.66601C4.364 1.74601 5.117 0.999512 6.045 0.999512M6.046 8.99951H7.3075M4.833 6.92451C4.77 6.52451 4.6925 6.52401 4.028 6.49951H3.523C3.2445 6.49951 3.0185 6.72351 3.0185 6.99951V8.49951C3.0185 8.77551 3.2445 8.99951 3.5235 8.99951H4.4315C4.6265 8.99951 4.833 8.84301 4.833 8.64951V8.09951C4.833 8.04451 4.7765 7.94751 4.721 7.94751H4.159M6.046 6.49951H6.6765M6.6765 6.49951H7.3075M6.6765 6.49951V8.93701M10.2505 6.49951H8.989C8.7105 6.49951 8.4845 6.72351 8.4845 6.99951V7.74951M8.4845 7.74951V8.99951M8.4845 7.74951H9.746\"\n stroke=\"url(#paint0_linear_748_3387)\"\n stroke-width=\"0.75\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </g>\n <defs xmlns=\"http://www.w3.org/2000/svg\">\n <filter id=\"filter0_d_748_7685\" x=\"0\" y=\"0\" width=\"30\" height=\"30\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\n <feOffset />\n <feGaussianBlur stdDeviation=\"2\" />\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 1 0 0 0 0 0.0961538 0 0 0 0 0.593269 0 0 0 1 0\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_748_7685\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_748_7685\" result=\"shape\" />\n </filter>\n <linearGradient id=\"paint0_linear_748_7685\" x1=\"14.1509\" y1=\"3.43372\" x2=\"0.992799\" y2=\"26.7715\" gradientUnits=\"userSpaceOnUse\">\n <stop stop-color=\"#FE3C72\" />\n <stop offset=\"0.384615\" stop-color=\"#FFB5E9\" />\n </linearGradient>\n <linearGradient id=\"paint0_linear_748_3387\" x1=\"18.5134\" y1=\"2.81097\" x2=\"0.162773\" y2=\"35.3556\" gradientUnits=\"userSpaceOnUse\">\n <stop stop-color=\"#FE3C72\" />\n <stop offset=\"0.384615\" stop-color=\"#FFB5E9\" />\n </linearGradient>\n </defs>\n </svg>\n </div>\n }\n </div>\n <div class=\"emoji-picker-space\" [ngStyle]=\"{ 'z-index': !(gifVisibility || emojiVisibility) ? -1 : 11 }\" (blur)=\"onBlurPickerSpace()\">\n @if (gifVisibility && enableGifPicker) {\n <lib-gif-selector (selectGif)=\"onGifClick($event)\"></lib-gif-selector>\n }\n @if (emojiPickerOpened) {\n <emoji-picker #emojiPicker [ngStyle]=\"{ display: emojiVisibility ? '' : 'none' }\" emoji-version=\"15.0\" (emoji-click)=\"onEmojiclick($event)\"></emoji-picker>\n }\n </div>\n </form>\n</div>\n", styles: [":host{--height-chat-conversation: 11em;--max-width-container: 27em;--color-background-dark: #1d1b21;--color-chat-other: #453945;--color-chat-user: #403b45;--color-chat-init: #fe3c72;--color-text-white: white;--color-text-gray: rgb(123, 123, 123);--color-background-emoji: #29252d;--color-gradient-start: #746b8381;--color-gradient-end: rgba(0, 0, 0, 0);font-size:clamp(0px,3.2dvw,15px);display:flex;flex-direction:column;width:100%;max-width:var(--max-width-container)}:host .chat-component{display:flex;flex-direction:column;position:relative}:host .chat-component .bottom-gradient-fade{position:absolute;bottom:0;left:0;width:100%;height:40px;background:linear-gradient(180deg,transparent,#27242c);z-index:1;pointer-events:none}:host .chat-component .chat-container{position:relative}:host .chat-component .chat-container .go-button{color:#fff;font-size:1em;position:absolute;bottom:.2em;right:.7em;background-color:var(--color-background-dark);border-radius:50%;width:2em;height:2em;display:flex;justify-content:center;align-items:center;z-index:10}:host .chat-component .chat-container .go-button:hover{cursor:pointer}:host .chat-component .chat-container .dateMessages{display:flex;flex-direction:column;gap:1em;padding-bottom:8px;padding-top:1.6em;height:var(--height-chat-conversation);width:var(--max-width-container);overflow-y:scroll}:host .chat-component .chat-container .dateMessages .chat-item-container{display:flex;flex-direction:column;gap:1em}:host .chat-component .chat-container .dateMessages .chat-item-container .date-message{width:100%;display:flex;justify-content:center;align-items:center;font-size:.861em}:host .chat-component .chat-container .dateMessages .chat-item-container .date-message span{background-color:#000;color:var(--color-text-white);border-radius:1em;padding:.5em}:host .chat-component .chat-container .dateMessages .chat-item-container_user{align-items:flex-end}:host .chat-component .chat-container .dateMessages .chat-item-container_other{align-items:flex-start}:host .chat-component .chat-container .dateMessages .chat-item-container_init{align-items:center}:host .chat-component .chat-container .dateMessages .chat-item{max-width:80%;min-height:3.5em;padding:1em;border-radius:1.076em;position:relative;box-shadow:0 4px 4px #00000040}:host .chat-component .chat-container .dateMessages .chat-item .chat-item_text{font-size:.861em;color:var(--color-text-white);word-break:break-word;overflow-wrap:break-word;-webkit-hyphens:auto;hyphens:auto}:host .chat-component .chat-container .dateMessages .chat-item .chat-item_image{width:7em;height:auto}:host .chat-component .chat-container .dateMessages .chat-item .chat-item_timestamp{margin-top:.2em;font-size:.8em;color:var(--color-text-gray);text-align:end}:host .chat-component .chat-container .dateMessages .chat-item:before{content:\"\";position:absolute;inset:0;border-radius:1.076em;padding:.05em;background:linear-gradient(180deg,var(--color-gradient-start),var(--color-gradient-end) 50%);mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude}:host .chat-component .chat-container .dateMessages .other-chat{background-color:var(--color-chat-other);border-bottom-left-radius:0}:host .chat-component .chat-container .dateMessages .user-chat{background-color:var(--color-chat-user);border-bottom-right-radius:0}:host .chat-component .chat-container .dateMessages .init-chat{min-height:2em;padding:.7em;background-color:var(--color-chat-init)}:host .chat-component .chat-container .dateMessages .init-chat .chat-item_text{font-size:.761em;color:#000}:host .chat-component .chat-container .dateMessages .other-chat:before{border-bottom-left-radius:0!important}:host .chat-component .chat-container .dateMessages .user-chat:before{border-bottom-right-radius:0!important}:host .message-sender{position:relative}:host .message-sender lib-input-field{--input-font-size: calc(clamp(0px, 3.2dvw, 15px)*.8) ;--input-padding: calc(clamp(0px, 3.2dvw, 15px)*1.2) calc(clamp(0px, 3.2dvw, 15px)*3.5) calc(clamp(0px, 3.2dvw, 15px)*1.2) calc(clamp(0px, 3.2dvw, 15px)*1.6) ;--placeholder-font-size: calc(clamp(0px, 3.2dvw, 15px)*.8) ;--textarea-height: calc(clamp(0px, 3.2dvw, 15px)*7) }:host .message-sender .chat-buttons .send,:host .message-sender .chat-buttons .emoji,:host .message-sender .chat-buttons .attach,:host .message-sender .chat-buttons .gifs{position:absolute;right:.6em;width:1.7em;height:1.7em;border-radius:50%;z-index:10}:host .message-sender .chat-buttons .send:hover,:host .message-sender .chat-buttons .emoji:hover,:host .message-sender .chat-buttons .attach:hover,:host .message-sender .chat-buttons .gifs:hover{cursor:pointer}:host .message-sender .chat-buttons .send{top:.9em}:host .message-sender .chat-buttons .send svg{width:1.7em;height:1.9em}:host .message-sender .chat-buttons .emoji{top:3.1em}:host .message-sender .chat-buttons .emoji svg{overflow:visible;width:2.33em;height:1.848em}:host .message-sender .chat-buttons .emoji svg mask{width:.733em;height:1.466em}:host .message-sender .chat-buttons .attach{top:5em;background-color:#87ceeb}:host .message-sender .chat-buttons .gifs{top:5em}:host .message-sender .chat-buttons .gifs svg{width:1.166em;height:1.2984em;margin-left:.25em}:host .message-sender .emoji-picker-space{position:absolute;top:-12em;height:12em;width:100%}:host .message-sender .emoji-picker-space emoji-picker{--background: var(--color-background-emoji);height:100%;width:100%;--input-font-size: .8em;--input-font-color: var(--color-text-white)}\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: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i2.InputFieldComponent, selector: "lib-input-field,[lib-input-field]", inputs: ["name", "autocomplete", "label", "placeholder", "type", "readonly", "focus", "enableGoogleAddress", "locationAutocompleteConfig", "defaultLocation", "mask", "prefix", "suffix", "maxLength", "value", "address", "textarea", "resize", "counter", "patterns", "trimWhiteSpace", "disabled"], outputs: ["mapError", "locationChange", "keyDown", "onBlur"] }, { kind: "directive", type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$2.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: GifSelectorComponent, selector: "lib-gif-selector", outputs: ["selectGif"] }, { kind: "component", type: i2.LibModalComponent, selector: "lib-popup", inputs: ["isOpen", "icon", "title", "message", "extendedMessage", "cancelButton", "confirmButton", "checkboxText", "progBarCurrentStep", "progBarTotalSteps", "customClass", "backdropDismiss", "modalComponent", "modalComponentData"], outputs: ["modalConfirm", "modalDismiss", "afterCloseEvent"] }, { kind: "directive", type: i2$3.InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }, { kind: "pipe", type: i1.DatePipe, name: "date" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
2234
2090
|
}
|
|
2235
2091
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ChatComponent, decorators: [{
|
|
2236
2092
|
type: Component,
|
|
@@ -2296,7 +2152,7 @@ class AlertPopupComponent {
|
|
|
2296
2152
|
}, 1000);
|
|
2297
2153
|
}
|
|
2298
2154
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: AlertPopupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2299
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.14", type: AlertPopupComponent, isStandalone: false, selector: "lib-alert-popup", inputs: { title: "title", description: "description", timeState: "timeState", number: "number" }, outputs: { closed: "closed" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"alert-popup\" [class.is-closing]=\"isClosing\">\r\n <header class=\"alert-popup__header\">\r\n <div class=\"alert-popup__info\">\r\n <img width=\"25px\" height=\"25px\" src=\"assets/icons/popup-defualt.svg\" alt=\"defualt-icon\" />\r\n <div class=\"alert-popup__wapper\">\r\n <div class=\"alert-popup__title\">{{ title | translate }}</div>\r\n <span class=\"alert-popup__description\">{{ description | translate: { number: number } }}</span>\r\n </div>\r\n </div>\r\n <div class=\"alert-popup__close\" (click)=\"handleCloseEvent()\">\r\n <div>\r\n <img width=\"20px\" height=\"20px\" src=\"assets/icons/close-icon.svg\" alt=\"close-icon\" />\r\n </div>\r\n </div>\r\n </header>\r\n</div>\r\n", styles: [":host{font-size:clamp(0px,3.2dvw,12px)}:host *{box-sizing:border-box}.alert-popup{opacity:1;transition:opacity 0ms ease,width 0ms ease;-webkit-backdrop-filter:blur(.625em);backdrop-filter:blur(.625em);background:linear-gradient(to right,#fe3c72 -20%,#0003 15%);color:#fff;padding:1em 1.5em;width:25em;border-radius:1.6625em;font-family:Gilroy}.alert-popup__header{display:flex;justify-content:space-between;align-items:flex-start}.alert-popup__defualt-icon{width:1em;height:1em}.alert-popup__info{display:flex;gap:1em;align-items:flex-start}.alert-popup__title{font-size:1.275em;font-weight:300;font-family:Calistoga;color:#fff5f5;text-overflow:ellipsis;white-space:nowrap;word-break:revert}.alert-popup__description{color:#8e8e8e;font-size:.875em;font-family:Gilroy;text-overflow:ellipsis;white-space:break-spaces;word-break:revert}.alert-popup__close{cursor:pointer}.alert-popup__close img{min-width:20px}.alert-popup__wapper{transition:opacity 0ms ease}.alert-popup:before{content:\"\";position:absolute;inset:0;border-radius:1.6625em;padding:.125em;background:linear-gradient(to top,transparent,transparent,#ccabc4);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;z-index:-1}.overflow{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.is-closing{transition:opacity .5s ease,width 1.5s ease;opacity:0;width:5em}.is-closing .alert-popup__wapper{opacity:0;transition:opacity .5s ease}@media (max-width: 768px){:host{font-size:calc(clamp(0px,3.2dvw,12px)*.8)}}\n"], dependencies: [{ kind: "pipe", type:
|
|
2155
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.14", type: AlertPopupComponent, isStandalone: false, selector: "lib-alert-popup", inputs: { title: "title", description: "description", timeState: "timeState", number: "number" }, outputs: { closed: "closed" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"alert-popup\" [class.is-closing]=\"isClosing\">\r\n <header class=\"alert-popup__header\">\r\n <div class=\"alert-popup__info\">\r\n <img width=\"25px\" height=\"25px\" src=\"assets/icons/popup-defualt.svg\" alt=\"defualt-icon\" />\r\n <div class=\"alert-popup__wapper\">\r\n <div class=\"alert-popup__title\">{{ title | translate }}</div>\r\n <span class=\"alert-popup__description\">{{ description | translate: { number: number } }}</span>\r\n </div>\r\n </div>\r\n <div class=\"alert-popup__close\" (click)=\"handleCloseEvent()\">\r\n <div>\r\n <img width=\"20px\" height=\"20px\" src=\"assets/icons/close-icon.svg\" alt=\"close-icon\" />\r\n </div>\r\n </div>\r\n </header>\r\n</div>\r\n", styles: [":host{font-size:clamp(0px,3.2dvw,12px)}:host *{box-sizing:border-box}.alert-popup{opacity:1;transition:opacity 0ms ease,width 0ms ease;-webkit-backdrop-filter:blur(.625em);backdrop-filter:blur(.625em);background:linear-gradient(to right,#fe3c72 -20%,#0003 15%);color:#fff;padding:1em 1.5em;width:25em;border-radius:1.6625em;font-family:Gilroy}.alert-popup__header{display:flex;justify-content:space-between;align-items:flex-start}.alert-popup__defualt-icon{width:1em;height:1em}.alert-popup__info{display:flex;gap:1em;align-items:flex-start}.alert-popup__title{font-size:1.275em;font-weight:300;font-family:Calistoga;color:#fff5f5;text-overflow:ellipsis;white-space:nowrap;word-break:revert}.alert-popup__description{color:#8e8e8e;font-size:.875em;font-family:Gilroy;text-overflow:ellipsis;white-space:break-spaces;word-break:revert}.alert-popup__close{cursor:pointer}.alert-popup__close img{min-width:20px}.alert-popup__wapper{transition:opacity 0ms ease}.alert-popup:before{content:\"\";position:absolute;inset:0;border-radius:1.6625em;padding:.125em;background:linear-gradient(to top,transparent,transparent,#ccabc4);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;z-index:-1}.overflow{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.is-closing{transition:opacity .5s ease,width 1.5s ease;opacity:0;width:5em}.is-closing .alert-popup__wapper{opacity:0;transition:opacity .5s ease}@media (max-width: 768px){:host{font-size:calc(clamp(0px,3.2dvw,12px)*.8)}}\n"], dependencies: [{ kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
2300
2156
|
}
|
|
2301
2157
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: AlertPopupComponent, decorators: [{
|
|
2302
2158
|
type: Component,
|
|
@@ -2370,7 +2226,7 @@ class LibChatComponentModule {
|
|
|
2370
2226
|
SharedModule,
|
|
2371
2227
|
InfiniteScrollModule,
|
|
2372
2228
|
TranslateModule], exports: [ChatComponent] }); }
|
|
2373
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibChatComponentModule, providers: [ChatService], imports: [CommonModule,
|
|
2229
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibChatComponentModule, providers: [ChatService$1], imports: [CommonModule,
|
|
2374
2230
|
ImageCardModule,
|
|
2375
2231
|
MatInputModule,
|
|
2376
2232
|
MatSelectModule,
|
|
@@ -2404,31 +2260,276 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImpo
|
|
|
2404
2260
|
TranslateModule,
|
|
2405
2261
|
],
|
|
2406
2262
|
exports: [ChatComponent],
|
|
2407
|
-
providers: [ChatService],
|
|
2263
|
+
providers: [ChatService$1],
|
|
2408
2264
|
}]
|
|
2409
2265
|
}] });
|
|
2410
2266
|
|
|
2411
|
-
|
|
2412
|
-
|
|
2413
|
-
|
|
2414
|
-
|
|
2415
|
-
|
|
2416
|
-
|
|
2417
|
-
|
|
2418
|
-
|
|
2267
|
+
class ChatService {
|
|
2268
|
+
constructor(cacheService) {
|
|
2269
|
+
this.cacheService = cacheService;
|
|
2270
|
+
}
|
|
2271
|
+
setLongPressForSendImmediately(enabled) {
|
|
2272
|
+
this.cacheService.saveLocalStorage(LocalStorageKeys.LongPressForSendImmediately, enabled ? '1' : '0');
|
|
2273
|
+
}
|
|
2274
|
+
isLongPressForSendImmediately() {
|
|
2275
|
+
return this.cacheService.getLocalStorage(LocalStorageKeys.LongPressForSendImmediately).pipe(map((value) => value === '1'));
|
|
2276
|
+
}
|
|
2277
|
+
// transforms |messages| into |DateMessages| array
|
|
2278
|
+
transformMessages(messages) {
|
|
2279
|
+
const sorted = [...messages].sort((a, b) => a.timestamp?.getTime() - b.timestamp?.getTime());
|
|
2280
|
+
const seen = new Set();
|
|
2281
|
+
return sorted.map((msg) => {
|
|
2282
|
+
const dayStart = startOfDay(msg.timestamp); // midnight *local*
|
|
2283
|
+
if (dayStart) {
|
|
2284
|
+
const key = dayStart.getTime(); // epoch ms as the bucket id
|
|
2285
|
+
const isFirst = !seen.has(String(key));
|
|
2286
|
+
if (isFirst)
|
|
2287
|
+
seen.add(String(key));
|
|
2288
|
+
return { date: dayStart, isFirstMessage: isFirst, message: msg };
|
|
2289
|
+
}
|
|
2290
|
+
else {
|
|
2291
|
+
return null;
|
|
2292
|
+
}
|
|
2293
|
+
});
|
|
2294
|
+
}
|
|
2295
|
+
// updates |isFirstMessage| property of |DateMessages| array
|
|
2296
|
+
updateDateMessages(dateMessages) {
|
|
2297
|
+
const byDay = new Map();
|
|
2298
|
+
dateMessages.forEach((dm) => {
|
|
2299
|
+
const dayStart = startOfDay(dm.message.timestamp).getTime(); // epoch-ms key
|
|
2300
|
+
if (!byDay.has(dayStart))
|
|
2301
|
+
byDay.set(dayStart, []);
|
|
2302
|
+
byDay.get(dayStart).push(dm);
|
|
2303
|
+
});
|
|
2304
|
+
// 2️⃣ Within each bucket, sort and flag the first message
|
|
2305
|
+
const result = [];
|
|
2306
|
+
byDay.forEach((list) => {
|
|
2307
|
+
// ✨ clone so we don’t mutate callers’ state
|
|
2308
|
+
const sorted = [...list].sort((a, b) => a.message.timestamp.getTime() - b.message.timestamp.getTime());
|
|
2309
|
+
sorted.forEach((dm, idx) => (dm.isFirstMessage = idx === 0));
|
|
2310
|
+
result.push(...sorted);
|
|
2311
|
+
});
|
|
2312
|
+
return result;
|
|
2313
|
+
}
|
|
2314
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ChatService, deps: [{ token: AbstractCacheService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
2315
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ChatService, providedIn: 'root' }); }
|
|
2316
|
+
}
|
|
2317
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ChatService, decorators: [{
|
|
2318
|
+
type: Injectable,
|
|
2319
|
+
args: [{
|
|
2320
|
+
providedIn: 'root',
|
|
2321
|
+
}]
|
|
2322
|
+
}], ctorParameters: () => [{ type: AbstractCacheService }] });
|
|
2323
|
+
|
|
2324
|
+
const MATCHER_STATUSES = [
|
|
2325
|
+
{
|
|
2326
|
+
title: '1st',
|
|
2327
|
+
subtitle: 'exchange',
|
|
2328
|
+
value: MatcherStatuses.STATUS1,
|
|
2329
|
+
},
|
|
2330
|
+
{
|
|
2331
|
+
title: '2nd',
|
|
2332
|
+
subtitle: 'exchange',
|
|
2333
|
+
value: MatcherStatuses.STATUS2,
|
|
2334
|
+
},
|
|
2335
|
+
{
|
|
2336
|
+
title: '3rd',
|
|
2337
|
+
subtitle: 'exchange',
|
|
2338
|
+
value: MatcherStatuses.STATUS3,
|
|
2339
|
+
},
|
|
2340
|
+
{
|
|
2341
|
+
title: '2+',
|
|
2342
|
+
subtitle: 'laughs',
|
|
2343
|
+
value: MatcherStatuses.STATUS4,
|
|
2344
|
+
},
|
|
2345
|
+
{
|
|
2346
|
+
title: 'idea',
|
|
2347
|
+
subtitle: 'signalled',
|
|
2348
|
+
value: MatcherStatuses.STATUS5,
|
|
2349
|
+
},
|
|
2350
|
+
{
|
|
2351
|
+
title: 'alt',
|
|
2352
|
+
subtitle: 'contact',
|
|
2353
|
+
value: MatcherStatuses.STATUS6,
|
|
2354
|
+
},
|
|
2355
|
+
{
|
|
2356
|
+
title: 'any',
|
|
2357
|
+
subtitle: 'romance',
|
|
2358
|
+
value: MatcherStatuses.STATUS7,
|
|
2359
|
+
},
|
|
2360
|
+
{
|
|
2361
|
+
title: 'locale',
|
|
2362
|
+
subtitle: 'confirmed',
|
|
2363
|
+
value: MatcherStatuses.STATUS8,
|
|
2364
|
+
},
|
|
2365
|
+
{
|
|
2366
|
+
title: 'time',
|
|
2367
|
+
subtitle: 'confirmed',
|
|
2368
|
+
value: MatcherStatuses.STATUS9,
|
|
2369
|
+
},
|
|
2370
|
+
{
|
|
2371
|
+
title: 'all',
|
|
2372
|
+
subtitle: 'followup',
|
|
2373
|
+
value: MatcherStatuses.STATUS10,
|
|
2374
|
+
},
|
|
2375
|
+
];
|
|
2376
|
+
|
|
2377
|
+
const defaultClientHomeConfig = {
|
|
2378
|
+
loading: {
|
|
2379
|
+
clientMatches: true,
|
|
2380
|
+
},
|
|
2381
|
+
default: false,
|
|
2382
|
+
component: ClientHomeComponent.ChatHandoff,
|
|
2383
|
+
activeIndex: 0,
|
|
2384
|
+
slideContentMaxHeight: 'auto',
|
|
2385
|
+
clientMatches$: of([]),
|
|
2386
|
+
schedulers$: of([]),
|
|
2387
|
+
polygonColors: [],
|
|
2388
|
+
spiderConfig: null,
|
|
2389
|
+
bottomThumbs: true,
|
|
2390
|
+
includeTime: true,
|
|
2391
|
+
maxLength: 300,
|
|
2392
|
+
includeGifMessage: true,
|
|
2393
|
+
startDate: new Date(),
|
|
2394
|
+
endDate: endOfDay(addDays(new Date(), 6)),
|
|
2395
|
+
emptyMessage: '',
|
|
2396
|
+
displayBookedStatuses: false,
|
|
2397
|
+
displayEmptyDays: true,
|
|
2398
|
+
loading$: of(false),
|
|
2399
|
+
alertStatus: {},
|
|
2400
|
+
showValueProportionLabel: false,
|
|
2401
|
+
hideProgressBar: false,
|
|
2419
2402
|
};
|
|
2420
2403
|
|
|
2421
|
-
|
|
2422
|
-
(
|
|
2423
|
-
|
|
2424
|
-
|
|
2425
|
-
|
|
2404
|
+
class ChatMetaPipe {
|
|
2405
|
+
transform(clientMatches$, prospectId) {
|
|
2406
|
+
return clientMatches$?.pipe(map((clientMatches) => clientMatches.map((c) => c.prospectData)), map((chats) => {
|
|
2407
|
+
const chat = chats.find((c) => c.prospectId === prospectId);
|
|
2408
|
+
if (!chat || chat.messages.length === 0) {
|
|
2409
|
+
return {
|
|
2410
|
+
lastResponseTimestamp: null,
|
|
2411
|
+
firstAnswer: false,
|
|
2412
|
+
waitingAnswer: false,
|
|
2413
|
+
conversationFlags: chat?.conversationFlags,
|
|
2414
|
+
};
|
|
2415
|
+
}
|
|
2416
|
+
// --- one forward/backward scan, no extra arrays ---
|
|
2417
|
+
let lastUserIndex = -1;
|
|
2418
|
+
for (let i = chat.messages.length - 1; i >= 0; i--) {
|
|
2419
|
+
if (chat.messages[i].sender === SenderTypes.USER) {
|
|
2420
|
+
lastUserIndex = i;
|
|
2421
|
+
break;
|
|
2422
|
+
}
|
|
2423
|
+
}
|
|
2424
|
+
let firstProspectMessageAfterMe = null;
|
|
2425
|
+
let waitingAnswer = false;
|
|
2426
|
+
if (lastUserIndex !== -1) {
|
|
2427
|
+
for (let i = lastUserIndex + 1; i < chat.messages.length; i++) {
|
|
2428
|
+
if (chat.messages[i].sender === SenderTypes.OTHER) {
|
|
2429
|
+
firstProspectMessageAfterMe = chat.messages[i].timestamp;
|
|
2430
|
+
waitingAnswer = true; // prospect wrote last → waiting
|
|
2431
|
+
break;
|
|
2432
|
+
}
|
|
2433
|
+
}
|
|
2434
|
+
}
|
|
2435
|
+
if (!waitingAnswer) {
|
|
2436
|
+
// Either I haven't written, or I wrote last
|
|
2437
|
+
const lastMsg = chat.messages[chat.messages.length - 1];
|
|
2438
|
+
waitingAnswer = !!lastMsg && lastMsg.sender === SenderTypes.OTHER && lastUserIndex === -1;
|
|
2439
|
+
}
|
|
2440
|
+
return {
|
|
2441
|
+
lastResponseTimestamp: firstProspectMessageAfterMe,
|
|
2442
|
+
firstAnswer: lastUserIndex !== -1,
|
|
2443
|
+
waitingAnswer,
|
|
2444
|
+
conversationFlags: chat.conversationFlags,
|
|
2445
|
+
};
|
|
2446
|
+
}));
|
|
2447
|
+
}
|
|
2448
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ChatMetaPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
2449
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.14", ngImport: i0, type: ChatMetaPipe, isStandalone: true, name: "chatMeta" }); }
|
|
2450
|
+
}
|
|
2451
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ChatMetaPipe, decorators: [{
|
|
2452
|
+
type: Pipe,
|
|
2453
|
+
args: [{
|
|
2454
|
+
name: 'chatMeta',
|
|
2455
|
+
standalone: true,
|
|
2456
|
+
pure: true, // default, but being explicit
|
|
2457
|
+
}]
|
|
2458
|
+
}] });
|
|
2459
|
+
|
|
2460
|
+
class GetColorByMatcherPipe {
|
|
2461
|
+
transform(match, config) {
|
|
2462
|
+
const defaultColors = progressDefaultColors;
|
|
2463
|
+
if (!config?.spiderConfig?.datasets?.length) {
|
|
2464
|
+
return defaultColors;
|
|
2465
|
+
}
|
|
2466
|
+
const currentMatch = config.spiderConfig.datasets.find((ma) => ma.title === match.primary?.name || ma.title === match.secondary?.name);
|
|
2467
|
+
return currentMatch
|
|
2468
|
+
? {
|
|
2469
|
+
primary: currentMatch.polygon_color.value,
|
|
2470
|
+
secondary: currentMatch.polygon_color.value,
|
|
2471
|
+
tertiary: currentMatch.polygon_color.value,
|
|
2472
|
+
gradientPrimary: currentMatch.polygon_color.value,
|
|
2473
|
+
gradientSecondary: currentMatch.polygon_color.value,
|
|
2474
|
+
complete: currentMatch.polygon_color.value,
|
|
2475
|
+
incomplete: currentMatch.polygon_color.value,
|
|
2476
|
+
}
|
|
2477
|
+
: defaultColors;
|
|
2478
|
+
}
|
|
2479
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: GetColorByMatcherPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
2480
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.14", ngImport: i0, type: GetColorByMatcherPipe, isStandalone: true, name: "getColorByMatcher" }); }
|
|
2481
|
+
}
|
|
2482
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: GetColorByMatcherPipe, decorators: [{
|
|
2483
|
+
type: Pipe,
|
|
2484
|
+
args: [{
|
|
2485
|
+
name: 'getColorByMatcher',
|
|
2486
|
+
standalone: true,
|
|
2487
|
+
}]
|
|
2488
|
+
}] });
|
|
2489
|
+
|
|
2490
|
+
const TICK_PERIOD_SECONDS = new InjectionToken('TICK_PERIOD_SECONDS', { factory: () => 60 });
|
|
2426
2491
|
|
|
2427
|
-
|
|
2428
|
-
|
|
2429
|
-
|
|
2430
|
-
|
|
2431
|
-
|
|
2492
|
+
// 🔁 ProgressTickerService centralizes timing control instead of spawning
|
|
2493
|
+
// multiple `setInterval` calls inside each animated component.
|
|
2494
|
+
//
|
|
2495
|
+
// This prevents creating 100+ independent timers (one per component),
|
|
2496
|
+
// and ensures all animations stay synchronized through a shared RxJS Observable.
|
|
2497
|
+
//
|
|
2498
|
+
// With 'shareReplay', the timer activates only when there’s at least one subscriber,
|
|
2499
|
+
// and it automatically stops when there are none.
|
|
2500
|
+
//
|
|
2501
|
+
// This approach significantly improves performance, reduces CPU usage,
|
|
2502
|
+
// and makes animation timing easier to manage and debug.
|
|
2503
|
+
class ProgressTickerService {
|
|
2504
|
+
/* 60 * 1_000 = 1 minute */
|
|
2505
|
+
constructor(periodSec) {
|
|
2506
|
+
/** For diagnostics: current number of active subscribers. */
|
|
2507
|
+
this.subscriberCount$ = new BehaviorSubject(0);
|
|
2508
|
+
const periodMs = Math.max(0.125, periodSec) * 1_000; // guard against 0/neg
|
|
2509
|
+
const base$ = interval(periodMs, animationFrameScheduler);
|
|
2510
|
+
// wrapped timer that tracks subs/unsubs
|
|
2511
|
+
this.tick$ = defer(() => {
|
|
2512
|
+
// a new subscription is starting
|
|
2513
|
+
this.subscriberCount$.next(this.subscriberCount$.value + 1);
|
|
2514
|
+
return base$.pipe(finalize(() => {
|
|
2515
|
+
// this subscription is ending
|
|
2516
|
+
this.subscriberCount$.next(this.subscriberCount$.value - 1);
|
|
2517
|
+
}));
|
|
2518
|
+
}).pipe(shareReplay({ bufferSize: 1, refCount: true }));
|
|
2519
|
+
}
|
|
2520
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ProgressTickerService, deps: [{ token: TICK_PERIOD_SECONDS }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
2521
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ProgressTickerService, providedIn: 'root' }); }
|
|
2522
|
+
}
|
|
2523
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ProgressTickerService, decorators: [{
|
|
2524
|
+
type: Injectable,
|
|
2525
|
+
args: [{ providedIn: 'root' }]
|
|
2526
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
2527
|
+
type: Inject,
|
|
2528
|
+
args: [TICK_PERIOD_SECONDS]
|
|
2529
|
+
}] }] });
|
|
2530
|
+
|
|
2531
|
+
// progress-gap.config.ts (inside the library)
|
|
2532
|
+
const PROGRESS_GAP_MINUTES = new InjectionToken('PROGRESS_GAP_MINUTES', { factory: () => 1 }); // Default to 1 minute if not provided
|
|
2432
2533
|
|
|
2433
2534
|
const getLimitDatesIndicators = (timestamp, interval = 1_440) => {
|
|
2434
2535
|
const MS_IN_MIN = 60 * 1000; // 60 000
|
|
@@ -2515,49 +2616,15 @@ const redelegation = (basedOn, registered) => {
|
|
|
2515
2616
|
return { state: INNER_CIRCLE_STATE.Redelegation, innerValue: null, tick: 'stop', basedOn, registered };
|
|
2516
2617
|
};
|
|
2517
2618
|
|
|
2518
|
-
|
|
2519
|
-
|
|
2520
|
-
|
|
2521
|
-
|
|
2522
|
-
|
|
2523
|
-
|
|
2524
|
-
|
|
2525
|
-
|
|
2526
|
-
|
|
2527
|
-
// and ensures all animations stay synchronized through a shared RxJS Observable.
|
|
2528
|
-
//
|
|
2529
|
-
// With 'shareReplay', the timer activates only when there’s at least one subscriber,
|
|
2530
|
-
// and it automatically stops when there are none.
|
|
2531
|
-
//
|
|
2532
|
-
// This approach significantly improves performance, reduces CPU usage,
|
|
2533
|
-
// and makes animation timing easier to manage and debug.
|
|
2534
|
-
class ProgressTickerService {
|
|
2535
|
-
/* 60 * 1_000 = 1 minute */
|
|
2536
|
-
constructor(periodSec) {
|
|
2537
|
-
/** For diagnostics: current number of active subscribers. */
|
|
2538
|
-
this.subscriberCount$ = new BehaviorSubject(0);
|
|
2539
|
-
const periodMs = Math.max(0.125, periodSec) * 1_000; // guard against 0/neg
|
|
2540
|
-
const base$ = interval(periodMs, animationFrameScheduler);
|
|
2541
|
-
// wrapped timer that tracks subs/unsubs
|
|
2542
|
-
this.tick$ = defer(() => {
|
|
2543
|
-
// a new subscription is starting
|
|
2544
|
-
this.subscriberCount$.next(this.subscriberCount$.value + 1);
|
|
2545
|
-
return base$.pipe(finalize(() => {
|
|
2546
|
-
// this subscription is ending
|
|
2547
|
-
this.subscriberCount$.next(this.subscriberCount$.value - 1);
|
|
2548
|
-
}));
|
|
2549
|
-
}).pipe(shareReplay({ bufferSize: 1, refCount: true }));
|
|
2550
|
-
}
|
|
2551
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ProgressTickerService, deps: [{ token: TICK_PERIOD_SECONDS }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
2552
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ProgressTickerService, providedIn: 'root' }); }
|
|
2553
|
-
}
|
|
2554
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ProgressTickerService, decorators: [{
|
|
2555
|
-
type: Injectable,
|
|
2556
|
-
args: [{ providedIn: 'root' }]
|
|
2557
|
-
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
2558
|
-
type: Inject,
|
|
2559
|
-
args: [TICK_PERIOD_SECONDS]
|
|
2560
|
-
}] }] });
|
|
2619
|
+
const innerProgressWhiteColors = {
|
|
2620
|
+
primary: '#FFFFFF',
|
|
2621
|
+
secondary: '#E0E0E0',
|
|
2622
|
+
tertiary: '#000000',
|
|
2623
|
+
gradientPrimary: '#FFFFFF',
|
|
2624
|
+
gradientSecondary: '#E0E0E0',
|
|
2625
|
+
incomplete: '#E0E0E0',
|
|
2626
|
+
complete: '#FFFFFF',
|
|
2627
|
+
};
|
|
2561
2628
|
|
|
2562
2629
|
class LibClientMatchOverviewComponent {
|
|
2563
2630
|
constructor() {
|
|
@@ -2762,158 +2829,79 @@ class LibClientMatchOverviewComponent {
|
|
|
2762
2829
|
};
|
|
2763
2830
|
const map = lookUpMap[preset];
|
|
2764
2831
|
this.innerValue = innerValue ?? map.innerValue;
|
|
2765
|
-
this.showIllumination = map.showIllumination;
|
|
2766
|
-
this.showValueProportionLabel = map.showValueProportionLabel;
|
|
2767
|
-
this.innerPartialColors = map.innerPartialColors;
|
|
2768
|
-
this.basedOn = basedOn ?? map.basedOn;
|
|
2769
|
-
this.innerState = preset;
|
|
2770
|
-
if (preset === INNER_CIRCLE_STATE.Unresponsive) {
|
|
2771
|
-
this.sendConversationFlag.emit({
|
|
2772
|
-
timestamp: new Date(),
|
|
2773
|
-
prospectId: this.overview._id,
|
|
2774
|
-
basedOn: this.basedOn,
|
|
2775
|
-
flag: CONVERSATION_FLAG.UNRESPONSIVE,
|
|
2776
|
-
});
|
|
2777
|
-
}
|
|
2778
|
-
else if (preset === INNER_CIRCLE_STATE.Redelegation) {
|
|
2779
|
-
this.sendConversationFlag.emit({
|
|
2780
|
-
timestamp: new Date(),
|
|
2781
|
-
prospectId: this.overview._id,
|
|
2782
|
-
basedOn: this.basedOn,
|
|
2783
|
-
flag: CONVERSATION_FLAG.REDELEGATION,
|
|
2784
|
-
});
|
|
2785
|
-
}
|
|
2786
|
-
this.buildCircleOpts();
|
|
2787
|
-
}
|
|
2788
|
-
buildCircleOpts() {
|
|
2789
|
-
this.circleOpts = {
|
|
2790
|
-
value: this.overview.preferences + this.overview.personality,
|
|
2791
|
-
max: this.maxValue,
|
|
2792
|
-
partialColors: this.partialColors,
|
|
2793
|
-
showExternalPartialCircleProgress: this.showExternalPartialCircleProgress && this.expand,
|
|
2794
|
-
showValueProportionLabel: this.showValueProportionLabel,
|
|
2795
|
-
hasNotification: this.meta?.waitingAnswer,
|
|
2796
|
-
inner: {
|
|
2797
|
-
value: this.innerValue,
|
|
2798
|
-
max: this.innerMaxValue,
|
|
2799
|
-
colors: this.innerPartialColors,
|
|
2800
|
-
state: this.innerState,
|
|
2801
|
-
showIllumination: this.showIllumination,
|
|
2802
|
-
},
|
|
2803
|
-
imageUrl: this.overview.primary?.src,
|
|
2804
|
-
suffix: '',
|
|
2805
|
-
prefix: '',
|
|
2806
|
-
};
|
|
2807
|
-
}
|
|
2808
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibClientMatchOverviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2809
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.14", type: LibClientMatchOverviewComponent, isStandalone: true, selector: "lib-client-match-overview", inputs: { overview: "overview", meta: "meta", expand: "expand", loading: "loading", default: "default", hideProgressBar: "hideProgressBar", partialColors: "partialColors", showExternalPartialCircleProgress: "showExternalPartialCircleProgress", maxValue: "maxValue", enableChangeOverview: "enableChangeOverview" }, outputs: { sendConversationFlag: "sendConversationFlag" }, usesOnChanges: true, ngImport: i0, template: "@if (!default && imageLoader$ | async) {\n <div class=\"overview\" [ngClass]=\"{ overview__expand: expand, overview__collapse: !expand }\">\n <div class=\"overview__container\">\n <lib-circle-progress\n class=\"overview__progress-bar\"\n [ngClass]=\"{ 'overview__progress-bar--hidden': hideProgressBar && !expand }\"\n [variable]=\"circleVariable.Partial\"\n [config]=\"circleOpts\"\n ></lib-circle-progress>\n <!-- details next to the circle image -->\n @if (expand) {\n <div class=\"overview__comparison comparison\">\n <div class=\"comparison__entity secondary-profile\">\n <div class=\"secondary-profile__image\">\n <svg width=\"100%\" height=\"100%\" viewBox=\"0 0 100 100\">\n <circle r=\"50\" cx=\"50\" cy=\"50\" fill=\"#28252D\" />\n <image [attr.mask]=\"'url(#' + imagePathId + ')'\" [attr.href]=\"overview.secondary.src\" height=\"80\" width=\"80\" x=\"10\" y=\"10\" />\n <defs>\n <mask [attr.id]=\"imagePathId\">\n <rect x=\"0\" y=\"0\" height=\"100\" width=\"100\" fill=\"black\" />\n <circle cx=\"50\" cy=\"50\" r=\"40\" fill=\"white\" />\n </mask>\n </defs>\n </svg>\n </div>\n <div class=\"comparison__label\">{{ overview.secondary.name }}</div>\n </div>\n <div class=\"comparison__entity\">\n <div class=\"comparison__value\">\n <span class=\"preferences\">{{ overview.preferences }}%</span>\n </div>\n <div class=\"comparison__label\">{{ 'CLIENT_MATCH_OVERVIEW.PREFERENCES_MATCH' | translate }}</div>\n </div>\n <div class=\"comparison__entity\">\n <div class=\"comparison__value\">\n <span class=\"personality\">{{ overview.personality }}%</span>\n </div>\n <div class=\"comparison__label\">{{ 'CLIENT_MATCH_OVERVIEW.PERSONALITY_MATCH' | translate }}</div>\n </div>\n </div>\n }\n </div>\n <!-- shadow on all the component (circle image and texts) -->\n @if (expand) {\n <div class=\"overview__back-shadow\">\n <img src=\"assets/client-match-overview/background-eclipse.svg\" />\n </div>\n }\n </div>\n} @else if (loading) {\n <div class=\"overview\" part=\"loading\">\n <div class=\"overview__container\">\n <div class=\"default-empty-profile\">\n <p-skeleton shape=\"circle\" size=\"3rem\" class=\"loading-skeleton\" />\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"34\" height=\"35\" viewBox=\"0 0 34 35\" fill=\"none\">\n <circle cx=\"17.0096\" cy=\"17.5439\" r=\"16.5945\" fill=\"#29252D\" />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M13.4843 18.2501C13.5008 18.2493 13.5174 18.2489 13.5339 18.2489H20.1384C20.1549 18.2489 20.1714 18.2493 20.188 18.2501C22.501 18.3649 24.5513 19.7726 25.4901 21.8878C26.1644 23.2368 25.7884 24.5724 24.9275 25.4921C24.0937 26.3827 22.802 26.9145 21.4595 26.9145H12.2127C10.8707 26.9145 9.57941 26.3825 8.74582 25.4921C7.88499 24.5726 7.50858 23.2372 8.182 21.888C9.12087 19.7726 11.1712 18.365 13.4843 18.2501ZM13.56 20.2486C12.0044 20.3346 10.6283 21.2884 10.0022 22.7165C9.99443 22.7342 9.98617 22.7517 9.97741 22.7689C9.72674 23.2609 9.82034 23.7138 10.2057 24.1253C10.6239 24.5721 11.367 24.9147 12.2127 24.9147H21.4595C22.3061 24.9147 23.0495 24.572 23.4675 24.1253C23.8527 23.7141 23.9461 23.2616 23.6951 22.7694C23.6863 22.7521 23.6779 22.7343 23.67 22.7165C23.044 21.2884 21.6679 20.3346 20.1122 20.2486H13.56Z\"\n fill=\"#5E5E5E\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M16.836 8.24993C15.1794 8.24993 13.8364 9.5929 13.8364 11.2495C13.8364 12.9062 15.1794 14.2492 16.836 14.2492C18.4927 14.2492 19.8356 12.9062 19.8356 11.2495C19.8356 10.454 19.5197 9.69103 18.9571 9.12849C18.3945 8.56595 17.6315 8.24993 16.836 8.24993ZM11.8367 11.2495C11.8367 8.48847 14.075 6.25018 16.836 6.25018C18.162 6.25018 19.4335 6.7769 20.3712 7.71446C21.3086 8.65202 21.8354 9.92363 21.8354 11.2495C21.8354 14.0107 19.5971 16.2489 16.836 16.2489C14.075 16.2489 11.8367 14.0107 11.8367 11.2495Z\"\n fill=\"#5E5E5E\"\n />\n </svg>\n </div>\n </div>\n </div>\n} @else if (default || !overview.primary) {\n <div class=\"overview\">\n <div class=\"overview__container\">\n <div class=\"default-empty-profile\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"34\" height=\"35\" viewBox=\"0 0 34 35\" fill=\"none\">\n <circle cx=\"17.0096\" cy=\"17.5439\" r=\"16.5945\" fill=\"#29252D\" />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M13.4843 18.2501C13.5008 18.2493 13.5174 18.2489 13.5339 18.2489H20.1384C20.1549 18.2489 20.1714 18.2493 20.188 18.2501C22.501 18.3649 24.5513 19.7726 25.4901 21.8878C26.1644 23.2368 25.7884 24.5724 24.9275 25.4921C24.0937 26.3827 22.802 26.9145 21.4595 26.9145H12.2127C10.8707 26.9145 9.57941 26.3825 8.74582 25.4921C7.88499 24.5726 7.50858 23.2372 8.182 21.888C9.12087 19.7726 11.1712 18.365 13.4843 18.2501ZM13.56 20.2486C12.0044 20.3346 10.6283 21.2884 10.0022 22.7165C9.99443 22.7342 9.98617 22.7517 9.97741 22.7689C9.72674 23.2609 9.82034 23.7138 10.2057 24.1253C10.6239 24.5721 11.367 24.9147 12.2127 24.9147H21.4595C22.3061 24.9147 23.0495 24.572 23.4675 24.1253C23.8527 23.7141 23.9461 23.2616 23.6951 22.7694C23.6863 22.7521 23.6779 22.7343 23.67 22.7165C23.044 21.2884 21.6679 20.3346 20.1122 20.2486H13.56Z\"\n fill=\"#5E5E5E\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M16.836 8.24993C15.1794 8.24993 13.8364 9.5929 13.8364 11.2495C13.8364 12.9062 15.1794 14.2492 16.836 14.2492C18.4927 14.2492 19.8356 12.9062 19.8356 11.2495C19.8356 10.454 19.5197 9.69103 18.9571 9.12849C18.3945 8.56595 17.6315 8.24993 16.836 8.24993ZM11.8367 11.2495C11.8367 8.48847 14.075 6.25018 16.836 6.25018C18.162 6.25018 19.4335 6.7769 20.3712 7.71446C21.3086 8.65202 21.8354 9.92363 21.8354 11.2495C21.8354 14.0107 19.5971 16.2489 16.836 16.2489C14.075 16.2489 11.8367 14.0107 11.8367 11.2495Z\"\n fill=\"#5E5E5E\"\n />\n </svg>\n </div>\n </div>\n </div>\n}\n", styles: [".zoom-in{animation:fadeZoomIn .5s ease-in-out}.zoom-out{animation:fadeZoomOut .5s ease-in-out}.zoom-out.collapse{display:none!important}@keyframes fadeZoomOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(0)}}@keyframes fadeZoomIn{0%{opacity:0;transform:scale(.5)}to{opacity:1;transform:scale(1)}}.hide{max-height:0;overflow:hidden;opacity:0;transition:max-height .8s ease-in-out,opacity .8s ease-in-out}.show{max-height:200px;opacity:1;transition:max-height .8s ease-in-out,opacity .8s ease-in-out}:host{font-size:clamp(0px,var(--component-size, 1.5dvw),.75rem)}.overview{overflow:hidden;width:100%;max-width:var(--card-width, 100%);display:block;position:relative}.overview__collapse{--card-width: 15em}.overview__expand{--card-width: 100%}.overview__back-shadow{position:absolute;top:-15%;left:0%;height:130%;width:120%;display:flex;justify-content:center;z-index:0}.overview__back-shadow img{height:100%;width:100%;flex-shrink:0}.overview__container{z-index:2;position:relative;display:flex;align-items:center}.overview__progress-bar{height:var(--primary-profile-height, 15em)!important;width:var(--primary-profile-width, 15em)!important;flex-shrink:0;transition:all .5s}.overview__progress-bar--hidden .circle-progress__svg,.overview__progress-bar--hidden .circle-progress__image{opacity:0}.overview__comparison{display:flex;flex-direction:column;flex-grow:1;transform-origin:left center;margin:var(--secondary-profile-margin, 0 0 0 -10px)}.comparison__entity{font-family:Gilroy-Medium;display:flex;gap:1em}.comparison__label{display:flex;justify-content:center;align-items:center;max-width:10ch}.comparison__value{height:var(--match-percentage-value-height, 4em);width:var(--match-percentage-value-width, \"auto\");display:flex;align-items:center;justify-content:center}.comparison__value>span{font-size:var(--match-percentage-font-size, 3em)}.comparison__value>span.preferences{color:#fe3c72}.comparison__value>span.personality{color:#9c2b4b}.secondary-profile{margin-bottom:-5px}.secondary-profile__image{height:var(--secondary-profile-height, 7rem);width:var(--secondary-profile-width, 7rem);display:flex;align-items:center;margin-left:-3px}.default-empty-profile{padding:1px;border-radius:50%;background:radial-gradient(circle,#acacac 79%,#fff);display:flex;justify-content:center;align-items:center;position:relative;margin:0 10px}.default-empty-profile .loading-skeleton{position:absolute;top:0}.default-empty-profile .p-skeleton:after{background:linear-gradient(90deg,#fff0,#fff6,#fff0)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: CircleProgressModule }, { kind: "component", type: CircleProgressComponent, selector: "lib-circle-progress", inputs: ["variable", "config"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: SkeletonModule }, { kind: "component", type: i2$2.Skeleton, selector: "p-skeleton", inputs: ["styleClass", "shape", "animation", "borderRadius", "size", "width", "height"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.ShadowDom }); }
|
|
2810
|
-
}
|
|
2811
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibClientMatchOverviewComponent, decorators: [{
|
|
2812
|
-
type: Component,
|
|
2813
|
-
args: [{ selector: 'lib-client-match-overview', encapsulation: ViewEncapsulation.ShadowDom, changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule, CircleProgressModule, TranslateModule, SkeletonModule], template: "@if (!default && imageLoader$ | async) {\n <div class=\"overview\" [ngClass]=\"{ overview__expand: expand, overview__collapse: !expand }\">\n <div class=\"overview__container\">\n <lib-circle-progress\n class=\"overview__progress-bar\"\n [ngClass]=\"{ 'overview__progress-bar--hidden': hideProgressBar && !expand }\"\n [variable]=\"circleVariable.Partial\"\n [config]=\"circleOpts\"\n ></lib-circle-progress>\n <!-- details next to the circle image -->\n @if (expand) {\n <div class=\"overview__comparison comparison\">\n <div class=\"comparison__entity secondary-profile\">\n <div class=\"secondary-profile__image\">\n <svg width=\"100%\" height=\"100%\" viewBox=\"0 0 100 100\">\n <circle r=\"50\" cx=\"50\" cy=\"50\" fill=\"#28252D\" />\n <image [attr.mask]=\"'url(#' + imagePathId + ')'\" [attr.href]=\"overview.secondary.src\" height=\"80\" width=\"80\" x=\"10\" y=\"10\" />\n <defs>\n <mask [attr.id]=\"imagePathId\">\n <rect x=\"0\" y=\"0\" height=\"100\" width=\"100\" fill=\"black\" />\n <circle cx=\"50\" cy=\"50\" r=\"40\" fill=\"white\" />\n </mask>\n </defs>\n </svg>\n </div>\n <div class=\"comparison__label\">{{ overview.secondary.name }}</div>\n </div>\n <div class=\"comparison__entity\">\n <div class=\"comparison__value\">\n <span class=\"preferences\">{{ overview.preferences }}%</span>\n </div>\n <div class=\"comparison__label\">{{ 'CLIENT_MATCH_OVERVIEW.PREFERENCES_MATCH' | translate }}</div>\n </div>\n <div class=\"comparison__entity\">\n <div class=\"comparison__value\">\n <span class=\"personality\">{{ overview.personality }}%</span>\n </div>\n <div class=\"comparison__label\">{{ 'CLIENT_MATCH_OVERVIEW.PERSONALITY_MATCH' | translate }}</div>\n </div>\n </div>\n }\n </div>\n <!-- shadow on all the component (circle image and texts) -->\n @if (expand) {\n <div class=\"overview__back-shadow\">\n <img src=\"assets/client-match-overview/background-eclipse.svg\" />\n </div>\n }\n </div>\n} @else if (loading) {\n <div class=\"overview\" part=\"loading\">\n <div class=\"overview__container\">\n <div class=\"default-empty-profile\">\n <p-skeleton shape=\"circle\" size=\"3rem\" class=\"loading-skeleton\" />\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"34\" height=\"35\" viewBox=\"0 0 34 35\" fill=\"none\">\n <circle cx=\"17.0096\" cy=\"17.5439\" r=\"16.5945\" fill=\"#29252D\" />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M13.4843 18.2501C13.5008 18.2493 13.5174 18.2489 13.5339 18.2489H20.1384C20.1549 18.2489 20.1714 18.2493 20.188 18.2501C22.501 18.3649 24.5513 19.7726 25.4901 21.8878C26.1644 23.2368 25.7884 24.5724 24.9275 25.4921C24.0937 26.3827 22.802 26.9145 21.4595 26.9145H12.2127C10.8707 26.9145 9.57941 26.3825 8.74582 25.4921C7.88499 24.5726 7.50858 23.2372 8.182 21.888C9.12087 19.7726 11.1712 18.365 13.4843 18.2501ZM13.56 20.2486C12.0044 20.3346 10.6283 21.2884 10.0022 22.7165C9.99443 22.7342 9.98617 22.7517 9.97741 22.7689C9.72674 23.2609 9.82034 23.7138 10.2057 24.1253C10.6239 24.5721 11.367 24.9147 12.2127 24.9147H21.4595C22.3061 24.9147 23.0495 24.572 23.4675 24.1253C23.8527 23.7141 23.9461 23.2616 23.6951 22.7694C23.6863 22.7521 23.6779 22.7343 23.67 22.7165C23.044 21.2884 21.6679 20.3346 20.1122 20.2486H13.56Z\"\n fill=\"#5E5E5E\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M16.836 8.24993C15.1794 8.24993 13.8364 9.5929 13.8364 11.2495C13.8364 12.9062 15.1794 14.2492 16.836 14.2492C18.4927 14.2492 19.8356 12.9062 19.8356 11.2495C19.8356 10.454 19.5197 9.69103 18.9571 9.12849C18.3945 8.56595 17.6315 8.24993 16.836 8.24993ZM11.8367 11.2495C11.8367 8.48847 14.075 6.25018 16.836 6.25018C18.162 6.25018 19.4335 6.7769 20.3712 7.71446C21.3086 8.65202 21.8354 9.92363 21.8354 11.2495C21.8354 14.0107 19.5971 16.2489 16.836 16.2489C14.075 16.2489 11.8367 14.0107 11.8367 11.2495Z\"\n fill=\"#5E5E5E\"\n />\n </svg>\n </div>\n </div>\n </div>\n} @else if (default || !overview.primary) {\n <div class=\"overview\">\n <div class=\"overview__container\">\n <div class=\"default-empty-profile\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"34\" height=\"35\" viewBox=\"0 0 34 35\" fill=\"none\">\n <circle cx=\"17.0096\" cy=\"17.5439\" r=\"16.5945\" fill=\"#29252D\" />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M13.4843 18.2501C13.5008 18.2493 13.5174 18.2489 13.5339 18.2489H20.1384C20.1549 18.2489 20.1714 18.2493 20.188 18.2501C22.501 18.3649 24.5513 19.7726 25.4901 21.8878C26.1644 23.2368 25.7884 24.5724 24.9275 25.4921C24.0937 26.3827 22.802 26.9145 21.4595 26.9145H12.2127C10.8707 26.9145 9.57941 26.3825 8.74582 25.4921C7.88499 24.5726 7.50858 23.2372 8.182 21.888C9.12087 19.7726 11.1712 18.365 13.4843 18.2501ZM13.56 20.2486C12.0044 20.3346 10.6283 21.2884 10.0022 22.7165C9.99443 22.7342 9.98617 22.7517 9.97741 22.7689C9.72674 23.2609 9.82034 23.7138 10.2057 24.1253C10.6239 24.5721 11.367 24.9147 12.2127 24.9147H21.4595C22.3061 24.9147 23.0495 24.572 23.4675 24.1253C23.8527 23.7141 23.9461 23.2616 23.6951 22.7694C23.6863 22.7521 23.6779 22.7343 23.67 22.7165C23.044 21.2884 21.6679 20.3346 20.1122 20.2486H13.56Z\"\n fill=\"#5E5E5E\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M16.836 8.24993C15.1794 8.24993 13.8364 9.5929 13.8364 11.2495C13.8364 12.9062 15.1794 14.2492 16.836 14.2492C18.4927 14.2492 19.8356 12.9062 19.8356 11.2495C19.8356 10.454 19.5197 9.69103 18.9571 9.12849C18.3945 8.56595 17.6315 8.24993 16.836 8.24993ZM11.8367 11.2495C11.8367 8.48847 14.075 6.25018 16.836 6.25018C18.162 6.25018 19.4335 6.7769 20.3712 7.71446C21.3086 8.65202 21.8354 9.92363 21.8354 11.2495C21.8354 14.0107 19.5971 16.2489 16.836 16.2489C14.075 16.2489 11.8367 14.0107 11.8367 11.2495Z\"\n fill=\"#5E5E5E\"\n />\n </svg>\n </div>\n </div>\n </div>\n}\n", styles: [".zoom-in{animation:fadeZoomIn .5s ease-in-out}.zoom-out{animation:fadeZoomOut .5s ease-in-out}.zoom-out.collapse{display:none!important}@keyframes fadeZoomOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(0)}}@keyframes fadeZoomIn{0%{opacity:0;transform:scale(.5)}to{opacity:1;transform:scale(1)}}.hide{max-height:0;overflow:hidden;opacity:0;transition:max-height .8s ease-in-out,opacity .8s ease-in-out}.show{max-height:200px;opacity:1;transition:max-height .8s ease-in-out,opacity .8s ease-in-out}:host{font-size:clamp(0px,var(--component-size, 1.5dvw),.75rem)}.overview{overflow:hidden;width:100%;max-width:var(--card-width, 100%);display:block;position:relative}.overview__collapse{--card-width: 15em}.overview__expand{--card-width: 100%}.overview__back-shadow{position:absolute;top:-15%;left:0%;height:130%;width:120%;display:flex;justify-content:center;z-index:0}.overview__back-shadow img{height:100%;width:100%;flex-shrink:0}.overview__container{z-index:2;position:relative;display:flex;align-items:center}.overview__progress-bar{height:var(--primary-profile-height, 15em)!important;width:var(--primary-profile-width, 15em)!important;flex-shrink:0;transition:all .5s}.overview__progress-bar--hidden .circle-progress__svg,.overview__progress-bar--hidden .circle-progress__image{opacity:0}.overview__comparison{display:flex;flex-direction:column;flex-grow:1;transform-origin:left center;margin:var(--secondary-profile-margin, 0 0 0 -10px)}.comparison__entity{font-family:Gilroy-Medium;display:flex;gap:1em}.comparison__label{display:flex;justify-content:center;align-items:center;max-width:10ch}.comparison__value{height:var(--match-percentage-value-height, 4em);width:var(--match-percentage-value-width, \"auto\");display:flex;align-items:center;justify-content:center}.comparison__value>span{font-size:var(--match-percentage-font-size, 3em)}.comparison__value>span.preferences{color:#fe3c72}.comparison__value>span.personality{color:#9c2b4b}.secondary-profile{margin-bottom:-5px}.secondary-profile__image{height:var(--secondary-profile-height, 7rem);width:var(--secondary-profile-width, 7rem);display:flex;align-items:center;margin-left:-3px}.default-empty-profile{padding:1px;border-radius:50%;background:radial-gradient(circle,#acacac 79%,#fff);display:flex;justify-content:center;align-items:center;position:relative;margin:0 10px}.default-empty-profile .loading-skeleton{position:absolute;top:0}.default-empty-profile .p-skeleton:after{background:linear-gradient(90deg,#fff0,#fff6,#fff0)}\n"] }]
|
|
2814
|
-
}], propDecorators: { overview: [{
|
|
2815
|
-
type: Input,
|
|
2816
|
-
args: [{ required: true }]
|
|
2817
|
-
}], meta: [{
|
|
2818
|
-
type: Input
|
|
2819
|
-
}], expand: [{
|
|
2820
|
-
type: Input
|
|
2821
|
-
}], loading: [{
|
|
2822
|
-
type: Input
|
|
2823
|
-
}], default: [{
|
|
2824
|
-
type: Input
|
|
2825
|
-
}], hideProgressBar: [{
|
|
2826
|
-
type: Input
|
|
2827
|
-
}], partialColors: [{
|
|
2828
|
-
type: Input
|
|
2829
|
-
}], showExternalPartialCircleProgress: [{
|
|
2830
|
-
type: Input
|
|
2831
|
-
}], maxValue: [{
|
|
2832
|
-
type: Input
|
|
2833
|
-
}], enableChangeOverview: [{
|
|
2834
|
-
type: Input
|
|
2835
|
-
}], sendConversationFlag: [{
|
|
2836
|
-
type: Output
|
|
2837
|
-
}] } });
|
|
2838
|
-
|
|
2839
|
-
var AlertStatusFields;
|
|
2840
|
-
(function (AlertStatusFields) {
|
|
2841
|
-
AlertStatusFields["upcomingDates"] = "upcomingDates";
|
|
2842
|
-
AlertStatusFields["compatibilityProfileTrait"] = "compatibilityProfileTrait";
|
|
2843
|
-
AlertStatusFields["compatibilityProfileSpider"] = "compatibilityProfileSpider";
|
|
2844
|
-
AlertStatusFields["chatHandoff"] = "chatHandoff";
|
|
2845
|
-
AlertStatusFields["chatProgress"] = "chatProgress";
|
|
2846
|
-
AlertStatusFields["chatMeetupAgenda"] = "chatMeetupAgenda";
|
|
2847
|
-
AlertStatusFields["face"] = "face";
|
|
2848
|
-
})(AlertStatusFields || (AlertStatusFields = {}));
|
|
2849
|
-
|
|
2850
|
-
var MatcherStatuses;
|
|
2851
|
-
(function (MatcherStatuses) {
|
|
2852
|
-
MatcherStatuses["STATUS0"] = "no contact";
|
|
2853
|
-
MatcherStatuses["STATUS1"] = "1st exchange";
|
|
2854
|
-
MatcherStatuses["STATUS2"] = "2nd exchange";
|
|
2855
|
-
MatcherStatuses["STATUS3"] = "3rd exchange";
|
|
2856
|
-
MatcherStatuses["STATUS4"] = "2+ laughs";
|
|
2857
|
-
MatcherStatuses["STATUS5"] = "idea signalled";
|
|
2858
|
-
MatcherStatuses["STATUS6"] = "alt contact";
|
|
2859
|
-
MatcherStatuses["STATUS7"] = "any romance";
|
|
2860
|
-
MatcherStatuses["STATUS8"] = "locale confirmed";
|
|
2861
|
-
MatcherStatuses["STATUS9"] = "time confirmed";
|
|
2862
|
-
MatcherStatuses["STATUS10"] = "all followup";
|
|
2863
|
-
})(MatcherStatuses || (MatcherStatuses = {}));
|
|
2864
|
-
|
|
2865
|
-
const MATCHER_STATUSES = [
|
|
2866
|
-
{
|
|
2867
|
-
title: '1st',
|
|
2868
|
-
subtitle: 'exchange',
|
|
2869
|
-
value: MatcherStatuses.STATUS1,
|
|
2870
|
-
},
|
|
2871
|
-
{
|
|
2872
|
-
title: '2nd',
|
|
2873
|
-
subtitle: 'exchange',
|
|
2874
|
-
value: MatcherStatuses.STATUS2,
|
|
2875
|
-
},
|
|
2876
|
-
{
|
|
2877
|
-
title: '3rd',
|
|
2878
|
-
subtitle: 'exchange',
|
|
2879
|
-
value: MatcherStatuses.STATUS3,
|
|
2880
|
-
},
|
|
2881
|
-
{
|
|
2882
|
-
title: '2+',
|
|
2883
|
-
subtitle: 'laughs',
|
|
2884
|
-
value: MatcherStatuses.STATUS4,
|
|
2885
|
-
},
|
|
2886
|
-
{
|
|
2887
|
-
title: 'idea',
|
|
2888
|
-
subtitle: 'signalled',
|
|
2889
|
-
value: MatcherStatuses.STATUS5,
|
|
2890
|
-
},
|
|
2891
|
-
{
|
|
2892
|
-
title: 'alt',
|
|
2893
|
-
subtitle: 'contact',
|
|
2894
|
-
value: MatcherStatuses.STATUS6,
|
|
2895
|
-
},
|
|
2896
|
-
{
|
|
2897
|
-
title: 'any',
|
|
2898
|
-
subtitle: 'romance',
|
|
2899
|
-
value: MatcherStatuses.STATUS7,
|
|
2900
|
-
},
|
|
2901
|
-
{
|
|
2902
|
-
title: 'locale',
|
|
2903
|
-
subtitle: 'confirmed',
|
|
2904
|
-
value: MatcherStatuses.STATUS8,
|
|
2905
|
-
},
|
|
2906
|
-
{
|
|
2907
|
-
title: 'time',
|
|
2908
|
-
subtitle: 'confirmed',
|
|
2909
|
-
value: MatcherStatuses.STATUS9,
|
|
2910
|
-
},
|
|
2911
|
-
{
|
|
2912
|
-
title: 'all',
|
|
2913
|
-
subtitle: 'followup',
|
|
2914
|
-
value: MatcherStatuses.STATUS10,
|
|
2915
|
-
},
|
|
2916
|
-
];
|
|
2832
|
+
this.showIllumination = map.showIllumination;
|
|
2833
|
+
this.showValueProportionLabel = map.showValueProportionLabel;
|
|
2834
|
+
this.innerPartialColors = map.innerPartialColors;
|
|
2835
|
+
this.basedOn = basedOn ?? map.basedOn;
|
|
2836
|
+
this.innerState = preset;
|
|
2837
|
+
if (preset === INNER_CIRCLE_STATE.Unresponsive) {
|
|
2838
|
+
this.sendConversationFlag.emit({
|
|
2839
|
+
timestamp: new Date(),
|
|
2840
|
+
prospectId: this.overview._id,
|
|
2841
|
+
basedOn: this.basedOn,
|
|
2842
|
+
flag: CONVERSATION_FLAG.UNRESPONSIVE,
|
|
2843
|
+
});
|
|
2844
|
+
}
|
|
2845
|
+
else if (preset === INNER_CIRCLE_STATE.Redelegation) {
|
|
2846
|
+
this.sendConversationFlag.emit({
|
|
2847
|
+
timestamp: new Date(),
|
|
2848
|
+
prospectId: this.overview._id,
|
|
2849
|
+
basedOn: this.basedOn,
|
|
2850
|
+
flag: CONVERSATION_FLAG.REDELEGATION,
|
|
2851
|
+
});
|
|
2852
|
+
}
|
|
2853
|
+
this.buildCircleOpts();
|
|
2854
|
+
}
|
|
2855
|
+
buildCircleOpts() {
|
|
2856
|
+
this.circleOpts = {
|
|
2857
|
+
value: this.overview.preferences + this.overview.personality,
|
|
2858
|
+
max: this.maxValue,
|
|
2859
|
+
partialColors: this.partialColors,
|
|
2860
|
+
showExternalPartialCircleProgress: this.showExternalPartialCircleProgress && this.expand,
|
|
2861
|
+
showValueProportionLabel: this.showValueProportionLabel,
|
|
2862
|
+
hasNotification: this.meta?.waitingAnswer,
|
|
2863
|
+
inner: {
|
|
2864
|
+
value: this.innerValue,
|
|
2865
|
+
max: this.innerMaxValue,
|
|
2866
|
+
colors: this.innerPartialColors,
|
|
2867
|
+
state: this.innerState,
|
|
2868
|
+
showIllumination: this.showIllumination,
|
|
2869
|
+
},
|
|
2870
|
+
imageUrl: this.overview.primary?.src,
|
|
2871
|
+
suffix: '',
|
|
2872
|
+
prefix: '',
|
|
2873
|
+
};
|
|
2874
|
+
}
|
|
2875
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibClientMatchOverviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2876
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.14", type: LibClientMatchOverviewComponent, isStandalone: true, selector: "lib-client-match-overview", inputs: { overview: "overview", meta: "meta", expand: "expand", loading: "loading", default: "default", hideProgressBar: "hideProgressBar", partialColors: "partialColors", showExternalPartialCircleProgress: "showExternalPartialCircleProgress", maxValue: "maxValue", enableChangeOverview: "enableChangeOverview" }, outputs: { sendConversationFlag: "sendConversationFlag" }, usesOnChanges: true, ngImport: i0, template: "@if (!default && imageLoader$ | async) {\n <div class=\"overview\" [ngClass]=\"{ overview__expand: expand, overview__collapse: !expand }\">\n <div class=\"overview__container\">\n <lib-circle-progress\n class=\"overview__progress-bar\"\n [ngClass]=\"{ 'overview__progress-bar--hidden': hideProgressBar && !expand }\"\n [variable]=\"circleVariable.Partial\"\n [config]=\"circleOpts\"\n ></lib-circle-progress>\n <!-- details next to the circle image -->\n @if (expand) {\n <div class=\"overview__comparison comparison\">\n <div class=\"comparison__entity secondary-profile\">\n <div class=\"secondary-profile__image\">\n <svg width=\"100%\" height=\"100%\" viewBox=\"0 0 100 100\">\n <circle r=\"50\" cx=\"50\" cy=\"50\" fill=\"#28252D\" />\n <image [attr.mask]=\"'url(#' + imagePathId + ')'\" [attr.href]=\"overview.secondary.src\" height=\"80\" width=\"80\" x=\"10\" y=\"10\" />\n <defs>\n <mask [attr.id]=\"imagePathId\">\n <rect x=\"0\" y=\"0\" height=\"100\" width=\"100\" fill=\"black\" />\n <circle cx=\"50\" cy=\"50\" r=\"40\" fill=\"white\" />\n </mask>\n </defs>\n </svg>\n </div>\n <div class=\"comparison__label\">{{ overview.secondary.name }}</div>\n </div>\n <div class=\"comparison__entity\">\n <div class=\"comparison__value\">\n <span class=\"preferences\">{{ overview.preferences }}%</span>\n </div>\n <div class=\"comparison__label\">{{ 'CLIENT_MATCH_OVERVIEW.PREFERENCES_MATCH' | translate }}</div>\n </div>\n <div class=\"comparison__entity\">\n <div class=\"comparison__value\">\n <span class=\"personality\">{{ overview.personality }}%</span>\n </div>\n <div class=\"comparison__label\">{{ 'CLIENT_MATCH_OVERVIEW.PERSONALITY_MATCH' | translate }}</div>\n </div>\n </div>\n }\n </div>\n <!-- shadow on all the component (circle image and texts) -->\n @if (expand) {\n <div class=\"overview__back-shadow\">\n <img src=\"assets/client-match-overview/background-eclipse.svg\" />\n </div>\n }\n </div>\n} @else if (loading) {\n <div class=\"overview\" part=\"loading\">\n <div class=\"overview__container\">\n <div class=\"default-empty-profile\">\n <p-skeleton shape=\"circle\" size=\"3rem\" class=\"loading-skeleton\" />\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"34\" height=\"35\" viewBox=\"0 0 34 35\" fill=\"none\">\n <circle cx=\"17.0096\" cy=\"17.5439\" r=\"16.5945\" fill=\"#29252D\" />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M13.4843 18.2501C13.5008 18.2493 13.5174 18.2489 13.5339 18.2489H20.1384C20.1549 18.2489 20.1714 18.2493 20.188 18.2501C22.501 18.3649 24.5513 19.7726 25.4901 21.8878C26.1644 23.2368 25.7884 24.5724 24.9275 25.4921C24.0937 26.3827 22.802 26.9145 21.4595 26.9145H12.2127C10.8707 26.9145 9.57941 26.3825 8.74582 25.4921C7.88499 24.5726 7.50858 23.2372 8.182 21.888C9.12087 19.7726 11.1712 18.365 13.4843 18.2501ZM13.56 20.2486C12.0044 20.3346 10.6283 21.2884 10.0022 22.7165C9.99443 22.7342 9.98617 22.7517 9.97741 22.7689C9.72674 23.2609 9.82034 23.7138 10.2057 24.1253C10.6239 24.5721 11.367 24.9147 12.2127 24.9147H21.4595C22.3061 24.9147 23.0495 24.572 23.4675 24.1253C23.8527 23.7141 23.9461 23.2616 23.6951 22.7694C23.6863 22.7521 23.6779 22.7343 23.67 22.7165C23.044 21.2884 21.6679 20.3346 20.1122 20.2486H13.56Z\"\n fill=\"#5E5E5E\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M16.836 8.24993C15.1794 8.24993 13.8364 9.5929 13.8364 11.2495C13.8364 12.9062 15.1794 14.2492 16.836 14.2492C18.4927 14.2492 19.8356 12.9062 19.8356 11.2495C19.8356 10.454 19.5197 9.69103 18.9571 9.12849C18.3945 8.56595 17.6315 8.24993 16.836 8.24993ZM11.8367 11.2495C11.8367 8.48847 14.075 6.25018 16.836 6.25018C18.162 6.25018 19.4335 6.7769 20.3712 7.71446C21.3086 8.65202 21.8354 9.92363 21.8354 11.2495C21.8354 14.0107 19.5971 16.2489 16.836 16.2489C14.075 16.2489 11.8367 14.0107 11.8367 11.2495Z\"\n fill=\"#5E5E5E\"\n />\n </svg>\n </div>\n </div>\n </div>\n} @else if (default || !overview.primary) {\n <div class=\"overview\">\n <div class=\"overview__container\">\n <div class=\"default-empty-profile\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"34\" height=\"35\" viewBox=\"0 0 34 35\" fill=\"none\">\n <circle cx=\"17.0096\" cy=\"17.5439\" r=\"16.5945\" fill=\"#29252D\" />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M13.4843 18.2501C13.5008 18.2493 13.5174 18.2489 13.5339 18.2489H20.1384C20.1549 18.2489 20.1714 18.2493 20.188 18.2501C22.501 18.3649 24.5513 19.7726 25.4901 21.8878C26.1644 23.2368 25.7884 24.5724 24.9275 25.4921C24.0937 26.3827 22.802 26.9145 21.4595 26.9145H12.2127C10.8707 26.9145 9.57941 26.3825 8.74582 25.4921C7.88499 24.5726 7.50858 23.2372 8.182 21.888C9.12087 19.7726 11.1712 18.365 13.4843 18.2501ZM13.56 20.2486C12.0044 20.3346 10.6283 21.2884 10.0022 22.7165C9.99443 22.7342 9.98617 22.7517 9.97741 22.7689C9.72674 23.2609 9.82034 23.7138 10.2057 24.1253C10.6239 24.5721 11.367 24.9147 12.2127 24.9147H21.4595C22.3061 24.9147 23.0495 24.572 23.4675 24.1253C23.8527 23.7141 23.9461 23.2616 23.6951 22.7694C23.6863 22.7521 23.6779 22.7343 23.67 22.7165C23.044 21.2884 21.6679 20.3346 20.1122 20.2486H13.56Z\"\n fill=\"#5E5E5E\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M16.836 8.24993C15.1794 8.24993 13.8364 9.5929 13.8364 11.2495C13.8364 12.9062 15.1794 14.2492 16.836 14.2492C18.4927 14.2492 19.8356 12.9062 19.8356 11.2495C19.8356 10.454 19.5197 9.69103 18.9571 9.12849C18.3945 8.56595 17.6315 8.24993 16.836 8.24993ZM11.8367 11.2495C11.8367 8.48847 14.075 6.25018 16.836 6.25018C18.162 6.25018 19.4335 6.7769 20.3712 7.71446C21.3086 8.65202 21.8354 9.92363 21.8354 11.2495C21.8354 14.0107 19.5971 16.2489 16.836 16.2489C14.075 16.2489 11.8367 14.0107 11.8367 11.2495Z\"\n fill=\"#5E5E5E\"\n />\n </svg>\n </div>\n </div>\n </div>\n}\n", styles: [".zoom-in{animation:fadeZoomIn .5s ease-in-out}.zoom-out{animation:fadeZoomOut .5s ease-in-out}.zoom-out.collapse{display:none!important}@keyframes fadeZoomOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(0)}}@keyframes fadeZoomIn{0%{opacity:0;transform:scale(.5)}to{opacity:1;transform:scale(1)}}.hide{max-height:0;overflow:hidden;opacity:0;transition:max-height .8s ease-in-out,opacity .8s ease-in-out}.show{max-height:200px;opacity:1;transition:max-height .8s ease-in-out,opacity .8s ease-in-out}:host{font-size:clamp(0px,var(--component-size, 1.5dvw),.75rem)}.overview{overflow:hidden;width:100%;max-width:var(--card-width, 100%);display:block;position:relative}.overview__collapse{--card-width: 15em}.overview__expand{--card-width: 100%}.overview__back-shadow{position:absolute;top:-15%;left:0%;height:130%;width:120%;display:flex;justify-content:center;z-index:0}.overview__back-shadow img{height:100%;width:100%;flex-shrink:0}.overview__container{z-index:2;position:relative;display:flex;align-items:center}.overview__progress-bar{height:var(--primary-profile-height, 15em)!important;width:var(--primary-profile-width, 15em)!important;flex-shrink:0;transition:all .5s}.overview__progress-bar--hidden .circle-progress__svg,.overview__progress-bar--hidden .circle-progress__image{opacity:0}.overview__comparison{display:flex;flex-direction:column;flex-grow:1;transform-origin:left center;margin:var(--secondary-profile-margin, 0 0 0 -10px)}.comparison__entity{font-family:Gilroy-Medium;display:flex;gap:1em}.comparison__label{display:flex;justify-content:center;align-items:center;max-width:10ch}.comparison__value{height:var(--match-percentage-value-height, 4em);width:var(--match-percentage-value-width, \"auto\");display:flex;align-items:center;justify-content:center}.comparison__value>span{font-size:var(--match-percentage-font-size, 3em)}.comparison__value>span.preferences{color:#fe3c72}.comparison__value>span.personality{color:#9c2b4b}.secondary-profile{margin-bottom:-5px}.secondary-profile__image{height:var(--secondary-profile-height, 7rem);width:var(--secondary-profile-width, 7rem);display:flex;align-items:center;margin-left:-3px}.default-empty-profile{padding:1px;border-radius:50%;background:radial-gradient(circle,#acacac 79%,#fff);display:flex;justify-content:center;align-items:center;position:relative;margin:0 10px}.default-empty-profile .loading-skeleton{position:absolute;top:0}.default-empty-profile .p-skeleton:after{background:linear-gradient(90deg,#fff0,#fff6,#fff0)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: CircleProgressModule }, { kind: "component", type: CircleProgressComponent, selector: "lib-circle-progress", inputs: ["variable", "config"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: SkeletonModule }, { kind: "component", type: i2$2.Skeleton, selector: "p-skeleton", inputs: ["styleClass", "shape", "animation", "borderRadius", "size", "width", "height"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.ShadowDom }); }
|
|
2877
|
+
}
|
|
2878
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibClientMatchOverviewComponent, decorators: [{
|
|
2879
|
+
type: Component,
|
|
2880
|
+
args: [{ selector: 'lib-client-match-overview', encapsulation: ViewEncapsulation.ShadowDom, changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule, CircleProgressModule, TranslateModule, SkeletonModule], template: "@if (!default && imageLoader$ | async) {\n <div class=\"overview\" [ngClass]=\"{ overview__expand: expand, overview__collapse: !expand }\">\n <div class=\"overview__container\">\n <lib-circle-progress\n class=\"overview__progress-bar\"\n [ngClass]=\"{ 'overview__progress-bar--hidden': hideProgressBar && !expand }\"\n [variable]=\"circleVariable.Partial\"\n [config]=\"circleOpts\"\n ></lib-circle-progress>\n <!-- details next to the circle image -->\n @if (expand) {\n <div class=\"overview__comparison comparison\">\n <div class=\"comparison__entity secondary-profile\">\n <div class=\"secondary-profile__image\">\n <svg width=\"100%\" height=\"100%\" viewBox=\"0 0 100 100\">\n <circle r=\"50\" cx=\"50\" cy=\"50\" fill=\"#28252D\" />\n <image [attr.mask]=\"'url(#' + imagePathId + ')'\" [attr.href]=\"overview.secondary.src\" height=\"80\" width=\"80\" x=\"10\" y=\"10\" />\n <defs>\n <mask [attr.id]=\"imagePathId\">\n <rect x=\"0\" y=\"0\" height=\"100\" width=\"100\" fill=\"black\" />\n <circle cx=\"50\" cy=\"50\" r=\"40\" fill=\"white\" />\n </mask>\n </defs>\n </svg>\n </div>\n <div class=\"comparison__label\">{{ overview.secondary.name }}</div>\n </div>\n <div class=\"comparison__entity\">\n <div class=\"comparison__value\">\n <span class=\"preferences\">{{ overview.preferences }}%</span>\n </div>\n <div class=\"comparison__label\">{{ 'CLIENT_MATCH_OVERVIEW.PREFERENCES_MATCH' | translate }}</div>\n </div>\n <div class=\"comparison__entity\">\n <div class=\"comparison__value\">\n <span class=\"personality\">{{ overview.personality }}%</span>\n </div>\n <div class=\"comparison__label\">{{ 'CLIENT_MATCH_OVERVIEW.PERSONALITY_MATCH' | translate }}</div>\n </div>\n </div>\n }\n </div>\n <!-- shadow on all the component (circle image and texts) -->\n @if (expand) {\n <div class=\"overview__back-shadow\">\n <img src=\"assets/client-match-overview/background-eclipse.svg\" />\n </div>\n }\n </div>\n} @else if (loading) {\n <div class=\"overview\" part=\"loading\">\n <div class=\"overview__container\">\n <div class=\"default-empty-profile\">\n <p-skeleton shape=\"circle\" size=\"3rem\" class=\"loading-skeleton\" />\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"34\" height=\"35\" viewBox=\"0 0 34 35\" fill=\"none\">\n <circle cx=\"17.0096\" cy=\"17.5439\" r=\"16.5945\" fill=\"#29252D\" />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M13.4843 18.2501C13.5008 18.2493 13.5174 18.2489 13.5339 18.2489H20.1384C20.1549 18.2489 20.1714 18.2493 20.188 18.2501C22.501 18.3649 24.5513 19.7726 25.4901 21.8878C26.1644 23.2368 25.7884 24.5724 24.9275 25.4921C24.0937 26.3827 22.802 26.9145 21.4595 26.9145H12.2127C10.8707 26.9145 9.57941 26.3825 8.74582 25.4921C7.88499 24.5726 7.50858 23.2372 8.182 21.888C9.12087 19.7726 11.1712 18.365 13.4843 18.2501ZM13.56 20.2486C12.0044 20.3346 10.6283 21.2884 10.0022 22.7165C9.99443 22.7342 9.98617 22.7517 9.97741 22.7689C9.72674 23.2609 9.82034 23.7138 10.2057 24.1253C10.6239 24.5721 11.367 24.9147 12.2127 24.9147H21.4595C22.3061 24.9147 23.0495 24.572 23.4675 24.1253C23.8527 23.7141 23.9461 23.2616 23.6951 22.7694C23.6863 22.7521 23.6779 22.7343 23.67 22.7165C23.044 21.2884 21.6679 20.3346 20.1122 20.2486H13.56Z\"\n fill=\"#5E5E5E\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M16.836 8.24993C15.1794 8.24993 13.8364 9.5929 13.8364 11.2495C13.8364 12.9062 15.1794 14.2492 16.836 14.2492C18.4927 14.2492 19.8356 12.9062 19.8356 11.2495C19.8356 10.454 19.5197 9.69103 18.9571 9.12849C18.3945 8.56595 17.6315 8.24993 16.836 8.24993ZM11.8367 11.2495C11.8367 8.48847 14.075 6.25018 16.836 6.25018C18.162 6.25018 19.4335 6.7769 20.3712 7.71446C21.3086 8.65202 21.8354 9.92363 21.8354 11.2495C21.8354 14.0107 19.5971 16.2489 16.836 16.2489C14.075 16.2489 11.8367 14.0107 11.8367 11.2495Z\"\n fill=\"#5E5E5E\"\n />\n </svg>\n </div>\n </div>\n </div>\n} @else if (default || !overview.primary) {\n <div class=\"overview\">\n <div class=\"overview__container\">\n <div class=\"default-empty-profile\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"34\" height=\"35\" viewBox=\"0 0 34 35\" fill=\"none\">\n <circle cx=\"17.0096\" cy=\"17.5439\" r=\"16.5945\" fill=\"#29252D\" />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M13.4843 18.2501C13.5008 18.2493 13.5174 18.2489 13.5339 18.2489H20.1384C20.1549 18.2489 20.1714 18.2493 20.188 18.2501C22.501 18.3649 24.5513 19.7726 25.4901 21.8878C26.1644 23.2368 25.7884 24.5724 24.9275 25.4921C24.0937 26.3827 22.802 26.9145 21.4595 26.9145H12.2127C10.8707 26.9145 9.57941 26.3825 8.74582 25.4921C7.88499 24.5726 7.50858 23.2372 8.182 21.888C9.12087 19.7726 11.1712 18.365 13.4843 18.2501ZM13.56 20.2486C12.0044 20.3346 10.6283 21.2884 10.0022 22.7165C9.99443 22.7342 9.98617 22.7517 9.97741 22.7689C9.72674 23.2609 9.82034 23.7138 10.2057 24.1253C10.6239 24.5721 11.367 24.9147 12.2127 24.9147H21.4595C22.3061 24.9147 23.0495 24.572 23.4675 24.1253C23.8527 23.7141 23.9461 23.2616 23.6951 22.7694C23.6863 22.7521 23.6779 22.7343 23.67 22.7165C23.044 21.2884 21.6679 20.3346 20.1122 20.2486H13.56Z\"\n fill=\"#5E5E5E\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M16.836 8.24993C15.1794 8.24993 13.8364 9.5929 13.8364 11.2495C13.8364 12.9062 15.1794 14.2492 16.836 14.2492C18.4927 14.2492 19.8356 12.9062 19.8356 11.2495C19.8356 10.454 19.5197 9.69103 18.9571 9.12849C18.3945 8.56595 17.6315 8.24993 16.836 8.24993ZM11.8367 11.2495C11.8367 8.48847 14.075 6.25018 16.836 6.25018C18.162 6.25018 19.4335 6.7769 20.3712 7.71446C21.3086 8.65202 21.8354 9.92363 21.8354 11.2495C21.8354 14.0107 19.5971 16.2489 16.836 16.2489C14.075 16.2489 11.8367 14.0107 11.8367 11.2495Z\"\n fill=\"#5E5E5E\"\n />\n </svg>\n </div>\n </div>\n </div>\n}\n", styles: [".zoom-in{animation:fadeZoomIn .5s ease-in-out}.zoom-out{animation:fadeZoomOut .5s ease-in-out}.zoom-out.collapse{display:none!important}@keyframes fadeZoomOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(0)}}@keyframes fadeZoomIn{0%{opacity:0;transform:scale(.5)}to{opacity:1;transform:scale(1)}}.hide{max-height:0;overflow:hidden;opacity:0;transition:max-height .8s ease-in-out,opacity .8s ease-in-out}.show{max-height:200px;opacity:1;transition:max-height .8s ease-in-out,opacity .8s ease-in-out}:host{font-size:clamp(0px,var(--component-size, 1.5dvw),.75rem)}.overview{overflow:hidden;width:100%;max-width:var(--card-width, 100%);display:block;position:relative}.overview__collapse{--card-width: 15em}.overview__expand{--card-width: 100%}.overview__back-shadow{position:absolute;top:-15%;left:0%;height:130%;width:120%;display:flex;justify-content:center;z-index:0}.overview__back-shadow img{height:100%;width:100%;flex-shrink:0}.overview__container{z-index:2;position:relative;display:flex;align-items:center}.overview__progress-bar{height:var(--primary-profile-height, 15em)!important;width:var(--primary-profile-width, 15em)!important;flex-shrink:0;transition:all .5s}.overview__progress-bar--hidden .circle-progress__svg,.overview__progress-bar--hidden .circle-progress__image{opacity:0}.overview__comparison{display:flex;flex-direction:column;flex-grow:1;transform-origin:left center;margin:var(--secondary-profile-margin, 0 0 0 -10px)}.comparison__entity{font-family:Gilroy-Medium;display:flex;gap:1em}.comparison__label{display:flex;justify-content:center;align-items:center;max-width:10ch}.comparison__value{height:var(--match-percentage-value-height, 4em);width:var(--match-percentage-value-width, \"auto\");display:flex;align-items:center;justify-content:center}.comparison__value>span{font-size:var(--match-percentage-font-size, 3em)}.comparison__value>span.preferences{color:#fe3c72}.comparison__value>span.personality{color:#9c2b4b}.secondary-profile{margin-bottom:-5px}.secondary-profile__image{height:var(--secondary-profile-height, 7rem);width:var(--secondary-profile-width, 7rem);display:flex;align-items:center;margin-left:-3px}.default-empty-profile{padding:1px;border-radius:50%;background:radial-gradient(circle,#acacac 79%,#fff);display:flex;justify-content:center;align-items:center;position:relative;margin:0 10px}.default-empty-profile .loading-skeleton{position:absolute;top:0}.default-empty-profile .p-skeleton:after{background:linear-gradient(90deg,#fff0,#fff6,#fff0)}\n"] }]
|
|
2881
|
+
}], propDecorators: { overview: [{
|
|
2882
|
+
type: Input,
|
|
2883
|
+
args: [{ required: true }]
|
|
2884
|
+
}], meta: [{
|
|
2885
|
+
type: Input
|
|
2886
|
+
}], expand: [{
|
|
2887
|
+
type: Input
|
|
2888
|
+
}], loading: [{
|
|
2889
|
+
type: Input
|
|
2890
|
+
}], default: [{
|
|
2891
|
+
type: Input
|
|
2892
|
+
}], hideProgressBar: [{
|
|
2893
|
+
type: Input
|
|
2894
|
+
}], partialColors: [{
|
|
2895
|
+
type: Input
|
|
2896
|
+
}], showExternalPartialCircleProgress: [{
|
|
2897
|
+
type: Input
|
|
2898
|
+
}], maxValue: [{
|
|
2899
|
+
type: Input
|
|
2900
|
+
}], enableChangeOverview: [{
|
|
2901
|
+
type: Input
|
|
2902
|
+
}], sendConversationFlag: [{
|
|
2903
|
+
type: Output
|
|
2904
|
+
}] } });
|
|
2917
2905
|
|
|
2918
2906
|
class IsStatusIncludedPipe {
|
|
2919
2907
|
transform(status, index) {
|
|
@@ -3031,6 +3019,26 @@ const circleData = [
|
|
|
3031
3019
|
filter: 'url(#innerWhiteCircleBlurEffect)',
|
|
3032
3020
|
},
|
|
3033
3021
|
];
|
|
3022
|
+
|
|
3023
|
+
const defsF = [
|
|
3024
|
+
{
|
|
3025
|
+
id: 'innerCircleBlurEffect',
|
|
3026
|
+
x: '-40%',
|
|
3027
|
+
y: '-40%',
|
|
3028
|
+
height: '200%',
|
|
3029
|
+
width: '200%',
|
|
3030
|
+
feGaussianTags: [{ in: 'SourceGraphic', stdDeviation: '12' }],
|
|
3031
|
+
},
|
|
3032
|
+
{
|
|
3033
|
+
id: 'innerWhiteCircleBlurEffect',
|
|
3034
|
+
x: '-40%',
|
|
3035
|
+
y: '-40%',
|
|
3036
|
+
height: '200%',
|
|
3037
|
+
width: '200%',
|
|
3038
|
+
feGaussianTags: [{ in: 'SourceGraphic', stdDeviation: '10' }],
|
|
3039
|
+
},
|
|
3040
|
+
];
|
|
3041
|
+
|
|
3034
3042
|
const defsLG = [
|
|
3035
3043
|
{
|
|
3036
3044
|
id: 'circleBorderRadiant',
|
|
@@ -3068,24 +3076,7 @@ const defsLG = [
|
|
|
3068
3076
|
],
|
|
3069
3077
|
},
|
|
3070
3078
|
];
|
|
3071
|
-
|
|
3072
|
-
{
|
|
3073
|
-
id: 'innerCircleBlurEffect',
|
|
3074
|
-
x: '-40%',
|
|
3075
|
-
y: '-40%',
|
|
3076
|
-
height: '200%',
|
|
3077
|
-
width: '200%',
|
|
3078
|
-
feGaussianTags: [{ in: 'SourceGraphic', stdDeviation: '12' }],
|
|
3079
|
-
},
|
|
3080
|
-
{
|
|
3081
|
-
id: 'innerWhiteCircleBlurEffect',
|
|
3082
|
-
x: '-40%',
|
|
3083
|
-
y: '-40%',
|
|
3084
|
-
height: '200%',
|
|
3085
|
-
width: '200%',
|
|
3086
|
-
feGaussianTags: [{ in: 'SourceGraphic', stdDeviation: '10' }],
|
|
3087
|
-
},
|
|
3088
|
-
];
|
|
3079
|
+
|
|
3089
3080
|
const defsRG = [
|
|
3090
3081
|
{
|
|
3091
3082
|
id: 'innerCircleRadialEffect',
|
|
@@ -3586,192 +3577,70 @@ class LibDashboardSwipeableTabsComponent {
|
|
|
3586
3577
|
Object.assign(this.thumbSwiper.nativeElement, swiperParams);
|
|
3587
3578
|
this.thumbSwiper.nativeElement.initialize();
|
|
3588
3579
|
}
|
|
3589
|
-
initMainSwiper() {
|
|
3590
|
-
const ref = this;
|
|
3591
|
-
const swiperParams = {
|
|
3592
|
-
...this.mainSwiperOptions,
|
|
3593
|
-
initialSlide: this.activeIndex,
|
|
3594
|
-
autoHeight: true,
|
|
3595
|
-
thumbs: {
|
|
3596
|
-
swiper: this.thumbsSwiperInstance,
|
|
3597
|
-
},
|
|
3598
|
-
on: {
|
|
3599
|
-
init(swiper) {
|
|
3600
|
-
ref.mainSwiperInstance = swiper;
|
|
3601
|
-
},
|
|
3602
|
-
slideChange(swiper) {
|
|
3603
|
-
if (ref.activeIndex !== swiper?.activeIndex) {
|
|
3604
|
-
ref.activeIndex = swiper?.activeIndex;
|
|
3605
|
-
ref.activeIndexChange.emit(swiper?.activeIndex);
|
|
3606
|
-
}
|
|
3607
|
-
},
|
|
3608
|
-
},
|
|
3609
|
-
};
|
|
3610
|
-
Object.assign(this.mainSwiper.nativeElement, swiperParams);
|
|
3611
|
-
this.mainSwiper.nativeElement.initialize();
|
|
3612
|
-
requestAnimationFrame(() => {
|
|
3613
|
-
ref.mainSwiperInstance?.update();
|
|
3614
|
-
ref.thumbsSwiperInstance?.update();
|
|
3615
|
-
});
|
|
3616
|
-
}
|
|
3617
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibDashboardSwipeableTabsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3618
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.14", type: LibDashboardSwipeableTabsComponent, isStandalone: true, selector: "lib-dashboard-swipeable-tabs", inputs: { thumbsSwiperOptions: "thumbsSwiperOptions", mainSwiperOptions: "mainSwiperOptions", activeIndex: "activeIndex", bottomThumbs: "bottomThumbs", slideContentMaxHeight: "slideContentMaxHeight", mainSwiperHeight: "mainSwiperHeight", subMainSwiperHeight: "subMainSwiperHeight", thumbsSwiperHeight: "thumbsSwiperHeight", generalSwiperHeight: "generalSwiperHeight" }, outputs: { activeIndexChange: "activeIndexChange" }, queries: [{ propertyName: "thumbSlides", first: true, predicate: ["thumbSlides"], descendants: true }], viewQueries: [{ propertyName: "thumbSwiper", first: true, predicate: ["thumbSwiper"], descendants: true }, { propertyName: "mainSwiper", first: true, predicate: ["mainSwiper"], descendants: true }], ngImport: i0, template: "<div class=\"swipeable-tabs-container\" [class.bottom-thumbs]=\"bottomThumbs\" [ngStyle]=\"{ height: generalSwiperHeight }\">\n <!-- Thumbnail Swiper -->\n <swiper-container #thumbSwiper init=\"false\" class=\"thumb-swiper container-sides-shadow\" [ngStyle]=\"{ height: thumbsSwiperHeight }\">\n <ng-content select=\"[thumb-slides]\"></ng-content>\n </swiper-container>\n\n <!-- Main Swiper -->\n <div class=\"swiper-container\" class=\"main-swiper\" [style.max-height]=\"slideContentMaxHeight\" [ngStyle]=\"{ height: mainSwiperHeight }\">\n <swiper-container #mainSwiper init=\"false\" class=\"main-swiper\" [class.container-sides-shadow]=\"activeIndex !== 0\" [ngStyle]=\"{ height: subMainSwiperHeight }\">\n <ng-content select=\"[main-slides]\"></ng-content>\n </swiper-container>\n </div>\n</div>\n", styles: [".swipeable-tabs-container{position:relative;display:flex;width:100%;flex-direction:column}.swipeable-tabs-container.bottom-thumbs{flex-direction:column-reverse}.swipeable-tabs-container swiper-container{position:relative;display:block;overflow:auto;width:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: TranslateModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
3619
|
-
}
|
|
3620
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibDashboardSwipeableTabsComponent, decorators: [{
|
|
3621
|
-
type: Component,
|
|
3622
|
-
args: [{ selector: 'lib-dashboard-swipeable-tabs', imports: [CommonModule, TranslateModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"swipeable-tabs-container\" [class.bottom-thumbs]=\"bottomThumbs\" [ngStyle]=\"{ height: generalSwiperHeight }\">\n <!-- Thumbnail Swiper -->\n <swiper-container #thumbSwiper init=\"false\" class=\"thumb-swiper container-sides-shadow\" [ngStyle]=\"{ height: thumbsSwiperHeight }\">\n <ng-content select=\"[thumb-slides]\"></ng-content>\n </swiper-container>\n\n <!-- Main Swiper -->\n <div class=\"swiper-container\" class=\"main-swiper\" [style.max-height]=\"slideContentMaxHeight\" [ngStyle]=\"{ height: mainSwiperHeight }\">\n <swiper-container #mainSwiper init=\"false\" class=\"main-swiper\" [class.container-sides-shadow]=\"activeIndex !== 0\" [ngStyle]=\"{ height: subMainSwiperHeight }\">\n <ng-content select=\"[main-slides]\"></ng-content>\n </swiper-container>\n </div>\n</div>\n", styles: [".swipeable-tabs-container{position:relative;display:flex;width:100%;flex-direction:column}.swipeable-tabs-container.bottom-thumbs{flex-direction:column-reverse}.swipeable-tabs-container swiper-container{position:relative;display:block;overflow:auto;width:100%}\n"] }]
|
|
3623
|
-
}], propDecorators: { thumbSwiper: [{
|
|
3624
|
-
type: ViewChild,
|
|
3625
|
-
args: ['thumbSwiper', { static: false }]
|
|
3626
|
-
}], mainSwiper: [{
|
|
3627
|
-
type: ViewChild,
|
|
3628
|
-
args: ['mainSwiper', { static: false }]
|
|
3629
|
-
}], thumbSlides: [{
|
|
3630
|
-
type: ContentChild,
|
|
3631
|
-
args: ['thumbSlides', { static: false }]
|
|
3632
|
-
}], thumbsSwiperOptions: [{
|
|
3633
|
-
type: Input
|
|
3634
|
-
}], mainSwiperOptions: [{
|
|
3635
|
-
type: Input
|
|
3636
|
-
}], activeIndex: [{
|
|
3637
|
-
type: Input
|
|
3638
|
-
}], bottomThumbs: [{
|
|
3639
|
-
type: Input
|
|
3640
|
-
}], slideContentMaxHeight: [{
|
|
3641
|
-
type: Input
|
|
3642
|
-
}], mainSwiperHeight: [{
|
|
3643
|
-
type: Input
|
|
3644
|
-
}], subMainSwiperHeight: [{
|
|
3645
|
-
type: Input
|
|
3646
|
-
}], thumbsSwiperHeight: [{
|
|
3647
|
-
type: Input
|
|
3648
|
-
}], generalSwiperHeight: [{
|
|
3649
|
-
type: Input
|
|
3650
|
-
}], activeIndexChange: [{
|
|
3651
|
-
type: Output
|
|
3652
|
-
}] } });
|
|
3653
|
-
|
|
3654
|
-
var ClientHomeComponent;
|
|
3655
|
-
(function (ClientHomeComponent) {
|
|
3656
|
-
ClientHomeComponent["ChatCompatibility"] = "ChatCompatibility";
|
|
3657
|
-
ClientHomeComponent["ChatHandoff"] = "ChatHandoff";
|
|
3658
|
-
ClientHomeComponent["ChatScheduler"] = "ChatScheduler";
|
|
3659
|
-
ClientHomeComponent["ClientMatchSpiderChart"] = "ClientMatchSpiderChart";
|
|
3660
|
-
ClientHomeComponent["ClientMatchTraitChart"] = "ClientMatchTraitChart";
|
|
3661
|
-
})(ClientHomeComponent || (ClientHomeComponent = {}));
|
|
3662
|
-
|
|
3663
|
-
const defaultClientHomeConfig = {
|
|
3664
|
-
loading: {
|
|
3665
|
-
clientMatches: true,
|
|
3666
|
-
},
|
|
3667
|
-
default: false,
|
|
3668
|
-
component: ClientHomeComponent.ChatHandoff,
|
|
3669
|
-
activeIndex: 0,
|
|
3670
|
-
slideContentMaxHeight: 'auto',
|
|
3671
|
-
clientMatches$: of([]),
|
|
3672
|
-
schedulers$: of([]),
|
|
3673
|
-
polygonColors: [],
|
|
3674
|
-
spiderConfig: null,
|
|
3675
|
-
bottomThumbs: true,
|
|
3676
|
-
includeTime: true,
|
|
3677
|
-
maxLength: 300,
|
|
3678
|
-
includeGifMessage: true,
|
|
3679
|
-
startDate: new Date(),
|
|
3680
|
-
endDate: endOfDay(addDays(new Date(), 6)),
|
|
3681
|
-
emptyMessage: '',
|
|
3682
|
-
displayBookedStatuses: false,
|
|
3683
|
-
displayEmptyDays: true,
|
|
3684
|
-
loading$: of(false),
|
|
3685
|
-
alertStatus: {},
|
|
3686
|
-
showValueProportionLabel: false,
|
|
3687
|
-
hideProgressBar: false,
|
|
3688
|
-
};
|
|
3689
|
-
|
|
3690
|
-
class ChatMetaPipe {
|
|
3691
|
-
transform(clientMatches$, prospectId) {
|
|
3692
|
-
return clientMatches$?.pipe(map((clientMatches) => clientMatches.map((c) => c.prospectData)), map((chats) => {
|
|
3693
|
-
const chat = chats.find((c) => c.prospectId === prospectId);
|
|
3694
|
-
if (!chat || chat.messages.length === 0) {
|
|
3695
|
-
return {
|
|
3696
|
-
lastResponseTimestamp: null,
|
|
3697
|
-
firstAnswer: false,
|
|
3698
|
-
waitingAnswer: false,
|
|
3699
|
-
conversationFlags: chat?.conversationFlags,
|
|
3700
|
-
};
|
|
3701
|
-
}
|
|
3702
|
-
// --- one forward/backward scan, no extra arrays ---
|
|
3703
|
-
let lastUserIndex = -1;
|
|
3704
|
-
for (let i = chat.messages.length - 1; i >= 0; i--) {
|
|
3705
|
-
if (chat.messages[i].sender === SenderTypes.USER) {
|
|
3706
|
-
lastUserIndex = i;
|
|
3707
|
-
break;
|
|
3708
|
-
}
|
|
3709
|
-
}
|
|
3710
|
-
let firstProspectMessageAfterMe = null;
|
|
3711
|
-
let waitingAnswer = false;
|
|
3712
|
-
if (lastUserIndex !== -1) {
|
|
3713
|
-
for (let i = lastUserIndex + 1; i < chat.messages.length; i++) {
|
|
3714
|
-
if (chat.messages[i].sender === SenderTypes.OTHER) {
|
|
3715
|
-
firstProspectMessageAfterMe = chat.messages[i].timestamp;
|
|
3716
|
-
waitingAnswer = true; // prospect wrote last → waiting
|
|
3717
|
-
break;
|
|
3718
|
-
}
|
|
3719
|
-
}
|
|
3720
|
-
}
|
|
3721
|
-
if (!waitingAnswer) {
|
|
3722
|
-
// Either I haven't written, or I wrote last
|
|
3723
|
-
const lastMsg = chat.messages[chat.messages.length - 1];
|
|
3724
|
-
waitingAnswer = !!lastMsg && lastMsg.sender === SenderTypes.OTHER && lastUserIndex === -1;
|
|
3725
|
-
}
|
|
3726
|
-
return {
|
|
3727
|
-
lastResponseTimestamp: firstProspectMessageAfterMe,
|
|
3728
|
-
firstAnswer: lastUserIndex !== -1,
|
|
3729
|
-
waitingAnswer,
|
|
3730
|
-
conversationFlags: chat.conversationFlags,
|
|
3731
|
-
};
|
|
3732
|
-
}));
|
|
3733
|
-
}
|
|
3734
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ChatMetaPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
3735
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.14", ngImport: i0, type: ChatMetaPipe, isStandalone: true, name: "chatMeta" }); }
|
|
3736
|
-
}
|
|
3737
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ChatMetaPipe, decorators: [{
|
|
3738
|
-
type: Pipe,
|
|
3739
|
-
args: [{
|
|
3740
|
-
name: 'chatMeta',
|
|
3741
|
-
standalone: true,
|
|
3742
|
-
pure: true, // default, but being explicit
|
|
3743
|
-
}]
|
|
3744
|
-
}] });
|
|
3745
|
-
|
|
3746
|
-
class GetColorByMatcherPipe {
|
|
3747
|
-
transform(match, config) {
|
|
3748
|
-
const defaultColors = progressDefaultColors;
|
|
3749
|
-
if (!config?.spiderConfig?.datasets?.length) {
|
|
3750
|
-
return defaultColors;
|
|
3751
|
-
}
|
|
3752
|
-
const currentMatch = config.spiderConfig.datasets.find((ma) => ma.title === match.primary?.name || ma.title === match.secondary?.name);
|
|
3753
|
-
return currentMatch
|
|
3754
|
-
? {
|
|
3755
|
-
primary: currentMatch.polygon_color.value,
|
|
3756
|
-
secondary: currentMatch.polygon_color.value,
|
|
3757
|
-
tertiary: currentMatch.polygon_color.value,
|
|
3758
|
-
gradientPrimary: currentMatch.polygon_color.value,
|
|
3759
|
-
gradientSecondary: currentMatch.polygon_color.value,
|
|
3760
|
-
complete: currentMatch.polygon_color.value,
|
|
3761
|
-
incomplete: currentMatch.polygon_color.value,
|
|
3762
|
-
}
|
|
3763
|
-
: defaultColors;
|
|
3580
|
+
initMainSwiper() {
|
|
3581
|
+
const ref = this;
|
|
3582
|
+
const swiperParams = {
|
|
3583
|
+
...this.mainSwiperOptions,
|
|
3584
|
+
initialSlide: this.activeIndex,
|
|
3585
|
+
autoHeight: true,
|
|
3586
|
+
thumbs: {
|
|
3587
|
+
swiper: this.thumbsSwiperInstance,
|
|
3588
|
+
},
|
|
3589
|
+
on: {
|
|
3590
|
+
init(swiper) {
|
|
3591
|
+
ref.mainSwiperInstance = swiper;
|
|
3592
|
+
},
|
|
3593
|
+
slideChange(swiper) {
|
|
3594
|
+
if (ref.activeIndex !== swiper?.activeIndex) {
|
|
3595
|
+
ref.activeIndex = swiper?.activeIndex;
|
|
3596
|
+
ref.activeIndexChange.emit(swiper?.activeIndex);
|
|
3597
|
+
}
|
|
3598
|
+
},
|
|
3599
|
+
},
|
|
3600
|
+
};
|
|
3601
|
+
Object.assign(this.mainSwiper.nativeElement, swiperParams);
|
|
3602
|
+
this.mainSwiper.nativeElement.initialize();
|
|
3603
|
+
requestAnimationFrame(() => {
|
|
3604
|
+
ref.mainSwiperInstance?.update();
|
|
3605
|
+
ref.thumbsSwiperInstance?.update();
|
|
3606
|
+
});
|
|
3764
3607
|
}
|
|
3765
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type:
|
|
3766
|
-
static { this.ɵ
|
|
3608
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibDashboardSwipeableTabsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3609
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.14", type: LibDashboardSwipeableTabsComponent, isStandalone: true, selector: "lib-dashboard-swipeable-tabs", inputs: { thumbsSwiperOptions: "thumbsSwiperOptions", mainSwiperOptions: "mainSwiperOptions", activeIndex: "activeIndex", bottomThumbs: "bottomThumbs", slideContentMaxHeight: "slideContentMaxHeight", mainSwiperHeight: "mainSwiperHeight", subMainSwiperHeight: "subMainSwiperHeight", thumbsSwiperHeight: "thumbsSwiperHeight", generalSwiperHeight: "generalSwiperHeight" }, outputs: { activeIndexChange: "activeIndexChange" }, queries: [{ propertyName: "thumbSlides", first: true, predicate: ["thumbSlides"], descendants: true }], viewQueries: [{ propertyName: "thumbSwiper", first: true, predicate: ["thumbSwiper"], descendants: true }, { propertyName: "mainSwiper", first: true, predicate: ["mainSwiper"], descendants: true }], ngImport: i0, template: "<div class=\"swipeable-tabs-container\" [class.bottom-thumbs]=\"bottomThumbs\" [ngStyle]=\"{ height: generalSwiperHeight }\">\n <!-- Thumbnail Swiper -->\n <swiper-container #thumbSwiper init=\"false\" class=\"thumb-swiper container-sides-shadow\" [ngStyle]=\"{ height: thumbsSwiperHeight }\">\n <ng-content select=\"[thumb-slides]\"></ng-content>\n </swiper-container>\n\n <!-- Main Swiper -->\n <div class=\"swiper-container\" class=\"main-swiper\" [style.max-height]=\"slideContentMaxHeight\" [ngStyle]=\"{ height: mainSwiperHeight }\">\n <swiper-container #mainSwiper init=\"false\" class=\"main-swiper\" [class.container-sides-shadow]=\"activeIndex !== 0\" [ngStyle]=\"{ height: subMainSwiperHeight }\">\n <ng-content select=\"[main-slides]\"></ng-content>\n </swiper-container>\n </div>\n</div>\n", styles: [".swipeable-tabs-container{position:relative;display:flex;width:100%;flex-direction:column}.swipeable-tabs-container.bottom-thumbs{flex-direction:column-reverse}.swipeable-tabs-container swiper-container{position:relative;display:block;overflow:auto;width:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: TranslateModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
3767
3610
|
}
|
|
3768
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type:
|
|
3769
|
-
type:
|
|
3770
|
-
args: [{
|
|
3771
|
-
|
|
3772
|
-
|
|
3773
|
-
}]
|
|
3774
|
-
|
|
3611
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibDashboardSwipeableTabsComponent, decorators: [{
|
|
3612
|
+
type: Component,
|
|
3613
|
+
args: [{ selector: 'lib-dashboard-swipeable-tabs', imports: [CommonModule, TranslateModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"swipeable-tabs-container\" [class.bottom-thumbs]=\"bottomThumbs\" [ngStyle]=\"{ height: generalSwiperHeight }\">\n <!-- Thumbnail Swiper -->\n <swiper-container #thumbSwiper init=\"false\" class=\"thumb-swiper container-sides-shadow\" [ngStyle]=\"{ height: thumbsSwiperHeight }\">\n <ng-content select=\"[thumb-slides]\"></ng-content>\n </swiper-container>\n\n <!-- Main Swiper -->\n <div class=\"swiper-container\" class=\"main-swiper\" [style.max-height]=\"slideContentMaxHeight\" [ngStyle]=\"{ height: mainSwiperHeight }\">\n <swiper-container #mainSwiper init=\"false\" class=\"main-swiper\" [class.container-sides-shadow]=\"activeIndex !== 0\" [ngStyle]=\"{ height: subMainSwiperHeight }\">\n <ng-content select=\"[main-slides]\"></ng-content>\n </swiper-container>\n </div>\n</div>\n", styles: [".swipeable-tabs-container{position:relative;display:flex;width:100%;flex-direction:column}.swipeable-tabs-container.bottom-thumbs{flex-direction:column-reverse}.swipeable-tabs-container swiper-container{position:relative;display:block;overflow:auto;width:100%}\n"] }]
|
|
3614
|
+
}], propDecorators: { thumbSwiper: [{
|
|
3615
|
+
type: ViewChild,
|
|
3616
|
+
args: ['thumbSwiper', { static: false }]
|
|
3617
|
+
}], mainSwiper: [{
|
|
3618
|
+
type: ViewChild,
|
|
3619
|
+
args: ['mainSwiper', { static: false }]
|
|
3620
|
+
}], thumbSlides: [{
|
|
3621
|
+
type: ContentChild,
|
|
3622
|
+
args: ['thumbSlides', { static: false }]
|
|
3623
|
+
}], thumbsSwiperOptions: [{
|
|
3624
|
+
type: Input
|
|
3625
|
+
}], mainSwiperOptions: [{
|
|
3626
|
+
type: Input
|
|
3627
|
+
}], activeIndex: [{
|
|
3628
|
+
type: Input
|
|
3629
|
+
}], bottomThumbs: [{
|
|
3630
|
+
type: Input
|
|
3631
|
+
}], slideContentMaxHeight: [{
|
|
3632
|
+
type: Input
|
|
3633
|
+
}], mainSwiperHeight: [{
|
|
3634
|
+
type: Input
|
|
3635
|
+
}], subMainSwiperHeight: [{
|
|
3636
|
+
type: Input
|
|
3637
|
+
}], thumbsSwiperHeight: [{
|
|
3638
|
+
type: Input
|
|
3639
|
+
}], generalSwiperHeight: [{
|
|
3640
|
+
type: Input
|
|
3641
|
+
}], activeIndexChange: [{
|
|
3642
|
+
type: Output
|
|
3643
|
+
}] } });
|
|
3775
3644
|
|
|
3776
3645
|
class LibClientHomeComponent {
|
|
3777
3646
|
constructor(cdr) {
|
|
@@ -3941,7 +3810,7 @@ class LibClientHomeComponent {
|
|
|
3941
3810
|
];
|
|
3942
3811
|
}
|
|
3943
3812
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibClientHomeComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3944
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.14", type: LibClientHomeComponent, isStandalone: true, selector: "lib-client-home", inputs: { config: "config" }, outputs: { activeIndexChange: "activeIndexChange", addMessage: "addMessage", getMessages: "getMessages", bookEvent: "bookEvent", removeSuggestion: "removeSuggestion", handleAppearPopup: "handleAppearPopup" }, ngImport: i0, template: "<div class=\"client-home\">\n @if (components.ClientMatchSpiderChart === config?.component) {\n <lib-spider-chart\n [datasets]=\"config.spiderConfig?.datasets\"\n [config]=\"config?.spiderConfig\"\n [polygon_colors]=\"config?.polygonColors\"\n [showChartInfo]=\"false\"\n ></lib-spider-chart>\n } @else if (components.ClientMatchTraitChart === config?.component) {\n <div class=\"trait-visual-container\">\n <tv-trait-visual\n [nodeData]=\"traitVisualNodes\"\n [attributeWeights]=\"traitVisualAttrWeights\"\n [preferenceWeights]=\"traitVisualPrefWeights\"\n ></tv-trait-visual>\n </div>\n }\n\n <lib-dashboard-swipeable-tabs\n [activeIndex]=\"config?.activeIndex\"\n [slideContentMaxHeight]=\"config?.slideContentMaxHeight\"\n [thumbsSwiperOptions]=\"{\n virtual: {\n enabled: clientMatches?.length > 5,\n addSlidesAfter: 8,\n addSlidesBefore: 8,\n cache: true,\n },\n slidesPerView: 'auto',\n grabCursor: true,\n centeredSlides: false,\n freeMode: {\n enabled: true,\n sticky: true,\n },\n observer: true,\n observeParents: true,\n }\"\n [mainSwiperOptions]=\"{\n virtual: {\n enabled: clientMatches?.length > 5,\n addSlidesAfter: 2,\n addSlidesBefore: 2,\n cache: true,\n },\n centeredSlides: true,\n grabCursor: true,\n keyboard: { enabled: true, onlyInViewport: false },\n effect: 'coverflow',\n spaceBetween: 5,\n coverflowEffect: {\n rotate: 0,\n slideShadows: false,\n scale: 0.9,\n },\n observer: true,\n observeParents: true,\n }\"\n [bottomThumbs]=\"config?.bottomThumbs\"\n [generalSwiperHeight]=\"'100%'\"\n [enableMainSwiper]=\"true\"\n (activeIndexChange)=\"onActiveIndexChange($event)\"\n *ngIf=\"(config?.loading$ | async) !== true || config?.default; else empty\"\n >\n <ng-container thumb-slides>\n @if (config.default || !clientMatches?.length) {\n @for (match of defaultNumberOfItems; let i = $index; track match) {\n <swiper-slide>\n <lib-client-match-overview\n [overview]=\"{}\"\n [expand]=\"0\"\n [class.lib-client-match-overview-expand]=\"true\"\n (click)=\"(null)\"\n [partialColors]=\"null\"\n [default]=\"config.default\"\n [showValueProportionLabel]=\"false\"\n [hideProgressBar]=\"false\"\n ></lib-client-match-overview>\n </swiper-slide>\n }\n } @else {\n @for (match of clientMatches; let i = $index; track match._id) {\n <swiper-slide>\n @if (config?.chatAdsTemplate && i === 0) {\n <ng-container *ngTemplateOutlet=\"config?.chatAdsTemplate\"></ng-container>\n }\n <lib-client-match-overview\n [overview]=\"match\"\n [expand]=\"config?.activeIndex === i\"\n [class.lib-client-match-overview-expand]=\"config?.activeIndex === i\"\n [partialColors]=\"match | getColorByMatcher: config\"\n [loading]=\"config?.loading?.clientMatches\"\n [showValueProportionLabel]=\"config?.showValueProportionLabel\"\n [hideProgressBar]=\"config?.hideProgressBar\"\n [meta]=\"config?.clientMatches$ | chatMeta: match._id | async\"\n ></lib-client-match-overview>\n </swiper-slide>\n }\n }\n </ng-container>\n <ng-container main-slides>\n @switch (config?.component) {\n @case (components.ChatScheduler) {\n @if (config.default || !(config?.schedulers$ | async)?.length) {\n @for (item of defaultNumberOfItems; track $index) {\n <swiper-slide class=\"scheduler\">\n <div class=\"slide-content without-shadow\">\n <lib-scheduler [loading$]=\"config?.loading$\" [default]=\"config.default\" [adsTemplate]=\"config?.schedulerAdsTemplate\" style=\"width: 100%\"></lib-scheduler>\n </div>\n </swiper-slide>\n }\n } @else {\n @for (scheduler of config?.schedulers$ | async; let i = $index; track scheduler) {\n <swiper-slide class=\"scheduler\">\n <div class=\"slide-content without-shadow\">\n <lib-scheduler\n [adsTemplate]=\"config?.schedulerAdsTemplate\"\n [events$]=\"scheduler.events$\"\n [loading$]=\"config?.loading$\"\n (bookEvent)=\"bookEvent.emit($event, scheduler.matchRequest)\"\n (removeSuggestion)=\"removeSuggestion.emit($event)\"\n ></lib-scheduler>\n </div>\n </swiper-slide>\n }\n }\n }\n @case (components.ChatHandoff) {\n @if (config.default || !(config?.clientMatches$ | async)?.length) {\n @for (chat of defaultNumberOfItems; let i = $index; track chat) {\n <swiper-slide class=\"chat\">\n <lib-matcher-statuses\n [inputValue]=\"config.chatInputValue\"\n [messages]=\"chat?.messages || []\"\n (sendMessage)=\"addMessageEmit($event, chat.prospectId, {})\"\n (getMessages)=\"getMessages.emit()\"\n [maxLength]=\"maxLength\"\n [responseTime]=\"chat?.prospectResponseTime || ''\"\n [hideStatuses]=\"config.hideStatuses\"\n ></lib-matcher-statuses>\n </swiper-slide>\n }\n } @else {\n @for (clientMatch of config?.clientMatches$ | async; let i = $index; track clientMatch.prospectData.prospectId) {\n <swiper-slide class=\"chat\">\n <div class=\"slide-content\">\n <lib-matcher-statuses\n [status]=\"clientMatch.prospectData.status\"\n [adsTemplate]=\"config?.chatTabAdsTemplate\"\n [inputValue]=\"config.chatInputValue\"\n [messages]=\"clientMatch.prospectData?.messages || []\"\n [includeTime]=\"config?.includeTime\"\n [includeGifMessage]=\"config?.includeGifMessage\"\n (getMessages)=\"getMessages.emit()\"\n [maxLength]=\"config?.maxLength\"\n [responseTime]=\"clientMatch.prospectData.prospectResponseTime\"\n (sendMessage)=\"addMessageEmit($event, clientMatch.prospectData.prospectId, clientMatch.matchRequest)\"\n [hideStatuses]=\"config.hideStatuses\"\n [prospectJoinDate]=\"clientMatch.prospectData.prospectJoinDate\"\n ></lib-matcher-statuses>\n </div>\n </swiper-slide>\n }\n }\n }\n }\n </ng-container>\n </lib-dashboard-swipeable-tabs>\n\n <ng-template #empty>\n <lib-section-separator></lib-section-separator>\n <div class=\"messsage f-lg f-gilroy-regular\">{{ emptyMessage }}</div>\n </ng-template>\n</div>\n", styles: [":host{--match-percentage-font-size: 1.5em;--container-sides-shadow-width: 15px;--match-percentage-value-height: 3em;position:relative}.messsage{margin-bottom:40px}.padding-20{padding:20px!important}.client-home{height:100%}swiper-slide{display:flex;overflow:hidden;position:relative;align-items:center;min-height:120px}swiper-slide.chat.swiper-slide-next,swiper-slide.chat.swiper-slide-prev{opacity:.5}swiper-slide.chat.swiper-slide-next:before,swiper-slide.chat.swiper-slide-prev:before{content:\"\";position:absolute;top:0;left:0;width:100%;height:100%;background:gray;opacity:.4;border-radius:10px}lib-client-match-overview{cursor:pointer}lib-client-match-overview:not(.lib-client-match-overview-expand){--lib-circle-progress-height: 65%;--lib-circle-progress-width: 65%;--primary-profile-height: 7em;--primary-profile-width: 7em;margin:auto 6px}lib-client-match-overview.lib-client-match-overview-expand{--primary-profile-height: 11em;--primary-profile-width: 11em;--secondary-profile-height: 3em;--secondary-profile-width: 3em}.slide-content{height:auto;width:100%;position:relative;display:block;overflow:visible;padding:0 5px}.slide-content:not(.without-shadow){border-radius:10px;box-shadow:5.70371px 5.70371px 11.40741px #00000052 inset,-3.42222px -3.42222px 4.56296px #ffffff1a inset}.slide-content:has(lib-chat){padding:0}.slide-content lib-chat{--max-width-container: 100%}.slide-content .status-list{position:absolute;top:.9em;left:.5em;display:flex;flex-direction:column;gap:.32em}lib-client-match-overview{--secondary-profile-margin: 0 0 0 -5px}@media (min-width: 350px){.left-side{left:0!important}}@media (max-width: 768px){swiper-slide{min-height:80px}}@media (max-width: 768px){swiper-slide{min-height:80px}lib-client-match-overview{--secondary-profile-margin: 0 0 0 -5px}.trait-visual-container{display:flex;justify-content:center;align-items:center;width:100%;height:100%;min-height:240px}.trait-visual-container tv-trait-visual{width:100%;height:100%;max-width:270px;max-height:240px}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: LibClientMatchOverviewComponent, selector: "lib-client-match-overview", inputs: ["overview", "meta", "expand", "loading", "default", "hideProgressBar", "partialColors", "showExternalPartialCircleProgress", "maxValue", "enableChangeOverview"], outputs: ["sendConversationFlag"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "component", type: LibDashboardSwipeableTabsComponent, selector: "lib-dashboard-swipeable-tabs", inputs: ["thumbsSwiperOptions", "mainSwiperOptions", "activeIndex", "bottomThumbs", "slideContentMaxHeight", "mainSwiperHeight", "subMainSwiperHeight", "thumbsSwiperHeight", "generalSwiperHeight"], outputs: ["activeIndexChange"] }, { kind: "ngmodule", type: LibChatComponentModule }, { kind: "component", type: LibSchedulerComponent, selector: "lib-scheduler", inputs: ["adsTemplate", "loading$", "emptyMessage", "displayBookedStatuses", "displayEmptyDays", "events$", "startDate", "endDate", "default"], outputs: ["bookEvent", "removeSuggestion"] }, { kind: "component", type: SpiderChartComponent, selector: "lib-spider-chart", inputs: ["datasets", "config", "polygon_colors", "showChartInfo"] }, { kind: "ngmodule", type: ButtonsModule }, { kind: "ngmodule", type: SharedModule }, { kind: "component", type: MatcherStatusesComponent, selector: "lib-matcher-statuses", inputs: ["adsTemplate", "status", "hideStatuses", "messages", "inputValue", "maxLength", "responseTime", "disabled", "prospectJoinDate"], outputs: ["getMessages", "sendMessage"] }, { kind: "component", type: TraitVisualComponent, selector: "tv-trait-visual", inputs: ["nodeData", "attributeWeights", "preferenceWeights", "attributeCount", "preferenceCount"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: GetColorByMatcherPipe, name: "getColorByMatcher" }, { kind: "pipe", type: ChatMetaPipe, name: "chatMeta" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
3813
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.14", type: LibClientHomeComponent, isStandalone: true, selector: "lib-client-home", inputs: { config: "config" }, outputs: { activeIndexChange: "activeIndexChange", addMessage: "addMessage", getMessages: "getMessages", bookEvent: "bookEvent", removeSuggestion: "removeSuggestion", handleAppearPopup: "handleAppearPopup" }, ngImport: i0, template: "<div class=\"client-home\">\n @if (components.ClientMatchSpiderChart === config?.component) {\n <lib-spider-chart\n [datasets]=\"config.spiderConfig?.datasets\"\n [config]=\"config?.spiderConfig\"\n [polygon_colors]=\"config?.polygonColors\"\n [showChartInfo]=\"false\"\n ></lib-spider-chart>\n } @else if (components.ClientMatchTraitChart === config?.component) {\n <div class=\"trait-visual-container\">\n <tv-trait-visual [nodeData]=\"traitVisualNodes\" [attributeWeights]=\"traitVisualAttrWeights\" [preferenceWeights]=\"traitVisualPrefWeights\"></tv-trait-visual>\n </div>\n }\n\n <lib-dashboard-swipeable-tabs\n [activeIndex]=\"config?.activeIndex\"\n [slideContentMaxHeight]=\"config?.slideContentMaxHeight\"\n [thumbsSwiperOptions]=\"{\n virtual: {\n enabled: clientMatches?.length > 5,\n addSlidesAfter: 8,\n addSlidesBefore: 8,\n cache: true,\n },\n slidesPerView: 'auto',\n grabCursor: true,\n centeredSlides: false,\n freeMode: {\n enabled: true,\n sticky: true,\n },\n observer: true,\n observeParents: true,\n }\"\n [mainSwiperOptions]=\"{\n virtual: {\n enabled: clientMatches?.length > 5,\n addSlidesAfter: 2,\n addSlidesBefore: 2,\n cache: true,\n },\n centeredSlides: true,\n grabCursor: true,\n keyboard: { enabled: true, onlyInViewport: false },\n effect: 'coverflow',\n spaceBetween: 5,\n coverflowEffect: {\n rotate: 0,\n slideShadows: false,\n scale: 0.9,\n },\n observer: true,\n observeParents: true,\n }\"\n [bottomThumbs]=\"config?.bottomThumbs\"\n [generalSwiperHeight]=\"'100%'\"\n [enableMainSwiper]=\"true\"\n (activeIndexChange)=\"onActiveIndexChange($event)\"\n *ngIf=\"(config?.loading$ | async) !== true || config?.default; else empty\"\n >\n <ng-container thumb-slides>\n @if (config.default || !clientMatches?.length) {\n @for (match of defaultNumberOfItems; let i = $index; track match) {\n <swiper-slide>\n <lib-client-match-overview\n [overview]=\"{}\"\n [expand]=\"0\"\n [class.lib-client-match-overview-expand]=\"true\"\n (click)=\"(null)\"\n [partialColors]=\"null\"\n [default]=\"config.default\"\n [showValueProportionLabel]=\"false\"\n [hideProgressBar]=\"false\"\n ></lib-client-match-overview>\n </swiper-slide>\n }\n } @else {\n @for (match of clientMatches; let i = $index; track match._id) {\n <swiper-slide>\n @if (config?.chatAdsTemplate && i === 0) {\n <ng-container *ngTemplateOutlet=\"config?.chatAdsTemplate\"></ng-container>\n }\n <lib-client-match-overview\n [overview]=\"match\"\n [expand]=\"config?.activeIndex === i\"\n [class.lib-client-match-overview-expand]=\"config?.activeIndex === i\"\n [partialColors]=\"match | getColorByMatcher: config\"\n [loading]=\"config?.loading?.clientMatches\"\n [showValueProportionLabel]=\"config?.showValueProportionLabel\"\n [hideProgressBar]=\"config?.hideProgressBar\"\n [meta]=\"config?.clientMatches$ | chatMeta: match._id | async\"\n ></lib-client-match-overview>\n </swiper-slide>\n }\n }\n </ng-container>\n <ng-container main-slides>\n @switch (config?.component) {\n @case (components.ChatScheduler) {\n @if (config.default || !(config?.schedulers$ | async)?.length) {\n @for (item of defaultNumberOfItems; track $index) {\n <swiper-slide class=\"scheduler\">\n <div class=\"slide-content without-shadow\">\n <lib-scheduler [loading$]=\"config?.loading$\" [default]=\"config.default\" [adsTemplate]=\"config?.schedulerAdsTemplate\" style=\"width: 100%\"></lib-scheduler>\n </div>\n </swiper-slide>\n }\n } @else {\n @for (scheduler of config?.schedulers$ | async; let i = $index; track scheduler) {\n <swiper-slide class=\"scheduler\">\n <div class=\"slide-content without-shadow\">\n <lib-scheduler\n [adsTemplate]=\"config?.schedulerAdsTemplate\"\n [events$]=\"scheduler.events$\"\n [loading$]=\"config?.loading$\"\n (bookEvent)=\"bookEvent.emit($event, scheduler.matchRequest)\"\n (removeSuggestion)=\"removeSuggestion.emit($event)\"\n ></lib-scheduler>\n </div>\n </swiper-slide>\n }\n }\n }\n @case (components.ChatHandoff) {\n @if (config.default || !(config?.clientMatches$ | async)?.length) {\n @for (chat of defaultNumberOfItems; let i = $index; track chat) {\n <swiper-slide class=\"chat\">\n <lib-matcher-statuses\n [inputValue]=\"config.chatInputValue\"\n [messages]=\"chat?.messages || []\"\n (sendMessage)=\"addMessageEmit($event, chat.prospectId, {})\"\n (getMessages)=\"getMessages.emit()\"\n [maxLength]=\"maxLength\"\n [responseTime]=\"chat?.prospectResponseTime || ''\"\n [hideStatuses]=\"config.hideStatuses\"\n ></lib-matcher-statuses>\n </swiper-slide>\n }\n } @else {\n @for (clientMatch of config?.clientMatches$ | async; let i = $index; track clientMatch?.prospectData?.prospectId ?? $index) {\n <swiper-slide class=\"chat\">\n <div class=\"slide-content\">\n <lib-matcher-statuses\n *ngIf=\"clientMatch.prospectData\"\n [status]=\"clientMatch.prospectData.status\"\n [adsTemplate]=\"config?.chatTabAdsTemplate\"\n [inputValue]=\"config.chatInputValue\"\n [messages]=\"clientMatch.prospectData?.messages || []\"\n [includeTime]=\"config?.includeTime\"\n [includeGifMessage]=\"config?.includeGifMessage\"\n (getMessages)=\"getMessages.emit()\"\n [maxLength]=\"config?.maxLength\"\n [responseTime]=\"clientMatch.prospectData.prospectResponseTime\"\n (sendMessage)=\"addMessageEmit($event, clientMatch?.prospectData?.prospectId, clientMatch?.matchRequest)\"\n [hideStatuses]=\"config.hideStatuses\"\n [prospectJoinDate]=\"clientMatch.prospectData.prospectJoinDate\"\n ></lib-matcher-statuses>\n </div>\n </swiper-slide>\n }\n }\n }\n }\n </ng-container>\n </lib-dashboard-swipeable-tabs>\n\n <ng-template #empty>\n <lib-section-separator></lib-section-separator>\n <div class=\"messsage f-lg f-gilroy-regular\">{{ emptyMessage }}</div>\n </ng-template>\n</div>\n", styles: [":host{--match-percentage-font-size: 1.5em;--container-sides-shadow-width: 15px;--match-percentage-value-height: 3em;position:relative}.messsage{margin-bottom:40px}.padding-20{padding:20px!important}.client-home{height:100%}swiper-slide{display:flex;overflow:hidden;position:relative;align-items:center;min-height:120px}swiper-slide.chat.swiper-slide-next,swiper-slide.chat.swiper-slide-prev{opacity:.5}swiper-slide.chat.swiper-slide-next:before,swiper-slide.chat.swiper-slide-prev:before{content:\"\";position:absolute;top:0;left:0;width:100%;height:100%;background:gray;opacity:.4;border-radius:10px}lib-client-match-overview{cursor:pointer}lib-client-match-overview:not(.lib-client-match-overview-expand){--lib-circle-progress-height: 65%;--lib-circle-progress-width: 65%;--primary-profile-height: 7em;--primary-profile-width: 7em;margin:auto 6px}lib-client-match-overview.lib-client-match-overview-expand{--primary-profile-height: 11em;--primary-profile-width: 11em;--secondary-profile-height: 3em;--secondary-profile-width: 3em}.slide-content{height:auto;width:100%;position:relative;display:block;overflow:visible;padding:0 5px}.slide-content:not(.without-shadow){border-radius:10px;box-shadow:5.70371px 5.70371px 11.40741px #00000052 inset,-3.42222px -3.42222px 4.56296px #ffffff1a inset}.slide-content:has(lib-chat){padding:0}.slide-content lib-chat{--max-width-container: 100%}.slide-content .status-list{position:absolute;top:.9em;left:.5em;display:flex;flex-direction:column;gap:.32em}lib-client-match-overview{--secondary-profile-margin: 0 0 0 -5px}@media (min-width: 350px){.left-side{left:0!important}}@media (max-width: 768px){swiper-slide{min-height:80px}}@media (max-width: 768px){swiper-slide{min-height:80px}lib-client-match-overview{--secondary-profile-margin: 0 0 0 -5px}.trait-visual-container{display:flex;justify-content:center;align-items:center;width:100%;height:100%;min-height:240px}.trait-visual-container tv-trait-visual{width:100%;height:100%;max-width:270px;max-height:240px}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: LibClientMatchOverviewComponent, selector: "lib-client-match-overview", inputs: ["overview", "meta", "expand", "loading", "default", "hideProgressBar", "partialColors", "showExternalPartialCircleProgress", "maxValue", "enableChangeOverview"], outputs: ["sendConversationFlag"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "component", type: LibDashboardSwipeableTabsComponent, selector: "lib-dashboard-swipeable-tabs", inputs: ["thumbsSwiperOptions", "mainSwiperOptions", "activeIndex", "bottomThumbs", "slideContentMaxHeight", "mainSwiperHeight", "subMainSwiperHeight", "thumbsSwiperHeight", "generalSwiperHeight"], outputs: ["activeIndexChange"] }, { kind: "ngmodule", type: LibChatComponentModule }, { kind: "component", type: LibSchedulerComponent, selector: "lib-scheduler", inputs: ["adsTemplate", "loading$", "emptyMessage", "displayBookedStatuses", "displayEmptyDays", "events$", "startDate", "endDate", "default"], outputs: ["bookEvent", "removeSuggestion"] }, { kind: "component", type: SpiderChartComponent, selector: "lib-spider-chart", inputs: ["datasets", "config", "polygon_colors", "showChartInfo"] }, { kind: "ngmodule", type: ButtonsModule }, { kind: "ngmodule", type: SharedModule }, { kind: "component", type: MatcherStatusesComponent, selector: "lib-matcher-statuses", inputs: ["adsTemplate", "status", "hideStatuses", "messages", "inputValue", "maxLength", "responseTime", "disabled", "prospectJoinDate"], outputs: ["getMessages", "sendMessage"] }, { kind: "component", type: TraitVisualComponent, selector: "tv-trait-visual", inputs: ["nodeData", "attributeWeights", "preferenceWeights", "attributeCount", "preferenceCount"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: GetColorByMatcherPipe, name: "getColorByMatcher" }, { kind: "pipe", type: ChatMetaPipe, name: "chatMeta" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
3945
3814
|
}
|
|
3946
3815
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibClientHomeComponent, decorators: [{
|
|
3947
3816
|
type: Component,
|
|
@@ -3959,7 +3828,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImpo
|
|
|
3959
3828
|
GetColorByMatcherPipe,
|
|
3960
3829
|
ChatMetaPipe,
|
|
3961
3830
|
TraitVisualComponent,
|
|
3962
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"client-home\">\n @if (components.ClientMatchSpiderChart === config?.component) {\n <lib-spider-chart\n [datasets]=\"config.spiderConfig?.datasets\"\n [config]=\"config?.spiderConfig\"\n [polygon_colors]=\"config?.polygonColors\"\n [showChartInfo]=\"false\"\n ></lib-spider-chart>\n } @else if (components.ClientMatchTraitChart === config?.component) {\n <div class=\"trait-visual-container\">\n <tv-trait-visual
|
|
3831
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"client-home\">\n @if (components.ClientMatchSpiderChart === config?.component) {\n <lib-spider-chart\n [datasets]=\"config.spiderConfig?.datasets\"\n [config]=\"config?.spiderConfig\"\n [polygon_colors]=\"config?.polygonColors\"\n [showChartInfo]=\"false\"\n ></lib-spider-chart>\n } @else if (components.ClientMatchTraitChart === config?.component) {\n <div class=\"trait-visual-container\">\n <tv-trait-visual [nodeData]=\"traitVisualNodes\" [attributeWeights]=\"traitVisualAttrWeights\" [preferenceWeights]=\"traitVisualPrefWeights\"></tv-trait-visual>\n </div>\n }\n\n <lib-dashboard-swipeable-tabs\n [activeIndex]=\"config?.activeIndex\"\n [slideContentMaxHeight]=\"config?.slideContentMaxHeight\"\n [thumbsSwiperOptions]=\"{\n virtual: {\n enabled: clientMatches?.length > 5,\n addSlidesAfter: 8,\n addSlidesBefore: 8,\n cache: true,\n },\n slidesPerView: 'auto',\n grabCursor: true,\n centeredSlides: false,\n freeMode: {\n enabled: true,\n sticky: true,\n },\n observer: true,\n observeParents: true,\n }\"\n [mainSwiperOptions]=\"{\n virtual: {\n enabled: clientMatches?.length > 5,\n addSlidesAfter: 2,\n addSlidesBefore: 2,\n cache: true,\n },\n centeredSlides: true,\n grabCursor: true,\n keyboard: { enabled: true, onlyInViewport: false },\n effect: 'coverflow',\n spaceBetween: 5,\n coverflowEffect: {\n rotate: 0,\n slideShadows: false,\n scale: 0.9,\n },\n observer: true,\n observeParents: true,\n }\"\n [bottomThumbs]=\"config?.bottomThumbs\"\n [generalSwiperHeight]=\"'100%'\"\n [enableMainSwiper]=\"true\"\n (activeIndexChange)=\"onActiveIndexChange($event)\"\n *ngIf=\"(config?.loading$ | async) !== true || config?.default; else empty\"\n >\n <ng-container thumb-slides>\n @if (config.default || !clientMatches?.length) {\n @for (match of defaultNumberOfItems; let i = $index; track match) {\n <swiper-slide>\n <lib-client-match-overview\n [overview]=\"{}\"\n [expand]=\"0\"\n [class.lib-client-match-overview-expand]=\"true\"\n (click)=\"(null)\"\n [partialColors]=\"null\"\n [default]=\"config.default\"\n [showValueProportionLabel]=\"false\"\n [hideProgressBar]=\"false\"\n ></lib-client-match-overview>\n </swiper-slide>\n }\n } @else {\n @for (match of clientMatches; let i = $index; track match._id) {\n <swiper-slide>\n @if (config?.chatAdsTemplate && i === 0) {\n <ng-container *ngTemplateOutlet=\"config?.chatAdsTemplate\"></ng-container>\n }\n <lib-client-match-overview\n [overview]=\"match\"\n [expand]=\"config?.activeIndex === i\"\n [class.lib-client-match-overview-expand]=\"config?.activeIndex === i\"\n [partialColors]=\"match | getColorByMatcher: config\"\n [loading]=\"config?.loading?.clientMatches\"\n [showValueProportionLabel]=\"config?.showValueProportionLabel\"\n [hideProgressBar]=\"config?.hideProgressBar\"\n [meta]=\"config?.clientMatches$ | chatMeta: match._id | async\"\n ></lib-client-match-overview>\n </swiper-slide>\n }\n }\n </ng-container>\n <ng-container main-slides>\n @switch (config?.component) {\n @case (components.ChatScheduler) {\n @if (config.default || !(config?.schedulers$ | async)?.length) {\n @for (item of defaultNumberOfItems; track $index) {\n <swiper-slide class=\"scheduler\">\n <div class=\"slide-content without-shadow\">\n <lib-scheduler [loading$]=\"config?.loading$\" [default]=\"config.default\" [adsTemplate]=\"config?.schedulerAdsTemplate\" style=\"width: 100%\"></lib-scheduler>\n </div>\n </swiper-slide>\n }\n } @else {\n @for (scheduler of config?.schedulers$ | async; let i = $index; track scheduler) {\n <swiper-slide class=\"scheduler\">\n <div class=\"slide-content without-shadow\">\n <lib-scheduler\n [adsTemplate]=\"config?.schedulerAdsTemplate\"\n [events$]=\"scheduler.events$\"\n [loading$]=\"config?.loading$\"\n (bookEvent)=\"bookEvent.emit($event, scheduler.matchRequest)\"\n (removeSuggestion)=\"removeSuggestion.emit($event)\"\n ></lib-scheduler>\n </div>\n </swiper-slide>\n }\n }\n }\n @case (components.ChatHandoff) {\n @if (config.default || !(config?.clientMatches$ | async)?.length) {\n @for (chat of defaultNumberOfItems; let i = $index; track chat) {\n <swiper-slide class=\"chat\">\n <lib-matcher-statuses\n [inputValue]=\"config.chatInputValue\"\n [messages]=\"chat?.messages || []\"\n (sendMessage)=\"addMessageEmit($event, chat.prospectId, {})\"\n (getMessages)=\"getMessages.emit()\"\n [maxLength]=\"maxLength\"\n [responseTime]=\"chat?.prospectResponseTime || ''\"\n [hideStatuses]=\"config.hideStatuses\"\n ></lib-matcher-statuses>\n </swiper-slide>\n }\n } @else {\n @for (clientMatch of config?.clientMatches$ | async; let i = $index; track clientMatch?.prospectData?.prospectId ?? $index) {\n <swiper-slide class=\"chat\">\n <div class=\"slide-content\">\n <lib-matcher-statuses\n *ngIf=\"clientMatch.prospectData\"\n [status]=\"clientMatch.prospectData.status\"\n [adsTemplate]=\"config?.chatTabAdsTemplate\"\n [inputValue]=\"config.chatInputValue\"\n [messages]=\"clientMatch.prospectData?.messages || []\"\n [includeTime]=\"config?.includeTime\"\n [includeGifMessage]=\"config?.includeGifMessage\"\n (getMessages)=\"getMessages.emit()\"\n [maxLength]=\"config?.maxLength\"\n [responseTime]=\"clientMatch.prospectData.prospectResponseTime\"\n (sendMessage)=\"addMessageEmit($event, clientMatch?.prospectData?.prospectId, clientMatch?.matchRequest)\"\n [hideStatuses]=\"config.hideStatuses\"\n [prospectJoinDate]=\"clientMatch.prospectData.prospectJoinDate\"\n ></lib-matcher-statuses>\n </div>\n </swiper-slide>\n }\n }\n }\n }\n </ng-container>\n </lib-dashboard-swipeable-tabs>\n\n <ng-template #empty>\n <lib-section-separator></lib-section-separator>\n <div class=\"messsage f-lg f-gilroy-regular\">{{ emptyMessage }}</div>\n </ng-template>\n</div>\n", styles: [":host{--match-percentage-font-size: 1.5em;--container-sides-shadow-width: 15px;--match-percentage-value-height: 3em;position:relative}.messsage{margin-bottom:40px}.padding-20{padding:20px!important}.client-home{height:100%}swiper-slide{display:flex;overflow:hidden;position:relative;align-items:center;min-height:120px}swiper-slide.chat.swiper-slide-next,swiper-slide.chat.swiper-slide-prev{opacity:.5}swiper-slide.chat.swiper-slide-next:before,swiper-slide.chat.swiper-slide-prev:before{content:\"\";position:absolute;top:0;left:0;width:100%;height:100%;background:gray;opacity:.4;border-radius:10px}lib-client-match-overview{cursor:pointer}lib-client-match-overview:not(.lib-client-match-overview-expand){--lib-circle-progress-height: 65%;--lib-circle-progress-width: 65%;--primary-profile-height: 7em;--primary-profile-width: 7em;margin:auto 6px}lib-client-match-overview.lib-client-match-overview-expand{--primary-profile-height: 11em;--primary-profile-width: 11em;--secondary-profile-height: 3em;--secondary-profile-width: 3em}.slide-content{height:auto;width:100%;position:relative;display:block;overflow:visible;padding:0 5px}.slide-content:not(.without-shadow){border-radius:10px;box-shadow:5.70371px 5.70371px 11.40741px #00000052 inset,-3.42222px -3.42222px 4.56296px #ffffff1a inset}.slide-content:has(lib-chat){padding:0}.slide-content lib-chat{--max-width-container: 100%}.slide-content .status-list{position:absolute;top:.9em;left:.5em;display:flex;flex-direction:column;gap:.32em}lib-client-match-overview{--secondary-profile-margin: 0 0 0 -5px}@media (min-width: 350px){.left-side{left:0!important}}@media (max-width: 768px){swiper-slide{min-height:80px}}@media (max-width: 768px){swiper-slide{min-height:80px}lib-client-match-overview{--secondary-profile-margin: 0 0 0 -5px}.trait-visual-container{display:flex;justify-content:center;align-items:center;width:100%;height:100%;min-height:240px}.trait-visual-container tv-trait-visual{width:100%;height:100%;max-width:270px;max-height:240px}}\n"] }]
|
|
3963
3832
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { config: [{
|
|
3964
3833
|
type: Input
|
|
3965
3834
|
}], activeIndexChange: [{
|
|
@@ -3976,68 +3845,91 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImpo
|
|
|
3976
3845
|
type: Output
|
|
3977
3846
|
}] } });
|
|
3978
3847
|
|
|
3979
|
-
|
|
3980
|
-
|
|
3981
|
-
|
|
3982
|
-
|
|
3983
|
-
|
|
3984
|
-
|
|
3985
|
-
|
|
3986
|
-
|
|
3987
|
-
|
|
3988
|
-
|
|
3989
|
-
|
|
3990
|
-
|
|
3991
|
-
|
|
3992
|
-
|
|
3993
|
-
|
|
3994
|
-
|
|
3995
|
-
|
|
3996
|
-
|
|
3997
|
-
|
|
3998
|
-
|
|
3999
|
-
|
|
4000
|
-
|
|
4001
|
-
|
|
4002
|
-
|
|
4003
|
-
|
|
4004
|
-
|
|
4005
|
-
|
|
4006
|
-
|
|
4007
|
-
|
|
4008
|
-
|
|
4009
|
-
|
|
4010
|
-
|
|
4011
|
-
|
|
4012
|
-
};
|
|
4013
|
-
|
|
4014
|
-
|
|
4015
|
-
|
|
4016
|
-
|
|
4017
|
-
|
|
4018
|
-
|
|
4019
|
-
|
|
4020
|
-
|
|
4021
|
-
|
|
4022
|
-
|
|
4023
|
-
|
|
4024
|
-
|
|
4025
|
-
|
|
4026
|
-
|
|
4027
|
-
|
|
4028
|
-
|
|
4029
|
-
|
|
4030
|
-
|
|
4031
|
-
|
|
4032
|
-
|
|
4033
|
-
|
|
4034
|
-
|
|
4035
|
-
|
|
4036
|
-
(
|
|
4037
|
-
|
|
4038
|
-
|
|
4039
|
-
|
|
4040
|
-
})
|
|
3848
|
+
class LibHandoffPanelComponent {
|
|
3849
|
+
constructor(cdr) {
|
|
3850
|
+
this.cdr = cdr;
|
|
3851
|
+
this.config = {
|
|
3852
|
+
version: HandoffPanelVersion.STANDARD,
|
|
3853
|
+
messages$: of([]),
|
|
3854
|
+
scheduleSlots: [],
|
|
3855
|
+
datePrepInfo: {
|
|
3856
|
+
title: 'Date Prep Handoff info',
|
|
3857
|
+
items: [],
|
|
3858
|
+
},
|
|
3859
|
+
default: false,
|
|
3860
|
+
activeTabIndex: 0,
|
|
3861
|
+
};
|
|
3862
|
+
this.addMessage = new EventEmitter();
|
|
3863
|
+
this.scheduleSlotToggle = new EventEmitter();
|
|
3864
|
+
this.HandoffPanelVersion = HandoffPanelVersion;
|
|
3865
|
+
this.activeTabIndex = 0;
|
|
3866
|
+
this.messages$ = of([]);
|
|
3867
|
+
this.scheduleSlots = [];
|
|
3868
|
+
this.slotControls = new Map();
|
|
3869
|
+
this.datePrepInfo = {
|
|
3870
|
+
title: 'Date Prep Handoff info',
|
|
3871
|
+
items: [],
|
|
3872
|
+
};
|
|
3873
|
+
}
|
|
3874
|
+
ngOnInit() {
|
|
3875
|
+
this.activeTabIndex = this.config.activeTabIndex ?? 0;
|
|
3876
|
+
this.messages$ = this.config.messages$ ?? of([]);
|
|
3877
|
+
this.scheduleSlots = this.config.scheduleSlots ?? [];
|
|
3878
|
+
this.datePrepInfo = this.config.datePrepInfo ?? {
|
|
3879
|
+
title: 'Date Prep Handoff info',
|
|
3880
|
+
items: [],
|
|
3881
|
+
};
|
|
3882
|
+
this.initializeSlotControls();
|
|
3883
|
+
this.cdr.detectChanges();
|
|
3884
|
+
}
|
|
3885
|
+
initializeSlotControls() {
|
|
3886
|
+
this.slotControls.clear();
|
|
3887
|
+
this.scheduleSlots.forEach((slot) => {
|
|
3888
|
+
const control = new FormControl(slot.selected);
|
|
3889
|
+
control.valueChanges.subscribe((value) => {
|
|
3890
|
+
slot.selected = value;
|
|
3891
|
+
this.scheduleSlotToggle.emit(slot);
|
|
3892
|
+
this.cdr.detectChanges();
|
|
3893
|
+
});
|
|
3894
|
+
this.slotControls.set(slot.id, control);
|
|
3895
|
+
});
|
|
3896
|
+
}
|
|
3897
|
+
onTabChange(index) {
|
|
3898
|
+
this.activeTabIndex = index;
|
|
3899
|
+
this.cdr.detectChanges();
|
|
3900
|
+
}
|
|
3901
|
+
getSlotControl(slot) {
|
|
3902
|
+
let control = this.slotControls.get(slot.id);
|
|
3903
|
+
if (!control) {
|
|
3904
|
+
control = new FormControl(slot.selected);
|
|
3905
|
+
control.valueChanges.subscribe((value) => {
|
|
3906
|
+
slot.selected = value;
|
|
3907
|
+
this.scheduleSlotToggle.emit(slot);
|
|
3908
|
+
this.cdr.detectChanges();
|
|
3909
|
+
});
|
|
3910
|
+
this.slotControls.set(slot.id, control);
|
|
3911
|
+
}
|
|
3912
|
+
return control;
|
|
3913
|
+
}
|
|
3914
|
+
onMessageAdd(message) {
|
|
3915
|
+
this.addMessage.emit(message);
|
|
3916
|
+
}
|
|
3917
|
+
getVersionClass() {
|
|
3918
|
+
return `handoff-panel--${this.config.version || HandoffPanelVersion.STANDARD}`;
|
|
3919
|
+
}
|
|
3920
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibHandoffPanelComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3921
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.14", type: LibHandoffPanelComponent, isStandalone: true, selector: "lib-handoff-panel", inputs: { config: "config" }, outputs: { addMessage: "addMessage", scheduleSlotToggle: "scheduleSlotToggle" }, ngImport: i0, template: "<div class=\"handoff-panel\" [ngClass]=\"getVersionClass()\">\n <div class=\"handoff-panel__tabs\">\n <button class=\"handoff-panel__tab\" [ngClass]=\"{ 'handoff-panel__tab--active': activeTabIndex === 0 }\" (click)=\"onTabChange(0)\">Chat Handoff</button>\n <button class=\"handoff-panel__tab\" [ngClass]=\"{ 'handoff-panel__tab--active': activeTabIndex === 1 }\" (click)=\"onTabChange(1)\">Schedule</button>\n <button class=\"handoff-panel__tab\" [ngClass]=\"{ 'handoff-panel__tab--active': activeTabIndex === 2 }\" (click)=\"onTabChange(2)\">Date Prep</button>\n </div>\n\n <div class=\"handoff-panel__content\">\n <!-- Chat Handoff Tab -->\n @if (activeTabIndex === 0) {\n <div class=\"handoff-panel__chat\">\n <lib-chat [default]=\"config.default\" [messages$]=\"messages$\" (addMessage)=\"onMessageAdd($event)\"></lib-chat>\n </div>\n }\n\n <!-- Schedule Tab -->\n @if (activeTabIndex === 1) {\n <div class=\"handoff-panel__schedule\">\n @if (scheduleSlots && scheduleSlots.length > 0) {\n <div class=\"schedule-list\">\n @for (slot of scheduleSlots; track slot.id) {\n <div class=\"schedule-item\">\n <div class=\"schedule-item__info\">\n @if (slot.profileImage) {\n <img class=\"schedule-item__avatar\" [src]=\"slot.profileImage\" alt=\"Profile\" />\n }\n <div class=\"schedule-item__details\">\n <div class=\"schedule-item__time\">{{ slot.time }} - {{ slot.duration }}</div>\n @if (slot.description) {\n <div class=\"schedule-item__description\">{{ slot.description }}</div>\n }\n </div>\n </div>\n <lib-toggle [formControl]=\"getSlotControl(slot)\"></lib-toggle>\n </div>\n }\n </div>\n } @else {\n <div class=\"handoff-panel__empty\">\n <p>No schedule slots available</p>\n </div>\n }\n </div>\n }\n\n <!-- Date Prep Tab -->\n @if (activeTabIndex === 2) {\n <div class=\"handoff-panel__date-prep\">\n <div class=\"date-prep-info\">\n <h3 class=\"date-prep-info__title\">{{ datePrepInfo.title }}</h3>\n @if (datePrepInfo.items && datePrepInfo.items.length > 0) {\n <ul class=\"date-prep-info__list\">\n @for (item of datePrepInfo.items; track $index) {\n <li class=\"date-prep-info__item\">{{ item }}</li>\n }\n </ul>\n } @else {\n <div class=\"handoff-panel__empty\">\n <p>No date prep information available</p>\n </div>\n }\n </div>\n </div>\n }\n </div>\n</div>\n", styles: ["@charset \"UTF-8\";.handoff-panel{display:flex;flex-direction:column;height:100%;background-color:var(--ion-background-color);color:#666}.handoff-panel__tabs{display:flex;border-bottom:1px solid #dfe0e3;background-color:#464a4c}.handoff-panel__tab{flex:1;padding:12px 16px;background:transparent;border:none;border-bottom:2px solid transparent;color:#f4f6f7;font-size:14px;font-weight:500;cursor:pointer;transition:all .3s ease}.handoff-panel__tab:hover{color:#a6a6a6;background-color:#ffffff0d}.handoff-panel__tab--active{color:#666;border-bottom-color:#45899b;background-color:#ffffff05}.handoff-panel__content{flex:1;overflow-y:auto;padding:16px}.handoff-panel__chat,.handoff-panel__schedule,.handoff-panel__date-prep{height:100%}.handoff-panel__empty{display:flex;align-items:center;justify-content:center;height:200px;color:#f4f6f7;font-size:14px}.handoff-panel--standard .handoff-panel__tab--active{border-bottom-color:#45899b}.handoff-panel--pro .handoff-panel__tab--active{border-bottom-color:#9c27b0}.handoff-panel--super .handoff-panel__tab--active{border-bottom-color:#d4863d}.schedule-list{display:flex;flex-direction:column;gap:12px}.schedule-item{display:flex;align-items:center;justify-content:space-between;padding:12px;background-color:#464a4c;border-radius:8px;border:1px solid #dfe0e3;transition:all .3s ease}.schedule-item:hover{background-color:#464a4c;border-color:#ccc}.schedule-item__info{display:flex;align-items:center;gap:12px;flex:1}.schedule-item__avatar{width:40px;height:40px;border-radius:50%;object-fit:cover}.schedule-item__details{display:flex;flex-direction:column;gap:4px}.schedule-item__time{font-size:14px;font-weight:500;color:#666}.schedule-item__description{font-size:12px;color:#f4f6f7}.date-prep-info__title{font-size:18px;font-weight:600;color:#666;margin-bottom:16px}.date-prep-info__list{list-style:none;padding:0;margin:0}.date-prep-info__item{padding:8px 0 8px 20px;position:relative;color:#a6a6a6;font-size:14px;line-height:1.5}.date-prep-info__item:before{content:\"\\2022\";position:absolute;left:0;color:#45899b;font-size:18px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: LibChatComponentModule }, { kind: "component", type: ChatComponent, selector: "lib-chat", inputs: ["default", "responseTime", "inputValue", "emojiPickerConfig", "includeGifMessage", "includeTime", "dateMessages", "maxLength", "enableGifPicker", "prospectJoinDate", "disabled"], outputs: ["sendMessage", "getMessages"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: ButtonsModule }, { kind: "ngmodule", type: FormFieldModule }, { kind: "ngmodule", type: InputFieldModule }, { kind: "ngmodule", type: ToggleModule }, { kind: "component", type: i2.ToggleComponent, selector: "lib-toggle", inputs: ["disabled", "toggleState", "variant", "left", "right", "thumbImg", "multipleOptions"], outputs: ["toggleStateChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
3922
|
+
}
|
|
3923
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibHandoffPanelComponent, decorators: [{
|
|
3924
|
+
type: Component,
|
|
3925
|
+
args: [{ selector: 'lib-handoff-panel', imports: [CommonModule, TranslateModule, LibChatComponentModule, FormsModule, ReactiveFormsModule, ButtonsModule, FormFieldModule, InputFieldModule, ToggleModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"handoff-panel\" [ngClass]=\"getVersionClass()\">\n <div class=\"handoff-panel__tabs\">\n <button class=\"handoff-panel__tab\" [ngClass]=\"{ 'handoff-panel__tab--active': activeTabIndex === 0 }\" (click)=\"onTabChange(0)\">Chat Handoff</button>\n <button class=\"handoff-panel__tab\" [ngClass]=\"{ 'handoff-panel__tab--active': activeTabIndex === 1 }\" (click)=\"onTabChange(1)\">Schedule</button>\n <button class=\"handoff-panel__tab\" [ngClass]=\"{ 'handoff-panel__tab--active': activeTabIndex === 2 }\" (click)=\"onTabChange(2)\">Date Prep</button>\n </div>\n\n <div class=\"handoff-panel__content\">\n <!-- Chat Handoff Tab -->\n @if (activeTabIndex === 0) {\n <div class=\"handoff-panel__chat\">\n <lib-chat [default]=\"config.default\" [messages$]=\"messages$\" (addMessage)=\"onMessageAdd($event)\"></lib-chat>\n </div>\n }\n\n <!-- Schedule Tab -->\n @if (activeTabIndex === 1) {\n <div class=\"handoff-panel__schedule\">\n @if (scheduleSlots && scheduleSlots.length > 0) {\n <div class=\"schedule-list\">\n @for (slot of scheduleSlots; track slot.id) {\n <div class=\"schedule-item\">\n <div class=\"schedule-item__info\">\n @if (slot.profileImage) {\n <img class=\"schedule-item__avatar\" [src]=\"slot.profileImage\" alt=\"Profile\" />\n }\n <div class=\"schedule-item__details\">\n <div class=\"schedule-item__time\">{{ slot.time }} - {{ slot.duration }}</div>\n @if (slot.description) {\n <div class=\"schedule-item__description\">{{ slot.description }}</div>\n }\n </div>\n </div>\n <lib-toggle [formControl]=\"getSlotControl(slot)\"></lib-toggle>\n </div>\n }\n </div>\n } @else {\n <div class=\"handoff-panel__empty\">\n <p>No schedule slots available</p>\n </div>\n }\n </div>\n }\n\n <!-- Date Prep Tab -->\n @if (activeTabIndex === 2) {\n <div class=\"handoff-panel__date-prep\">\n <div class=\"date-prep-info\">\n <h3 class=\"date-prep-info__title\">{{ datePrepInfo.title }}</h3>\n @if (datePrepInfo.items && datePrepInfo.items.length > 0) {\n <ul class=\"date-prep-info__list\">\n @for (item of datePrepInfo.items; track $index) {\n <li class=\"date-prep-info__item\">{{ item }}</li>\n }\n </ul>\n } @else {\n <div class=\"handoff-panel__empty\">\n <p>No date prep information available</p>\n </div>\n }\n </div>\n </div>\n }\n </div>\n</div>\n", styles: ["@charset \"UTF-8\";.handoff-panel{display:flex;flex-direction:column;height:100%;background-color:var(--ion-background-color);color:#666}.handoff-panel__tabs{display:flex;border-bottom:1px solid #dfe0e3;background-color:#464a4c}.handoff-panel__tab{flex:1;padding:12px 16px;background:transparent;border:none;border-bottom:2px solid transparent;color:#f4f6f7;font-size:14px;font-weight:500;cursor:pointer;transition:all .3s ease}.handoff-panel__tab:hover{color:#a6a6a6;background-color:#ffffff0d}.handoff-panel__tab--active{color:#666;border-bottom-color:#45899b;background-color:#ffffff05}.handoff-panel__content{flex:1;overflow-y:auto;padding:16px}.handoff-panel__chat,.handoff-panel__schedule,.handoff-panel__date-prep{height:100%}.handoff-panel__empty{display:flex;align-items:center;justify-content:center;height:200px;color:#f4f6f7;font-size:14px}.handoff-panel--standard .handoff-panel__tab--active{border-bottom-color:#45899b}.handoff-panel--pro .handoff-panel__tab--active{border-bottom-color:#9c27b0}.handoff-panel--super .handoff-panel__tab--active{border-bottom-color:#d4863d}.schedule-list{display:flex;flex-direction:column;gap:12px}.schedule-item{display:flex;align-items:center;justify-content:space-between;padding:12px;background-color:#464a4c;border-radius:8px;border:1px solid #dfe0e3;transition:all .3s ease}.schedule-item:hover{background-color:#464a4c;border-color:#ccc}.schedule-item__info{display:flex;align-items:center;gap:12px;flex:1}.schedule-item__avatar{width:40px;height:40px;border-radius:50%;object-fit:cover}.schedule-item__details{display:flex;flex-direction:column;gap:4px}.schedule-item__time{font-size:14px;font-weight:500;color:#666}.schedule-item__description{font-size:12px;color:#f4f6f7}.date-prep-info__title{font-size:18px;font-weight:600;color:#666;margin-bottom:16px}.date-prep-info__list{list-style:none;padding:0;margin:0}.date-prep-info__item{padding:8px 0 8px 20px;position:relative;color:#a6a6a6;font-size:14px;line-height:1.5}.date-prep-info__item:before{content:\"\\2022\";position:absolute;left:0;color:#45899b;font-size:18px}\n"] }]
|
|
3926
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { config: [{
|
|
3927
|
+
type: Input
|
|
3928
|
+
}], addMessage: [{
|
|
3929
|
+
type: Output
|
|
3930
|
+
}], scheduleSlotToggle: [{
|
|
3931
|
+
type: Output
|
|
3932
|
+
}] } });
|
|
4041
3933
|
|
|
4042
3934
|
const defaultSpiderConfig = {
|
|
4043
3935
|
w: 200,
|
|
@@ -4129,6 +4021,211 @@ const defaultClientDashboardConfig = {
|
|
|
4129
4021
|
alertStatus: {},
|
|
4130
4022
|
};
|
|
4131
4023
|
|
|
4024
|
+
class LibVisualManagerModalComponent {
|
|
4025
|
+
get selectedItems() {
|
|
4026
|
+
return this.preferences.filter((p) => p.isSelected);
|
|
4027
|
+
}
|
|
4028
|
+
get deselectedItems() {
|
|
4029
|
+
return this.preferences.filter((p) => !p.isSelected);
|
|
4030
|
+
}
|
|
4031
|
+
constructor(changeDetectorRef, popupModalService, modalData) {
|
|
4032
|
+
this.changeDetectorRef = changeDetectorRef;
|
|
4033
|
+
this.popupModalService = popupModalService;
|
|
4034
|
+
this.modalData = modalData;
|
|
4035
|
+
this.event = new EventEmitter();
|
|
4036
|
+
this.componentData = null;
|
|
4037
|
+
this.preferences = [];
|
|
4038
|
+
this.originalPreferences = [];
|
|
4039
|
+
this.preferenceControls = new Map();
|
|
4040
|
+
if (modalData) {
|
|
4041
|
+
this.componentData = modalData;
|
|
4042
|
+
}
|
|
4043
|
+
}
|
|
4044
|
+
ngOnInit() {
|
|
4045
|
+
if (!this.componentData) {
|
|
4046
|
+
this.componentData = {
|
|
4047
|
+
data: this.data || { preferences: [] },
|
|
4048
|
+
};
|
|
4049
|
+
}
|
|
4050
|
+
// Create a deep copy for working state
|
|
4051
|
+
this.preferences = JSON.parse(JSON.stringify(this.componentData.data.preferences || []));
|
|
4052
|
+
// Keep original for reset
|
|
4053
|
+
this.originalPreferences = JSON.parse(JSON.stringify(this.componentData.data.preferences || []));
|
|
4054
|
+
// Create FormControls for each preference name
|
|
4055
|
+
this.preferences.forEach((preference) => {
|
|
4056
|
+
this.preferenceControls.set(preference.id, new FormControl(preference.name));
|
|
4057
|
+
});
|
|
4058
|
+
}
|
|
4059
|
+
ngAfterViewInit() {
|
|
4060
|
+
if (this.childModalElementRef) {
|
|
4061
|
+
this.popupModalService.setChildModalElementRef(this.childModalElementRef);
|
|
4062
|
+
}
|
|
4063
|
+
}
|
|
4064
|
+
togglePreference(preference, event) {
|
|
4065
|
+
if (event) {
|
|
4066
|
+
event.preventDefault();
|
|
4067
|
+
event.stopPropagation();
|
|
4068
|
+
}
|
|
4069
|
+
const index = this.preferences.findIndex((p) => p.id === preference.id);
|
|
4070
|
+
if (index !== -1) {
|
|
4071
|
+
const wasSelected = this.preferences[index].isSelected;
|
|
4072
|
+
this.preferences[index].isSelected = !wasSelected;
|
|
4073
|
+
// Force change detection to update the view
|
|
4074
|
+
this.changeDetectorRef.detectChanges();
|
|
4075
|
+
const eventValue = this.preferences[index].isSelected ? VisualManagerModalEventValue.AddPreference : VisualManagerModalEventValue.RemovePreference;
|
|
4076
|
+
// Emit event but don't close the modal - user can continue toggling items
|
|
4077
|
+
if (this.data) {
|
|
4078
|
+
this.event.emit({
|
|
4079
|
+
type: VisualManagerModalEventTypes.Click,
|
|
4080
|
+
value: eventValue,
|
|
4081
|
+
data: { preferenceId: preference.id, preferences: this.preferences },
|
|
4082
|
+
});
|
|
4083
|
+
}
|
|
4084
|
+
}
|
|
4085
|
+
}
|
|
4086
|
+
apply() {
|
|
4087
|
+
if (this.data) {
|
|
4088
|
+
this.event.emit({
|
|
4089
|
+
type: VisualManagerModalEventTypes.Click,
|
|
4090
|
+
value: VisualManagerModalEventValue.Apply,
|
|
4091
|
+
data: { preferences: this.preferences },
|
|
4092
|
+
});
|
|
4093
|
+
}
|
|
4094
|
+
else {
|
|
4095
|
+
this.popupModalService.hide({
|
|
4096
|
+
type: VisualManagerModalEventTypes.Click,
|
|
4097
|
+
value: VisualManagerModalEventValue.Apply,
|
|
4098
|
+
data: { preferences: this.preferences },
|
|
4099
|
+
});
|
|
4100
|
+
}
|
|
4101
|
+
}
|
|
4102
|
+
reset() {
|
|
4103
|
+
// Reset to original state
|
|
4104
|
+
this.preferences = JSON.parse(JSON.stringify(this.originalPreferences));
|
|
4105
|
+
// Reset FormControls
|
|
4106
|
+
this.preferences.forEach((preference) => {
|
|
4107
|
+
const control = this.preferenceControls.get(preference.id);
|
|
4108
|
+
if (control) {
|
|
4109
|
+
control.setValue(preference.name);
|
|
4110
|
+
}
|
|
4111
|
+
else {
|
|
4112
|
+
this.preferenceControls.set(preference.id, new FormControl(preference.name));
|
|
4113
|
+
}
|
|
4114
|
+
});
|
|
4115
|
+
this.changeDetectorRef.detectChanges();
|
|
4116
|
+
if (this.data) {
|
|
4117
|
+
this.event.emit({
|
|
4118
|
+
type: VisualManagerModalEventTypes.Click,
|
|
4119
|
+
value: VisualManagerModalEventValue.Reset,
|
|
4120
|
+
data: { preferences: this.preferences },
|
|
4121
|
+
});
|
|
4122
|
+
}
|
|
4123
|
+
else {
|
|
4124
|
+
this.popupModalService.hide({
|
|
4125
|
+
type: VisualManagerModalEventTypes.Click,
|
|
4126
|
+
value: VisualManagerModalEventValue.Reset,
|
|
4127
|
+
data: { preferences: this.preferences },
|
|
4128
|
+
});
|
|
4129
|
+
}
|
|
4130
|
+
}
|
|
4131
|
+
close() {
|
|
4132
|
+
if (this.data) {
|
|
4133
|
+
this.event.emit({
|
|
4134
|
+
type: VisualManagerModalEventTypes.Close,
|
|
4135
|
+
value: VisualManagerModalEventValue.Close,
|
|
4136
|
+
});
|
|
4137
|
+
}
|
|
4138
|
+
else {
|
|
4139
|
+
this.popupModalService.hide({
|
|
4140
|
+
type: VisualManagerModalEventTypes.Close,
|
|
4141
|
+
value: VisualManagerModalEventValue.Close,
|
|
4142
|
+
});
|
|
4143
|
+
}
|
|
4144
|
+
}
|
|
4145
|
+
onPreferenceNameChange(preference, newName) {
|
|
4146
|
+
const index = this.preferences.findIndex((p) => p.id === preference.id);
|
|
4147
|
+
if (index !== -1) {
|
|
4148
|
+
this.preferences[index].name = newName || '';
|
|
4149
|
+
const control = this.preferenceControls.get(preference.id);
|
|
4150
|
+
if (control && control.value !== newName) {
|
|
4151
|
+
control.setValue(newName || '', { emitEvent: false });
|
|
4152
|
+
}
|
|
4153
|
+
this.changeDetectorRef.detectChanges();
|
|
4154
|
+
}
|
|
4155
|
+
}
|
|
4156
|
+
getPreferenceControl(preferenceId) {
|
|
4157
|
+
return this.preferenceControls.get(preferenceId) || new FormControl('');
|
|
4158
|
+
}
|
|
4159
|
+
onDragStart(event, preference, isSelected) {
|
|
4160
|
+
if (event.dataTransfer) {
|
|
4161
|
+
event.dataTransfer.effectAllowed = 'move';
|
|
4162
|
+
event.dataTransfer.setData('text/plain', JSON.stringify({ id: preference.id, isSelected }));
|
|
4163
|
+
}
|
|
4164
|
+
if (event.target) {
|
|
4165
|
+
event.target.style.opacity = '0.5';
|
|
4166
|
+
}
|
|
4167
|
+
}
|
|
4168
|
+
onDragEnd(event) {
|
|
4169
|
+
if (event.target) {
|
|
4170
|
+
event.target.style.opacity = '1';
|
|
4171
|
+
}
|
|
4172
|
+
}
|
|
4173
|
+
onDragOver(event) {
|
|
4174
|
+
event.preventDefault();
|
|
4175
|
+
if (event.dataTransfer) {
|
|
4176
|
+
event.dataTransfer.dropEffect = 'move';
|
|
4177
|
+
}
|
|
4178
|
+
}
|
|
4179
|
+
onDrop(event, targetPreference, isSelected) {
|
|
4180
|
+
event.preventDefault();
|
|
4181
|
+
event.stopPropagation();
|
|
4182
|
+
if (!event.dataTransfer) {
|
|
4183
|
+
return;
|
|
4184
|
+
}
|
|
4185
|
+
const data = event.dataTransfer.getData('text/plain');
|
|
4186
|
+
if (!data) {
|
|
4187
|
+
return;
|
|
4188
|
+
}
|
|
4189
|
+
try {
|
|
4190
|
+
const { id: draggedId, isSelected: draggedIsSelected } = JSON.parse(data);
|
|
4191
|
+
// Only allow reordering within the same section (selected or deselected)
|
|
4192
|
+
if (draggedIsSelected !== isSelected) {
|
|
4193
|
+
return;
|
|
4194
|
+
}
|
|
4195
|
+
const draggedIndex = this.preferences.findIndex((p) => p.id === draggedId);
|
|
4196
|
+
const targetIndex = this.preferences.findIndex((p) => p.id === targetPreference.id);
|
|
4197
|
+
if (draggedIndex === -1 || targetIndex === -1 || draggedIndex === targetIndex) {
|
|
4198
|
+
return;
|
|
4199
|
+
}
|
|
4200
|
+
// Reorder the items
|
|
4201
|
+
const [draggedItem] = this.preferences.splice(draggedIndex, 1);
|
|
4202
|
+
this.preferences.splice(targetIndex, 0, draggedItem);
|
|
4203
|
+
this.changeDetectorRef.detectChanges();
|
|
4204
|
+
}
|
|
4205
|
+
catch (error) {
|
|
4206
|
+
console.error('Error handling drop:', error);
|
|
4207
|
+
}
|
|
4208
|
+
}
|
|
4209
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibVisualManagerModalComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i2.PopupModalService }, { token: MODAL_DATA, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
4210
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.14", type: LibVisualManagerModalComponent, isStandalone: true, selector: "lib-visual-manager-modal", inputs: { data: "data" }, outputs: { event: "event" }, providers: [LibModalComponent], viewQueries: [{ propertyName: "childModalElementRef", first: true, predicate: ["childModalElementRef"], descendants: true }], ngImport: i0, template: "<div class=\"visual-manager-modal\" #childModalElementRef>\n <header class=\"visual-manager-modal__header\">\n <div class=\"visual-manager-modal__header-left\">\n <img class=\"visual-manager-modal__filter-icon\" src=\"assets/icons/filter-icon.svg\" alt=\"Filter icon\" />\n <h2 class=\"visual-manager-modal__title\">{{ 'VISUAL_MANAGER_MODAL.TITLE' | translate }}</h2>\n </div>\n <button class=\"visual-manager-modal__close-button\" (click)=\"close()\">\n <img class=\"visual-manager-modal__close-icon\" src=\"assets/icons/close-icon.svg\" alt=\"Close\" />\n </button>\n </header>\n\n <div class=\"visual-manager-modal__content\">\n <!-- Selected Items Section -->\n @if (selectedItems.length > 0) {\n <div class=\"visual-manager-modal__section\">\n <ol class=\"visual-manager-modal__list visual-manager-modal__list--ordered\">\n @for (preference of selectedItems; track preference.id; let i = $index) {\n <li class=\"visual-manager-modal__item\" (dragover)=\"onDragOver($event)\" (drop)=\"onDrop($event, preference, true)\">\n <span class=\"visual-manager-modal__item-number\">{{ i + 1 }}</span>\n <div class=\"visual-manager-modal__input-wrapper\">\n <lib-input-field\n class=\"visual-manager-modal__item-name\"\n [formControl]=\"getPreferenceControl(preference.id)\"\n (valueChange)=\"onPreferenceNameChange(preference, $event)\"\n ></lib-input-field>\n <button class=\"visual-manager-modal__action-button1\"></button>\n <button class=\"visual-manager-modal__action-button\" (click)=\"togglePreference(preference, $event)\">\n <img class=\"visual-manager-modal__action-icon\" src=\"assets/icons/close-icon.svg\" alt=\"Remove\" />\n </button>\n </div>\n <img\n class=\"visual-manager-modal__drag-handle\"\n src=\"assets/icons/drag-handle.svg\"\n alt=\"Drag handle\"\n draggable=\"true\"\n (dragstart)=\"onDragStart($event, preference, true)\"\n (dragend)=\"onDragEnd($event)\"\n />\n </li>\n }\n </ol>\n </div>\n }\n\n <!-- Separator -->\n @if (selectedItems.length > 0 && deselectedItems.length > 0) {\n <div class=\"visual-manager-modal__separator\"></div>\n }\n\n <!-- Deselected Items Section -->\n @if (deselectedItems.length > 0) {\n <div class=\"visual-manager-modal__section\">\n <ul class=\"visual-manager-modal__list\">\n @for (preference of deselectedItems; track preference.id) {\n <li class=\"visual-manager-modal__item\" (dragover)=\"onDragOver($event)\" (drop)=\"onDrop($event, preference, false)\">\n <div class=\"visual-manager-modal__input-wrapper\">\n <lib-input-field\n class=\"visual-manager-modal__item-name\"\n [formControl]=\"getPreferenceControl(preference.id)\"\n (valueChange)=\"onPreferenceNameChange(preference, $event)\"\n ></lib-input-field>\n <button class=\"visual-manager-modal__action-button1\"></button>\n <button class=\"visual-manager-modal__action-button\" (click)=\"togglePreference(preference, $event)\">\n <img class=\"visual-manager-modal__action-icon\" src=\"assets/icons/plus.svg\" alt=\"Add\" />\n </button>\n </div>\n <img\n class=\"visual-manager-modal__drag-handle\"\n src=\"assets/icons/drag-handle.svg\"\n alt=\"Drag handle\"\n draggable=\"true\"\n (dragstart)=\"onDragStart($event, preference, false)\"\n (dragend)=\"onDragEnd($event)\"\n />\n </li>\n }\n </ul>\n </div>\n }\n </div>\n\n <footer class=\"visual-manager-modal__footer\">\n <lib-secondary-btn (click)=\"reset()\">\n {{ 'VISUAL_MANAGER_MODAL.RESET' | translate }}\n </lib-secondary-btn>\n <lib-primary-btn (click)=\"apply()\">\n {{ 'VISUAL_MANAGER_MODAL.APPLY' | translate }}\n </lib-primary-btn>\n </footer>\n</div>\n", styles: [":host{font-size:clamp(0px,3.2dvw,15px)}:host *{box-sizing:border-box}.visual-manager-modal{-webkit-backdrop-filter:blur(.625em);backdrop-filter:blur(.625em);background:linear-gradient(180deg,#323133,#1f1e20);color:#fff;padding:1.5em 2em;width:28.125em;margin:0 auto;border-radius:1.5625em;font-family:Gilroy;box-shadow:.5em .5em 1em #00000080,-.5em -.5em 1em #ffffff0d;position:relative;display:flex;flex-direction:column}.visual-manager-modal__header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:1.5em;padding-bottom:1em;border-bottom:1px solid rgba(255,255,255,.1);gap:.75em}.visual-manager-modal__header-left{display:flex;flex-direction:column;align-items:center;gap:.5em;flex:1}.visual-manager-modal__filter-icon{width:3em;height:3em;cursor:pointer;flex-shrink:0}.visual-manager-modal__title{font-size:1.25em;font-weight:500;font-family:Gilroy;margin:0;color:#fff}.visual-manager-modal__close-button{background:transparent;border:none;cursor:pointer;padding:.25em;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:background .2s}.visual-manager-modal__close-button:hover{background:#ffffff1a}.visual-manager-modal__close-icon{width:2em;height:2em;filter:brightness(0) saturate(100%) invert(39%) sepia(0%) saturate(0%) hue-rotate(0deg) brightness(98%) contrast(105%)}.visual-manager-modal__content{margin-bottom:1.5em;max-height:50vh;overflow-y:auto;flex:1;display:flex;flex-direction:column;gap:1em}.visual-manager-modal__section{display:flex;flex-direction:column;gap:.75em}.visual-manager-modal__section-label{font-size:.9em;font-weight:500;color:#4a9eff;margin-bottom:.25em}.visual-manager-modal__separator{height:1px;background:#ffffff1a;margin:.5em 0}.visual-manager-modal__list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.75em}.visual-manager-modal__list--ordered{list-style:none}.visual-manager-modal__item{display:flex;align-items:center;gap:.5em;width:100%}.visual-manager-modal__item-number{display:flex;align-items:center;justify-content:center;min-width:1.5em;height:1.5em;font-size:.9em;font-weight:500;color:#ffffffb3;flex-shrink:0}.visual-manager-modal__input-wrapper{position:relative;flex:1;min-width:0}.visual-manager-modal__item-name{width:100%}.visual-manager-modal__item-name ::ng-deep .content-wrapper{position:relative}.visual-manager-modal__item-name ::ng-deep .input-field,.visual-manager-modal__item-name ::ng-deep .input-field-readonly{padding-right:2.5em}.visual-manager-modal__action-button{position:absolute;right:.4em;top:50%;transform:translateY(-50%);background:linear-gradient(174.9deg,#595859cf -26.99%,#29252dcf 22.7% 100.94%);border:none;cursor:pointer;padding:0;display:flex;align-items:center;justify-content:center;z-index:10;transition:all .2s;width:3em;height:3em;border-radius:50%;pointer-events:auto;-webkit-backdrop-filter:blur(.5326657891px);backdrop-filter:blur(.5326657891px);box-shadow:7.24px 6.58px 17.77px 1.65px #121212a6,0 0 2.45px #0000004d}.visual-manager-modal__action-button:active{opacity:.9;box-shadow:inset 2px 2px 4px #0006,inset -2px -2px 4px #ffffff14}.visual-manager-modal__action-button1{position:absolute;right:.4em;top:50%;transform:translateY(-50%);background:linear-gradient(174.9deg,#69686acf 28.4%,#29252dcf 92.06% 100.94%);border:none;cursor:pointer;padding:0;display:flex;align-items:center;justify-content:center;z-index:10;transition:all .2s;width:3em;height:3em;border-radius:50%;pointer-events:auto;-webkit-backdrop-filter:blur(.5326657891px);backdrop-filter:blur(.5326657891px);box-shadow:0 2.56px 2.56px .82px #0000006e,0 0 10.65px 5.33px #4242429c}.visual-manager-modal__action-icon{width:1em;height:1em;display:block}.visual-manager-modal__drag-handle{width:1em;height:1em;cursor:grab;flex-shrink:0;opacity:.6;-webkit-user-select:none;user-select:none}.visual-manager-modal__drag-handle:active{cursor:grabbing}.visual-manager-modal__item.dragging{opacity:.5}.visual-manager-modal__footer{display:flex;justify-content:space-between;gap:1em;padding-top:1em;border-top:1px solid rgba(255,255,255,.1);margin-top:auto}.visual-manager-modal__footer lib-secondary-btn,.visual-manager-modal__footer lib-primary-btn{flex:1}.visual-manager-modal__content::-webkit-scrollbar{width:.5em}.visual-manager-modal__content::-webkit-scrollbar-track{background:#0003;border-radius:.25em}.visual-manager-modal__content::-webkit-scrollbar-thumb{background:#fff3;border-radius:.25em}.visual-manager-modal__content::-webkit-scrollbar-thumb:hover{background:#ffffff4d}@media (max-width: 768px){:host{font-size:calc(clamp(0px,3.2dvw,15px)*.8)}.visual-manager-modal{width:90%;padding:1.25em 1.5em}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: ButtonsModule }, { kind: "component", type: i2.PrimaryBtnComponent, selector: "lib-primary-btn", inputs: ["hoverOutline", "disabled", "type", "form", "label", "showArrowIcon", "disableTextShadow", "loading$"] }, { kind: "component", type: i2.SecondaryBtnComponent, selector: "lib-secondary-btn", inputs: ["hoverOutline", "disabled", "type", "form", "label", "showArrowIcon", "disableTextShadow", "loading$"] }, { kind: "ngmodule", type: InputFieldModule }, { kind: "component", type: i2.InputFieldComponent, selector: "lib-input-field,[lib-input-field]", inputs: ["name", "autocomplete", "label", "placeholder", "type", "readonly", "focus", "enableGoogleAddress", "locationAutocompleteConfig", "defaultLocation", "mask", "prefix", "suffix", "maxLength", "value", "address", "textarea", "resize", "counter", "patterns", "trimWhiteSpace", "disabled"], outputs: ["mapError", "locationChange", "keyDown", "onBlur"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] }); }
|
|
4211
|
+
}
|
|
4212
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibVisualManagerModalComponent, decorators: [{
|
|
4213
|
+
type: Component,
|
|
4214
|
+
args: [{ selector: 'lib-visual-manager-modal', standalone: true, imports: [CommonModule, TranslateModule, ButtonsModule, InputFieldModule, ReactiveFormsModule], providers: [LibModalComponent], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "<div class=\"visual-manager-modal\" #childModalElementRef>\n <header class=\"visual-manager-modal__header\">\n <div class=\"visual-manager-modal__header-left\">\n <img class=\"visual-manager-modal__filter-icon\" src=\"assets/icons/filter-icon.svg\" alt=\"Filter icon\" />\n <h2 class=\"visual-manager-modal__title\">{{ 'VISUAL_MANAGER_MODAL.TITLE' | translate }}</h2>\n </div>\n <button class=\"visual-manager-modal__close-button\" (click)=\"close()\">\n <img class=\"visual-manager-modal__close-icon\" src=\"assets/icons/close-icon.svg\" alt=\"Close\" />\n </button>\n </header>\n\n <div class=\"visual-manager-modal__content\">\n <!-- Selected Items Section -->\n @if (selectedItems.length > 0) {\n <div class=\"visual-manager-modal__section\">\n <ol class=\"visual-manager-modal__list visual-manager-modal__list--ordered\">\n @for (preference of selectedItems; track preference.id; let i = $index) {\n <li class=\"visual-manager-modal__item\" (dragover)=\"onDragOver($event)\" (drop)=\"onDrop($event, preference, true)\">\n <span class=\"visual-manager-modal__item-number\">{{ i + 1 }}</span>\n <div class=\"visual-manager-modal__input-wrapper\">\n <lib-input-field\n class=\"visual-manager-modal__item-name\"\n [formControl]=\"getPreferenceControl(preference.id)\"\n (valueChange)=\"onPreferenceNameChange(preference, $event)\"\n ></lib-input-field>\n <button class=\"visual-manager-modal__action-button1\"></button>\n <button class=\"visual-manager-modal__action-button\" (click)=\"togglePreference(preference, $event)\">\n <img class=\"visual-manager-modal__action-icon\" src=\"assets/icons/close-icon.svg\" alt=\"Remove\" />\n </button>\n </div>\n <img\n class=\"visual-manager-modal__drag-handle\"\n src=\"assets/icons/drag-handle.svg\"\n alt=\"Drag handle\"\n draggable=\"true\"\n (dragstart)=\"onDragStart($event, preference, true)\"\n (dragend)=\"onDragEnd($event)\"\n />\n </li>\n }\n </ol>\n </div>\n }\n\n <!-- Separator -->\n @if (selectedItems.length > 0 && deselectedItems.length > 0) {\n <div class=\"visual-manager-modal__separator\"></div>\n }\n\n <!-- Deselected Items Section -->\n @if (deselectedItems.length > 0) {\n <div class=\"visual-manager-modal__section\">\n <ul class=\"visual-manager-modal__list\">\n @for (preference of deselectedItems; track preference.id) {\n <li class=\"visual-manager-modal__item\" (dragover)=\"onDragOver($event)\" (drop)=\"onDrop($event, preference, false)\">\n <div class=\"visual-manager-modal__input-wrapper\">\n <lib-input-field\n class=\"visual-manager-modal__item-name\"\n [formControl]=\"getPreferenceControl(preference.id)\"\n (valueChange)=\"onPreferenceNameChange(preference, $event)\"\n ></lib-input-field>\n <button class=\"visual-manager-modal__action-button1\"></button>\n <button class=\"visual-manager-modal__action-button\" (click)=\"togglePreference(preference, $event)\">\n <img class=\"visual-manager-modal__action-icon\" src=\"assets/icons/plus.svg\" alt=\"Add\" />\n </button>\n </div>\n <img\n class=\"visual-manager-modal__drag-handle\"\n src=\"assets/icons/drag-handle.svg\"\n alt=\"Drag handle\"\n draggable=\"true\"\n (dragstart)=\"onDragStart($event, preference, false)\"\n (dragend)=\"onDragEnd($event)\"\n />\n </li>\n }\n </ul>\n </div>\n }\n </div>\n\n <footer class=\"visual-manager-modal__footer\">\n <lib-secondary-btn (click)=\"reset()\">\n {{ 'VISUAL_MANAGER_MODAL.RESET' | translate }}\n </lib-secondary-btn>\n <lib-primary-btn (click)=\"apply()\">\n {{ 'VISUAL_MANAGER_MODAL.APPLY' | translate }}\n </lib-primary-btn>\n </footer>\n</div>\n", styles: [":host{font-size:clamp(0px,3.2dvw,15px)}:host *{box-sizing:border-box}.visual-manager-modal{-webkit-backdrop-filter:blur(.625em);backdrop-filter:blur(.625em);background:linear-gradient(180deg,#323133,#1f1e20);color:#fff;padding:1.5em 2em;width:28.125em;margin:0 auto;border-radius:1.5625em;font-family:Gilroy;box-shadow:.5em .5em 1em #00000080,-.5em -.5em 1em #ffffff0d;position:relative;display:flex;flex-direction:column}.visual-manager-modal__header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:1.5em;padding-bottom:1em;border-bottom:1px solid rgba(255,255,255,.1);gap:.75em}.visual-manager-modal__header-left{display:flex;flex-direction:column;align-items:center;gap:.5em;flex:1}.visual-manager-modal__filter-icon{width:3em;height:3em;cursor:pointer;flex-shrink:0}.visual-manager-modal__title{font-size:1.25em;font-weight:500;font-family:Gilroy;margin:0;color:#fff}.visual-manager-modal__close-button{background:transparent;border:none;cursor:pointer;padding:.25em;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:background .2s}.visual-manager-modal__close-button:hover{background:#ffffff1a}.visual-manager-modal__close-icon{width:2em;height:2em;filter:brightness(0) saturate(100%) invert(39%) sepia(0%) saturate(0%) hue-rotate(0deg) brightness(98%) contrast(105%)}.visual-manager-modal__content{margin-bottom:1.5em;max-height:50vh;overflow-y:auto;flex:1;display:flex;flex-direction:column;gap:1em}.visual-manager-modal__section{display:flex;flex-direction:column;gap:.75em}.visual-manager-modal__section-label{font-size:.9em;font-weight:500;color:#4a9eff;margin-bottom:.25em}.visual-manager-modal__separator{height:1px;background:#ffffff1a;margin:.5em 0}.visual-manager-modal__list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.75em}.visual-manager-modal__list--ordered{list-style:none}.visual-manager-modal__item{display:flex;align-items:center;gap:.5em;width:100%}.visual-manager-modal__item-number{display:flex;align-items:center;justify-content:center;min-width:1.5em;height:1.5em;font-size:.9em;font-weight:500;color:#ffffffb3;flex-shrink:0}.visual-manager-modal__input-wrapper{position:relative;flex:1;min-width:0}.visual-manager-modal__item-name{width:100%}.visual-manager-modal__item-name ::ng-deep .content-wrapper{position:relative}.visual-manager-modal__item-name ::ng-deep .input-field,.visual-manager-modal__item-name ::ng-deep .input-field-readonly{padding-right:2.5em}.visual-manager-modal__action-button{position:absolute;right:.4em;top:50%;transform:translateY(-50%);background:linear-gradient(174.9deg,#595859cf -26.99%,#29252dcf 22.7% 100.94%);border:none;cursor:pointer;padding:0;display:flex;align-items:center;justify-content:center;z-index:10;transition:all .2s;width:3em;height:3em;border-radius:50%;pointer-events:auto;-webkit-backdrop-filter:blur(.5326657891px);backdrop-filter:blur(.5326657891px);box-shadow:7.24px 6.58px 17.77px 1.65px #121212a6,0 0 2.45px #0000004d}.visual-manager-modal__action-button:active{opacity:.9;box-shadow:inset 2px 2px 4px #0006,inset -2px -2px 4px #ffffff14}.visual-manager-modal__action-button1{position:absolute;right:.4em;top:50%;transform:translateY(-50%);background:linear-gradient(174.9deg,#69686acf 28.4%,#29252dcf 92.06% 100.94%);border:none;cursor:pointer;padding:0;display:flex;align-items:center;justify-content:center;z-index:10;transition:all .2s;width:3em;height:3em;border-radius:50%;pointer-events:auto;-webkit-backdrop-filter:blur(.5326657891px);backdrop-filter:blur(.5326657891px);box-shadow:0 2.56px 2.56px .82px #0000006e,0 0 10.65px 5.33px #4242429c}.visual-manager-modal__action-icon{width:1em;height:1em;display:block}.visual-manager-modal__drag-handle{width:1em;height:1em;cursor:grab;flex-shrink:0;opacity:.6;-webkit-user-select:none;user-select:none}.visual-manager-modal__drag-handle:active{cursor:grabbing}.visual-manager-modal__item.dragging{opacity:.5}.visual-manager-modal__footer{display:flex;justify-content:space-between;gap:1em;padding-top:1em;border-top:1px solid rgba(255,255,255,.1);margin-top:auto}.visual-manager-modal__footer lib-secondary-btn,.visual-manager-modal__footer lib-primary-btn{flex:1}.visual-manager-modal__content::-webkit-scrollbar{width:.5em}.visual-manager-modal__content::-webkit-scrollbar-track{background:#0003;border-radius:.25em}.visual-manager-modal__content::-webkit-scrollbar-thumb{background:#fff3;border-radius:.25em}.visual-manager-modal__content::-webkit-scrollbar-thumb:hover{background:#ffffff4d}@media (max-width: 768px){:host{font-size:calc(clamp(0px,3.2dvw,15px)*.8)}.visual-manager-modal{width:90%;padding:1.25em 1.5em}}\n"] }]
|
|
4215
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i2.PopupModalService }, { type: undefined, decorators: [{
|
|
4216
|
+
type: Optional
|
|
4217
|
+
}, {
|
|
4218
|
+
type: Inject,
|
|
4219
|
+
args: [MODAL_DATA]
|
|
4220
|
+
}] }], propDecorators: { childModalElementRef: [{
|
|
4221
|
+
type: ViewChild,
|
|
4222
|
+
args: ['childModalElementRef']
|
|
4223
|
+
}], data: [{
|
|
4224
|
+
type: Input
|
|
4225
|
+
}], event: [{
|
|
4226
|
+
type: Output
|
|
4227
|
+
}] } });
|
|
4228
|
+
|
|
4132
4229
|
class LibClientDashboardComponent {
|
|
4133
4230
|
constructor(cdr) {
|
|
4134
4231
|
this.cdr = cdr;
|
|
@@ -4282,11 +4379,11 @@ class LibClientDashboardComponent {
|
|
|
4282
4379
|
});
|
|
4283
4380
|
}
|
|
4284
4381
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibClientDashboardComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
4285
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.14", type: LibClientDashboardComponent, isStandalone: true, selector: "lib-client-dashboard", inputs: { config: "config", agendaAdsData: "agendaAdsData" }, outputs: { addMessage: "addMessage", getMessages: "getMessages", bookEvent: "bookEvent", removeSuggestion: "removeSuggestion", activeIndexChange: "activeIndexChange", handleClosedAlert: "handleClosedAlert", handleAppearPopup: "handleAppearPopup" }, ngImport: i0, template: "<!-- Horizontal Agenda -->\n<div class=\"agenda-handler\" [class.height-zero]=\"isMinimizeVisual\" [class.has-ads]=\"config?.agendaAdsTemplate\">\n <h3 class=\"agenda-title\">\n {{ 'CLIENT_DASHBOARD.TITLES.UPCOMING_DATES' | translate }}\n <span (click)=\"onHandleAppearPopup(alertStatusFields.upcomingDates)\"><img [width]=\"12\" [height]=\"12\" [src]=\"assetPaths.defaultIcon\" [alt]=\"item?.label + ' icon'\" /></span>\n </h3>\n <lib-agenda [events]=\"config?.events\" [adsTemplate]=\"config?.agendaAdsTemplate\" [agendaAdsData]=\"agendaAdsData\"></lib-agenda>\n @if (config.alertStatus.upcomingDates) {\n <div class=\"alert-popup-agenda\" [class.opacity-zero]=\"isMinimizeVisual\">\n <lib-alert-popup\n [title]=\"'CLIENT_DASHBOARD.ALERT_POPUP.UPCOMING_DATES.TITLE' | translate\"\n [description]=\"'CLIENT_DASHBOARD.ALERT_POPUP.UPCOMING_DATES.DESCRIPTION' | translate\"\n (closed)=\"\n onClosedAlert({\n event: $event,\n field: alertStatusFields.upcomingDates,\n })\n \"\n ></lib-alert-popup>\n </div>\n }\n</div>\n<!-- Scheduler - Trait - Spider - Handoff -->\n<div\n (click)=\"onClick($event)\"\n [class.height-zero-activated]=\"isMinimizeVisual\"\n (touchstart)=\"onTouchStart($event)\"\n [class.has-ads]=\"!!config?.agendaAdsTemplate?.elementRef\" class=\"client-home__container\">\n <lib-dashboard-swipeable-tabs\n [activeIndex]=\"config?.activeTabIndex\"\n [thumbsSwiperOptions]=\"dashboardThumbsSwiperOptions\"\n [mainSwiperOptions]=\"mainSwiperOptions\"\n [slideContentMaxHeight]=\"config?.slideContentMaxHeight\"\n [bottomThumbs]=\"false\"\n [generalSwiperHeight]=\"'100%'\"\n [mainSwiperHeight]=\"'calc(100% - 34px)'\"\n [thumbsSwiperHeight]=\"'34px'\"\n [subMainSwiperHeight]=\"'100%'\"\n (activeIndexChange)=\"onActiveTabIndexChange($event)\"\n >\n <ng-container thumb-slides>\n @for (item of items; let i = $index; track item) {\n <swiper-slide class=\"main-tab\">\n <span\n class=\"tab\"\n [class.active]=\"i === config.activeTabIndex\"\n [class.disabled]=\"item?.key === 'CHAT_HANDOFF' && !(config?.clientMatches$ | async)?.[config?.activeIndex]?.showHandoff && !config.default\"\n >\n {{ item?.label | translate }}\n @if (i === config.activeTabIndex) {\n <ng-container>\n <img\n [width]=\"12\"\n [height]=\"12\"\n [src]=\"assetPaths.defaultIcon\"\n [alt]=\"item?.label + ' info icon'\"\n (click)=\"item.onClickInfo()\"\n />\n <img\n [width]=\"12\"\n [height]=\"12\"\n [src]=\"assetPaths.settingsIcon\"\n alt=\"Settings icon\"\n (click)=\"onSettingsClick(); $event.stopPropagation()\"\n style=\"cursor: pointer;\"\n />\n </ng-container>\n }\n </span>\n </swiper-slide>\n }\n </ng-container>\n <ng-container main-slides>\n <swiper-slide class=\"no-swiping-selector swiper__scheduler\">\n <div class=\"swiper__client-home\">\n @if (config.alertStatus.chatMeetupAgenda) {\n <div class=\"alert-popup-client-scheduler\">\n <lib-alert-popup\n [title]=\"'CLIENT_DASHBOARD.ALERT_POPUP.CHAT_MEETUP_AGENDA.TITLE' | translate\"\n [description]=\"'CLIENT_DASHBOARD.ALERT_POPUP.CHAT_MEETUP_AGENDA.DESCRIPTION' | translate\"\n (closed)=\"\n onClosedAlert({\n event: $event,\n field: alertStatusFields.chatMeetupAgenda,\n })\n \"\n ></lib-alert-popup>\n </div>\n }\n <lib-client-home\n [config]=\"{\n schedulerAdsTemplate: config?.schedulerAdsTemplate,\n schedulerTabAdsTemplate: config?.schedulerTabAdsTemplate,\n chatAdsTemplate: config?.chatAdsTemplate,\n chatTabAdsTemplate: config?.chatTabAdsTemplate,\n traitVisualAdsTemplate: config?.traitVisualAdsTemplate,\n activeIndex: config?.activeIndex,\n clientMatches$: config?.clientMatches$,\n schedulers$: config?.schedulers$,\n component: components.ChatScheduler,\n default: config?.default,\n thumbsSwiperOptions: clientHomeThumbsSwiperOptions,\n alertStatus: config.alertStatus,\n bottomThumbs: true,\n showValueProportionLabel: false,\n hideProgressBar: true,\n }\"\n (bookEvent)=\"bookEvent?.emit($event)\"\n (removeSuggestion)=\"removeSuggestion?.emit($event)\"\n (addMessage)=\"handleNewMessage($event)\"\n (getMessages)=\"getMessages.emit($event)\"\n (activeIndexChange)=\"onActiveProspectChange($event)\"\n (handleClosedAlert)=\"onClosedAlert($event)\"\n (handleAppearPopup)=\"onHandleAppearPopup($event)\"\n ></lib-client-home>\n </div>\n </swiper-slide>\n <swiper-slide class=\"no-swiping-selector\">\n <div class=\"swiper__client-home\">\n @if (config.alertStatus.compatibilityProfileTrait) {\n <div class=\"alert-popup-trait-chart\">\n <lib-alert-popup\n [title]=\"'CLIENT_DASHBOARD.ALERT_POPUP.FORCE_GRAPH_COMPATIBILITY.TITLE' | translate\"\n [description]=\"'CLIENT_DASHBOARD.ALERT_POPUP.FORCE_GRAPH_COMPATIBILITY.DESCRIPTION' | translate\"\n (closed)=\"\n onClosedAlert({\n event: $event,\n field: alertStatusFields.compatibilityProfileTrait,\n })\n \"\n ></lib-alert-popup>\n </div>\n }\n <lib-client-home\n [config]=\"{\n schedulerAdsTemplate: config?.schedulerAdsTemplate,\n schedulerTabAdsTemplate: config?.schedulerTabAdsTemplate,\n chatAdsTemplate: config?.chatAdsTemplate,\n chatTabAdsTemplate: config?.chatTabAdsTemplate,\n traitVisualAdsTemplate: config?.traitVisualAdsTemplate,\n activeIndex: config?.activeChartItem,\n clientMatches$: config?.clientMatches$,\n component: components.ClientMatchTraitChart,\n default: config?.default,\n thumbsSwiperOptions: clientHomeThumbsSwiperOptions,\n polygonColors: config?.polygonColors,\n spiderConfig: config?.spiderConfig,\n alertStatus: config.alertStatus,\n bottomThumbs: true,\n showValueProportionLabel: false,\n hideProgressBar: true,\n }\"\n ></lib-client-home>\n </div>\n </swiper-slide>\n <swiper-slide class=\"no-swiping-selector\">\n <div class=\"swiper__client-home\">\n @if (config.alertStatus.compatibilityProfileSpider) {\n <div class=\"alert-popup-spider-chart\">\n <lib-alert-popup\n [title]=\"'CLIENT_DASHBOARD.ALERT_POPUP.COMPATIBILITY_PROFILE.TITLE' | translate\"\n [description]=\"'CLIENT_DASHBOARD.ALERT_POPUP.COMPATIBILITY_PROFILE.DESCRIPTION' | translate\"\n (closed)=\"\n onClosedAlert({\n event: $event,\n field: alertStatusFields.compatibilityProfileSpider,\n })\n \"\n ></lib-alert-popup>\n </div>\n }\n <div [class.spider-chart___active]=\"isMinimizeVisual\">\n <lib-client-home\n [config]=\"{\n schedulerAdsTemplate: config?.schedulerAdsTemplate,\n schedulerTabAdsTemplate: config?.schedulerTabAdsTemplate,\n chatAdsTemplate: config?.chatAdsTemplate,\n chatTabAdsTemplate: config?.chatTabAdsTemplate,\n traitVisualAdsTemplate: config?.traitVisualAdsTemplate,\n activeIndex: config?.activeChartItem,\n clientMatches$: config?.clientMatches$,\n component: components.ClientMatchSpiderChart,\n default: config?.default,\n spiderConfig: config?.spiderConfig,\n polygonColors: config?.polygonColors,\n alertStatus: config.alertStatus,\n bottomThumbs: true,\n showValueProportionLabel: false,\n hideProgressBar: true,\n }\"\n ></lib-client-home>\n </div>\n </div>\n </swiper-slide>\n @if ((config?.clientMatches$ | async)?.[config?.activeIndex]?.showHandoff || config.default) {\n <swiper-slide class=\"no-swiping-selector\">\n <div class=\"swiper__client-home\">\n @if (config.alertStatus.chatHandoff) {\n <div class=\"alert-popup-chat-handoff\">\n <lib-alert-popup\n [title]=\"'CLIENT_DASHBOARD.ALERT_POPUP.HANDOFF_CHAT.TITLE' | translate\"\n [description]=\"'CLIENT_DASHBOARD.ALERT_POPUP.HANDOFF_CHAT.DESCRIPTION' | translate\"\n (closed)=\"\n onClosedAlert({\n event: $event,\n field: alertStatusFields.chatHandoff,\n })\n \"\n ></lib-alert-popup>\n </div>\n }\n @if (config.alertStatus.chatProgress) {\n <div class=\"alert-popup-chat-progress\">\n <lib-alert-popup\n [title]=\"'CLIENT_DASHBOARD.ALERT_POPUP.CHAT_PROGRESS.TITLE' | translate\"\n [description]=\"'CLIENT_DASHBOARD.ALERT_POPUP.CHAT_PROGRESS.DESCRIPTION' | translate\"\n (closed)=\"\n onClosedAlert({\n event: $event,\n field: alertStatusFields.chatProgress,\n })\n \"\n ></lib-alert-popup>\n </div>\n }\n <lib-client-home\n [config]=\"{\n schedulerAdsTemplate: config?.schedulerAdsTemplate,\n schedulerTabAdsTemplate: config?.schedulerTabAdsTemplate,\n chatAdsTemplate: config?.chatAdsTemplate,\n chatTabAdsTemplate: config?.chatTabAdsTemplate,\n traitVisualAdsTemplate: config?.traitVisualAdsTemplate,\n activeIndex: config?.activeIndex,\n clientMatches$: config?.clientMatches$,\n component: components.ChatHandoff,\n default: config?.default,\n alertStatus: config.alertStatus,\n hideStatuses: true,\n bottomThumbs: true,\n showValueProportionLabel: false,\n hideProgressBar: true,\n }\"\n (addMessage)=\"handleNewMessage($event)\"\n (getMessages)=\"getMessages?.emit($event)\"\n (activeIndexChange)=\"onActiveProspectChange($event)\"\n ></lib-client-home>\n </div>\n </swiper-slide>\n }\n </ng-container>\n </lib-dashboard-swipeable-tabs>\n</div>\n", styles: [":host{--match-percentage-font-size: 1.5em;--container-sides-shadow-width: 15px;--match-percentage-value-height: 3em;position:relative}.agenda-handler{height:133px;overflow:hidden;transition:height .5s ease;position:relative}.agenda-handler.has-ads{height:fit-content}.agenda-handler.height-zero-activated{height:100%!important}.agenda-handler .agenda-title{display:flex;width:100%;padding:0 23.5px;font-size:12px}.agenda-handler .agenda-title span{margin-left:5px}.agenda-handler lib-agenda{position:relative;display:block;width:100%;margin:auto;padding:0 5px}.agenda-handler .alert-popup-agenda{position:absolute;opacity:1;top:40px;right:40px;z-index:999;transition:opacity .3s ease}.client-home__container{height:calc(100% - 133px)}.client-home__container.has-ads{height:calc(100% - 190px)}.client-home__container>lib-swipeable-tabs{height:100%;display:block}.height-zero{height:0px!important}.opacity-zero{opacity:0!important;pointer-events:none}.tab{display:flex;gap:7px;padding:10px 30px;color:#fff9;cursor:pointer}.tab.active{color:#fff}.tab.disabled{opacity:.3;color:#fff9!important;pointer-events:none}.swiper__scheduler{height:100%}.swiper__scheduler lib-client-home{height:100%;display:block}.swiper__client-home{position:relative;width:100%;height:100%}.swiper__client-home .alert-popup-client-scheduler{position:absolute;z-index:999;top:100px;right:40px}.swiper__client-home .alert-popup-chat-handoff{position:absolute;z-index:999;top:40px;right:40px}.swiper__client-home .alert-popup-chat-progress{position:absolute;z-index:999;top:200px;right:40px}.swiper__client-home .alert-popup-trait-chart,.swiper__client-home .alert-popup-spider-chart{position:absolute;z-index:999;top:123px;right:40px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: LibChatComponentModule }, { kind: "ngmodule", type: LibAgendaModule }, { kind: "component", type: AgendaComponent, selector: "lib-agenda", inputs: ["adsTemplate", "agendaAdsData", "loading$", "startDate", "endDate", "events", "setAdsData"] }, { kind: "ngmodule", type: PipeModule }, { kind: "component", type: LibClientHomeComponent, selector: "lib-client-home", inputs: ["config"], outputs: ["activeIndexChange", "addMessage", "getMessages", "bookEvent", "removeSuggestion", "handleAppearPopup"] }, { kind: "component", type: LibDashboardSwipeableTabsComponent, selector: "lib-dashboard-swipeable-tabs", inputs: ["thumbsSwiperOptions", "mainSwiperOptions", "activeIndex", "bottomThumbs", "slideContentMaxHeight", "mainSwiperHeight", "subMainSwiperHeight", "thumbsSwiperHeight", "generalSwiperHeight"], outputs: ["activeIndexChange"] }, { kind: "ngmodule", type: SharedModule }, { kind: "component", type: AlertPopupComponent, selector: "lib-alert-popup", inputs: ["title", "description", "timeState", "number"], outputs: ["closed"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
4382
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.14", type: LibClientDashboardComponent, isStandalone: true, selector: "lib-client-dashboard", inputs: { config: "config", agendaAdsData: "agendaAdsData" }, outputs: { addMessage: "addMessage", getMessages: "getMessages", bookEvent: "bookEvent", removeSuggestion: "removeSuggestion", activeIndexChange: "activeIndexChange", handleClosedAlert: "handleClosedAlert", handleAppearPopup: "handleAppearPopup" }, ngImport: i0, template: "<!-- Horizontal Agenda -->\n<div class=\"agenda-handler\" [class.height-zero]=\"isMinimizeVisual\" [class.has-ads]=\"config?.agendaAdsTemplate\">\n <h3 class=\"agenda-title\">\n {{ 'CLIENT_DASHBOARD.TITLES.UPCOMING_DATES' | translate }}\n <span (click)=\"onHandleAppearPopup(alertStatusFields.upcomingDates)\"><img [width]=\"12\" [height]=\"12\" [src]=\"assetPaths.defaultIcon\" [alt]=\"item?.label + ' icon'\" /></span>\n </h3>\n <lib-agenda [events]=\"config?.events\" [adsTemplate]=\"config?.agendaAdsTemplate\" [agendaAdsData]=\"agendaAdsData\"></lib-agenda>\n @if (config.alertStatus.upcomingDates) {\n <div class=\"alert-popup-agenda\" [class.opacity-zero]=\"isMinimizeVisual\">\n <lib-alert-popup\n [title]=\"'CLIENT_DASHBOARD.ALERT_POPUP.UPCOMING_DATES.TITLE' | translate\"\n [description]=\"'CLIENT_DASHBOARD.ALERT_POPUP.UPCOMING_DATES.DESCRIPTION' | translate\"\n (closed)=\"\n onClosedAlert({\n event: $event,\n field: alertStatusFields.upcomingDates,\n })\n \"\n ></lib-alert-popup>\n </div>\n }\n</div>\n<!-- Scheduler - Trait - Spider - Handoff -->\n<div\n (click)=\"onClick($event)\"\n [class.height-zero-activated]=\"isMinimizeVisual\"\n (touchstart)=\"onTouchStart($event)\"\n [class.has-ads]=\"!!config?.agendaAdsTemplate?.elementRef\"\n class=\"client-home__container\"\n>\n <lib-dashboard-swipeable-tabs\n [activeIndex]=\"config?.activeTabIndex\"\n [thumbsSwiperOptions]=\"dashboardThumbsSwiperOptions\"\n [mainSwiperOptions]=\"mainSwiperOptions\"\n [slideContentMaxHeight]=\"config?.slideContentMaxHeight\"\n [bottomThumbs]=\"false\"\n [generalSwiperHeight]=\"'100%'\"\n [mainSwiperHeight]=\"'calc(100% - 34px)'\"\n [thumbsSwiperHeight]=\"'34px'\"\n [subMainSwiperHeight]=\"'100%'\"\n (activeIndexChange)=\"onActiveTabIndexChange($event)\"\n >\n <ng-container thumb-slides>\n @for (item of items; let i = $index; track item) {\n <swiper-slide class=\"main-tab\">\n <span\n class=\"tab\"\n [class.active]=\"i === config.activeTabIndex\"\n [class.disabled]=\"item?.key === 'CHAT_HANDOFF' && !(config?.clientMatches$ | async)?.[config?.activeIndex]?.showHandoff && !config.default\"\n >\n {{ item?.label | translate }}\n @if (i === config.activeTabIndex) {\n <ng-container>\n <img [width]=\"12\" [height]=\"12\" [src]=\"assetPaths.defaultIcon\" [alt]=\"item?.label + ' info icon'\" (click)=\"item.onClickInfo()\" />\n <img [width]=\"12\" [height]=\"12\" [src]=\"assetPaths.settingsIcon\" alt=\"Settings icon\" (click)=\"onSettingsClick(); $event.stopPropagation()\" style=\"cursor: pointer\" />\n </ng-container>\n }\n </span>\n </swiper-slide>\n }\n </ng-container>\n <ng-container main-slides>\n <swiper-slide class=\"no-swiping-selector swiper__scheduler\">\n <div class=\"swiper__client-home\">\n @if (config.alertStatus.chatMeetupAgenda) {\n <div class=\"alert-popup-client-scheduler\">\n <lib-alert-popup\n [title]=\"'CLIENT_DASHBOARD.ALERT_POPUP.CHAT_MEETUP_AGENDA.TITLE' | translate\"\n [description]=\"'CLIENT_DASHBOARD.ALERT_POPUP.CHAT_MEETUP_AGENDA.DESCRIPTION' | translate\"\n (closed)=\"\n onClosedAlert({\n event: $event,\n field: alertStatusFields.chatMeetupAgenda,\n })\n \"\n ></lib-alert-popup>\n </div>\n }\n <lib-client-home\n [config]=\"{\n schedulerAdsTemplate: config?.schedulerAdsTemplate,\n schedulerTabAdsTemplate: config?.schedulerTabAdsTemplate,\n chatAdsTemplate: config?.chatAdsTemplate,\n chatTabAdsTemplate: config?.chatTabAdsTemplate,\n traitVisualAdsTemplate: config?.traitVisualAdsTemplate,\n activeIndex: config?.activeIndex,\n clientMatches$: config?.clientMatches$,\n schedulers$: config?.schedulers$,\n component: components.ChatScheduler,\n default: config?.default,\n thumbsSwiperOptions: clientHomeThumbsSwiperOptions,\n alertStatus: config.alertStatus,\n bottomThumbs: true,\n showValueProportionLabel: false,\n hideProgressBar: true,\n }\"\n (bookEvent)=\"bookEvent?.emit($event)\"\n (removeSuggestion)=\"removeSuggestion?.emit($event)\"\n (addMessage)=\"handleNewMessage($event)\"\n (getMessages)=\"getMessages.emit($event)\"\n (activeIndexChange)=\"onActiveProspectChange($event)\"\n (handleClosedAlert)=\"onClosedAlert($event)\"\n (handleAppearPopup)=\"onHandleAppearPopup($event)\"\n ></lib-client-home>\n </div>\n </swiper-slide>\n <swiper-slide class=\"no-swiping-selector\">\n <div class=\"swiper__client-home\">\n @if (config.alertStatus.compatibilityProfileTrait) {\n <div class=\"alert-popup-trait-chart\">\n <lib-alert-popup\n [title]=\"'CLIENT_DASHBOARD.ALERT_POPUP.FORCE_GRAPH_COMPATIBILITY.TITLE' | translate\"\n [description]=\"'CLIENT_DASHBOARD.ALERT_POPUP.FORCE_GRAPH_COMPATIBILITY.DESCRIPTION' | translate\"\n (closed)=\"\n onClosedAlert({\n event: $event,\n field: alertStatusFields.compatibilityProfileTrait,\n })\n \"\n ></lib-alert-popup>\n </div>\n }\n <lib-client-home\n [config]=\"{\n schedulerAdsTemplate: config?.schedulerAdsTemplate,\n schedulerTabAdsTemplate: config?.schedulerTabAdsTemplate,\n chatAdsTemplate: config?.chatAdsTemplate,\n chatTabAdsTemplate: config?.chatTabAdsTemplate,\n traitVisualAdsTemplate: config?.traitVisualAdsTemplate,\n activeIndex: config?.activeChartItem,\n clientMatches$: config?.clientMatches$,\n component: components.ClientMatchTraitChart,\n default: config?.default,\n thumbsSwiperOptions: clientHomeThumbsSwiperOptions,\n polygonColors: config?.polygonColors,\n spiderConfig: config?.spiderConfig,\n alertStatus: config.alertStatus,\n bottomThumbs: true,\n showValueProportionLabel: false,\n hideProgressBar: true,\n }\"\n ></lib-client-home>\n </div>\n </swiper-slide>\n <swiper-slide class=\"no-swiping-selector\">\n <div class=\"swiper__client-home\">\n @if (config.alertStatus.compatibilityProfileSpider) {\n <div class=\"alert-popup-spider-chart\">\n <lib-alert-popup\n [title]=\"'CLIENT_DASHBOARD.ALERT_POPUP.COMPATIBILITY_PROFILE.TITLE' | translate\"\n [description]=\"'CLIENT_DASHBOARD.ALERT_POPUP.COMPATIBILITY_PROFILE.DESCRIPTION' | translate\"\n (closed)=\"\n onClosedAlert({\n event: $event,\n field: alertStatusFields.compatibilityProfileSpider,\n })\n \"\n ></lib-alert-popup>\n </div>\n }\n <div [class.spider-chart___active]=\"isMinimizeVisual\">\n <lib-client-home\n [config]=\"{\n schedulerAdsTemplate: config?.schedulerAdsTemplate,\n schedulerTabAdsTemplate: config?.schedulerTabAdsTemplate,\n chatAdsTemplate: config?.chatAdsTemplate,\n chatTabAdsTemplate: config?.chatTabAdsTemplate,\n traitVisualAdsTemplate: config?.traitVisualAdsTemplate,\n activeIndex: config?.activeChartItem,\n clientMatches$: config?.clientMatches$,\n component: components.ClientMatchSpiderChart,\n default: config?.default,\n spiderConfig: config?.spiderConfig,\n polygonColors: config?.polygonColors,\n alertStatus: config.alertStatus,\n bottomThumbs: true,\n showValueProportionLabel: false,\n hideProgressBar: true,\n }\"\n ></lib-client-home>\n </div>\n </div>\n </swiper-slide>\n @if ((config?.clientMatches$ | async)?.[config?.activeIndex]?.showHandoff || config.default) {\n <swiper-slide class=\"no-swiping-selector\">\n <div class=\"swiper__client-home\">\n @if (config.alertStatus.chatHandoff) {\n <div class=\"alert-popup-chat-handoff\">\n <lib-alert-popup\n [title]=\"'CLIENT_DASHBOARD.ALERT_POPUP.HANDOFF_CHAT.TITLE' | translate\"\n [description]=\"'CLIENT_DASHBOARD.ALERT_POPUP.HANDOFF_CHAT.DESCRIPTION' | translate\"\n (closed)=\"\n onClosedAlert({\n event: $event,\n field: alertStatusFields.chatHandoff,\n })\n \"\n ></lib-alert-popup>\n </div>\n }\n @if (config.alertStatus.chatProgress) {\n <div class=\"alert-popup-chat-progress\">\n <lib-alert-popup\n [title]=\"'CLIENT_DASHBOARD.ALERT_POPUP.CHAT_PROGRESS.TITLE' | translate\"\n [description]=\"'CLIENT_DASHBOARD.ALERT_POPUP.CHAT_PROGRESS.DESCRIPTION' | translate\"\n (closed)=\"\n onClosedAlert({\n event: $event,\n field: alertStatusFields.chatProgress,\n })\n \"\n ></lib-alert-popup>\n </div>\n }\n <lib-client-home\n [config]=\"{\n schedulerAdsTemplate: config?.schedulerAdsTemplate,\n schedulerTabAdsTemplate: config?.schedulerTabAdsTemplate,\n chatAdsTemplate: config?.chatAdsTemplate,\n chatTabAdsTemplate: config?.chatTabAdsTemplate,\n traitVisualAdsTemplate: config?.traitVisualAdsTemplate,\n activeIndex: config?.activeIndex,\n clientMatches$: config?.clientMatches$,\n component: components.ChatHandoff,\n default: config?.default,\n alertStatus: config.alertStatus,\n hideStatuses: true,\n bottomThumbs: true,\n showValueProportionLabel: false,\n hideProgressBar: true,\n }\"\n (addMessage)=\"handleNewMessage($event)\"\n (getMessages)=\"getMessages?.emit($event)\"\n (activeIndexChange)=\"onActiveProspectChange($event)\"\n ></lib-client-home>\n </div>\n </swiper-slide>\n }\n </ng-container>\n </lib-dashboard-swipeable-tabs>\n</div>\n", styles: [":host{--match-percentage-font-size: 1.5em;--container-sides-shadow-width: 15px;--match-percentage-value-height: 3em;position:relative}.agenda-handler{height:133px;overflow:hidden;transition:height .5s ease;position:relative}.agenda-handler.has-ads{height:fit-content}.agenda-handler.height-zero-activated{height:100%!important}.agenda-handler .agenda-title{display:flex;width:100%;padding:0 23.5px;font-size:12px}.agenda-handler .agenda-title span{margin-left:5px}.agenda-handler lib-agenda{position:relative;display:block;width:100%;margin:auto;padding:0 5px}.agenda-handler .alert-popup-agenda{position:absolute;opacity:1;top:40px;right:40px;z-index:999;transition:opacity .3s ease}.client-home__container{height:calc(100% - 133px)}.client-home__container.has-ads{height:calc(100% - 190px)}.client-home__container>lib-swipeable-tabs{height:100%;display:block}.height-zero{height:0px!important}.opacity-zero{opacity:0!important;pointer-events:none}.tab{display:flex;gap:7px;padding:10px 30px;color:#fff9;cursor:pointer}.tab.active{color:#fff}.tab.disabled{opacity:.3;color:#fff9!important;pointer-events:none}.swiper__scheduler{height:100%}.swiper__scheduler lib-client-home{height:100%;display:block}.swiper__client-home{position:relative;width:100%;height:100%}.swiper__client-home .alert-popup-client-scheduler{position:absolute;z-index:999;top:100px;right:40px}.swiper__client-home .alert-popup-chat-handoff{position:absolute;z-index:999;top:40px;right:40px}.swiper__client-home .alert-popup-chat-progress{position:absolute;z-index:999;top:200px;right:40px}.swiper__client-home .alert-popup-trait-chart,.swiper__client-home .alert-popup-spider-chart{position:absolute;z-index:999;top:123px;right:40px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: LibChatComponentModule }, { kind: "ngmodule", type: LibAgendaModule }, { kind: "component", type: AgendaComponent, selector: "lib-agenda", inputs: ["adsTemplate", "agendaAdsData", "loading$", "startDate", "endDate", "events", "setAdsData"] }, { kind: "ngmodule", type: PipeModule }, { kind: "component", type: LibClientHomeComponent, selector: "lib-client-home", inputs: ["config"], outputs: ["activeIndexChange", "addMessage", "getMessages", "bookEvent", "removeSuggestion", "handleAppearPopup"] }, { kind: "component", type: LibDashboardSwipeableTabsComponent, selector: "lib-dashboard-swipeable-tabs", inputs: ["thumbsSwiperOptions", "mainSwiperOptions", "activeIndex", "bottomThumbs", "slideContentMaxHeight", "mainSwiperHeight", "subMainSwiperHeight", "thumbsSwiperHeight", "generalSwiperHeight"], outputs: ["activeIndexChange"] }, { kind: "ngmodule", type: SharedModule }, { kind: "component", type: AlertPopupComponent, selector: "lib-alert-popup", inputs: ["title", "description", "timeState", "number"], outputs: ["closed"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
4286
4383
|
}
|
|
4287
4384
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibClientDashboardComponent, decorators: [{
|
|
4288
4385
|
type: Component,
|
|
4289
|
-
args: [{ selector: 'lib-client-dashboard', imports: [CommonModule, TranslateModule, LibChatComponentModule, LibAgendaModule, PipeModule, LibClientHomeComponent, LibDashboardSwipeableTabsComponent, SharedModule], schemas: [CUSTOM_ELEMENTS_SCHEMA], changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- Horizontal Agenda -->\n<div class=\"agenda-handler\" [class.height-zero]=\"isMinimizeVisual\" [class.has-ads]=\"config?.agendaAdsTemplate\">\n <h3 class=\"agenda-title\">\n {{ 'CLIENT_DASHBOARD.TITLES.UPCOMING_DATES' | translate }}\n <span (click)=\"onHandleAppearPopup(alertStatusFields.upcomingDates)\"><img [width]=\"12\" [height]=\"12\" [src]=\"assetPaths.defaultIcon\" [alt]=\"item?.label + ' icon'\" /></span>\n </h3>\n <lib-agenda [events]=\"config?.events\" [adsTemplate]=\"config?.agendaAdsTemplate\" [agendaAdsData]=\"agendaAdsData\"></lib-agenda>\n @if (config.alertStatus.upcomingDates) {\n <div class=\"alert-popup-agenda\" [class.opacity-zero]=\"isMinimizeVisual\">\n <lib-alert-popup\n [title]=\"'CLIENT_DASHBOARD.ALERT_POPUP.UPCOMING_DATES.TITLE' | translate\"\n [description]=\"'CLIENT_DASHBOARD.ALERT_POPUP.UPCOMING_DATES.DESCRIPTION' | translate\"\n (closed)=\"\n onClosedAlert({\n event: $event,\n field: alertStatusFields.upcomingDates,\n })\n \"\n ></lib-alert-popup>\n </div>\n }\n</div>\n<!-- Scheduler - Trait - Spider - Handoff -->\n<div\n (click)=\"onClick($event)\"\n [class.height-zero-activated]=\"isMinimizeVisual\"\n (touchstart)=\"onTouchStart($event)\"\n [class.has-ads]=\"!!config?.agendaAdsTemplate?.elementRef\" class=\"client-home__container\">\n <lib-dashboard-swipeable-tabs\n [activeIndex]=\"config?.activeTabIndex\"\n [thumbsSwiperOptions]=\"dashboardThumbsSwiperOptions\"\n [mainSwiperOptions]=\"mainSwiperOptions\"\n [slideContentMaxHeight]=\"config?.slideContentMaxHeight\"\n [bottomThumbs]=\"false\"\n [generalSwiperHeight]=\"'100%'\"\n [mainSwiperHeight]=\"'calc(100% - 34px)'\"\n [thumbsSwiperHeight]=\"'34px'\"\n [subMainSwiperHeight]=\"'100%'\"\n (activeIndexChange)=\"onActiveTabIndexChange($event)\"\n >\n <ng-container thumb-slides>\n @for (item of items; let i = $index; track item) {\n <swiper-slide class=\"main-tab\">\n <span\n class=\"tab\"\n [class.active]=\"i === config.activeTabIndex\"\n [class.disabled]=\"item?.key === 'CHAT_HANDOFF' && !(config?.clientMatches$ | async)?.[config?.activeIndex]?.showHandoff && !config.default\"\n >\n {{ item?.label | translate }}\n @if (i === config.activeTabIndex) {\n <ng-container>\n <img\n [width]=\"12\"\n [height]=\"12\"\n [src]=\"assetPaths.defaultIcon\"\n [alt]=\"item?.label + ' info icon'\"\n (click)=\"item.onClickInfo()\"\n />\n <img\n [width]=\"12\"\n [height]=\"12\"\n [src]=\"assetPaths.settingsIcon\"\n alt=\"Settings icon\"\n (click)=\"onSettingsClick(); $event.stopPropagation()\"\n style=\"cursor: pointer;\"\n />\n </ng-container>\n }\n </span>\n </swiper-slide>\n }\n </ng-container>\n <ng-container main-slides>\n <swiper-slide class=\"no-swiping-selector swiper__scheduler\">\n <div class=\"swiper__client-home\">\n @if (config.alertStatus.chatMeetupAgenda) {\n <div class=\"alert-popup-client-scheduler\">\n <lib-alert-popup\n [title]=\"'CLIENT_DASHBOARD.ALERT_POPUP.CHAT_MEETUP_AGENDA.TITLE' | translate\"\n [description]=\"'CLIENT_DASHBOARD.ALERT_POPUP.CHAT_MEETUP_AGENDA.DESCRIPTION' | translate\"\n (closed)=\"\n onClosedAlert({\n event: $event,\n field: alertStatusFields.chatMeetupAgenda,\n })\n \"\n ></lib-alert-popup>\n </div>\n }\n <lib-client-home\n [config]=\"{\n schedulerAdsTemplate: config?.schedulerAdsTemplate,\n schedulerTabAdsTemplate: config?.schedulerTabAdsTemplate,\n chatAdsTemplate: config?.chatAdsTemplate,\n chatTabAdsTemplate: config?.chatTabAdsTemplate,\n traitVisualAdsTemplate: config?.traitVisualAdsTemplate,\n activeIndex: config?.activeIndex,\n clientMatches$: config?.clientMatches$,\n schedulers$: config?.schedulers$,\n component: components.ChatScheduler,\n default: config?.default,\n thumbsSwiperOptions: clientHomeThumbsSwiperOptions,\n alertStatus: config.alertStatus,\n bottomThumbs: true,\n showValueProportionLabel: false,\n hideProgressBar: true,\n }\"\n (bookEvent)=\"bookEvent?.emit($event)\"\n (removeSuggestion)=\"removeSuggestion?.emit($event)\"\n (addMessage)=\"handleNewMessage($event)\"\n (getMessages)=\"getMessages.emit($event)\"\n (activeIndexChange)=\"onActiveProspectChange($event)\"\n (handleClosedAlert)=\"onClosedAlert($event)\"\n (handleAppearPopup)=\"onHandleAppearPopup($event)\"\n ></lib-client-home>\n </div>\n </swiper-slide>\n <swiper-slide class=\"no-swiping-selector\">\n <div class=\"swiper__client-home\">\n @if (config.alertStatus.compatibilityProfileTrait) {\n <div class=\"alert-popup-trait-chart\">\n <lib-alert-popup\n [title]=\"'CLIENT_DASHBOARD.ALERT_POPUP.FORCE_GRAPH_COMPATIBILITY.TITLE' | translate\"\n [description]=\"'CLIENT_DASHBOARD.ALERT_POPUP.FORCE_GRAPH_COMPATIBILITY.DESCRIPTION' | translate\"\n (closed)=\"\n onClosedAlert({\n event: $event,\n field: alertStatusFields.compatibilityProfileTrait,\n })\n \"\n ></lib-alert-popup>\n </div>\n }\n <lib-client-home\n [config]=\"{\n schedulerAdsTemplate: config?.schedulerAdsTemplate,\n schedulerTabAdsTemplate: config?.schedulerTabAdsTemplate,\n chatAdsTemplate: config?.chatAdsTemplate,\n chatTabAdsTemplate: config?.chatTabAdsTemplate,\n traitVisualAdsTemplate: config?.traitVisualAdsTemplate,\n activeIndex: config?.activeChartItem,\n clientMatches$: config?.clientMatches$,\n component: components.ClientMatchTraitChart,\n default: config?.default,\n thumbsSwiperOptions: clientHomeThumbsSwiperOptions,\n polygonColors: config?.polygonColors,\n spiderConfig: config?.spiderConfig,\n alertStatus: config.alertStatus,\n bottomThumbs: true,\n showValueProportionLabel: false,\n hideProgressBar: true,\n }\"\n ></lib-client-home>\n </div>\n </swiper-slide>\n <swiper-slide class=\"no-swiping-selector\">\n <div class=\"swiper__client-home\">\n @if (config.alertStatus.compatibilityProfileSpider) {\n <div class=\"alert-popup-spider-chart\">\n <lib-alert-popup\n [title]=\"'CLIENT_DASHBOARD.ALERT_POPUP.COMPATIBILITY_PROFILE.TITLE' | translate\"\n [description]=\"'CLIENT_DASHBOARD.ALERT_POPUP.COMPATIBILITY_PROFILE.DESCRIPTION' | translate\"\n (closed)=\"\n onClosedAlert({\n event: $event,\n field: alertStatusFields.compatibilityProfileSpider,\n })\n \"\n ></lib-alert-popup>\n </div>\n }\n <div [class.spider-chart___active]=\"isMinimizeVisual\">\n <lib-client-home\n [config]=\"{\n schedulerAdsTemplate: config?.schedulerAdsTemplate,\n schedulerTabAdsTemplate: config?.schedulerTabAdsTemplate,\n chatAdsTemplate: config?.chatAdsTemplate,\n chatTabAdsTemplate: config?.chatTabAdsTemplate,\n traitVisualAdsTemplate: config?.traitVisualAdsTemplate,\n activeIndex: config?.activeChartItem,\n clientMatches$: config?.clientMatches$,\n component: components.ClientMatchSpiderChart,\n default: config?.default,\n spiderConfig: config?.spiderConfig,\n polygonColors: config?.polygonColors,\n alertStatus: config.alertStatus,\n bottomThumbs: true,\n showValueProportionLabel: false,\n hideProgressBar: true,\n }\"\n ></lib-client-home>\n </div>\n </div>\n </swiper-slide>\n @if ((config?.clientMatches$ | async)?.[config?.activeIndex]?.showHandoff || config.default) {\n <swiper-slide class=\"no-swiping-selector\">\n <div class=\"swiper__client-home\">\n @if (config.alertStatus.chatHandoff) {\n <div class=\"alert-popup-chat-handoff\">\n <lib-alert-popup\n [title]=\"'CLIENT_DASHBOARD.ALERT_POPUP.HANDOFF_CHAT.TITLE' | translate\"\n [description]=\"'CLIENT_DASHBOARD.ALERT_POPUP.HANDOFF_CHAT.DESCRIPTION' | translate\"\n (closed)=\"\n onClosedAlert({\n event: $event,\n field: alertStatusFields.chatHandoff,\n })\n \"\n ></lib-alert-popup>\n </div>\n }\n @if (config.alertStatus.chatProgress) {\n <div class=\"alert-popup-chat-progress\">\n <lib-alert-popup\n [title]=\"'CLIENT_DASHBOARD.ALERT_POPUP.CHAT_PROGRESS.TITLE' | translate\"\n [description]=\"'CLIENT_DASHBOARD.ALERT_POPUP.CHAT_PROGRESS.DESCRIPTION' | translate\"\n (closed)=\"\n onClosedAlert({\n event: $event,\n field: alertStatusFields.chatProgress,\n })\n \"\n ></lib-alert-popup>\n </div>\n }\n <lib-client-home\n [config]=\"{\n schedulerAdsTemplate: config?.schedulerAdsTemplate,\n schedulerTabAdsTemplate: config?.schedulerTabAdsTemplate,\n chatAdsTemplate: config?.chatAdsTemplate,\n chatTabAdsTemplate: config?.chatTabAdsTemplate,\n traitVisualAdsTemplate: config?.traitVisualAdsTemplate,\n activeIndex: config?.activeIndex,\n clientMatches$: config?.clientMatches$,\n component: components.ChatHandoff,\n default: config?.default,\n alertStatus: config.alertStatus,\n hideStatuses: true,\n bottomThumbs: true,\n showValueProportionLabel: false,\n hideProgressBar: true,\n }\"\n (addMessage)=\"handleNewMessage($event)\"\n (getMessages)=\"getMessages?.emit($event)\"\n (activeIndexChange)=\"onActiveProspectChange($event)\"\n ></lib-client-home>\n </div>\n </swiper-slide>\n }\n </ng-container>\n </lib-dashboard-swipeable-tabs>\n</div>\n", styles: [":host{--match-percentage-font-size: 1.5em;--container-sides-shadow-width: 15px;--match-percentage-value-height: 3em;position:relative}.agenda-handler{height:133px;overflow:hidden;transition:height .5s ease;position:relative}.agenda-handler.has-ads{height:fit-content}.agenda-handler.height-zero-activated{height:100%!important}.agenda-handler .agenda-title{display:flex;width:100%;padding:0 23.5px;font-size:12px}.agenda-handler .agenda-title span{margin-left:5px}.agenda-handler lib-agenda{position:relative;display:block;width:100%;margin:auto;padding:0 5px}.agenda-handler .alert-popup-agenda{position:absolute;opacity:1;top:40px;right:40px;z-index:999;transition:opacity .3s ease}.client-home__container{height:calc(100% - 133px)}.client-home__container.has-ads{height:calc(100% - 190px)}.client-home__container>lib-swipeable-tabs{height:100%;display:block}.height-zero{height:0px!important}.opacity-zero{opacity:0!important;pointer-events:none}.tab{display:flex;gap:7px;padding:10px 30px;color:#fff9;cursor:pointer}.tab.active{color:#fff}.tab.disabled{opacity:.3;color:#fff9!important;pointer-events:none}.swiper__scheduler{height:100%}.swiper__scheduler lib-client-home{height:100%;display:block}.swiper__client-home{position:relative;width:100%;height:100%}.swiper__client-home .alert-popup-client-scheduler{position:absolute;z-index:999;top:100px;right:40px}.swiper__client-home .alert-popup-chat-handoff{position:absolute;z-index:999;top:40px;right:40px}.swiper__client-home .alert-popup-chat-progress{position:absolute;z-index:999;top:200px;right:40px}.swiper__client-home .alert-popup-trait-chart,.swiper__client-home .alert-popup-spider-chart{position:absolute;z-index:999;top:123px;right:40px}\n"] }]
|
|
4386
|
+
args: [{ selector: 'lib-client-dashboard', imports: [CommonModule, TranslateModule, LibChatComponentModule, LibAgendaModule, PipeModule, LibClientHomeComponent, LibDashboardSwipeableTabsComponent, SharedModule], schemas: [CUSTOM_ELEMENTS_SCHEMA], changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- Horizontal Agenda -->\n<div class=\"agenda-handler\" [class.height-zero]=\"isMinimizeVisual\" [class.has-ads]=\"config?.agendaAdsTemplate\">\n <h3 class=\"agenda-title\">\n {{ 'CLIENT_DASHBOARD.TITLES.UPCOMING_DATES' | translate }}\n <span (click)=\"onHandleAppearPopup(alertStatusFields.upcomingDates)\"><img [width]=\"12\" [height]=\"12\" [src]=\"assetPaths.defaultIcon\" [alt]=\"item?.label + ' icon'\" /></span>\n </h3>\n <lib-agenda [events]=\"config?.events\" [adsTemplate]=\"config?.agendaAdsTemplate\" [agendaAdsData]=\"agendaAdsData\"></lib-agenda>\n @if (config.alertStatus.upcomingDates) {\n <div class=\"alert-popup-agenda\" [class.opacity-zero]=\"isMinimizeVisual\">\n <lib-alert-popup\n [title]=\"'CLIENT_DASHBOARD.ALERT_POPUP.UPCOMING_DATES.TITLE' | translate\"\n [description]=\"'CLIENT_DASHBOARD.ALERT_POPUP.UPCOMING_DATES.DESCRIPTION' | translate\"\n (closed)=\"\n onClosedAlert({\n event: $event,\n field: alertStatusFields.upcomingDates,\n })\n \"\n ></lib-alert-popup>\n </div>\n }\n</div>\n<!-- Scheduler - Trait - Spider - Handoff -->\n<div\n (click)=\"onClick($event)\"\n [class.height-zero-activated]=\"isMinimizeVisual\"\n (touchstart)=\"onTouchStart($event)\"\n [class.has-ads]=\"!!config?.agendaAdsTemplate?.elementRef\"\n class=\"client-home__container\"\n>\n <lib-dashboard-swipeable-tabs\n [activeIndex]=\"config?.activeTabIndex\"\n [thumbsSwiperOptions]=\"dashboardThumbsSwiperOptions\"\n [mainSwiperOptions]=\"mainSwiperOptions\"\n [slideContentMaxHeight]=\"config?.slideContentMaxHeight\"\n [bottomThumbs]=\"false\"\n [generalSwiperHeight]=\"'100%'\"\n [mainSwiperHeight]=\"'calc(100% - 34px)'\"\n [thumbsSwiperHeight]=\"'34px'\"\n [subMainSwiperHeight]=\"'100%'\"\n (activeIndexChange)=\"onActiveTabIndexChange($event)\"\n >\n <ng-container thumb-slides>\n @for (item of items; let i = $index; track item) {\n <swiper-slide class=\"main-tab\">\n <span\n class=\"tab\"\n [class.active]=\"i === config.activeTabIndex\"\n [class.disabled]=\"item?.key === 'CHAT_HANDOFF' && !(config?.clientMatches$ | async)?.[config?.activeIndex]?.showHandoff && !config.default\"\n >\n {{ item?.label | translate }}\n @if (i === config.activeTabIndex) {\n <ng-container>\n <img [width]=\"12\" [height]=\"12\" [src]=\"assetPaths.defaultIcon\" [alt]=\"item?.label + ' info icon'\" (click)=\"item.onClickInfo()\" />\n <img [width]=\"12\" [height]=\"12\" [src]=\"assetPaths.settingsIcon\" alt=\"Settings icon\" (click)=\"onSettingsClick(); $event.stopPropagation()\" style=\"cursor: pointer\" />\n </ng-container>\n }\n </span>\n </swiper-slide>\n }\n </ng-container>\n <ng-container main-slides>\n <swiper-slide class=\"no-swiping-selector swiper__scheduler\">\n <div class=\"swiper__client-home\">\n @if (config.alertStatus.chatMeetupAgenda) {\n <div class=\"alert-popup-client-scheduler\">\n <lib-alert-popup\n [title]=\"'CLIENT_DASHBOARD.ALERT_POPUP.CHAT_MEETUP_AGENDA.TITLE' | translate\"\n [description]=\"'CLIENT_DASHBOARD.ALERT_POPUP.CHAT_MEETUP_AGENDA.DESCRIPTION' | translate\"\n (closed)=\"\n onClosedAlert({\n event: $event,\n field: alertStatusFields.chatMeetupAgenda,\n })\n \"\n ></lib-alert-popup>\n </div>\n }\n <lib-client-home\n [config]=\"{\n schedulerAdsTemplate: config?.schedulerAdsTemplate,\n schedulerTabAdsTemplate: config?.schedulerTabAdsTemplate,\n chatAdsTemplate: config?.chatAdsTemplate,\n chatTabAdsTemplate: config?.chatTabAdsTemplate,\n traitVisualAdsTemplate: config?.traitVisualAdsTemplate,\n activeIndex: config?.activeIndex,\n clientMatches$: config?.clientMatches$,\n schedulers$: config?.schedulers$,\n component: components.ChatScheduler,\n default: config?.default,\n thumbsSwiperOptions: clientHomeThumbsSwiperOptions,\n alertStatus: config.alertStatus,\n bottomThumbs: true,\n showValueProportionLabel: false,\n hideProgressBar: true,\n }\"\n (bookEvent)=\"bookEvent?.emit($event)\"\n (removeSuggestion)=\"removeSuggestion?.emit($event)\"\n (addMessage)=\"handleNewMessage($event)\"\n (getMessages)=\"getMessages.emit($event)\"\n (activeIndexChange)=\"onActiveProspectChange($event)\"\n (handleClosedAlert)=\"onClosedAlert($event)\"\n (handleAppearPopup)=\"onHandleAppearPopup($event)\"\n ></lib-client-home>\n </div>\n </swiper-slide>\n <swiper-slide class=\"no-swiping-selector\">\n <div class=\"swiper__client-home\">\n @if (config.alertStatus.compatibilityProfileTrait) {\n <div class=\"alert-popup-trait-chart\">\n <lib-alert-popup\n [title]=\"'CLIENT_DASHBOARD.ALERT_POPUP.FORCE_GRAPH_COMPATIBILITY.TITLE' | translate\"\n [description]=\"'CLIENT_DASHBOARD.ALERT_POPUP.FORCE_GRAPH_COMPATIBILITY.DESCRIPTION' | translate\"\n (closed)=\"\n onClosedAlert({\n event: $event,\n field: alertStatusFields.compatibilityProfileTrait,\n })\n \"\n ></lib-alert-popup>\n </div>\n }\n <lib-client-home\n [config]=\"{\n schedulerAdsTemplate: config?.schedulerAdsTemplate,\n schedulerTabAdsTemplate: config?.schedulerTabAdsTemplate,\n chatAdsTemplate: config?.chatAdsTemplate,\n chatTabAdsTemplate: config?.chatTabAdsTemplate,\n traitVisualAdsTemplate: config?.traitVisualAdsTemplate,\n activeIndex: config?.activeChartItem,\n clientMatches$: config?.clientMatches$,\n component: components.ClientMatchTraitChart,\n default: config?.default,\n thumbsSwiperOptions: clientHomeThumbsSwiperOptions,\n polygonColors: config?.polygonColors,\n spiderConfig: config?.spiderConfig,\n alertStatus: config.alertStatus,\n bottomThumbs: true,\n showValueProportionLabel: false,\n hideProgressBar: true,\n }\"\n ></lib-client-home>\n </div>\n </swiper-slide>\n <swiper-slide class=\"no-swiping-selector\">\n <div class=\"swiper__client-home\">\n @if (config.alertStatus.compatibilityProfileSpider) {\n <div class=\"alert-popup-spider-chart\">\n <lib-alert-popup\n [title]=\"'CLIENT_DASHBOARD.ALERT_POPUP.COMPATIBILITY_PROFILE.TITLE' | translate\"\n [description]=\"'CLIENT_DASHBOARD.ALERT_POPUP.COMPATIBILITY_PROFILE.DESCRIPTION' | translate\"\n (closed)=\"\n onClosedAlert({\n event: $event,\n field: alertStatusFields.compatibilityProfileSpider,\n })\n \"\n ></lib-alert-popup>\n </div>\n }\n <div [class.spider-chart___active]=\"isMinimizeVisual\">\n <lib-client-home\n [config]=\"{\n schedulerAdsTemplate: config?.schedulerAdsTemplate,\n schedulerTabAdsTemplate: config?.schedulerTabAdsTemplate,\n chatAdsTemplate: config?.chatAdsTemplate,\n chatTabAdsTemplate: config?.chatTabAdsTemplate,\n traitVisualAdsTemplate: config?.traitVisualAdsTemplate,\n activeIndex: config?.activeChartItem,\n clientMatches$: config?.clientMatches$,\n component: components.ClientMatchSpiderChart,\n default: config?.default,\n spiderConfig: config?.spiderConfig,\n polygonColors: config?.polygonColors,\n alertStatus: config.alertStatus,\n bottomThumbs: true,\n showValueProportionLabel: false,\n hideProgressBar: true,\n }\"\n ></lib-client-home>\n </div>\n </div>\n </swiper-slide>\n @if ((config?.clientMatches$ | async)?.[config?.activeIndex]?.showHandoff || config.default) {\n <swiper-slide class=\"no-swiping-selector\">\n <div class=\"swiper__client-home\">\n @if (config.alertStatus.chatHandoff) {\n <div class=\"alert-popup-chat-handoff\">\n <lib-alert-popup\n [title]=\"'CLIENT_DASHBOARD.ALERT_POPUP.HANDOFF_CHAT.TITLE' | translate\"\n [description]=\"'CLIENT_DASHBOARD.ALERT_POPUP.HANDOFF_CHAT.DESCRIPTION' | translate\"\n (closed)=\"\n onClosedAlert({\n event: $event,\n field: alertStatusFields.chatHandoff,\n })\n \"\n ></lib-alert-popup>\n </div>\n }\n @if (config.alertStatus.chatProgress) {\n <div class=\"alert-popup-chat-progress\">\n <lib-alert-popup\n [title]=\"'CLIENT_DASHBOARD.ALERT_POPUP.CHAT_PROGRESS.TITLE' | translate\"\n [description]=\"'CLIENT_DASHBOARD.ALERT_POPUP.CHAT_PROGRESS.DESCRIPTION' | translate\"\n (closed)=\"\n onClosedAlert({\n event: $event,\n field: alertStatusFields.chatProgress,\n })\n \"\n ></lib-alert-popup>\n </div>\n }\n <lib-client-home\n [config]=\"{\n schedulerAdsTemplate: config?.schedulerAdsTemplate,\n schedulerTabAdsTemplate: config?.schedulerTabAdsTemplate,\n chatAdsTemplate: config?.chatAdsTemplate,\n chatTabAdsTemplate: config?.chatTabAdsTemplate,\n traitVisualAdsTemplate: config?.traitVisualAdsTemplate,\n activeIndex: config?.activeIndex,\n clientMatches$: config?.clientMatches$,\n component: components.ChatHandoff,\n default: config?.default,\n alertStatus: config.alertStatus,\n hideStatuses: true,\n bottomThumbs: true,\n showValueProportionLabel: false,\n hideProgressBar: true,\n }\"\n (addMessage)=\"handleNewMessage($event)\"\n (getMessages)=\"getMessages?.emit($event)\"\n (activeIndexChange)=\"onActiveProspectChange($event)\"\n ></lib-client-home>\n </div>\n </swiper-slide>\n }\n </ng-container>\n </lib-dashboard-swipeable-tabs>\n</div>\n", styles: [":host{--match-percentage-font-size: 1.5em;--container-sides-shadow-width: 15px;--match-percentage-value-height: 3em;position:relative}.agenda-handler{height:133px;overflow:hidden;transition:height .5s ease;position:relative}.agenda-handler.has-ads{height:fit-content}.agenda-handler.height-zero-activated{height:100%!important}.agenda-handler .agenda-title{display:flex;width:100%;padding:0 23.5px;font-size:12px}.agenda-handler .agenda-title span{margin-left:5px}.agenda-handler lib-agenda{position:relative;display:block;width:100%;margin:auto;padding:0 5px}.agenda-handler .alert-popup-agenda{position:absolute;opacity:1;top:40px;right:40px;z-index:999;transition:opacity .3s ease}.client-home__container{height:calc(100% - 133px)}.client-home__container.has-ads{height:calc(100% - 190px)}.client-home__container>lib-swipeable-tabs{height:100%;display:block}.height-zero{height:0px!important}.opacity-zero{opacity:0!important;pointer-events:none}.tab{display:flex;gap:7px;padding:10px 30px;color:#fff9;cursor:pointer}.tab.active{color:#fff}.tab.disabled{opacity:.3;color:#fff9!important;pointer-events:none}.swiper__scheduler{height:100%}.swiper__scheduler lib-client-home{height:100%;display:block}.swiper__client-home{position:relative;width:100%;height:100%}.swiper__client-home .alert-popup-client-scheduler{position:absolute;z-index:999;top:100px;right:40px}.swiper__client-home .alert-popup-chat-handoff{position:absolute;z-index:999;top:40px;right:40px}.swiper__client-home .alert-popup-chat-progress{position:absolute;z-index:999;top:200px;right:40px}.swiper__client-home .alert-popup-trait-chart,.swiper__client-home .alert-popup-spider-chart{position:absolute;z-index:999;top:123px;right:40px}\n"] }]
|
|
4290
4387
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { config: [{
|
|
4291
4388
|
type: Input
|
|
4292
4389
|
}], agendaAdsData: [{
|
|
@@ -4307,6 +4404,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImpo
|
|
|
4307
4404
|
type: Output
|
|
4308
4405
|
}] } });
|
|
4309
4406
|
|
|
4407
|
+
class GetProfileWithProgressPipe {
|
|
4408
|
+
transform(clientMatch) {
|
|
4409
|
+
return {
|
|
4410
|
+
name: clientMatch?.primary?.name,
|
|
4411
|
+
photo: clientMatch?.primary?.src,
|
|
4412
|
+
progress: 10, // TODO: get progress from clientMatch
|
|
4413
|
+
};
|
|
4414
|
+
}
|
|
4415
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: GetProfileWithProgressPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
4416
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.14", ngImport: i0, type: GetProfileWithProgressPipe, isStandalone: true, name: "getProfileWithProgress" }); }
|
|
4417
|
+
}
|
|
4418
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: GetProfileWithProgressPipe, decorators: [{
|
|
4419
|
+
type: Pipe,
|
|
4420
|
+
args: [{
|
|
4421
|
+
name: 'getProfileWithProgress',
|
|
4422
|
+
standalone: true,
|
|
4423
|
+
}]
|
|
4424
|
+
}] });
|
|
4425
|
+
|
|
4310
4426
|
class UpdateLLMPreferencePipe {
|
|
4311
4427
|
transform(values, llmPreferenceLoading) {
|
|
4312
4428
|
return values.map((option) => {
|
|
@@ -4375,24 +4491,48 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImpo
|
|
|
4375
4491
|
}]
|
|
4376
4492
|
}] });
|
|
4377
4493
|
|
|
4378
|
-
class
|
|
4379
|
-
|
|
4380
|
-
|
|
4381
|
-
|
|
4382
|
-
|
|
4383
|
-
|
|
4494
|
+
class LibProfileComparisonComponent {
|
|
4495
|
+
constructor(cdr) {
|
|
4496
|
+
this.cdr = cdr;
|
|
4497
|
+
this.config = {
|
|
4498
|
+
data: {
|
|
4499
|
+
leftProfile: {
|
|
4500
|
+
name: '',
|
|
4501
|
+
attributes: [],
|
|
4502
|
+
},
|
|
4503
|
+
rightProfile: {
|
|
4504
|
+
name: '',
|
|
4505
|
+
attributes: [],
|
|
4506
|
+
},
|
|
4507
|
+
},
|
|
4508
|
+
default: false,
|
|
4509
|
+
};
|
|
4510
|
+
this.comparisonData = {
|
|
4511
|
+
leftProfile: {
|
|
4512
|
+
name: '',
|
|
4513
|
+
attributes: [],
|
|
4514
|
+
},
|
|
4515
|
+
rightProfile: {
|
|
4516
|
+
name: '',
|
|
4517
|
+
attributes: [],
|
|
4518
|
+
},
|
|
4384
4519
|
};
|
|
4385
4520
|
}
|
|
4386
|
-
|
|
4387
|
-
|
|
4521
|
+
ngOnInit() {
|
|
4522
|
+
if (this.config.data) {
|
|
4523
|
+
this.comparisonData = this.config.data;
|
|
4524
|
+
}
|
|
4525
|
+
this.cdr.detectChanges();
|
|
4526
|
+
}
|
|
4527
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibProfileComparisonComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
4528
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.14", type: LibProfileComparisonComponent, isStandalone: true, selector: "lib-profile-comparison", inputs: { config: "config" }, ngImport: i0, template: "<div class=\"profile-comparison\">\n <div class=\"profile-comparison__container\">\n <!-- Left Profile -->\n <div class=\"profile-comparison__card profile-comparison__card--left\">\n <h3 class=\"profile-comparison__name\">{{ comparisonData.leftProfile.name }}</h3>\n <div class=\"profile-comparison__attributes\">\n @for (attr of comparisonData.leftProfile.attributes; track $index) {\n <div class=\"profile-comparison__attribute\" [ngClass]=\"{ 'profile-comparison__attribute--match': attr.match }\">\n <span class=\"profile-comparison__attribute-label\">{{ attr.label }}</span>\n <span class=\"profile-comparison__attribute-value\">{{ attr.value }}</span>\n </div>\n }\n </div>\n </div>\n\n <!-- Right Profile -->\n <div class=\"profile-comparison__card profile-comparison__card--right\">\n <h3 class=\"profile-comparison__name\">{{ comparisonData.rightProfile.name }}</h3>\n <div class=\"profile-comparison__attributes\">\n @for (attr of comparisonData.rightProfile.attributes; track $index) {\n <div class=\"profile-comparison__attribute\" [ngClass]=\"{ 'profile-comparison__attribute--match': attr.match }\">\n <span class=\"profile-comparison__attribute-label\">{{ attr.label }}</span>\n <span class=\"profile-comparison__attribute-value\">{{ attr.value }}</span>\n </div>\n }\n </div>\n </div>\n </div>\n</div>\n", styles: [".profile-comparison{width:100%;padding:16px}.profile-comparison__container{display:grid;grid-template-columns:1fr 1fr;gap:16px;max-width:1200px;margin:0 auto}@media (max-width: 768px){.profile-comparison__container{grid-template-columns:1fr;gap:24px}}.profile-comparison__card{background-color:#464a4c;border:1px solid #dfe0e3;border-radius:8px;padding:20px;transition:all .3s ease}.profile-comparison__card:hover{border-color:#ccc;box-shadow:0 4px 12px #00000026}.profile-comparison__card--left{border-left:3px solid #45899b}.profile-comparison__card--right{border-left:3px solid #9c27b0}.profile-comparison__name{font-size:20px;font-weight:600;color:#666;margin:0 0 20px;padding-bottom:12px;border-bottom:1px solid #dfe0e3}.profile-comparison__attributes{display:flex;flex-direction:column;gap:12px}.profile-comparison__attribute{display:flex;flex-direction:column;gap:4px;padding:12px;background-color:#464a4c;border-radius:6px;border:1px solid transparent;transition:all .2s ease}.profile-comparison__attribute:hover{background-color:#eeeef0;border-color:#ccc}.profile-comparison__attribute--match{border-left:3px solid #599b4e;background-color:#599b4e1a}.profile-comparison__attribute-label{font-size:12px;color:#f4f6f7;text-transform:uppercase;letter-spacing:.5px;font-weight:500}.profile-comparison__attribute-value{font-size:14px;color:#666;font-weight:400}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: TranslateModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
4388
4529
|
}
|
|
4389
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type:
|
|
4390
|
-
type:
|
|
4391
|
-
args: [{
|
|
4392
|
-
|
|
4393
|
-
|
|
4394
|
-
|
|
4395
|
-
}] });
|
|
4530
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibProfileComparisonComponent, decorators: [{
|
|
4531
|
+
type: Component,
|
|
4532
|
+
args: [{ selector: 'lib-profile-comparison', imports: [CommonModule, TranslateModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"profile-comparison\">\n <div class=\"profile-comparison__container\">\n <!-- Left Profile -->\n <div class=\"profile-comparison__card profile-comparison__card--left\">\n <h3 class=\"profile-comparison__name\">{{ comparisonData.leftProfile.name }}</h3>\n <div class=\"profile-comparison__attributes\">\n @for (attr of comparisonData.leftProfile.attributes; track $index) {\n <div class=\"profile-comparison__attribute\" [ngClass]=\"{ 'profile-comparison__attribute--match': attr.match }\">\n <span class=\"profile-comparison__attribute-label\">{{ attr.label }}</span>\n <span class=\"profile-comparison__attribute-value\">{{ attr.value }}</span>\n </div>\n }\n </div>\n </div>\n\n <!-- Right Profile -->\n <div class=\"profile-comparison__card profile-comparison__card--right\">\n <h3 class=\"profile-comparison__name\">{{ comparisonData.rightProfile.name }}</h3>\n <div class=\"profile-comparison__attributes\">\n @for (attr of comparisonData.rightProfile.attributes; track $index) {\n <div class=\"profile-comparison__attribute\" [ngClass]=\"{ 'profile-comparison__attribute--match': attr.match }\">\n <span class=\"profile-comparison__attribute-label\">{{ attr.label }}</span>\n <span class=\"profile-comparison__attribute-value\">{{ attr.value }}</span>\n </div>\n }\n </div>\n </div>\n </div>\n</div>\n", styles: [".profile-comparison{width:100%;padding:16px}.profile-comparison__container{display:grid;grid-template-columns:1fr 1fr;gap:16px;max-width:1200px;margin:0 auto}@media (max-width: 768px){.profile-comparison__container{grid-template-columns:1fr;gap:24px}}.profile-comparison__card{background-color:#464a4c;border:1px solid #dfe0e3;border-radius:8px;padding:20px;transition:all .3s ease}.profile-comparison__card:hover{border-color:#ccc;box-shadow:0 4px 12px #00000026}.profile-comparison__card--left{border-left:3px solid #45899b}.profile-comparison__card--right{border-left:3px solid #9c27b0}.profile-comparison__name{font-size:20px;font-weight:600;color:#666;margin:0 0 20px;padding-bottom:12px;border-bottom:1px solid #dfe0e3}.profile-comparison__attributes{display:flex;flex-direction:column;gap:12px}.profile-comparison__attribute{display:flex;flex-direction:column;gap:4px;padding:12px;background-color:#464a4c;border-radius:6px;border:1px solid transparent;transition:all .2s ease}.profile-comparison__attribute:hover{background-color:#eeeef0;border-color:#ccc}.profile-comparison__attribute--match{border-left:3px solid #599b4e;background-color:#599b4e1a}.profile-comparison__attribute-label{font-size:12px;color:#f4f6f7;text-transform:uppercase;letter-spacing:.5px;font-weight:500}.profile-comparison__attribute-value{font-size:14px;color:#666;font-weight:400}\n"] }]
|
|
4533
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { config: [{
|
|
4534
|
+
type: Input
|
|
4535
|
+
}] } });
|
|
4396
4536
|
|
|
4397
4537
|
class LibComposeMacherDashComponent {
|
|
4398
4538
|
constructor(cdr) {
|
|
@@ -4435,6 +4575,7 @@ class LibComposeMacherDashComponent {
|
|
|
4435
4575
|
{ title: 'Notes', icon: 'assets/icons/compose-matcher/notes.svg' },
|
|
4436
4576
|
{ title: 'Visuals', icon: 'assets/icons/compose-matcher/visual.svg' },
|
|
4437
4577
|
{ title: 'Profile', icon: 'assets/icons/compose-matcher/profile.svg' },
|
|
4578
|
+
{ title: 'Compare', icon: 'assets/icons/compose-matcher/profile.svg' },
|
|
4438
4579
|
];
|
|
4439
4580
|
this.FormFieldType = FormFieldType;
|
|
4440
4581
|
this.componentDestroyed$ = new Subject();
|
|
@@ -4472,8 +4613,26 @@ class LibComposeMacherDashComponent {
|
|
|
4472
4613
|
suggestClicked(suggest) {
|
|
4473
4614
|
this.suggest = suggest;
|
|
4474
4615
|
}
|
|
4616
|
+
getClientAttributes(match) {
|
|
4617
|
+
if (!match?.primary)
|
|
4618
|
+
return [];
|
|
4619
|
+
return [
|
|
4620
|
+
{ label: 'Name', value: match.primary.name || '' },
|
|
4621
|
+
{ label: 'Location', value: match.primary.location || '' },
|
|
4622
|
+
{ label: 'Age', value: match.primary.age?.toString() || '' },
|
|
4623
|
+
];
|
|
4624
|
+
}
|
|
4625
|
+
getProspectAttributes(match) {
|
|
4626
|
+
if (!match?.secondary)
|
|
4627
|
+
return [];
|
|
4628
|
+
return [
|
|
4629
|
+
{ label: 'Name', value: match.secondary.name || '' },
|
|
4630
|
+
{ label: 'Location', value: match.secondary.location || '' },
|
|
4631
|
+
{ label: 'Age', value: match.secondary.age?.toString() || '' },
|
|
4632
|
+
];
|
|
4633
|
+
}
|
|
4475
4634
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibComposeMacherDashComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
4476
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.14", type: LibComposeMacherDashComponent, isStandalone: true, selector: "lib-compose-matcher-dash", inputs: { config: "config" }, outputs: { addMessage: "addMessage", updateLLMConversation: "updateLLMConversation", getMessages: "getMessages", bookEvent: "bookEvent", removeSuggestion: "removeSuggestion", activeIndexChange: "activeIndexChange" }, ngImport: i0, template: "<div class=\"compose-matcher\">\n <lib-client-home\n [config]=\"{\n chatAdsTemplate: config.chatAdsTemplate,\n schedulerAdsTemplate: config.schedulerAdsTemplate,\n schedulerTabAdsTemplate: config.schedulerTabAdsTemplate,\n loading: config.loading,\n activeIndex: config.activeIndex,\n clientMatches$: config.clientMatches$,\n component: components.ChatHandoff,\n chatInputValue: suggest,\n bottomThumbs: false,\n default: config.default,\n alertStatus: config.alertStatus,\n showValueProportionLabel: true,\n }\"\n (addMessage)=\"addMessage?.emit($event)\"\n (getMessages)=\"getMessages?.emit($event)\"\n (updateLLMConversation)=\"updateLLMConversation?.emit($event)\"\n (activeIndexChange)=\"onActiveProspectChange($event)\"\n ></lib-client-home>\n <lib-swipeable-tabs\n [activeIndex]=\"config?.activeTabIndex\"\n [slideContentMaxHeight]=\"config?.slideContentMaxHeight\"\n [bottomThumbs]=\"false\"\n (activeIndexChange)=\"onActiveTabIndexChange($event)\"\n >\n <ng-container thumb-slides>\n @for (status of statuses; let i = $index; track status) {\n <swiper-slide class=\"bubble-btn\">\n <lib-bubble-btn class=\"custom-bubble-status\" [title]=\"status.title\" [hasIcon]=\"true\" (click)=\"config.activeTabIndex = i\">\n @if (status.isText) {\n <div class=\"time-wrapper\">\n <span\n *ngFor=\"let part of ((clientMatches$ | async)?.[config?.activeIndex]?.prospectResponseTime ?? '0h 0m 0s').split(' ')\"\n class=\"time\"\n [ngClass]=\"{ active: config?.activeTabIndex === i }\"\n >\n {{ part }}\n </span>\n </div>\n } @else {\n <img [src]=\"status.icon\" width=\"18px\" height=\"18px\" [ngClass]=\"{ active: config?.activeTabIndex === i }\" />\n }\n </lib-bubble-btn>\n </swiper-slide>\n }\n </ng-container>\n <ng-container main-slides>\n <swiper-slide *ngIf=\"config?.clientMatches$ | async as clientMatches\">\n <ng-container *ngIf=\"clientMatches[config?.activeIndex]?.prospectData as activeChat\">\n <lib-chat-suggestion [chatSuggestions]=\"activeChat.chatSuggestions\" (suggestClicked)=\"suggest = $event\" [default]=\"config?.default\"></lib-chat-suggestion>\n\n <div class=\"llm-preference-container\">\n <lib-form-field\n [label]=\"'LLM Preference'\"\n [defaultValue]=\"activeChat.llmPreference\"\n [placeholder]=\"'Select LLM Preference'\"\n [options]=\"config.llmPreferenceOptions | updateLLMPreference: (activeChat?.llmPreferenceLoading$ | async)\"\n [type]=\"FormFieldType.radio\"\n (valueChange)=\"updateLLMConversation.emit({ chatId: activeChat._id, llmPreference: $event, prospectName: activeChat.name })\"\n ></lib-form-field>\n </div>\n </ng-container>\n </swiper-slide>\n <swiper-slide>\n <div class=\"slide-content without-shadow\">\n <div class=\"count-booked\">{{ schedularCounts.booked }} booked - {{ schedularCounts.suggested }} suggested</div>\n <lib-scheduler\n [adsTemplate]=\"config?.schedulerAdsTemplate\"\n [events$]=\"config?.events$\"\n (bookEvent)=\"bookEvent?.emit($event)\"\n (removeSuggestion)=\"removeSuggestion?.emit($event)\"\n [default]=\"config?.default\"\n ></lib-scheduler>\n <div class=\"prospect-calendar\">Fill in Client and Prospect calendar data for more</div>\n </div>\n </swiper-slide>\n <swiper-slide>\n <div class=\"plan-container\">\n <lib-spider-chart\n [config]=\"config?.spiderConfig\"\n [datasets]=\"config?.spiderConfig.datasets\"\n [polygon_colors]=\"config?.polygonColors\"\n [default]=\"config?.default\"\n ></lib-spider-chart>\n <img width=\"280px\" height=\"250px\" src=\"assets/trait-visual/force-directed-graph.png\" />\n </div>\n </swiper-slide>\n <swiper-slide>\n <lib-profile-card [profile]=\"(config?.clientMatches$ | async)?.[config?.activeIndex] | getProfileWithProgress\"></lib-profile-card>\n </swiper-slide>\n </ng-container>\n </lib-swipeable-tabs>\n @if (\n (config?.default && config?.activeTabIndex === 0) ||\n (config?.default && config?.activeTabIndex === 1) ||\n (config?.default && config?.activeTabIndex === 2) ||\n (config?.default && config?.activeTabIndex === 3)\n ) {\n <div class=\"alert-popup\">\n <lib-alert-popup [title]=\"'Compatibility Profile'\" [description]=\"'Once you have prospects, we will show you they stock up!'\"></lib-alert-popup>\n </div>\n }\n</div>\n", styles: [":host{--match-percentage-fornt-size: 1.5em;--container-sides-shadow-width: 25px;--match-percentage-value-height: 3em}.compose-matcher{position:relative;padding:0 60px;gap:20px}.compose-matcher img.active{filter:brightness(0) saturate(100%) invert(49%) sepia(70%) saturate(5452%) hue-rotate(321deg) brightness(99%) contrast(102%)}.compose-matcher span.active{color:#fe3c72}.compose-matcher .time-wrapper{display:flex;flex-direction:column;align-items:center}.compose-matcher .time{font-size:8px;height:8px;line-height:8px}swiper-slide{display:flex;justify-content:center}swiper-slide lib-chat-suggestion,swiper-slide lib-profile-card{margin-top:1em}.slide-content{height:auto;width:100%;position:relative;display:block;overflow:auto;padding:0 5px}.slide-content:not(.without-shadow){border-radius:10px;padding:20px;box-shadow:5.70371px 5.70371px 11.40741px #00000052 inset,-3.42222px -3.42222px 4.56296px #ffffff1a inset}.bubble-btn{padding:12px;min-width:25%}.prospect-calendar{display:flex;justify-content:center;margin-top:10px;color:#ebebf599;font-size:10px}.count-booked{display:flex;justify-content:center;margin-top:10px}.plan-container{display:flex}.alert-popup{position:absolute;z-index:999;bottom:100px;right:0}.llm-preference-container{display:flex;gap:.5em;align-items:center;justify-content:space-around;margin-left:16px;margin-right:-50px;flex-direction:column}@media (max-width: 576px){.compose-matcher{padding:0}.plan-container{flex-direction:column;align-items:center}.alert-popup{position:absolute;z-index:999;top:280px;right:5px}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: LibChatComponentModule }, { kind: "ngmodule", type: LibAgendaModule }, { kind: "ngmodule", type: PipeModule }, { kind: "component", type: LibClientHomeComponent, selector: "lib-client-home", inputs: ["config"], outputs: ["activeIndexChange", "addMessage", "getMessages", "bookEvent", "removeSuggestion", "handleAppearPopup"] }, { kind: "component", type: ChatSuggestionComponent, selector: "lib-chat-suggestion", inputs: ["chatSuggestions"], outputs: ["suggestClicked"] }, { kind: "ngmodule", type: ButtonsModule }, { kind: "component", type: i2.BubbleBtnComponent, selector: "lib-bubble-btn", inputs: ["title", "subTitle", "hasIcon", "checked", "disabled", "loading$"] }, { kind: "component", type: LibSchedulerComponent, selector: "lib-scheduler", inputs: ["adsTemplate", "loading$", "emptyMessage", "displayBookedStatuses", "displayEmptyDays", "events$", "startDate", "endDate", "default"], outputs: ["bookEvent", "removeSuggestion"] }, { kind: "component", type: SpiderChartComponent, selector: "lib-spider-chart", inputs: ["datasets", "config", "polygon_colors", "showChartInfo"] }, { kind: "ngmodule", type: ProfileCardModule }, { kind: "component", type: ProfileCardComponent, selector: "lib-profile-card", inputs: ["profile", "progressText"] }, { kind: "ngmodule", type: SharedModule }, { kind: "component", type: AlertPopupComponent, selector: "lib-alert-popup", inputs: ["title", "description", "timeState", "number"], outputs: ["closed"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: FormFieldModule }, { kind: "component", type: i2.FormFieldComponent, selector: "lib-form-field", inputs: ["fieldName", "label", "placeholder", "message", "useTooltips", "descriptionText", "formFieldControl", "submitted", "required", "type", "plusIconUrl", "minusIconUrl", "maxLength", "max", "min", "pinValue", "dualKnobs", "reverseBarColor", "defaultValue", "noMargin", "options", "iconHtml", "invalidPatternMessage", "dateFormat", "currencySymbol", "hideCents", "isEditable", "rowEditConfirmationObsv", "errorInlineMode", "showLabelInRequiredErrorMessage", "decimalPosition", "hyperlinkTarget", "readOnly", "focus", "showRequiredIndicator", "maxDate", "minDate", "radioTranslateLabels", "radioDeselectable", "radioRippleEffect"], outputs: ["rowEdit", "focusOut", "valueChange"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: UpdateLLMPreferencePipe, name: "updateLLMPreference" }, { kind: "pipe", type: GetProfileWithProgressPipe, name: "getProfileWithProgress" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
4635
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.14", type: LibComposeMacherDashComponent, isStandalone: true, selector: "lib-compose-matcher-dash", inputs: { config: "config" }, outputs: { addMessage: "addMessage", updateLLMConversation: "updateLLMConversation", getMessages: "getMessages", bookEvent: "bookEvent", removeSuggestion: "removeSuggestion", activeIndexChange: "activeIndexChange" }, ngImport: i0, template: "<div class=\"compose-matcher\">\n <lib-client-home\n [config]=\"{\n chatAdsTemplate: config.chatAdsTemplate,\n schedulerAdsTemplate: config.schedulerAdsTemplate,\n schedulerTabAdsTemplate: config.schedulerTabAdsTemplate,\n loading: config.loading,\n activeIndex: config.activeIndex,\n clientMatches$: config.clientMatches$,\n component: components.ChatHandoff,\n chatInputValue: suggest,\n bottomThumbs: false,\n default: config.default,\n alertStatus: config.alertStatus,\n showValueProportionLabel: true,\n }\"\n (addMessage)=\"addMessage?.emit($event)\"\n (getMessages)=\"getMessages?.emit($event)\"\n (updateLLMConversation)=\"updateLLMConversation?.emit($event)\"\n (activeIndexChange)=\"onActiveProspectChange($event)\"\n ></lib-client-home>\n <lib-swipeable-tabs\n [activeIndex]=\"config?.activeTabIndex\"\n [slideContentMaxHeight]=\"config?.slideContentMaxHeight\"\n [bottomThumbs]=\"false\"\n (activeIndexChange)=\"onActiveTabIndexChange($event)\"\n >\n <ng-container thumb-slides>\n @for (status of statuses; let i = $index; track status) {\n <swiper-slide class=\"bubble-btn\">\n <lib-bubble-btn class=\"custom-bubble-status\" [title]=\"status.title\" [hasIcon]=\"true\" (click)=\"config.activeTabIndex = i\">\n @if (status.isText) {\n <div class=\"time-wrapper\">\n <span\n *ngFor=\"let part of ((clientMatches$ | async)?.[config?.activeIndex]?.prospectResponseTime ?? '0h 0m 0s').split(' ')\"\n class=\"time\"\n [ngClass]=\"{ active: config?.activeTabIndex === i }\"\n >\n {{ part }}\n </span>\n </div>\n } @else {\n <img [src]=\"status.icon\" width=\"18px\" height=\"18px\" [ngClass]=\"{ active: config?.activeTabIndex === i }\" />\n }\n </lib-bubble-btn>\n </swiper-slide>\n }\n </ng-container>\n <ng-container main-slides>\n <swiper-slide *ngIf=\"config?.clientMatches$ | async as clientMatches\">\n <ng-container *ngIf=\"clientMatches[config?.activeIndex]?.prospectData as activeChat\">\n <lib-chat-suggestion [chatSuggestions]=\"activeChat.chatSuggestions\" (suggestClicked)=\"suggest = $event\" [default]=\"config?.default\"></lib-chat-suggestion>\n\n <div class=\"llm-preference-container\">\n <lib-form-field\n [label]=\"'LLM Preference'\"\n [defaultValue]=\"activeChat.llmPreference\"\n [placeholder]=\"'Select LLM Preference'\"\n [options]=\"config.llmPreferenceOptions | updateLLMPreference: (activeChat?.llmPreferenceLoading$ | async)\"\n [type]=\"FormFieldType.radio\"\n (valueChange)=\"updateLLMConversation.emit({ chatId: activeChat._id, llmPreference: $event, prospectName: activeChat.name })\"\n ></lib-form-field>\n </div>\n </ng-container>\n </swiper-slide>\n <swiper-slide>\n <div class=\"slide-content without-shadow\">\n <div class=\"count-booked\">{{ schedularCounts.booked }} booked - {{ schedularCounts.suggested }} suggested</div>\n <lib-scheduler\n [adsTemplate]=\"config?.schedulerAdsTemplate\"\n [events$]=\"config?.events$\"\n (bookEvent)=\"bookEvent?.emit($event)\"\n (removeSuggestion)=\"removeSuggestion?.emit($event)\"\n [default]=\"config?.default\"\n ></lib-scheduler>\n <div class=\"prospect-calendar\">Fill in Client and Prospect calendar data for more</div>\n </div>\n </swiper-slide>\n <swiper-slide>\n <div class=\"plan-container\">\n <lib-spider-chart\n [config]=\"config?.spiderConfig\"\n [datasets]=\"config?.spiderConfig.datasets\"\n [polygon_colors]=\"config?.polygonColors\"\n [default]=\"config?.default\"\n ></lib-spider-chart>\n <img width=\"280px\" height=\"250px\" src=\"assets/trait-visual/force-directed-graph.png\" />\n </div>\n </swiper-slide>\n <swiper-slide>\n <lib-profile-card [profile]=\"(config?.clientMatches$ | async)?.[config?.activeIndex] | getProfileWithProgress\"></lib-profile-card>\n </swiper-slide>\n <swiper-slide>\n <div class=\"slide-content\">\n <ng-container *ngIf=\"config?.clientMatches$ | async as clientMatches\">\n <lib-profile-comparison\n [config]=\"{\n data: {\n leftProfile: {\n name: clientMatches[config?.activeIndex]?.primary?.name || 'Client',\n attributes: getClientAttributes(clientMatches[config?.activeIndex]),\n },\n rightProfile: {\n name: clientMatches[config?.activeIndex]?.secondary?.name || 'Prospect',\n attributes: getProspectAttributes(clientMatches[config?.activeIndex]),\n },\n },\n default: config?.default,\n }\"\n ></lib-profile-comparison>\n </ng-container>\n </div>\n </swiper-slide>\n </ng-container>\n </lib-swipeable-tabs>\n @if (\n (config?.default && config?.activeTabIndex === 0) ||\n (config?.default && config?.activeTabIndex === 1) ||\n (config?.default && config?.activeTabIndex === 2) ||\n (config?.default && config?.activeTabIndex === 3)\n ) {\n <div class=\"alert-popup\">\n <lib-alert-popup [title]=\"'Compatibility Profile'\" [description]=\"'Once you have prospects, we will show you they stock up!'\"></lib-alert-popup>\n </div>\n }\n</div>\n", styles: [":host{--match-percentage-fornt-size: 1.5em;--container-sides-shadow-width: 25px;--match-percentage-value-height: 3em}.compose-matcher{position:relative;padding:0 60px;gap:20px}.compose-matcher img.active{filter:brightness(0) saturate(100%) invert(49%) sepia(70%) saturate(5452%) hue-rotate(321deg) brightness(99%) contrast(102%)}.compose-matcher span.active{color:#fe3c72}.compose-matcher .time-wrapper{display:flex;flex-direction:column;align-items:center}.compose-matcher .time{font-size:8px;height:8px;line-height:8px}swiper-slide{display:flex;justify-content:center}swiper-slide lib-chat-suggestion,swiper-slide lib-profile-card{margin-top:1em}.slide-content{height:auto;width:100%;position:relative;display:block;overflow:auto;padding:0 5px}.slide-content:not(.without-shadow){border-radius:10px;padding:20px;box-shadow:5.70371px 5.70371px 11.40741px #00000052 inset,-3.42222px -3.42222px 4.56296px #ffffff1a inset}.bubble-btn{padding:12px;min-width:25%}.prospect-calendar{display:flex;justify-content:center;margin-top:10px;color:#ebebf599;font-size:10px}.count-booked{display:flex;justify-content:center;margin-top:10px}.plan-container{display:flex}.alert-popup{position:absolute;z-index:999;bottom:100px;right:0}.llm-preference-container{display:flex;gap:.5em;align-items:center;justify-content:space-around;margin-left:16px;margin-right:-50px;flex-direction:column}@media (max-width: 576px){.compose-matcher{padding:0}.plan-container{flex-direction:column;align-items:center}.alert-popup{position:absolute;z-index:999;top:280px;right:5px}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: LibChatComponentModule }, { kind: "ngmodule", type: LibAgendaModule }, { kind: "ngmodule", type: PipeModule }, { kind: "component", type: LibClientHomeComponent, selector: "lib-client-home", inputs: ["config"], outputs: ["activeIndexChange", "addMessage", "getMessages", "bookEvent", "removeSuggestion", "handleAppearPopup"] }, { kind: "component", type: ChatSuggestionComponent, selector: "lib-chat-suggestion", inputs: ["chatSuggestions"], outputs: ["suggestClicked"] }, { kind: "ngmodule", type: ButtonsModule }, { kind: "component", type: i2.BubbleBtnComponent, selector: "lib-bubble-btn", inputs: ["title", "subTitle", "hasIcon", "checked", "disabled", "loading$"] }, { kind: "component", type: LibSchedulerComponent, selector: "lib-scheduler", inputs: ["adsTemplate", "loading$", "emptyMessage", "displayBookedStatuses", "displayEmptyDays", "events$", "startDate", "endDate", "default"], outputs: ["bookEvent", "removeSuggestion"] }, { kind: "component", type: SpiderChartComponent, selector: "lib-spider-chart", inputs: ["datasets", "config", "polygon_colors", "showChartInfo"] }, { kind: "ngmodule", type: ProfileCardModule }, { kind: "component", type: ProfileCardComponent, selector: "lib-profile-card", inputs: ["profile", "progressText"] }, { kind: "component", type: LibProfileComparisonComponent, selector: "lib-profile-comparison", inputs: ["config"] }, { kind: "ngmodule", type: SharedModule }, { kind: "component", type: AlertPopupComponent, selector: "lib-alert-popup", inputs: ["title", "description", "timeState", "number"], outputs: ["closed"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: FormFieldModule }, { kind: "component", type: i2.FormFieldComponent, selector: "lib-form-field", inputs: ["fieldName", "label", "placeholder", "message", "useTooltips", "descriptionText", "formFieldControl", "submitted", "required", "type", "plusIconUrl", "minusIconUrl", "maxLength", "max", "min", "pinValue", "dualKnobs", "reverseBarColor", "defaultValue", "noMargin", "options", "iconHtml", "invalidPatternMessage", "dateFormat", "currencySymbol", "hideCents", "isEditable", "rowEditConfirmationObsv", "errorInlineMode", "showLabelInRequiredErrorMessage", "decimalPosition", "hyperlinkTarget", "readOnly", "focus", "showRequiredIndicator", "maxDate", "minDate", "radioTranslateLabels", "radioDeselectable", "radioRippleEffect"], outputs: ["rowEdit", "focusOut", "valueChange"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: UpdateLLMPreferencePipe, name: "updateLLMPreference" }, { kind: "pipe", type: GetProfileWithProgressPipe, name: "getProfileWithProgress" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
4477
4636
|
}
|
|
4478
4637
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: LibComposeMacherDashComponent, decorators: [{
|
|
4479
4638
|
type: Component,
|
|
@@ -4485,19 +4644,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImpo
|
|
|
4485
4644
|
PipeModule,
|
|
4486
4645
|
LibChatComponentModule,
|
|
4487
4646
|
LibClientHomeComponent,
|
|
4488
|
-
LibDashboardSwipeableTabsComponent,
|
|
4489
4647
|
ChatSuggestionComponent,
|
|
4490
4648
|
ButtonsModule,
|
|
4491
4649
|
LibSchedulerComponent,
|
|
4492
4650
|
SpiderChartComponent,
|
|
4493
4651
|
ProfileCardModule,
|
|
4652
|
+
LibProfileComparisonComponent,
|
|
4494
4653
|
SharedModule,
|
|
4495
4654
|
FormsModule,
|
|
4496
4655
|
ReactiveFormsModule,
|
|
4497
4656
|
FormFieldModule,
|
|
4498
4657
|
UpdateLLMPreferencePipe,
|
|
4499
4658
|
GetProfileWithProgressPipe,
|
|
4500
|
-
], schemas: [CUSTOM_ELEMENTS_SCHEMA], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"compose-matcher\">\n <lib-client-home\n [config]=\"{\n chatAdsTemplate: config.chatAdsTemplate,\n schedulerAdsTemplate: config.schedulerAdsTemplate,\n schedulerTabAdsTemplate: config.schedulerTabAdsTemplate,\n loading: config.loading,\n activeIndex: config.activeIndex,\n clientMatches$: config.clientMatches$,\n component: components.ChatHandoff,\n chatInputValue: suggest,\n bottomThumbs: false,\n default: config.default,\n alertStatus: config.alertStatus,\n showValueProportionLabel: true,\n }\"\n (addMessage)=\"addMessage?.emit($event)\"\n (getMessages)=\"getMessages?.emit($event)\"\n (updateLLMConversation)=\"updateLLMConversation?.emit($event)\"\n (activeIndexChange)=\"onActiveProspectChange($event)\"\n ></lib-client-home>\n <lib-swipeable-tabs\n [activeIndex]=\"config?.activeTabIndex\"\n [slideContentMaxHeight]=\"config?.slideContentMaxHeight\"\n [bottomThumbs]=\"false\"\n (activeIndexChange)=\"onActiveTabIndexChange($event)\"\n >\n <ng-container thumb-slides>\n @for (status of statuses; let i = $index; track status) {\n <swiper-slide class=\"bubble-btn\">\n <lib-bubble-btn class=\"custom-bubble-status\" [title]=\"status.title\" [hasIcon]=\"true\" (click)=\"config.activeTabIndex = i\">\n @if (status.isText) {\n <div class=\"time-wrapper\">\n <span\n *ngFor=\"let part of ((clientMatches$ | async)?.[config?.activeIndex]?.prospectResponseTime ?? '0h 0m 0s').split(' ')\"\n class=\"time\"\n [ngClass]=\"{ active: config?.activeTabIndex === i }\"\n >\n {{ part }}\n </span>\n </div>\n } @else {\n <img [src]=\"status.icon\" width=\"18px\" height=\"18px\" [ngClass]=\"{ active: config?.activeTabIndex === i }\" />\n }\n </lib-bubble-btn>\n </swiper-slide>\n }\n </ng-container>\n <ng-container main-slides>\n <swiper-slide *ngIf=\"config?.clientMatches$ | async as clientMatches\">\n <ng-container *ngIf=\"clientMatches[config?.activeIndex]?.prospectData as activeChat\">\n <lib-chat-suggestion [chatSuggestions]=\"activeChat.chatSuggestions\" (suggestClicked)=\"suggest = $event\" [default]=\"config?.default\"></lib-chat-suggestion>\n\n <div class=\"llm-preference-container\">\n <lib-form-field\n [label]=\"'LLM Preference'\"\n [defaultValue]=\"activeChat.llmPreference\"\n [placeholder]=\"'Select LLM Preference'\"\n [options]=\"config.llmPreferenceOptions | updateLLMPreference: (activeChat?.llmPreferenceLoading$ | async)\"\n [type]=\"FormFieldType.radio\"\n (valueChange)=\"updateLLMConversation.emit({ chatId: activeChat._id, llmPreference: $event, prospectName: activeChat.name })\"\n ></lib-form-field>\n </div>\n </ng-container>\n </swiper-slide>\n <swiper-slide>\n <div class=\"slide-content without-shadow\">\n <div class=\"count-booked\">{{ schedularCounts.booked }} booked - {{ schedularCounts.suggested }} suggested</div>\n <lib-scheduler\n [adsTemplate]=\"config?.schedulerAdsTemplate\"\n [events$]=\"config?.events$\"\n (bookEvent)=\"bookEvent?.emit($event)\"\n (removeSuggestion)=\"removeSuggestion?.emit($event)\"\n [default]=\"config?.default\"\n ></lib-scheduler>\n <div class=\"prospect-calendar\">Fill in Client and Prospect calendar data for more</div>\n </div>\n </swiper-slide>\n <swiper-slide>\n <div class=\"plan-container\">\n <lib-spider-chart\n [config]=\"config?.spiderConfig\"\n [datasets]=\"config?.spiderConfig.datasets\"\n [polygon_colors]=\"config?.polygonColors\"\n [default]=\"config?.default\"\n ></lib-spider-chart>\n <img width=\"280px\" height=\"250px\" src=\"assets/trait-visual/force-directed-graph.png\" />\n </div>\n </swiper-slide>\n <swiper-slide>\n <lib-profile-card [profile]=\"(config?.clientMatches$ | async)?.[config?.activeIndex] | getProfileWithProgress\"></lib-profile-card>\n </swiper-slide>\n </ng-container>\n </lib-swipeable-tabs>\n @if (\n (config?.default && config?.activeTabIndex === 0) ||\n (config?.default && config?.activeTabIndex === 1) ||\n (config?.default && config?.activeTabIndex === 2) ||\n (config?.default && config?.activeTabIndex === 3)\n ) {\n <div class=\"alert-popup\">\n <lib-alert-popup [title]=\"'Compatibility Profile'\" [description]=\"'Once you have prospects, we will show you they stock up!'\"></lib-alert-popup>\n </div>\n }\n</div>\n", styles: [":host{--match-percentage-fornt-size: 1.5em;--container-sides-shadow-width: 25px;--match-percentage-value-height: 3em}.compose-matcher{position:relative;padding:0 60px;gap:20px}.compose-matcher img.active{filter:brightness(0) saturate(100%) invert(49%) sepia(70%) saturate(5452%) hue-rotate(321deg) brightness(99%) contrast(102%)}.compose-matcher span.active{color:#fe3c72}.compose-matcher .time-wrapper{display:flex;flex-direction:column;align-items:center}.compose-matcher .time{font-size:8px;height:8px;line-height:8px}swiper-slide{display:flex;justify-content:center}swiper-slide lib-chat-suggestion,swiper-slide lib-profile-card{margin-top:1em}.slide-content{height:auto;width:100%;position:relative;display:block;overflow:auto;padding:0 5px}.slide-content:not(.without-shadow){border-radius:10px;padding:20px;box-shadow:5.70371px 5.70371px 11.40741px #00000052 inset,-3.42222px -3.42222px 4.56296px #ffffff1a inset}.bubble-btn{padding:12px;min-width:25%}.prospect-calendar{display:flex;justify-content:center;margin-top:10px;color:#ebebf599;font-size:10px}.count-booked{display:flex;justify-content:center;margin-top:10px}.plan-container{display:flex}.alert-popup{position:absolute;z-index:999;bottom:100px;right:0}.llm-preference-container{display:flex;gap:.5em;align-items:center;justify-content:space-around;margin-left:16px;margin-right:-50px;flex-direction:column}@media (max-width: 576px){.compose-matcher{padding:0}.plan-container{flex-direction:column;align-items:center}.alert-popup{position:absolute;z-index:999;top:280px;right:5px}}\n"] }]
|
|
4659
|
+
], schemas: [CUSTOM_ELEMENTS_SCHEMA], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"compose-matcher\">\n <lib-client-home\n [config]=\"{\n chatAdsTemplate: config.chatAdsTemplate,\n schedulerAdsTemplate: config.schedulerAdsTemplate,\n schedulerTabAdsTemplate: config.schedulerTabAdsTemplate,\n loading: config.loading,\n activeIndex: config.activeIndex,\n clientMatches$: config.clientMatches$,\n component: components.ChatHandoff,\n chatInputValue: suggest,\n bottomThumbs: false,\n default: config.default,\n alertStatus: config.alertStatus,\n showValueProportionLabel: true,\n }\"\n (addMessage)=\"addMessage?.emit($event)\"\n (getMessages)=\"getMessages?.emit($event)\"\n (updateLLMConversation)=\"updateLLMConversation?.emit($event)\"\n (activeIndexChange)=\"onActiveProspectChange($event)\"\n ></lib-client-home>\n <lib-swipeable-tabs\n [activeIndex]=\"config?.activeTabIndex\"\n [slideContentMaxHeight]=\"config?.slideContentMaxHeight\"\n [bottomThumbs]=\"false\"\n (activeIndexChange)=\"onActiveTabIndexChange($event)\"\n >\n <ng-container thumb-slides>\n @for (status of statuses; let i = $index; track status) {\n <swiper-slide class=\"bubble-btn\">\n <lib-bubble-btn class=\"custom-bubble-status\" [title]=\"status.title\" [hasIcon]=\"true\" (click)=\"config.activeTabIndex = i\">\n @if (status.isText) {\n <div class=\"time-wrapper\">\n <span\n *ngFor=\"let part of ((clientMatches$ | async)?.[config?.activeIndex]?.prospectResponseTime ?? '0h 0m 0s').split(' ')\"\n class=\"time\"\n [ngClass]=\"{ active: config?.activeTabIndex === i }\"\n >\n {{ part }}\n </span>\n </div>\n } @else {\n <img [src]=\"status.icon\" width=\"18px\" height=\"18px\" [ngClass]=\"{ active: config?.activeTabIndex === i }\" />\n }\n </lib-bubble-btn>\n </swiper-slide>\n }\n </ng-container>\n <ng-container main-slides>\n <swiper-slide *ngIf=\"config?.clientMatches$ | async as clientMatches\">\n <ng-container *ngIf=\"clientMatches[config?.activeIndex]?.prospectData as activeChat\">\n <lib-chat-suggestion [chatSuggestions]=\"activeChat.chatSuggestions\" (suggestClicked)=\"suggest = $event\" [default]=\"config?.default\"></lib-chat-suggestion>\n\n <div class=\"llm-preference-container\">\n <lib-form-field\n [label]=\"'LLM Preference'\"\n [defaultValue]=\"activeChat.llmPreference\"\n [placeholder]=\"'Select LLM Preference'\"\n [options]=\"config.llmPreferenceOptions | updateLLMPreference: (activeChat?.llmPreferenceLoading$ | async)\"\n [type]=\"FormFieldType.radio\"\n (valueChange)=\"updateLLMConversation.emit({ chatId: activeChat._id, llmPreference: $event, prospectName: activeChat.name })\"\n ></lib-form-field>\n </div>\n </ng-container>\n </swiper-slide>\n <swiper-slide>\n <div class=\"slide-content without-shadow\">\n <div class=\"count-booked\">{{ schedularCounts.booked }} booked - {{ schedularCounts.suggested }} suggested</div>\n <lib-scheduler\n [adsTemplate]=\"config?.schedulerAdsTemplate\"\n [events$]=\"config?.events$\"\n (bookEvent)=\"bookEvent?.emit($event)\"\n (removeSuggestion)=\"removeSuggestion?.emit($event)\"\n [default]=\"config?.default\"\n ></lib-scheduler>\n <div class=\"prospect-calendar\">Fill in Client and Prospect calendar data for more</div>\n </div>\n </swiper-slide>\n <swiper-slide>\n <div class=\"plan-container\">\n <lib-spider-chart\n [config]=\"config?.spiderConfig\"\n [datasets]=\"config?.spiderConfig.datasets\"\n [polygon_colors]=\"config?.polygonColors\"\n [default]=\"config?.default\"\n ></lib-spider-chart>\n <img width=\"280px\" height=\"250px\" src=\"assets/trait-visual/force-directed-graph.png\" />\n </div>\n </swiper-slide>\n <swiper-slide>\n <lib-profile-card [profile]=\"(config?.clientMatches$ | async)?.[config?.activeIndex] | getProfileWithProgress\"></lib-profile-card>\n </swiper-slide>\n <swiper-slide>\n <div class=\"slide-content\">\n <ng-container *ngIf=\"config?.clientMatches$ | async as clientMatches\">\n <lib-profile-comparison\n [config]=\"{\n data: {\n leftProfile: {\n name: clientMatches[config?.activeIndex]?.primary?.name || 'Client',\n attributes: getClientAttributes(clientMatches[config?.activeIndex]),\n },\n rightProfile: {\n name: clientMatches[config?.activeIndex]?.secondary?.name || 'Prospect',\n attributes: getProspectAttributes(clientMatches[config?.activeIndex]),\n },\n },\n default: config?.default,\n }\"\n ></lib-profile-comparison>\n </ng-container>\n </div>\n </swiper-slide>\n </ng-container>\n </lib-swipeable-tabs>\n @if (\n (config?.default && config?.activeTabIndex === 0) ||\n (config?.default && config?.activeTabIndex === 1) ||\n (config?.default && config?.activeTabIndex === 2) ||\n (config?.default && config?.activeTabIndex === 3)\n ) {\n <div class=\"alert-popup\">\n <lib-alert-popup [title]=\"'Compatibility Profile'\" [description]=\"'Once you have prospects, we will show you they stock up!'\"></lib-alert-popup>\n </div>\n }\n</div>\n", styles: [":host{--match-percentage-fornt-size: 1.5em;--container-sides-shadow-width: 25px;--match-percentage-value-height: 3em}.compose-matcher{position:relative;padding:0 60px;gap:20px}.compose-matcher img.active{filter:brightness(0) saturate(100%) invert(49%) sepia(70%) saturate(5452%) hue-rotate(321deg) brightness(99%) contrast(102%)}.compose-matcher span.active{color:#fe3c72}.compose-matcher .time-wrapper{display:flex;flex-direction:column;align-items:center}.compose-matcher .time{font-size:8px;height:8px;line-height:8px}swiper-slide{display:flex;justify-content:center}swiper-slide lib-chat-suggestion,swiper-slide lib-profile-card{margin-top:1em}.slide-content{height:auto;width:100%;position:relative;display:block;overflow:auto;padding:0 5px}.slide-content:not(.without-shadow){border-radius:10px;padding:20px;box-shadow:5.70371px 5.70371px 11.40741px #00000052 inset,-3.42222px -3.42222px 4.56296px #ffffff1a inset}.bubble-btn{padding:12px;min-width:25%}.prospect-calendar{display:flex;justify-content:center;margin-top:10px;color:#ebebf599;font-size:10px}.count-booked{display:flex;justify-content:center;margin-top:10px}.plan-container{display:flex}.alert-popup{position:absolute;z-index:999;bottom:100px;right:0}.llm-preference-container{display:flex;gap:.5em;align-items:center;justify-content:space-around;margin-left:16px;margin-right:-50px;flex-direction:column}@media (max-width: 576px){.compose-matcher{padding:0}.plan-container{flex-direction:column;align-items:center}.alert-popup{position:absolute;z-index:999;top:280px;right:5px}}\n"] }]
|
|
4501
4660
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { config: [{
|
|
4502
4661
|
type: Input
|
|
4503
4662
|
}], addMessage: [{
|
|
@@ -4514,6 +4673,62 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImpo
|
|
|
4514
4673
|
type: Output
|
|
4515
4674
|
}] } });
|
|
4516
4675
|
|
|
4676
|
+
const innerProgressPurpleColors = {
|
|
4677
|
+
primary: 'rgb(209, 8, 209)',
|
|
4678
|
+
secondary: 'rgb(255, 46, 192)',
|
|
4679
|
+
tertiary: 'rgb(255, 46, 164)',
|
|
4680
|
+
};
|
|
4681
|
+
|
|
4682
|
+
const mainswiperDefaultOptions = {
|
|
4683
|
+
spaceBetween: 10,
|
|
4684
|
+
slidesPerView: 1,
|
|
4685
|
+
centeredSlides: true,
|
|
4686
|
+
loop: false,
|
|
4687
|
+
autoplay: {
|
|
4688
|
+
delay: 3000,
|
|
4689
|
+
disableOnInteraction: false,
|
|
4690
|
+
},
|
|
4691
|
+
pagination: {
|
|
4692
|
+
el: '.swiper-pagination',
|
|
4693
|
+
clickable: true,
|
|
4694
|
+
},
|
|
4695
|
+
navigation: {
|
|
4696
|
+
nextEl: '.swiper-button-next',
|
|
4697
|
+
prevEl: '.swiper-button-prev',
|
|
4698
|
+
},
|
|
4699
|
+
};
|
|
4700
|
+
|
|
4701
|
+
const progressWhiteColors = {
|
|
4702
|
+
primary: 'rgb(255, 255, 255)',
|
|
4703
|
+
secondary: 'rgb(215, 215, 215)',
|
|
4704
|
+
tertiary: 'rgb(214, 214, 214)',
|
|
4705
|
+
gradientPrimary: 'rgb(255, 255, 255)',
|
|
4706
|
+
gradientSecondary: 'rgb(231, 231, 231)',
|
|
4707
|
+
incomplete: 'rgb(214, 214, 214)',
|
|
4708
|
+
complete: 'rgb(255, 255, 255)',
|
|
4709
|
+
};
|
|
4710
|
+
|
|
4711
|
+
const thumbsSwiperDefaultOptions = {
|
|
4712
|
+
spaceBetween: 10,
|
|
4713
|
+
slidesPerView: 4,
|
|
4714
|
+
freeMode: true,
|
|
4715
|
+
watchSlidesProgress: true,
|
|
4716
|
+
breakpoints: {
|
|
4717
|
+
320: {
|
|
4718
|
+
slidesPerView: 2,
|
|
4719
|
+
spaceBetween: 10,
|
|
4720
|
+
},
|
|
4721
|
+
640: {
|
|
4722
|
+
slidesPerView: 3,
|
|
4723
|
+
spaceBetween: 10,
|
|
4724
|
+
},
|
|
4725
|
+
768: {
|
|
4726
|
+
slidesPerView: 4,
|
|
4727
|
+
spaceBetween: 10,
|
|
4728
|
+
},
|
|
4729
|
+
},
|
|
4730
|
+
};
|
|
4731
|
+
|
|
4517
4732
|
class ArraySortPipe {
|
|
4518
4733
|
transform(array, field, type = 'ASC') {
|
|
4519
4734
|
if (!Array.isArray(array)) {
|
|
@@ -4702,5 +4917,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImpo
|
|
|
4702
4917
|
* Generated bundle index. Do not edit.
|
|
4703
4918
|
*/
|
|
4704
4919
|
|
|
4705
|
-
export { AbstractCacheService, AgendaComponent, AlertPopupComponent, AlertStatusFields, ArraySortPipe, AutoDelegationEventTypes, AutoDelegationEventValue, CONVERSATION_FLAG, COUNTER_FLAG_BASE, CalendarAccountEnum, CalendarAccountIconsEnum, CalendarUtilsService, ChatComponent, ChatMetaPipe, ChatService, ChatSuggestionComponent, CircleProgressComponent, CircleProgressModule, CircleVariable, ClientDashboardTabs, ClientHomeComponent, CommonOperations, CountNonEmptyFieldsPipe, DateLocalizationPipe, EditRecurringEventOptions, EventTypes, GetColorByMatcherPipe, GetDisplayValuePipe, GetMultiSelectDisplayTextPipe, GetProfileWithProgressPipe, INNER_CIRCLE_STATE, InitialsPipe, IsStatusIncludedPipe, LibAgendaModule, LibAutoDelegationModalComponent, LibChatComponentModule, LibClientDashboardComponent, LibClientHomeComponent, LibClientMatchOverviewComponent, LibComposeMacherDashComponent, LibDashboardSwipeableTabsComponent, LibEventFormComponent, LibEventFormModule, LibMessageModalComponent, LibSchedulerComponent, LibVisualManagerModalComponent, MATCHER_STATUSES, MatcherStatuses, MatcherStatusesComponent, PROGRESS_GAP_MINUTES, ProfileCardComponent, ProfileCardModule, ProgressTickerService, RecurringTypes, RoundPipe, ScheduleDateStatus, SenderTypes, SharedModule, SpiderChartComponent, StatusIconComponent, TICK_PERIOD_SECONDS, VisualManagerModalEventTypes, VisualManagerModalEventValue, circleData, computeInnerState, dashboardMainSwiperDefaultOptions, dashboardThumbsSwiperDefaultOptions, defaultClientDashboardConfig, defaultClientHomeConfig, defaultSpiderConfig, defsF, defsLG, defsRG, demoPolygonColors, innerProgressDefaultColors, innerProgressPinkColors, innerProgressPurpleColors, innerProgressWhiteColors, mainswiperDefaultOptions, progressDefaultColors, progressWhiteColors, recurringOptions, thumbsSwiperDefaultOptions };
|
|
4920
|
+
export { AbstractCacheService, AgendaComponent, AlertPopupComponent, AlertStatusFields, ArraySortPipe, AutoDelegationEventTypes, AutoDelegationEventValue, CONVERSATION_FLAG, COUNTER_FLAG_BASE, CalendarAccountEnum, CalendarAccountIconsEnum, CalendarUtilsService, ChatComponent, ChatMetaPipe, ChatService, ChatSuggestionComponent, CircleProgressComponent, CircleProgressModule, CircleVariable, ClientDashboardTabs, ClientHomeComponent, CommonOperations, CountNonEmptyFieldsPipe, DateLocalizationPipe, EditRecurringEventOptions, EventTypes, GetColorByMatcherPipe, GetDisplayValuePipe, GetMultiSelectDisplayTextPipe, GetProfileWithProgressPipe, HandoffPanelVersion, INNER_CIRCLE_STATE, InitialsPipe, IsStatusIncludedPipe, LibAgendaModule, LibAutoDelegationModalComponent, LibChatComponentModule, LibClientDashboardComponent, LibClientHomeComponent, LibClientMatchOverviewComponent, LibComposeMacherDashComponent, LibDashboardSwipeableTabsComponent, LibEventFormComponent, LibEventFormModule, LibHandoffPanelComponent, LibMessageModalComponent, LibProfileComparisonComponent, LibSchedulerComponent, LibVisualManagerModalComponent, MATCHER_STATUSES, MatcherStatuses, MatcherStatusesComponent, PROGRESS_GAP_MINUTES, ProfileCardComponent, ProfileCardModule, ProgressTickerService, RecurringTypes, RoundPipe, ScheduleDateStatus, SenderTypes, SharedModule, SpiderChartComponent, StatusIconComponent, TICK_PERIOD_SECONDS, VisualManagerModalEventTypes, VisualManagerModalEventValue, circleData, computeInnerState, dashboardMainSwiperDefaultOptions, dashboardThumbsSwiperDefaultOptions, defaultClientDashboardConfig, defaultClientHomeConfig, defaultSpiderConfig, defsF, defsLG, defsRG, demoPolygonColors, innerProgressDefaultColors, innerProgressPinkColors, innerProgressPurpleColors, innerProgressWhiteColors, mainswiperDefaultOptions, progressDefaultColors, progressWhiteColors, recurringOptions, thumbsSwiperDefaultOptions };
|
|
4706
4921
|
//# sourceMappingURL=naniteninja-dashboard-components-lib.mjs.map
|