@amc-technology/ui-library 1.0.104 → 1.0.105

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.
@@ -12,17 +12,27 @@ export class SearchInformationComponent {
12
12
  singleMatchData;
13
13
  multiMatchData;
14
14
  shouldShowAllMultiMatchOptions;
15
+ selectedMultiMatchIndex;
15
16
  constructor() {
16
17
  this.isSearchInformationMaximized = true;
17
18
  this.singleMatchData = null;
18
19
  this.multiMatchData = [];
19
20
  this.agentSelectedCallerInformation = new EventEmitter();
21
+ this.selectedMultiMatchIndex = 0;
20
22
  }
21
- ngOnChanges() {
22
- this.renderData();
23
+ ngOnChanges(changes) {
24
+ if (changes['searchRecordList']) {
25
+ this.renderData();
26
+ }
23
27
  }
24
28
  onAgentSelectedCallerInformation(event) {
25
29
  try {
30
+ const selectedId = event.target.id;
31
+ const selectedIndex = this.searchRecordList.findIndex(r => r.id === selectedId);
32
+ if (selectedIndex >= 0) {
33
+ this.selectedMultiMatchIndex = selectedIndex;
34
+ }
35
+ this.shouldShowAllMultiMatchOptions = false;
26
36
  this.agentSelectedCallerInformation.emit({
27
37
  id: event.target.id,
28
38
  value: event.target.value
@@ -35,6 +45,7 @@ export class SearchInformationComponent {
35
45
  this.singleMatchData = null;
36
46
  this.multiMatchData = [];
37
47
  this.shouldShowAllMultiMatchOptions = false;
48
+ this.selectedMultiMatchIndex = 0;
38
49
  if (this.searchRecordList.length === 1) {
39
50
  this.singleMatchData = this.parseSearchRecordForNameSingleMatch(this.searchRecordList[0]);
40
51
  }
@@ -143,11 +154,11 @@ export class SearchInformationComponent {
143
154
  return layoutInfo;
144
155
  }
145
156
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SearchInformationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
146
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SearchInformationComponent, selector: "amc-search-information", inputs: { ActivityDetails: "ActivityDetails", searchLayout: "searchLayout", searchRecordList: "searchRecordList" }, outputs: { agentSelectedCallerInformation: "agentSelectedCallerInformation" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"callDisplay\">\r\n <div class=\"editor callHeader\">\r\n <label class=\"headerLabel\">\r\n <b>Caller Information</b>\r\n </label>\r\n <img\r\n title=\"Multiple Matches Available\"\r\n *ngIf=\"this.searchRecordList.length > 1\"\r\n src=\"../../assets/images/MultiMatchAlert.png\"\r\n class=\"multiMatchImg\"\r\n />\r\n <img\r\n *ngIf=\"isSearchInformationMaximized\"\r\n class=\"ViewResizeImage\"\r\n src=\"assets/images/section_collapse.png\"\r\n (click)=\"isSearchInformationMaximized = false\"\r\n title=\"Collapse\"\r\n />\r\n <img\r\n *ngIf=\"!isSearchInformationMaximized\"\r\n class=\"ViewResizeImage\"\r\n src=\"assets/images/section_expand.png\"\r\n (click)=\"isSearchInformationMaximized = true\"\r\n title=\"Expand\"\r\n />\r\n </div>\r\n <div class=\"callBody\" *ngIf=\"isSearchInformationMaximized\">\r\n <div *ngIf=\"this.searchRecordList.length > 1\">\r\n <span class=\"overflowWrapper\">\r\n <img\r\n class=\"CRMResultImageMultiMatch\"\r\n src=\"{{ this.multiMatchData[0][0][2] }}\"\r\n />\r\n <input\r\n id=\"{{ this.searchRecordList[0].id }}\"\r\n name=\"{{ this.multiMatchData[0][0][1] }}\"\r\n (click)=\"onAgentSelectedCallerInformation($event)\"\r\n readonly\r\n class=\"multiMatchLabel\"\r\n title=\"{{ this.multiMatchData[0][0][1] }}\"\r\n type=\"text\"\r\n value=\"{{ this.multiMatchData[0][0][1] }}\"\r\n />\r\n <span style=\"float: right; margin-right: 4%;\">\r\n <img\r\n *ngIf=\"!this.shouldShowAllMultiMatchOptions\"\r\n class=\"CRMExpandImage\"\r\n src=\"../../assets/images/down-arrow.png\"\r\n (click)=\"shouldShowAllMultiMatchOptions = true\"\r\n />\r\n <img\r\n *ngIf=\"this.shouldShowAllMultiMatchOptions\"\r\n class=\"CRMExpandImage\"\r\n src=\"../../assets/images/up-arrow.png\"\r\n (click)=\"shouldShowAllMultiMatchOptions = false\"\r\n />\r\n </span>\r\n </span>\r\n <div *ngIf=\"this.shouldShowAllMultiMatchOptions\">\r\n <div *ngFor=\"let i of this.multiMatchData | slice: 1; let index = index\">\r\n <span\r\n class=\"overflowWrapper\"\r\n >\r\n <img class=\"CRMResultImageMultiMatch\" src=\"{{ i[0][2] }}\" />\r\n <input\r\n id=\"{{ this.searchRecordList[index + 1].id }}\"\r\n name=\"{{ i[0][1] }}\"\r\n readonly\r\n class=\"multiMatchLabel\"\r\n (click)=\"onAgentSelectedCallerInformation($event)\"\r\n title=\"{{ i[0][1] }}\"\r\n type=\"text\"\r\n value=\"{{ i[0][1] }}\"\r\n />\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Below is the HTML loaded on Single Match -->\r\n <div *ngIf=\"this.searchRecordList.length === 1\">\r\n <div\r\n class=\"editorFull displayDiv\"\r\n *ngFor=\"\r\n let i of this.singleMatchData | slice: 0:1;\r\n let index = index;\r\n let first = first\r\n \"\r\n >\r\n <span class=\"overflowWrapper\">\r\n <img\r\n id=\"EntityIcon\"\r\n src=\"{{ this.singleMatchIconSrc }}\"\r\n class=\"CRMResultImage\"\r\n />\r\n <input\r\n class=\"singleSearchResultSelect singleMatchFirstWrapper \"\r\n id=\"{{ this.searchRecordList[0].id }}\"\r\n [class.firstSingleMatchResult]=\"first\"\r\n value=\"{{ i[1] }}\"\r\n title=\"{{ i[1] }}\"\r\n (click)=\"onAgentSelectedCallerInformation($event)\"\r\n readonly\r\n />\r\n </span>\r\n </div>\r\n <div\r\n class=\"editorFull displayDiv\"\r\n *ngFor=\"\r\n let i of this.singleMatchData | slice: 1;\r\n let index = index;\r\n let first = first\r\n \"\r\n >\r\n <span class=\"overflowWrapper\">\r\n <label title=\"{{ i[0] }}\" class=\"displayLabelsTabbed\">{{\r\n i[0]\r\n }}</label>\r\n <input\r\n class=\"singleSearchResultSelect singleMatchTabbedItemsWrapper singleMatchLabel\"\r\n id=\"{{ this.searchRecordList[0].id }}\"\r\n value=\"{{ i[1] }}\"\r\n title=\"{{ i[1] }}\"\r\n readonly\r\n />\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".callHeader{background-color:#f4f5fb!important;width:100%!important;margin-top:0!important;border:1px solid #939598!important}.displayDiv{width:100%;display:flex}.multiMatchImg{height:18px;margin-left:5px}.editor{font-size:.9em;width:70%;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}.editorFull{font-size:.9em;width:100%;text-align:left;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}.CRMResultImage{width:18px;height:18px;margin-right:-5px;margin-top:-5px;margin-left:5px}.CRMResultImageMultiMatch{width:18px;height:18px;margin-right:2px;margin-left:5px;margin-top:-5px}.CRMExpandImage{width:6px;height:6px;cursor:pointer;margin-bottom:2px}.callBody{border:1px solid #939598;border-top-color:#939598;border-top-style:solid;border-top-width:1px;border-top:0;position:relative}.callDisplay{margin-bottom:8px;background-color:#fff;display:grid}.multipleSearchResultSelect{border:1px solid #939598!important;border-radius:3px!important;width:96%!important;height:20px!important;text-align:left!important;white-space:nowrap!important;text-overflow:ellipsis!important;margin:5px 0% 5px 6px;cursor:pointer}.overflowWrapper{width:100%;overflow-x:hidden;overflow-y:hidden}.singleSearchResultSelect{border:0px solid #939598!important;height:20px!important;text-align:left!important;white-space:nowrap!important;text-overflow:ellipsis!important;margin:0 0% 0 0;outline:none}.wrapper{width:79%!important}.singleMatchFirstWrapper{cursor:pointer;border:0px;outline:none;overflow:hidden;text-overflow:ellipsis;display:inline-block;width:calc(100% - 30px)}.singleMatchTabbedItemsWrapper{width:70%}.displayLabels{margin-left:5px;width:calc(20% + 5px);font-weight:400;margin-bottom:0;margin-top:0;outline:none;overflow:hidden;max-width:100px;vertical-align:middle}.displayLabelsMultiMatch{margin-left:5px;width:calc(20% + 5px);font-weight:400;margin-bottom:0;margin-top:0;outline:none}.displayLabelsTabbed{margin-left:5px;width:35%;font-weight:400;margin-bottom:0;margin-top:0;outline:none;overflow:hidden;text-overflow:ellipsis;vertical-align:middle}.matchedRecordsMargin{margin-top:1%}.ViewResizeImage{width:20px;height:20px;float:right;cursor:pointer}.headerLabel{margin-left:10px}.firstSingleMatchResult{font-weight:700;border:0px solid #939598!important;height:20px!important;text-align:left!important;white-space:nowrap!important;text-overflow:ellipsis!important;margin:0 0% 0 5px;outline:none}.multiMatchLabel{border:0px;cursor:pointer;outline:none;overflow:hidden;text-overflow:ellipsis;display:inline-block;width:calc(95% - 45px)}.singleMatchLabel{border:0px;outline:none;overflow:hidden;text-overflow:ellipsis;display:inline-block;width:calc(65% - 13px)}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.SlicePipe, name: "slice" }] });
157
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SearchInformationComponent, selector: "amc-search-information", inputs: { ActivityDetails: "ActivityDetails", searchLayout: "searchLayout", searchRecordList: "searchRecordList" }, outputs: { agentSelectedCallerInformation: "agentSelectedCallerInformation" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"callDisplay\">\r\n <div class=\"editor searchInfoHeader\">\r\n <label class=\"headerLabel\">\r\n <b>Caller Information</b>\r\n </label>\r\n <span\r\n *ngIf=\"this.searchRecordList.length > 1\"\r\n class=\"multiMatchBadge\"\r\n >{{ this.searchRecordList.length }} matches</span>\r\n <img\r\n *ngIf=\"isSearchInformationMaximized\"\r\n class=\"ViewResizeImage\"\r\n src=\"assets/images/section_collapse.png\"\r\n (click)=\"isSearchInformationMaximized = false\"\r\n title=\"Collapse\"\r\n />\r\n <img\r\n *ngIf=\"!isSearchInformationMaximized\"\r\n class=\"ViewResizeImage\"\r\n src=\"assets/images/section_expand.png\"\r\n (click)=\"isSearchInformationMaximized = true\"\r\n title=\"Expand\"\r\n />\r\n </div>\r\n <div class=\"callBody\" *ngIf=\"isSearchInformationMaximized\">\r\n <div *ngIf=\"this.searchRecordList.length > 1 && this.multiMatchData.length > 0\">\r\n <span class=\"overflowWrapper\">\r\n <img\r\n class=\"CRMResultImageMultiMatch\"\r\n src=\"{{ this.multiMatchData[selectedMultiMatchIndex]?.[0]?.[2] }}\"\r\n />\r\n <input\r\n id=\"{{ this.searchRecordList[selectedMultiMatchIndex].id }}\"\r\n name=\"{{ this.multiMatchData[selectedMultiMatchIndex]?.[0]?.[1] }}\"\r\n (click)=\"onAgentSelectedCallerInformation($event)\"\r\n readonly\r\n class=\"multiMatchLabel\"\r\n title=\"{{ this.multiMatchData[selectedMultiMatchIndex]?.[0]?.[1] }}\"\r\n type=\"text\"\r\n value=\"{{ this.multiMatchData[selectedMultiMatchIndex]?.[0]?.[1] }}\"\r\n />\r\n <span style=\"float: right; margin-right: 4%;\">\r\n <img\r\n *ngIf=\"!this.shouldShowAllMultiMatchOptions\"\r\n class=\"CRMExpandImage\"\r\n src=\"../../assets/images/down-arrow.png\"\r\n (click)=\"shouldShowAllMultiMatchOptions = true\"\r\n />\r\n <img\r\n *ngIf=\"this.shouldShowAllMultiMatchOptions\"\r\n class=\"CRMExpandImage\"\r\n src=\"../../assets/images/up-arrow.png\"\r\n (click)=\"shouldShowAllMultiMatchOptions = false\"\r\n />\r\n </span>\r\n </span>\r\n <div *ngIf=\"this.shouldShowAllMultiMatchOptions\">\r\n <div *ngFor=\"let i of this.multiMatchData; let index = index\">\r\n <span\r\n *ngIf=\"index !== selectedMultiMatchIndex && i?.[0]\"\r\n class=\"overflowWrapper\"\r\n >\r\n <img class=\"CRMResultImageMultiMatch\" src=\"{{ i[0][2] }}\" />\r\n <input\r\n id=\"{{ this.searchRecordList[index].id }}\"\r\n name=\"{{ i[0][1] }}\"\r\n readonly\r\n class=\"multiMatchLabel\"\r\n (click)=\"onAgentSelectedCallerInformation($event)\"\r\n title=\"{{ i[0][1] }}\"\r\n type=\"text\"\r\n value=\"{{ i[0][1] }}\"\r\n />\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Below is the HTML loaded on Single Match -->\r\n <div *ngIf=\"this.searchRecordList.length === 1\">\r\n <div\r\n class=\"editorFull displayDiv\"\r\n *ngFor=\"\r\n let i of this.singleMatchData | slice: 0:1;\r\n let index = index;\r\n let first = first\r\n \"\r\n >\r\n <span class=\"overflowWrapper\">\r\n <img\r\n id=\"EntityIcon\"\r\n src=\"{{ this.singleMatchIconSrc }}\"\r\n class=\"CRMResultImage\"\r\n />\r\n <input\r\n class=\"singleSearchResultSelect singleMatchFirstWrapper \"\r\n id=\"{{ this.searchRecordList[0].id }}\"\r\n [class.firstSingleMatchResult]=\"first\"\r\n value=\"{{ i[1] }}\"\r\n title=\"{{ i[1] }}\"\r\n (click)=\"onAgentSelectedCallerInformation($event)\"\r\n readonly\r\n />\r\n </span>\r\n </div>\r\n <div\r\n class=\"editorFull displayDiv\"\r\n *ngFor=\"\r\n let i of this.singleMatchData | slice: 1;\r\n let index = index;\r\n let first = first\r\n \"\r\n >\r\n <span class=\"overflowWrapper\">\r\n <label title=\"{{ i[0] }}\" class=\"displayLabelsTabbed\">{{\r\n i[0]\r\n }}</label>\r\n <input\r\n class=\"singleSearchResultSelect singleMatchTabbedItemsWrapper singleMatchLabel\"\r\n id=\"{{ this.searchRecordList[0].id }}\"\r\n value=\"{{ i[1] }}\"\r\n title=\"{{ i[1] }}\"\r\n readonly\r\n />\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".searchInfoHeader{background-color:#f4f5fb!important;width:100%!important;margin-top:0!important;border:1px solid #939598!important;display:flex;align-items:center}.displayDiv{width:100%;display:flex}.multiMatchBadge{font-size:.8em;font-weight:700;color:#000;background-color:transparent;border-radius:0;padding:0;margin-left:auto;white-space:nowrap;font-family:Arial,sans-serif}.editor{font-size:.9em;width:70%;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}.editorFull{font-size:.9em;width:100%;text-align:left;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}.CRMResultImage{width:18px;height:18px;margin-right:-5px;margin-top:-5px;margin-left:5px}.CRMResultImageMultiMatch{width:18px;height:18px;margin-right:2px;margin-left:5px;margin-top:-5px}.CRMExpandImage{width:6px;height:6px;cursor:pointer;margin-bottom:2px}.callBody{border:1px solid #939598;border-top-color:#939598;border-top-style:solid;border-top-width:1px;border-top:0;position:relative}.callDisplay{margin-bottom:8px;background-color:#fff;display:grid}.multipleSearchResultSelect{border:1px solid #939598!important;border-radius:3px!important;width:96%!important;height:20px!important;text-align:left!important;white-space:nowrap!important;text-overflow:ellipsis!important;margin:5px 0% 5px 6px;cursor:pointer}.overflowWrapper{width:100%;overflow-x:hidden;overflow-y:hidden}.singleSearchResultSelect{border:0px solid #939598!important;height:20px!important;text-align:left!important;white-space:nowrap!important;text-overflow:ellipsis!important;margin:0 0% 0 0;outline:none}.wrapper{width:79%!important}.singleMatchFirstWrapper{cursor:pointer;border:0px;outline:none;overflow:hidden;text-overflow:ellipsis;display:inline-block;width:calc(100% - 30px)}.singleMatchTabbedItemsWrapper{width:70%}.displayLabels{margin-left:5px;width:calc(20% + 5px);font-weight:400;margin-bottom:0;margin-top:0;outline:none;overflow:hidden;max-width:100px;vertical-align:middle}.displayLabelsMultiMatch{margin-left:5px;width:calc(20% + 5px);font-weight:400;margin-bottom:0;margin-top:0;outline:none}.displayLabelsTabbed{margin-left:5px;width:35%;font-weight:400;margin-bottom:0;margin-top:0;outline:none;overflow:hidden;text-overflow:ellipsis;vertical-align:middle}.matchedRecordsMargin{margin-top:1%}.ViewResizeImage{width:20px;height:20px;float:right;cursor:pointer}.headerLabel{margin-left:10px}.firstSingleMatchResult{font-weight:700;border:0px solid #939598!important;height:20px!important;text-align:left!important;white-space:nowrap!important;text-overflow:ellipsis!important;margin:0 0% 0 5px;outline:none}.multiMatchLabel{border:0px;cursor:pointer;outline:none;overflow:hidden;text-overflow:ellipsis;display:inline-block;width:calc(95% - 45px)}.singleMatchLabel{border:0px;outline:none;overflow:hidden;text-overflow:ellipsis;display:inline-block;width:calc(65% - 13px)}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.SlicePipe, name: "slice" }] });
147
158
  }
148
159
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SearchInformationComponent, decorators: [{
149
160
  type: Component,
150
- args: [{ selector: 'amc-search-information', template: "<div class=\"callDisplay\">\r\n <div class=\"editor callHeader\">\r\n <label class=\"headerLabel\">\r\n <b>Caller Information</b>\r\n </label>\r\n <img\r\n title=\"Multiple Matches Available\"\r\n *ngIf=\"this.searchRecordList.length > 1\"\r\n src=\"../../assets/images/MultiMatchAlert.png\"\r\n class=\"multiMatchImg\"\r\n />\r\n <img\r\n *ngIf=\"isSearchInformationMaximized\"\r\n class=\"ViewResizeImage\"\r\n src=\"assets/images/section_collapse.png\"\r\n (click)=\"isSearchInformationMaximized = false\"\r\n title=\"Collapse\"\r\n />\r\n <img\r\n *ngIf=\"!isSearchInformationMaximized\"\r\n class=\"ViewResizeImage\"\r\n src=\"assets/images/section_expand.png\"\r\n (click)=\"isSearchInformationMaximized = true\"\r\n title=\"Expand\"\r\n />\r\n </div>\r\n <div class=\"callBody\" *ngIf=\"isSearchInformationMaximized\">\r\n <div *ngIf=\"this.searchRecordList.length > 1\">\r\n <span class=\"overflowWrapper\">\r\n <img\r\n class=\"CRMResultImageMultiMatch\"\r\n src=\"{{ this.multiMatchData[0][0][2] }}\"\r\n />\r\n <input\r\n id=\"{{ this.searchRecordList[0].id }}\"\r\n name=\"{{ this.multiMatchData[0][0][1] }}\"\r\n (click)=\"onAgentSelectedCallerInformation($event)\"\r\n readonly\r\n class=\"multiMatchLabel\"\r\n title=\"{{ this.multiMatchData[0][0][1] }}\"\r\n type=\"text\"\r\n value=\"{{ this.multiMatchData[0][0][1] }}\"\r\n />\r\n <span style=\"float: right; margin-right: 4%;\">\r\n <img\r\n *ngIf=\"!this.shouldShowAllMultiMatchOptions\"\r\n class=\"CRMExpandImage\"\r\n src=\"../../assets/images/down-arrow.png\"\r\n (click)=\"shouldShowAllMultiMatchOptions = true\"\r\n />\r\n <img\r\n *ngIf=\"this.shouldShowAllMultiMatchOptions\"\r\n class=\"CRMExpandImage\"\r\n src=\"../../assets/images/up-arrow.png\"\r\n (click)=\"shouldShowAllMultiMatchOptions = false\"\r\n />\r\n </span>\r\n </span>\r\n <div *ngIf=\"this.shouldShowAllMultiMatchOptions\">\r\n <div *ngFor=\"let i of this.multiMatchData | slice: 1; let index = index\">\r\n <span\r\n class=\"overflowWrapper\"\r\n >\r\n <img class=\"CRMResultImageMultiMatch\" src=\"{{ i[0][2] }}\" />\r\n <input\r\n id=\"{{ this.searchRecordList[index + 1].id }}\"\r\n name=\"{{ i[0][1] }}\"\r\n readonly\r\n class=\"multiMatchLabel\"\r\n (click)=\"onAgentSelectedCallerInformation($event)\"\r\n title=\"{{ i[0][1] }}\"\r\n type=\"text\"\r\n value=\"{{ i[0][1] }}\"\r\n />\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Below is the HTML loaded on Single Match -->\r\n <div *ngIf=\"this.searchRecordList.length === 1\">\r\n <div\r\n class=\"editorFull displayDiv\"\r\n *ngFor=\"\r\n let i of this.singleMatchData | slice: 0:1;\r\n let index = index;\r\n let first = first\r\n \"\r\n >\r\n <span class=\"overflowWrapper\">\r\n <img\r\n id=\"EntityIcon\"\r\n src=\"{{ this.singleMatchIconSrc }}\"\r\n class=\"CRMResultImage\"\r\n />\r\n <input\r\n class=\"singleSearchResultSelect singleMatchFirstWrapper \"\r\n id=\"{{ this.searchRecordList[0].id }}\"\r\n [class.firstSingleMatchResult]=\"first\"\r\n value=\"{{ i[1] }}\"\r\n title=\"{{ i[1] }}\"\r\n (click)=\"onAgentSelectedCallerInformation($event)\"\r\n readonly\r\n />\r\n </span>\r\n </div>\r\n <div\r\n class=\"editorFull displayDiv\"\r\n *ngFor=\"\r\n let i of this.singleMatchData | slice: 1;\r\n let index = index;\r\n let first = first\r\n \"\r\n >\r\n <span class=\"overflowWrapper\">\r\n <label title=\"{{ i[0] }}\" class=\"displayLabelsTabbed\">{{\r\n i[0]\r\n }}</label>\r\n <input\r\n class=\"singleSearchResultSelect singleMatchTabbedItemsWrapper singleMatchLabel\"\r\n id=\"{{ this.searchRecordList[0].id }}\"\r\n value=\"{{ i[1] }}\"\r\n title=\"{{ i[1] }}\"\r\n readonly\r\n />\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".callHeader{background-color:#f4f5fb!important;width:100%!important;margin-top:0!important;border:1px solid #939598!important}.displayDiv{width:100%;display:flex}.multiMatchImg{height:18px;margin-left:5px}.editor{font-size:.9em;width:70%;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}.editorFull{font-size:.9em;width:100%;text-align:left;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}.CRMResultImage{width:18px;height:18px;margin-right:-5px;margin-top:-5px;margin-left:5px}.CRMResultImageMultiMatch{width:18px;height:18px;margin-right:2px;margin-left:5px;margin-top:-5px}.CRMExpandImage{width:6px;height:6px;cursor:pointer;margin-bottom:2px}.callBody{border:1px solid #939598;border-top-color:#939598;border-top-style:solid;border-top-width:1px;border-top:0;position:relative}.callDisplay{margin-bottom:8px;background-color:#fff;display:grid}.multipleSearchResultSelect{border:1px solid #939598!important;border-radius:3px!important;width:96%!important;height:20px!important;text-align:left!important;white-space:nowrap!important;text-overflow:ellipsis!important;margin:5px 0% 5px 6px;cursor:pointer}.overflowWrapper{width:100%;overflow-x:hidden;overflow-y:hidden}.singleSearchResultSelect{border:0px solid #939598!important;height:20px!important;text-align:left!important;white-space:nowrap!important;text-overflow:ellipsis!important;margin:0 0% 0 0;outline:none}.wrapper{width:79%!important}.singleMatchFirstWrapper{cursor:pointer;border:0px;outline:none;overflow:hidden;text-overflow:ellipsis;display:inline-block;width:calc(100% - 30px)}.singleMatchTabbedItemsWrapper{width:70%}.displayLabels{margin-left:5px;width:calc(20% + 5px);font-weight:400;margin-bottom:0;margin-top:0;outline:none;overflow:hidden;max-width:100px;vertical-align:middle}.displayLabelsMultiMatch{margin-left:5px;width:calc(20% + 5px);font-weight:400;margin-bottom:0;margin-top:0;outline:none}.displayLabelsTabbed{margin-left:5px;width:35%;font-weight:400;margin-bottom:0;margin-top:0;outline:none;overflow:hidden;text-overflow:ellipsis;vertical-align:middle}.matchedRecordsMargin{margin-top:1%}.ViewResizeImage{width:20px;height:20px;float:right;cursor:pointer}.headerLabel{margin-left:10px}.firstSingleMatchResult{font-weight:700;border:0px solid #939598!important;height:20px!important;text-align:left!important;white-space:nowrap!important;text-overflow:ellipsis!important;margin:0 0% 0 5px;outline:none}.multiMatchLabel{border:0px;cursor:pointer;outline:none;overflow:hidden;text-overflow:ellipsis;display:inline-block;width:calc(95% - 45px)}.singleMatchLabel{border:0px;outline:none;overflow:hidden;text-overflow:ellipsis;display:inline-block;width:calc(65% - 13px)}\n"] }]
161
+ args: [{ selector: 'amc-search-information', template: "<div class=\"callDisplay\">\r\n <div class=\"editor searchInfoHeader\">\r\n <label class=\"headerLabel\">\r\n <b>Caller Information</b>\r\n </label>\r\n <span\r\n *ngIf=\"this.searchRecordList.length > 1\"\r\n class=\"multiMatchBadge\"\r\n >{{ this.searchRecordList.length }} matches</span>\r\n <img\r\n *ngIf=\"isSearchInformationMaximized\"\r\n class=\"ViewResizeImage\"\r\n src=\"assets/images/section_collapse.png\"\r\n (click)=\"isSearchInformationMaximized = false\"\r\n title=\"Collapse\"\r\n />\r\n <img\r\n *ngIf=\"!isSearchInformationMaximized\"\r\n class=\"ViewResizeImage\"\r\n src=\"assets/images/section_expand.png\"\r\n (click)=\"isSearchInformationMaximized = true\"\r\n title=\"Expand\"\r\n />\r\n </div>\r\n <div class=\"callBody\" *ngIf=\"isSearchInformationMaximized\">\r\n <div *ngIf=\"this.searchRecordList.length > 1 && this.multiMatchData.length > 0\">\r\n <span class=\"overflowWrapper\">\r\n <img\r\n class=\"CRMResultImageMultiMatch\"\r\n src=\"{{ this.multiMatchData[selectedMultiMatchIndex]?.[0]?.[2] }}\"\r\n />\r\n <input\r\n id=\"{{ this.searchRecordList[selectedMultiMatchIndex].id }}\"\r\n name=\"{{ this.multiMatchData[selectedMultiMatchIndex]?.[0]?.[1] }}\"\r\n (click)=\"onAgentSelectedCallerInformation($event)\"\r\n readonly\r\n class=\"multiMatchLabel\"\r\n title=\"{{ this.multiMatchData[selectedMultiMatchIndex]?.[0]?.[1] }}\"\r\n type=\"text\"\r\n value=\"{{ this.multiMatchData[selectedMultiMatchIndex]?.[0]?.[1] }}\"\r\n />\r\n <span style=\"float: right; margin-right: 4%;\">\r\n <img\r\n *ngIf=\"!this.shouldShowAllMultiMatchOptions\"\r\n class=\"CRMExpandImage\"\r\n src=\"../../assets/images/down-arrow.png\"\r\n (click)=\"shouldShowAllMultiMatchOptions = true\"\r\n />\r\n <img\r\n *ngIf=\"this.shouldShowAllMultiMatchOptions\"\r\n class=\"CRMExpandImage\"\r\n src=\"../../assets/images/up-arrow.png\"\r\n (click)=\"shouldShowAllMultiMatchOptions = false\"\r\n />\r\n </span>\r\n </span>\r\n <div *ngIf=\"this.shouldShowAllMultiMatchOptions\">\r\n <div *ngFor=\"let i of this.multiMatchData; let index = index\">\r\n <span\r\n *ngIf=\"index !== selectedMultiMatchIndex && i?.[0]\"\r\n class=\"overflowWrapper\"\r\n >\r\n <img class=\"CRMResultImageMultiMatch\" src=\"{{ i[0][2] }}\" />\r\n <input\r\n id=\"{{ this.searchRecordList[index].id }}\"\r\n name=\"{{ i[0][1] }}\"\r\n readonly\r\n class=\"multiMatchLabel\"\r\n (click)=\"onAgentSelectedCallerInformation($event)\"\r\n title=\"{{ i[0][1] }}\"\r\n type=\"text\"\r\n value=\"{{ i[0][1] }}\"\r\n />\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Below is the HTML loaded on Single Match -->\r\n <div *ngIf=\"this.searchRecordList.length === 1\">\r\n <div\r\n class=\"editorFull displayDiv\"\r\n *ngFor=\"\r\n let i of this.singleMatchData | slice: 0:1;\r\n let index = index;\r\n let first = first\r\n \"\r\n >\r\n <span class=\"overflowWrapper\">\r\n <img\r\n id=\"EntityIcon\"\r\n src=\"{{ this.singleMatchIconSrc }}\"\r\n class=\"CRMResultImage\"\r\n />\r\n <input\r\n class=\"singleSearchResultSelect singleMatchFirstWrapper \"\r\n id=\"{{ this.searchRecordList[0].id }}\"\r\n [class.firstSingleMatchResult]=\"first\"\r\n value=\"{{ i[1] }}\"\r\n title=\"{{ i[1] }}\"\r\n (click)=\"onAgentSelectedCallerInformation($event)\"\r\n readonly\r\n />\r\n </span>\r\n </div>\r\n <div\r\n class=\"editorFull displayDiv\"\r\n *ngFor=\"\r\n let i of this.singleMatchData | slice: 1;\r\n let index = index;\r\n let first = first\r\n \"\r\n >\r\n <span class=\"overflowWrapper\">\r\n <label title=\"{{ i[0] }}\" class=\"displayLabelsTabbed\">{{\r\n i[0]\r\n }}</label>\r\n <input\r\n class=\"singleSearchResultSelect singleMatchTabbedItemsWrapper singleMatchLabel\"\r\n id=\"{{ this.searchRecordList[0].id }}\"\r\n value=\"{{ i[1] }}\"\r\n title=\"{{ i[1] }}\"\r\n readonly\r\n />\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".searchInfoHeader{background-color:#f4f5fb!important;width:100%!important;margin-top:0!important;border:1px solid #939598!important;display:flex;align-items:center}.displayDiv{width:100%;display:flex}.multiMatchBadge{font-size:.8em;font-weight:700;color:#000;background-color:transparent;border-radius:0;padding:0;margin-left:auto;white-space:nowrap;font-family:Arial,sans-serif}.editor{font-size:.9em;width:70%;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}.editorFull{font-size:.9em;width:100%;text-align:left;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}.CRMResultImage{width:18px;height:18px;margin-right:-5px;margin-top:-5px;margin-left:5px}.CRMResultImageMultiMatch{width:18px;height:18px;margin-right:2px;margin-left:5px;margin-top:-5px}.CRMExpandImage{width:6px;height:6px;cursor:pointer;margin-bottom:2px}.callBody{border:1px solid #939598;border-top-color:#939598;border-top-style:solid;border-top-width:1px;border-top:0;position:relative}.callDisplay{margin-bottom:8px;background-color:#fff;display:grid}.multipleSearchResultSelect{border:1px solid #939598!important;border-radius:3px!important;width:96%!important;height:20px!important;text-align:left!important;white-space:nowrap!important;text-overflow:ellipsis!important;margin:5px 0% 5px 6px;cursor:pointer}.overflowWrapper{width:100%;overflow-x:hidden;overflow-y:hidden}.singleSearchResultSelect{border:0px solid #939598!important;height:20px!important;text-align:left!important;white-space:nowrap!important;text-overflow:ellipsis!important;margin:0 0% 0 0;outline:none}.wrapper{width:79%!important}.singleMatchFirstWrapper{cursor:pointer;border:0px;outline:none;overflow:hidden;text-overflow:ellipsis;display:inline-block;width:calc(100% - 30px)}.singleMatchTabbedItemsWrapper{width:70%}.displayLabels{margin-left:5px;width:calc(20% + 5px);font-weight:400;margin-bottom:0;margin-top:0;outline:none;overflow:hidden;max-width:100px;vertical-align:middle}.displayLabelsMultiMatch{margin-left:5px;width:calc(20% + 5px);font-weight:400;margin-bottom:0;margin-top:0;outline:none}.displayLabelsTabbed{margin-left:5px;width:35%;font-weight:400;margin-bottom:0;margin-top:0;outline:none;overflow:hidden;text-overflow:ellipsis;vertical-align:middle}.matchedRecordsMargin{margin-top:1%}.ViewResizeImage{width:20px;height:20px;float:right;cursor:pointer}.headerLabel{margin-left:10px}.firstSingleMatchResult{font-weight:700;border:0px solid #939598!important;height:20px!important;text-align:left!important;white-space:nowrap!important;text-overflow:ellipsis!important;margin:0 0% 0 5px;outline:none}.multiMatchLabel{border:0px;cursor:pointer;outline:none;overflow:hidden;text-overflow:ellipsis;display:inline-block;width:calc(95% - 45px)}.singleMatchLabel{border:0px;outline:none;overflow:hidden;text-overflow:ellipsis;display:inline-block;width:calc(65% - 13px)}\n"] }]
151
162
  }], ctorParameters: function () { return []; }, propDecorators: { ActivityDetails: [{
152
163
  type: Input
153
164
  }], searchLayout: [{
@@ -157,4 +168,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
157
168
  }], agentSelectedCallerInformation: [{
158
169
  type: Output
159
170
  }] } });
160
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWluZm9ybWF0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL1VJTGlicmFyeS9zcmMvYXBwL2NvbXBvbmVudHMvc2VhcmNoLWluZm9ybWF0aW9uL3NlYXJjaC1pbmZvcm1hdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9VSUxpYnJhcnkvc3JjL2FwcC9jb21wb25lbnRzL3NlYXJjaC1pbmZvcm1hdGlvbi9zZWFyY2gtaW5mb3JtYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFFYixNQUFNLGVBQWUsQ0FBQzs7O0FBU3ZCLE1BQU0sT0FBTywwQkFBMEI7SUFDNUIsZUFBZSxDQUFZO0lBQzNCLFlBQVksQ0FBb0I7SUFDaEMsZ0JBQWdCLENBQXlCO0lBQ3hDLDhCQUE4QixDQUdyQztJQUVILDRCQUE0QixDQUFVO0lBQ3RDLGFBQWEsQ0FBUztJQUN0QixrQkFBa0IsQ0FBUztJQUMzQixlQUFlLENBQU07SUFDckIsY0FBYyxDQUFRO0lBQ3RCLDhCQUE4QixDQUFVO0lBRXhDO1FBQ0UsSUFBSSxDQUFDLDRCQUE0QixHQUFHLElBQUksQ0FBQztRQUN6QyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztRQUM1QixJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsOEJBQThCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUMzRCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQsZ0NBQWdDLENBQUMsS0FBVTtRQUN6QyxJQUFJO1lBQ0YsSUFBSSxDQUFDLDhCQUE4QixDQUFDLElBQUksQ0FBQztn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QUFTLEVBQUU7b0JBQ2pELEdBQUcsR0FBRyxzQ0FBc0MsQ0FBQztpQkFDOUM7cUJBQU0sSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLFNBQVMsRUFBRTtvQkFDeEQsR0FBRyxHQUFHLHNDQUFzQyxDQUFDO2lCQUM5QztxQkFBTSxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEtBQUssTUFBTSxFQUFFO29CQUNyRCxHQUFHLEdBQUcsbUNBQW1DLENBQUM7aUJBQzNDO3FCQUFNO29CQUNMLEdBQUcsR0FBRyw0Q0FBNEMsQ0FBQztpQkFDcEQ7YUFDRjtTQUNGO1FBQUMsT0FBTyxLQUFLLEVBQUUsR0FBRTtRQUNsQixPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFUyw2QkFBNkIsQ0FBQyxZQUE2QjtRQUNuRSxJQUFJLFVBQWUsQ0FBQztRQUNwQixJQUFJO1lBQ0YsVUFBVSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUN2QyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FDOUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLEtBQUssWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ2hEO1FBQUMsT0FBTyxLQUFLLEVBQUUsR0FBRTtRQUNsQixPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO3dHQXRKVSwwQkFBMEI7NEZBQTFCLDBCQUEwQixzUkNmdkMsaWtKQWlJQTs7NEZEbEhhLDBCQUEwQjtrQkFMdEMsU0FBUzsrQkFDRSx3QkFBd0I7MEVBS3pCLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0ksOEJBQThCO3NCQUF2QyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgSW5wdXQsXHJcbiAgT3V0cHV0LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBPbkNoYW5nZXNcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0ICogYXMgYXBpIGZyb20gJ0BhbWMtdGVjaG5vbG9neS9kYXZpbmNpLWFwaSc7XHJcbmltcG9ydCB7IElBY3Rpdml0eSB9IGZyb20gJy4uLy4uL21vZGVscy9JQWN0aXZpdHknO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhbWMtc2VhcmNoLWluZm9ybWF0aW9uJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vc2VhcmNoLWluZm9ybWF0aW9uLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9zZWFyY2gtaW5mb3JtYXRpb24uY29tcG9uZW50LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZWFyY2hJbmZvcm1hdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XHJcbiAgQElucHV0KCkgQWN0aXZpdHlEZXRhaWxzOiBJQWN0aXZpdHk7XHJcbiAgQElucHV0KCkgc2VhcmNoTGF5b3V0OiBhcGkuU2VhcmNoTGF5b3V0cztcclxuICBASW5wdXQoKSBzZWFyY2hSZWNvcmRMaXN0OiBBcnJheTxhcGkuSVJlY29yZEl0ZW0+O1xyXG4gIEBPdXRwdXQoKSBhZ2VudFNlbGVjdGVkQ2FsbGVySW5mb3JtYXRpb246IEV2ZW50RW1pdHRlcjx7XHJcbiAgICBpZDogc3RyaW5nO1xyXG4gICAgdmFsdWU6IHN0cmluZztcclxuICB9PjtcclxuXHJcbiAgaXNTZWFyY2hJbmZvcm1hdGlvbk1heGltaXplZDogYm9vbGVhbjtcclxuICBpbWFnZUxvY2F0aW9uOiBzdHJpbmc7XHJcbiAgc2luZ2xlTWF0Y2hJY29uU3JjOiBzdHJpbmc7XHJcbiAgc2luZ2xlTWF0Y2hEYXRhOiBhbnk7XHJcbiAgbXVsdGlNYXRjaERhdGE6IGFueVtdO1xyXG4gIHNob3VsZFNob3dBbGxNdWx0aU1hdGNoT3B0aW9uczogYm9vbGVhbjtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLmlzU2VhcmNoSW5mb3JtYXRpb25NYXhpbWl6ZWQgPSB0cnVlO1xyXG4gICAgdGhpcy5zaW5nbGVNYXRjaERhdGEgPSBudWxsO1xyXG4gICAgdGhpcy5tdWx0aU1hdGNoRGF0YSA9IFtdO1xyXG4gICAgdGhpcy5hZ2VudFNlbGVjdGVkQ2FsbGVySW5mb3JtYXRpb24gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcygpIHtcclxuICAgIHRoaXMucmVuZGVyRGF0YSgpO1xyXG4gIH1cclxuXHJcbiAgb25BZ2VudFNlbGVjdGVkQ2FsbGVySW5mb3JtYXRpb24oZXZlbnQ6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5hZ2VudFNlbGVjdGVkQ2FsbGVySW5mb3JtYXRpb24uZW1pdCh7XHJcbiAgICAgICAgaWQ6IGV2ZW50LnRhcmdldC5pZCxcclxuICAgICAgICB2YWx1ZTogZXZlbnQudGFyZ2V0LnZhbHVlXHJcbiAgICAgIH0pO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHt9XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgcmVuZGVyRGF0YSgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuc2luZ2xlTWF0Y2hEYXRhID0gbnVsbDtcclxuICAgICAgdGhpcy5tdWx0aU1hdGNoRGF0YSA9IFtdO1xyXG4gICAgICB0aGlzLnNob3VsZFNob3dBbGxNdWx0aU1hdGNoT3B0aW9ucyA9IGZhbHNlO1xyXG4gICAgICBpZiAodGhpcy5zZWFyY2hSZWNvcmRMaXN0Lmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICAgIHRoaXMuc2luZ2xlTWF0Y2hEYXRhID0gdGhpcy5wYXJzZVNlYXJjaFJlY29yZEZvck5hbWVTaW5nbGVNYXRjaChcclxuICAgICAgICAgIHRoaXMuc2VhcmNoUmVjb3JkTGlzdFswXVxyXG4gICAgICAgICk7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5zZWFyY2hSZWNvcmRMaXN0Lmxlbmd0aCA+IDEpIHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc2VhcmNoUmVjb3JkTGlzdC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgdGhpcy5tdWx0aU1hdGNoRGF0YS5wdXNoKFxyXG4gICAgICAgICAgICB0aGlzLnBhcnNlU2VhcmNoUmVjb3JkRm9yTmFtZU11bHRpTWF0Y2godGhpcy5zZWFyY2hSZWNvcmRMaXN0W2ldKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7fVxyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIHBhcnNlU2VhcmNoUmVjb3JkRm9yTmFtZVNpbmdsZU1hdGNoKHNlYXJjaFJlY29yZDogYXBpLklSZWNvcmRJdGVtKSB7XHJcbiAgICBjb25zdCByZXN1bHRzID0gW107XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBzcmMgPSB0aGlzLmdldEVudGl0eUltZ1RvRGlzcGxheShzZWFyY2hSZWNvcmQpO1xyXG4gICAgICB0aGlzLnNpbmdsZU1hdGNoSWNvblNyYyA9IHNyYztcclxuICAgICAgY29uc3Qgc0xheW91dEluZm8gPSB0aGlzLmdldFNlYXJjaExheW91dEluZm9Gb3JEaXNwbGF5KHNlYXJjaFJlY29yZCk7XHJcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgc0xheW91dEluZm8uRGlzcGxheUZpZWxkcy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgIGlmIChzTGF5b3V0SW5mby5EaXNwbGF5RmllbGRzICYmIHNMYXlvdXRJbmZvLkRpc3BsYXlGaWVsZHNbal0uRGV2TmFtZSkge1xyXG4gICAgICAgICAgY29uc3QgbmFtZUtleSA9IHNMYXlvdXRJbmZvLkRpc3BsYXlGaWVsZHNbal0uRGV2TmFtZTtcclxuICAgICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhzZWFyY2hSZWNvcmQuZmllbGRzKTtcclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgc2VhcmNoUmVjb3JkLmZpZWxkc1trZXlzW2ldXSAmJlxyXG4gICAgICAgICAgICAgIHNlYXJjaFJlY29yZC5maWVsZHNba2V5c1tpXV0uRGV2TmFtZSA9PT0gbmFtZUtleVxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICBsZXQgZGlzcGxheVJlY29yZCA9IHNlYXJjaFJlY29yZC5maWVsZHNba2V5c1tpXV0uVmFsdWU7XHJcbiAgICAgICAgICAgICAgaWYgKGogPT09IDApIHtcclxuICAgICAgICAgICAgICAgIGRpc3BsYXlSZWNvcmQgPSBzZWFyY2hSZWNvcmQuZGlzcGxheU5hbWVcclxuICAgICAgICAgICAgICAgICAgPyBbc2VhcmNoUmVjb3JkLmRpc3BsYXlOYW1lLCBkaXNwbGF5UmVjb3JkXVxyXG4gICAgICAgICAgICAgICAgICA6IFtzZWFyY2hSZWNvcmQudHlwZSwgZGlzcGxheVJlY29yZF07XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGRpc3BsYXlSZWNvcmQgPSBzTGF5b3V0SW5mby5EaXNwbGF5RmllbGRzW2pdLkRpc3BsYXlOYW1lXHJcbiAgICAgICAgICAgICAgICAgID8gW3NMYXlvdXRJbmZvLkRpc3BsYXlGaWVsZHNbal0uRGlzcGxheU5hbWUsIGRpc3BsYXlSZWNvcmRdXHJcbiAgICAgICAgICAgICAgICAgIDogW3NMYXlvdXRJbmZvLkRpc3BsYXlGaWVsZHNbal0uRGV2TmFtZSwgZGlzcGxheVJlY29yZF07XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHJlc3VsdHMucHVzaChkaXNwbGF5UmVjb3JkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHt9XHJcbiAgICByZXR1cm4gcmVzdWx0cztcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBwYXJzZVNlYXJjaFJlY29yZEZvck5hbWVNdWx0aU1hdGNoKHNlYXJjaFJlY29yZDogYXBpLklSZWNvcmRJdGVtKSB7XHJcbiAgICBjb25zdCByZXN1bHRzID0gW107XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBzcmMgPSB0aGlzLmdldEVudGl0eUltZ1RvRGlzcGxheShzZWFyY2hSZWNvcmQpO1xyXG4gICAgICBjb25zdCBzTGF5b3V0SW5mbyA9IHRoaXMuZ2V0U2VhcmNoTGF5b3V0SW5mb0ZvckRpc3BsYXkoc2VhcmNoUmVjb3JkKTtcclxuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBzTGF5b3V0SW5mby5EaXNwbGF5RmllbGRzLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgaWYgKHNMYXlvdXRJbmZvLkRpc3BsYXlGaWVsZHMgJiYgc0xheW91dEluZm8uRGlzcGxheUZpZWxkc1tqXS5EZXZOYW1lKSB7XHJcbiAgICAgICAgICBjb25zdCBuYW1lS2V5ID0gc0xheW91dEluZm8uRGlzcGxheUZpZWxkc1tqXS5EZXZOYW1lO1xyXG4gICAgICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHNlYXJjaFJlY29yZC5maWVsZHMpO1xyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICBzZWFyY2hSZWNvcmQuZmllbGRzW2tleXNbaV1dICYmXHJcbiAgICAgICAgICAgICAgc2VhcmNoUmVjb3JkLmZpZWxkc1trZXlzW2ldXS5EZXZOYW1lID09PSBuYW1lS2V5XHJcbiAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgIGxldCBkaXNwbGF5UmVjb3JkID0gc2VhcmNoUmVjb3JkLmZpZWxkc1trZXlzW2ldXS5WYWx1ZTtcclxuICAgICAgICAgICAgICBpZiAoaiA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgZGlzcGxheVJlY29yZCA9IHNlYXJjaFJlY29yZC5kaXNwbGF5TmFtZVxyXG4gICAgICAgICAgICAgICAgICA/IFtzZWFyY2hSZWNvcmQuZGlzcGxheU5hbWUsIGRpc3BsYXlSZWNvcmRdXHJcbiAgICAgICAgICAgICAgICAgIDogW3NlYXJjaFJlY29yZC50eXBlLCBkaXNwbGF5UmVjb3JkXTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZGlzcGxheVJlY29yZCA9IHNMYXlvdXRJbmZvLkRpc3BsYXlGaWVsZHNbal0uRGlzcGxheU5hbWVcclxuICAgICAgICAgICAgICAgICAgPyBbc0xheW91dEluZm8uRGlzcGxheUZpZWxkc1tqXS5EaXNwbGF5TmFtZSwgZGlzcGxheVJlY29yZF1cclxuICAgICAgICAgICAgICAgICAgOiBbc0xheW91dEluZm8uRGlzcGxheUZpZWxkc1tqXS5EZXZOYW1lLCBkaXNwbGF5UmVjb3JkXTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZGlzcGxheVJlY29yZC5wdXNoKHNyYyk7XHJcbiAgICAgICAgICAgICAgcmVzdWx0cy5wdXNoKGRpc3BsYXlSZWNvcmQpO1xyXG4gICAgICAgICAgICAgIHJldHVybiByZXN1bHRzO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIChlcnJvcikge31cclxuICAgIHJldHVybiByZXN1bHRzO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGdldEVudGl0eUltZ1RvRGlzcGxheShzZWFyY2hSZWNvcmQ6IGFwaS5JUmVjb3JkSXRlbSkge1xyXG4gICAgbGV0IHNyYyA9ICcnO1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKHNlYXJjaFJlY29yZC50eXBlKSB7XHJcbiAgICAgICAgaWYgKHNlYXJjaFJlY29yZC50eXBlLnRvVXBwZXJDYXNlKCkgPT09ICdDT05UQUNUJykge1xyXG4gICAgICAgICAgc3JjID0gJy4uLy4uL2Fzc2V0cy9pbWFnZXMvSWNvbl9Db250YWN0LnBuZyc7XHJcbiAgICAgICAgfSBlbHNlIGlmIChzZWFyY2hSZWNvcmQudHlwZS50b1VwcGVyQ2FzZSgpID09PSAnQUNDT1VOVCcpIHtcclxuICAgICAgICAgIHNyYyA9ICcuLi8uLi9hc3NldHMvaW1hZ2VzL0ljb25fQWNjb3VudC5wbmcnO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoc2VhcmNoUmVjb3JkLnR5cGUudG9VcHBlckNhc2UoKSA9PT0gJ0xFQUQnKSB7XHJcbiAgICAgICAgICBzcmMgPSAnLi4vLi4vYXNzZXRzL2ltYWdlcy9JY29uX0xlYWQucG5nJztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgc3JjID0gJy4uLy4uL2Fzc2V0cy9pbWFnZXMvTWlzY2VsbGFuZW91c19JY29uLnBuZyc7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIChlcnJvcikge31cclxuICAgIHJldHVybiBzcmM7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgZ2V0U2VhcmNoTGF5b3V0SW5mb0ZvckRpc3BsYXkoc2VhcmNoUmVjb3JkOiBhcGkuSVJlY29yZEl0ZW0pIHtcclxuICAgIGxldCBsYXlvdXRJbmZvOiBhbnk7XHJcbiAgICB0cnkge1xyXG4gICAgICBsYXlvdXRJbmZvID0gdGhpcy5zZWFyY2hMYXlvdXQubGF5b3V0c1swXVtcclxuICAgICAgICB0aGlzLkFjdGl2aXR5RGV0YWlscy5DYWxsVHlwZVxyXG4gICAgICBdLmZpbmQoKGkpID0+IGkuRGV2TmFtZSA9PT0gc2VhcmNoUmVjb3JkLnR5cGUpO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHt9XHJcbiAgICByZXR1cm4gbGF5b3V0SW5mbztcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNhbGxEaXNwbGF5XCI+XHJcbiAgPGRpdiBjbGFzcz1cImVkaXRvciBjYWxsSGVhZGVyXCI+XHJcbiAgICA8bGFiZWwgY2xhc3M9XCJoZWFkZXJMYWJlbFwiPlxyXG4gICAgICA8Yj5DYWxsZXIgSW5mb3JtYXRpb248L2I+XHJcbiAgICA8L2xhYmVsPlxyXG4gICAgPGltZ1xyXG4gICAgICB0aXRsZT1cIk11bHRpcGxlIE1hdGNoZXMgQXZhaWxhYmxlXCJcclxuICAgICAgKm5nSWY9XCJ0aGlzLnNlYXJjaFJlY29yZExpc3QubGVuZ3RoID4gMVwiXHJcbiAgICAgIHNyYz1cIi4uLy4uL2Fzc2V0cy9pbWFnZXMvTXVsdGlNYXRjaEFsZXJ0LnBuZ1wiXHJcbiAgICAgIGNsYXNzPVwibXVsdGlNYXRjaEltZ1wiXHJcbiAgICAvPlxyXG4gICAgPGltZ1xyXG4gICAgICAqbmdJZj1cImlzU2VhcmNoSW5mb3JtYXRpb25NYXhpbWl6ZWRcIlxyXG4gICAgICBjbGFzcz1cIlZpZXdSZXNpemVJbWFnZVwiXHJcbiAgICAgIHNyYz1cImFzc2V0cy9pbWFnZXMvc2VjdGlvbl9jb2xsYXBzZS5wbmdcIlxyXG4gICAgICAoY2xpY2spPVwiaXNTZWFyY2hJbmZvcm1hdGlvbk1heGltaXplZCA9IGZhbHNlXCJcclxuICAgICAgdGl0bGU9XCJDb2xsYXBzZVwiXHJcbiAgICAvPlxyXG4gICAgPGltZ1xyXG4gICAgICAqbmdJZj1cIiFpc1NlYXJjaEluZm9ybWF0aW9uTWF4aW1pemVkXCJcclxuICAgICAgY2xhc3M9XCJWaWV3UmVzaXplSW1hZ2VcIlxyXG4gICAgICBzcmM9XCJhc3NldHMvaW1hZ2VzL3NlY3Rpb25fZXhwYW5kLnBuZ1wiXHJcbiAgICAgIChjbGljayk9XCJpc1NlYXJjaEluZm9ybWF0aW9uTWF4aW1pemVkID0gdHJ1ZVwiXHJcbiAgICAgIHRpdGxlPVwiRXhwYW5kXCJcclxuICAgIC8+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cImNhbGxCb2R5XCIgKm5nSWY9XCJpc1NlYXJjaEluZm9ybWF0aW9uTWF4aW1pemVkXCI+XHJcbiAgICA8ZGl2ICpuZ0lmPVwidGhpcy5zZWFyY2hSZWNvcmRMaXN0Lmxlbmd0aCA+IDFcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJvdmVyZmxvd1dyYXBwZXJcIj5cclxuICAgICAgICA8aW1nXHJcbiAgICAgICAgICBjbGFzcz1cIkNSTVJlc3VsdEltYWdlTXVsdGlNYXRjaFwiXHJcbiAgICAgICAgICBzcmM9XCJ7eyB0aGlzLm11bHRpTWF0Y2hEYXRhWzBdWzBdWzJdIH19XCJcclxuICAgICAgICAvPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgaWQ9XCJ7eyB0aGlzLnNlYXJjaFJlY29yZExpc3RbMF0uaWQgfX1cIlxyXG4gICAgICAgICAgbmFtZT1cInt7IHRoaXMubXVsdGlNYXRjaERhdGFbMF1bMF1bMV0gfX1cIlxyXG4gICAgICAgICAgKGNsaWNrKT1cIm9uQWdlbnRTZWxlY3RlZENhbGxlckluZm9ybWF0aW9uKCRldmVudClcIlxyXG4gICAgICAgICAgcmVhZG9ubHlcclxuICAgICAgICAgIGNsYXNzPVwibXVsdGlNYXRjaExhYmVsXCJcclxuICAgICAgICAgIHRpdGxlPVwie3sgdGhpcy5tdWx0aU1hdGNoRGF0YVswXVswXVsxXSB9fVwiXHJcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICB2YWx1ZT1cInt7IHRoaXMubXVsdGlNYXRjaERhdGFbMF1bMF1bMV0gfX1cIlxyXG4gICAgICAgIC8+XHJcbiAgICAgICAgPHNwYW4gc3R5bGU9XCJmbG9hdDogcmlnaHQ7IG1hcmdpbi1yaWdodDogNCU7XCI+XHJcbiAgICAgICAgICA8aW1nXHJcbiAgICAgICAgICAgICpuZ0lmPVwiIXRoaXMuc2hvdWxkU2hvd0FsbE11bHRpTWF0Y2hPcHRpb25zXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJDUk1FeHBhbmRJbWFnZVwiXHJcbiAgICAgICAgICAgIHNyYz1cIi4uLy4uL2Fzc2V0cy9pbWFnZXMvZG93bi1hcnJvdy5wbmdcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwic2hvdWxkU2hvd0FsbE11bHRpTWF0Y2hPcHRpb25zID0gdHJ1ZVwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgICAgPGltZ1xyXG4gICAgICAgICAgICAqbmdJZj1cInRoaXMuc2hvdWxkU2hvd0FsbE11bHRpTWF0Y2hPcHRpb25zXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJDUk1FeHBhbmRJbWFnZVwiXHJcbiAgICAgICAgICAgIHNyYz1cIi4uLy4uL2Fzc2V0cy9pbWFnZXMvdXAtYXJyb3cucG5nXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cInNob3VsZFNob3dBbGxNdWx0aU1hdGNoT3B0aW9ucyA9IGZhbHNlXCJcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJ0aGlzLnNob3VsZFNob3dBbGxNdWx0aU1hdGNoT3B0aW9uc1wiPlxyXG4gICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBpIG9mIHRoaXMubXVsdGlNYXRjaERhdGEgfCBzbGljZTogMTsgbGV0IGluZGV4ID0gaW5kZXhcIj5cclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgY2xhc3M9XCJvdmVyZmxvd1dyYXBwZXJcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxpbWcgY2xhc3M9XCJDUk1SZXN1bHRJbWFnZU11bHRpTWF0Y2hcIiBzcmM9XCJ7eyBpWzBdWzJdIH19XCIgLz5cclxuICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICBpZD1cInt7IHRoaXMuc2VhcmNoUmVjb3JkTGlzdFtpbmRleCArIDFdLmlkIH19XCJcclxuICAgICAgICAgICAgbmFtZT1cInt7IGlbMF1bMV0gfX1cIlxyXG4gICAgICAgICAgICByZWFkb25seVxyXG4gICAgICAgICAgICBjbGFzcz1cIm11bHRpTWF0Y2hMYWJlbFwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkFnZW50U2VsZWN0ZWRDYWxsZXJJbmZvcm1hdGlvbigkZXZlbnQpXCJcclxuICAgICAgICAgICAgdGl0bGU9XCJ7eyBpWzBdWzFdIH19XCJcclxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICB2YWx1ZT1cInt7IGlbMF1bMV0gfX1cIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLSBCZWxvdyBpcyB0aGUgSFRNTCBsb2FkZWQgb24gU2luZ2xlIE1hdGNoIC0tPlxyXG4gICAgPGRpdiAqbmdJZj1cInRoaXMuc2VhcmNoUmVjb3JkTGlzdC5sZW5ndGggPT09IDFcIj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwiZWRpdG9yRnVsbCBkaXNwbGF5RGl2XCJcclxuICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgIGxldCBpIG9mIHRoaXMuc2luZ2xlTWF0Y2hEYXRhIHwgc2xpY2U6IDA6MTtcclxuICAgICAgICAgIGxldCBpbmRleCA9IGluZGV4O1xyXG4gICAgICAgICAgbGV0IGZpcnN0ID0gZmlyc3RcclxuICAgICAgICBcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJvdmVyZmxvd1dyYXBwZXJcIj5cclxuICAgICAgICAgICAgPGltZ1xyXG4gICAgICAgICAgICAgIGlkPVwiRW50aXR5SWNvblwiXHJcbiAgICAgICAgICAgICAgc3JjPVwie3sgdGhpcy5zaW5nbGVNYXRjaEljb25TcmMgfX1cIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiQ1JNUmVzdWx0SW1hZ2VcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBjbGFzcz1cInNpbmdsZVNlYXJjaFJlc3VsdFNlbGVjdCBzaW5nbGVNYXRjaEZpcnN0V3JhcHBlciBcIlxyXG4gICAgICAgICAgICAgIGlkPVwie3sgdGhpcy5zZWFyY2hSZWNvcmRMaXN0WzBdLmlkIH19XCJcclxuICAgICAgICAgICAgICBbY2xhc3MuZmlyc3RTaW5nbGVNYXRjaFJlc3VsdF09XCJmaXJzdFwiXHJcbiAgICAgICAgICAgICAgdmFsdWU9XCJ7eyBpWzFdIH19XCJcclxuICAgICAgICAgICAgICB0aXRsZT1cInt7IGlbMV0gfX1cIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJvbkFnZW50U2VsZWN0ZWRDYWxsZXJJbmZvcm1hdGlvbigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICByZWFkb25seVxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cImVkaXRvckZ1bGwgZGlzcGxheURpdlwiXHJcbiAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICBsZXQgaSBvZiB0aGlzLnNpbmdsZU1hdGNoRGF0YSB8IHNsaWNlOiAxO1xyXG4gICAgICAgICAgbGV0IGluZGV4ID0gaW5kZXg7XHJcbiAgICAgICAgICBsZXQgZmlyc3QgPSBmaXJzdFxyXG4gICAgICAgIFwiXHJcbiAgICAgID5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cIm92ZXJmbG93V3JhcHBlclwiPlxyXG4gICAgICAgICAgPGxhYmVsIHRpdGxlPVwie3sgaVswXSB9fVwiIGNsYXNzPVwiZGlzcGxheUxhYmVsc1RhYmJlZFwiPnt7XHJcbiAgICAgICAgICAgIGlbMF1cclxuICAgICAgICAgIH19PC9sYWJlbD5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJzaW5nbGVTZWFyY2hSZXN1bHRTZWxlY3Qgc2luZ2xlTWF0Y2hUYWJiZWRJdGVtc1dyYXBwZXIgc2luZ2xlTWF0Y2hMYWJlbFwiXHJcbiAgICAgICAgICAgICAgaWQ9XCJ7eyB0aGlzLnNlYXJjaFJlY29yZExpc3RbMF0uaWQgfX1cIlxyXG4gICAgICAgICAgICAgIHZhbHVlPVwie3sgaVsxXSB9fVwiXHJcbiAgICAgICAgICAgICAgdGl0bGU9XCJ7eyBpWzFdIH19XCJcclxuICAgICAgICAgICAgICByZWFkb25seVxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
171
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWluZm9ybWF0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL1VJTGlicmFyeS9zcmMvYXBwL2NvbXBvbmVudHMvc2VhcmNoLWluZm9ybWF0aW9uL3NlYXJjaC1pbmZvcm1hdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9VSUxpYnJhcnkvc3JjL2FwcC9jb21wb25lbnRzL3NlYXJjaC1pbmZvcm1hdGlvbi9zZWFyY2gtaW5mb3JtYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFHYixNQUFNLGVBQWUsQ0FBQzs7O0FBU3ZCLE1BQU0sT0FBTywwQkFBMEI7SUFDNUIsZUFBZSxDQUFZO0lBQzNCLFlBQVksQ0FBb0I7SUFDaEMsZ0JBQWdCLENBQXlCO0lBQ3hDLDhCQUE4QixDQUdyQztJQUVILDRCQUE0QixDQUFVO0lBQ3RDLGFBQWEsQ0FBUztJQUN0QixrQkFBa0IsQ0FBUztJQUMzQixlQUFlLENBQU07SUFDckIsY0FBYyxDQUFRO0lBQ3RCLDhCQUE4QixDQUFVO0lBQ3hDLHVCQUF1QixDQUFTO0lBRWhDO1FBQ0UsSUFBSSxDQUFDLDRCQUE0QixHQUFHLElBQUksQ0FBQztRQUN6QyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztRQUM1QixJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsOEJBQThCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN6RCxJQUFJLENBQUMsdUJBQXVCLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsa0JBQWtCLENBQUMsRUFBRTtZQUMvQixJ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QzlCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxLQUFLLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNoRDtRQUFDLE9BQU8sS0FBSyxFQUFFLEdBQUU7UUFDbEIsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQzt3R0FqS1UsMEJBQTBCOzRGQUExQiwwQkFBMEIsc1JDaEJ2Qyx1dUpBZ0lBOzs0RkRoSGEsMEJBQTBCO2tCQUx0QyxTQUFTOytCQUNFLHdCQUF3QjswRUFLekIsZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDSSw4QkFBOEI7c0JBQXZDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBJbnB1dCxcclxuICBPdXRwdXQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIE9uQ2hhbmdlcyxcclxuICBTaW1wbGVDaGFuZ2VzXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCAqIGFzIGFwaSBmcm9tICdAYW1jLXRlY2hub2xvZ3kvZGF2aW5jaS1hcGknO1xyXG5pbXBvcnQgeyBJQWN0aXZpdHkgfSBmcm9tICcuLi8uLi9tb2RlbHMvSUFjdGl2aXR5JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYW1jLXNlYXJjaC1pbmZvcm1hdGlvbicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NlYXJjaC1pbmZvcm1hdGlvbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vc2VhcmNoLWluZm9ybWF0aW9uLmNvbXBvbmVudC5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2VhcmNoSW5mb3JtYXRpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xyXG4gIEBJbnB1dCgpIEFjdGl2aXR5RGV0YWlsczogSUFjdGl2aXR5O1xyXG4gIEBJbnB1dCgpIHNlYXJjaExheW91dDogYXBpLlNlYXJjaExheW91dHM7XHJcbiAgQElucHV0KCkgc2VhcmNoUmVjb3JkTGlzdDogQXJyYXk8YXBpLklSZWNvcmRJdGVtPjtcclxuICBAT3V0cHV0KCkgYWdlbnRTZWxlY3RlZENhbGxlckluZm9ybWF0aW9uOiBFdmVudEVtaXR0ZXI8e1xyXG4gICAgaWQ6IHN0cmluZztcclxuICAgIHZhbHVlOiBzdHJpbmc7XHJcbiAgfT47XHJcblxyXG4gIGlzU2VhcmNoSW5mb3JtYXRpb25NYXhpbWl6ZWQ6IGJvb2xlYW47XHJcbiAgaW1hZ2VMb2NhdGlvbjogc3RyaW5nO1xyXG4gIHNpbmdsZU1hdGNoSWNvblNyYzogc3RyaW5nO1xyXG4gIHNpbmdsZU1hdGNoRGF0YTogYW55O1xyXG4gIG11bHRpTWF0Y2hEYXRhOiBhbnlbXTtcclxuICBzaG91bGRTaG93QWxsTXVsdGlNYXRjaE9wdGlvbnM6IGJvb2xlYW47XHJcbiAgc2VsZWN0ZWRNdWx0aU1hdGNoSW5kZXg6IG51bWJlcjtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLmlzU2VhcmNoSW5mb3JtYXRpb25NYXhpbWl6ZWQgPSB0cnVlO1xyXG4gICAgdGhpcy5zaW5nbGVNYXRjaERhdGEgPSBudWxsO1xyXG4gICAgdGhpcy5tdWx0aU1hdGNoRGF0YSA9IFtdO1xyXG4gICAgdGhpcy5hZ2VudFNlbGVjdGVkQ2FsbGVySW5mb3JtYXRpb24gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgICB0aGlzLnNlbGVjdGVkTXVsdGlNYXRjaEluZGV4ID0gMDtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIGlmIChjaGFuZ2VzWydzZWFyY2hSZWNvcmRMaXN0J10pIHtcclxuICAgICAgdGhpcy5yZW5kZXJEYXRhKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkFnZW50U2VsZWN0ZWRDYWxsZXJJbmZvcm1hdGlvbihldmVudDogYW55KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBzZWxlY3RlZElkID0gZXZlbnQudGFyZ2V0LmlkO1xyXG4gICAgICBjb25zdCBzZWxlY3RlZEluZGV4ID0gdGhpcy5zZWFyY2hSZWNvcmRMaXN0LmZpbmRJbmRleChyID0+IHIuaWQgPT09IHNlbGVjdGVkSWQpO1xyXG4gICAgICBpZiAoc2VsZWN0ZWRJbmRleCA+PSAwKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZE11bHRpTWF0Y2hJbmRleCA9IHNlbGVjdGVkSW5kZXg7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zaG91bGRTaG93QWxsTXVsdGlNYXRjaE9wdGlvbnMgPSBmYWxzZTtcclxuICAgICAgdGhpcy5hZ2VudFNlbGVjdGVkQ2FsbGVySW5mb3JtYXRpb24uZW1pdCh7XHJcbiAgICAgICAgaWQ6IGV2ZW50LnRhcmdldC5pZCxcclxuICAgICAgICB2YWx1ZTogZXZlbnQudGFyZ2V0LnZhbHVlXHJcbiAgICAgIH0pO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHt9XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgcmVuZGVyRGF0YSgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuc2luZ2xlTWF0Y2hEYXRhID0gbnVsbDtcclxuICAgICAgdGhpcy5tdWx0aU1hdGNoRGF0YSA9IFtdO1xyXG4gICAgICB0aGlzLnNob3VsZFNob3dBbGxNdWx0aU1hdGNoT3B0aW9ucyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkTXVsdGlNYXRjaEluZGV4ID0gMDtcclxuICAgICAgaWYgKHRoaXMuc2VhcmNoUmVjb3JkTGlzdC5sZW5ndGggPT09IDEpIHtcclxuICAgICAgICB0aGlzLnNpbmdsZU1hdGNoRGF0YSA9IHRoaXMucGFyc2VTZWFyY2hSZWNvcmRGb3JOYW1lU2luZ2xlTWF0Y2goXHJcbiAgICAgICAgICB0aGlzLnNlYXJjaFJlY29yZExpc3RbMF1cclxuICAgICAgICApO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuc2VhcmNoUmVjb3JkTGlzdC5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnNlYXJjaFJlY29yZExpc3QubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIHRoaXMubXVsdGlNYXRjaERhdGEucHVzaChcclxuICAgICAgICAgICAgdGhpcy5wYXJzZVNlYXJjaFJlY29yZEZvck5hbWVNdWx0aU1hdGNoKHRoaXMuc2VhcmNoUmVjb3JkTGlzdFtpXSlcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIChlcnJvcikge31cclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBwYXJzZVNlYXJjaFJlY29yZEZvck5hbWVTaW5nbGVNYXRjaChzZWFyY2hSZWNvcmQ6IGFwaS5JUmVjb3JkSXRlbSkge1xyXG4gICAgY29uc3QgcmVzdWx0cyA9IFtdO1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3Qgc3JjID0gdGhpcy5nZXRFbnRpdHlJbWdUb0Rpc3BsYXkoc2VhcmNoUmVjb3JkKTtcclxuICAgICAgdGhpcy5zaW5nbGVNYXRjaEljb25TcmMgPSBzcmM7XHJcbiAgICAgIGNvbnN0IHNMYXlvdXRJbmZvID0gdGhpcy5nZXRTZWFyY2hMYXlvdXRJbmZvRm9yRGlzcGxheShzZWFyY2hSZWNvcmQpO1xyXG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHNMYXlvdXRJbmZvLkRpc3BsYXlGaWVsZHMubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICBpZiAoc0xheW91dEluZm8uRGlzcGxheUZpZWxkcyAmJiBzTGF5b3V0SW5mby5EaXNwbGF5RmllbGRzW2pdLkRldk5hbWUpIHtcclxuICAgICAgICAgIGNvbnN0IG5hbWVLZXkgPSBzTGF5b3V0SW5mby5EaXNwbGF5RmllbGRzW2pdLkRldk5hbWU7XHJcbiAgICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoc2VhcmNoUmVjb3JkLmZpZWxkcyk7XHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgIHNlYXJjaFJlY29yZC5maWVsZHNba2V5c1tpXV0gJiZcclxuICAgICAgICAgICAgICBzZWFyY2hSZWNvcmQuZmllbGRzW2tleXNbaV1dLkRldk5hbWUgPT09IG5hbWVLZXlcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgbGV0IGRpc3BsYXlSZWNvcmQgPSBzZWFyY2hSZWNvcmQuZmllbGRzW2tleXNbaV1dLlZhbHVlO1xyXG4gICAgICAgICAgICAgIGlmIChqID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICBkaXNwbGF5UmVjb3JkID0gc2VhcmNoUmVjb3JkLmRpc3BsYXlOYW1lXHJcbiAgICAgICAgICAgICAgICAgID8gW3NlYXJjaFJlY29yZC5kaXNwbGF5TmFtZSwgZGlzcGxheVJlY29yZF1cclxuICAgICAgICAgICAgICAgICAgOiBbc2VhcmNoUmVjb3JkLnR5cGUsIGRpc3BsYXlSZWNvcmRdO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBkaXNwbGF5UmVjb3JkID0gc0xheW91dEluZm8uRGlzcGxheUZpZWxkc1tqXS5EaXNwbGF5TmFtZVxyXG4gICAgICAgICAgICAgICAgICA/IFtzTGF5b3V0SW5mby5EaXNwbGF5RmllbGRzW2pdLkRpc3BsYXlOYW1lLCBkaXNwbGF5UmVjb3JkXVxyXG4gICAgICAgICAgICAgICAgICA6IFtzTGF5b3V0SW5mby5EaXNwbGF5RmllbGRzW2pdLkRldk5hbWUsIGRpc3BsYXlSZWNvcmRdO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICByZXN1bHRzLnB1c2goZGlzcGxheVJlY29yZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7fVxyXG4gICAgcmV0dXJuIHJlc3VsdHM7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgcGFyc2VTZWFyY2hSZWNvcmRGb3JOYW1lTXVsdGlNYXRjaChzZWFyY2hSZWNvcmQ6IGFwaS5JUmVjb3JkSXRlbSkge1xyXG4gICAgY29uc3QgcmVzdWx0cyA9IFtdO1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3Qgc3JjID0gdGhpcy5nZXRFbnRpdHlJbWdUb0Rpc3BsYXkoc2VhcmNoUmVjb3JkKTtcclxuICAgICAgY29uc3Qgc0xheW91dEluZm8gPSB0aGlzLmdldFNlYXJjaExheW91dEluZm9Gb3JEaXNwbGF5KHNlYXJjaFJlY29yZCk7XHJcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgc0xheW91dEluZm8uRGlzcGxheUZpZWxkcy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgIGlmIChzTGF5b3V0SW5mby5EaXNwbGF5RmllbGRzICYmIHNMYXlvdXRJbmZvLkRpc3BsYXlGaWVsZHNbal0uRGV2TmFtZSkge1xyXG4gICAgICAgICAgY29uc3QgbmFtZUtleSA9IHNMYXlvdXRJbmZvLkRpc3BsYXlGaWVsZHNbal0uRGV2TmFtZTtcclxuICAgICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhzZWFyY2hSZWNvcmQuZmllbGRzKTtcclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgc2VhcmNoUmVjb3JkLmZpZWxkc1trZXlzW2ldXSAmJlxyXG4gICAgICAgICAgICAgIHNlYXJjaFJlY29yZC5maWVsZHNba2V5c1tpXV0uRGV2TmFtZSA9PT0gbmFtZUtleVxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICBsZXQgZGlzcGxheVJlY29yZCA9IHNlYXJjaFJlY29yZC5maWVsZHNba2V5c1tpXV0uVmFsdWU7XHJcbiAgICAgICAgICAgICAgaWYgKGogPT09IDApIHtcclxuICAgICAgICAgICAgICAgIGRpc3BsYXlSZWNvcmQgPSBzZWFyY2hSZWNvcmQuZGlzcGxheU5hbWVcclxuICAgICAgICAgICAgICAgICAgPyBbc2VhcmNoUmVjb3JkLmRpc3BsYXlOYW1lLCBkaXNwbGF5UmVjb3JkXVxyXG4gICAgICAgICAgICAgICAgICA6IFtzZWFyY2hSZWNvcmQudHlwZSwgZGlzcGxheVJlY29yZF07XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGRpc3BsYXlSZWNvcmQgPSBzTGF5b3V0SW5mby5EaXNwbGF5RmllbGRzW2pdLkRpc3BsYXlOYW1lXHJcbiAgICAgICAgICAgICAgICAgID8gW3NMYXlvdXRJbmZvLkRpc3BsYXlGaWVsZHNbal0uRGlzcGxheU5hbWUsIGRpc3BsYXlSZWNvcmRdXHJcbiAgICAgICAgICAgICAgICAgIDogW3NMYXlvdXRJbmZvLkRpc3BsYXlGaWVsZHNbal0uRGV2TmFtZSwgZGlzcGxheVJlY29yZF07XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGRpc3BsYXlSZWNvcmQucHVzaChzcmMpO1xyXG4gICAgICAgICAgICAgIHJlc3VsdHMucHVzaChkaXNwbGF5UmVjb3JkKTtcclxuICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0cztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHt9XHJcbiAgICByZXR1cm4gcmVzdWx0cztcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBnZXRFbnRpdHlJbWdUb0Rpc3BsYXkoc2VhcmNoUmVjb3JkOiBhcGkuSVJlY29yZEl0ZW0pIHtcclxuICAgIGxldCBzcmMgPSAnJztcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmIChzZWFyY2hSZWNvcmQudHlwZSkge1xyXG4gICAgICAgIGlmIChzZWFyY2hSZWNvcmQudHlwZS50b1VwcGVyQ2FzZSgpID09PSAnQ09OVEFDVCcpIHtcclxuICAgICAgICAgIHNyYyA9ICcuLi8uLi9hc3NldHMvaW1hZ2VzL0ljb25fQ29udGFjdC5wbmcnO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoc2VhcmNoUmVjb3JkLnR5cGUudG9VcHBlckNhc2UoKSA9PT0gJ0FDQ09VTlQnKSB7XHJcbiAgICAgICAgICBzcmMgPSAnLi4vLi4vYXNzZXRzL2ltYWdlcy9JY29uX0FjY291bnQucG5nJztcclxuICAgICAgICB9IGVsc2UgaWYgKHNlYXJjaFJlY29yZC50eXBlLnRvVXBwZXJDYXNlKCkgPT09ICdMRUFEJykge1xyXG4gICAgICAgICAgc3JjID0gJy4uLy4uL2Fzc2V0cy9pbWFnZXMvSWNvbl9MZWFkLnBuZyc7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHNyYyA9ICcuLi8uLi9hc3NldHMvaW1hZ2VzL01pc2NlbGxhbmVvdXNfSWNvbi5wbmcnO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHt9XHJcbiAgICByZXR1cm4gc3JjO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGdldFNlYXJjaExheW91dEluZm9Gb3JEaXNwbGF5KHNlYXJjaFJlY29yZDogYXBpLklSZWNvcmRJdGVtKSB7XHJcbiAgICBsZXQgbGF5b3V0SW5mbzogYW55O1xyXG4gICAgdHJ5IHtcclxuICAgICAgbGF5b3V0SW5mbyA9IHRoaXMuc2VhcmNoTGF5b3V0LmxheW91dHNbMF1bXHJcbiAgICAgICAgdGhpcy5BY3Rpdml0eURldGFpbHMuQ2FsbFR5cGVcclxuICAgICAgXS5maW5kKChpKSA9PiBpLkRldk5hbWUgPT09IHNlYXJjaFJlY29yZC50eXBlKTtcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7fVxyXG4gICAgcmV0dXJuIGxheW91dEluZm87XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJjYWxsRGlzcGxheVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJlZGl0b3Igc2VhcmNoSW5mb0hlYWRlclwiPlxyXG4gICAgPGxhYmVsIGNsYXNzPVwiaGVhZGVyTGFiZWxcIj5cclxuICAgICAgPGI+Q2FsbGVyIEluZm9ybWF0aW9uPC9iPlxyXG4gICAgPC9sYWJlbD5cclxuICAgIDxzcGFuXHJcbiAgICAgICpuZ0lmPVwidGhpcy5zZWFyY2hSZWNvcmRMaXN0Lmxlbmd0aCA+IDFcIlxyXG4gICAgICBjbGFzcz1cIm11bHRpTWF0Y2hCYWRnZVwiXHJcbiAgICA+e3sgdGhpcy5zZWFyY2hSZWNvcmRMaXN0Lmxlbmd0aCB9fSBtYXRjaGVzPC9zcGFuPlxyXG4gICAgPGltZ1xyXG4gICAgICAqbmdJZj1cImlzU2VhcmNoSW5mb3JtYXRpb25NYXhpbWl6ZWRcIlxyXG4gICAgICBjbGFzcz1cIlZpZXdSZXNpemVJbWFnZVwiXHJcbiAgICAgIHNyYz1cImFzc2V0cy9pbWFnZXMvc2VjdGlvbl9jb2xsYXBzZS5wbmdcIlxyXG4gICAgICAoY2xpY2spPVwiaXNTZWFyY2hJbmZvcm1hdGlvbk1heGltaXplZCA9IGZhbHNlXCJcclxuICAgICAgdGl0bGU9XCJDb2xsYXBzZVwiXHJcbiAgICAvPlxyXG4gICAgPGltZ1xyXG4gICAgICAqbmdJZj1cIiFpc1NlYXJjaEluZm9ybWF0aW9uTWF4aW1pemVkXCJcclxuICAgICAgY2xhc3M9XCJWaWV3UmVzaXplSW1hZ2VcIlxyXG4gICAgICBzcmM9XCJhc3NldHMvaW1hZ2VzL3NlY3Rpb25fZXhwYW5kLnBuZ1wiXHJcbiAgICAgIChjbGljayk9XCJpc1NlYXJjaEluZm9ybWF0aW9uTWF4aW1pemVkID0gdHJ1ZVwiXHJcbiAgICAgIHRpdGxlPVwiRXhwYW5kXCJcclxuICAgIC8+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cImNhbGxCb2R5XCIgKm5nSWY9XCJpc1NlYXJjaEluZm9ybWF0aW9uTWF4aW1pemVkXCI+XHJcbiAgICA8ZGl2ICpuZ0lmPVwidGhpcy5zZWFyY2hSZWNvcmRMaXN0Lmxlbmd0aCA+IDEgJiYgdGhpcy5tdWx0aU1hdGNoRGF0YS5sZW5ndGggPiAwXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwib3ZlcmZsb3dXcmFwcGVyXCI+XHJcbiAgICAgICAgPGltZ1xyXG4gICAgICAgICAgY2xhc3M9XCJDUk1SZXN1bHRJbWFnZU11bHRpTWF0Y2hcIlxyXG4gICAgICAgICAgc3JjPVwie3sgdGhpcy5tdWx0aU1hdGNoRGF0YVtzZWxlY3RlZE11bHRpTWF0Y2hJbmRleF0/LlswXT8uWzJdIH19XCJcclxuICAgICAgICAvPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgaWQ9XCJ7eyB0aGlzLnNlYXJjaFJlY29yZExpc3Rbc2VsZWN0ZWRNdWx0aU1hdGNoSW5kZXhdLmlkIH19XCJcclxuICAgICAgICAgIG5hbWU9XCJ7eyB0aGlzLm11bHRpTWF0Y2hEYXRhW3NlbGVjdGVkTXVsdGlNYXRjaEluZGV4XT8uWzBdPy5bMV0gfX1cIlxyXG4gICAgICAgICAgKGNsaWNrKT1cIm9uQWdlbnRTZWxlY3RlZENhbGxlckluZm9ybWF0aW9uKCRldmVudClcIlxyXG4gICAgICAgICAgcmVhZG9ubHlcclxuICAgICAgICAgIGNsYXNzPVwibXVsdGlNYXRjaExhYmVsXCJcclxuICAgICAgICAgIHRpdGxlPVwie3sgdGhpcy5tdWx0aU1hdGNoRGF0YVtzZWxlY3RlZE11bHRpTWF0Y2hJbmRleF0/LlswXT8uWzFdIH19XCJcclxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgIHZhbHVlPVwie3sgdGhpcy5tdWx0aU1hdGNoRGF0YVtzZWxlY3RlZE11bHRpTWF0Y2hJbmRleF0/LlswXT8uWzFdIH19XCJcclxuICAgICAgICAvPlxyXG4gICAgICAgIDxzcGFuIHN0eWxlPVwiZmxvYXQ6IHJpZ2h0OyBtYXJnaW4tcmlnaHQ6IDQlO1wiPlxyXG4gICAgICAgICAgPGltZ1xyXG4gICAgICAgICAgICAqbmdJZj1cIiF0aGlzLnNob3VsZFNob3dBbGxNdWx0aU1hdGNoT3B0aW9uc1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiQ1JNRXhwYW5kSW1hZ2VcIlxyXG4gICAgICAgICAgICBzcmM9XCIuLi8uLi9hc3NldHMvaW1hZ2VzL2Rvd24tYXJyb3cucG5nXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cInNob3VsZFNob3dBbGxNdWx0aU1hdGNoT3B0aW9ucyA9IHRydWVcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgKm5nSWY9XCJ0aGlzLnNob3VsZFNob3dBbGxNdWx0aU1hdGNoT3B0aW9uc1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiQ1JNRXhwYW5kSW1hZ2VcIlxyXG4gICAgICAgICAgICBzcmM9XCIuLi8uLi9hc3NldHMvaW1hZ2VzL3VwLWFycm93LnBuZ1wiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJzaG91bGRTaG93QWxsTXVsdGlNYXRjaE9wdGlvbnMgPSBmYWxzZVwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwidGhpcy5zaG91bGRTaG93QWxsTXVsdGlNYXRjaE9wdGlvbnNcIj5cclxuICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgaSBvZiB0aGlzLm11bHRpTWF0Y2hEYXRhOyBsZXQgaW5kZXggPSBpbmRleFwiPlxyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAqbmdJZj1cImluZGV4ICE9PSBzZWxlY3RlZE11bHRpTWF0Y2hJbmRleCAmJiBpPy5bMF1cIlxyXG4gICAgICAgICAgY2xhc3M9XCJvdmVyZmxvd1dyYXBwZXJcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxpbWcgY2xhc3M9XCJDUk1SZXN1bHRJbWFnZU11bHRpTWF0Y2hcIiBzcmM9XCJ7eyBpWzBdWzJdIH19XCIgLz5cclxuICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICBpZD1cInt7IHRoaXMuc2VhcmNoUmVjb3JkTGlzdFtpbmRleF0uaWQgfX1cIlxyXG4gICAgICAgICAgICBuYW1lPVwie3sgaVswXVsxXSB9fVwiXHJcbiAgICAgICAgICAgIHJlYWRvbmx5XHJcbiAgICAgICAgICAgIGNsYXNzPVwibXVsdGlNYXRjaExhYmVsXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uQWdlbnRTZWxlY3RlZENhbGxlckluZm9ybWF0aW9uKCRldmVudClcIlxyXG4gICAgICAgICAgICB0aXRsZT1cInt7IGlbMF1bMV0gfX1cIlxyXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgIHZhbHVlPVwie3sgaVswXVsxXSB9fVwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8IS0tIEJlbG93IGlzIHRoZSBIVE1MIGxvYWRlZCBvbiBTaW5nbGUgTWF0Y2ggLS0+XHJcbiAgICA8ZGl2ICpuZ0lmPVwidGhpcy5zZWFyY2hSZWNvcmRMaXN0Lmxlbmd0aCA9PT0gMVwiPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3M9XCJlZGl0b3JGdWxsIGRpc3BsYXlEaXZcIlxyXG4gICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgbGV0IGkgb2YgdGhpcy5zaW5nbGVNYXRjaERhdGEgfCBzbGljZTogMDoxO1xyXG4gICAgICAgICAgbGV0IGluZGV4ID0gaW5kZXg7XHJcbiAgICAgICAgICBsZXQgZmlyc3QgPSBmaXJzdFxyXG4gICAgICAgIFwiXHJcbiAgICAgID5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cIm92ZXJmbG93V3JhcHBlclwiPlxyXG4gICAgICAgICAgICA8aW1nXHJcbiAgICAgICAgICAgICAgaWQ9XCJFbnRpdHlJY29uXCJcclxuICAgICAgICAgICAgICBzcmM9XCJ7eyB0aGlzLnNpbmdsZU1hdGNoSWNvblNyYyB9fVwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJDUk1SZXN1bHRJbWFnZVwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwic2luZ2xlU2VhcmNoUmVzdWx0U2VsZWN0IHNpbmdsZU1hdGNoRmlyc3RXcmFwcGVyIFwiXHJcbiAgICAgICAgICAgICAgaWQ9XCJ7eyB0aGlzLnNlYXJjaFJlY29yZExpc3RbMF0uaWQgfX1cIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy5maXJzdFNpbmdsZU1hdGNoUmVzdWx0XT1cImZpcnN0XCJcclxuICAgICAgICAgICAgICB2YWx1ZT1cInt7IGlbMV0gfX1cIlxyXG4gICAgICAgICAgICAgIHRpdGxlPVwie3sgaVsxXSB9fVwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQWdlbnRTZWxlY3RlZENhbGxlckluZm9ybWF0aW9uKCRldmVudClcIlxyXG4gICAgICAgICAgICAgIHJlYWRvbmx5XHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwiZWRpdG9yRnVsbCBkaXNwbGF5RGl2XCJcclxuICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgIGxldCBpIG9mIHRoaXMuc2luZ2xlTWF0Y2hEYXRhIHwgc2xpY2U6IDE7XHJcbiAgICAgICAgICBsZXQgaW5kZXggPSBpbmRleDtcclxuICAgICAgICAgIGxldCBmaXJzdCA9IGZpcnN0XHJcbiAgICAgICAgXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwib3ZlcmZsb3dXcmFwcGVyXCI+XHJcbiAgICAgICAgICA8bGFiZWwgdGl0bGU9XCJ7eyBpWzBdIH19XCIgY2xhc3M9XCJkaXNwbGF5TGFiZWxzVGFiYmVkXCI+e3tcclxuICAgICAgICAgICAgaVswXVxyXG4gICAgICAgICAgfX08L2xhYmVsPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBjbGFzcz1cInNpbmdsZVNlYXJjaFJlc3VsdFNlbGVjdCBzaW5nbGVNYXRjaFRhYmJlZEl0ZW1zV3JhcHBlciBzaW5nbGVNYXRjaExhYmVsXCJcclxuICAgICAgICAgICAgICBpZD1cInt7IHRoaXMuc2VhcmNoUmVjb3JkTGlzdFswXS5pZCB9fVwiXHJcbiAgICAgICAgICAgICAgdmFsdWU9XCJ7eyBpWzFdIH19XCJcclxuICAgICAgICAgICAgICB0aXRsZT1cInt7IGlbMV0gfX1cIlxyXG4gICAgICAgICAgICAgIHJlYWRvbmx5XHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -1164,17 +1164,27 @@ class SearchInformationComponent {
1164
1164
  singleMatchData;
1165
1165
  multiMatchData;
1166
1166
  shouldShowAllMultiMatchOptions;
1167
+ selectedMultiMatchIndex;
1167
1168
  constructor() {
1168
1169
  this.isSearchInformationMaximized = true;
1169
1170
  this.singleMatchData = null;
1170
1171
  this.multiMatchData = [];
1171
1172
  this.agentSelectedCallerInformation = new EventEmitter();
1173
+ this.selectedMultiMatchIndex = 0;
1172
1174
  }
1173
- ngOnChanges() {
1174
- this.renderData();
1175
+ ngOnChanges(changes) {
1176
+ if (changes['searchRecordList']) {
1177
+ this.renderData();
1178
+ }
1175
1179
  }
1176
1180
  onAgentSelectedCallerInformation(event) {
1177
1181
  try {
1182
+ const selectedId = event.target.id;
1183
+ const selectedIndex = this.searchRecordList.findIndex(r => r.id === selectedId);
1184
+ if (selectedIndex >= 0) {
1185
+ this.selectedMultiMatchIndex = selectedIndex;
1186
+ }
1187
+ this.shouldShowAllMultiMatchOptions = false;
1178
1188
  this.agentSelectedCallerInformation.emit({
1179
1189
  id: event.target.id,
1180
1190
  value: event.target.value
@@ -1187,6 +1197,7 @@ class SearchInformationComponent {
1187
1197
  this.singleMatchData = null;
1188
1198
  this.multiMatchData = [];
1189
1199
  this.shouldShowAllMultiMatchOptions = false;
1200
+ this.selectedMultiMatchIndex = 0;
1190
1201
  if (this.searchRecordList.length === 1) {
1191
1202
  this.singleMatchData = this.parseSearchRecordForNameSingleMatch(this.searchRecordList[0]);
1192
1203
  }
@@ -1295,11 +1306,11 @@ class SearchInformationComponent {
1295
1306
  return layoutInfo;
1296
1307
  }
1297
1308
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SearchInformationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1298
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SearchInformationComponent, selector: "amc-search-information", inputs: { ActivityDetails: "ActivityDetails", searchLayout: "searchLayout", searchRecordList: "searchRecordList" }, outputs: { agentSelectedCallerInformation: "agentSelectedCallerInformation" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"callDisplay\">\r\n <div class=\"editor callHeader\">\r\n <label class=\"headerLabel\">\r\n <b>Caller Information</b>\r\n </label>\r\n <img\r\n title=\"Multiple Matches Available\"\r\n *ngIf=\"this.searchRecordList.length > 1\"\r\n src=\"../../assets/images/MultiMatchAlert.png\"\r\n class=\"multiMatchImg\"\r\n />\r\n <img\r\n *ngIf=\"isSearchInformationMaximized\"\r\n class=\"ViewResizeImage\"\r\n src=\"assets/images/section_collapse.png\"\r\n (click)=\"isSearchInformationMaximized = false\"\r\n title=\"Collapse\"\r\n />\r\n <img\r\n *ngIf=\"!isSearchInformationMaximized\"\r\n class=\"ViewResizeImage\"\r\n src=\"assets/images/section_expand.png\"\r\n (click)=\"isSearchInformationMaximized = true\"\r\n title=\"Expand\"\r\n />\r\n </div>\r\n <div class=\"callBody\" *ngIf=\"isSearchInformationMaximized\">\r\n <div *ngIf=\"this.searchRecordList.length > 1\">\r\n <span class=\"overflowWrapper\">\r\n <img\r\n class=\"CRMResultImageMultiMatch\"\r\n src=\"{{ this.multiMatchData[0][0][2] }}\"\r\n />\r\n <input\r\n id=\"{{ this.searchRecordList[0].id }}\"\r\n name=\"{{ this.multiMatchData[0][0][1] }}\"\r\n (click)=\"onAgentSelectedCallerInformation($event)\"\r\n readonly\r\n class=\"multiMatchLabel\"\r\n title=\"{{ this.multiMatchData[0][0][1] }}\"\r\n type=\"text\"\r\n value=\"{{ this.multiMatchData[0][0][1] }}\"\r\n />\r\n <span style=\"float: right; margin-right: 4%;\">\r\n <img\r\n *ngIf=\"!this.shouldShowAllMultiMatchOptions\"\r\n class=\"CRMExpandImage\"\r\n src=\"../../assets/images/down-arrow.png\"\r\n (click)=\"shouldShowAllMultiMatchOptions = true\"\r\n />\r\n <img\r\n *ngIf=\"this.shouldShowAllMultiMatchOptions\"\r\n class=\"CRMExpandImage\"\r\n src=\"../../assets/images/up-arrow.png\"\r\n (click)=\"shouldShowAllMultiMatchOptions = false\"\r\n />\r\n </span>\r\n </span>\r\n <div *ngIf=\"this.shouldShowAllMultiMatchOptions\">\r\n <div *ngFor=\"let i of this.multiMatchData | slice: 1; let index = index\">\r\n <span\r\n class=\"overflowWrapper\"\r\n >\r\n <img class=\"CRMResultImageMultiMatch\" src=\"{{ i[0][2] }}\" />\r\n <input\r\n id=\"{{ this.searchRecordList[index + 1].id }}\"\r\n name=\"{{ i[0][1] }}\"\r\n readonly\r\n class=\"multiMatchLabel\"\r\n (click)=\"onAgentSelectedCallerInformation($event)\"\r\n title=\"{{ i[0][1] }}\"\r\n type=\"text\"\r\n value=\"{{ i[0][1] }}\"\r\n />\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Below is the HTML loaded on Single Match -->\r\n <div *ngIf=\"this.searchRecordList.length === 1\">\r\n <div\r\n class=\"editorFull displayDiv\"\r\n *ngFor=\"\r\n let i of this.singleMatchData | slice: 0:1;\r\n let index = index;\r\n let first = first\r\n \"\r\n >\r\n <span class=\"overflowWrapper\">\r\n <img\r\n id=\"EntityIcon\"\r\n src=\"{{ this.singleMatchIconSrc }}\"\r\n class=\"CRMResultImage\"\r\n />\r\n <input\r\n class=\"singleSearchResultSelect singleMatchFirstWrapper \"\r\n id=\"{{ this.searchRecordList[0].id }}\"\r\n [class.firstSingleMatchResult]=\"first\"\r\n value=\"{{ i[1] }}\"\r\n title=\"{{ i[1] }}\"\r\n (click)=\"onAgentSelectedCallerInformation($event)\"\r\n readonly\r\n />\r\n </span>\r\n </div>\r\n <div\r\n class=\"editorFull displayDiv\"\r\n *ngFor=\"\r\n let i of this.singleMatchData | slice: 1;\r\n let index = index;\r\n let first = first\r\n \"\r\n >\r\n <span class=\"overflowWrapper\">\r\n <label title=\"{{ i[0] }}\" class=\"displayLabelsTabbed\">{{\r\n i[0]\r\n }}</label>\r\n <input\r\n class=\"singleSearchResultSelect singleMatchTabbedItemsWrapper singleMatchLabel\"\r\n id=\"{{ this.searchRecordList[0].id }}\"\r\n value=\"{{ i[1] }}\"\r\n title=\"{{ i[1] }}\"\r\n readonly\r\n />\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".callHeader{background-color:#f4f5fb!important;width:100%!important;margin-top:0!important;border:1px solid #939598!important}.displayDiv{width:100%;display:flex}.multiMatchImg{height:18px;margin-left:5px}.editor{font-size:.9em;width:70%;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}.editorFull{font-size:.9em;width:100%;text-align:left;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}.CRMResultImage{width:18px;height:18px;margin-right:-5px;margin-top:-5px;margin-left:5px}.CRMResultImageMultiMatch{width:18px;height:18px;margin-right:2px;margin-left:5px;margin-top:-5px}.CRMExpandImage{width:6px;height:6px;cursor:pointer;margin-bottom:2px}.callBody{border:1px solid #939598;border-top-color:#939598;border-top-style:solid;border-top-width:1px;border-top:0;position:relative}.callDisplay{margin-bottom:8px;background-color:#fff;display:grid}.multipleSearchResultSelect{border:1px solid #939598!important;border-radius:3px!important;width:96%!important;height:20px!important;text-align:left!important;white-space:nowrap!important;text-overflow:ellipsis!important;margin:5px 0% 5px 6px;cursor:pointer}.overflowWrapper{width:100%;overflow-x:hidden;overflow-y:hidden}.singleSearchResultSelect{border:0px solid #939598!important;height:20px!important;text-align:left!important;white-space:nowrap!important;text-overflow:ellipsis!important;margin:0 0% 0 0;outline:none}.wrapper{width:79%!important}.singleMatchFirstWrapper{cursor:pointer;border:0px;outline:none;overflow:hidden;text-overflow:ellipsis;display:inline-block;width:calc(100% - 30px)}.singleMatchTabbedItemsWrapper{width:70%}.displayLabels{margin-left:5px;width:calc(20% + 5px);font-weight:400;margin-bottom:0;margin-top:0;outline:none;overflow:hidden;max-width:100px;vertical-align:middle}.displayLabelsMultiMatch{margin-left:5px;width:calc(20% + 5px);font-weight:400;margin-bottom:0;margin-top:0;outline:none}.displayLabelsTabbed{margin-left:5px;width:35%;font-weight:400;margin-bottom:0;margin-top:0;outline:none;overflow:hidden;text-overflow:ellipsis;vertical-align:middle}.matchedRecordsMargin{margin-top:1%}.ViewResizeImage{width:20px;height:20px;float:right;cursor:pointer}.headerLabel{margin-left:10px}.firstSingleMatchResult{font-weight:700;border:0px solid #939598!important;height:20px!important;text-align:left!important;white-space:nowrap!important;text-overflow:ellipsis!important;margin:0 0% 0 5px;outline:none}.multiMatchLabel{border:0px;cursor:pointer;outline:none;overflow:hidden;text-overflow:ellipsis;display:inline-block;width:calc(95% - 45px)}.singleMatchLabel{border:0px;outline:none;overflow:hidden;text-overflow:ellipsis;display:inline-block;width:calc(65% - 13px)}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.SlicePipe, name: "slice" }] });
1309
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SearchInformationComponent, selector: "amc-search-information", inputs: { ActivityDetails: "ActivityDetails", searchLayout: "searchLayout", searchRecordList: "searchRecordList" }, outputs: { agentSelectedCallerInformation: "agentSelectedCallerInformation" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"callDisplay\">\r\n <div class=\"editor searchInfoHeader\">\r\n <label class=\"headerLabel\">\r\n <b>Caller Information</b>\r\n </label>\r\n <span\r\n *ngIf=\"this.searchRecordList.length > 1\"\r\n class=\"multiMatchBadge\"\r\n >{{ this.searchRecordList.length }} matches</span>\r\n <img\r\n *ngIf=\"isSearchInformationMaximized\"\r\n class=\"ViewResizeImage\"\r\n src=\"assets/images/section_collapse.png\"\r\n (click)=\"isSearchInformationMaximized = false\"\r\n title=\"Collapse\"\r\n />\r\n <img\r\n *ngIf=\"!isSearchInformationMaximized\"\r\n class=\"ViewResizeImage\"\r\n src=\"assets/images/section_expand.png\"\r\n (click)=\"isSearchInformationMaximized = true\"\r\n title=\"Expand\"\r\n />\r\n </div>\r\n <div class=\"callBody\" *ngIf=\"isSearchInformationMaximized\">\r\n <div *ngIf=\"this.searchRecordList.length > 1 && this.multiMatchData.length > 0\">\r\n <span class=\"overflowWrapper\">\r\n <img\r\n class=\"CRMResultImageMultiMatch\"\r\n src=\"{{ this.multiMatchData[selectedMultiMatchIndex]?.[0]?.[2] }}\"\r\n />\r\n <input\r\n id=\"{{ this.searchRecordList[selectedMultiMatchIndex].id }}\"\r\n name=\"{{ this.multiMatchData[selectedMultiMatchIndex]?.[0]?.[1] }}\"\r\n (click)=\"onAgentSelectedCallerInformation($event)\"\r\n readonly\r\n class=\"multiMatchLabel\"\r\n title=\"{{ this.multiMatchData[selectedMultiMatchIndex]?.[0]?.[1] }}\"\r\n type=\"text\"\r\n value=\"{{ this.multiMatchData[selectedMultiMatchIndex]?.[0]?.[1] }}\"\r\n />\r\n <span style=\"float: right; margin-right: 4%;\">\r\n <img\r\n *ngIf=\"!this.shouldShowAllMultiMatchOptions\"\r\n class=\"CRMExpandImage\"\r\n src=\"../../assets/images/down-arrow.png\"\r\n (click)=\"shouldShowAllMultiMatchOptions = true\"\r\n />\r\n <img\r\n *ngIf=\"this.shouldShowAllMultiMatchOptions\"\r\n class=\"CRMExpandImage\"\r\n src=\"../../assets/images/up-arrow.png\"\r\n (click)=\"shouldShowAllMultiMatchOptions = false\"\r\n />\r\n </span>\r\n </span>\r\n <div *ngIf=\"this.shouldShowAllMultiMatchOptions\">\r\n <div *ngFor=\"let i of this.multiMatchData; let index = index\">\r\n <span\r\n *ngIf=\"index !== selectedMultiMatchIndex && i?.[0]\"\r\n class=\"overflowWrapper\"\r\n >\r\n <img class=\"CRMResultImageMultiMatch\" src=\"{{ i[0][2] }}\" />\r\n <input\r\n id=\"{{ this.searchRecordList[index].id }}\"\r\n name=\"{{ i[0][1] }}\"\r\n readonly\r\n class=\"multiMatchLabel\"\r\n (click)=\"onAgentSelectedCallerInformation($event)\"\r\n title=\"{{ i[0][1] }}\"\r\n type=\"text\"\r\n value=\"{{ i[0][1] }}\"\r\n />\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Below is the HTML loaded on Single Match -->\r\n <div *ngIf=\"this.searchRecordList.length === 1\">\r\n <div\r\n class=\"editorFull displayDiv\"\r\n *ngFor=\"\r\n let i of this.singleMatchData | slice: 0:1;\r\n let index = index;\r\n let first = first\r\n \"\r\n >\r\n <span class=\"overflowWrapper\">\r\n <img\r\n id=\"EntityIcon\"\r\n src=\"{{ this.singleMatchIconSrc }}\"\r\n class=\"CRMResultImage\"\r\n />\r\n <input\r\n class=\"singleSearchResultSelect singleMatchFirstWrapper \"\r\n id=\"{{ this.searchRecordList[0].id }}\"\r\n [class.firstSingleMatchResult]=\"first\"\r\n value=\"{{ i[1] }}\"\r\n title=\"{{ i[1] }}\"\r\n (click)=\"onAgentSelectedCallerInformation($event)\"\r\n readonly\r\n />\r\n </span>\r\n </div>\r\n <div\r\n class=\"editorFull displayDiv\"\r\n *ngFor=\"\r\n let i of this.singleMatchData | slice: 1;\r\n let index = index;\r\n let first = first\r\n \"\r\n >\r\n <span class=\"overflowWrapper\">\r\n <label title=\"{{ i[0] }}\" class=\"displayLabelsTabbed\">{{\r\n i[0]\r\n }}</label>\r\n <input\r\n class=\"singleSearchResultSelect singleMatchTabbedItemsWrapper singleMatchLabel\"\r\n id=\"{{ this.searchRecordList[0].id }}\"\r\n value=\"{{ i[1] }}\"\r\n title=\"{{ i[1] }}\"\r\n readonly\r\n />\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".searchInfoHeader{background-color:#f4f5fb!important;width:100%!important;margin-top:0!important;border:1px solid #939598!important;display:flex;align-items:center}.displayDiv{width:100%;display:flex}.multiMatchBadge{font-size:.8em;font-weight:700;color:#000;background-color:transparent;border-radius:0;padding:0;margin-left:auto;white-space:nowrap;font-family:Arial,sans-serif}.editor{font-size:.9em;width:70%;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}.editorFull{font-size:.9em;width:100%;text-align:left;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}.CRMResultImage{width:18px;height:18px;margin-right:-5px;margin-top:-5px;margin-left:5px}.CRMResultImageMultiMatch{width:18px;height:18px;margin-right:2px;margin-left:5px;margin-top:-5px}.CRMExpandImage{width:6px;height:6px;cursor:pointer;margin-bottom:2px}.callBody{border:1px solid #939598;border-top-color:#939598;border-top-style:solid;border-top-width:1px;border-top:0;position:relative}.callDisplay{margin-bottom:8px;background-color:#fff;display:grid}.multipleSearchResultSelect{border:1px solid #939598!important;border-radius:3px!important;width:96%!important;height:20px!important;text-align:left!important;white-space:nowrap!important;text-overflow:ellipsis!important;margin:5px 0% 5px 6px;cursor:pointer}.overflowWrapper{width:100%;overflow-x:hidden;overflow-y:hidden}.singleSearchResultSelect{border:0px solid #939598!important;height:20px!important;text-align:left!important;white-space:nowrap!important;text-overflow:ellipsis!important;margin:0 0% 0 0;outline:none}.wrapper{width:79%!important}.singleMatchFirstWrapper{cursor:pointer;border:0px;outline:none;overflow:hidden;text-overflow:ellipsis;display:inline-block;width:calc(100% - 30px)}.singleMatchTabbedItemsWrapper{width:70%}.displayLabels{margin-left:5px;width:calc(20% + 5px);font-weight:400;margin-bottom:0;margin-top:0;outline:none;overflow:hidden;max-width:100px;vertical-align:middle}.displayLabelsMultiMatch{margin-left:5px;width:calc(20% + 5px);font-weight:400;margin-bottom:0;margin-top:0;outline:none}.displayLabelsTabbed{margin-left:5px;width:35%;font-weight:400;margin-bottom:0;margin-top:0;outline:none;overflow:hidden;text-overflow:ellipsis;vertical-align:middle}.matchedRecordsMargin{margin-top:1%}.ViewResizeImage{width:20px;height:20px;float:right;cursor:pointer}.headerLabel{margin-left:10px}.firstSingleMatchResult{font-weight:700;border:0px solid #939598!important;height:20px!important;text-align:left!important;white-space:nowrap!important;text-overflow:ellipsis!important;margin:0 0% 0 5px;outline:none}.multiMatchLabel{border:0px;cursor:pointer;outline:none;overflow:hidden;text-overflow:ellipsis;display:inline-block;width:calc(95% - 45px)}.singleMatchLabel{border:0px;outline:none;overflow:hidden;text-overflow:ellipsis;display:inline-block;width:calc(65% - 13px)}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.SlicePipe, name: "slice" }] });
1299
1310
  }
1300
1311
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SearchInformationComponent, decorators: [{
1301
1312
  type: Component,
1302
- args: [{ selector: 'amc-search-information', template: "<div class=\"callDisplay\">\r\n <div class=\"editor callHeader\">\r\n <label class=\"headerLabel\">\r\n <b>Caller Information</b>\r\n </label>\r\n <img\r\n title=\"Multiple Matches Available\"\r\n *ngIf=\"this.searchRecordList.length > 1\"\r\n src=\"../../assets/images/MultiMatchAlert.png\"\r\n class=\"multiMatchImg\"\r\n />\r\n <img\r\n *ngIf=\"isSearchInformationMaximized\"\r\n class=\"ViewResizeImage\"\r\n src=\"assets/images/section_collapse.png\"\r\n (click)=\"isSearchInformationMaximized = false\"\r\n title=\"Collapse\"\r\n />\r\n <img\r\n *ngIf=\"!isSearchInformationMaximized\"\r\n class=\"ViewResizeImage\"\r\n src=\"assets/images/section_expand.png\"\r\n (click)=\"isSearchInformationMaximized = true\"\r\n title=\"Expand\"\r\n />\r\n </div>\r\n <div class=\"callBody\" *ngIf=\"isSearchInformationMaximized\">\r\n <div *ngIf=\"this.searchRecordList.length > 1\">\r\n <span class=\"overflowWrapper\">\r\n <img\r\n class=\"CRMResultImageMultiMatch\"\r\n src=\"{{ this.multiMatchData[0][0][2] }}\"\r\n />\r\n <input\r\n id=\"{{ this.searchRecordList[0].id }}\"\r\n name=\"{{ this.multiMatchData[0][0][1] }}\"\r\n (click)=\"onAgentSelectedCallerInformation($event)\"\r\n readonly\r\n class=\"multiMatchLabel\"\r\n title=\"{{ this.multiMatchData[0][0][1] }}\"\r\n type=\"text\"\r\n value=\"{{ this.multiMatchData[0][0][1] }}\"\r\n />\r\n <span style=\"float: right; margin-right: 4%;\">\r\n <img\r\n *ngIf=\"!this.shouldShowAllMultiMatchOptions\"\r\n class=\"CRMExpandImage\"\r\n src=\"../../assets/images/down-arrow.png\"\r\n (click)=\"shouldShowAllMultiMatchOptions = true\"\r\n />\r\n <img\r\n *ngIf=\"this.shouldShowAllMultiMatchOptions\"\r\n class=\"CRMExpandImage\"\r\n src=\"../../assets/images/up-arrow.png\"\r\n (click)=\"shouldShowAllMultiMatchOptions = false\"\r\n />\r\n </span>\r\n </span>\r\n <div *ngIf=\"this.shouldShowAllMultiMatchOptions\">\r\n <div *ngFor=\"let i of this.multiMatchData | slice: 1; let index = index\">\r\n <span\r\n class=\"overflowWrapper\"\r\n >\r\n <img class=\"CRMResultImageMultiMatch\" src=\"{{ i[0][2] }}\" />\r\n <input\r\n id=\"{{ this.searchRecordList[index + 1].id }}\"\r\n name=\"{{ i[0][1] }}\"\r\n readonly\r\n class=\"multiMatchLabel\"\r\n (click)=\"onAgentSelectedCallerInformation($event)\"\r\n title=\"{{ i[0][1] }}\"\r\n type=\"text\"\r\n value=\"{{ i[0][1] }}\"\r\n />\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Below is the HTML loaded on Single Match -->\r\n <div *ngIf=\"this.searchRecordList.length === 1\">\r\n <div\r\n class=\"editorFull displayDiv\"\r\n *ngFor=\"\r\n let i of this.singleMatchData | slice: 0:1;\r\n let index = index;\r\n let first = first\r\n \"\r\n >\r\n <span class=\"overflowWrapper\">\r\n <img\r\n id=\"EntityIcon\"\r\n src=\"{{ this.singleMatchIconSrc }}\"\r\n class=\"CRMResultImage\"\r\n />\r\n <input\r\n class=\"singleSearchResultSelect singleMatchFirstWrapper \"\r\n id=\"{{ this.searchRecordList[0].id }}\"\r\n [class.firstSingleMatchResult]=\"first\"\r\n value=\"{{ i[1] }}\"\r\n title=\"{{ i[1] }}\"\r\n (click)=\"onAgentSelectedCallerInformation($event)\"\r\n readonly\r\n />\r\n </span>\r\n </div>\r\n <div\r\n class=\"editorFull displayDiv\"\r\n *ngFor=\"\r\n let i of this.singleMatchData | slice: 1;\r\n let index = index;\r\n let first = first\r\n \"\r\n >\r\n <span class=\"overflowWrapper\">\r\n <label title=\"{{ i[0] }}\" class=\"displayLabelsTabbed\">{{\r\n i[0]\r\n }}</label>\r\n <input\r\n class=\"singleSearchResultSelect singleMatchTabbedItemsWrapper singleMatchLabel\"\r\n id=\"{{ this.searchRecordList[0].id }}\"\r\n value=\"{{ i[1] }}\"\r\n title=\"{{ i[1] }}\"\r\n readonly\r\n />\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".callHeader{background-color:#f4f5fb!important;width:100%!important;margin-top:0!important;border:1px solid #939598!important}.displayDiv{width:100%;display:flex}.multiMatchImg{height:18px;margin-left:5px}.editor{font-size:.9em;width:70%;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}.editorFull{font-size:.9em;width:100%;text-align:left;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}.CRMResultImage{width:18px;height:18px;margin-right:-5px;margin-top:-5px;margin-left:5px}.CRMResultImageMultiMatch{width:18px;height:18px;margin-right:2px;margin-left:5px;margin-top:-5px}.CRMExpandImage{width:6px;height:6px;cursor:pointer;margin-bottom:2px}.callBody{border:1px solid #939598;border-top-color:#939598;border-top-style:solid;border-top-width:1px;border-top:0;position:relative}.callDisplay{margin-bottom:8px;background-color:#fff;display:grid}.multipleSearchResultSelect{border:1px solid #939598!important;border-radius:3px!important;width:96%!important;height:20px!important;text-align:left!important;white-space:nowrap!important;text-overflow:ellipsis!important;margin:5px 0% 5px 6px;cursor:pointer}.overflowWrapper{width:100%;overflow-x:hidden;overflow-y:hidden}.singleSearchResultSelect{border:0px solid #939598!important;height:20px!important;text-align:left!important;white-space:nowrap!important;text-overflow:ellipsis!important;margin:0 0% 0 0;outline:none}.wrapper{width:79%!important}.singleMatchFirstWrapper{cursor:pointer;border:0px;outline:none;overflow:hidden;text-overflow:ellipsis;display:inline-block;width:calc(100% - 30px)}.singleMatchTabbedItemsWrapper{width:70%}.displayLabels{margin-left:5px;width:calc(20% + 5px);font-weight:400;margin-bottom:0;margin-top:0;outline:none;overflow:hidden;max-width:100px;vertical-align:middle}.displayLabelsMultiMatch{margin-left:5px;width:calc(20% + 5px);font-weight:400;margin-bottom:0;margin-top:0;outline:none}.displayLabelsTabbed{margin-left:5px;width:35%;font-weight:400;margin-bottom:0;margin-top:0;outline:none;overflow:hidden;text-overflow:ellipsis;vertical-align:middle}.matchedRecordsMargin{margin-top:1%}.ViewResizeImage{width:20px;height:20px;float:right;cursor:pointer}.headerLabel{margin-left:10px}.firstSingleMatchResult{font-weight:700;border:0px solid #939598!important;height:20px!important;text-align:left!important;white-space:nowrap!important;text-overflow:ellipsis!important;margin:0 0% 0 5px;outline:none}.multiMatchLabel{border:0px;cursor:pointer;outline:none;overflow:hidden;text-overflow:ellipsis;display:inline-block;width:calc(95% - 45px)}.singleMatchLabel{border:0px;outline:none;overflow:hidden;text-overflow:ellipsis;display:inline-block;width:calc(65% - 13px)}\n"] }]
1313
+ args: [{ selector: 'amc-search-information', template: "<div class=\"callDisplay\">\r\n <div class=\"editor searchInfoHeader\">\r\n <label class=\"headerLabel\">\r\n <b>Caller Information</b>\r\n </label>\r\n <span\r\n *ngIf=\"this.searchRecordList.length > 1\"\r\n class=\"multiMatchBadge\"\r\n >{{ this.searchRecordList.length }} matches</span>\r\n <img\r\n *ngIf=\"isSearchInformationMaximized\"\r\n class=\"ViewResizeImage\"\r\n src=\"assets/images/section_collapse.png\"\r\n (click)=\"isSearchInformationMaximized = false\"\r\n title=\"Collapse\"\r\n />\r\n <img\r\n *ngIf=\"!isSearchInformationMaximized\"\r\n class=\"ViewResizeImage\"\r\n src=\"assets/images/section_expand.png\"\r\n (click)=\"isSearchInformationMaximized = true\"\r\n title=\"Expand\"\r\n />\r\n </div>\r\n <div class=\"callBody\" *ngIf=\"isSearchInformationMaximized\">\r\n <div *ngIf=\"this.searchRecordList.length > 1 && this.multiMatchData.length > 0\">\r\n <span class=\"overflowWrapper\">\r\n <img\r\n class=\"CRMResultImageMultiMatch\"\r\n src=\"{{ this.multiMatchData[selectedMultiMatchIndex]?.[0]?.[2] }}\"\r\n />\r\n <input\r\n id=\"{{ this.searchRecordList[selectedMultiMatchIndex].id }}\"\r\n name=\"{{ this.multiMatchData[selectedMultiMatchIndex]?.[0]?.[1] }}\"\r\n (click)=\"onAgentSelectedCallerInformation($event)\"\r\n readonly\r\n class=\"multiMatchLabel\"\r\n title=\"{{ this.multiMatchData[selectedMultiMatchIndex]?.[0]?.[1] }}\"\r\n type=\"text\"\r\n value=\"{{ this.multiMatchData[selectedMultiMatchIndex]?.[0]?.[1] }}\"\r\n />\r\n <span style=\"float: right; margin-right: 4%;\">\r\n <img\r\n *ngIf=\"!this.shouldShowAllMultiMatchOptions\"\r\n class=\"CRMExpandImage\"\r\n src=\"../../assets/images/down-arrow.png\"\r\n (click)=\"shouldShowAllMultiMatchOptions = true\"\r\n />\r\n <img\r\n *ngIf=\"this.shouldShowAllMultiMatchOptions\"\r\n class=\"CRMExpandImage\"\r\n src=\"../../assets/images/up-arrow.png\"\r\n (click)=\"shouldShowAllMultiMatchOptions = false\"\r\n />\r\n </span>\r\n </span>\r\n <div *ngIf=\"this.shouldShowAllMultiMatchOptions\">\r\n <div *ngFor=\"let i of this.multiMatchData; let index = index\">\r\n <span\r\n *ngIf=\"index !== selectedMultiMatchIndex && i?.[0]\"\r\n class=\"overflowWrapper\"\r\n >\r\n <img class=\"CRMResultImageMultiMatch\" src=\"{{ i[0][2] }}\" />\r\n <input\r\n id=\"{{ this.searchRecordList[index].id }}\"\r\n name=\"{{ i[0][1] }}\"\r\n readonly\r\n class=\"multiMatchLabel\"\r\n (click)=\"onAgentSelectedCallerInformation($event)\"\r\n title=\"{{ i[0][1] }}\"\r\n type=\"text\"\r\n value=\"{{ i[0][1] }}\"\r\n />\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Below is the HTML loaded on Single Match -->\r\n <div *ngIf=\"this.searchRecordList.length === 1\">\r\n <div\r\n class=\"editorFull displayDiv\"\r\n *ngFor=\"\r\n let i of this.singleMatchData | slice: 0:1;\r\n let index = index;\r\n let first = first\r\n \"\r\n >\r\n <span class=\"overflowWrapper\">\r\n <img\r\n id=\"EntityIcon\"\r\n src=\"{{ this.singleMatchIconSrc }}\"\r\n class=\"CRMResultImage\"\r\n />\r\n <input\r\n class=\"singleSearchResultSelect singleMatchFirstWrapper \"\r\n id=\"{{ this.searchRecordList[0].id }}\"\r\n [class.firstSingleMatchResult]=\"first\"\r\n value=\"{{ i[1] }}\"\r\n title=\"{{ i[1] }}\"\r\n (click)=\"onAgentSelectedCallerInformation($event)\"\r\n readonly\r\n />\r\n </span>\r\n </div>\r\n <div\r\n class=\"editorFull displayDiv\"\r\n *ngFor=\"\r\n let i of this.singleMatchData | slice: 1;\r\n let index = index;\r\n let first = first\r\n \"\r\n >\r\n <span class=\"overflowWrapper\">\r\n <label title=\"{{ i[0] }}\" class=\"displayLabelsTabbed\">{{\r\n i[0]\r\n }}</label>\r\n <input\r\n class=\"singleSearchResultSelect singleMatchTabbedItemsWrapper singleMatchLabel\"\r\n id=\"{{ this.searchRecordList[0].id }}\"\r\n value=\"{{ i[1] }}\"\r\n title=\"{{ i[1] }}\"\r\n readonly\r\n />\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".searchInfoHeader{background-color:#f4f5fb!important;width:100%!important;margin-top:0!important;border:1px solid #939598!important;display:flex;align-items:center}.displayDiv{width:100%;display:flex}.multiMatchBadge{font-size:.8em;font-weight:700;color:#000;background-color:transparent;border-radius:0;padding:0;margin-left:auto;white-space:nowrap;font-family:Arial,sans-serif}.editor{font-size:.9em;width:70%;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}.editorFull{font-size:.9em;width:100%;text-align:left;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}.CRMResultImage{width:18px;height:18px;margin-right:-5px;margin-top:-5px;margin-left:5px}.CRMResultImageMultiMatch{width:18px;height:18px;margin-right:2px;margin-left:5px;margin-top:-5px}.CRMExpandImage{width:6px;height:6px;cursor:pointer;margin-bottom:2px}.callBody{border:1px solid #939598;border-top-color:#939598;border-top-style:solid;border-top-width:1px;border-top:0;position:relative}.callDisplay{margin-bottom:8px;background-color:#fff;display:grid}.multipleSearchResultSelect{border:1px solid #939598!important;border-radius:3px!important;width:96%!important;height:20px!important;text-align:left!important;white-space:nowrap!important;text-overflow:ellipsis!important;margin:5px 0% 5px 6px;cursor:pointer}.overflowWrapper{width:100%;overflow-x:hidden;overflow-y:hidden}.singleSearchResultSelect{border:0px solid #939598!important;height:20px!important;text-align:left!important;white-space:nowrap!important;text-overflow:ellipsis!important;margin:0 0% 0 0;outline:none}.wrapper{width:79%!important}.singleMatchFirstWrapper{cursor:pointer;border:0px;outline:none;overflow:hidden;text-overflow:ellipsis;display:inline-block;width:calc(100% - 30px)}.singleMatchTabbedItemsWrapper{width:70%}.displayLabels{margin-left:5px;width:calc(20% + 5px);font-weight:400;margin-bottom:0;margin-top:0;outline:none;overflow:hidden;max-width:100px;vertical-align:middle}.displayLabelsMultiMatch{margin-left:5px;width:calc(20% + 5px);font-weight:400;margin-bottom:0;margin-top:0;outline:none}.displayLabelsTabbed{margin-left:5px;width:35%;font-weight:400;margin-bottom:0;margin-top:0;outline:none;overflow:hidden;text-overflow:ellipsis;vertical-align:middle}.matchedRecordsMargin{margin-top:1%}.ViewResizeImage{width:20px;height:20px;float:right;cursor:pointer}.headerLabel{margin-left:10px}.firstSingleMatchResult{font-weight:700;border:0px solid #939598!important;height:20px!important;text-align:left!important;white-space:nowrap!important;text-overflow:ellipsis!important;margin:0 0% 0 5px;outline:none}.multiMatchLabel{border:0px;cursor:pointer;outline:none;overflow:hidden;text-overflow:ellipsis;display:inline-block;width:calc(95% - 45px)}.singleMatchLabel{border:0px;outline:none;overflow:hidden;text-overflow:ellipsis;display:inline-block;width:calc(65% - 13px)}\n"] }]
1303
1314
  }], ctorParameters: function () { return []; }, propDecorators: { ActivityDetails: [{
1304
1315
  type: Input
1305
1316
  }], searchLayout: [{
@@ -1 +1 @@
1
- {"version":3,"file":"amc-technology-ui-library.mjs","sources":["../../projects/UILibrary/src/app/components/activity/activity.component.ts","../../projects/UILibrary/src/app/components/activity/activity.component.html","../../projects/UILibrary/src/app/models/chat.message.ts","../../projects/UILibrary/src/app/components/chat-message/chat-message.component.ts","../../projects/UILibrary/src/app/components/chat-message/chat-message.component.html","../../projects/UILibrary/src/app/components/chat-box/chat-box.component.ts","../../projects/UILibrary/src/app/components/chat-box/chat-box.component.html","../../projects/UILibrary/src/app/components/create/create.component.ts","../../projects/UILibrary/src/app/components/create/create.component.html","../../projects/UILibrary/src/app/components/current-activity/current-activity.component.ts","../../projects/UILibrary/src/app/components/current-activity/current-activity.component.html","../../projects/UILibrary/src/app/components/disposition/disposition.component.ts","../../projects/UILibrary/src/app/components/disposition/disposition.component.html","../../projects/UILibrary/src/app/components/duration/duration.component.ts","../../projects/UILibrary/src/app/components/duration/duration.component.html","../../projects/UILibrary/src/app/Helpers.ts","../../projects/UILibrary/src/app/components/hold-timer/hold-timer.component.ts","../../projects/UILibrary/src/app/components/hold-timer/hold-timer.component.html","../../projects/UILibrary/src/app/components/operation/operation.component.ts","../../projects/UILibrary/src/app/components/operation/operation.component.html","../../projects/UILibrary/src/app/models/uilibrary.model.ts","../../projects/UILibrary/src/app/components/property/property.component.ts","../../projects/UILibrary/src/app/components/property/property.component.html","../../projects/UILibrary/src/app/components/interaction/interaction.component.ts","../../projects/UILibrary/src/app/components/interaction/interaction.component.html","../../projects/UILibrary/src/app/components/login/login.component.ts","../../projects/UILibrary/src/app/components/login/login.component.html","../../projects/UILibrary/src/app/components/recent-activity/recent-activity.component.ts","../../projects/UILibrary/src/app/components/recent-activity/recent-activity.component.html","../../projects/UILibrary/src/app/components/scenario/scenario.component.ts","../../projects/UILibrary/src/app/components/scenario/scenario.component.html","../../projects/UILibrary/src/app/components/search-information/search-information.component.ts","../../projects/UILibrary/src/app/components/search-information/search-information.component.html","../../projects/UILibrary/src/app/uilibrary.module.ts","../../amc-technology-ui-library.ts"],"sourcesContent":["import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\nimport { IActivity, IActivityDetails } from '../../models/uilibrary.model';\r\n\r\n@Component({\r\n selector: 'app-activity',\r\n templateUrl: './activity.component.html',\r\n styleUrls: ['./activity.component.css']\r\n})\r\nexport class ActivityComponent implements OnInit {\r\n\r\n @Input() activity: IActivity;\r\n @Output() ActivitySave: EventEmitter<IActivity> = new EventEmitter<IActivity>();\r\n @Output() OnNameSelectChange: EventEmitter<IActivity> = new EventEmitter<IActivity>();\r\n @Output() OnRelatedToChange: EventEmitter<IActivity> = new EventEmitter<IActivity>();\r\n @Output() OnSubjectChange: EventEmitter<IActivity> = new EventEmitter<IActivity>();\r\n @Output() OnCallNotesChange: EventEmitter<IActivity> = new EventEmitter<IActivity>();\r\n\r\n isActivityMaximized: boolean;\r\n\r\n constructor() {\r\n this.isActivityMaximized = true;\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n public onNameSelectChange(event) {\r\n this.activity.WhoObject = this.getWho(event.currentTarget.value);\r\n this.OnNameSelectChange.emit(this.activity);\r\n }\r\n\r\n public parseWhoObject(whoObject: IActivityDetails): string {\r\n return whoObject.objectType + ': ' + whoObject.objectName;\r\n }\r\n\r\n public parseWhatObject(whatObject: IActivityDetails): string {\r\n return whatObject.objectType + ': ' + whatObject.objectName;\r\n }\r\n\r\n public onRelatedToChange(event) {\r\n this.activity.WhatObject = this.getWhat(event.currentTarget.value);\r\n this.OnRelatedToChange.emit(this.activity);\r\n }\r\n\r\n public onSubjectChange(event) {\r\n this.activity.Subject = event.srcElement.value;\r\n this.OnSubjectChange.emit(this.activity);\r\n }\r\n public onCallNotesChange(event) {\r\n this.activity.Subject = event.srcElement.value.trim();\r\n this.OnCallNotesChange.emit(this.activity);\r\n }\r\n\r\n public getWho(id): IActivityDetails {\r\n for (let i = 0; i < this.activity.whoList.length; i++) {\r\n if (this.activity.whoList[i].objectId === id) {\r\n return this.activity.whoList[i];\r\n }\r\n }\r\n }\r\n public getWhat(id): IActivityDetails {\r\n for (let i = 0; i < this.activity.whatList.length; i++) {\r\n if (this.activity.whatList[i].objectId === id) {\r\n return this.activity.whatList[i];\r\n }\r\n }\r\n }\r\n\r\n public loadQuickComment(value) {\r\n this.activity.Description = this.activity.Description + this.activity.quickCommentList[value];\r\n }\r\n\r\n public activitySave(clearActivityFields) {\r\n this.ActivitySave.emit(this.activity);\r\n }\r\n}\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_collapse.png\" (click)=\"isActivityMaximized = false\" title=\"Collapse\">\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=\"Call From\">{{activity.NameFieldName}}</label>\r\n <select class=\"dropDownListStyle displayData\" data-resetperactivity=\"false\" (change)=\"onNameSelectChange($event)\">\r\n <option *ngFor=\"let who of activity.whoList\" value=\"{{who.objectId}}\">{{parseWhoObject(who)}}</option>\r\n </select>\r\n </div>\r\n <div class=\"editor displayDiv\">\r\n <label class=\"displayLabels\" title=\"Related To\">{{activity.RelatedToFieldName}}</label>\r\n <select class=\"dropDownListStyle displayData\" (change)=\"onRelatedToChange($event)\" data-resetperactivity=\"false\">\r\n <option *ngFor=\"let what of activity.whatList\" value=\"{{what.objectId}}\">{{parseWhatObject(what)}}</option>\r\n </select>\r\n </div>\r\n <div class=\"editor displayDiv\">\r\n <label class=\"displayLabels\" title=\"Subject\">{{activity.SubjectFieldName}}</label>\r\n <input class=\"activitySubjectTextBoxStyle displayData\" (change)=\"onSubjectChange($event)\" title=\"{{activity.Subject}}\"\r\n type=\"text\" value=\"{{activity.Subject}}\">\r\n </div>\r\n <div class=\"editor displayDiv\">\r\n <div class=\"callNotesContainer\">\r\n <div class=\"textAreaDiv\">\r\n <textarea value=\"{{activity.Description}}\" placeholder=\"Click to add a comment\" class=\"activityCommentsTextBoxStyle\"\r\n (change)=\"onCallNotesChange($event)\" cols=\"20\" rows=\"2\" title=\"\"></textarea>\r\n </div>\r\n <div class=\"notesButtonBorder\">\r\n <div class=\"commentsButtonDiv\">\r\n <div class=\"quickCommentsDiv\">\r\n <input *ngFor=\"let quickComment of activity.quickCommentList ; let i = index;\" class=\"quickNotesBotton\" type=\"button\"\r\n value=\"{{i+1}}\" (click)=\"loadQuickComment(i)\" title=\"{{quickComment}}\">\r\n </div>\r\n <div class=\"submitDiv\">\r\n <input class=\"submitButton\" type=\"button\" value=\"Submit\" (click)=\"activitySave(false)\">\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\" title=\"Expand\">\r\n </div>\r\n","export interface IChatMessage {\r\n username?: string;\r\n text: string;\r\n /**\r\n * What type of chat message. Defaults to OTHER_PERSON\r\n */\r\n type?: IChatMessageType;\r\n timestamp?: string;\r\n userIcon?: URL;\r\n}\r\n\r\nexport enum IChatMessageType {\r\n AGENT = 'AGENT',\r\n OTHER_PERSON = 'OTHER_PERSON',\r\n INFORMATION = 'INFORMATION'\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-chat-message',\r\n templateUrl: './chat-message.component.html',\r\n styleUrls: ['./chat-message.component.scss']\r\n})\r\nexport class ChatMessageComponent implements OnInit {\r\n @Input() message: string;\r\n @Input() alignRight = false;\r\n @Input() username: string;\r\n @Input() color: string;\r\n @Input() timestamp: string;\r\n @Input() image: string | URL;\r\n @Input() fallbackImage: string | URL;\r\n @Output() focusOn = new EventEmitter<any>();\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n this.focusOn.emit(true);\r\n }\r\n\r\n\r\n}\r\n","<div [class]=\"alignRight? 'message right-message' : 'message left-message'\">\r\n <div class=\"message-header\">\r\n <img *ngIf=\"image\" class=\"image\" [src]=\"image\" (error)=\"image = fallbackImage\" [style.border-color]=\"color\" />\r\n <span *ngIf=\"username\" class=\"username\">{{username}}</span>\r\n </div>\r\n\r\n <div class=\"message-body-container\">\r\n <div>\r\n <div class=\"message-body\" [style.background-color]=\"color\" [style.border-color]=\"color\">\r\n <span [innerHTML]=\"message\"></span>\r\n </div>\r\n </div>\r\n </div>\r\n <span *ngIf=\"timestamp\" class=\"timestamp\">{{timestamp}}</span>\r\n</div>\r\n","import {\r\n AfterViewChecked,\r\n AfterViewInit,\r\n Component,\r\n DoCheck,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n IterableDiffer,\r\n IterableDiffers,\r\n OnInit,\r\n Output,\r\n Renderer2,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { IChatMessage, IChatMessageType } from '../../models/chat.message';\r\n\r\nimport { IChatSettings } from '../../models/chat.settings';\r\n\r\n@Component({\r\n selector: 'app-chat-box',\r\n templateUrl: './chat-box.component.html',\r\n styleUrls: ['./chat-box.component.scss'],\r\n})\r\nexport class ChatBoxComponent implements AfterViewChecked, AfterViewInit, OnInit, DoCheck {\r\n @Input() settings: IChatSettings;\r\n @Input() isTyping = false;\r\n @Input() messages: IChatMessage[];\r\n @Output() isAgentTyping = new EventEmitter<boolean>();\r\n @Output() newMessage = new EventEmitter<string>();\r\n @ViewChild('MessagesContainer', { static: true }) messagesContainer: ElementRef;\r\n @ViewChild('autofocus', { static: false }) autofocus: ElementRef;\r\n\r\n _isAgentTyping = false;\r\n newMessageText = '';\r\n usernameToColor: { [username: string]: string } = {};\r\n colors = [\r\n '#c2c4c4',\r\n '#ffab91',\r\n '#f48fb1',\r\n '#29b6f6',\r\n '#e1bee7',\r\n '#9ccc65',\r\n '#ffc107',\r\n '#26c6da',\r\n '#cddc39',\r\n ];\r\n colorsIndex = 0;\r\n agentColor = '#2db0e0';\r\n sendButtonText: string;\r\n private lastCount = -1;\r\n private scrollAtBottom = true;\r\n private iterableDiffer: IterableDiffer<any>;\r\n\r\n constructor(private renderer: Renderer2, private iterableDiffers: IterableDiffers) {\r\n this.iterableDiffer = this.iterableDiffers.find([]).create(null);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.sendButtonText = this.settings?.sendMessageText ?? 'Send';\r\n\r\n this.renderer.selectRootElement('#autofocus').focus();\r\n }\r\n\r\n ngDoCheck() {\r\n const changes = this.iterableDiffer.diff(this.messages);\r\n if (changes) {\r\n // Before adding a new message, check if the scroll is at the bottom\r\n this.checkIfScrollAtBottom();\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.renderer.selectRootElement('#autofocus').focus();\r\n }\r\n\r\n ngAfterViewChecked() {\r\n if (this.lastCount !== this.messages.length) {\r\n this.lastCount = this.messages.length;\r\n if (this.scrollAtBottom) {\r\n this.scrollToBottom();\r\n }\r\n }\r\n }\r\n\r\n getColor(message: IChatMessage) {\r\n if (message.type && message.type === IChatMessageType.AGENT) {\r\n return this.agentColor;\r\n } else if (message.username) {\r\n if (!this.usernameToColor[message.username]) {\r\n this.usernameToColor[message.username] = this.colors[this.colorsIndex];\r\n this.colorsIndex = (this.colorsIndex + 1) % this.colors.length;\r\n }\r\n return this.usernameToColor[message.username];\r\n } else {\r\n return this.colors[0];\r\n }\r\n }\r\n\r\n shouldAlignRight(message: IChatMessage) {\r\n return message.type && message.type === IChatMessageType.AGENT;\r\n }\r\n\r\n sendNewMessage(event) {\r\n event.preventDefault();\r\n if (this.newMessageText) {\r\n this.newMessage.emit(this.newMessageText);\r\n this.newMessageText = '';\r\n }\r\n this.renderer.selectRootElement('#autofocus').focus();\r\n }\r\n\r\n setOnFocus(event) {\r\n this.renderer.selectRootElement('#autofocus').focus();\r\n }\r\n\r\n onNewMessageFocus(event: boolean) {\r\n const isTyping = event && this.newMessageText.length > 0;\r\n if (isTyping !== this._isAgentTyping) {\r\n this._isAgentTyping = isTyping;\r\n this.isAgentTyping.emit(isTyping);\r\n }\r\n }\r\n\r\n onKeyup() {\r\n const isTyping = this.newMessageText.length > 0;\r\n if (isTyping !== this._isAgentTyping) {\r\n this._isAgentTyping = isTyping;\r\n this.isAgentTyping.emit(isTyping);\r\n }\r\n }\r\n\r\n scrollToBottom() {\r\n try {\r\n this.messagesContainer.nativeElement.scrollTop = this.messagesContainer.nativeElement.scrollHeight;\r\n } catch (e) { }\r\n }\r\n\r\n checkIfScrollAtBottom() {\r\n try {\r\n const element = this.messagesContainer.nativeElement;\r\n const scrollLocation = element.scrollTop + element.clientHeight;\r\n const scrollHeight = element.scrollHeight - 5; // There is a 5px margin of error for scroll at bottom\r\n if (scrollLocation >= scrollHeight) {\r\n this.scrollAtBottom = true;\r\n } else {\r\n this.scrollAtBottom = false;\r\n }\r\n } catch (e) {\r\n console.error('error checking if scroll at bottom', e);\r\n }\r\n }\r\n}\r\n","<div class=\"chat-box\">\r\n <div #MessagesContainer id=\"msgScroll\" class=\"messages\" [style.max-height]='settings.maxHeight'>\r\n <ng-container *ngFor=\"let message of messages\">\r\n <app-chat-message class=\"chat-line\" [alignRight]=\"shouldAlignRight(message)\" [message]=\"message.text\" [username]=\"message.username\" (focusOn)=\"setOnFocus($event)\"\r\n [timestamp]=\"message.timestamp\" [image]=\"message.userIcon\" [fallbackImage]=\"settings.fallbackUserIcon\" [color]=\"getColor(message)\">\r\n </app-chat-message>\r\n </ng-container>\r\n\r\n <div *ngIf=\"isTyping\" class=\"typing-indicator\">\r\n Someone is typing\r\n <span></span>\r\n <span></span>\r\n <span></span>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n <div *ngIf=\"!settings.hideSendMessage\" class=\"message-box\">\r\n <textarea id=\"autofocus\" tabindex=\"1\" #NewMessageText [(ngModel)]=\"newMessageText\" type=\"text\" class=\"message-input scroll\" placeholder=\"Type a message...\"\r\n (focus)=\"onNewMessageFocus(true)\" (keydown.enter)=\"sendNewMessage($event)\" (keyup)='onKeyup()' [disabled]=\"settings.disableSendMessage\" ></textarea>\r\n <button type=\"submit\" class=\"message-submit\" (click)=\"sendNewMessage($event)\" [disabled]=\"settings.disableSendMessage\">{{ sendButtonText }}</button>\r\n </div>\r\n</div>\r\n","import { Component, Input, EventEmitter, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'amc-create',\r\n templateUrl: './create.component.html',\r\n styleUrls: ['./create.component.css']\r\n})\r\nexport class CreateComponent {\r\n @Input() Entities: any;\r\n @Output() CreateNewEntity: EventEmitter<string> = new EventEmitter<string>();\r\n isCreateMaximized: boolean;\r\n\r\n constructor() {\r\n this.isCreateMaximized = true;\r\n }\r\n createNewEntity(type: string) {\r\n this.CreateNewEntity.emit(type);\r\n }\r\n\r\n getEntities() {\r\n return Object.keys(this.Entities);\r\n }\r\n\r\n getDisplay(entity) {\r\n return entity.substring(0, entity.indexOf('|'));\r\n }\r\n\r\n getImage(entity) {\r\n return entity.substring(entity.indexOf('|') + 1);\r\n }\r\n}\r\n","<div *ngIf=\"isCreateMaximized\" class=\"callDisplay\">\r\n <div class=\"editor callHeader\">\r\n <label class=\"headerLabel\">\r\n <b>Create New</b>\r\n </label>\r\n <img class=\"ViewResizeImage\" src=\"/assets/images/section_collapse.png\" (click)=\"isCreateMaximized = false\"\r\n title=\"Collapse\" />\r\n </div>\r\n <div class=\"callBody\">\r\n <div *ngIf=\"Entities\" class=\"container\">\r\n <div *ngFor=\"let entity of getEntities()\" class=\"createNewLabel\" (click)=\"createNewEntity(entity)\"\r\n title=\"{{ getDisplay(Entities[entity]) }}\">\r\n <img class=\"createEntityImages\" src=\"{{ getImage(Entities[entity]) }}\" />\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<div *ngIf=\"!isCreateMaximized\" class=\"callDisplay\">\r\n <div class=\"editor callHeader\">\r\n <label class=\"headerLabel\">\r\n <b>Create New</b>\r\n </label>\r\n <img class=\"ViewResizeImage\" src=\"/assets/images/section_expand.png\" (click)=\"isCreateMaximized = true\"\r\n title=\"Expand\" />\r\n </div>\r\n</div>\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { IActivityDetails } from '../../models/IActivityDetails';\r\nimport { IActivity } from '../../models/IActivity';\r\nimport { Subject } from 'rxjs';\r\nimport { debounceTime } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'amc-current-activity',\r\n templateUrl: './current-activity.component.html',\r\n styleUrls: ['./current-activity.component.css']\r\n})\r\nexport class CurrentActivityComponent implements OnInit {\r\n @Input() ActivityDetails: IActivity;\r\n @Input() quickCommentList: string[];\r\n @Input() isAutoSave: boolean;\r\n @Input() enableDiscard: boolean;\r\n @Input() autoSaveTimer: number;\r\n @Input() quickCommentOptionRequiredCadArray: any;\r\n @Input() WhoObjectList: IActivityDetails[];\r\n @Input() WhatObjectList: IActivityDetails[];\r\n @Input() scenarioToCADMap: {};\r\n @Output() EventEmitter: EventEmitter<{\r\n eventName: string;\r\n newValue?: IActivity;\r\n }>;\r\n\r\n isActivityMaximized: boolean;\r\n private eventList: Set<String>;\r\n private debouncer: Subject<void>;\r\n\r\n constructor() {\r\n this.isActivityMaximized = true;\r\n\r\n this.EventEmitter = new EventEmitter<{\r\n eventName: string;\r\n newValue?: IActivity;\r\n }>();\r\n\r\n this.debouncer = new Subject();\r\n this.eventList = new Set();\r\n }\r\n\r\n async ngOnInit() {\r\n this.debouncer.pipe(debounceTime(500)).subscribe(() => {\r\n const newEvent = {\r\n eventName: Array.from(this.eventList).join('|'),\r\n newValue: this.ActivityDetails\r\n };\r\n this.EventEmitter.emit(newEvent);\r\n this.eventList.clear();\r\n });\r\n }\r\n\r\n submitActivity() {\r\n try {\r\n this.ActivityDetails.IsProcessing = true;\r\n this.EventEmitter.emit({\r\n eventName: 'SubmitActivity',\r\n newValue: this.ActivityDetails\r\n });\r\n } catch (error) {}\r\n }\r\n\r\n triggerDiscardActivity() {\r\n try {\r\n this.EventEmitter.emit({\r\n eventName: 'TriggerDiscardActivity',\r\n newValue: this.ActivityDetails\r\n });\r\n } catch (error) {}\r\n }\r\n\r\n onNameChange(event: any) {\r\n try {\r\n this.ActivityDetails.WhoObject = this.WhoObjectList.find((obj) => obj.objectId === event);\r\n this.EventEmitter.emit({\r\n eventName: 'ActivityWhoObjectChanged',\r\n newValue: this.ActivityDetails\r\n });\r\n } catch (error) {}\r\n }\r\n\r\n onRelatedToChange(event: any) {\r\n try {\r\n this.ActivityDetails.WhatObject = this.WhatObjectList.find((obj) => obj.objectId === event);\r\n this.EventEmitter.emit({\r\n eventName: 'ActivityWhatObjectChanged',\r\n newValue: this.ActivityDetails\r\n });\r\n } catch (error) {}\r\n }\r\n\r\n onSubjectChange() {\r\n try {\r\n this.eventList.add('ActivitySubjectChanged');\r\n this.debouncer.next();\r\n } catch (error) {}\r\n }\r\n\r\n onSubjectKeyUp() {\r\n try {\r\n this.eventList.add('ActivitySubjectChanged');\r\n this.debouncer.next();\r\n } catch (error) {}\r\n }\r\n\r\n onCallNotesChange() {\r\n try {\r\n this.eventList.add('ActivityCallNoteChanged');\r\n this.debouncer.next();\r\n } catch (error) {}\r\n }\r\n\r\n onCallNotesKeyUp() {\r\n try{\r\n this.eventList.add('ActivityCallNoteChanged');\r\n this.debouncer.next();\r\n } catch (error) {}\r\n }\r\n\r\n addQuickCommentToDescription(comment: string) {\r\n try {\r\n let descriptionToSet = comment;\r\n if (this.quickCommentOptionRequiredCadArray[comment]) {\r\n let cadFields = {};\r\n if (this.ActivityDetails) {\r\n cadFields = this.scenarioToCADMap[this.ActivityDetails.ScenarioId];\r\n }\r\n for (\r\n let i = 0;\r\n i < this.quickCommentOptionRequiredCadArray[comment].length;\r\n i++\r\n ) {\r\n let keyToCheckIfCADExists =\r\n this.quickCommentOptionRequiredCadArray[comment][i];\r\n const stringToBeReplaced =\r\n this.quickCommentOptionRequiredCadArray[comment][i];\r\n keyToCheckIfCADExists = keyToCheckIfCADExists.replace('{{', '');\r\n keyToCheckIfCADExists = keyToCheckIfCADExists.replace('}}', '');\r\n if (cadFields[keyToCheckIfCADExists]) {\r\n descriptionToSet = descriptionToSet.replace(\r\n stringToBeReplaced,\r\n cadFields[keyToCheckIfCADExists].Value\r\n );\r\n }\r\n }\r\n }\r\n if (this.ActivityDetails.Description) {\r\n this.ActivityDetails.Description += '\\n';\r\n }\r\n this.ActivityDetails.Description += descriptionToSet;\r\n this.eventList.add('ActivityCallNoteChanged');\r\n this.debouncer.next();\r\n } catch (error) {}\r\n }\r\n\r\n protected parseWhoObject(whoObject: IActivityDetails): string {\r\n try {\r\n return whoObject.displayName + ': ' + whoObject.objectName;\r\n } catch (error) {}\r\n }\r\n\r\n protected parseWhatObject(whatObject: IActivityDetails): string {\r\n try {\r\n return whatObject.displayName + ': ' + whatObject.objectName;\r\n } catch (error) {}\r\n }\r\n}\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_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","import { IDisposition, IDispositionResult } from './../../models/disposition.interface';\r\nimport { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'amc-disposition',\r\n templateUrl: './disposition.component.html',\r\n styleUrls: ['./disposition.component.css']\r\n})\r\nexport class DispositionComponent implements OnInit {\r\n @Input() disposition: IDisposition;\r\n\r\n @Output() dispositionEmitter = new EventEmitter<IDispositionResult>();\r\n\r\n selectedDispositionValue = '';\r\n dispositionName = '';\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n for (const metadata of this.disposition.dispositionMetadata) {\r\n if (metadata.key === 'callId') {\r\n this.dispositionName = `disposition_${metadata.value}`;\r\n\r\n break;\r\n }\r\n }\r\n\r\n if (this.disposition.checkedDisposition) {\r\n this.selectedDispositionValue = this.disposition.checkedDisposition;\r\n }\r\n }\r\n\r\n submitDisposition() {\r\n const selectedDisposition: IDispositionResult = {\r\n dispositionId: this.selectedDispositionValue,\r\n dispositionName: this.disposition.disposition.get(this.selectedDispositionValue),\r\n dispositionMetadata: this.disposition.dispositionMetadata\r\n };\r\n\r\n this.dispositionEmitter.emit(selectedDisposition);\r\n }\r\n\r\n selectAndSubmitDisposition(event: KeyboardEvent, dispositionKey: string) {\r\n if (event.code === 'Enter') {\r\n this.selectedDispositionValue = dispositionKey;\r\n this.submitDisposition();\r\n }\r\n }\r\n}\r\n","<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","import { Component, Input, OnInit, OnDestroy } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'amc-duration',\r\n templateUrl: './duration.component.html',\r\n styleUrls: ['./duration.component.scss']\r\n})\r\nexport class DurationComponent implements OnInit, OnDestroy {\r\n @Input() statusText: string;\r\n @Input() callId: string;\r\n @Input() startTime: number;\r\n\r\n displayTime: string;\r\n labelledByText = '';\r\n\r\n private _timerId?: number;\r\n\r\n constructor() {\r\n this.displayTime = '00:00/00:00';\r\n }\r\n\r\n ngOnInit() {\r\n if (this.statusText && this.callId) {\r\n this.labelledByText = `${this.statusText} ${this.callId}`;\r\n } else if (this.statusText) {\r\n this.labelledByText = this.statusText;\r\n } else if (this.callId) {\r\n this.labelledByText = this.callId;\r\n }\r\n\r\n this.startCallCounter();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n // clear the timer.\r\n if (this._timerId != null) {\r\n clearInterval(this._timerId);\r\n this._timerId = null;\r\n }\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n private startCallCounter(): void {\r\n if (this._timerId == null) {\r\n this._timerId = window.setInterval(() => {\r\n const callStartTime: number = this.startTime;\r\n const currentTime: number = new Date().getTime() / 1000;\r\n const secondsPassed: number = Math.floor((currentTime) - (callStartTime / 1000));\r\n this.displayTime = Math.floor(secondsPassed / 60) + ':' + ('0' + (secondsPassed % 60)).slice(-2);\r\n }, 1000);\r\n }\r\n }\r\n}\r\n","<div class=\"holdCallDurationDiv\">\r\n <input\r\n readonly\r\n class=\"block durationInput\"\r\n name=\"CallDuration\"\r\n type=\"text\"\r\n tabindex=\"-1\"\r\n title=\"Call Duration\"\r\n [value]=\"displayTime\"\r\n [attr.aria-labelledby]=\"labelledByText || null\">\r\n</div>\r\n","export function secondsToHms(seconds_in: number): string {\r\n seconds_in = Number(seconds_in);\r\n const h = Math.floor(seconds_in / 3600);\r\n const m = Math.floor(seconds_in % 3600 / 60);\r\n const s = Math.floor(seconds_in % 3600 % 60);\r\n\r\n const hDisplay = h > 0 ? h.toString() + ':' : '';\r\n const mDisplay = m > 0 ? ('0' + m.toString()).slice(-2) + ':' : '00:';\r\n const sDisplay = s > 0 ? ('0' + s.toString()).slice(-2) : '00';\r\n return hDisplay + mDisplay + sDisplay;\r\n}\r\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { ICallDuration, IHoldCounterData } from '../../models/uilibrary.model';\r\n\r\nimport { secondsToHms } from '../../Helpers';\r\n\r\n@Component({\r\n selector: 'amc-holdTimer', // eslint-disable-line\r\n templateUrl: './hold-timer.component.html',\r\n styleUrls: ['./hold-timer.component.scss']\r\n})\r\nexport class HoldTimerComponent implements OnInit, OnDestroy {\r\n @Input() holdCounterData: IHoldCounterData;\r\n @Input() statusText: string;\r\n @Input() callId: string;\r\n\r\n displayTime: string;\r\n labelledByText = '';\r\n\r\n private _timerId?: number;\r\n constructor() {\r\n this.displayTime = '00:00/00:00';\r\n }\r\n\r\n ngOnInit() {\r\n if (this.statusText && this.callId) {\r\n this.labelledByText = `${this.statusText} ${this.callId}`;\r\n } else if (this.statusText) {\r\n this.labelledByText = this.statusText;\r\n } else if (this.callId) {\r\n this.labelledByText = this.callId;\r\n }\r\n\r\n this.startCallCounter();\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n ngOnDestroy(): void {\r\n // clear the timer.\r\n if (this._timerId != null) {\r\n clearInterval(this._timerId);\r\n this._timerId = null;\r\n }\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n private startCallCounter(): void {\r\n const pastTimeInSeconds = this.CaculatePastHoldDuration();\r\n if (this._timerId == null) {\r\n this._timerId = window.setInterval(() => {\r\n const currentTime: number = new Date().getTime() / 1000;\r\n const secondsPassedCurrentCall: number = Math.floor((currentTime) - (this.holdCounterData.currentHoldStartTime / 1000));\r\n this.displayTime = secondsToHms(secondsPassedCurrentCall) +\r\n '/' + secondsToHms(pastTimeInSeconds + secondsPassedCurrentCall);\r\n }, 1000);\r\n }\r\n }\r\n\r\n private CaculatePastHoldDuration(): number {\r\n let pastTimeInSeconds = 0;\r\n if (this.holdCounterData.pastCallDurations) {\r\n this.holdCounterData.pastCallDurations.forEach((holdTimerIterator: ICallDuration) => {\r\n pastTimeInSeconds += (holdTimerIterator.endTime - holdTimerIterator.startTime) / 1000;\r\n });\r\n }\r\n return pastTimeInSeconds;\r\n\r\n }\r\n}\r\n","<div class=\"holdCallDurationDiv\">\r\n <input\r\n readonly\r\n class=\"holdCallDurationTimer\"\r\n name=\"HoldCallDuration/TotalHoldCallDuration\"\r\n type=\"text\"\r\n tabindex=\"-1\"\r\n title=\"Hold Duration\"\r\n [attr.aria-labelledby]=\"labelledByText || null\"\r\n [value]=\"displayTime\">\r\n</div>\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { IOperation } from '../../models/uilibrary.model';\r\n\r\n/**\r\n * @ignore\r\n */\r\n@Component({\r\n selector: 'amc-operation',\r\n templateUrl: './operation.component.html',\r\n styleUrls: ['./operation.component.scss']\r\n})\r\nexport class OperationComponent implements OnInit {\r\n @Input() statusText: string;\r\n @Input() callId: string;\r\n @Input() callType: string;\r\n @Input() operations: IOperation[];\r\n\r\n labelledByText = '';\r\n describedByText = '';\r\n\r\n /**\r\n * @ignore\r\n */\r\n constructor() {\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n ngOnInit() {\r\n if (this.statusText && this.callType) {\r\n this.describedByText = `${this.statusText} ${this.callType}`;\r\n } else if (this.statusText) {\r\n this.describedByText = this.statusText;\r\n } else if (this.callType) {\r\n this.describedByText = this.callType;\r\n }\r\n\r\n if (this.callId) {\r\n this.labelledByText = this.callId;\r\n }\r\n }\r\n\r\n operationKeypress(event: KeyboardEvent, operation: IOperation) {\r\n if (event.code === 'Enter') {\r\n operation.handler(operation.operationName, operation.operationMetadata);\r\n }\r\n }\r\n}\r\n","<div class=\"callOptions\">\r\n <img\r\n class=\"AnswerCallImages\"\r\n tabindex=\"0\"\r\n role=\"button\"\r\n attr.aria-label=\"{{ operation.title }}\"\r\n *ngFor=\"let operation of operations\"\r\n [title]=\"operation.title\"\r\n [src]=\"operation.icon\"\r\n [attr.accesskey]=\"operation.accesskey || null\"\r\n [attr.aria-labelledby]=\"labelledByText || null\"\r\n [attr.aria-describedby]=\"describedByText || null\"\r\n (click)=\"operation.handler(operation.operationName, operation.operationMetadata)\"\r\n (keypress)=\"operationKeypress($event, operation)\"/>\r\n</div>\r\n","import { IChatSettings } from './chat.settings';\r\nimport { IChatMessage } from './chat.message';\r\n\r\nexport * from './chat.message';\r\nexport * from './chat.settings';\r\n\r\n/**\r\n * enum for Value types of PROPERTY.\r\n */\r\nexport enum ValueType {\r\n STRING,\r\n COUNTER\r\n}\r\n\r\nexport interface ILoginData {\r\n header: string;\r\n fields: ILoginField[];\r\n}\r\n\r\nexport interface ILoginField {\r\n name: string;\r\n type: string;\r\n value?: string;\r\n placeholder?: string;\r\n isRequired?: boolean;\r\n invalidMessage: string;\r\n isInvalid?: boolean;\r\n}\r\n\r\n/**\r\n * It is collection of Interaction which need to be displayed on scenario component.\r\n */\r\nexport interface IScenario {\r\n interactions: IInteraction[];\r\n}\r\n\r\nexport interface IInteraction {\r\n /**\r\n * Unique id for the interaction.\r\n * Note: this interactionId is also used to provide id for the div element.\r\n */\r\n interactionId: string;\r\n properties?: Property[];\r\n associatedData?: Property[];\r\n startTime: number;\r\n displayCallTimer: boolean;\r\n /**\r\n * parties is supposed to contain data about all the participants in call except agent himself.\r\n */\r\n parties?: IParty[];\r\n /**\r\n * Operations/buttons which needs to be displayed in interaction and its handlers.\r\n */\r\n operations?: IOperation[];\r\n\r\n /**\r\n * It contains URLs for minimize, maximize, interaction specific icon urls for interaction.\r\n * And header number which needs to be displayed at top.\r\n */\r\n UIHeadersData: IInteractionUIHeaders;\r\n\r\n /**\r\n * Should contain identifying information about the main party in the interaction.\r\n */\r\n subheaderData: IPartyHeader;\r\n\r\n /**\r\n * This enables and configures the chat UI\r\n */\r\n chat?: {\r\n settings: IChatSettings;\r\n messages: IChatMessage[];\r\n isCustomerTyping?: boolean;\r\n };\r\n}\r\n\r\nexport interface IActivity {\r\n interactionId: string;\r\n WhoObject: IActivityDetails;\r\n WhatObject: IActivityDetails;\r\n whoList: IActivityDetails[];\r\n whatList: IActivityDetails[];\r\n CallType: string;\r\n CallDurationInSeconds: string;\r\n Subject: string;\r\n SubjectFieldName: string;\r\n NameFieldName: string;\r\n RelatedToFieldName: string;\r\n Description: string;\r\n Status: string;\r\n ActivityDate: string;\r\n TimeStamp: Date;\r\n ActivityId: string;\r\n quickCommentList: string[];\r\n}\r\n\r\nexport interface IActivityDetails {\r\n objectType: string;\r\n displayName: string;\r\n objectName: string;\r\n objectId: string;\r\n url: string;\r\n}\r\n\r\n/**\r\n * This contains the main identifying information about the interaction.\r\n */\r\nexport interface IPartyHeader {\r\n /**\r\n * Image that identifies the type of interaction\r\n * or the type of the identifying information(ex: phone icon for phone number)\r\n */\r\n image?: URL;\r\n /**\r\n * The tooltip to be displayed when the image is hovered over\r\n */\r\n tooltip?: string;\r\n /**\r\n * The value to be displayed\r\n */\r\n value: string;\r\n}\r\n\r\n/**\r\n * It contains URLs for minimize, maximize, interaction specific icon urls for interaction.\r\n * And header number which needs to be displayed at top.\r\n */\r\nexport interface IInteractionUIHeaders {\r\n /**\r\n * Minimize icon url.\r\n */\r\n minimizeUrl: URL;\r\n\r\n /**\r\n * Maximize Icon url.\r\n */\r\n maximizeUrl: URL;\r\n\r\n /**\r\n * This is the URL for the status image.\r\n * @memberof IInteractionUIHeaders\r\n */\r\n statusUrl: URL;\r\n\r\n /**\r\n * This is the handler for focus(Triggered on click of status).\r\n * @memberof IInteractionUIHeaders\r\n */\r\n focusHandler?: IFocus;\r\n\r\n /**\r\n * This is the text which is going to be displayed for status of the call.\r\n *\r\n * @memberof IInteractionUIHeaders\r\n */\r\n statusText: string;\r\n\r\n /**\r\n *This member will contain the text related to the direction of the call. E.g Inbound, Outbound etc.\r\n * @memberof IInteractionUIHeaders\r\n */\r\n directionText: string;\r\n\r\n /**\r\n *This data will be used to display hold counter whihc will be the combination of the current hold time and complete hold time.\r\n * @memberof IInteractionUIHeaders\r\n */\r\n holdCounterData?: IHoldCounterData;\r\n\r\n /**\r\n *If this value is set to true then hold counter is displayed based on the holdCounterData.\r\n * @memberof IInteractionUIHeaders\r\n */\r\n displayHoldCounter: boolean;\r\n}\r\nexport interface ICallDuration {\r\n startTime: number;\r\n endTime: number;\r\n}\r\nexport interface IHoldCounterData {\r\n pastCallDurations?: ICallDuration[];\r\n currentHoldStartTime: number;\r\n}\r\n\r\n/**\r\n * It contains Operation Icon URL and its hadlers which need to be displayed in Interaction.\r\n */\r\nexport interface IFocus {\r\n /**\r\n * metadata related to operation.\r\n */\r\n operationMetadata?: IMetadata[];\r\n /**\r\n * name of the operation.\r\n */\r\n operationName: string;\r\n /**\r\n * Handler which needs to be invoked when someone clicks on the operation icon.\r\n */\r\n handler: (operationName: string, operationMetadata?: IMetadata[]) => void;\r\n}\r\n\r\n/**\r\n * It contains Operation Icon URL and its hadlers which need to be displayed in Interaction.\r\n */\r\nexport interface IOperation {\r\n /**\r\n * metadata related to operation.\r\n */\r\n operationMetadata?: IMetadata[];\r\n /**\r\n * name of the operation.\r\n */\r\n operationName: string;\r\n /**\r\n * URL for the icon of operations.\r\n */\r\n icon: URL;\r\n /**\r\n * Title which needs to be doisplayed when someone hovers over the icon.\r\n */\r\n title: string;\r\n /**\r\n * Handler which needs to be invoked when someone clicks on the operation icon.\r\n */\r\n handler: (operationName: string, operationMetadata?: IMetadata[]) => void;\r\n /**\r\n * Browser accesskey to jump instantly to this operation Should conform to AMC norms and consist of a single printable character.\r\n */\r\n accesskey?: string;\r\n}\r\n\r\n/**\r\n * This contains properties and operations to be displayed for conference member.\r\n */\r\nexport interface IParty {\r\n header: IPartyHeader;\r\n properties: Property[];\r\n operations: IOperation[];\r\n}\r\n\r\n/**\r\n * key value pairs which can be used amongst other interfaces/classes to store metadata of those entities.\r\n */\r\n\r\nexport interface IMetadata {\r\n key: string;\r\n value: string;\r\n}\r\n\r\n/**\r\n * This interface contains key value pairs, some custom operation which generates display key and display value.\r\n * Also it includes custom operation handler for click event on properties.\r\n */\r\nexport interface IProperty {\r\n /**\r\n * KEY value to be displayed on component.\r\n */\r\n displayKey?: string;\r\n\r\n /**\r\n * VALUE to be displayed on component.\r\n */\r\n displayValue?: any;\r\n displayValueType: ValueType;\r\n propertyMetadata?: IMetadata[];\r\n\r\n /**\r\n * Click event handler for property.\r\n */\r\n customOperations?: IEventHandler;\r\n /**\r\n * This flag decides if PROPERTY will be displayed on component or not.\r\n */\r\n visible: boolean;\r\n}\r\n\r\n/**\r\n * A helper method to make instances of [IProperty]\r\n */\r\nexport class Property implements IProperty {\r\n /**\r\n * KEY value to be displayed on component.\r\n */\r\n displayKey?: string;\r\n\r\n /**\r\n * VALUE to be displayed on component.\r\n */\r\n displayValue?: any;\r\n displayValueType: ValueType;\r\n propertyMetadata?: IMetadata[];\r\n\r\n /**\r\n * Click event handler for property.\r\n */\r\n customOperations?: IEventHandler;\r\n /**\r\n * This flag decides if PROPERTY will be displayed on component or not.\r\n */\r\n visible: boolean;\r\n private key: string;\r\n private value: any;\r\n\r\n /**\r\n *\r\n * @param key\r\n * @param value : if value type is COUNTER then value should be start time in MilliSeconds.\r\n * @param visible\r\n * @param valueType\r\n * @param customOperation\r\n */\r\n constructor(\r\n key: string,\r\n value: any,\r\n visible?: boolean,\r\n valueType?: ValueType,\r\n customOperation?: IEventHandler\r\n ) {\r\n this.key = key;\r\n this.value = value;\r\n this.visible = visible || true;\r\n this.displayValueType = valueType || ValueType.STRING;\r\n this.customOperations = customOperation;\r\n this.displayOperation();\r\n }\r\n\r\n /**\r\n * Operation responsible for generating displayKey and dispkayValur from key and value.\r\n */\r\n displayOperation: () => void = () => {\r\n this.displayKey = this.key;\r\n this.displayValue = this.value;\r\n };\r\n\r\n}\r\n\r\n/**\r\n * Interface which contains eventName and handler associated with it.\r\n */\r\nexport interface IEventHandler {\r\n eventName: string;\r\n handler: (eventName: string, eventMetadata?: IMetadata[]) => void;\r\n eventMetadata?: IMetadata[];\r\n}\r\n","import { Component, OnInit, Input, OnDestroy } from '@angular/core';\r\nimport { ValueType, IProperty } from '../../models/uilibrary.model';\r\nimport { secondsToHms } from '../../Helpers';\r\n/**\r\n * @ignore\r\n */\r\n@Component({\r\n selector: 'amc-property',\r\n templateUrl: './property.component.html',\r\n styleUrls: ['./property.component.scss']\r\n})\r\nexport class PropertyComponent implements OnInit, OnDestroy {\r\n\r\n @Input() statusText: string;\r\n @Input() callId: string;\r\n @Input() callType: string;\r\n @Input() property: IProperty;\r\n\r\n labelledByText = '';\r\n title = '';\r\n\r\n /**\r\n * @ignore\r\n */\r\n processedDisplayValue: string;\r\n\r\n /**\r\n * @ignore\r\n */\r\n private _timerId?: number;\r\n\r\n /**\r\n * @ignore\r\n */\r\n constructor() {\r\n\r\n this._timerId = null;\r\n this.processedDisplayValue = '';\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n ngOnInit() {\r\n if (this.statusText && this.callType) {\r\n this.labelledByText = `${this.statusText} ${this.callType}`;\r\n } else if (this.statusText) {\r\n this.labelledByText = this.statusText;\r\n } else if (this.callType) {\r\n this.labelledByText = this.callType;\r\n }\r\n\r\n if (this.callType && this.callId) {\r\n this.title = `${this.callType} ${this.callId}`;\r\n } else if (this.callType) {\r\n this.title = this.callType;\r\n } else if (this.callId) {\r\n this.title = this.callId;\r\n }\r\n\r\n this.initValues();\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n ngOnDestroy(): void {\r\n if (this.property.displayValueType === ValueType.COUNTER) {\r\n // clear the timer.\r\n if (this._timerId != null) {\r\n clearInterval(this._timerId);\r\n this._timerId = null;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n initValues(): void {\r\n if (this.property.displayValueType === ValueType.COUNTER) {\r\n this.startCallCounter();\r\n } else {\r\n this.processedDisplayValue = this.property.displayValue;\r\n }\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n private startCallCounter(): void {\r\n if (this._timerId == null) {\r\n this._timerId = window.setInterval(() => {\r\n const callStartTime: number = this.property.displayValue;\r\n const currentTime: number = new Date().getTime() / 1000;\r\n const secondsPassed: number = Math.floor((currentTime) - (callStartTime / 1000));\r\n this.processedDisplayValue = secondsToHms(secondsPassed);\r\n }, 1000);\r\n }\r\n }\r\n}\r\n","<input\r\n readonly\r\n *ngIf=\"!property.customOperations\"\r\n class=\"displayData\"\r\n tabindex=\"0\"\r\n type=\"text\"\r\n [name]=\"processedDisplayValue\"\r\n [title]=\"title || null\"\r\n [attr.aria-labelledby]=\"labelledByText || null\"\r\n [value]=\"processedDisplayValue\"/>\r\n\r\n <input\r\n readonly\r\n *ngIf=\"property.customOperations\"\r\n class=\"cursor displayData\"\r\n type=\"text\"\r\n tabindex=\"0\"\r\n [name]=\"processedDisplayValue\"\r\n [title]=\"title || null\"\r\n [value]=\"processedDisplayValue\"\r\n [attr.aria-labelledby]=\"labelledByText || null\"\r\n (click)=\"property.customOperations.handler(property.customOperations.eventName, property.customOperations.eventMetadata)\" />\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\n\r\nimport { IInteraction } from '../../models/uilibrary.model';\r\n\r\n/**\r\n * @ignore\r\n */\r\n@Component({\r\n selector: 'amc-interaction',\r\n templateUrl: './interaction.component.html',\r\n styleUrls: ['./interaction.component.scss']\r\n})\r\nexport class InteractionComponent implements OnInit {\r\n\r\n @Input() interaction: IInteraction;\r\n @Output() minimizedChanged: EventEmitter<boolean> = new EventEmitter();\r\n @Output() isAgentTyping = new EventEmitter<boolean>();\r\n @Output() newMessage = new EventEmitter<string>();\r\n /**\r\n * @ignore\r\n */\r\n minimized: boolean;\r\n\r\n /**\r\n * @ignore\r\n */\r\n constructor() {\r\n this._minimized = false;\r\n }\r\n\r\n get _minimized() {\r\n return this.minimized;\r\n }\r\n\r\n set _minimized(value) {\r\n this.minimized = value;\r\n this.minimizedChanged.emit(value);\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n ngOnInit() {\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n minimize(): void {\r\n this._minimized = true;\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n maximize(): void {\r\n this._minimized = false;\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n isConferenceCall(): boolean {\r\n if (this.interaction.parties && this.interaction.parties.length > 1) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n collapseKeypress(event: KeyboardEvent) {\r\n if (event.code === 'Enter') {\r\n this.minimize();\r\n }\r\n }\r\n\r\n expandKeypress(event: KeyboardEvent) {\r\n if (event.code === 'Enter') {\r\n this.maximize();\r\n }\r\n }\r\n\r\n clickEvent(id){\r\n document.getElementById(id).className = 'success';\r\n if (localStorage.getItem('focusedPanel') === null) {\r\n localStorage.setItem('focusedPanel', id);\r\n } else if (localStorage.getItem('focusedPanel') !== id){\r\n document.getElementById(localStorage.getItem('focusedPanel')).className = 'AnswerCallFocused';\r\n localStorage.setItem('focusedPanel', id);\r\n }\r\n }\r\n}\r\n","<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\" (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","import { ILoginData } from './../../models/uilibrary.model';\r\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { NgForm } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'amc-login',\r\n templateUrl: './login.component.html',\r\n styleUrls: ['./login.component.css']\r\n})\r\nexport class LoginComponent implements OnInit {\r\n @Input() loginData: ILoginData;\r\n @Output() loginDetailsProvided = new EventEmitter<ILoginData>();\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n if (!this.loginData.header) {\r\n this.loginData.header = 'Login';\r\n }\r\n\r\n for (const field of this.loginData.fields) {\r\n if (!field.isInvalid) {\r\n field.isInvalid = false;\r\n }\r\n }\r\n }\r\n\r\n onLogin(loginForm: NgForm) {\r\n for (const field of this.loginData.fields) {\r\n field.value = loginForm.value[field.name];\r\n }\r\n\r\n this.loginDetailsProvided.emit(this.loginData);\r\n }\r\n\r\n focusOutOfInput(loginForm: NgForm, field) {\r\n if (!loginForm.controls[field.name].valid) {\r\n field.isInvalid = true;\r\n }\r\n }\r\n}\r\n","<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","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n Output,\r\n OnInit,\r\n OnChanges,\r\n OnDestroy\r\n} from '@angular/core';\r\nimport { debounceTime } from 'rxjs/operators';\r\nimport { Subject } from 'rxjs';\r\nimport { IActivity } from '../../models/IActivity';\r\nimport { IActivityDetails } from '../../models/IActivityDetails';\r\n\r\n@Component({\r\n selector: 'amc-recent-activity',\r\n templateUrl: './recent-activity.component.html',\r\n styleUrls: ['./recent-activity.component.css']\r\n})\r\nexport class RecentActivityComponent implements OnInit, OnChanges, OnDestroy {\r\n @Input() ActivityDetails: IActivity;\r\n @Input() isInConsoleView: boolean;\r\n @Input() quickCommentList: string[];\r\n @Input() workingScenarioID: string;\r\n @Input() idx: number;\r\n @Input() last: boolean;\r\n @Input() WhoObjectList: IActivityDetails[];\r\n @Input() WhatObjectList: IActivityDetails[];\r\n\r\n @Output() EventEmitter: EventEmitter<{\r\n eventName: string;\r\n idx: number;\r\n newValue?: IActivity;\r\n }>;\r\n\r\n private debouncer: Subject<void>;\r\n private eventList: Set<String>;\r\n\r\n constructor() {\r\n this.EventEmitter = new EventEmitter<{\r\n eventName: string;\r\n idx: number;\r\n newValue?: IActivity;\r\n }>();\r\n\r\n this.debouncer = new Subject();\r\n this.eventList = new Set();\r\n }\r\n\r\n ngOnChanges(): void {\r\n }\r\n\r\n getIcon(scenario): string {\r\n switch (scenario) {\r\n case 'Telephony':\r\n return '../../assets/images/Phone_Number_Icon.png';\r\n case 'Email':\r\n return '../../assets/images/emailTab.png';\r\n default:\r\n return '../../assets/images/chat.png';\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n this.debouncer.pipe(debounceTime(500)).subscribe(() => {\r\n const newEvent = {\r\n eventName: Array.from(this.eventList).join('|'),\r\n idx: this.idx,\r\n newValue: this.ActivityDetails\r\n };\r\n this.EventEmitter.emit(newEvent);\r\n this.eventList.clear();\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {}\r\n\r\n expandAndCollapseRecentActivity(isExpand: boolean) {\r\n if (isExpand) {\r\n this.EventEmitter.emit({\r\n eventName: 'WorkingEvtivityChanged',\r\n idx: this.idx,\r\n newValue: this.ActivityDetails\r\n });\r\n } else {\r\n this.EventEmitter.emit({\r\n eventName: 'WorkingEvtivityChanged',\r\n idx: -1,\r\n newValue: this.ActivityDetails\r\n });\r\n }\r\n }\r\n\r\n openActivity() {\r\n this.EventEmitter.emit({\r\n eventName: 'OpenCallActivity',\r\n idx: this.idx,\r\n newValue: this.ActivityDetails\r\n });\r\n }\r\n\r\n onSubjectChange() {\r\n this.eventList.add('ActivitySubjectChanged');\r\n this.debouncer.next();\r\n }\r\n\r\n onSubjectKeyUp() {\r\n this.eventList.add('ActivitySubjectChanged');\r\n this.debouncer.next();\r\n }\r\n\r\n onWhoObjectChange(event: any) {\r\n this.ActivityDetails.WhoObject = this.WhoObjectList.find((obj) => obj.objectId === event);\r\n this.EventEmitter.emit({\r\n eventName: 'ActivityWhoObjectChanged',\r\n idx: this.idx,\r\n newValue: this.ActivityDetails\r\n });\r\n }\r\n\r\n onRelatedToChange(event: any) {\r\n this.ActivityDetails.WhatObject = this.WhatObjectList.find((obj) => obj.objectId === event);\r\n this.EventEmitter.emit({\r\n eventName: 'ActivityWhatObjectChanged',\r\n idx: this.idx,\r\n newValue: this.ActivityDetails\r\n });\r\n }\r\n\r\n onCallNotesChange() {\r\n this.eventList.add('ActivityCallNoteChanged');\r\n this.debouncer.next();\r\n }\r\n\r\n onCallNotesKeyUp() {\r\n this.eventList.add('ActivityCallNoteChanged');\r\n this.debouncer.next();\r\n }\r\n\r\n addQuickCommentToDescription(comment: string) {\r\n if (this.ActivityDetails.Description) {\r\n this.ActivityDetails.Description += '\\n';\r\n }\r\n this.ActivityDetails.Description += comment;\r\n this.eventList.add('ActivityCallNoteChanged');\r\n this.debouncer.next();\r\n }\r\n\r\n submitActivity() {\r\n this.ActivityDetails.IsProcessing = true;\r\n this.EventEmitter.emit({\r\n eventName: 'SubmitActivity',\r\n idx: this.idx,\r\n newValue: this.ActivityDetails\r\n });\r\n }\r\n}\r\n","<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","import {\r\n AfterViewChecked,\r\n Component,\r\n EventEmitter,\r\n Input,\r\n Output\r\n} from '@angular/core';\r\nimport { IScenario } from '../../models/uilibrary.model';\r\n\r\n@Component({\r\n selector: 'amc-scenario',\r\n templateUrl: './scenario.component.html',\r\n styleUrls: ['./scenario.component.scss']\r\n})\r\nexport class ScenarioComponent implements AfterViewChecked {\r\n @Input() scenario: IScenario;\r\n @Output() minimizedChanged = new EventEmitter();\r\n @Output() isAgentTyping = new EventEmitter<boolean>();\r\n @Output() newMessage = new EventEmitter<string>();\r\n @Output() afterViewChecked = new EventEmitter();\r\n\r\n constructor() {}\r\n\r\n ngAfterViewChecked() {\r\n this.afterViewChecked.emit();\r\n }\r\n\r\n onMinimizedChanged() {\r\n this.minimizedChanged.emit();\r\n }\r\n}\r\n","<ng-container *ngIf=\"scenario && scenario.interactions\">\r\n <amc-interaction *ngFor=\"let interaction of scenario.interactions\" [interaction]=\"interaction\"\r\n (minimizedChanged)=\"onMinimizedChanged()\" (isAgentTyping)=\"isAgentTyping.emit($event)\"\r\n (newMessage)=\"newMessage.emit($event)\">\r\n </amc-interaction>\r\n</ng-container>\r\n","import {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n OnChanges\r\n} from '@angular/core';\r\nimport * as api from '@amc-technology/davinci-api';\r\nimport { IActivity } from '../../models/IActivity';\r\n\r\n@Component({\r\n selector: 'amc-search-information',\r\n templateUrl: './search-information.component.html',\r\n styleUrls: ['./search-information.component.css']\r\n})\r\nexport class SearchInformationComponent implements OnChanges {\r\n @Input() ActivityDetails: IActivity;\r\n @Input() searchLayout: api.SearchLayouts;\r\n @Input() searchRecordList: Array<api.IRecordItem>;\r\n @Output() agentSelectedCallerInformation: EventEmitter<{\r\n id: string;\r\n value: string;\r\n }>;\r\n\r\n isSearchInformationMaximized: boolean;\r\n imageLocation: string;\r\n singleMatchIconSrc: string;\r\n singleMatchData: any;\r\n multiMatchData: any[];\r\n shouldShowAllMultiMatchOptions: boolean;\r\n\r\n constructor() {\r\n this.isSearchInformationMaximized = true;\r\n this.singleMatchData = null;\r\n this.multiMatchData = [];\r\n this.agentSelectedCallerInformation = new EventEmitter();\r\n }\r\n\r\n ngOnChanges() {\r\n this.renderData();\r\n }\r\n\r\n onAgentSelectedCallerInformation(event: any) {\r\n try {\r\n this.agentSelectedCallerInformation.emit({\r\n id: event.target.id,\r\n value: event.target.value\r\n });\r\n } catch (error) {}\r\n }\r\n\r\n protected renderData() {\r\n try {\r\n this.singleMatchData = null;\r\n this.multiMatchData = [];\r\n this.shouldShowAllMultiMatchOptions = false;\r\n if (this.searchRecordList.length === 1) {\r\n this.singleMatchData = this.parseSearchRecordForNameSingleMatch(\r\n this.searchRecordList[0]\r\n );\r\n } else if (this.searchRecordList.length > 1) {\r\n for (let i = 0; i < this.searchRecordList.length; i++) {\r\n this.multiMatchData.push(\r\n this.parseSearchRecordForNameMultiMatch(this.searchRecordList[i])\r\n );\r\n }\r\n }\r\n } catch (error) {}\r\n }\r\n\r\n protected parseSearchRecordForNameSingleMatch(searchRecord: api.IRecordItem) {\r\n const results = [];\r\n try {\r\n const src = this.getEntityImgToDisplay(searchRecord);\r\n this.singleMatchIconSrc = src;\r\n const sLayoutInfo = this.getSearchLayoutInfoForDisplay(searchRecord);\r\n for (let j = 0; j < sLayoutInfo.DisplayFields.length; j++) {\r\n if (sLayoutInfo.DisplayFields && sLayoutInfo.DisplayFields[j].DevName) {\r\n const nameKey = sLayoutInfo.DisplayFields[j].DevName;\r\n const keys = Object.keys(searchRecord.fields);\r\n for (let i = 0; i < keys.length; i++) {\r\n if (\r\n searchRecord.fields[keys[i]] &&\r\n searchRecord.fields[keys[i]].DevName === nameKey\r\n ) {\r\n let displayRecord = searchRecord.fields[keys[i]].Value;\r\n if (j === 0) {\r\n displayRecord = searchRecord.displayName\r\n ? [searchRecord.displayName, displayRecord]\r\n : [searchRecord.type, displayRecord];\r\n } else {\r\n displayRecord = sLayoutInfo.DisplayFields[j].DisplayName\r\n ? [sLayoutInfo.DisplayFields[j].DisplayName, displayRecord]\r\n : [sLayoutInfo.DisplayFields[j].DevName, displayRecord];\r\n }\r\n results.push(displayRecord);\r\n }\r\n }\r\n }\r\n }\r\n } catch (error) {}\r\n return results;\r\n }\r\n\r\n protected parseSearchRecordForNameMultiMatch(searchRecord: api.IRecordItem) {\r\n const results = [];\r\n try {\r\n const src = this.getEntityImgToDisplay(searchRecord);\r\n const sLayoutInfo = this.getSearchLayoutInfoForDisplay(searchRecord);\r\n for (let j = 0; j < sLayoutInfo.DisplayFields.length; j++) {\r\n if (sLayoutInfo.DisplayFields && sLayoutInfo.DisplayFields[j].DevName) {\r\n const nameKey = sLayoutInfo.DisplayFields[j].DevName;\r\n const keys = Object.keys(searchRecord.fields);\r\n for (let i = 0; i < keys.length; i++) {\r\n if (\r\n searchRecord.fields[keys[i]] &&\r\n searchRecord.fields[keys[i]].DevName === nameKey\r\n ) {\r\n let displayRecord = searchRecord.fields[keys[i]].Value;\r\n if (j === 0) {\r\n displayRecord = searchRecord.displayName\r\n ? [searchRecord.displayName, displayRecord]\r\n : [searchRecord.type, displayRecord];\r\n } else {\r\n displayRecord = sLayoutInfo.DisplayFields[j].DisplayName\r\n ? [sLayoutInfo.DisplayFields[j].DisplayName, displayRecord]\r\n : [sLayoutInfo.DisplayFields[j].DevName, displayRecord];\r\n }\r\n displayRecord.push(src);\r\n results.push(displayRecord);\r\n return results;\r\n }\r\n }\r\n }\r\n }\r\n } catch (error) {}\r\n return results;\r\n }\r\n\r\n protected getEntityImgToDisplay(searchRecord: api.IRecordItem) {\r\n let src = '';\r\n try {\r\n if (searchRecord.type) {\r\n if (searchRecord.type.toUpperCase() === 'CONTACT') {\r\n src = '../../assets/images/Icon_Contact.png';\r\n } else if (searchRecord.type.toUpperCase() === 'ACCOUNT') {\r\n src = '../../assets/images/Icon_Account.png';\r\n } else if (searchRecord.type.toUpperCase() === 'LEAD') {\r\n src = '../../assets/images/Icon_Lead.png';\r\n } else {\r\n src = '../../assets/images/Miscellaneous_Icon.png';\r\n }\r\n }\r\n } catch (error) {}\r\n return src;\r\n }\r\n\r\n protected getSearchLayoutInfoForDisplay(searchRecord: api.IRecordItem) {\r\n let layoutInfo: any;\r\n try {\r\n layoutInfo = this.searchLayout.layouts[0][\r\n this.ActivityDetails.CallType\r\n ].find((i) => i.DevName === searchRecord.type);\r\n } catch (error) {}\r\n return layoutInfo;\r\n }\r\n}\r\n","<div class=\"callDisplay\">\r\n <div class=\"editor callHeader\">\r\n <label class=\"headerLabel\">\r\n <b>Caller Information</b>\r\n </label>\r\n <img\r\n title=\"Multiple Matches Available\"\r\n *ngIf=\"this.searchRecordList.length > 1\"\r\n src=\"../../assets/images/MultiMatchAlert.png\"\r\n class=\"multiMatchImg\"\r\n />\r\n <img\r\n *ngIf=\"isSearchInformationMaximized\"\r\n class=\"ViewResizeImage\"\r\n src=\"assets/images/section_collapse.png\"\r\n (click)=\"isSearchInformationMaximized = false\"\r\n title=\"Collapse\"\r\n />\r\n <img\r\n *ngIf=\"!isSearchInformationMaximized\"\r\n class=\"ViewResizeImage\"\r\n src=\"assets/images/section_expand.png\"\r\n (click)=\"isSearchInformationMaximized = true\"\r\n title=\"Expand\"\r\n />\r\n </div>\r\n <div class=\"callBody\" *ngIf=\"isSearchInformationMaximized\">\r\n <div *ngIf=\"this.searchRecordList.length > 1\">\r\n <span class=\"overflowWrapper\">\r\n <img\r\n class=\"CRMResultImageMultiMatch\"\r\n src=\"{{ this.multiMatchData[0][0][2] }}\"\r\n />\r\n <input\r\n id=\"{{ this.searchRecordList[0].id }}\"\r\n name=\"{{ this.multiMatchData[0][0][1] }}\"\r\n (click)=\"onAgentSelectedCallerInformation($event)\"\r\n readonly\r\n class=\"multiMatchLabel\"\r\n title=\"{{ this.multiMatchData[0][0][1] }}\"\r\n type=\"text\"\r\n value=\"{{ this.multiMatchData[0][0][1] }}\"\r\n />\r\n <span style=\"float: right; margin-right: 4%;\">\r\n <img\r\n *ngIf=\"!this.shouldShowAllMultiMatchOptions\"\r\n class=\"CRMExpandImage\"\r\n src=\"../../assets/images/down-arrow.png\"\r\n (click)=\"shouldShowAllMultiMatchOptions = true\"\r\n />\r\n <img\r\n *ngIf=\"this.shouldShowAllMultiMatchOptions\"\r\n class=\"CRMExpandImage\"\r\n src=\"../../assets/images/up-arrow.png\"\r\n (click)=\"shouldShowAllMultiMatchOptions = false\"\r\n />\r\n </span>\r\n </span>\r\n <div *ngIf=\"this.shouldShowAllMultiMatchOptions\">\r\n <div *ngFor=\"let i of this.multiMatchData | slice: 1; let index = index\">\r\n <span\r\n class=\"overflowWrapper\"\r\n >\r\n <img class=\"CRMResultImageMultiMatch\" src=\"{{ i[0][2] }}\" />\r\n <input\r\n id=\"{{ this.searchRecordList[index + 1].id }}\"\r\n name=\"{{ i[0][1] }}\"\r\n readonly\r\n class=\"multiMatchLabel\"\r\n (click)=\"onAgentSelectedCallerInformation($event)\"\r\n title=\"{{ i[0][1] }}\"\r\n type=\"text\"\r\n value=\"{{ i[0][1] }}\"\r\n />\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Below is the HTML loaded on Single Match -->\r\n <div *ngIf=\"this.searchRecordList.length === 1\">\r\n <div\r\n class=\"editorFull displayDiv\"\r\n *ngFor=\"\r\n let i of this.singleMatchData | slice: 0:1;\r\n let index = index;\r\n let first = first\r\n \"\r\n >\r\n <span class=\"overflowWrapper\">\r\n <img\r\n id=\"EntityIcon\"\r\n src=\"{{ this.singleMatchIconSrc }}\"\r\n class=\"CRMResultImage\"\r\n />\r\n <input\r\n class=\"singleSearchResultSelect singleMatchFirstWrapper \"\r\n id=\"{{ this.searchRecordList[0].id }}\"\r\n [class.firstSingleMatchResult]=\"first\"\r\n value=\"{{ i[1] }}\"\r\n title=\"{{ i[1] }}\"\r\n (click)=\"onAgentSelectedCallerInformation($event)\"\r\n readonly\r\n />\r\n </span>\r\n </div>\r\n <div\r\n class=\"editorFull displayDiv\"\r\n *ngFor=\"\r\n let i of this.singleMatchData | slice: 1;\r\n let index = index;\r\n let first = first\r\n \"\r\n >\r\n <span class=\"overflowWrapper\">\r\n <label title=\"{{ i[0] }}\" class=\"displayLabelsTabbed\">{{\r\n i[0]\r\n }}</label>\r\n <input\r\n class=\"singleSearchResultSelect singleMatchTabbedItemsWrapper singleMatchLabel\"\r\n id=\"{{ this.searchRecordList[0].id }}\"\r\n value=\"{{ i[1] }}\"\r\n title=\"{{ i[1] }}\"\r\n readonly\r\n />\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n","import { Injector, NgModule, DoBootstrap } from '@angular/core';\r\nimport { createCustomElement } from '@angular/elements';\r\nimport { ActivityComponent } from './components/activity/activity.component';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { ChatBoxComponent } from './components/chat-box/chat-box.component';\r\nimport { ChatMessageComponent } from './components/chat-message/chat-message.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CreateComponent } from './components/create/create.component';\r\nimport { CurrentActivityComponent } from './components/current-activity/current-activity.component';\r\nimport { DispositionComponent } from './components/disposition/disposition.component';\r\nimport { DurationComponent } from './components/duration/duration.component';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { HoldTimerComponent } from './components/hold-timer/hold-timer.component';\r\nimport { InteractionComponent } from './components/interaction/interaction.component';\r\nimport { LoginComponent } from './components/login/login.component';\r\nimport { MatTabsModule } from '@angular/material/tabs';\r\nimport { OperationComponent } from './components/operation/operation.component';\r\nimport { PropertyComponent } from './components/property/property.component';\r\nimport { RecentActivityComponent } from './components/recent-activity/recent-activity.component';\r\nimport { ScenarioComponent } from './components/scenario/scenario.component';\r\nimport { SearchInformationComponent } from './components/search-information/search-information.component';\r\n\r\n@NgModule({\r\n imports: [BrowserModule, CommonModule, FormsModule, MatTabsModule],\r\n declarations: [\r\n InteractionComponent,\r\n ScenarioComponent,\r\n OperationComponent,\r\n PropertyComponent,\r\n HoldTimerComponent,\r\n DurationComponent,\r\n ChatBoxComponent,\r\n ChatMessageComponent,\r\n DispositionComponent,\r\n ActivityComponent,\r\n LoginComponent,\r\n CreateComponent,\r\n RecentActivityComponent,\r\n CurrentActivityComponent,\r\n SearchInformationComponent\r\n ],\r\n providers: [],\r\n bootstrap: [],\r\n exports: [ScenarioComponent, DispositionComponent, LoginComponent, CreateComponent, RecentActivityComponent, CurrentActivityComponent, SearchInformationComponent]\r\n})\r\nexport class UILibraryModule implements DoBootstrap{\r\n constructor(private injector: Injector) { }\r\n\r\n ngDoBootstrap(app) {\r\n if (!customElements.get('amc-webcomponents-scenario')) {\r\n\r\n // const strategyFactory = new ElementZoneStrategyFactory(\r\n // ScenarioComponent,\r\n // this.injector\r\n // );\r\n customElements.define(\r\n 'amc-webcomponents-scenario',\r\n createCustomElement(ScenarioComponent, {\r\n injector: this.injector,\r\n // strategyFactory: strategyFactory\r\n })\r\n );\r\n }\r\n if (!customElements.get('amc-webcomponents-disposition')) {\r\n // const strategyFactory = new ElementZoneStrategyFactory(\r\n // DispositionComponent,\r\n // this.injector\r\n // );\r\n customElements.define(\r\n 'amc-webcomponents-disposition',\r\n createCustomElement(DispositionComponent, {\r\n injector: this.injector,\r\n // strategyFactory: strategyFactory\r\n })\r\n );\r\n }\r\n if (!customElements.get('amc-webcomponents-login')) {\r\n // const strategyFactory = new ElementZoneStrategyFactory(\r\n // LoginComponent,\r\n // this.injector\r\n // );\r\n customElements.define(\r\n 'amc-webcomponents-login',\r\n createCustomElement(LoginComponent, {\r\n injector: this.injector,\r\n // strategyFactory: strategyFactory\r\n })\r\n );\r\n }\r\n }\r\n}\r\n\r\nexport * from './models/uilibrary.model';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i3.ChatMessageComponent","i2.OperationComponent","i3.PropertyComponent","i4.HoldTimerComponent","i5.DurationComponent","i6.ChatBoxComponent","i2.InteractionComponent"],"mappings":"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"}
1
+ {"version":3,"file":"amc-technology-ui-library.mjs","sources":["../../projects/UILibrary/src/app/components/activity/activity.component.ts","../../projects/UILibrary/src/app/components/activity/activity.component.html","../../projects/UILibrary/src/app/models/chat.message.ts","../../projects/UILibrary/src/app/components/chat-message/chat-message.component.ts","../../projects/UILibrary/src/app/components/chat-message/chat-message.component.html","../../projects/UILibrary/src/app/components/chat-box/chat-box.component.ts","../../projects/UILibrary/src/app/components/chat-box/chat-box.component.html","../../projects/UILibrary/src/app/components/create/create.component.ts","../../projects/UILibrary/src/app/components/create/create.component.html","../../projects/UILibrary/src/app/components/current-activity/current-activity.component.ts","../../projects/UILibrary/src/app/components/current-activity/current-activity.component.html","../../projects/UILibrary/src/app/components/disposition/disposition.component.ts","../../projects/UILibrary/src/app/components/disposition/disposition.component.html","../../projects/UILibrary/src/app/components/duration/duration.component.ts","../../projects/UILibrary/src/app/components/duration/duration.component.html","../../projects/UILibrary/src/app/Helpers.ts","../../projects/UILibrary/src/app/components/hold-timer/hold-timer.component.ts","../../projects/UILibrary/src/app/components/hold-timer/hold-timer.component.html","../../projects/UILibrary/src/app/components/operation/operation.component.ts","../../projects/UILibrary/src/app/components/operation/operation.component.html","../../projects/UILibrary/src/app/models/uilibrary.model.ts","../../projects/UILibrary/src/app/components/property/property.component.ts","../../projects/UILibrary/src/app/components/property/property.component.html","../../projects/UILibrary/src/app/components/interaction/interaction.component.ts","../../projects/UILibrary/src/app/components/interaction/interaction.component.html","../../projects/UILibrary/src/app/components/login/login.component.ts","../../projects/UILibrary/src/app/components/login/login.component.html","../../projects/UILibrary/src/app/components/recent-activity/recent-activity.component.ts","../../projects/UILibrary/src/app/components/recent-activity/recent-activity.component.html","../../projects/UILibrary/src/app/components/scenario/scenario.component.ts","../../projects/UILibrary/src/app/components/scenario/scenario.component.html","../../projects/UILibrary/src/app/components/search-information/search-information.component.ts","../../projects/UILibrary/src/app/components/search-information/search-information.component.html","../../projects/UILibrary/src/app/uilibrary.module.ts","../../amc-technology-ui-library.ts"],"sourcesContent":["import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\nimport { IActivity, IActivityDetails } from '../../models/uilibrary.model';\r\n\r\n@Component({\r\n selector: 'app-activity',\r\n templateUrl: './activity.component.html',\r\n styleUrls: ['./activity.component.css']\r\n})\r\nexport class ActivityComponent implements OnInit {\r\n\r\n @Input() activity: IActivity;\r\n @Output() ActivitySave: EventEmitter<IActivity> = new EventEmitter<IActivity>();\r\n @Output() OnNameSelectChange: EventEmitter<IActivity> = new EventEmitter<IActivity>();\r\n @Output() OnRelatedToChange: EventEmitter<IActivity> = new EventEmitter<IActivity>();\r\n @Output() OnSubjectChange: EventEmitter<IActivity> = new EventEmitter<IActivity>();\r\n @Output() OnCallNotesChange: EventEmitter<IActivity> = new EventEmitter<IActivity>();\r\n\r\n isActivityMaximized: boolean;\r\n\r\n constructor() {\r\n this.isActivityMaximized = true;\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n public onNameSelectChange(event) {\r\n this.activity.WhoObject = this.getWho(event.currentTarget.value);\r\n this.OnNameSelectChange.emit(this.activity);\r\n }\r\n\r\n public parseWhoObject(whoObject: IActivityDetails): string {\r\n return whoObject.objectType + ': ' + whoObject.objectName;\r\n }\r\n\r\n public parseWhatObject(whatObject: IActivityDetails): string {\r\n return whatObject.objectType + ': ' + whatObject.objectName;\r\n }\r\n\r\n public onRelatedToChange(event) {\r\n this.activity.WhatObject = this.getWhat(event.currentTarget.value);\r\n this.OnRelatedToChange.emit(this.activity);\r\n }\r\n\r\n public onSubjectChange(event) {\r\n this.activity.Subject = event.srcElement.value;\r\n this.OnSubjectChange.emit(this.activity);\r\n }\r\n public onCallNotesChange(event) {\r\n this.activity.Subject = event.srcElement.value.trim();\r\n this.OnCallNotesChange.emit(this.activity);\r\n }\r\n\r\n public getWho(id): IActivityDetails {\r\n for (let i = 0; i < this.activity.whoList.length; i++) {\r\n if (this.activity.whoList[i].objectId === id) {\r\n return this.activity.whoList[i];\r\n }\r\n }\r\n }\r\n public getWhat(id): IActivityDetails {\r\n for (let i = 0; i < this.activity.whatList.length; i++) {\r\n if (this.activity.whatList[i].objectId === id) {\r\n return this.activity.whatList[i];\r\n }\r\n }\r\n }\r\n\r\n public loadQuickComment(value) {\r\n this.activity.Description = this.activity.Description + this.activity.quickCommentList[value];\r\n }\r\n\r\n public activitySave(clearActivityFields) {\r\n this.ActivitySave.emit(this.activity);\r\n }\r\n}\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_collapse.png\" (click)=\"isActivityMaximized = false\" title=\"Collapse\">\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=\"Call From\">{{activity.NameFieldName}}</label>\r\n <select class=\"dropDownListStyle displayData\" data-resetperactivity=\"false\" (change)=\"onNameSelectChange($event)\">\r\n <option *ngFor=\"let who of activity.whoList\" value=\"{{who.objectId}}\">{{parseWhoObject(who)}}</option>\r\n </select>\r\n </div>\r\n <div class=\"editor displayDiv\">\r\n <label class=\"displayLabels\" title=\"Related To\">{{activity.RelatedToFieldName}}</label>\r\n <select class=\"dropDownListStyle displayData\" (change)=\"onRelatedToChange($event)\" data-resetperactivity=\"false\">\r\n <option *ngFor=\"let what of activity.whatList\" value=\"{{what.objectId}}\">{{parseWhatObject(what)}}</option>\r\n </select>\r\n </div>\r\n <div class=\"editor displayDiv\">\r\n <label class=\"displayLabels\" title=\"Subject\">{{activity.SubjectFieldName}}</label>\r\n <input class=\"activitySubjectTextBoxStyle displayData\" (change)=\"onSubjectChange($event)\" title=\"{{activity.Subject}}\"\r\n type=\"text\" value=\"{{activity.Subject}}\">\r\n </div>\r\n <div class=\"editor displayDiv\">\r\n <div class=\"callNotesContainer\">\r\n <div class=\"textAreaDiv\">\r\n <textarea value=\"{{activity.Description}}\" placeholder=\"Click to add a comment\" class=\"activityCommentsTextBoxStyle\"\r\n (change)=\"onCallNotesChange($event)\" cols=\"20\" rows=\"2\" title=\"\"></textarea>\r\n </div>\r\n <div class=\"notesButtonBorder\">\r\n <div class=\"commentsButtonDiv\">\r\n <div class=\"quickCommentsDiv\">\r\n <input *ngFor=\"let quickComment of activity.quickCommentList ; let i = index;\" class=\"quickNotesBotton\" type=\"button\"\r\n value=\"{{i+1}}\" (click)=\"loadQuickComment(i)\" title=\"{{quickComment}}\">\r\n </div>\r\n <div class=\"submitDiv\">\r\n <input class=\"submitButton\" type=\"button\" value=\"Submit\" (click)=\"activitySave(false)\">\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\" title=\"Expand\">\r\n </div>\r\n","export interface IChatMessage {\r\n username?: string;\r\n text: string;\r\n /**\r\n * What type of chat message. Defaults to OTHER_PERSON\r\n */\r\n type?: IChatMessageType;\r\n timestamp?: string;\r\n userIcon?: URL;\r\n}\r\n\r\nexport enum IChatMessageType {\r\n AGENT = 'AGENT',\r\n OTHER_PERSON = 'OTHER_PERSON',\r\n INFORMATION = 'INFORMATION'\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-chat-message',\r\n templateUrl: './chat-message.component.html',\r\n styleUrls: ['./chat-message.component.scss']\r\n})\r\nexport class ChatMessageComponent implements OnInit {\r\n @Input() message: string;\r\n @Input() alignRight = false;\r\n @Input() username: string;\r\n @Input() color: string;\r\n @Input() timestamp: string;\r\n @Input() image: string | URL;\r\n @Input() fallbackImage: string | URL;\r\n @Output() focusOn = new EventEmitter<any>();\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n this.focusOn.emit(true);\r\n }\r\n\r\n\r\n}\r\n","<div [class]=\"alignRight? 'message right-message' : 'message left-message'\">\r\n <div class=\"message-header\">\r\n <img *ngIf=\"image\" class=\"image\" [src]=\"image\" (error)=\"image = fallbackImage\" [style.border-color]=\"color\" />\r\n <span *ngIf=\"username\" class=\"username\">{{username}}</span>\r\n </div>\r\n\r\n <div class=\"message-body-container\">\r\n <div>\r\n <div class=\"message-body\" [style.background-color]=\"color\" [style.border-color]=\"color\">\r\n <span [innerHTML]=\"message\"></span>\r\n </div>\r\n </div>\r\n </div>\r\n <span *ngIf=\"timestamp\" class=\"timestamp\">{{timestamp}}</span>\r\n</div>\r\n","import {\r\n AfterViewChecked,\r\n AfterViewInit,\r\n Component,\r\n DoCheck,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n IterableDiffer,\r\n IterableDiffers,\r\n OnInit,\r\n Output,\r\n Renderer2,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { IChatMessage, IChatMessageType } from '../../models/chat.message';\r\n\r\nimport { IChatSettings } from '../../models/chat.settings';\r\n\r\n@Component({\r\n selector: 'app-chat-box',\r\n templateUrl: './chat-box.component.html',\r\n styleUrls: ['./chat-box.component.scss'],\r\n})\r\nexport class ChatBoxComponent implements AfterViewChecked, AfterViewInit, OnInit, DoCheck {\r\n @Input() settings: IChatSettings;\r\n @Input() isTyping = false;\r\n @Input() messages: IChatMessage[];\r\n @Output() isAgentTyping = new EventEmitter<boolean>();\r\n @Output() newMessage = new EventEmitter<string>();\r\n @ViewChild('MessagesContainer', { static: true }) messagesContainer: ElementRef;\r\n @ViewChild('autofocus', { static: false }) autofocus: ElementRef;\r\n\r\n _isAgentTyping = false;\r\n newMessageText = '';\r\n usernameToColor: { [username: string]: string } = {};\r\n colors = [\r\n '#c2c4c4',\r\n '#ffab91',\r\n '#f48fb1',\r\n '#29b6f6',\r\n '#e1bee7',\r\n '#9ccc65',\r\n '#ffc107',\r\n '#26c6da',\r\n '#cddc39',\r\n ];\r\n colorsIndex = 0;\r\n agentColor = '#2db0e0';\r\n sendButtonText: string;\r\n private lastCount = -1;\r\n private scrollAtBottom = true;\r\n private iterableDiffer: IterableDiffer<any>;\r\n\r\n constructor(private renderer: Renderer2, private iterableDiffers: IterableDiffers) {\r\n this.iterableDiffer = this.iterableDiffers.find([]).create(null);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.sendButtonText = this.settings?.sendMessageText ?? 'Send';\r\n\r\n this.renderer.selectRootElement('#autofocus').focus();\r\n }\r\n\r\n ngDoCheck() {\r\n const changes = this.iterableDiffer.diff(this.messages);\r\n if (changes) {\r\n // Before adding a new message, check if the scroll is at the bottom\r\n this.checkIfScrollAtBottom();\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.renderer.selectRootElement('#autofocus').focus();\r\n }\r\n\r\n ngAfterViewChecked() {\r\n if (this.lastCount !== this.messages.length) {\r\n this.lastCount = this.messages.length;\r\n if (this.scrollAtBottom) {\r\n this.scrollToBottom();\r\n }\r\n }\r\n }\r\n\r\n getColor(message: IChatMessage) {\r\n if (message.type && message.type === IChatMessageType.AGENT) {\r\n return this.agentColor;\r\n } else if (message.username) {\r\n if (!this.usernameToColor[message.username]) {\r\n this.usernameToColor[message.username] = this.colors[this.colorsIndex];\r\n this.colorsIndex = (this.colorsIndex + 1) % this.colors.length;\r\n }\r\n return this.usernameToColor[message.username];\r\n } else {\r\n return this.colors[0];\r\n }\r\n }\r\n\r\n shouldAlignRight(message: IChatMessage) {\r\n return message.type && message.type === IChatMessageType.AGENT;\r\n }\r\n\r\n sendNewMessage(event) {\r\n event.preventDefault();\r\n if (this.newMessageText) {\r\n this.newMessage.emit(this.newMessageText);\r\n this.newMessageText = '';\r\n }\r\n this.renderer.selectRootElement('#autofocus').focus();\r\n }\r\n\r\n setOnFocus(event) {\r\n this.renderer.selectRootElement('#autofocus').focus();\r\n }\r\n\r\n onNewMessageFocus(event: boolean) {\r\n const isTyping = event && this.newMessageText.length > 0;\r\n if (isTyping !== this._isAgentTyping) {\r\n this._isAgentTyping = isTyping;\r\n this.isAgentTyping.emit(isTyping);\r\n }\r\n }\r\n\r\n onKeyup() {\r\n const isTyping = this.newMessageText.length > 0;\r\n if (isTyping !== this._isAgentTyping) {\r\n this._isAgentTyping = isTyping;\r\n this.isAgentTyping.emit(isTyping);\r\n }\r\n }\r\n\r\n scrollToBottom() {\r\n try {\r\n this.messagesContainer.nativeElement.scrollTop = this.messagesContainer.nativeElement.scrollHeight;\r\n } catch (e) { }\r\n }\r\n\r\n checkIfScrollAtBottom() {\r\n try {\r\n const element = this.messagesContainer.nativeElement;\r\n const scrollLocation = element.scrollTop + element.clientHeight;\r\n const scrollHeight = element.scrollHeight - 5; // There is a 5px margin of error for scroll at bottom\r\n if (scrollLocation >= scrollHeight) {\r\n this.scrollAtBottom = true;\r\n } else {\r\n this.scrollAtBottom = false;\r\n }\r\n } catch (e) {\r\n console.error('error checking if scroll at bottom', e);\r\n }\r\n }\r\n}\r\n","<div class=\"chat-box\">\r\n <div #MessagesContainer id=\"msgScroll\" class=\"messages\" [style.max-height]='settings.maxHeight'>\r\n <ng-container *ngFor=\"let message of messages\">\r\n <app-chat-message class=\"chat-line\" [alignRight]=\"shouldAlignRight(message)\" [message]=\"message.text\" [username]=\"message.username\" (focusOn)=\"setOnFocus($event)\"\r\n [timestamp]=\"message.timestamp\" [image]=\"message.userIcon\" [fallbackImage]=\"settings.fallbackUserIcon\" [color]=\"getColor(message)\">\r\n </app-chat-message>\r\n </ng-container>\r\n\r\n <div *ngIf=\"isTyping\" class=\"typing-indicator\">\r\n Someone is typing\r\n <span></span>\r\n <span></span>\r\n <span></span>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n <div *ngIf=\"!settings.hideSendMessage\" class=\"message-box\">\r\n <textarea id=\"autofocus\" tabindex=\"1\" #NewMessageText [(ngModel)]=\"newMessageText\" type=\"text\" class=\"message-input scroll\" placeholder=\"Type a message...\"\r\n (focus)=\"onNewMessageFocus(true)\" (keydown.enter)=\"sendNewMessage($event)\" (keyup)='onKeyup()' [disabled]=\"settings.disableSendMessage\" ></textarea>\r\n <button type=\"submit\" class=\"message-submit\" (click)=\"sendNewMessage($event)\" [disabled]=\"settings.disableSendMessage\">{{ sendButtonText }}</button>\r\n </div>\r\n</div>\r\n","import { Component, Input, EventEmitter, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'amc-create',\r\n templateUrl: './create.component.html',\r\n styleUrls: ['./create.component.css']\r\n})\r\nexport class CreateComponent {\r\n @Input() Entities: any;\r\n @Output() CreateNewEntity: EventEmitter<string> = new EventEmitter<string>();\r\n isCreateMaximized: boolean;\r\n\r\n constructor() {\r\n this.isCreateMaximized = true;\r\n }\r\n createNewEntity(type: string) {\r\n this.CreateNewEntity.emit(type);\r\n }\r\n\r\n getEntities() {\r\n return Object.keys(this.Entities);\r\n }\r\n\r\n getDisplay(entity) {\r\n return entity.substring(0, entity.indexOf('|'));\r\n }\r\n\r\n getImage(entity) {\r\n return entity.substring(entity.indexOf('|') + 1);\r\n }\r\n}\r\n","<div *ngIf=\"isCreateMaximized\" class=\"callDisplay\">\r\n <div class=\"editor callHeader\">\r\n <label class=\"headerLabel\">\r\n <b>Create New</b>\r\n </label>\r\n <img class=\"ViewResizeImage\" src=\"/assets/images/section_collapse.png\" (click)=\"isCreateMaximized = false\"\r\n title=\"Collapse\" />\r\n </div>\r\n <div class=\"callBody\">\r\n <div *ngIf=\"Entities\" class=\"container\">\r\n <div *ngFor=\"let entity of getEntities()\" class=\"createNewLabel\" (click)=\"createNewEntity(entity)\"\r\n title=\"{{ getDisplay(Entities[entity]) }}\">\r\n <img class=\"createEntityImages\" src=\"{{ getImage(Entities[entity]) }}\" />\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<div *ngIf=\"!isCreateMaximized\" class=\"callDisplay\">\r\n <div class=\"editor callHeader\">\r\n <label class=\"headerLabel\">\r\n <b>Create New</b>\r\n </label>\r\n <img class=\"ViewResizeImage\" src=\"/assets/images/section_expand.png\" (click)=\"isCreateMaximized = true\"\r\n title=\"Expand\" />\r\n </div>\r\n</div>\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { IActivityDetails } from '../../models/IActivityDetails';\r\nimport { IActivity } from '../../models/IActivity';\r\nimport { Subject } from 'rxjs';\r\nimport { debounceTime } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'amc-current-activity',\r\n templateUrl: './current-activity.component.html',\r\n styleUrls: ['./current-activity.component.css']\r\n})\r\nexport class CurrentActivityComponent implements OnInit {\r\n @Input() ActivityDetails: IActivity;\r\n @Input() quickCommentList: string[];\r\n @Input() isAutoSave: boolean;\r\n @Input() enableDiscard: boolean;\r\n @Input() autoSaveTimer: number;\r\n @Input() quickCommentOptionRequiredCadArray: any;\r\n @Input() WhoObjectList: IActivityDetails[];\r\n @Input() WhatObjectList: IActivityDetails[];\r\n @Input() scenarioToCADMap: {};\r\n @Output() EventEmitter: EventEmitter<{\r\n eventName: string;\r\n newValue?: IActivity;\r\n }>;\r\n\r\n isActivityMaximized: boolean;\r\n private eventList: Set<String>;\r\n private debouncer: Subject<void>;\r\n\r\n constructor() {\r\n this.isActivityMaximized = true;\r\n\r\n this.EventEmitter = new EventEmitter<{\r\n eventName: string;\r\n newValue?: IActivity;\r\n }>();\r\n\r\n this.debouncer = new Subject();\r\n this.eventList = new Set();\r\n }\r\n\r\n async ngOnInit() {\r\n this.debouncer.pipe(debounceTime(500)).subscribe(() => {\r\n const newEvent = {\r\n eventName: Array.from(this.eventList).join('|'),\r\n newValue: this.ActivityDetails\r\n };\r\n this.EventEmitter.emit(newEvent);\r\n this.eventList.clear();\r\n });\r\n }\r\n\r\n submitActivity() {\r\n try {\r\n this.ActivityDetails.IsProcessing = true;\r\n this.EventEmitter.emit({\r\n eventName: 'SubmitActivity',\r\n newValue: this.ActivityDetails\r\n });\r\n } catch (error) {}\r\n }\r\n\r\n triggerDiscardActivity() {\r\n try {\r\n this.EventEmitter.emit({\r\n eventName: 'TriggerDiscardActivity',\r\n newValue: this.ActivityDetails\r\n });\r\n } catch (error) {}\r\n }\r\n\r\n onNameChange(event: any) {\r\n try {\r\n this.ActivityDetails.WhoObject = this.WhoObjectList.find((obj) => obj.objectId === event);\r\n this.EventEmitter.emit({\r\n eventName: 'ActivityWhoObjectChanged',\r\n newValue: this.ActivityDetails\r\n });\r\n } catch (error) {}\r\n }\r\n\r\n onRelatedToChange(event: any) {\r\n try {\r\n this.ActivityDetails.WhatObject = this.WhatObjectList.find((obj) => obj.objectId === event);\r\n this.EventEmitter.emit({\r\n eventName: 'ActivityWhatObjectChanged',\r\n newValue: this.ActivityDetails\r\n });\r\n } catch (error) {}\r\n }\r\n\r\n onSubjectChange() {\r\n try {\r\n this.eventList.add('ActivitySubjectChanged');\r\n this.debouncer.next();\r\n } catch (error) {}\r\n }\r\n\r\n onSubjectKeyUp() {\r\n try {\r\n this.eventList.add('ActivitySubjectChanged');\r\n this.debouncer.next();\r\n } catch (error) {}\r\n }\r\n\r\n onCallNotesChange() {\r\n try {\r\n this.eventList.add('ActivityCallNoteChanged');\r\n this.debouncer.next();\r\n } catch (error) {}\r\n }\r\n\r\n onCallNotesKeyUp() {\r\n try{\r\n this.eventList.add('ActivityCallNoteChanged');\r\n this.debouncer.next();\r\n } catch (error) {}\r\n }\r\n\r\n addQuickCommentToDescription(comment: string) {\r\n try {\r\n let descriptionToSet = comment;\r\n if (this.quickCommentOptionRequiredCadArray[comment]) {\r\n let cadFields = {};\r\n if (this.ActivityDetails) {\r\n cadFields = this.scenarioToCADMap[this.ActivityDetails.ScenarioId];\r\n }\r\n for (\r\n let i = 0;\r\n i < this.quickCommentOptionRequiredCadArray[comment].length;\r\n i++\r\n ) {\r\n let keyToCheckIfCADExists =\r\n this.quickCommentOptionRequiredCadArray[comment][i];\r\n const stringToBeReplaced =\r\n this.quickCommentOptionRequiredCadArray[comment][i];\r\n keyToCheckIfCADExists = keyToCheckIfCADExists.replace('{{', '');\r\n keyToCheckIfCADExists = keyToCheckIfCADExists.replace('}}', '');\r\n if (cadFields[keyToCheckIfCADExists]) {\r\n descriptionToSet = descriptionToSet.replace(\r\n stringToBeReplaced,\r\n cadFields[keyToCheckIfCADExists].Value\r\n );\r\n }\r\n }\r\n }\r\n if (this.ActivityDetails.Description) {\r\n this.ActivityDetails.Description += '\\n';\r\n }\r\n this.ActivityDetails.Description += descriptionToSet;\r\n this.eventList.add('ActivityCallNoteChanged');\r\n this.debouncer.next();\r\n } catch (error) {}\r\n }\r\n\r\n protected parseWhoObject(whoObject: IActivityDetails): string {\r\n try {\r\n return whoObject.displayName + ': ' + whoObject.objectName;\r\n } catch (error) {}\r\n }\r\n\r\n protected parseWhatObject(whatObject: IActivityDetails): string {\r\n try {\r\n return whatObject.displayName + ': ' + whatObject.objectName;\r\n } catch (error) {}\r\n }\r\n}\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_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","import { IDisposition, IDispositionResult } from './../../models/disposition.interface';\r\nimport { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'amc-disposition',\r\n templateUrl: './disposition.component.html',\r\n styleUrls: ['./disposition.component.css']\r\n})\r\nexport class DispositionComponent implements OnInit {\r\n @Input() disposition: IDisposition;\r\n\r\n @Output() dispositionEmitter = new EventEmitter<IDispositionResult>();\r\n\r\n selectedDispositionValue = '';\r\n dispositionName = '';\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n for (const metadata of this.disposition.dispositionMetadata) {\r\n if (metadata.key === 'callId') {\r\n this.dispositionName = `disposition_${metadata.value}`;\r\n\r\n break;\r\n }\r\n }\r\n\r\n if (this.disposition.checkedDisposition) {\r\n this.selectedDispositionValue = this.disposition.checkedDisposition;\r\n }\r\n }\r\n\r\n submitDisposition() {\r\n const selectedDisposition: IDispositionResult = {\r\n dispositionId: this.selectedDispositionValue,\r\n dispositionName: this.disposition.disposition.get(this.selectedDispositionValue),\r\n dispositionMetadata: this.disposition.dispositionMetadata\r\n };\r\n\r\n this.dispositionEmitter.emit(selectedDisposition);\r\n }\r\n\r\n selectAndSubmitDisposition(event: KeyboardEvent, dispositionKey: string) {\r\n if (event.code === 'Enter') {\r\n this.selectedDispositionValue = dispositionKey;\r\n this.submitDisposition();\r\n }\r\n }\r\n}\r\n","<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","import { Component, Input, OnInit, OnDestroy } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'amc-duration',\r\n templateUrl: './duration.component.html',\r\n styleUrls: ['./duration.component.scss']\r\n})\r\nexport class DurationComponent implements OnInit, OnDestroy {\r\n @Input() statusText: string;\r\n @Input() callId: string;\r\n @Input() startTime: number;\r\n\r\n displayTime: string;\r\n labelledByText = '';\r\n\r\n private _timerId?: number;\r\n\r\n constructor() {\r\n this.displayTime = '00:00/00:00';\r\n }\r\n\r\n ngOnInit() {\r\n if (this.statusText && this.callId) {\r\n this.labelledByText = `${this.statusText} ${this.callId}`;\r\n } else if (this.statusText) {\r\n this.labelledByText = this.statusText;\r\n } else if (this.callId) {\r\n this.labelledByText = this.callId;\r\n }\r\n\r\n this.startCallCounter();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n // clear the timer.\r\n if (this._timerId != null) {\r\n clearInterval(this._timerId);\r\n this._timerId = null;\r\n }\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n private startCallCounter(): void {\r\n if (this._timerId == null) {\r\n this._timerId = window.setInterval(() => {\r\n const callStartTime: number = this.startTime;\r\n const currentTime: number = new Date().getTime() / 1000;\r\n const secondsPassed: number = Math.floor((currentTime) - (callStartTime / 1000));\r\n this.displayTime = Math.floor(secondsPassed / 60) + ':' + ('0' + (secondsPassed % 60)).slice(-2);\r\n }, 1000);\r\n }\r\n }\r\n}\r\n","<div class=\"holdCallDurationDiv\">\r\n <input\r\n readonly\r\n class=\"block durationInput\"\r\n name=\"CallDuration\"\r\n type=\"text\"\r\n tabindex=\"-1\"\r\n title=\"Call Duration\"\r\n [value]=\"displayTime\"\r\n [attr.aria-labelledby]=\"labelledByText || null\">\r\n</div>\r\n","export function secondsToHms(seconds_in: number): string {\r\n seconds_in = Number(seconds_in);\r\n const h = Math.floor(seconds_in / 3600);\r\n const m = Math.floor(seconds_in % 3600 / 60);\r\n const s = Math.floor(seconds_in % 3600 % 60);\r\n\r\n const hDisplay = h > 0 ? h.toString() + ':' : '';\r\n const mDisplay = m > 0 ? ('0' + m.toString()).slice(-2) + ':' : '00:';\r\n const sDisplay = s > 0 ? ('0' + s.toString()).slice(-2) : '00';\r\n return hDisplay + mDisplay + sDisplay;\r\n}\r\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { ICallDuration, IHoldCounterData } from '../../models/uilibrary.model';\r\n\r\nimport { secondsToHms } from '../../Helpers';\r\n\r\n@Component({\r\n selector: 'amc-holdTimer', // eslint-disable-line\r\n templateUrl: './hold-timer.component.html',\r\n styleUrls: ['./hold-timer.component.scss']\r\n})\r\nexport class HoldTimerComponent implements OnInit, OnDestroy {\r\n @Input() holdCounterData: IHoldCounterData;\r\n @Input() statusText: string;\r\n @Input() callId: string;\r\n\r\n displayTime: string;\r\n labelledByText = '';\r\n\r\n private _timerId?: number;\r\n constructor() {\r\n this.displayTime = '00:00/00:00';\r\n }\r\n\r\n ngOnInit() {\r\n if (this.statusText && this.callId) {\r\n this.labelledByText = `${this.statusText} ${this.callId}`;\r\n } else if (this.statusText) {\r\n this.labelledByText = this.statusText;\r\n } else if (this.callId) {\r\n this.labelledByText = this.callId;\r\n }\r\n\r\n this.startCallCounter();\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n ngOnDestroy(): void {\r\n // clear the timer.\r\n if (this._timerId != null) {\r\n clearInterval(this._timerId);\r\n this._timerId = null;\r\n }\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n private startCallCounter(): void {\r\n const pastTimeInSeconds = this.CaculatePastHoldDuration();\r\n if (this._timerId == null) {\r\n this._timerId = window.setInterval(() => {\r\n const currentTime: number = new Date().getTime() / 1000;\r\n const secondsPassedCurrentCall: number = Math.floor((currentTime) - (this.holdCounterData.currentHoldStartTime / 1000));\r\n this.displayTime = secondsToHms(secondsPassedCurrentCall) +\r\n '/' + secondsToHms(pastTimeInSeconds + secondsPassedCurrentCall);\r\n }, 1000);\r\n }\r\n }\r\n\r\n private CaculatePastHoldDuration(): number {\r\n let pastTimeInSeconds = 0;\r\n if (this.holdCounterData.pastCallDurations) {\r\n this.holdCounterData.pastCallDurations.forEach((holdTimerIterator: ICallDuration) => {\r\n pastTimeInSeconds += (holdTimerIterator.endTime - holdTimerIterator.startTime) / 1000;\r\n });\r\n }\r\n return pastTimeInSeconds;\r\n\r\n }\r\n}\r\n","<div class=\"holdCallDurationDiv\">\r\n <input\r\n readonly\r\n class=\"holdCallDurationTimer\"\r\n name=\"HoldCallDuration/TotalHoldCallDuration\"\r\n type=\"text\"\r\n tabindex=\"-1\"\r\n title=\"Hold Duration\"\r\n [attr.aria-labelledby]=\"labelledByText || null\"\r\n [value]=\"displayTime\">\r\n</div>\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { IOperation } from '../../models/uilibrary.model';\r\n\r\n/**\r\n * @ignore\r\n */\r\n@Component({\r\n selector: 'amc-operation',\r\n templateUrl: './operation.component.html',\r\n styleUrls: ['./operation.component.scss']\r\n})\r\nexport class OperationComponent implements OnInit {\r\n @Input() statusText: string;\r\n @Input() callId: string;\r\n @Input() callType: string;\r\n @Input() operations: IOperation[];\r\n\r\n labelledByText = '';\r\n describedByText = '';\r\n\r\n /**\r\n * @ignore\r\n */\r\n constructor() {\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n ngOnInit() {\r\n if (this.statusText && this.callType) {\r\n this.describedByText = `${this.statusText} ${this.callType}`;\r\n } else if (this.statusText) {\r\n this.describedByText = this.statusText;\r\n } else if (this.callType) {\r\n this.describedByText = this.callType;\r\n }\r\n\r\n if (this.callId) {\r\n this.labelledByText = this.callId;\r\n }\r\n }\r\n\r\n operationKeypress(event: KeyboardEvent, operation: IOperation) {\r\n if (event.code === 'Enter') {\r\n operation.handler(operation.operationName, operation.operationMetadata);\r\n }\r\n }\r\n}\r\n","<div class=\"callOptions\">\r\n <img\r\n class=\"AnswerCallImages\"\r\n tabindex=\"0\"\r\n role=\"button\"\r\n attr.aria-label=\"{{ operation.title }}\"\r\n *ngFor=\"let operation of operations\"\r\n [title]=\"operation.title\"\r\n [src]=\"operation.icon\"\r\n [attr.accesskey]=\"operation.accesskey || null\"\r\n [attr.aria-labelledby]=\"labelledByText || null\"\r\n [attr.aria-describedby]=\"describedByText || null\"\r\n (click)=\"operation.handler(operation.operationName, operation.operationMetadata)\"\r\n (keypress)=\"operationKeypress($event, operation)\"/>\r\n</div>\r\n","import { IChatSettings } from './chat.settings';\r\nimport { IChatMessage } from './chat.message';\r\n\r\nexport * from './chat.message';\r\nexport * from './chat.settings';\r\n\r\n/**\r\n * enum for Value types of PROPERTY.\r\n */\r\nexport enum ValueType {\r\n STRING,\r\n COUNTER\r\n}\r\n\r\nexport interface ILoginData {\r\n header: string;\r\n fields: ILoginField[];\r\n}\r\n\r\nexport interface ILoginField {\r\n name: string;\r\n type: string;\r\n value?: string;\r\n placeholder?: string;\r\n isRequired?: boolean;\r\n invalidMessage: string;\r\n isInvalid?: boolean;\r\n}\r\n\r\n/**\r\n * It is collection of Interaction which need to be displayed on scenario component.\r\n */\r\nexport interface IScenario {\r\n interactions: IInteraction[];\r\n}\r\n\r\nexport interface IInteraction {\r\n /**\r\n * Unique id for the interaction.\r\n * Note: this interactionId is also used to provide id for the div element.\r\n */\r\n interactionId: string;\r\n properties?: Property[];\r\n associatedData?: Property[];\r\n startTime: number;\r\n displayCallTimer: boolean;\r\n /**\r\n * parties is supposed to contain data about all the participants in call except agent himself.\r\n */\r\n parties?: IParty[];\r\n /**\r\n * Operations/buttons which needs to be displayed in interaction and its handlers.\r\n */\r\n operations?: IOperation[];\r\n\r\n /**\r\n * It contains URLs for minimize, maximize, interaction specific icon urls for interaction.\r\n * And header number which needs to be displayed at top.\r\n */\r\n UIHeadersData: IInteractionUIHeaders;\r\n\r\n /**\r\n * Should contain identifying information about the main party in the interaction.\r\n */\r\n subheaderData: IPartyHeader;\r\n\r\n /**\r\n * This enables and configures the chat UI\r\n */\r\n chat?: {\r\n settings: IChatSettings;\r\n messages: IChatMessage[];\r\n isCustomerTyping?: boolean;\r\n };\r\n}\r\n\r\nexport interface IActivity {\r\n interactionId: string;\r\n WhoObject: IActivityDetails;\r\n WhatObject: IActivityDetails;\r\n whoList: IActivityDetails[];\r\n whatList: IActivityDetails[];\r\n CallType: string;\r\n CallDurationInSeconds: string;\r\n Subject: string;\r\n SubjectFieldName: string;\r\n NameFieldName: string;\r\n RelatedToFieldName: string;\r\n Description: string;\r\n Status: string;\r\n ActivityDate: string;\r\n TimeStamp: Date;\r\n ActivityId: string;\r\n quickCommentList: string[];\r\n}\r\n\r\nexport interface IActivityDetails {\r\n objectType: string;\r\n displayName: string;\r\n objectName: string;\r\n objectId: string;\r\n url: string;\r\n}\r\n\r\n/**\r\n * This contains the main identifying information about the interaction.\r\n */\r\nexport interface IPartyHeader {\r\n /**\r\n * Image that identifies the type of interaction\r\n * or the type of the identifying information(ex: phone icon for phone number)\r\n */\r\n image?: URL;\r\n /**\r\n * The tooltip to be displayed when the image is hovered over\r\n */\r\n tooltip?: string;\r\n /**\r\n * The value to be displayed\r\n */\r\n value: string;\r\n}\r\n\r\n/**\r\n * It contains URLs for minimize, maximize, interaction specific icon urls for interaction.\r\n * And header number which needs to be displayed at top.\r\n */\r\nexport interface IInteractionUIHeaders {\r\n /**\r\n * Minimize icon url.\r\n */\r\n minimizeUrl: URL;\r\n\r\n /**\r\n * Maximize Icon url.\r\n */\r\n maximizeUrl: URL;\r\n\r\n /**\r\n * This is the URL for the status image.\r\n * @memberof IInteractionUIHeaders\r\n */\r\n statusUrl: URL;\r\n\r\n /**\r\n * This is the handler for focus(Triggered on click of status).\r\n * @memberof IInteractionUIHeaders\r\n */\r\n focusHandler?: IFocus;\r\n\r\n /**\r\n * This is the text which is going to be displayed for status of the call.\r\n *\r\n * @memberof IInteractionUIHeaders\r\n */\r\n statusText: string;\r\n\r\n /**\r\n *This member will contain the text related to the direction of the call. E.g Inbound, Outbound etc.\r\n * @memberof IInteractionUIHeaders\r\n */\r\n directionText: string;\r\n\r\n /**\r\n *This data will be used to display hold counter whihc will be the combination of the current hold time and complete hold time.\r\n * @memberof IInteractionUIHeaders\r\n */\r\n holdCounterData?: IHoldCounterData;\r\n\r\n /**\r\n *If this value is set to true then hold counter is displayed based on the holdCounterData.\r\n * @memberof IInteractionUIHeaders\r\n */\r\n displayHoldCounter: boolean;\r\n}\r\nexport interface ICallDuration {\r\n startTime: number;\r\n endTime: number;\r\n}\r\nexport interface IHoldCounterData {\r\n pastCallDurations?: ICallDuration[];\r\n currentHoldStartTime: number;\r\n}\r\n\r\n/**\r\n * It contains Operation Icon URL and its hadlers which need to be displayed in Interaction.\r\n */\r\nexport interface IFocus {\r\n /**\r\n * metadata related to operation.\r\n */\r\n operationMetadata?: IMetadata[];\r\n /**\r\n * name of the operation.\r\n */\r\n operationName: string;\r\n /**\r\n * Handler which needs to be invoked when someone clicks on the operation icon.\r\n */\r\n handler: (operationName: string, operationMetadata?: IMetadata[]) => void;\r\n}\r\n\r\n/**\r\n * It contains Operation Icon URL and its hadlers which need to be displayed in Interaction.\r\n */\r\nexport interface IOperation {\r\n /**\r\n * metadata related to operation.\r\n */\r\n operationMetadata?: IMetadata[];\r\n /**\r\n * name of the operation.\r\n */\r\n operationName: string;\r\n /**\r\n * URL for the icon of operations.\r\n */\r\n icon: URL;\r\n /**\r\n * Title which needs to be doisplayed when someone hovers over the icon.\r\n */\r\n title: string;\r\n /**\r\n * Handler which needs to be invoked when someone clicks on the operation icon.\r\n */\r\n handler: (operationName: string, operationMetadata?: IMetadata[]) => void;\r\n /**\r\n * Browser accesskey to jump instantly to this operation Should conform to AMC norms and consist of a single printable character.\r\n */\r\n accesskey?: string;\r\n}\r\n\r\n/**\r\n * This contains properties and operations to be displayed for conference member.\r\n */\r\nexport interface IParty {\r\n header: IPartyHeader;\r\n properties: Property[];\r\n operations: IOperation[];\r\n}\r\n\r\n/**\r\n * key value pairs which can be used amongst other interfaces/classes to store metadata of those entities.\r\n */\r\n\r\nexport interface IMetadata {\r\n key: string;\r\n value: string;\r\n}\r\n\r\n/**\r\n * This interface contains key value pairs, some custom operation which generates display key and display value.\r\n * Also it includes custom operation handler for click event on properties.\r\n */\r\nexport interface IProperty {\r\n /**\r\n * KEY value to be displayed on component.\r\n */\r\n displayKey?: string;\r\n\r\n /**\r\n * VALUE to be displayed on component.\r\n */\r\n displayValue?: any;\r\n displayValueType: ValueType;\r\n propertyMetadata?: IMetadata[];\r\n\r\n /**\r\n * Click event handler for property.\r\n */\r\n customOperations?: IEventHandler;\r\n /**\r\n * This flag decides if PROPERTY will be displayed on component or not.\r\n */\r\n visible: boolean;\r\n}\r\n\r\n/**\r\n * A helper method to make instances of [IProperty]\r\n */\r\nexport class Property implements IProperty {\r\n /**\r\n * KEY value to be displayed on component.\r\n */\r\n displayKey?: string;\r\n\r\n /**\r\n * VALUE to be displayed on component.\r\n */\r\n displayValue?: any;\r\n displayValueType: ValueType;\r\n propertyMetadata?: IMetadata[];\r\n\r\n /**\r\n * Click event handler for property.\r\n */\r\n customOperations?: IEventHandler;\r\n /**\r\n * This flag decides if PROPERTY will be displayed on component or not.\r\n */\r\n visible: boolean;\r\n private key: string;\r\n private value: any;\r\n\r\n /**\r\n *\r\n * @param key\r\n * @param value : if value type is COUNTER then value should be start time in MilliSeconds.\r\n * @param visible\r\n * @param valueType\r\n * @param customOperation\r\n */\r\n constructor(\r\n key: string,\r\n value: any,\r\n visible?: boolean,\r\n valueType?: ValueType,\r\n customOperation?: IEventHandler\r\n ) {\r\n this.key = key;\r\n this.value = value;\r\n this.visible = visible || true;\r\n this.displayValueType = valueType || ValueType.STRING;\r\n this.customOperations = customOperation;\r\n this.displayOperation();\r\n }\r\n\r\n /**\r\n * Operation responsible for generating displayKey and dispkayValur from key and value.\r\n */\r\n displayOperation: () => void = () => {\r\n this.displayKey = this.key;\r\n this.displayValue = this.value;\r\n };\r\n\r\n}\r\n\r\n/**\r\n * Interface which contains eventName and handler associated with it.\r\n */\r\nexport interface IEventHandler {\r\n eventName: string;\r\n handler: (eventName: string, eventMetadata?: IMetadata[]) => void;\r\n eventMetadata?: IMetadata[];\r\n}\r\n","import { Component, OnInit, Input, OnDestroy } from '@angular/core';\r\nimport { ValueType, IProperty } from '../../models/uilibrary.model';\r\nimport { secondsToHms } from '../../Helpers';\r\n/**\r\n * @ignore\r\n */\r\n@Component({\r\n selector: 'amc-property',\r\n templateUrl: './property.component.html',\r\n styleUrls: ['./property.component.scss']\r\n})\r\nexport class PropertyComponent implements OnInit, OnDestroy {\r\n\r\n @Input() statusText: string;\r\n @Input() callId: string;\r\n @Input() callType: string;\r\n @Input() property: IProperty;\r\n\r\n labelledByText = '';\r\n title = '';\r\n\r\n /**\r\n * @ignore\r\n */\r\n processedDisplayValue: string;\r\n\r\n /**\r\n * @ignore\r\n */\r\n private _timerId?: number;\r\n\r\n /**\r\n * @ignore\r\n */\r\n constructor() {\r\n\r\n this._timerId = null;\r\n this.processedDisplayValue = '';\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n ngOnInit() {\r\n if (this.statusText && this.callType) {\r\n this.labelledByText = `${this.statusText} ${this.callType}`;\r\n } else if (this.statusText) {\r\n this.labelledByText = this.statusText;\r\n } else if (this.callType) {\r\n this.labelledByText = this.callType;\r\n }\r\n\r\n if (this.callType && this.callId) {\r\n this.title = `${this.callType} ${this.callId}`;\r\n } else if (this.callType) {\r\n this.title = this.callType;\r\n } else if (this.callId) {\r\n this.title = this.callId;\r\n }\r\n\r\n this.initValues();\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n ngOnDestroy(): void {\r\n if (this.property.displayValueType === ValueType.COUNTER) {\r\n // clear the timer.\r\n if (this._timerId != null) {\r\n clearInterval(this._timerId);\r\n this._timerId = null;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n initValues(): void {\r\n if (this.property.displayValueType === ValueType.COUNTER) {\r\n this.startCallCounter();\r\n } else {\r\n this.processedDisplayValue = this.property.displayValue;\r\n }\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n private startCallCounter(): void {\r\n if (this._timerId == null) {\r\n this._timerId = window.setInterval(() => {\r\n const callStartTime: number = this.property.displayValue;\r\n const currentTime: number = new Date().getTime() / 1000;\r\n const secondsPassed: number = Math.floor((currentTime) - (callStartTime / 1000));\r\n this.processedDisplayValue = secondsToHms(secondsPassed);\r\n }, 1000);\r\n }\r\n }\r\n}\r\n","<input\r\n readonly\r\n *ngIf=\"!property.customOperations\"\r\n class=\"displayData\"\r\n tabindex=\"0\"\r\n type=\"text\"\r\n [name]=\"processedDisplayValue\"\r\n [title]=\"title || null\"\r\n [attr.aria-labelledby]=\"labelledByText || null\"\r\n [value]=\"processedDisplayValue\"/>\r\n\r\n <input\r\n readonly\r\n *ngIf=\"property.customOperations\"\r\n class=\"cursor displayData\"\r\n type=\"text\"\r\n tabindex=\"0\"\r\n [name]=\"processedDisplayValue\"\r\n [title]=\"title || null\"\r\n [value]=\"processedDisplayValue\"\r\n [attr.aria-labelledby]=\"labelledByText || null\"\r\n (click)=\"property.customOperations.handler(property.customOperations.eventName, property.customOperations.eventMetadata)\" />\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\n\r\nimport { IInteraction } from '../../models/uilibrary.model';\r\n\r\n/**\r\n * @ignore\r\n */\r\n@Component({\r\n selector: 'amc-interaction',\r\n templateUrl: './interaction.component.html',\r\n styleUrls: ['./interaction.component.scss']\r\n})\r\nexport class InteractionComponent implements OnInit {\r\n\r\n @Input() interaction: IInteraction;\r\n @Output() minimizedChanged: EventEmitter<boolean> = new EventEmitter();\r\n @Output() isAgentTyping = new EventEmitter<boolean>();\r\n @Output() newMessage = new EventEmitter<string>();\r\n /**\r\n * @ignore\r\n */\r\n minimized: boolean;\r\n\r\n /**\r\n * @ignore\r\n */\r\n constructor() {\r\n this._minimized = false;\r\n }\r\n\r\n get _minimized() {\r\n return this.minimized;\r\n }\r\n\r\n set _minimized(value) {\r\n this.minimized = value;\r\n this.minimizedChanged.emit(value);\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n ngOnInit() {\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n minimize(): void {\r\n this._minimized = true;\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n maximize(): void {\r\n this._minimized = false;\r\n }\r\n\r\n /**\r\n * @ignore\r\n */\r\n isConferenceCall(): boolean {\r\n if (this.interaction.parties && this.interaction.parties.length > 1) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n collapseKeypress(event: KeyboardEvent) {\r\n if (event.code === 'Enter') {\r\n this.minimize();\r\n }\r\n }\r\n\r\n expandKeypress(event: KeyboardEvent) {\r\n if (event.code === 'Enter') {\r\n this.maximize();\r\n }\r\n }\r\n\r\n clickEvent(id){\r\n document.getElementById(id).className = 'success';\r\n if (localStorage.getItem('focusedPanel') === null) {\r\n localStorage.setItem('focusedPanel', id);\r\n } else if (localStorage.getItem('focusedPanel') !== id){\r\n document.getElementById(localStorage.getItem('focusedPanel')).className = 'AnswerCallFocused';\r\n localStorage.setItem('focusedPanel', id);\r\n }\r\n }\r\n}\r\n","<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\" (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","import { ILoginData } from './../../models/uilibrary.model';\r\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { NgForm } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'amc-login',\r\n templateUrl: './login.component.html',\r\n styleUrls: ['./login.component.css']\r\n})\r\nexport class LoginComponent implements OnInit {\r\n @Input() loginData: ILoginData;\r\n @Output() loginDetailsProvided = new EventEmitter<ILoginData>();\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n if (!this.loginData.header) {\r\n this.loginData.header = 'Login';\r\n }\r\n\r\n for (const field of this.loginData.fields) {\r\n if (!field.isInvalid) {\r\n field.isInvalid = false;\r\n }\r\n }\r\n }\r\n\r\n onLogin(loginForm: NgForm) {\r\n for (const field of this.loginData.fields) {\r\n field.value = loginForm.value[field.name];\r\n }\r\n\r\n this.loginDetailsProvided.emit(this.loginData);\r\n }\r\n\r\n focusOutOfInput(loginForm: NgForm, field) {\r\n if (!loginForm.controls[field.name].valid) {\r\n field.isInvalid = true;\r\n }\r\n }\r\n}\r\n","<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","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n Output,\r\n OnInit,\r\n OnChanges,\r\n OnDestroy\r\n} from '@angular/core';\r\nimport { debounceTime } from 'rxjs/operators';\r\nimport { Subject } from 'rxjs';\r\nimport { IActivity } from '../../models/IActivity';\r\nimport { IActivityDetails } from '../../models/IActivityDetails';\r\n\r\n@Component({\r\n selector: 'amc-recent-activity',\r\n templateUrl: './recent-activity.component.html',\r\n styleUrls: ['./recent-activity.component.css']\r\n})\r\nexport class RecentActivityComponent implements OnInit, OnChanges, OnDestroy {\r\n @Input() ActivityDetails: IActivity;\r\n @Input() isInConsoleView: boolean;\r\n @Input() quickCommentList: string[];\r\n @Input() workingScenarioID: string;\r\n @Input() idx: number;\r\n @Input() last: boolean;\r\n @Input() WhoObjectList: IActivityDetails[];\r\n @Input() WhatObjectList: IActivityDetails[];\r\n\r\n @Output() EventEmitter: EventEmitter<{\r\n eventName: string;\r\n idx: number;\r\n newValue?: IActivity;\r\n }>;\r\n\r\n private debouncer: Subject<void>;\r\n private eventList: Set<String>;\r\n\r\n constructor() {\r\n this.EventEmitter = new EventEmitter<{\r\n eventName: string;\r\n idx: number;\r\n newValue?: IActivity;\r\n }>();\r\n\r\n this.debouncer = new Subject();\r\n this.eventList = new Set();\r\n }\r\n\r\n ngOnChanges(): void {\r\n }\r\n\r\n getIcon(scenario): string {\r\n switch (scenario) {\r\n case 'Telephony':\r\n return '../../assets/images/Phone_Number_Icon.png';\r\n case 'Email':\r\n return '../../assets/images/emailTab.png';\r\n default:\r\n return '../../assets/images/chat.png';\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n this.debouncer.pipe(debounceTime(500)).subscribe(() => {\r\n const newEvent = {\r\n eventName: Array.from(this.eventList).join('|'),\r\n idx: this.idx,\r\n newValue: this.ActivityDetails\r\n };\r\n this.EventEmitter.emit(newEvent);\r\n this.eventList.clear();\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {}\r\n\r\n expandAndCollapseRecentActivity(isExpand: boolean) {\r\n if (isExpand) {\r\n this.EventEmitter.emit({\r\n eventName: 'WorkingEvtivityChanged',\r\n idx: this.idx,\r\n newValue: this.ActivityDetails\r\n });\r\n } else {\r\n this.EventEmitter.emit({\r\n eventName: 'WorkingEvtivityChanged',\r\n idx: -1,\r\n newValue: this.ActivityDetails\r\n });\r\n }\r\n }\r\n\r\n openActivity() {\r\n this.EventEmitter.emit({\r\n eventName: 'OpenCallActivity',\r\n idx: this.idx,\r\n newValue: this.ActivityDetails\r\n });\r\n }\r\n\r\n onSubjectChange() {\r\n this.eventList.add('ActivitySubjectChanged');\r\n this.debouncer.next();\r\n }\r\n\r\n onSubjectKeyUp() {\r\n this.eventList.add('ActivitySubjectChanged');\r\n this.debouncer.next();\r\n }\r\n\r\n onWhoObjectChange(event: any) {\r\n this.ActivityDetails.WhoObject = this.WhoObjectList.find((obj) => obj.objectId === event);\r\n this.EventEmitter.emit({\r\n eventName: 'ActivityWhoObjectChanged',\r\n idx: this.idx,\r\n newValue: this.ActivityDetails\r\n });\r\n }\r\n\r\n onRelatedToChange(event: any) {\r\n this.ActivityDetails.WhatObject = this.WhatObjectList.find((obj) => obj.objectId === event);\r\n this.EventEmitter.emit({\r\n eventName: 'ActivityWhatObjectChanged',\r\n idx: this.idx,\r\n newValue: this.ActivityDetails\r\n });\r\n }\r\n\r\n onCallNotesChange() {\r\n this.eventList.add('ActivityCallNoteChanged');\r\n this.debouncer.next();\r\n }\r\n\r\n onCallNotesKeyUp() {\r\n this.eventList.add('ActivityCallNoteChanged');\r\n this.debouncer.next();\r\n }\r\n\r\n addQuickCommentToDescription(comment: string) {\r\n if (this.ActivityDetails.Description) {\r\n this.ActivityDetails.Description += '\\n';\r\n }\r\n this.ActivityDetails.Description += comment;\r\n this.eventList.add('ActivityCallNoteChanged');\r\n this.debouncer.next();\r\n }\r\n\r\n submitActivity() {\r\n this.ActivityDetails.IsProcessing = true;\r\n this.EventEmitter.emit({\r\n eventName: 'SubmitActivity',\r\n idx: this.idx,\r\n newValue: this.ActivityDetails\r\n });\r\n }\r\n}\r\n","<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","import {\r\n AfterViewChecked,\r\n Component,\r\n EventEmitter,\r\n Input,\r\n Output\r\n} from '@angular/core';\r\nimport { IScenario } from '../../models/uilibrary.model';\r\n\r\n@Component({\r\n selector: 'amc-scenario',\r\n templateUrl: './scenario.component.html',\r\n styleUrls: ['./scenario.component.scss']\r\n})\r\nexport class ScenarioComponent implements AfterViewChecked {\r\n @Input() scenario: IScenario;\r\n @Output() minimizedChanged = new EventEmitter();\r\n @Output() isAgentTyping = new EventEmitter<boolean>();\r\n @Output() newMessage = new EventEmitter<string>();\r\n @Output() afterViewChecked = new EventEmitter();\r\n\r\n constructor() {}\r\n\r\n ngAfterViewChecked() {\r\n this.afterViewChecked.emit();\r\n }\r\n\r\n onMinimizedChanged() {\r\n this.minimizedChanged.emit();\r\n }\r\n}\r\n","<ng-container *ngIf=\"scenario && scenario.interactions\">\r\n <amc-interaction *ngFor=\"let interaction of scenario.interactions\" [interaction]=\"interaction\"\r\n (minimizedChanged)=\"onMinimizedChanged()\" (isAgentTyping)=\"isAgentTyping.emit($event)\"\r\n (newMessage)=\"newMessage.emit($event)\">\r\n </amc-interaction>\r\n</ng-container>\r\n","import {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n OnChanges,\r\n SimpleChanges\r\n} from '@angular/core';\r\nimport * as api from '@amc-technology/davinci-api';\r\nimport { IActivity } from '../../models/IActivity';\r\n\r\n@Component({\r\n selector: 'amc-search-information',\r\n templateUrl: './search-information.component.html',\r\n styleUrls: ['./search-information.component.css']\r\n})\r\nexport class SearchInformationComponent implements OnChanges {\r\n @Input() ActivityDetails: IActivity;\r\n @Input() searchLayout: api.SearchLayouts;\r\n @Input() searchRecordList: Array<api.IRecordItem>;\r\n @Output() agentSelectedCallerInformation: EventEmitter<{\r\n id: string;\r\n value: string;\r\n }>;\r\n\r\n isSearchInformationMaximized: boolean;\r\n imageLocation: string;\r\n singleMatchIconSrc: string;\r\n singleMatchData: any;\r\n multiMatchData: any[];\r\n shouldShowAllMultiMatchOptions: boolean;\r\n selectedMultiMatchIndex: number;\r\n\r\n constructor() {\r\n this.isSearchInformationMaximized = true;\r\n this.singleMatchData = null;\r\n this.multiMatchData = [];\r\n this.agentSelectedCallerInformation = new EventEmitter();\r\n this.selectedMultiMatchIndex = 0;\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes['searchRecordList']) {\r\n this.renderData();\r\n }\r\n }\r\n\r\n onAgentSelectedCallerInformation(event: any) {\r\n try {\r\n const selectedId = event.target.id;\r\n const selectedIndex = this.searchRecordList.findIndex(r => r.id === selectedId);\r\n if (selectedIndex >= 0) {\r\n this.selectedMultiMatchIndex = selectedIndex;\r\n }\r\n this.shouldShowAllMultiMatchOptions = false;\r\n this.agentSelectedCallerInformation.emit({\r\n id: event.target.id,\r\n value: event.target.value\r\n });\r\n } catch (error) {}\r\n }\r\n\r\n protected renderData() {\r\n try {\r\n this.singleMatchData = null;\r\n this.multiMatchData = [];\r\n this.shouldShowAllMultiMatchOptions = false;\r\n this.selectedMultiMatchIndex = 0;\r\n if (this.searchRecordList.length === 1) {\r\n this.singleMatchData = this.parseSearchRecordForNameSingleMatch(\r\n this.searchRecordList[0]\r\n );\r\n } else if (this.searchRecordList.length > 1) {\r\n for (let i = 0; i < this.searchRecordList.length; i++) {\r\n this.multiMatchData.push(\r\n this.parseSearchRecordForNameMultiMatch(this.searchRecordList[i])\r\n );\r\n }\r\n }\r\n } catch (error) {}\r\n }\r\n\r\n protected parseSearchRecordForNameSingleMatch(searchRecord: api.IRecordItem) {\r\n const results = [];\r\n try {\r\n const src = this.getEntityImgToDisplay(searchRecord);\r\n this.singleMatchIconSrc = src;\r\n const sLayoutInfo = this.getSearchLayoutInfoForDisplay(searchRecord);\r\n for (let j = 0; j < sLayoutInfo.DisplayFields.length; j++) {\r\n if (sLayoutInfo.DisplayFields && sLayoutInfo.DisplayFields[j].DevName) {\r\n const nameKey = sLayoutInfo.DisplayFields[j].DevName;\r\n const keys = Object.keys(searchRecord.fields);\r\n for (let i = 0; i < keys.length; i++) {\r\n if (\r\n searchRecord.fields[keys[i]] &&\r\n searchRecord.fields[keys[i]].DevName === nameKey\r\n ) {\r\n let displayRecord = searchRecord.fields[keys[i]].Value;\r\n if (j === 0) {\r\n displayRecord = searchRecord.displayName\r\n ? [searchRecord.displayName, displayRecord]\r\n : [searchRecord.type, displayRecord];\r\n } else {\r\n displayRecord = sLayoutInfo.DisplayFields[j].DisplayName\r\n ? [sLayoutInfo.DisplayFields[j].DisplayName, displayRecord]\r\n : [sLayoutInfo.DisplayFields[j].DevName, displayRecord];\r\n }\r\n results.push(displayRecord);\r\n }\r\n }\r\n }\r\n }\r\n } catch (error) {}\r\n return results;\r\n }\r\n\r\n protected parseSearchRecordForNameMultiMatch(searchRecord: api.IRecordItem) {\r\n const results = [];\r\n try {\r\n const src = this.getEntityImgToDisplay(searchRecord);\r\n const sLayoutInfo = this.getSearchLayoutInfoForDisplay(searchRecord);\r\n for (let j = 0; j < sLayoutInfo.DisplayFields.length; j++) {\r\n if (sLayoutInfo.DisplayFields && sLayoutInfo.DisplayFields[j].DevName) {\r\n const nameKey = sLayoutInfo.DisplayFields[j].DevName;\r\n const keys = Object.keys(searchRecord.fields);\r\n for (let i = 0; i < keys.length; i++) {\r\n if (\r\n searchRecord.fields[keys[i]] &&\r\n searchRecord.fields[keys[i]].DevName === nameKey\r\n ) {\r\n let displayRecord = searchRecord.fields[keys[i]].Value;\r\n if (j === 0) {\r\n displayRecord = searchRecord.displayName\r\n ? [searchRecord.displayName, displayRecord]\r\n : [searchRecord.type, displayRecord];\r\n } else {\r\n displayRecord = sLayoutInfo.DisplayFields[j].DisplayName\r\n ? [sLayoutInfo.DisplayFields[j].DisplayName, displayRecord]\r\n : [sLayoutInfo.DisplayFields[j].DevName, displayRecord];\r\n }\r\n displayRecord.push(src);\r\n results.push(displayRecord);\r\n return results;\r\n }\r\n }\r\n }\r\n }\r\n } catch (error) {}\r\n return results;\r\n }\r\n\r\n protected getEntityImgToDisplay(searchRecord: api.IRecordItem) {\r\n let src = '';\r\n try {\r\n if (searchRecord.type) {\r\n if (searchRecord.type.toUpperCase() === 'CONTACT') {\r\n src = '../../assets/images/Icon_Contact.png';\r\n } else if (searchRecord.type.toUpperCase() === 'ACCOUNT') {\r\n src = '../../assets/images/Icon_Account.png';\r\n } else if (searchRecord.type.toUpperCase() === 'LEAD') {\r\n src = '../../assets/images/Icon_Lead.png';\r\n } else {\r\n src = '../../assets/images/Miscellaneous_Icon.png';\r\n }\r\n }\r\n } catch (error) {}\r\n return src;\r\n }\r\n\r\n protected getSearchLayoutInfoForDisplay(searchRecord: api.IRecordItem) {\r\n let layoutInfo: any;\r\n try {\r\n layoutInfo = this.searchLayout.layouts[0][\r\n this.ActivityDetails.CallType\r\n ].find((i) => i.DevName === searchRecord.type);\r\n } catch (error) {}\r\n return layoutInfo;\r\n }\r\n}\r\n","<div class=\"callDisplay\">\r\n <div class=\"editor searchInfoHeader\">\r\n <label class=\"headerLabel\">\r\n <b>Caller Information</b>\r\n </label>\r\n <span\r\n *ngIf=\"this.searchRecordList.length > 1\"\r\n class=\"multiMatchBadge\"\r\n >{{ this.searchRecordList.length }} matches</span>\r\n <img\r\n *ngIf=\"isSearchInformationMaximized\"\r\n class=\"ViewResizeImage\"\r\n src=\"assets/images/section_collapse.png\"\r\n (click)=\"isSearchInformationMaximized = false\"\r\n title=\"Collapse\"\r\n />\r\n <img\r\n *ngIf=\"!isSearchInformationMaximized\"\r\n class=\"ViewResizeImage\"\r\n src=\"assets/images/section_expand.png\"\r\n (click)=\"isSearchInformationMaximized = true\"\r\n title=\"Expand\"\r\n />\r\n </div>\r\n <div class=\"callBody\" *ngIf=\"isSearchInformationMaximized\">\r\n <div *ngIf=\"this.searchRecordList.length > 1 && this.multiMatchData.length > 0\">\r\n <span class=\"overflowWrapper\">\r\n <img\r\n class=\"CRMResultImageMultiMatch\"\r\n src=\"{{ this.multiMatchData[selectedMultiMatchIndex]?.[0]?.[2] }}\"\r\n />\r\n <input\r\n id=\"{{ this.searchRecordList[selectedMultiMatchIndex].id }}\"\r\n name=\"{{ this.multiMatchData[selectedMultiMatchIndex]?.[0]?.[1] }}\"\r\n (click)=\"onAgentSelectedCallerInformation($event)\"\r\n readonly\r\n class=\"multiMatchLabel\"\r\n title=\"{{ this.multiMatchData[selectedMultiMatchIndex]?.[0]?.[1] }}\"\r\n type=\"text\"\r\n value=\"{{ this.multiMatchData[selectedMultiMatchIndex]?.[0]?.[1] }}\"\r\n />\r\n <span style=\"float: right; margin-right: 4%;\">\r\n <img\r\n *ngIf=\"!this.shouldShowAllMultiMatchOptions\"\r\n class=\"CRMExpandImage\"\r\n src=\"../../assets/images/down-arrow.png\"\r\n (click)=\"shouldShowAllMultiMatchOptions = true\"\r\n />\r\n <img\r\n *ngIf=\"this.shouldShowAllMultiMatchOptions\"\r\n class=\"CRMExpandImage\"\r\n src=\"../../assets/images/up-arrow.png\"\r\n (click)=\"shouldShowAllMultiMatchOptions = false\"\r\n />\r\n </span>\r\n </span>\r\n <div *ngIf=\"this.shouldShowAllMultiMatchOptions\">\r\n <div *ngFor=\"let i of this.multiMatchData; let index = index\">\r\n <span\r\n *ngIf=\"index !== selectedMultiMatchIndex && i?.[0]\"\r\n class=\"overflowWrapper\"\r\n >\r\n <img class=\"CRMResultImageMultiMatch\" src=\"{{ i[0][2] }}\" />\r\n <input\r\n id=\"{{ this.searchRecordList[index].id }}\"\r\n name=\"{{ i[0][1] }}\"\r\n readonly\r\n class=\"multiMatchLabel\"\r\n (click)=\"onAgentSelectedCallerInformation($event)\"\r\n title=\"{{ i[0][1] }}\"\r\n type=\"text\"\r\n value=\"{{ i[0][1] }}\"\r\n />\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Below is the HTML loaded on Single Match -->\r\n <div *ngIf=\"this.searchRecordList.length === 1\">\r\n <div\r\n class=\"editorFull displayDiv\"\r\n *ngFor=\"\r\n let i of this.singleMatchData | slice: 0:1;\r\n let index = index;\r\n let first = first\r\n \"\r\n >\r\n <span class=\"overflowWrapper\">\r\n <img\r\n id=\"EntityIcon\"\r\n src=\"{{ this.singleMatchIconSrc }}\"\r\n class=\"CRMResultImage\"\r\n />\r\n <input\r\n class=\"singleSearchResultSelect singleMatchFirstWrapper \"\r\n id=\"{{ this.searchRecordList[0].id }}\"\r\n [class.firstSingleMatchResult]=\"first\"\r\n value=\"{{ i[1] }}\"\r\n title=\"{{ i[1] }}\"\r\n (click)=\"onAgentSelectedCallerInformation($event)\"\r\n readonly\r\n />\r\n </span>\r\n </div>\r\n <div\r\n class=\"editorFull displayDiv\"\r\n *ngFor=\"\r\n let i of this.singleMatchData | slice: 1;\r\n let index = index;\r\n let first = first\r\n \"\r\n >\r\n <span class=\"overflowWrapper\">\r\n <label title=\"{{ i[0] }}\" class=\"displayLabelsTabbed\">{{\r\n i[0]\r\n }}</label>\r\n <input\r\n class=\"singleSearchResultSelect singleMatchTabbedItemsWrapper singleMatchLabel\"\r\n id=\"{{ this.searchRecordList[0].id }}\"\r\n value=\"{{ i[1] }}\"\r\n title=\"{{ i[1] }}\"\r\n readonly\r\n />\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n","import { Injector, NgModule, DoBootstrap } from '@angular/core';\r\nimport { createCustomElement } from '@angular/elements';\r\nimport { ActivityComponent } from './components/activity/activity.component';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { ChatBoxComponent } from './components/chat-box/chat-box.component';\r\nimport { ChatMessageComponent } from './components/chat-message/chat-message.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CreateComponent } from './components/create/create.component';\r\nimport { CurrentActivityComponent } from './components/current-activity/current-activity.component';\r\nimport { DispositionComponent } from './components/disposition/disposition.component';\r\nimport { DurationComponent } from './components/duration/duration.component';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { HoldTimerComponent } from './components/hold-timer/hold-timer.component';\r\nimport { InteractionComponent } from './components/interaction/interaction.component';\r\nimport { LoginComponent } from './components/login/login.component';\r\nimport { MatTabsModule } from '@angular/material/tabs';\r\nimport { OperationComponent } from './components/operation/operation.component';\r\nimport { PropertyComponent } from './components/property/property.component';\r\nimport { RecentActivityComponent } from './components/recent-activity/recent-activity.component';\r\nimport { ScenarioComponent } from './components/scenario/scenario.component';\r\nimport { SearchInformationComponent } from './components/search-information/search-information.component';\r\n\r\n@NgModule({\r\n imports: [BrowserModule, CommonModule, FormsModule, MatTabsModule],\r\n declarations: [\r\n InteractionComponent,\r\n ScenarioComponent,\r\n OperationComponent,\r\n PropertyComponent,\r\n HoldTimerComponent,\r\n DurationComponent,\r\n ChatBoxComponent,\r\n ChatMessageComponent,\r\n DispositionComponent,\r\n ActivityComponent,\r\n LoginComponent,\r\n CreateComponent,\r\n RecentActivityComponent,\r\n CurrentActivityComponent,\r\n SearchInformationComponent\r\n ],\r\n providers: [],\r\n bootstrap: [],\r\n exports: [ScenarioComponent, DispositionComponent, LoginComponent, CreateComponent, RecentActivityComponent, CurrentActivityComponent, SearchInformationComponent]\r\n})\r\nexport class UILibraryModule implements DoBootstrap{\r\n constructor(private injector: Injector) { }\r\n\r\n ngDoBootstrap(app) {\r\n if (!customElements.get('amc-webcomponents-scenario')) {\r\n\r\n // const strategyFactory = new ElementZoneStrategyFactory(\r\n // ScenarioComponent,\r\n // this.injector\r\n // );\r\n customElements.define(\r\n 'amc-webcomponents-scenario',\r\n createCustomElement(ScenarioComponent, {\r\n injector: this.injector,\r\n // strategyFactory: strategyFactory\r\n })\r\n );\r\n }\r\n if (!customElements.get('amc-webcomponents-disposition')) {\r\n // const strategyFactory = new ElementZoneStrategyFactory(\r\n // DispositionComponent,\r\n // this.injector\r\n // );\r\n customElements.define(\r\n 'amc-webcomponents-disposition',\r\n createCustomElement(DispositionComponent, {\r\n injector: this.injector,\r\n // strategyFactory: strategyFactory\r\n })\r\n );\r\n }\r\n if (!customElements.get('amc-webcomponents-login')) {\r\n // const strategyFactory = new ElementZoneStrategyFactory(\r\n // LoginComponent,\r\n // this.injector\r\n // );\r\n customElements.define(\r\n 'amc-webcomponents-login',\r\n createCustomElement(LoginComponent, {\r\n injector: this.injector,\r\n // strategyFactory: strategyFactory\r\n })\r\n );\r\n }\r\n }\r\n}\r\n\r\nexport * from './models/uilibrary.model';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i3.ChatMessageComponent","i2.OperationComponent","i3.PropertyComponent","i4.HoldTimerComponent","i5.DurationComponent","i6.ChatBoxComponent","i2.InteractionComponent"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@amc-technology/ui-library",
3
- "version": "1.0.104",
3
+ "version": "1.0.105",
4
4
  "license": "MIT",
5
5
  "private": false,
6
6
  "dependencies": {
@@ -1,4 +1,4 @@
1
- import { EventEmitter, OnChanges } from '@angular/core';
1
+ import { EventEmitter, OnChanges, SimpleChanges } from '@angular/core';
2
2
  import * as api from '@amc-technology/davinci-api';
3
3
  import { IActivity } from '../../models/IActivity';
4
4
  import * as i0 from "@angular/core";
@@ -16,8 +16,9 @@ export declare class SearchInformationComponent implements OnChanges {
16
16
  singleMatchData: any;
17
17
  multiMatchData: any[];
18
18
  shouldShowAllMultiMatchOptions: boolean;
19
+ selectedMultiMatchIndex: number;
19
20
  constructor();
20
- ngOnChanges(): void;
21
+ ngOnChanges(changes: SimpleChanges): void;
21
22
  onAgentSelectedCallerInformation(event: any): void;
22
23
  protected renderData(): void;
23
24
  protected parseSearchRecordForNameSingleMatch(searchRecord: api.IRecordItem): any[];