@amc-technology/ui-library 1.0.98 → 1.0.100
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/amc-technology-ui-library.d.ts +4 -0
- package/amc-technology-ui-library.metadata.json +1 -1
- package/bundles/amc-technology-ui-library.umd.js +528 -17
- package/bundles/amc-technology-ui-library.umd.js.map +1 -1
- package/bundles/amc-technology-ui-library.umd.min.js +2 -2
- package/bundles/amc-technology-ui-library.umd.min.js.map +1 -1
- package/esm2015/amc-technology-ui-library.js +5 -1
- package/esm2015/projects/UILibrary/src/app/components/chat-box/chat-box.component.js +4 -4
- package/esm2015/projects/UILibrary/src/app/components/create/create.component.js +35 -0
- package/esm2015/projects/UILibrary/src/app/components/current-activity/current-activity.component.js +169 -0
- package/esm2015/projects/UILibrary/src/app/components/disposition/disposition.component.js +1 -1
- package/esm2015/projects/UILibrary/src/app/components/interaction/interaction.component.js +13 -3
- package/esm2015/projects/UILibrary/src/app/components/login/login.component.js +2 -4
- package/esm2015/projects/UILibrary/src/app/components/recent-activity/recent-activity.component.js +142 -0
- package/esm2015/projects/UILibrary/src/app/components/search-information/search-information.component.js +155 -0
- package/esm2015/projects/UILibrary/src/app/models/IActivity.js +1 -0
- package/esm2015/projects/UILibrary/src/app/models/IActivityDetails.js +1 -0
- package/esm2015/projects/UILibrary/src/app/models/IHoldActivityDetails.js +1 -0
- package/esm2015/projects/UILibrary/src/app/models/IInteractionActivityDetails.js +1 -0
- package/esm2015/projects/UILibrary/src/app/uilibrary.module.js +15 -5
- package/esm5/amc-technology-ui-library.js +5 -1
- package/esm5/projects/UILibrary/src/app/components/chat-box/chat-box.component.js +4 -4
- package/esm5/projects/UILibrary/src/app/components/create/create.component.js +36 -0
- package/esm5/projects/UILibrary/src/app/components/current-activity/current-activity.component.js +174 -0
- package/esm5/projects/UILibrary/src/app/components/disposition/disposition.component.js +1 -1
- package/esm5/projects/UILibrary/src/app/components/interaction/interaction.component.js +13 -3
- package/esm5/projects/UILibrary/src/app/components/login/login.component.js +2 -4
- package/esm5/projects/UILibrary/src/app/components/recent-activity/recent-activity.component.js +144 -0
- package/esm5/projects/UILibrary/src/app/components/search-information/search-information.component.js +156 -0
- package/esm5/projects/UILibrary/src/app/models/IActivity.js +1 -0
- package/esm5/projects/UILibrary/src/app/models/IActivityDetails.js +1 -0
- package/esm5/projects/UILibrary/src/app/models/IHoldActivityDetails.js +1 -0
- package/esm5/projects/UILibrary/src/app/models/IInteractionActivityDetails.js +1 -0
- package/esm5/projects/UILibrary/src/app/uilibrary.module.js +15 -5
- package/fesm2015/amc-technology-ui-library.js +516 -15
- package/fesm2015/amc-technology-ui-library.js.map +1 -1
- package/fesm5/amc-technology-ui-library.js +525 -15
- package/fesm5/amc-technology-ui-library.js.map +1 -1
- package/package.json +6 -1
- package/projects/UILibrary/src/app/components/create/create.component.d.ts +11 -0
- package/projects/UILibrary/src/app/components/current-activity/current-activity.component.d.ts +34 -0
- package/projects/UILibrary/src/app/components/interaction/interaction.component.d.ts +1 -0
- package/projects/UILibrary/src/app/components/recent-activity/recent-activity.component.d.ts +35 -0
- package/projects/UILibrary/src/app/components/search-information/search-information.component.d.ts +26 -0
- package/projects/UILibrary/src/app/models/IActivity.d.ts +36 -0
- package/projects/UILibrary/src/app/models/IActivityDetails.d.ts +7 -0
- package/projects/UILibrary/src/app/models/IHoldActivityDetails.d.ts +10 -0
- package/projects/UILibrary/src/app/models/IInteractionActivityDetails.d.ts +9 -0
- package/webcomponents/webcomponents.js +2 -2
package/esm2015/projects/UILibrary/src/app/components/current-activity/current-activity.component.js
ADDED
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
import { __awaiter, __decorate } from "tslib";
|
|
2
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
3
|
+
import { Subject } from 'rxjs';
|
|
4
|
+
import { debounceTime } from 'rxjs/operators';
|
|
5
|
+
let CurrentActivityComponent = class CurrentActivityComponent {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.isActivityMaximized = true;
|
|
8
|
+
this.EventEmitter = new EventEmitter();
|
|
9
|
+
this.debouncer = new Subject();
|
|
10
|
+
this.eventList = new Set();
|
|
11
|
+
}
|
|
12
|
+
ngOnInit() {
|
|
13
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
14
|
+
this.debouncer.pipe(debounceTime(500)).subscribe(() => {
|
|
15
|
+
const newEvent = {
|
|
16
|
+
eventName: Array.from(this.eventList).join('|'),
|
|
17
|
+
newValue: this.ActivityDetails
|
|
18
|
+
};
|
|
19
|
+
this.EventEmitter.emit(newEvent);
|
|
20
|
+
this.eventList.clear();
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
submitActivity() {
|
|
25
|
+
try {
|
|
26
|
+
this.ActivityDetails.IsProcessing = true;
|
|
27
|
+
this.EventEmitter.emit({
|
|
28
|
+
eventName: 'SubmitActivity',
|
|
29
|
+
newValue: this.ActivityDetails
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
catch (error) { }
|
|
33
|
+
}
|
|
34
|
+
triggerDiscardActivity() {
|
|
35
|
+
try {
|
|
36
|
+
this.EventEmitter.emit({
|
|
37
|
+
eventName: 'TriggerDiscardActivity',
|
|
38
|
+
newValue: this.ActivityDetails
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
catch (error) { }
|
|
42
|
+
}
|
|
43
|
+
onNameChange(event) {
|
|
44
|
+
try {
|
|
45
|
+
this.ActivityDetails.WhoObject = this.WhoObjectList.find((obj) => obj.objectId === event);
|
|
46
|
+
this.EventEmitter.emit({
|
|
47
|
+
eventName: 'ActivityWhoObjectChanged',
|
|
48
|
+
newValue: this.ActivityDetails
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
catch (error) { }
|
|
52
|
+
}
|
|
53
|
+
onRelatedToChange(event) {
|
|
54
|
+
try {
|
|
55
|
+
this.ActivityDetails.WhatObject = this.WhatObjectList.find((obj) => obj.objectId === event);
|
|
56
|
+
this.EventEmitter.emit({
|
|
57
|
+
eventName: 'ActivityWhatObjectChanged',
|
|
58
|
+
newValue: this.ActivityDetails
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
catch (error) { }
|
|
62
|
+
}
|
|
63
|
+
onSubjectChange() {
|
|
64
|
+
try {
|
|
65
|
+
this.eventList.add('ActivitySubjectChanged');
|
|
66
|
+
this.debouncer.next();
|
|
67
|
+
}
|
|
68
|
+
catch (error) { }
|
|
69
|
+
}
|
|
70
|
+
onSubjectKeyUp() {
|
|
71
|
+
try {
|
|
72
|
+
this.eventList.add('ActivitySubjectChanged');
|
|
73
|
+
this.debouncer.next();
|
|
74
|
+
}
|
|
75
|
+
catch (error) { }
|
|
76
|
+
}
|
|
77
|
+
onCallNotesChange() {
|
|
78
|
+
try {
|
|
79
|
+
this.eventList.add('ActivityCallNoteChanged');
|
|
80
|
+
this.debouncer.next();
|
|
81
|
+
}
|
|
82
|
+
catch (error) { }
|
|
83
|
+
}
|
|
84
|
+
onCallNotesKeyUp() {
|
|
85
|
+
try {
|
|
86
|
+
this.eventList.add('ActivityCallNoteChanged');
|
|
87
|
+
this.debouncer.next();
|
|
88
|
+
}
|
|
89
|
+
catch (error) { }
|
|
90
|
+
}
|
|
91
|
+
addQuickCommentToDescription(comment) {
|
|
92
|
+
try {
|
|
93
|
+
let descriptionToSet = comment;
|
|
94
|
+
if (this.quickCommentOptionRequiredCadArray[comment]) {
|
|
95
|
+
let cadFields = {};
|
|
96
|
+
if (this.ActivityDetails) {
|
|
97
|
+
cadFields = this.scenarioToCADMap[this.ActivityDetails.ScenarioId];
|
|
98
|
+
}
|
|
99
|
+
for (let i = 0; i < this.quickCommentOptionRequiredCadArray[comment].length; i++) {
|
|
100
|
+
let keyToCheckIfCADExists = this.quickCommentOptionRequiredCadArray[comment][i];
|
|
101
|
+
const stringToBeReplaced = this.quickCommentOptionRequiredCadArray[comment][i];
|
|
102
|
+
keyToCheckIfCADExists = keyToCheckIfCADExists.replace('{{', '');
|
|
103
|
+
keyToCheckIfCADExists = keyToCheckIfCADExists.replace('}}', '');
|
|
104
|
+
if (cadFields[keyToCheckIfCADExists]) {
|
|
105
|
+
descriptionToSet = descriptionToSet.replace(stringToBeReplaced, cadFields[keyToCheckIfCADExists].Value);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
if (this.ActivityDetails.Description) {
|
|
110
|
+
this.ActivityDetails.Description += '\n';
|
|
111
|
+
}
|
|
112
|
+
this.ActivityDetails.Description += descriptionToSet;
|
|
113
|
+
this.eventList.add('ActivityCallNoteChanged');
|
|
114
|
+
this.debouncer.next();
|
|
115
|
+
}
|
|
116
|
+
catch (error) { }
|
|
117
|
+
}
|
|
118
|
+
parseWhoObject(whoObject) {
|
|
119
|
+
try {
|
|
120
|
+
return whoObject.displayName + ': ' + whoObject.objectName;
|
|
121
|
+
}
|
|
122
|
+
catch (error) { }
|
|
123
|
+
}
|
|
124
|
+
parseWhatObject(whatObject) {
|
|
125
|
+
try {
|
|
126
|
+
return whatObject.displayName + ': ' + whatObject.objectName;
|
|
127
|
+
}
|
|
128
|
+
catch (error) { }
|
|
129
|
+
}
|
|
130
|
+
};
|
|
131
|
+
__decorate([
|
|
132
|
+
Input()
|
|
133
|
+
], CurrentActivityComponent.prototype, "ActivityDetails", void 0);
|
|
134
|
+
__decorate([
|
|
135
|
+
Input()
|
|
136
|
+
], CurrentActivityComponent.prototype, "quickCommentList", void 0);
|
|
137
|
+
__decorate([
|
|
138
|
+
Input()
|
|
139
|
+
], CurrentActivityComponent.prototype, "isAutoSave", void 0);
|
|
140
|
+
__decorate([
|
|
141
|
+
Input()
|
|
142
|
+
], CurrentActivityComponent.prototype, "enableDiscard", void 0);
|
|
143
|
+
__decorate([
|
|
144
|
+
Input()
|
|
145
|
+
], CurrentActivityComponent.prototype, "autoSaveTimer", void 0);
|
|
146
|
+
__decorate([
|
|
147
|
+
Input()
|
|
148
|
+
], CurrentActivityComponent.prototype, "quickCommentOptionRequiredCadArray", void 0);
|
|
149
|
+
__decorate([
|
|
150
|
+
Input()
|
|
151
|
+
], CurrentActivityComponent.prototype, "WhoObjectList", void 0);
|
|
152
|
+
__decorate([
|
|
153
|
+
Input()
|
|
154
|
+
], CurrentActivityComponent.prototype, "WhatObjectList", void 0);
|
|
155
|
+
__decorate([
|
|
156
|
+
Input()
|
|
157
|
+
], CurrentActivityComponent.prototype, "scenarioToCADMap", void 0);
|
|
158
|
+
__decorate([
|
|
159
|
+
Output()
|
|
160
|
+
], CurrentActivityComponent.prototype, "EventEmitter", void 0);
|
|
161
|
+
CurrentActivityComponent = __decorate([
|
|
162
|
+
Component({
|
|
163
|
+
selector: 'amc-current-activity',
|
|
164
|
+
template: "<div *ngIf=\"isActivityMaximized\" class=\"callDisplay\">\r\n <div class=\"editor callHeader\">\r\n <label class=\"headerLabel\">\r\n <b>Activity Information</b>\r\n </label>\r\n <img class=\"ViewResizeImage\" src=\"/assets/images/section_collapse.png\" (click)=\"isActivityMaximized = false\"\r\n title=\"Collapse\"><img *ngIf=\"enableDiscard\" class=\"DiscardImage\" src=\"assets/images/Discard.png\"\r\n (click)=\"triggerDiscardActivity()\" title=\"Discard\">\r\n </div>\r\n <div class=\"callBody\">\r\n <div class=\"activityFields\">\r\n <form>\r\n <div class=\"editor displayDiv\">\r\n <label class=\"displayLabels\" title=\"Name\">Name</label>\r\n <select class=\"dropDownListStyle displayData\" [ngModel]=\"ActivityDetails.WhoObject.objectId\" (ngModelChange)=\"onNameChange($event)\" name=\"whoItem\">\r\n <option *ngFor=\"let whoItem of WhoObjectList\" [ngValue]=\"whoItem.objectId\">{{ (whoItem.displayName && whoItem.objectName) ? (whoItem.displayName + ': ' +\r\n whoItem.objectName) : \"\"}}</option>\r\n <!-- <option value=\"UserSelectedForEmptyRecord\"></option> -->\r\n </select>\r\n </div>\r\n <div class=\"editor displayDiv\"\r\n *ngIf='(ActivityDetails.WhoObject && ActivityDetails.WhoObject.objectType !== \"Lead\")'>\r\n <label class=\"displayLabels\" title=\"Related To\">Related To</label>\r\n <select class=\"dropDownListStyle displayData\" (ngModelChange)=\"onRelatedToChange($event)\"\r\n [ngModel]=\"ActivityDetails.WhatObject.objectId\" name=\"whatItem\">\r\n <option *ngFor=\"let whatItem of WhatObjectList;\" [ngValue]=\"whatItem.objectId\">\r\n {{ (whatItem.displayName && whatItem.objectName) ? (whatItem.displayName + ': ' + whatItem.objectName) : \"\" }}</option>\r\n <!-- <option value=\"UserSelectedForEmptyRecord\"></option> -->\r\n </select>\r\n </div>\r\n <div class=\"editor displayDiv\">\r\n <label class=\"displayLabels\" title=\"Subject\">Subject</label>\r\n <input class=\"activitySubjectTextBoxStyle displayData\" (change)=\"onSubjectChange()\" type=\"text\"\r\n name=\"subject\" (keyup)=\"onSubjectKeyUp()\" [(ngModel)]=\"ActivityDetails.Subject\">\r\n </div>\r\n <div class=\"editor displayDiv\">\r\n <div class=\"callNotesSection\">\r\n <div class=\"callNotesTextArea\">\r\n <textarea [(ngModel)]=\"ActivityDetails.Description\" placeholder=\"Click to add a comment\"\r\n class=\"activityCommentsTextBoxStyle\" (change)=\"onCallNotesChange()\" name=\"description\"\r\n (keyup)=\"onCallNotesKeyUp()\" cols=\"20\" rows=\"2\" title=\"\"></textarea>\r\n </div>\r\n <div class=\"notesBottonBorder\">\r\n <div class=\"commentsButtonDiv\">\r\n <div class=\"quickCommentsDiv\">\r\n <input *ngFor=\"let quickComment of quickCommentList; let i = index;\"\r\n class=\"quickNotesBotton\" type=\"button\" value=\"{{i+1}}\"\r\n (click)=\"addQuickCommentToDescription(quickComment)\" title=\"{{quickComment}}\">\r\n </div>\r\n <div class=\"callNotesButtonsSection\">\r\n <input class=\"submitButton\" type=\"button\" value=\"Save\"\r\n (click)=\"submitActivity()\" [disabled]=\"!ActivityDetails.IsUnSaved\" />\r\n <!-- TOsDO check this Isprocessing -->\r\n <!-- <input *ngIf=\"!storageService.getActivity().IsProcessing\" class=\"submitButton\" type=\"button\" value=\"Save\" (click)=\"submitActivity(storageService.getActivity().ScenarioId)\" [disabled]=\"!isChangesUnSaved(this.scenarioId)\" /> -->\r\n <img *ngIf=\"ActivityDetails.IsProcessing\" class=\"loadingIcon\"\r\n src=\"assets/images/loading.gif\" title=\"Updating Activity\" />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n</div>\r\n<div *ngIf=\"!isActivityMaximized\" class=\"callDisplay\">\r\n <div class=\"editor callHeader\">\r\n <label class=\"headerLabel\">\r\n <b>Activity Information</b>\r\n </label>\r\n <img class=\"ViewResizeImage\" src=\"assets/images/section_expand.png\" (click)=\"isActivityMaximized = true\"\r\n title=\"Expand\">\r\n </div>\r\n</div>\r\n",
|
|
165
|
+
styles: [".imageExpandCollapse{float:right;width:20px;height:20px}.miscSection{position:relative;margin-top:20px;background-color:#e5e6f2}.callHeader{background-color:#f4f5fb!important;width:100%!important;margin-top:0!important;border:1px solid #939598!important}.notesBottonBorder{background-color:#fff;border-left:1px solid #939598;border-bottom:1px solid #939598;border-right:1px solid #939598;border-bottom-left-radius:3px!important;border-bottom-right-radius:3px!important;height:auto}.quickNotesBotton{background-color:#1e72ba;border:0;color:#fff;height:70%;width:20px;margin:2px;outline:0;font-size:70%}.submitButton{border:0;float:right;margin-top:2px;outline:0;cursor:pointer;background-color:#6cb047;color:#fff;border-radius:4px;font-size:98%;margin-bottom:2px}.callBody{border:1px solid #939598;border-top:1px solid #939598;position:relative}.miscIcons{width:20px;height:20px;float:right;margin-top:4px;margin-right:5px;margin-left:5px}.amcIcon{width:50%;height:20px;margin-top:5px;margin-left:10px}.callDisplay{display:grid;margin-bottom:8px;background-color:#fff}.editor{font-size:.9em;width:70%;text-align:left;margin:4px 5% 0 0;font-family:Arial;white-space:nowrap;text-overflow:ellipsis;border:0;padding-top:2px;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.AnswerCallImages{width:28px;height:20px;margin:6px 0 0 5px}.dropDownListStyle{border:1px solid #939598!important;border-radius:3px!important;width:71%!important;height:20px!important;text-align:left!important;white-space:nowrap!important;text-overflow:ellipsis!important;margin:0 5px 0 0;cursor:pointer}.activitySubjectTextBoxStyle{border:1px solid #939598!important;border-radius:3px!important;width:71%!important;height:20px!important;text-align:left!important;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;margin:0 5px 0 0;padding-left:2px}.activityCommentsTextBoxStyle{border:none;color:#333!important;text-align:left!important;margin:0;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;resize:none;width:100%;height:95px}.displayDiv{width:100%;display:flex}.displayLabels{margin-left:5px;width:25%;margin-right:2px}.displayData{width:70%}.commentsButtonDiv{width:100%;display:flex;align-items:center;background-color:#f6f7fb}.quickCommentsDiv{text-align:left;flex:1 0 0;flex-wrap:wrap;display:flex;margin:2px}.callNotesButtonsSection{text-align:right;padding-right:4px}.newEntityImages{width:25px;height:25px;margin-top:2px;cursor:pointer;padding-left:5px}body{font-size:.85em;color:#232323;background-color:#fff;font-family:Arial}.callNotesSection{float:left;height:100%;width:100%;margin-right:5px;margin-left:5px;margin-bottom:5px}.ViewResizeImage{width:20px;height:20px;float:right;cursor:pointer}.DiscardImage{padding-top:2px;width:15px;height:18px;float:right;cursor:pointer}.headerLabel{margin-left:10px}.callNotesTextArea{background-color:#fff;border-left:1px solid #939598;border-bottom:1px solid #939598;border-right:1px solid #939598;border-top:1px solid #939598;border-top-left-radius:3px!important;border-top-right-radius:3px!important}.loadingIcon{float:right;margin-right:5px;height:10px;width:30px;margin-top:8px;padding-bottom:0}input[type=button]:disabled{background-color:#d3d3d3;cursor:auto}"]
|
|
166
|
+
})
|
|
167
|
+
], CurrentActivityComponent);
|
|
168
|
+
export { CurrentActivityComponent };
|
|
169
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VycmVudC1hY3Rpdml0eS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYW1jLXRlY2hub2xvZ3kvdWktbGlicmFyeS8iLCJzb3VyY2VzIjpbInByb2plY3RzL1VJTGlicmFyeS9zcmMvYXBwL2NvbXBvbmVudHMvY3VycmVudC1hY3Rpdml0eS9jdXJyZW50LWFjdGl2aXR5LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcvRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQU85QyxJQUFhLHdCQUF3QixHQUFyQyxNQUFhLHdCQUF3QjtJQW9CbkM7UUFDRSxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO1FBRWhDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxZQUFZLEVBR2hDLENBQUM7UUFFTCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFSyxRQUFROztZQUNaLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ3BELE1BQU0sUUFBUSxHQUFHO29CQUNmLFNBQVMsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO29CQUMvQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGVBQWU7aUJBQy9CLENBQUM7Z0JBQ0YsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7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QzlDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDdkI7UUFBQyxPQUFPLEtBQUssRUFBRSxHQUFFO0lBQ3BCLENBQUM7SUFFUyxjQUFjLENBQUMsU0FBMkI7UUFDbEQsSUFBSTtZQUNGLE9BQU8sU0FBUyxDQUFDLFdBQVcsR0FBRyxJQUFJLEdBQUcsU0FBUyxDQUFDLFVBQVUsQ0FBQztTQUM1RDtRQUFDLE9BQU8sS0FBSyxFQUFFLEdBQUU7SUFDcEIsQ0FBQztJQUVTLGVBQWUsQ0FBQyxVQUE0QjtRQUNwRCxJQUFJO1lBQ0YsT0FBTyxVQUFVLENBQUMsV0FBVyxHQUFHLElBQUksR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDO1NBQzlEO1FBQUMsT0FBTyxLQUFLLEVBQUUsR0FBRTtJQUNwQixDQUFDO0NBQ0YsQ0FBQTtBQTVKVTtJQUFSLEtBQUssRUFBRTtpRUFBNEI7QUFDM0I7SUFBUixLQUFLLEVBQUU7a0VBQTRCO0FBQzNCO0lBQVIsS0FBSyxFQUFFOzREQUFxQjtBQUNwQjtJQUFSLEtBQUssRUFBRTsrREFBd0I7QUFDdkI7SUFBUixLQUFLLEVBQUU7K0RBQXVCO0FBQ3RCO0lBQVIsS0FBSyxFQUFFO29GQUF5QztBQUN4QztJQUFSLEtBQUssRUFBRTsrREFBbUM7QUFDbEM7SUFBUixLQUFLLEVBQUU7Z0VBQW9DO0FBQ25DO0lBQVIsS0FBSyxFQUFFO2tFQUFzQjtBQUNwQjtJQUFULE1BQU0sRUFBRTs4REFHTjtBQWJRLHdCQUF3QjtJQUxwQyxTQUFTLENBQUM7UUFDVCxRQUFRLEVBQUUsc0JBQXNCO1FBQ2hDLDBoS0FBZ0Q7O0tBRWpELENBQUM7R0FDVyx3QkFBd0IsQ0E2SnBDO1NBN0pZLHdCQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSUFjdGl2aXR5RGV0YWlscyB9IGZyb20gJy4uLy4uL21vZGVscy9JQWN0aXZpdHlEZXRhaWxzJztcclxuaW1wb3J0IHsgSUFjdGl2aXR5IH0gZnJvbSAnLi4vLi4vbW9kZWxzL0lBY3Rpdml0eSc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhbWMtY3VycmVudC1hY3Rpdml0eScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2N1cnJlbnQtYWN0aXZpdHkuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2N1cnJlbnQtYWN0aXZpdHkuY29tcG9uZW50LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDdXJyZW50QWN0aXZpdHlDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBJbnB1dCgpIEFjdGl2aXR5RGV0YWlsczogSUFjdGl2aXR5O1xyXG4gIEBJbnB1dCgpIHF1aWNrQ29tbWVudExpc3Q6IHN0cmluZ1tdO1xyXG4gIEBJbnB1dCgpIGlzQXV0b1NhdmU6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgZW5hYmxlRGlzY2FyZDogYm9vbGVhbjtcclxuICBASW5wdXQoKSBhdXRvU2F2ZVRpbWVyOiBudW1iZXI7XHJcbiAgQElucHV0KCkgcXVpY2tDb21tZW50T3B0aW9uUmVxdWlyZWRDYWRBcnJheTogYW55O1xyXG4gIEBJbnB1dCgpIFdob09iamVjdExpc3Q6IElBY3Rpdml0eURldGFpbHNbXTtcclxuICBASW5wdXQoKSBXaGF0T2JqZWN0TGlzdDogSUFjdGl2aXR5RGV0YWlsc1tdO1xyXG4gIEBJbnB1dCgpIHNjZW5hcmlvVG9DQURNYXA6IHt9O1xyXG4gIEBPdXRwdXQoKSBFdmVudEVtaXR0ZXI6IEV2ZW50RW1pdHRlcjx7XHJcbiAgICBldmVudE5hbWU6IHN0cmluZztcclxuICAgIG5ld1ZhbHVlPzogSUFjdGl2aXR5O1xyXG4gIH0+O1xyXG5cclxuICBwcml2YXRlIGV2ZW50TGlzdDogU2V0PFN0cmluZz47XHJcbiAgcHJpdmF0ZSBkZWJvdW5jZXI6IFN1YmplY3Q8dm9pZD47XHJcblxyXG4gIGlzQWN0aXZpdHlNYXhpbWl6ZWQ6IGJvb2xlYW47XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy5pc0FjdGl2aXR5TWF4aW1pemVkID0gdHJ1ZTtcclxuXHJcbiAgICB0aGlzLkV2ZW50RW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXI8e1xyXG4gICAgICBldmVudE5hbWU6IHN0cmluZztcclxuICAgICAgbmV3VmFsdWU/OiBJQWN0aXZpdHk7XHJcbiAgICB9PigpO1xyXG5cclxuICAgIHRoaXMuZGVib3VuY2VyID0gbmV3IFN1YmplY3QoKTtcclxuICAgIHRoaXMuZXZlbnRMaXN0ID0gbmV3IFNldCgpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmRlYm91bmNlci5waXBlKGRlYm91bmNlVGltZSg1MDApKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICBjb25zdCBuZXdFdmVudCA9IHtcclxuICAgICAgICBldmVudE5hbWU6IEFycmF5LmZyb20odGhpcy5ldmVudExpc3QpLmpvaW4oJ3wnKSxcclxuICAgICAgICBuZXdWYWx1ZTogdGhpcy5BY3Rpdml0eURldGFpbHNcclxuICAgICAgfTtcclxuICAgICAgdGhpcy5FdmVudEVtaXR0ZXIuZW1pdChuZXdFdmVudCk7XHJcbiAgICAgIHRoaXMuZXZlbnRMaXN0LmNsZWFyKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHN1Ym1pdEFjdGl2aXR5KCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5BY3Rpdml0eURldGFpbHMuSXNQcm9jZXNzaW5nID0gdHJ1ZTtcclxuICAgICAgdGhpcy5FdmVudEVtaXR0ZXIuZW1pdCh7XHJcbiAgICAgICAgZXZlbnROYW1lOiAnU3VibWl0QWN0aXZpdHknLFxyXG4gICAgICAgIG5ld1ZhbHVlOiB0aGlzLkFjdGl2aXR5RGV0YWlsc1xyXG4gICAgICB9KTtcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7fVxyXG4gIH1cclxuXHJcbiAgdHJpZ2dlckRpc2NhcmRBY3Rpdml0eSgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuRXZlbnRFbWl0dGVyLmVtaXQoe1xyXG4gICAgICAgIGV2ZW50TmFtZTogJ1RyaWdnZXJEaXNjYXJkQWN0aXZpdHknLFxyXG4gICAgICAgIG5ld1ZhbHVlOiB0aGlzLkFjdGl2aXR5RGV0YWlsc1xyXG4gICAgICB9KTtcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7fVxyXG4gIH1cclxuXHJcbiAgb25OYW1lQ2hhbmdlKGV2ZW50OiBhbnkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuQWN0aXZpdHlEZXRhaWxzLldob09iamVjdCA9IHRoaXMuV2hvT2JqZWN0TGlzdC5maW5kKChvYmopID0+IG9iai5vYmplY3RJZCA9PT0gZXZlbnQpO1xyXG4gICAgICB0aGlzLkV2ZW50RW1pdHRlci5lbWl0KHtcclxuICAgICAgICBldmVudE5hbWU6ICdBY3Rpdml0eVdob09iamVjdENoYW5nZWQnLFxyXG4gICAgICAgIG5ld1ZhbHVlOiB0aGlzLkFjdGl2aXR5RGV0YWlsc1xyXG4gICAgICB9KTtcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7fVxyXG4gIH1cclxuXHJcbiAgb25SZWxhdGVkVG9DaGFuZ2UoZXZlbnQ6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5BY3Rpdml0eURldGFpbHMuV2hhdE9iamVjdCA9IHRoaXMuV2hhdE9iamVjdExpc3QuZmluZCgob2JqKSA9PiBvYmoub2JqZWN0SWQgPT09IGV2ZW50KTtcclxuICAgICAgdGhpcy5FdmVudEVtaXR0ZXIuZW1pdCh7XHJcbiAgICAgICAgZXZlbnROYW1lOiAnQWN0aXZpdHlXaGF0T2JqZWN0Q2hhbmdlZCcsXHJcbiAgICAgICAgbmV3VmFsdWU6IHRoaXMuQWN0aXZpdHlEZXRhaWxzXHJcbiAgICAgIH0pO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHt9XHJcbiAgfVxyXG5cclxuICBvblN1YmplY3RDaGFuZ2UoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLmV2ZW50TGlzdC5hZGQoJ0FjdGl2aXR5U3ViamVjdENoYW5nZWQnKTtcclxuICAgICAgdGhpcy5kZWJvdW5jZXIubmV4dCgpO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHt9XHJcbiAgfVxyXG5cclxuICBvblN1YmplY3RLZXlVcCgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuZXZlbnRMaXN0LmFkZCgnQWN0aXZpdHlTdWJqZWN0Q2hhbmdlZCcpO1xyXG4gICAgICB0aGlzLmRlYm91bmNlci5uZXh0KCk7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge31cclxuICB9XHJcblxyXG4gIG9uQ2FsbE5vdGVzQ2hhbmdlKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5ldmVudExpc3QuYWRkKCdBY3Rpdml0eUNhbGxOb3RlQ2hhbmdlZCcpO1xyXG4gICAgICB0aGlzLmRlYm91bmNlci5uZXh0KCk7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge31cclxuICB9XHJcblxyXG4gIG9uQ2FsbE5vdGVzS2V5VXAoKSB7XHJcbiAgICB0cnl7XHJcbiAgICAgIHRoaXMuZXZlbnRMaXN0LmFkZCgnQWN0aXZpdHlDYWxsTm90ZUNoYW5nZWQnKTtcclxuICAgICAgdGhpcy5kZWJvdW5jZXIubmV4dCgpO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHt9XHJcbiAgfVxyXG5cclxuICBhZGRRdWlja0NvbW1lbnRUb0Rlc2NyaXB0aW9uKGNvbW1lbnQ6IHN0cmluZykge1xyXG4gICAgdHJ5IHtcclxuICAgICAgbGV0IGRlc2NyaXB0aW9uVG9TZXQgPSBjb21tZW50O1xyXG4gICAgICBpZiAodGhpcy5xdWlja0NvbW1lbnRPcHRpb25SZXF1aXJlZENhZEFycmF5W2NvbW1lbnRdKSB7XHJcbiAgICAgICAgbGV0IGNhZEZpZWxkcyA9IHt9O1xyXG4gICAgICAgIGlmICh0aGlzLkFjdGl2aXR5RGV0YWlscykge1xyXG4gICAgICAgICAgY2FkRmllbGRzID0gdGhpcy5zY2VuYXJpb1RvQ0FETWFwW3RoaXMuQWN0aXZpdHlEZXRhaWxzLlNjZW5hcmlvSWRdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmb3IgKFxyXG4gICAgICAgICAgbGV0IGkgPSAwO1xyXG4gICAgICAgICAgaSA8IHRoaXMucXVpY2tDb21tZW50T3B0aW9uUmVxdWlyZWRDYWRBcnJheVtjb21tZW50XS5sZW5ndGg7XHJcbiAgICAgICAgICBpKytcclxuICAgICAgICApIHtcclxuICAgICAgICAgIGxldCBrZXlUb0NoZWNrSWZDQURFeGlzdHMgPVxyXG4gICAgICAgICAgICB0aGlzLnF1aWNrQ29tbWVudE9wdGlvblJlcXVpcmVkQ2FkQXJyYXlbY29tbWVudF1baV07XHJcbiAgICAgICAgICBjb25zdCBzdHJpbmdUb0JlUmVwbGFjZWQgPVxyXG4gICAgICAgICAgICB0aGlzLnF1aWNrQ29tbWVudE9wdGlvblJlcXVpcmVkQ2FkQXJyYXlbY29tbWVudF1baV07XHJcbiAgICAgICAgICBrZXlUb0NoZWNrSWZDQURFeGlzdHMgPSBrZXlUb0NoZWNrSWZDQURFeGlzdHMucmVwbGFjZSgne3snLCAnJyk7XHJcbiAgICAgICAgICBrZXlUb0NoZWNrSWZDQURFeGlzdHMgPSBrZXlUb0NoZWNrSWZDQURFeGlzdHMucmVwbGFjZSgnfX0nLCAnJyk7XHJcbiAgICAgICAgICBpZiAoY2FkRmllbGRzW2tleVRvQ2hlY2tJZkNBREV4aXN0c10pIHtcclxuICAgICAgICAgICAgZGVzY3JpcHRpb25Ub1NldCA9IGRlc2NyaXB0aW9uVG9TZXQucmVwbGFjZShcclxuICAgICAgICAgICAgICBzdHJpbmdUb0JlUmVwbGFjZWQsXHJcbiAgICAgICAgICAgICAgY2FkRmllbGRzW2tleVRvQ2hlY2tJZkNBREV4aXN0c10uVmFsdWVcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuQWN0aXZpdHlEZXRhaWxzLkRlc2NyaXB0aW9uKSB7XHJcbiAgICAgICAgdGhpcy5BY3Rpdml0eURldGFpbHMuRGVzY3JpcHRpb24gKz0gJ1xcbic7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5BY3Rpdml0eURldGFpbHMuRGVzY3JpcHRpb24gKz0gZGVzY3JpcHRpb25Ub1NldDtcclxuICAgICAgdGhpcy5ldmVudExpc3QuYWRkKCdBY3Rpdml0eUNhbGxOb3RlQ2hhbmdlZCcpO1xyXG4gICAgICB0aGlzLmRlYm91bmNlci5uZXh0KCk7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge31cclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBwYXJzZVdob09iamVjdCh3aG9PYmplY3Q6IElBY3Rpdml0eURldGFpbHMpOiBzdHJpbmcge1xyXG4gICAgdHJ5IHtcclxuICAgICAgcmV0dXJuIHdob09iamVjdC5kaXNwbGF5TmFtZSArICc6ICcgKyB3aG9PYmplY3Qub2JqZWN0TmFtZTtcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7fVxyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIHBhcnNlV2hhdE9iamVjdCh3aGF0T2JqZWN0OiBJQWN0aXZpdHlEZXRhaWxzKTogc3RyaW5nIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHJldHVybiB3aGF0T2JqZWN0LmRpc3BsYXlOYW1lICsgJzogJyArIHdoYXRPYmplY3Qub2JqZWN0TmFtZTtcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7fVxyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -42,7 +42,7 @@ DispositionComponent = __decorate([
|
|
|
42
42
|
Component({
|
|
43
43
|
selector: 'amc-disposition',
|
|
44
44
|
template: "<div class=\"disposition-container\">\r\n <div class=\"header-container\">\r\n <label class=\"disposition-header\" attr.aria-label=\"set disposition\">{{disposition.dispositionHeader}}</label>\r\n </div>\r\n\r\n <div class=\"dispositions-container\">\r\n <div class=\"disposition\" *ngFor=\"let disp of disposition.disposition | keyvalue; let i = index\">\r\n <label\r\n class=\"disposition-label\"\r\n tabindex=\"0\"\r\n [id]=\"disp.key\"\r\n [ngClass]=\"{'disposition-label-selected' : selectedDispositionValue === disp.key, 'first-disposition': i === 0}\"\r\n (keypress)=\"selectAndSubmitDisposition($event, disp.key)\">\r\n\r\n <input\r\n class=\"disposition-input\"\r\n type=\"radio\"\r\n value=\"{{disp.key}}\"\r\n tabindex=\"-1\"\r\n attr.aria-label=\"{{disp.value}}\"\r\n [required]=\"!selectedDispositionValue\"\r\n [name]=\"dispositionName\"\r\n (change)=\"submitDisposition()\"\r\n [(ngModel)]=\"selectedDispositionValue\">\r\n\r\n {{disp.value}}\r\n </label>\r\n </div>\r\n </div>\r\n</div>\r\n",
|
|
45
|
-
styles: [".disposition-container{border:1px solid #939598;white-space:nowrap;font-family:Arial;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;text-overflow:ellipsis;position:relative;font-size:.9em;max-height:180px;overflow-x:hidden;overflow-y:hidden}.header-container{border-bottom:1px solid #939598;background-color:#f4f5fb;width:100%;white-space:nowrap;height:28px;position
|
|
45
|
+
styles: [".disposition-container{border:1px solid #939598;white-space:nowrap;font-family:Arial;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;text-overflow:ellipsis;position:relative;font-size:.9em;max-height:180px;overflow-x:hidden;overflow-y:hidden}.header-container{border-bottom:1px solid #939598;background-color:#f4f5fb;width:100%;white-space:nowrap;height:28px;position:sticky;overflow-x:hidden;overflow-y:hidden}.disposition-header{margin-top:auto;margin-left:7px;padding:5px;white-space:nowrap;text-overflow:ellipsis;font-weight:700;font-size:.9em;font-family:Arial;overflow-x:hidden}.disposition{margin-left:5px;padding-left:5px;white-space:nowrap}.disposition-label{text-overflow:ellipsis;font-weight:400;white-space:nowrap;font-size:.9em;overflow-x:hidden}.disposition-label-selected{text-overflow:ellipsis;font-weight:700;white-space:nowrap;font-size:.9em}.dispositions-container{padding:3px;overflow-y:scroll;max-height:150px}.disposition-label:focus{outline:#3296da solid 2px;outline-offset:5px}.first-disposition{margin-top:5px}"]
|
|
46
46
|
})
|
|
47
47
|
], DispositionComponent);
|
|
48
48
|
export { DispositionComponent };
|
|
@@ -56,6 +56,16 @@ let InteractionComponent = class InteractionComponent {
|
|
|
56
56
|
this.maximize();
|
|
57
57
|
}
|
|
58
58
|
}
|
|
59
|
+
clickEvent(id) {
|
|
60
|
+
document.getElementById(id).className = 'success';
|
|
61
|
+
if (localStorage.getItem('focusedPanel') === null) {
|
|
62
|
+
localStorage.setItem('focusedPanel', id);
|
|
63
|
+
}
|
|
64
|
+
else if (localStorage.getItem('focusedPanel') != id) {
|
|
65
|
+
document.getElementById(localStorage.getItem('focusedPanel')).className = 'AnswerCallFocused';
|
|
66
|
+
localStorage.setItem('focusedPanel', id);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
59
69
|
};
|
|
60
70
|
__decorate([
|
|
61
71
|
Input()
|
|
@@ -75,9 +85,9 @@ __decorate([
|
|
|
75
85
|
InteractionComponent = __decorate([
|
|
76
86
|
Component({
|
|
77
87
|
selector: 'amc-interaction',
|
|
78
|
-
template: "<div class=\"AnswerCallFocused\">\r\n <div class=\"editor callHeaderTop\">\r\n <img class=\"statusImage\" aria-hidden=\"true\" [src]=\"interaction.UIHeadersData.statusUrl\" (click)=\"interaction.UIHeadersData.focusHandler.handler(interaction.UIHeadersData.focusHandler.operationName, interaction.UIHeadersData.focusHandler.operationMetadata)\" />\r\n <label class=\"statusText\">\r\n <b [id]=\"interaction.UIHeadersData.statusText\">{{ interaction.UIHeadersData.statusText }}</b>\r\n </label>\r\n <label class=\"verticalDivider\">|</label>\r\n <label class=\"directionText\" *ngIf=\"!interaction.UIHeadersData.displayHoldCounter\">{{ interaction.UIHeadersData.directionText }}</label>\r\n <div class=\"holdCallDurationDiv\" *ngIf=\"interaction.UIHeadersData.displayHoldCounter\">\r\n <amc-holdtimer [holdCounterData]=\"interaction.UIHeadersData.holdCounterData\" [statusText]=\"interaction.UIHeadersData.statusText\" [callId]=\"interaction.subheaderData.value\"></amc-holdtimer>\r\n </div>\r\n <img class=\"ViewExpandImage\" [src]=\"interaction.UIHeadersData.minimizeUrl\" alt=\"Minimize\" (click)=\"minimize()\" (keypress)=\"collapseKeypress($event)\" *ngIf=\"!_minimized\" tabindex=\"0\" role=\"button\" aria-label=\"collapse Call Section\">\r\n <img class=\"ViewCollapseImage\" [src]=\"interaction.UIHeadersData.maximizeUrl\" alt=\"Maximize\" (click)=\"maximize()\" (keypress)=\"expandKeypress($event)\" *ngIf=\"_minimized\" tabindex=\"0\" role=\"button\" aria-label=\"expand Call Section\">\r\n <div class=\"DurationDiv\" *ngIf=\"interaction.displayCallTimer\">\r\n <amc-duration [statusText]=\"interaction.UIHeadersData.statusText\" [callId]=\"interaction.subheaderData.value\" [startTime]=\"interaction.startTime\"></amc-duration>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"!_minimized\">\r\n\r\n <div *ngIf=\"!isConferenceCall()\">\r\n <div class=\"editor phoneNumberContainer\">\r\n <input class=\"callImage\" type=\"image\" [src]=\"interaction.subheaderData.image.href\" [title]=\"interaction.subheaderData.tooltip || ''\" tabindex=\"-1\">\r\n <input class=\"editor phoneNumberValue\" [attr.aria-labelledby]=\"interaction.UIHeadersData.statusText + ' ' + interaction.subheaderData.value\" readonly type=\"text\" [value]=\"interaction.subheaderData.value\" [id]=\"interaction.subheaderData.value\" tabindex=\"-1\">\r\n </div>\r\n\r\n <div class=\"cadSection\">\r\n <ng-container *ngFor=\"let property of interaction.properties\">\r\n <ng-container *ngIf=\"property.visible\">\r\n <label class=\"col1\" [title]=\"property.displayKey\">{{property.displayKey}}</label>\r\n <amc-property [callType]=\"interaction.UIHeadersData.directionText\" [statusText]=\"interaction.UIHeadersData.statusText\" [callId]=\"interaction.subheaderData.value\" class=\"col2\" [property]=\"property\"> </amc-property>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngFor=\"let property of interaction.associatedData\">\r\n <ng-container *ngIf=\"property.visible\">\r\n <div class=\"editor displayDiv\">\r\n <label class=\"displayLabels\" [title]=\"property.displayKey\">{{property.displayKey}}</label>\r\n <amc-property [callType]=\"interaction.UIHeadersData.directionText\" [statusText]=\"interaction.UIHeadersData.statusText\" [callId]=\"interaction.subheaderData.value\" class=\"col2\" [property]=\"property\"> </amc-property>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n <amc-operation *ngIf=\"interaction.chat\" id=\"close-chat\" [callType]=\"interaction.UIHeadersData.directionText\" [statusText]=\"interaction.UIHeadersData.statusText\" [callId]=\"interaction.subheaderData.value\" [operations]=\"interaction.operations\"></amc-operation>\r\n <app-chat-box *ngIf=\"interaction.chat\" [isTyping]=\"interaction.chat.isCustomerTyping\" [settings]=\"interaction.chat.settings\"\r\n [messages]=\"interaction.chat.messages\" [newMsgs]=\"newMsgs\" (isAgentTyping)=\"isAgentTyping.emit($event)\" (newMessage)=\"newMessage.emit($event)\"></app-chat-box>\r\n\r\n <div [id]='interaction.interactionId'> </div>\r\n <amc-operation *ngIf=\"!interaction.chat\" [callType]=\"interaction.UIHeadersData.directionText\" [statusText]=\"interaction.UIHeadersData.statusText\" [callId]=\"interaction.subheaderData.value\" [operations]=\"interaction.operations\"></amc-operation>\r\n </div>\r\n\r\n <div *ngIf=\"isConferenceCall()\">\r\n <div *ngFor=\"let party of interaction.parties\">\r\n <div class=\"editor phoneNumberContainer\">\r\n <input class=\"callImage\" type=\"image\" [src]=\"party.header.image.href\" [title]=\"party.header.tooltip || ''\" tabindex=\"-1\">\r\n <input class=\"editor phoneNumberValue\" readonly type=\"text\" [value]=\"party.header.value\" tabindex=\"-1\">\r\n </div>\r\n\r\n <div class=\"grid-container\">\r\n <ng-container *ngFor=\"let property of party.properties\">\r\n <ng-container *ngIf=\"property.visible\">\r\n <label class=\"col1\" [title]=\"property.displayKey\">{{ property.displayKey }}</label>\r\n <amc-property [callType]=\"interaction.UIHeadersData.directionText\" [statusText]=\"interaction.UIHeadersData.statusText\" [callId]=\"party.header.value\" class=\"col2\" [property]=\"property\"> </amc-property>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n <amc-operation [callType]=\"interaction.UIHeadersData.directionText\" [statusText]=\"interaction.UIHeadersData.statusText\" [callId]=\"party.header.value\" [operations]=\"party.operations\"></amc-operation>\r\n <div class=\"AnswerCallFocused\"></div>\r\n </div>\r\n <amc-operation [callType]=\"interaction.UIHeadersData.directionText\" [statusText]=\"interaction.UIHeadersData.statusText\" [callId]=\"interaction.subheaderData.value\" [operations]=\"interaction.operations\"></amc-operation>\r\n </div>\r\n\r\n </div>\r\n</div>\r\n",
|
|
79
|
-
styles: [":host{display:block}.phoneNumberContainer{margin-left:5px!important;padding-left:0;display:flex;align-items:center}.cadSection{margin-bottom:5px}#close-chat{-moz-text-align-last:end;text-align-last:end}.grid-container{margin-left:5px;display:grid;grid-template-columns:auto 1fr;grid-column-gap:10px;max-width:calc(100% - 5px);overflow:hidden}.col1{grid-column:1/2}.col2{grid-column:2/3}.ViewExpandImage{margin:3px}.ViewExpandImage:focus{outline:#3296da solid 2px;outline-offset:0}.ViewCollapseImage{margin:3px}.ViewCollapseImage:focus{outline:#3296da solid 2px;outline-offset:0}.callImage{cursor:default}.phoneNumberValue:focus{outline-style:none}", "body{padding-top:5px;padding-bottom:5px;margin:0}.login{width:20px;height:20px;display:block;margin-top:2px;margin-left:auto;margin-right:auto}.editor{font-size:.9em;text-align:left;margin:4px 5% 0 0;font-family:Arial;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;border:0;padding-top:2px;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.editor .standalone-line{width:90%!important;text-align:center!important}.editorHyperLink label{font-size:.95em;float:left;width:30%;margin-left:2%;text-align:left;color:#000;font-family:Arial;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:0;padding-top:0}.editorHyperLink input[type=text]{font-size:.95em;width:60%;text-align:left;margin:0 5% 0 0;color:#318fc5;cursor:pointer;font-family:Arial;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border:0;padding-top:0;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.AnswerCallImages{height:20px;margin:0 5px 2px}.AnswerCallFocused{border:1px solid #939598;margin-left:0;font-family:Arial;position:relative;background-color:#fff;width:100%;box-sizing:border-box}.ViewCollapseImage,.ViewExpandImage{width:20px;height:20px;float:right;cursor:pointer}.answerPhoneNumberStyle{border:0;position:relative;top:-12px;left:-38px;max-width:80px;height:15px;text-overflow:ellipsis;font-size:.85em}.callHeaderTop{border-bottom:1px solid;background-color:#f4f5fb;width:100%;margin-top:0}.statusImage{width:15px;height:15px;margin-left:10px;float:left;margin-right:5px}.statusText{float:left;margin-top:1px}.displayDiv{width:100%;display:flex}.DurationDiv{float:right;width:17%;text-align:right;margin-right:5px}.displayLabels{margin-left:5px;width:25%;overflow:hidden;text-overflow:ellipsis}.displayData{border:0;outline:0}.callOptions{background-color:#f6f7fb;bottom:0;width:100%;text-align:center}.directionText{font-size:.8em;margin-left:2px}.phoneNumberValue{font-weight:700;font-size:1em;margin-left:5px}.durationInput{background-color:transparent;border:0;width:100%;text-align:right}.topBorder{border-top:1px solid #939598}.holdCallDurationDiv{float:left;margin-top:1px;margin-left:2px}.holdCallDurationTimer{background-color:transparent;border:0;width:100%}.verticalDivider{margin-left:2px;float:left}.callImage{height:20px}"]
|
|
88
|
+
template: "<div class=\"AnswerCallFocused\" [id]=\"interaction.interactionId\">\r\n <div class=\"editor callHeaderTop\" (click)=\"clickEvent(interaction.interactionId)\">\r\n <img class=\"statusImage\" aria-hidden=\"true\" [src]=\"interaction.UIHeadersData.statusUrl\" (click)=\"interaction.UIHeadersData.focusHandler.handler(interaction.UIHeadersData.focusHandler.operationName, interaction.UIHeadersData.focusHandler.operationMetadata)\" />\r\n <label class=\"statusText\">\r\n <b [id]=\"interaction.UIHeadersData.statusText\">{{ interaction.UIHeadersData.statusText }}</b>\r\n </label>\r\n <label class=\"verticalDivider\">|</label>\r\n <label class=\"directionText\" *ngIf=\"!interaction.UIHeadersData.displayHoldCounter\">{{ interaction.UIHeadersData.directionText }}</label>\r\n <div class=\"holdCallDurationDiv\" *ngIf=\"interaction.UIHeadersData.displayHoldCounter\">\r\n <amc-holdtimer [holdCounterData]=\"interaction.UIHeadersData.holdCounterData\" [statusText]=\"interaction.UIHeadersData.statusText\" [callId]=\"interaction.subheaderData.value\"></amc-holdtimer>\r\n </div>\r\n <img class=\"ViewExpandImage\" [src]=\"interaction.UIHeadersData.minimizeUrl\" alt=\"Minimize\" (click)=\"minimize()\" (keypress)=\"collapseKeypress($event)\" *ngIf=\"!_minimized\" tabindex=\"0\" role=\"button\" aria-label=\"collapse Call Section\">\r\n <img class=\"ViewCollapseImage\" [src]=\"interaction.UIHeadersData.maximizeUrl\" alt=\"Maximize\" (click)=\"maximize()\" (keypress)=\"expandKeypress($event)\" *ngIf=\"_minimized\" tabindex=\"0\" role=\"button\" aria-label=\"expand Call Section\">\r\n <div class=\"DurationDiv\" *ngIf=\"interaction.displayCallTimer\">\r\n <amc-duration [statusText]=\"interaction.UIHeadersData.statusText\" [callId]=\"interaction.subheaderData.value\" [startTime]=\"interaction.startTime\"></amc-duration>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"!_minimized\">\r\n\r\n <div *ngIf=\"!isConferenceCall()\">\r\n <div class=\"editor phoneNumberContainer\">\r\n <input class=\"callImage\" type=\"image\" [src]=\"interaction.subheaderData.image.href\" [title]=\"interaction.subheaderData.tooltip || ''\" tabindex=\"-1\">\r\n <input class=\"editor phoneNumberValue\" [attr.aria-labelledby]=\"interaction.UIHeadersData.statusText + ' ' + interaction.subheaderData.value\" readonly type=\"text\" [value]=\"interaction.subheaderData.value\" [id]=\"interaction.subheaderData.value\" tabindex=\"-1\">\r\n </div>\r\n\r\n <div class=\"cadSection\">\r\n <ng-container *ngFor=\"let property of interaction.properties\">\r\n <ng-container *ngIf=\"property.visible\">\r\n <label class=\"col1\" [title]=\"property.displayKey\">{{property.displayKey}}</label>\r\n <amc-property [callType]=\"interaction.UIHeadersData.directionText\" [statusText]=\"interaction.UIHeadersData.statusText\" [callId]=\"interaction.subheaderData.value\" class=\"col2\" [property]=\"property\"> </amc-property>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngFor=\"let property of interaction.associatedData\">\r\n <ng-container *ngIf=\"property.visible\">\r\n <div class=\"editor displayDiv\">\r\n <label class=\"displayLabels\" [title]=\"property.displayKey\">{{property.displayKey}}</label>\r\n <amc-property [callType]=\"interaction.UIHeadersData.directionText\" [statusText]=\"interaction.UIHeadersData.statusText\" [callId]=\"interaction.subheaderData.value\" class=\"col2\" [property]=\"property\"> </amc-property>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n <amc-operation *ngIf=\"interaction.chat\" id=\"close-chat\" [callType]=\"interaction.UIHeadersData.directionText\" [statusText]=\"interaction.UIHeadersData.statusText\" [callId]=\"interaction.subheaderData.value\" [operations]=\"interaction.operations\"></amc-operation>\r\n <app-chat-box *ngIf=\"interaction.chat\" [isTyping]=\"interaction.chat.isCustomerTyping\" [settings]=\"interaction.chat.settings\"\r\n [messages]=\"interaction.chat.messages\" [newMsgs]=\"newMsgs\" (isAgentTyping)=\"isAgentTyping.emit($event)\" (newMessage)=\"newMessage.emit($event)\"></app-chat-box>\r\n\r\n <div [id]='interaction.interactionId'> </div>\r\n <amc-operation *ngIf=\"!interaction.chat\" [callType]=\"interaction.UIHeadersData.directionText\" [statusText]=\"interaction.UIHeadersData.statusText\" [callId]=\"interaction.subheaderData.value\" [operations]=\"interaction.operations\"></amc-operation>\r\n </div>\r\n\r\n <div *ngIf=\"isConferenceCall()\">\r\n <div *ngFor=\"let party of interaction.parties\">\r\n <div class=\"editor phoneNumberContainer\">\r\n <input class=\"callImage\" type=\"image\" [src]=\"party.header.image.href\" [title]=\"party.header.tooltip || ''\" tabindex=\"-1\">\r\n <input class=\"editor phoneNumberValue\" readonly type=\"text\" [value]=\"party.header.value\" tabindex=\"-1\">\r\n </div>\r\n\r\n <div class=\"grid-container\">\r\n <ng-container *ngFor=\"let property of party.properties\">\r\n <ng-container *ngIf=\"property.visible\">\r\n <label class=\"col1\" [title]=\"property.displayKey\">{{ property.displayKey }}</label>\r\n <amc-property [callType]=\"interaction.UIHeadersData.directionText\" [statusText]=\"interaction.UIHeadersData.statusText\" [callId]=\"party.header.value\" class=\"col2\" [property]=\"property\"> </amc-property>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n <amc-operation [callType]=\"interaction.UIHeadersData.directionText\" [statusText]=\"interaction.UIHeadersData.statusText\" [callId]=\"party.header.value\" [operations]=\"party.operations\"></amc-operation>\r\n <div class=\"AnswerCallFocused\"></div>\r\n </div>\r\n <amc-operation [callType]=\"interaction.UIHeadersData.directionText\" [statusText]=\"interaction.UIHeadersData.statusText\" [callId]=\"interaction.subheaderData.value\" [operations]=\"interaction.operations\"></amc-operation>\r\n </div>\r\n\r\n </div>\r\n</div>\r\n",
|
|
89
|
+
styles: [":host{display:block}.phoneNumberContainer{margin-left:5px!important;padding-left:0;display:flex;align-items:center}.cadSection{margin-bottom:5px}#close-chat{-moz-text-align-last:end;text-align-last:end}.grid-container{margin-left:5px;display:grid;grid-template-columns:auto 1fr;grid-column-gap:10px;max-width:calc(100% - 5px);overflow:hidden}.col1{grid-column:1/2}.col2{grid-column:2/3}.ViewExpandImage{margin:3px}.ViewExpandImage:focus{outline:#3296da solid 2px;outline-offset:0}.ViewCollapseImage{margin:3px}.ViewCollapseImage:focus{outline:#3296da solid 2px;outline-offset:0}.callImage{cursor:default}.phoneNumberValue:focus{outline-style:none}#call123{border:4px!important}.success{border:2px solid #00adbb!important}", "body{padding-top:5px;padding-bottom:5px;margin:0}.login{width:20px;height:20px;display:block;margin-top:2px;margin-left:auto;margin-right:auto}.editor{font-size:.9em;text-align:left;margin:4px 5% 0 0;font-family:Arial;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;border:0;padding-top:2px;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.editor .standalone-line{width:90%!important;text-align:center!important}.editorHyperLink label{font-size:.95em;float:left;width:30%;margin-left:2%;text-align:left;color:#000;font-family:Arial;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:0;padding-top:0}.editorHyperLink input[type=text]{font-size:.95em;width:60%;text-align:left;margin:0 5% 0 0;color:#318fc5;cursor:pointer;font-family:Arial;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border:0;padding-top:0;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.AnswerCallImages{height:20px;margin:0 5px 2px}.AnswerCallFocused{border:1px solid #939598;margin-left:0;font-family:Arial;position:relative;background-color:#fff;width:100%;box-sizing:border-box}.ViewCollapseImage,.ViewExpandImage{width:20px;height:20px;float:right;cursor:pointer}.answerPhoneNumberStyle{border:0;position:relative;top:-12px;left:-38px;max-width:80px;height:15px;text-overflow:ellipsis;font-size:.85em}.callHeaderTop{border-bottom:1px solid;background-color:#f4f5fb;width:100%;margin-top:0}.statusImage{width:15px;height:15px;margin-left:10px;float:left;margin-right:5px}.statusText{float:left;margin-top:1px}.displayDiv{width:100%;display:flex}.DurationDiv{float:right;width:17%;text-align:right;margin-right:5px}.displayLabels{margin-left:5px;width:25%;overflow:hidden;text-overflow:ellipsis}.displayData{border:0;outline:0}.callOptions{background-color:#f6f7fb;bottom:0;width:100%;text-align:center}.directionText{font-size:.8em;margin-left:2px}.phoneNumberValue{font-weight:700;font-size:1em;margin-left:5px}.durationInput{background-color:transparent;border:0;width:100%;text-align:right}.topBorder{border-top:1px solid #939598}.holdCallDurationDiv{float:left;margin-top:1px;margin-left:2px}.holdCallDurationTimer{background-color:transparent;border:0;width:100%}.verticalDivider{margin-left:2px;float:left}.callImage{height:20px}"]
|
|
80
90
|
})
|
|
81
91
|
], InteractionComponent);
|
|
82
92
|
export { InteractionComponent };
|
|
83
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
93
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJhY3Rpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFtYy10ZWNobm9sb2d5L3VpLWxpYnJhcnkvIiwic291cmNlcyI6WyJwcm9qZWN0cy9VSUxpYnJhcnkvc3JjL2FwcC9jb21wb25lbnRzL2ludGVyYWN0aW9uL2ludGVyYWN0aW9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBMkIsTUFBTSxlQUFlLENBQUM7QUFHeEc7O0dBRUc7QUFNSCxJQUFhLG9CQUFvQixHQUFqQyxNQUFhLG9CQUFvQjtJQW1CL0I7O09BRUc7SUFDSDtRQWxCVSxxQkFBZ0IsR0FBMEIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUM3RCxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDNUMsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFpQmhELElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO0lBQzFCLENBQUM7SUFiRCxJQUFJLFVBQVUsQ0FBQyxLQUFLO1FBQ2xCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUNELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBU0Q7O09BRUc7SUFDSCxRQUFRO0lBQ1IsQ0FBQztJQUVEOztPQUVHO0lBQ0gsUUFBUTtRQUNOLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO0lBQ3pCLENBQUM7SUFFRDs7T0FFRztJQUNILFFBQVE7UUFDTixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUMxQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxnQkFBZ0I7UUFDZCxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDbkUsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELGdCQUFnQixDQUFDLEtBQW9CO1FBQ25DLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxPQUFPLEVBQUU7WUFDMUIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1NBQ2pCO0lBQ0gsQ0FBQztJQUVELGNBQWMsQ0FBQyxLQUFvQjtRQUNqQyxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssT0FBTyxFQUFFO1lBQzFCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztTQUNqQjtJQUNILENBQUM7SUFFRCxVQUFVLENBQUMsRUFBRTtRQUNYLFFBQVEsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUNsRCxJQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLEtBQUssSUFBSSxFQUFFO1lBQ2hELFlBQVksQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1NBQzFDO2FBQU0sSUFBSSxZQUFZLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsRUFBQztZQUNwRCxRQUFRLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxTQUFTLEdBQUcsbUJBQW1CLENBQUM7WUFDOUYsWUFBWSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDLENBQUM7U0FDMUM7SUFDSCxDQUFDO0NBSUYsQ0FBQTtBQTlFVTtJQUFSLEtBQUssRUFBRTt5REFBMkI7QUFDMUI7SUFBUixLQUFLLEVBQUU7cURBQXlCO0FBQ3ZCO0lBQVQsTUFBTSxFQUFFOzhEQUE4RDtBQUM3RDtJQUFULE1BQU0sRUFBRTsyREFBNkM7QUFDNUM7SUFBVCxNQUFNLEVBQUU7d0RBQXlDO0FBTnZDLG9CQUFvQjtJQUxoQyxTQUFTLENBQUM7UUFDVCxRQUFRLEVBQUUsaUJBQWlCO1FBQzNCLGttTUFBMkM7O0tBRTVDLENBQUM7R0FDVyxvQkFBb0IsQ0FnRmhDO1NBaEZZLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIFZpZXdDaGlsZHJlbiwgUXVlcnlMaXN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IElDaGF0TWVzc2FnZSwgSUludGVyYWN0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3VpbGlicmFyeS5tb2RlbCc7XHJcblxyXG4vKipcclxuICogQGlnbm9yZVxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhbWMtaW50ZXJhY3Rpb24nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9pbnRlcmFjdGlvbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vaW50ZXJhY3Rpb24uY29tcG9uZW50LnNjc3MnLCAnLi8uLi91aWxpYnJhcnkubW9kdWxlLnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW50ZXJhY3Rpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBASW5wdXQoKSBpbnRlcmFjdGlvbjogSUludGVyYWN0aW9uO1xyXG4gIEBJbnB1dCgpIG5ld01zZ3M6IElDaGF0TWVzc2FnZVtdO1xyXG4gIEBPdXRwdXQoKSBtaW5pbWl6ZWRDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGlzQWdlbnRUeXBpbmcgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcbiAgQE91dHB1dCgpIG5ld01lc3NhZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuICAgLyoqXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIG1pbmltaXplZDogYm9vbGVhbjtcclxuICBzZXQgX21pbmltaXplZCh2YWx1ZSkge1xyXG4gICAgdGhpcy5taW5pbWl6ZWQgPSB2YWx1ZTtcclxuICAgIHRoaXMubWluaW1pemVkQ2hhbmdlZC5lbWl0KHZhbHVlKTtcclxuICB9XHJcbiAgZ2V0IF9taW5pbWl6ZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5taW5pbWl6ZWQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAaWdub3JlXHJcbiAgICovXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLl9taW5pbWl6ZWQgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBpZ25vcmVcclxuICAgKi9cclxuICBuZ09uSW5pdCgpIHtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBpZ25vcmVcclxuICAgKi9cclxuICBtaW5pbWl6ZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX21pbmltaXplZCA9IHRydWU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAaWdub3JlXHJcbiAgICovXHJcbiAgbWF4aW1pemUoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9taW5pbWl6ZWQgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBpZ25vcmVcclxuICAgKi9cclxuICBpc0NvbmZlcmVuY2VDYWxsKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuaW50ZXJhY3Rpb24ucGFydGllcyAmJiB0aGlzLmludGVyYWN0aW9uLnBhcnRpZXMubGVuZ3RoID4gMSkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGNvbGxhcHNlS2V5cHJlc3MoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgIGlmIChldmVudC5jb2RlID09PSAnRW50ZXInKSB7XHJcbiAgICAgIHRoaXMubWluaW1pemUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGV4cGFuZEtleXByZXNzKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICBpZiAoZXZlbnQuY29kZSA9PT0gJ0VudGVyJykge1xyXG4gICAgICB0aGlzLm1heGltaXplKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjbGlja0V2ZW50KGlkKXtcclxuICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKS5jbGFzc05hbWUgPSAnc3VjY2Vzcyc7XHJcbiAgICBpZihsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZm9jdXNlZFBhbmVsJykgPT09IG51bGwpIHtcclxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2ZvY3VzZWRQYW5lbCcsIGlkKTtcclxuICAgIH0gZWxzZSBpZiAobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2ZvY3VzZWRQYW5lbCcpICE9IGlkKXtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2ZvY3VzZWRQYW5lbCcpKS5jbGFzc05hbWUgPSAnQW5zd2VyQ2FsbEZvY3VzZWQnO1xyXG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnZm9jdXNlZFBhbmVsJywgaWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG5cclxufVxyXG4iXX0=
|
|
@@ -24,8 +24,6 @@ let LoginComponent = class LoginComponent {
|
|
|
24
24
|
if (!loginForm.controls[field.name].valid) {
|
|
25
25
|
field.isInvalid = true;
|
|
26
26
|
}
|
|
27
|
-
// console.log(loginForm);
|
|
28
|
-
// console.log(field);
|
|
29
27
|
}
|
|
30
28
|
};
|
|
31
29
|
__decorate([
|
|
@@ -38,8 +36,8 @@ LoginComponent = __decorate([
|
|
|
38
36
|
Component({
|
|
39
37
|
selector: 'amc-login',
|
|
40
38
|
template: "<div class=\"login-container\">\r\n <form (ngSubmit)=\"onLogin(loginForm)\"class=\"login-form\" id=\"login-form\" #loginForm=\"ngForm\">\r\n <div class=\"header-container\">\r\n <label class=\"login-header\" attr.aria-label=\"login\">{{ loginData.header }}</label>\r\n </div>\r\n <div class=\"fields-container\">\r\n <div *ngFor=\"let field of loginData.fields\" class=\"field\">\r\n <label class=\"field-label\">\r\n {{ field.name }}:\r\n </label>\r\n\r\n <input\r\n ngModel\r\n class=\"field-input\"\r\n attr.aria-label=\"{{ field.name }}\"\r\n [name]=\"field.name\"\r\n [type]=\"field.type\"\r\n [value]=\"field.value\"\r\n [placeholder]=\"field.placeholder || ''\"\r\n [required]=\"field.isRequired || false\"\r\n (focusout)=\"focusOutOfInput(loginForm, field)\"/>\r\n\r\n <p class=\"invalid-input\" *ngIf=\"field.isInvalid\">{{ field.invalidMessage }}</p>\r\n </div>\r\n\r\n <button\r\n type=\"submit\"\r\n class=\"form-submit\"\r\n form=\"login-form\"\r\n tabindex=\"0\"\r\n attr.aria-label=\"send\"\r\n [disabled]=\"!loginForm.valid\">Login</button>\r\n </div>\r\n\r\n </form>\r\n</div>\r\n",
|
|
41
|
-
styles: [".login-container{border:1px solid #939598;white-space:nowrap;font-family:Arial;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;text-overflow:ellipsis;position:relative;font-size:.9em;overflow-x:hidden;overflow-y:hidden}.header-container{border-bottom:1px solid #939598;background-color:#f4f5fb;width:100%;height:28px;position
|
|
39
|
+
styles: [".login-container{border:1px solid #939598;white-space:nowrap;font-family:Arial;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;text-overflow:ellipsis;position:relative;font-size:.9em;overflow-x:hidden;overflow-y:hidden}.header-container{border-bottom:1px solid #939598;background-color:#f4f5fb;width:100%;height:28px;position:sticky}.login-header{margin-top:auto;margin-left:7px;padding:5px;font-weight:700;font-size:.9em}.fields-container{overflow-y:auto;font-size:.9em;padding:5px}.field{display:table-row;margin:5px}.field-label{padding:10px;display:table-cell}.field-input{display:table-cell;border:1px solid #939598;border-radius:5px}.field-input:focus{box-shadow:0 0 5px #38badf}.form-submit{margin:15px 10px 10px;display:table-row;border:1px solid #00a4b0;border-radius:5px;background-color:#00a4b0;color:#f7f7f7;width:10em;height:2em;transition:.2s;font-size:1.1em;position:relative;top:50%;left:50%;transform:translate(-50%,-50%)}.form-submit:hover{background-color:#01858f}.form-submit:disabled{background-color:silver;border-color:silver;color:#fff}input.ng-invalid.ng-touched[required]{border-color:#a94442}.form-submit:focus{outline:#3296da solid 2px;outline-offset:5px}.invalid-input{margin:0;padding:0;color:#a94442;font-size:x-small}"]
|
|
42
40
|
})
|
|
43
41
|
], LoginComponent);
|
|
44
42
|
export { LoginComponent };
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFtYy10ZWNobm9sb2d5L3VpLWxpYnJhcnkvIiwic291cmNlcyI6WyJwcm9qZWN0cy9VSUxpYnJhcnkvc3JjL2FwcC9jb21wb25lbnRzL2xvZ2luL2xvZ2luLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQVEvRSxJQUFhLGNBQWMsR0FBM0IsTUFBYSxjQUFjO0lBSXpCO1FBRlUseUJBQW9CLEdBQUcsSUFBSSxZQUFZLEVBQWMsQ0FBQztJQUVoRCxDQUFDO0lBRWpCLFFBQVE7UUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUU7WUFDMUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDO1NBQ2pDO1FBRUQsS0FBSyxJQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRTtZQUN2QyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRTtnQkFDcEIsS0FBSyxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7YUFDekI7U0FDRjtJQUNILENBQUM7SUFFRCxPQUFPLENBQUMsU0FBaUI7UUFDdkIsS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRTtZQUN6QyxLQUFLLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzNDO1FBRUQsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELGVBQWUsQ0FBQyxTQUFpQixFQUFFLEtBQUs7UUFDdEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRTtZQUN6QyxLQUFLLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztTQUN4QjtJQUNILENBQUM7Q0FDRixDQUFBO0FBOUJVO0lBQVIsS0FBSyxFQUFFO2lEQUF1QjtBQUNyQjtJQUFULE1BQU0sRUFBRTs0REFBdUQ7QUFGckQsY0FBYztJQUwxQixTQUFTLENBQUM7UUFDVCxRQUFRLEVBQUUsV0FBVztRQUNyQiwrd0NBQXFDOztLQUV0QyxDQUFDO0dBQ1csY0FBYyxDQStCMUI7U0EvQlksY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElMb2dpbkRhdGEgfSBmcm9tICcuLy4uLy4uL21vZGVscy9sb2dpbi5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5nRm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYW1jLWxvZ2luJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbG9naW4uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2xvZ2luLmNvbXBvbmVudC5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTG9naW5Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBJbnB1dCgpIGxvZ2luRGF0YTogSUxvZ2luRGF0YTtcclxuICBAT3V0cHV0KCkgbG9naW5EZXRhaWxzUHJvdmlkZWQgPSBuZXcgRXZlbnRFbWl0dGVyPElMb2dpbkRhdGE+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYgKCF0aGlzLmxvZ2luRGF0YS5oZWFkZXIpIHtcclxuICAgICAgdGhpcy5sb2dpbkRhdGEuaGVhZGVyID0gJ0xvZ2luJztcclxuICAgIH1cclxuXHJcbiAgICBmb3IgKGxldCBmaWVsZCBvZiB0aGlzLmxvZ2luRGF0YS5maWVsZHMpIHtcclxuICAgICAgaWYgKCFmaWVsZC5pc0ludmFsaWQpIHtcclxuICAgICAgICBmaWVsZC5pc0ludmFsaWQgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25Mb2dpbihsb2dpbkZvcm06IE5nRm9ybSkge1xyXG4gICAgZm9yIChjb25zdCBmaWVsZCBvZiB0aGlzLmxvZ2luRGF0YS5maWVsZHMpIHtcclxuICAgICAgZmllbGQudmFsdWUgPSBsb2dpbkZvcm0udmFsdWVbZmllbGQubmFtZV07XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5sb2dpbkRldGFpbHNQcm92aWRlZC5lbWl0KHRoaXMubG9naW5EYXRhKTtcclxuICB9XHJcblxyXG4gIGZvY3VzT3V0T2ZJbnB1dChsb2dpbkZvcm06IE5nRm9ybSwgZmllbGQpIHtcclxuICAgIGlmICghbG9naW5Gb3JtLmNvbnRyb2xzW2ZpZWxkLm5hbWVdLnZhbGlkKSB7XHJcbiAgICAgIGZpZWxkLmlzSW52YWxpZCA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
package/esm2015/projects/UILibrary/src/app/components/recent-activity/recent-activity.component.js
ADDED
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
3
|
+
import { debounceTime } from 'rxjs/operators';
|
|
4
|
+
import { Subject } from 'rxjs';
|
|
5
|
+
let RecentActivityComponent = class RecentActivityComponent {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.EventEmitter = new EventEmitter();
|
|
8
|
+
this.debouncer = new Subject();
|
|
9
|
+
this.eventList = new Set();
|
|
10
|
+
}
|
|
11
|
+
ngOnChanges() {
|
|
12
|
+
}
|
|
13
|
+
getIcon(scenario) {
|
|
14
|
+
switch (scenario) {
|
|
15
|
+
case 'Telephony':
|
|
16
|
+
return '../../assets/images/Phone_Number_Icon.png';
|
|
17
|
+
case 'Email':
|
|
18
|
+
return '../../assets/images/emailTab.png';
|
|
19
|
+
default:
|
|
20
|
+
return '../../assets/images/chat.png';
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
ngOnInit() {
|
|
24
|
+
this.debouncer.pipe(debounceTime(500)).subscribe(() => {
|
|
25
|
+
const newEvent = {
|
|
26
|
+
eventName: Array.from(this.eventList).join('|'),
|
|
27
|
+
idx: this.idx,
|
|
28
|
+
newValue: this.ActivityDetails
|
|
29
|
+
};
|
|
30
|
+
this.EventEmitter.emit(newEvent);
|
|
31
|
+
this.eventList.clear();
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
ngOnDestroy() { }
|
|
35
|
+
expandAndCollapseRecentActivity(isExpand) {
|
|
36
|
+
if (isExpand) {
|
|
37
|
+
this.EventEmitter.emit({
|
|
38
|
+
eventName: 'WorkingEvtivityChanged',
|
|
39
|
+
idx: this.idx,
|
|
40
|
+
newValue: this.ActivityDetails
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
this.EventEmitter.emit({
|
|
45
|
+
eventName: 'WorkingEvtivityChanged',
|
|
46
|
+
idx: -1,
|
|
47
|
+
newValue: this.ActivityDetails
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
openActivity() {
|
|
52
|
+
this.EventEmitter.emit({
|
|
53
|
+
eventName: 'OpenCallActivity',
|
|
54
|
+
idx: this.idx,
|
|
55
|
+
newValue: this.ActivityDetails
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
onSubjectChange() {
|
|
59
|
+
this.eventList.add('ActivitySubjectChanged');
|
|
60
|
+
this.debouncer.next();
|
|
61
|
+
}
|
|
62
|
+
onSubjectKeyUp() {
|
|
63
|
+
this.eventList.add('ActivitySubjectChanged');
|
|
64
|
+
this.debouncer.next();
|
|
65
|
+
}
|
|
66
|
+
onWhoObjectChange(event) {
|
|
67
|
+
this.ActivityDetails.WhoObject = this.WhoObjectList.find((obj) => obj.objectId === event);
|
|
68
|
+
this.EventEmitter.emit({
|
|
69
|
+
eventName: 'ActivityWhoObjectChanged',
|
|
70
|
+
idx: this.idx,
|
|
71
|
+
newValue: this.ActivityDetails
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
onRelatedToChange(event) {
|
|
75
|
+
this.ActivityDetails.WhatObject = this.WhatObjectList.find((obj) => obj.objectId === event);
|
|
76
|
+
this.EventEmitter.emit({
|
|
77
|
+
eventName: 'ActivityWhatObjectChanged',
|
|
78
|
+
idx: this.idx,
|
|
79
|
+
newValue: this.ActivityDetails
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
onCallNotesChange() {
|
|
83
|
+
this.eventList.add('ActivityCallNoteChanged');
|
|
84
|
+
this.debouncer.next();
|
|
85
|
+
}
|
|
86
|
+
onCallNotesKeyUp() {
|
|
87
|
+
this.eventList.add('ActivityCallNoteChanged');
|
|
88
|
+
this.debouncer.next();
|
|
89
|
+
}
|
|
90
|
+
addQuickCommentToDescription(comment) {
|
|
91
|
+
if (this.ActivityDetails.Description) {
|
|
92
|
+
this.ActivityDetails.Description += '\n';
|
|
93
|
+
}
|
|
94
|
+
this.ActivityDetails.Description += comment;
|
|
95
|
+
this.eventList.add('ActivityCallNoteChanged');
|
|
96
|
+
this.debouncer.next();
|
|
97
|
+
}
|
|
98
|
+
submitActivity() {
|
|
99
|
+
this.ActivityDetails.IsProcessing = true;
|
|
100
|
+
this.EventEmitter.emit({
|
|
101
|
+
eventName: 'SubmitActivity',
|
|
102
|
+
idx: this.idx,
|
|
103
|
+
newValue: this.ActivityDetails
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
__decorate([
|
|
108
|
+
Input()
|
|
109
|
+
], RecentActivityComponent.prototype, "ActivityDetails", void 0);
|
|
110
|
+
__decorate([
|
|
111
|
+
Input()
|
|
112
|
+
], RecentActivityComponent.prototype, "isInConsoleView", void 0);
|
|
113
|
+
__decorate([
|
|
114
|
+
Input()
|
|
115
|
+
], RecentActivityComponent.prototype, "quickCommentList", void 0);
|
|
116
|
+
__decorate([
|
|
117
|
+
Input()
|
|
118
|
+
], RecentActivityComponent.prototype, "workingScenarioID", void 0);
|
|
119
|
+
__decorate([
|
|
120
|
+
Input()
|
|
121
|
+
], RecentActivityComponent.prototype, "idx", void 0);
|
|
122
|
+
__decorate([
|
|
123
|
+
Input()
|
|
124
|
+
], RecentActivityComponent.prototype, "last", void 0);
|
|
125
|
+
__decorate([
|
|
126
|
+
Input()
|
|
127
|
+
], RecentActivityComponent.prototype, "WhoObjectList", void 0);
|
|
128
|
+
__decorate([
|
|
129
|
+
Input()
|
|
130
|
+
], RecentActivityComponent.prototype, "WhatObjectList", void 0);
|
|
131
|
+
__decorate([
|
|
132
|
+
Output()
|
|
133
|
+
], RecentActivityComponent.prototype, "EventEmitter", void 0);
|
|
134
|
+
RecentActivityComponent = __decorate([
|
|
135
|
+
Component({
|
|
136
|
+
selector: 'amc-recent-activity',
|
|
137
|
+
template: "<div *ngIf=\"ActivityDetails.ScenarioId === workingScenarioID\">\r\n <div (click)=\"expandAndCollapseRecentActivity(false);\" class=\"editor callHeaderRecentActivitySelected\">\r\n <label class=\"headerLabelClickableLook\">\r\n <img [src]=\"getIcon(ActivityDetails.ChannelType)\" class=\"RecentCallsImg\" />\r\n <b>{{ ActivityDetails.Subject }}</b>\r\n </label>\r\n <img *ngIf=\"ActivityDetails.ActivityId\" class=\"RecentCallsImgForActivity\" src=\"../../assets/images/open_activity.png\"\r\n title=\"Open Activity\" (click)=\"openActivity();$event.stopPropagation();\" />\r\n <label *ngIf=\"ActivityDetails.IsUnSaved && isInConsoleView\" class=\"unsavedText\">unsaved</label>\r\n </div>\r\n <div class=\"callBody\">\r\n <div class=\"gray-out\" *ngIf=\"ActivityDetails.IsRecentWorkItemLoading\">\r\n <div class=\"spinner-container\">\r\n <img class=\"spinner\" src=\"../../assets/images/view_progress.gif\" />\r\n </div>\r\n </div>\r\n <div class=\"activityFields\">\r\n <!-- <form> -->\r\n <div class=\"editor displayDiv\">\r\n <label class=\"displayLabels\" title=\"Subject\">Subject</label>\r\n <input class=\"activitySubjectTextBoxStyle displayData\" type=\"text\" (change)=\"onSubjectChange();\"\r\n (keyup)=\"onSubjectKeyUp()\" name=\"subject\" [(ngModel)]=\"ActivityDetails.Subject\" />\r\n </div>\r\n <div class=\"editor displayDiv\">\r\n <label class=\"displayLabels\" title=\"Name\">Name</label>\r\n <select class=\"dropDownListStyle displayData\" [ngModel]=\"ActivityDetails.WhoObject.objectId\"\r\n (ngModelChange)=\"onWhoObjectChange($event)\" name=\"whoItem\">\r\n <option *ngFor=\"let whoItem of WhoObjectList\" [ngValue]=\"whoItem.objectId\">\r\n {{(whoItem.displayName && whoItem.objectName) ? (whoItem.displayName + ': ' + whoItem.objectName) : \"\" }}</option>\r\n <!-- <option value=\"UserSelectedForEmptyRecord\"></option> -->\r\n </select>\r\n </div>\r\n <div class=\"editor displayDiv\">\r\n <label class=\"displayLabels\" title=\"Regarding\">Related To</label>\r\n <select class=\"dropDownListStyle displayData\" [ngModel]=\"ActivityDetails.WhatObject.objectId\"\r\n (ngModelChange)=\"onRelatedToChange($event)\" name=\"whatItem\">\r\n <option *ngFor=\"let whatItem of WhatObjectList;\" [ngValue]=\"whatItem.objectId\">\r\n {{ (whatItem.displayName && whatItem.objectName) ? (whatItem.displayName + ': ' + whatItem.objectName) : \"\" }}</option>\r\n <!-- <option value=\"UserSelectedForEmptyRecord\"></option> -->\r\n </select>\r\n </div>\r\n <div class=\"editor displayDiv\">\r\n <div class=\"callNotesSection\">\r\n <div class=\"callNotesTextArea\">\r\n <textarea placeholder=\"Click to add a comment\" class=\"activityCommentsTextBoxStyle\"\r\n (change)=\"onCallNotesChange();\" (keyup)=\"onCallNotesKeyUp()\" name=\"description\" rows=\"5\" title=\"\"\r\n [(ngModel)]=\"ActivityDetails.Description\">\r\n </textarea>\r\n </div>\r\n <div class=\"notesBottonBorder\">\r\n <div class=\"commentsButtonDiv\">\r\n <div class=\"quickCommentsDiv\">\r\n <input *ngFor=\"let quickComment of quickCommentList; let i = index;\" class=\"quickNotesBotton\"\r\n type=\"button\" value=\"{{i+1}}\" (click)=\"addQuickCommentToDescription(quickComment)\"\r\n title=\"{{quickComment}}\">\r\n </div>\r\n <div class=\"callNotesButtonsSection\">\r\n <input class=\"submitButton\" type=\"button\" value=\"Save\" (click)=\"submitActivity()\"\r\n [disabled]=\"!ActivityDetails.IsUnSaved\" />\r\n <!-- <input *ngIf=\"recentScenario.IsProcessing\" class=\"submitButton\" type=\"button\" value=\"Save\" (click)=\"submitActivity(idx)\" [disabled]=\"!recentScenario.IsUnSaved\"/> -->\r\n <img *ngIf=\"ActivityDetails.IsProcessing\" class=\"loadingIcon\" src=\"../../assets/images/loading.gif\"\r\n title=\"Updating Activity\" />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- </form> -->\r\n </div>\r\n </div>\r\n</div>\r\n<div *ngIf=\"ActivityDetails.ScenarioId !== workingScenarioID \">\r\n <div [class.callHeaderBottomBorder]='last' (click)=\"expandAndCollapseRecentActivity(true)\"\r\n class=\"editor callHeaderRecentActivityUnselected\">\r\n <label class=\"headerLabelClickableLook\">\r\n <img [src]=\"getIcon(ActivityDetails.ChannelType)\" class=\"RecentCallsImg\" />\r\n <b>{{ ActivityDetails.Subject }}</b>\r\n </label>\r\n <img *ngIf=\"ActivityDetails.ActivityId\" class=\"RecentCallsImgForActivity\" src=\"../../assets/images/open_activity.png\"\r\n title=\"Open Activity\" (click)=\"openActivity();$event.stopPropagation();\" />\r\n <label *ngIf=\"ActivityDetails.IsUnSaved && isInConsoleView\" class=\"unsavedText\">unsaved</label>\r\n </div>\r\n</div>\r\n\r\n",
|
|
138
|
+
styles: [".callSection{margin-left:0;font-family:Arial;position:relative;margin-top:5px;background-color:#fff}.notesBottonBorder{background-color:#fff;border-left:1px solid #939598;border-bottom:1px solid #939598;border-right:1px solid #939598;border-bottom-left-radius:3px!important;border-bottom-right-radius:3px!important;height:auto}.quickCommentsDiv{text-align:left;flex:1 0 0;flex-wrap:wrap;display:flex;margin:2px}.unsavedText{float:right;margin-right:5px;color:gray;font-style:italic}.quickNotesBotton{background-color:#1e72ba;border:0;color:#fff;height:70%;width:20px;margin:2px;outline:0;font-size:70%}.submitButton{border:0;float:right;margin-top:2px;outline:0;cursor:pointer;background-color:#6cb047;color:#fff;border-radius:4px;font-size:98%;margin-bottom:2px}.commentsButtonDiv{width:100%;display:flex;align-items:center;background-color:#f6f7fb}.gray-out{top:0;left:0;position:absolute;z-index:2000;background:#fff;opacity:.7;width:100%;height:100%}.spinner-container{position:relative;width:-moz-fit-content;width:fit-content;top:50%;left:50%;transform:translate(-50%,-50%)}.spinner{height:80px;width:80px;border:0;position:relative;left:50%;transform:translate(-50%,0)}.callNotesButtonsSection{text-align:right;padding-right:4px}.ViewResizeImage{width:20px;height:20px;float:right;cursor:pointer}.callBody{border:1px solid #939598;border-top:1px solid #fff;position:relative}.callBodyBorderless{position:relative}.callDisplay{margin-bottom:8px;background-color:#fff}.editor{font-size:.9em;width:70%;text-align:left;margin:4px 5% 0 0;font-family:Arial;white-space:nowrap;text-overflow:ellipsis;border:0;padding-top:5px;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.dropDownListStyle{border:1px solid #939598!important;border-radius:3px!important;width:70%!important;height:20px!important;text-align:left!important;white-space:nowrap!important;text-overflow:ellipsis!important;margin:0 5px 0 0;cursor:pointer}.activitySubjectTextBoxStyle{border:1px solid #939598!important;border-radius:3px!important;width:70%!important;height:20px!important;text-align:left!important;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;margin:0 5px 0 0;padding-left:2px}.activityCommentsTextBoxStyle{color:#333!important;text-align:left!important;margin:0;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;resize:none;width:100%;height:100%;border:none}.displayDiv{width:100%;display:flex}.displayLabels{margin-left:5px;width:25%;overflow:hidden;text-overflow:ellipsis}.displayData{width:70%}.headerLabel{margin-left:10px}.activityFields{position:relative;z-index:0}.callNotesTextArea{background-color:#fff;border-bottom:1px solid #939598;border-top:1px solid #939598;border-top-left-radius:3px!important;border-top-right-radius:3px!important}.callNotesSection{float:left;height:100%;width:100%;background-color:#f6f7fb}.callHeaderRecentActivitySelected{cursor:pointer;border-left:1px solid #939598!important;border-right:1px solid #939598!important;background-color:#cfecf2!important;width:100%!important;margin-top:0!important}.callHeaderRecentActivityUnselected{cursor:pointer;border-left:1px solid #939598!important;border-right:1px solid #939598!important;background-color:#e6f4f7!important;width:100%!important;margin-top:0!important}.callHeader{border:1px solid #939598!important;background-color:#f4f5fb!important;width:100%!important;margin-top:0!important}.callHeaderBottomBorder{cursor:pointer;border-bottom:1px solid #939598!important;border-left:1px solid #939598!important;border-right:1px solid #939598!important;background-color:#e6f4f7!important;width:100%!important;margin-top:0!important}.RecentCallsImg{height:15px;vertical-align:text-bottom}.RecentCallsImgForActivity{height:15px;vertical-align:super;margin-right:5px}.headerLabelClickableLook{cursor:pointer;display:inline-block;margin-left:10px;max-width:80%;overflow:hidden;text-overflow:ellipsis}.loadingIcon{margin-left:auto;margin-right:5px;height:10px;width:30px;margin-top:5px;padding-bottom:0}input[type=button]:disabled{background-color:#d3d3d3;cursor:auto}"]
|
|
139
|
+
})
|
|
140
|
+
], RecentActivityComponent);
|
|
141
|
+
export { RecentActivityComponent };
|
|
142
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjZW50LWFjdGl2aXR5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhbWMtdGVjaG5vbG9neS91aS1saWJyYXJ5LyIsInNvdXJjZXMiOlsicHJvamVjdHMvVUlMaWJyYXJ5L3NyYy9hcHAvY29tcG9uZW50cy9yZWNlbnQtYWN0aXZpdHkvcmVjZW50LWFjdGl2aXR5LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFJUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQVMvQixJQUFhLHVCQUF1QixHQUFwQyxNQUFhLHVCQUF1QjtJQW1CbEM7UUFDRSxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksWUFBWSxFQUloQyxDQUFDO1FBRUwsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsV0FBVztJQUNYLENBQUM7SUFFRCxPQUFPLENBQUMsUUFBUTtRQUNkLFFBQVEsUUFBUSxFQUFFO1lBQ2hCLEtBQUssV0FBVztnQkFDZCxPQUFPLDJDQUEyQyxDQUFDO1lBQ3JELEtBQUssT0FBTztnQkFDVixPQUFPLGtDQUFrQyxDQUFDO1lBQzVDO2dCQUNFLE9BQU8sOEJBQThCLENBQUM7U0FDekM7SUFDSCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDcEQsTUFBTSxRQUFRLEdBQUc7Z0JBQ2YsU0FBUyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMs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clxuICBJbnB1dCxcclxuICBPdXRwdXQsXHJcbiAgT25Jbml0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkRlc3Ryb3lcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IElBY3Rpdml0eSB9IGZyb20gJy4uLy4uL21vZGVscy9JQWN0aXZpdHknO1xyXG5pbXBvcnQgeyBJQWN0aXZpdHlEZXRhaWxzIH0gZnJvbSAnLi4vLi4vbW9kZWxzL0lBY3Rpdml0eURldGFpbHMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhbWMtcmVjZW50LWFjdGl2aXR5JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcmVjZW50LWFjdGl2aXR5LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9yZWNlbnQtYWN0aXZpdHkuY29tcG9uZW50LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZWNlbnRBY3Rpdml0eUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xyXG4gIEBJbnB1dCgpIEFjdGl2aXR5RGV0YWlsczogSUFjdGl2aXR5O1xyXG4gIEBJbnB1dCgpIGlzSW5Db25zb2xlVmlldzogYm9vbGVhbjtcclxuICBASW5wdXQoKSBxdWlja0NvbW1lbnRMaXN0OiBzdHJpbmdbXTtcclxuICBASW5wdXQoKSB3b3JraW5nU2NlbmFyaW9JRDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGlkeDogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIGxhc3Q6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgV2hvT2JqZWN0TGlzdDogSUFjdGl2aXR5RGV0YWlsc1tdO1xyXG4gIEBJbnB1dCgpIFdoYXRPYmplY3RMaXN0OiBJQWN0aXZpdHlEZXRhaWxzW107XHJcblxyXG4gIEBPdXRwdXQoKSBFdmVudEVtaXR0ZXI6IEV2ZW50RW1pdHRlcjx7XHJcbiAgICBldmVudE5hbWU6IHN0cmluZztcclxuICAgIGlkeDogbnVtYmVyO1xyXG4gICAgbmV3VmFsdWU/OiBJQWN0aXZpdHk7XHJcbiAgfT47XHJcblxyXG4gIHByaXZhdGUgZGVib3VuY2VyOiBTdWJqZWN0PHZvaWQ+O1xyXG4gIHByaXZhdGUgZXZlbnRMaXN0OiBTZXQ8U3RyaW5nPjtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLkV2ZW50RW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXI8e1xyXG4gICAgICBldmVudE5hbWU6IHN0cmluZztcclxuICAgICAgaWR4OiBudW1iZXI7XHJcbiAgICAgIG5ld1ZhbHVlPzogSUFjdGl2aXR5O1xyXG4gICAgfT4oKTtcclxuXHJcbiAgICB0aGlzLmRlYm91bmNlciA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgICB0aGlzLmV2ZW50TGlzdCA9IG5ldyBTZXQoKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xyXG4gIH1cclxuXHJcbiAgZ2V0SWNvbihzY2VuYXJpbyk6IHN0cmluZyB7XHJcbiAgICBzd2l0Y2ggKHNjZW5hcmlvKSB7XHJcbiAgICAgIGNhc2UgJ1RlbGVwaG9ueSc6XHJcbiAgICAgICAgcmV0dXJuICcuLi8uLi9hc3NldHMvaW1hZ2VzL1Bob25lX051bWJlcl9JY29uLnBuZyc7XHJcbiAgICAgIGNhc2UgJ0VtYWlsJzpcclxuICAgICAgICByZXR1cm4gJy4uLy4uL2Fzc2V0cy9pbWFnZXMvZW1haWxUYWIucG5nJztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gJy4uLy4uL2Fzc2V0cy9pbWFnZXMvY2hhdC5wbmcnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlYm91bmNlci5waXBlKGRlYm91bmNlVGltZSg1MDApKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICBjb25zdCBuZXdFdmVudCA9IHtcclxuICAgICAgICBldmVudE5hbWU6IEFycmF5LmZyb20odGhpcy5ldmVudExpc3QpLmpvaW4oJ3wnKSxcclxuICAgICAgICBpZHg6IHRoaXMuaWR4LFxyXG4gICAgICAgIG5ld1ZhbHVlOiB0aGlzLkFjdGl2aXR5RGV0YWlsc1xyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLkV2ZW50RW1pdHRlci5lbWl0KG5ld0V2ZW50KTtcclxuICAgICAgdGhpcy5ldmVudExpc3QuY2xlYXIoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7fVxyXG5cclxuICBleHBhbmRBbmRDb2xsYXBzZVJlY2VudEFjdGl2aXR5KGlzRXhwYW5kOiBib29sZWFuKSB7XHJcbiAgICBpZiAoaXNFeHBhbmQpIHtcclxuICAgICAgdGhpcy5FdmVudEVtaXR0ZXIuZW1pdCh7XHJcbiAgICAgICAgZXZlbnROYW1lOiAnV29ya2luZ0V2dGl2aXR5Q2hhbmdlZCcsXHJcbiAgICAgICAgaWR4OiB0aGlzLmlkeCxcclxuICAgICAgICBuZXdWYWx1ZTogdGhpcy5BY3Rpdml0eURldGFpbHNcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLkV2ZW50RW1pdHRlci5lbWl0KHtcclxuICAgICAgICBldmVudE5hbWU6ICdXb3JraW5nRXZ0aXZpdHlDaGFuZ2VkJyxcclxuICAgICAgICBpZHg6IC0xLFxyXG4gICAgICAgIG5ld1ZhbHVlOiB0aGlzLkFjdGl2aXR5RGV0YWlsc1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9wZW5BY3Rpdml0eSgpIHtcclxuICAgIHRoaXMuRXZlbnRFbWl0dGVyLmVtaXQoe1xyXG4gICAgICBldmVudE5hbWU6ICdPcGVuQ2FsbEFjdGl2aXR5JyxcclxuICAgICAgaWR4OiB0aGlzLmlkeCxcclxuICAgICAgbmV3VmFsdWU6IHRoaXMuQWN0aXZpdHlEZXRhaWxzXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uU3ViamVjdENoYW5nZSgpIHtcclxuICAgIHRoaXMuZXZlbnRMaXN0LmFkZCgnQWN0aXZpdHlTdWJqZWN0Q2hhbmdlZCcpO1xyXG4gICAgdGhpcy5kZWJvdW5jZXIubmV4dCgpO1xyXG4gIH1cclxuXHJcbiAgb25TdWJqZWN0S2V5VXAoKSB7XHJcbiAgICB0aGlzLmV2ZW50TGlzdC5hZGQoJ0FjdGl2aXR5U3ViamVjdENoYW5nZWQnKTtcclxuICAgIHRoaXMuZGVib3VuY2VyLm5leHQoKTtcclxuICB9XHJcblxyXG4gIG9uV2hvT2JqZWN0Q2hhbmdlKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuQWN0aXZpdHlEZXRhaWxzLldob09iamVjdCA9IHRoaXMuV2hvT2JqZWN0TGlzdC5maW5kKChvYmopID0+IG9iai5vYmplY3RJZCA9PT0gZXZlbnQpO1xyXG4gICAgdGhpcy5FdmVudEVtaXR0ZXIuZW1pdCh7XHJcbiAgICAgIGV2ZW50TmFtZTogJ0FjdGl2aXR5V2hvT2JqZWN0Q2hhbmdlZCcsXHJcbiAgICAgIGlkeDogdGhpcy5pZHgsXHJcbiAgICAgIG5ld1ZhbHVlOiB0aGlzLkFjdGl2aXR5RGV0YWlsc1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvblJlbGF0ZWRUb0NoYW5nZShldmVudDogYW55KSB7XHJcbiAgICB0aGlzLkFjdGl2aXR5RGV0YWlscy5XaGF0T2JqZWN0ID0gdGhpcy5XaGF0T2JqZWN0TGlzdC5maW5kKChvYmopID0+IG9iai5vYmplY3RJZCA9PT0gZXZlbnQpO1xyXG4gICAgdGhpcy5FdmVudEVtaXR0ZXIuZW1pdCh7XHJcbiAgICAgIGV2ZW50TmFtZTogJ0FjdGl2aXR5V2hhdE9iamVjdENoYW5nZWQnLFxyXG4gICAgICBpZHg6IHRoaXMuaWR4LFxyXG4gICAgICBuZXdWYWx1ZTogdGhpcy5BY3Rpdml0eURldGFpbHNcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25DYWxsTm90ZXNDaGFuZ2UoKSB7XHJcbiAgICB0aGlzLmV2ZW50TGlzdC5hZGQoJ0FjdGl2aXR5Q2FsbE5vdGVDaGFuZ2VkJyk7XHJcbiAgICB0aGlzLmRlYm91bmNlci5uZXh0KCk7XHJcbiAgfVxyXG5cclxuICBvbkNhbGxOb3Rlc0tleVVwKCkge1xyXG4gICAgdGhpcy5ldmVudExpc3QuYWRkKCdBY3Rpdml0eUNhbGxOb3RlQ2hhbmdlZCcpO1xyXG4gICAgdGhpcy5kZWJvdW5jZXIubmV4dCgpO1xyXG4gIH1cclxuXHJcbiAgYWRkUXVpY2tDb21tZW50VG9EZXNjcmlwdGlvbihjb21tZW50OiBzdHJpbmcpIHtcclxuICAgIGlmICh0aGlzLkFjdGl2aXR5RGV0YWlscy5EZXNjcmlwdGlvbikge1xyXG4gICAgICB0aGlzLkFjdGl2aXR5RGV0YWlscy5EZXNjcmlwdGlvbiArPSAnXFxuJztcclxuICAgIH1cclxuICAgIHRoaXMuQWN0aXZpdHlEZXRhaWxzLkRlc2NyaXB0aW9uICs9IGNvbW1lbnQ7XHJcbiAgICB0aGlzLmV2ZW50TGlzdC5hZGQoJ0FjdGl2aXR5Q2FsbE5vdGVDaGFuZ2VkJyk7XHJcbiAgICB0aGlzLmRlYm91bmNlci5uZXh0KCk7XHJcbiAgfVxyXG5cclxuICBzdWJtaXRBY3Rpdml0eSgpIHtcclxuICAgIHRoaXMuQWN0aXZpdHlEZXRhaWxzLklzUHJvY2Vzc2luZyA9IHRydWU7XHJcbiAgICB0aGlzLkV2ZW50RW1pdHRlci5lbWl0KHtcclxuICAgICAgZXZlbnROYW1lOiAnU3VibWl0QWN0aXZpdHknLFxyXG4gICAgICBpZHg6IHRoaXMuaWR4LFxyXG4gICAgICBuZXdWYWx1ZTogdGhpcy5BY3Rpdml0eURldGFpbHNcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=
|