tango-app-ui-manage-tickets 3.7.0-beta.58 → 3.7.0-beta.60
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.json +37 -0
- package/ng-package.json +7 -0
- package/package.json +12 -25
- package/src/lib/components/add-csm-modal/add-csm-modal.component.html +32 -0
- package/src/lib/components/add-csm-modal/add-csm-modal.component.scss +14 -0
- package/src/lib/components/add-csm-modal/add-csm-modal.component.spec.ts +23 -0
- package/src/lib/components/add-csm-modal/add-csm-modal.component.ts +94 -0
- package/src/lib/components/audit-log/audit-log.component.html +1 -0
- package/src/lib/components/audit-log/audit-log.component.scss +0 -0
- package/src/lib/components/audit-log/audit-log.component.spec.ts +23 -0
- package/src/lib/components/audit-log/audit-log.component.ts +10 -0
- package/src/lib/components/audit-mapping-list/audit-mapping-list.component.html +234 -0
- package/src/lib/components/audit-mapping-list/audit-mapping-list.component.scss +186 -0
- package/src/lib/components/audit-mapping-list/audit-mapping-list.component.spec.ts +23 -0
- package/src/lib/components/audit-mapping-list/audit-mapping-list.component.ts +520 -0
- package/src/lib/components/audit-metrics/audit-metrics.component.html +345 -0
- package/src/lib/components/audit-metrics/audit-metrics.component.scss +34 -0
- package/src/lib/components/audit-metrics/audit-metrics.component.spec.ts +23 -0
- package/src/lib/components/audit-metrics/audit-metrics.component.ts +292 -0
- package/src/lib/components/audit-report-popup/audit-report-popup.component.html +111 -0
- package/src/lib/components/audit-report-popup/audit-report-popup.component.scss +101 -0
- package/src/lib/components/audit-report-popup/audit-report-popup.component.spec.ts +23 -0
- package/src/lib/components/audit-report-popup/audit-report-popup.component.ts +397 -0
- package/src/lib/components/audit-retag/audit-retag.component.html +129 -0
- package/src/lib/components/audit-retag/audit-retag.component.scss +146 -0
- package/src/lib/components/audit-retag/audit-retag.component.spec.ts +23 -0
- package/src/lib/components/audit-retag/audit-retag.component.ts +489 -0
- package/src/lib/components/comment-model/comment-model.component.html +24 -0
- package/src/lib/components/comment-model/comment-model.component.scss +20 -0
- package/src/lib/components/comment-model/comment-model.component.spec.ts +23 -0
- package/src/lib/components/comment-model/comment-model.component.ts +53 -0
- package/src/lib/components/count/count.component.html +54 -0
- package/src/lib/components/count/count.component.scss +14 -0
- package/src/lib/components/count/count.component.spec.ts +23 -0
- package/src/lib/components/count/count.component.ts +82 -0
- package/src/lib/components/custom-select/custom-select.component.html +134 -0
- package/src/lib/components/custom-select/custom-select.component.scss +204 -0
- package/src/lib/components/custom-select/custom-select.component.spec.ts +23 -0
- package/src/lib/components/custom-select/custom-select.component.ts +189 -0
- package/src/lib/components/filter-options/filter-options.component.html +51 -0
- package/src/lib/components/filter-options/filter-options.component.scss +102 -0
- package/src/lib/components/filter-options/filter-options.component.spec.ts +23 -0
- package/src/lib/components/filter-options/filter-options.component.ts +38 -0
- package/src/lib/components/footfall-dic/footfall-dic.component.html +1275 -0
- package/src/lib/components/footfall-dic/footfall-dic.component.scss +273 -0
- package/src/lib/components/footfall-dic/footfall-dic.component.spec.ts +23 -0
- package/src/lib/components/footfall-dic/footfall-dic.component.ts +1206 -0
- package/src/lib/components/footfall-dicview/footfall-dicview.component.html +1136 -0
- package/src/lib/components/footfall-dicview/footfall-dicview.component.scss +416 -0
- package/src/lib/components/footfall-dicview/footfall-dicview.component.spec.ts +23 -0
- package/src/lib/components/footfall-dicview/footfall-dicview.component.ts +1168 -0
- package/src/lib/components/footfall-popup/footfall-popup.component.html +61 -0
- package/src/lib/components/footfall-popup/footfall-popup.component.scss +20 -0
- package/src/lib/components/footfall-popup/footfall-popup.component.spec.ts +23 -0
- package/src/lib/components/footfall-popup/footfall-popup.component.ts +12 -0
- package/src/lib/components/group-select/group-select.component.html +44 -0
- package/src/lib/components/group-select/group-select.component.scss +144 -0
- package/src/lib/components/group-select/group-select.component.spec.ts +23 -0
- package/src/lib/components/group-select/group-select.component.ts +145 -0
- package/src/lib/components/re-trigger/re-trigger.component.html +53 -0
- package/src/lib/components/re-trigger/re-trigger.component.scss +16 -0
- package/src/lib/components/re-trigger/re-trigger.component.spec.ts +23 -0
- package/src/lib/components/re-trigger/re-trigger.component.ts +96 -0
- package/src/lib/components/reactive-select/reactive-select.component.html +18 -0
- package/src/lib/components/reactive-select/reactive-select.component.scss +52 -0
- package/src/lib/components/reactive-select/reactive-select.component.spec.ts +23 -0
- package/src/lib/components/reactive-select/reactive-select.component.ts +104 -0
- package/src/lib/components/remove-audit/remove-audit.component.html +38 -0
- package/src/lib/components/remove-audit/remove-audit.component.scss +27 -0
- package/src/lib/components/remove-audit/remove-audit.component.spec.ts +23 -0
- package/src/lib/components/remove-audit/remove-audit.component.ts +81 -0
- package/src/lib/components/start-audit/start-audit.component.html +174 -0
- package/src/lib/components/start-audit/start-audit.component.scss +185 -0
- package/src/lib/components/start-audit/start-audit.component.spec.ts +23 -0
- package/src/lib/components/start-audit/start-audit.component.ts +761 -0
- package/src/lib/components/tango-manage-tickets/tango-manage-tickets.component.html +43 -0
- package/src/lib/components/tango-manage-tickets/tango-manage-tickets.component.scss +35 -0
- package/src/lib/components/tango-manage-tickets/tango-manage-tickets.component.spec.ts +23 -0
- package/src/lib/components/tango-manage-tickets/tango-manage-tickets.component.ts +118 -0
- package/src/lib/components/ticket-filter-panel/ticket-filter-panel.component.html +386 -0
- package/src/lib/components/ticket-filter-panel/ticket-filter-panel.component.scss +87 -0
- package/src/lib/components/ticket-filter-panel/ticket-filter-panel.component.spec.ts +23 -0
- package/src/lib/components/ticket-filter-panel/ticket-filter-panel.component.ts +494 -0
- package/src/lib/components/ticket-footfall-new/ticket-footfall-new.component.html +4743 -0
- package/src/lib/components/ticket-footfall-new/ticket-footfall-new.component.scss +1208 -0
- package/src/lib/components/ticket-footfall-new/ticket-footfall-new.component.spec.ts +23 -0
- package/src/lib/components/ticket-footfall-new/ticket-footfall-new.component.ts +3351 -0
- package/src/lib/components/ticketclosepopup/ticketclosepopup.component.html +100 -0
- package/src/lib/components/ticketclosepopup/ticketclosepopup.component.scss +34 -0
- package/src/lib/components/ticketclosepopup/ticketclosepopup.component.spec.ts +23 -0
- package/src/lib/components/ticketclosepopup/ticketclosepopup.component.ts +48 -0
- package/src/lib/components/tickets/tickets.component.html +451 -0
- package/src/lib/components/tickets/tickets.component.scss +131 -0
- package/src/lib/components/tickets/tickets.component.spec.ts +23 -0
- package/src/lib/components/tickets/tickets.component.ts +809 -0
- package/src/lib/components/viewcategory/viewcategory.component.html +38 -0
- package/src/lib/components/viewcategory/viewcategory.component.scss +29 -0
- package/src/lib/components/viewcategory/viewcategory.component.spec.ts +23 -0
- package/src/lib/components/viewcategory/viewcategory.component.ts +79 -0
- package/src/lib/services/audit.service.spec.ts +16 -0
- package/src/lib/services/audit.service.ts +98 -0
- package/src/lib/services/excel.service.ts +48 -0
- package/src/lib/services/ticket.service.spec.ts +16 -0
- package/src/lib/services/ticket.service.ts +501 -0
- package/src/lib/services/timer.service.spec.ts +16 -0
- package/src/lib/services/timer.service.ts +92 -0
- package/src/lib/tango-manage-tickets-routing.module.ts +37 -0
- package/src/lib/tango-manage-tickets.module.ts +68 -0
- package/{public-api.d.ts → src/public-api.ts} +8 -2
- package/tsconfig.lib.json +14 -0
- package/tsconfig.lib.prod.json +10 -0
- package/tsconfig.spec.json +14 -0
- package/esm2022/lib/components/add-csm-modal/add-csm-modal.component.mjs +0 -98
- package/esm2022/lib/components/audit-log/audit-log.component.mjs +0 -11
- package/esm2022/lib/components/audit-mapping-list/audit-mapping-list.component.mjs +0 -486
- package/esm2022/lib/components/audit-metrics/audit-metrics.component.mjs +0 -298
- package/esm2022/lib/components/audit-report-popup/audit-report-popup.component.mjs +0 -389
- package/esm2022/lib/components/audit-retag/audit-retag.component.mjs +0 -470
- package/esm2022/lib/components/comment-model/comment-model.component.mjs +0 -58
- package/esm2022/lib/components/count/count.component.mjs +0 -89
- package/esm2022/lib/components/custom-select/custom-select.component.mjs +0 -187
- package/esm2022/lib/components/filter-options/filter-options.component.mjs +0 -41
- package/esm2022/lib/components/footfall-dic/footfall-dic.component.mjs +0 -1061
- package/esm2022/lib/components/footfall-dicview/footfall-dicview.component.mjs +0 -1014
- package/esm2022/lib/components/footfall-popup/footfall-popup.component.mjs +0 -15
- package/esm2022/lib/components/group-select/group-select.component.mjs +0 -155
- package/esm2022/lib/components/re-trigger/re-trigger.component.mjs +0 -96
- package/esm2022/lib/components/reactive-select/reactive-select.component.mjs +0 -108
- package/esm2022/lib/components/remove-audit/remove-audit.component.mjs +0 -81
- package/esm2022/lib/components/start-audit/start-audit.component.mjs +0 -761
- package/esm2022/lib/components/tango-manage-tickets/tango-manage-tickets.component.mjs +0 -131
- package/esm2022/lib/components/ticket-filter-panel/ticket-filter-panel.component.mjs +0 -435
- package/esm2022/lib/components/ticket-footfall-new/ticket-footfall-new.component.mjs +0 -2673
- package/esm2022/lib/components/ticketclosepopup/ticketclosepopup.component.mjs +0 -43
- package/esm2022/lib/components/tickets/tickets.component.mjs +0 -847
- package/esm2022/lib/components/viewcategory/viewcategory.component.mjs +0 -89
- package/esm2022/lib/services/audit.service.mjs +0 -88
- package/esm2022/lib/services/excel.service.mjs +0 -45
- package/esm2022/lib/services/ticket.service.mjs +0 -314
- package/esm2022/lib/services/timer.service.mjs +0 -84
- package/esm2022/lib/tango-manage-tickets-routing.module.mjs +0 -44
- package/esm2022/lib/tango-manage-tickets.module.mjs +0 -109
- package/esm2022/public-api.mjs +0 -6
- package/esm2022/tango-app-ui-manage-tickets.mjs +0 -5
- package/fesm2022/tango-app-ui-manage-tickets.mjs +0 -10083
- package/fesm2022/tango-app-ui-manage-tickets.mjs.map +0 -1
- package/index.d.ts +0 -5
- package/lib/components/add-csm-modal/add-csm-modal.component.d.ts +0 -30
- package/lib/components/audit-log/audit-log.component.d.ts +0 -5
- package/lib/components/audit-mapping-list/audit-mapping-list.component.d.ts +0 -73
- package/lib/components/audit-metrics/audit-metrics.component.d.ts +0 -59
- package/lib/components/audit-report-popup/audit-report-popup.component.d.ts +0 -52
- package/lib/components/audit-retag/audit-retag.component.d.ts +0 -59
- package/lib/components/comment-model/comment-model.component.d.ts +0 -17
- package/lib/components/count/count.component.d.ts +0 -23
- package/lib/components/custom-select/custom-select.component.d.ts +0 -35
- package/lib/components/filter-options/filter-options.component.d.ts +0 -15
- package/lib/components/footfall-dic/footfall-dic.component.d.ts +0 -143
- package/lib/components/footfall-dicview/footfall-dicview.component.d.ts +0 -132
- package/lib/components/footfall-popup/footfall-popup.component.d.ts +0 -8
- package/lib/components/group-select/group-select.component.d.ts +0 -33
- package/lib/components/re-trigger/re-trigger.component.d.ts +0 -32
- package/lib/components/reactive-select/reactive-select.component.d.ts +0 -32
- package/lib/components/remove-audit/remove-audit.component.d.ts +0 -16
- package/lib/components/start-audit/start-audit.component.d.ts +0 -86
- package/lib/components/tango-manage-tickets/tango-manage-tickets.component.d.ts +0 -28
- package/lib/components/ticket-filter-panel/ticket-filter-panel.component.d.ts +0 -79
- package/lib/components/ticket-footfall-new/ticket-footfall-new.component.d.ts +0 -286
- package/lib/components/ticketclosepopup/ticketclosepopup.component.d.ts +0 -15
- package/lib/components/tickets/tickets.component.d.ts +0 -88
- package/lib/components/viewcategory/viewcategory.component.d.ts +0 -16
- package/lib/services/audit.service.d.ts +0 -36
- package/lib/services/excel.service.d.ts +0 -10
- package/lib/services/ticket.service.d.ts +0 -85
- package/lib/services/timer.service.d.ts +0 -22
- package/lib/tango-manage-tickets-routing.module.d.ts +0 -7
- package/lib/tango-manage-tickets.module.d.ts +0 -38
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import { Component, Input } from '@angular/core';
|
|
2
|
-
import { Subject, takeUntil } from 'rxjs';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "@ng-bootstrap/ng-bootstrap";
|
|
5
|
-
import * as i2 from "../../services/ticket.service";
|
|
6
|
-
import * as i3 from "tango-app-ui-shared";
|
|
7
|
-
import * as i4 from "@angular/forms";
|
|
8
|
-
export class CommentModelComponent {
|
|
9
|
-
activeModal;
|
|
10
|
-
service;
|
|
11
|
-
toast;
|
|
12
|
-
ticketId;
|
|
13
|
-
comment = "";
|
|
14
|
-
destroy$ = new Subject();
|
|
15
|
-
constructor(activeModal, service, toast) {
|
|
16
|
-
this.activeModal = activeModal;
|
|
17
|
-
this.service = service;
|
|
18
|
-
this.toast = toast;
|
|
19
|
-
}
|
|
20
|
-
cancel() {
|
|
21
|
-
this.activeModal.close();
|
|
22
|
-
}
|
|
23
|
-
commentSubmit() {
|
|
24
|
-
if (this.comment == '') {
|
|
25
|
-
return this.toast.getErrorToast("Please Enter Any comment");
|
|
26
|
-
}
|
|
27
|
-
let obj = {
|
|
28
|
-
"ticketId": this.ticketId,
|
|
29
|
-
"primary": "",
|
|
30
|
-
"secondary": [],
|
|
31
|
-
"comment": this.comment,
|
|
32
|
-
};
|
|
33
|
-
this.service
|
|
34
|
-
.updateTicketIssue(obj)
|
|
35
|
-
.pipe(takeUntil(this.destroy$))
|
|
36
|
-
.subscribe({
|
|
37
|
-
next: (res) => {
|
|
38
|
-
if (res && res.code === 200) {
|
|
39
|
-
this.toast.getSuccessToast(res.message);
|
|
40
|
-
this.activeModal.close("submit");
|
|
41
|
-
}
|
|
42
|
-
},
|
|
43
|
-
error: (err) => {
|
|
44
|
-
this.toast.getErrorToast(err.error.error ? err.error.error : err.error);
|
|
45
|
-
},
|
|
46
|
-
complete: () => { },
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CommentModelComponent, deps: [{ token: i1.NgbActiveModal }, { token: i2.TicketService }, { token: i3.ToastService }], target: i0.ɵɵFactoryTarget.Component });
|
|
50
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CommentModelComponent, selector: "lib-comment-model", inputs: { ticketId: "ticketId" }, ngImport: i0, template: "<div class=\"card py-0\">\r\n <div class=\"card-body py-0 d-flex flex-start flex-column p-9 \">\r\n <div class=\"my-5\">\r\n <div class=\"symbol symbol-75px symbol-circle\">\r\n <svg width=\"56\" height=\"56\" viewBox=\"0 0 56 56\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#DAF1FF\"/>\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#EAF8FF\" stroke-width=\"8\"/>\r\n <path d=\"M37 31C37 31.5304 36.7893 32.0391 36.4142 32.4142C36.0391 32.7893 35.5304 33 35 33H23L19 37V21C19 20.4696 19.2107 19.9609 19.5858 19.5858C19.9609 19.2107 20.4696 19 21 19H35C35.5304 19 36.0391 19.2107 36.4142 19.5858C36.7893 19.9609 37 20.4696 37 21V31Z\" stroke=\"#00A3FF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </div>\r\n </div>\r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">Comment</a>\r\n <p class=\"text-sub\">Add comment for the ticket</p>\r\n <div class=\"w-100\">\r\n <label class=\"label my-2\">Comments</label>\r\n <textarea class=\"form-control\" [(ngModel)]=\"comment\" rows=\"4\" type=\"text\"></textarea>\r\n\r\n <div class=\"d-flex my-7\" role=\"group\">\r\n <button class=\"btn btn-outline w-100 me-3\" (click)=\"cancel()\">Cancel</button>\r\n <button class=\"btn btn-primary w-100 ms-3\" (click)=\"commentSubmit()\">Submit</button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: ["::ng-deep .modal-content{border-radius:12px!important;overflow:unset!important}::ng-deep ngb-modal-window .component-host-scrollable{overflow:unset!important}.text-sub{color:var(--Gray-500, #667085)!important;font-size:14px;font-weight:400;line-height:20px}.label{color:var(--Gray-700, #344054)!important;font-size:14px;font-weight:500;line-height:20px}\n"], dependencies: [{ kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
|
|
51
|
-
}
|
|
52
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CommentModelComponent, decorators: [{
|
|
53
|
-
type: Component,
|
|
54
|
-
args: [{ selector: 'lib-comment-model', template: "<div class=\"card py-0\">\r\n <div class=\"card-body py-0 d-flex flex-start flex-column p-9 \">\r\n <div class=\"my-5\">\r\n <div class=\"symbol symbol-75px symbol-circle\">\r\n <svg width=\"56\" height=\"56\" viewBox=\"0 0 56 56\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" fill=\"#DAF1FF\"/>\r\n <rect x=\"4\" y=\"4\" width=\"48\" height=\"48\" rx=\"24\" stroke=\"#EAF8FF\" stroke-width=\"8\"/>\r\n <path d=\"M37 31C37 31.5304 36.7893 32.0391 36.4142 32.4142C36.0391 32.7893 35.5304 33 35 33H23L19 37V21C19 20.4696 19.2107 19.9609 19.5858 19.5858C19.9609 19.2107 20.4696 19 21 19H35C35.5304 19 36.0391 19.2107 36.4142 19.5858C36.7893 19.9609 37 20.4696 37 21V31Z\" stroke=\"#00A3FF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </div>\r\n </div>\r\n <a class=\"fs-4 text-gray-800 text-hover-primary fw-bold mb-0 title cursor-pointer\">Comment</a>\r\n <p class=\"text-sub\">Add comment for the ticket</p>\r\n <div class=\"w-100\">\r\n <label class=\"label my-2\">Comments</label>\r\n <textarea class=\"form-control\" [(ngModel)]=\"comment\" rows=\"4\" type=\"text\"></textarea>\r\n\r\n <div class=\"d-flex my-7\" role=\"group\">\r\n <button class=\"btn btn-outline w-100 me-3\" (click)=\"cancel()\">Cancel</button>\r\n <button class=\"btn btn-primary w-100 ms-3\" (click)=\"commentSubmit()\">Submit</button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: ["::ng-deep .modal-content{border-radius:12px!important;overflow:unset!important}::ng-deep ngb-modal-window .component-host-scrollable{overflow:unset!important}.text-sub{color:var(--Gray-500, #667085)!important;font-size:14px;font-weight:400;line-height:20px}.label{color:var(--Gray-700, #344054)!important;font-size:14px;font-weight:500;line-height:20px}\n"] }]
|
|
55
|
-
}], ctorParameters: () => [{ type: i1.NgbActiveModal }, { type: i2.TicketService }, { type: i3.ToastService }], propDecorators: { ticketId: [{
|
|
56
|
-
type: Input
|
|
57
|
-
}] } });
|
|
58
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudC1tb2RlbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1tYW5hZ2UtdGlja2V0cy9zcmMvbGliL2NvbXBvbmVudHMvY29tbWVudC1tb2RlbC9jb21tZW50LW1vZGVsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLW1hbmFnZS10aWNrZXRzL3NyYy9saWIvY29tcG9uZW50cy9jb21tZW50LW1vZGVsL2NvbW1lbnQtbW9kZWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7OztBQU0xQyxNQUFNLE9BQU8scUJBQXFCO0lBSVo7SUFBb0M7SUFDOUM7SUFKRCxRQUFRLENBQU07SUFDdkIsT0FBTyxHQUFNLEVBQUUsQ0FBQTtJQUNFLFFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBQzFDLFlBQW9CLFdBQTBCLEVBQVUsT0FBc0IsRUFDcEUsS0FBbUI7UUFEVCxnQkFBVyxHQUFYLFdBQVcsQ0FBZTtRQUFVLFlBQU8sR0FBUCxPQUFPLENBQWU7UUFDcEUsVUFBSyxHQUFMLEtBQUssQ0FBYztJQUU3QixDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUNELGFBQWE7UUFDWCxJQUFHLElBQUksQ0FBQyxPQUFPLElBQUksRUFBRSxFQUFDO1lBQ3BCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsMEJBQTBCLENBQUMsQ0FBQTtTQUM1RDtRQUNELElBQUksR0FBRyxHQUFHO1lBQ1IsVUFBVSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3pCLFNBQVMsRUFBRSxFQUFFO1lBQ2IsV0FBVyxFQUFFLEVBQUU7WUFDZixTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU87U0FFMUIsQ0FBQTtRQUNDLElBQUksQ0FBQyxPQUFPO2FBQ1QsaUJBQWlCLENBQUMsR0FBRyxDQUFDO2FBQ3RCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQzlCLFNBQVMsQ0FBQztZQUNULElBQUksRUFBRSxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNqQixJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLEdBQUcsRUFBRTtvQkFDM0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUN4QyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztpQkFDbEM7WUFDSCxDQUFDO1lBQ0QsS0FBSyxFQUFFLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ2xCLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzFFLENBQUM7WUFDRCxRQUFRLEVBQUUsR0FBRyxFQUFFLEdBQUUsQ0FBQztTQUNuQixDQUFDLENBQUM7SUFDUCxDQUFDO3dHQXRDVSxxQkFBcUI7NEZBQXJCLHFCQUFxQiwyRkNWbEMseXFEQXVCTTs7NEZEYk8scUJBQXFCO2tCQUxqQyxTQUFTOytCQUNFLG1CQUFtQjswSUFLcEIsUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmdiQWN0aXZlTW9kYWwgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IFRpY2tldFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90aWNrZXQuc2VydmljZSc7XHJcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1zaGFyZWQnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItY29tbWVudC1tb2RlbCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbW1lbnQtbW9kZWwuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9jb21tZW50LW1vZGVsLmNvbXBvbmVudC5zY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29tbWVudE1vZGVsQ29tcG9uZW50IHtcclxuICBASW5wdXQoKSB0aWNrZXRJZDogYW55O1xyXG4gIGNvbW1lbnQ6YW55PSBcIlwiXHJcbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhY3RpdmVNb2RhbDpOZ2JBY3RpdmVNb2RhbCwgcHJpdmF0ZSBzZXJ2aWNlOiBUaWNrZXRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB0b2FzdDogVG9hc3RTZXJ2aWNlKXtcclxuXHJcbiAgfVxyXG5cclxuICBjYW5jZWwoKXtcclxuICAgIHRoaXMuYWN0aXZlTW9kYWwuY2xvc2UoKTtcclxuICB9XHJcbiAgY29tbWVudFN1Ym1pdCgpe1xyXG4gICAgaWYodGhpcy5jb21tZW50ID09ICcnKXtcclxuICAgICAgcmV0dXJuIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdChcIlBsZWFzZSBFbnRlciBBbnkgY29tbWVudFwiKVxyXG4gICAgfVxyXG4gICAgbGV0IG9iaiA9IHtcclxuICAgICAgXCJ0aWNrZXRJZFwiOiB0aGlzLnRpY2tldElkLFxyXG4gICAgICBcInByaW1hcnlcIjogXCJcIixcclxuICAgICAgXCJzZWNvbmRhcnlcIjogW10sXHJcbiAgICAgIFwiY29tbWVudFwiOiB0aGlzLmNvbW1lbnQsXHJcbiAgICAgIFxyXG4gIH1cclxuICAgIHRoaXMuc2VydmljZVxyXG4gICAgICAudXBkYXRlVGlja2V0SXNzdWUob2JqKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcyAmJiByZXMuY29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3QuZ2V0U3VjY2Vzc1RvYXN0KHJlcy5tZXNzYWdlKTtcclxuICAgICAgICAgICAgdGhpcy5hY3RpdmVNb2RhbC5jbG9zZShcInN1Ym1pdFwiKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdChlcnIuZXJyb3IuZXJyb3IgPyBlcnIuZXJyb3IuZXJyb3IgOiBlcnIuZXJyb3IpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY29tcGxldGU6ICgpID0+IHt9LFxyXG4gICAgICB9KTtcclxuICB9XHJcbiBcclxufVxyXG5cclxuXHJcbiIsIjxkaXYgY2xhc3M9XCJjYXJkIHB5LTBcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcHktMCBkLWZsZXggZmxleC1zdGFydCBmbGV4LWNvbHVtbiBwLTkgXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm15LTVcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN5bWJvbCBzeW1ib2wtNzVweCBzeW1ib2wtY2lyY2xlXCI+XHJcbiAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiNTZcIiBoZWlnaHQ9XCI1NlwiIHZpZXdCb3g9XCIwIDAgNTYgNTZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI0OFwiIGhlaWdodD1cIjQ4XCIgcng9XCIyNFwiIGZpbGw9XCIjREFGMUZGXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiByeD1cIjI0XCIgc3Ryb2tlPVwiI0VBRjhGRlwiIHN0cm9rZS13aWR0aD1cIjhcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0zNyAzMUMzNyAzMS41MzA0IDM2Ljc4OTMgMzIuMDM5MSAzNi40MTQyIDMyLjQxNDJDMzYuMDM5MSAzMi43ODkzIDM1LjUzMDQgMzMgMzUgMzNIMjNMMTkgMzdWMjFDMTkgMjAuNDY5NiAxOS4yMTA3IDE5Ljk2MDkgMTkuNTg1OCAxOS41ODU4QzE5Ljk2MDkgMTkuMjEwNyAyMC40Njk2IDE5IDIxIDE5SDM1QzM1LjUzMDQgMTkgMzYuMDM5MSAxOS4yMTA3IDM2LjQxNDIgMTkuNTg1OEMzNi43ODkzIDE5Ljk2MDkgMzcgMjAuNDY5NiAzNyAyMVYzMVpcIiBzdHJva2U9XCIjMDBBM0ZGXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGEgY2xhc3M9XCJmcy00IHRleHQtZ3JheS04MDAgdGV4dC1ob3Zlci1wcmltYXJ5IGZ3LWJvbGQgbWItMCB0aXRsZSBjdXJzb3ItcG9pbnRlclwiPkNvbW1lbnQ8L2E+XHJcbiAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LXN1YlwiPkFkZCBjb21tZW50IGZvciB0aGUgdGlja2V0PC9wPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEwMFwiPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJsYWJlbCBteS0yXCI+Q29tbWVudHM8L2xhYmVsPlxyXG4gICAgICAgICAgICA8dGV4dGFyZWEgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBbKG5nTW9kZWwpXT1cImNvbW1lbnRcIiByb3dzPVwiNFwiIHR5cGU9XCJ0ZXh0XCI+PC90ZXh0YXJlYT5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgIGNsYXNzPVwiZC1mbGV4IG15LTdcIiByb2xlPVwiZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgdy0xMDAgbWUtM1wiIChjbGljayk9XCJjYW5jZWwoKVwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSB3LTEwMCBtcy0zXCIgIChjbGljayk9XCJjb21tZW50U3VibWl0KClcIj5TdWJtaXQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+Il19
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
import { Component, Input } from '@angular/core';
|
|
2
|
-
import { Subject, takeUntil } from 'rxjs';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "../../services/ticket.service";
|
|
5
|
-
import * as i2 from "tango-app-ui-shared";
|
|
6
|
-
import * as i3 from "../../services/excel.service";
|
|
7
|
-
import * as i4 from "@angular/common";
|
|
8
|
-
export class CountComponent {
|
|
9
|
-
Service;
|
|
10
|
-
toast;
|
|
11
|
-
excel;
|
|
12
|
-
cd;
|
|
13
|
-
destroy$ = new Subject();
|
|
14
|
-
data;
|
|
15
|
-
loading = true;
|
|
16
|
-
noData = false;
|
|
17
|
-
auditImages;
|
|
18
|
-
constructor(Service, toast, excel, cd) {
|
|
19
|
-
this.Service = Service;
|
|
20
|
-
this.toast = toast;
|
|
21
|
-
this.excel = excel;
|
|
22
|
-
this.cd = cd;
|
|
23
|
-
}
|
|
24
|
-
ngOnInit() {
|
|
25
|
-
this.getAuditImages();
|
|
26
|
-
}
|
|
27
|
-
ngOnDestroy() {
|
|
28
|
-
this.destroy$.next(true);
|
|
29
|
-
this.destroy$.complete();
|
|
30
|
-
}
|
|
31
|
-
getAuditImages() {
|
|
32
|
-
let params = {
|
|
33
|
-
fileDate: this.data?.fileDate,
|
|
34
|
-
storeId: this.data?.storeId,
|
|
35
|
-
imageType: this.data?.imageType,
|
|
36
|
-
export: false,
|
|
37
|
-
moduleType: this.data?.selectedType,
|
|
38
|
-
zoneName: this.data?.zoneName
|
|
39
|
-
};
|
|
40
|
-
this.Service.getAuditImages(params).pipe(takeUntil(this.destroy$)).subscribe({
|
|
41
|
-
next: (res) => {
|
|
42
|
-
if (res && res?.code === 200) {
|
|
43
|
-
this.auditImages = res?.data?.result;
|
|
44
|
-
this.loading = false;
|
|
45
|
-
this.noData = false;
|
|
46
|
-
}
|
|
47
|
-
else {
|
|
48
|
-
this.noData = true;
|
|
49
|
-
this.loading = false;
|
|
50
|
-
}
|
|
51
|
-
this.cd.detectChanges();
|
|
52
|
-
},
|
|
53
|
-
error: (err) => {
|
|
54
|
-
this.noData = true;
|
|
55
|
-
this.loading = false;
|
|
56
|
-
},
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
exportTable() {
|
|
60
|
-
let params = {
|
|
61
|
-
fileDate: this.data?.fileDate,
|
|
62
|
-
storeId: this.data?.storeId,
|
|
63
|
-
imageType: this.data?.imageType,
|
|
64
|
-
export: true,
|
|
65
|
-
moduleType: this.data?.selectedType,
|
|
66
|
-
zoneName: this.data?.zoneName
|
|
67
|
-
};
|
|
68
|
-
let type = this.data?.type === 'before' ? 'BeforeCount' : 'AfterCount';
|
|
69
|
-
this.Service.ExportAuditImagesasxlsx(params).pipe(takeUntil(this.destroy$)).subscribe({
|
|
70
|
-
next: (res) => {
|
|
71
|
-
if (res) {
|
|
72
|
-
this.excel.saveAsZipFile(res, type);
|
|
73
|
-
}
|
|
74
|
-
},
|
|
75
|
-
error: (err) => {
|
|
76
|
-
this.toast.getErrorToast(err?.error);
|
|
77
|
-
},
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CountComponent, deps: [{ token: i1.TicketService }, { token: i2.ToastService }, { token: i3.ExcelService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
81
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CountComponent, selector: "lib-count", inputs: { data: "data" }, ngImport: i0, template: "<div class=\"card\">\r\n <div class=\"card-header\">\r\n <div class=\"card-title d-grid\">\r\n <div *ngIf=\"data?.type\" class=\"card-label\">{{data?.type | titlecase}} Count - {{data?.storeId}}</div>\r\n <div class=\"text-sub\">{{data?.fileDate | customDateFormat}}</div>\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <button *ngIf=\"!noData\" type=\"button\" (click)=\"exportTable()\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\" stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">Export</span> </button>\r\n </div>\r\n </div>\r\n <div class=\"card-body\">\r\n <div class=\"row mx-3\">\r\n <div class=\"col-md-12 item scroll-y\">\r\n <div class=\"item\" *ngFor=\"let images of auditImages;let i=index\" style=\"padding: 10px;\">\r\n <img class=\"mx-3 my-3 img\" [src]=\"images?.imgPath\">\r\n <div class=\"text-center m-0 fs-7 fw-bold\">{{images?.imgName}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <ng-container *ngIf=\"loading\">\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div> \r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"noData\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src w-25\" src=\"./assets/tango/Icons/Nodata.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n</div>\r\n\r\n", styles: [".img{width:95px;height:200px}.item{position:relative;padding-top:20px;display:inline-block;max-height:595px}.scroll-y{overflow-y:auto!important;position:relative!important}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i4.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: i2.CustomDateFormatPipe, name: "customDateFormat" }] });
|
|
82
|
-
}
|
|
83
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CountComponent, decorators: [{
|
|
84
|
-
type: Component,
|
|
85
|
-
args: [{ selector: 'lib-count', template: "<div class=\"card\">\r\n <div class=\"card-header\">\r\n <div class=\"card-title d-grid\">\r\n <div *ngIf=\"data?.type\" class=\"card-label\">{{data?.type | titlecase}} Count - {{data?.storeId}}</div>\r\n <div class=\"text-sub\">{{data?.fileDate | customDateFormat}}</div>\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <button *ngIf=\"!noData\" type=\"button\" (click)=\"exportTable()\"\r\n class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\" stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n <span class=\"ms-2\">Export</span> </button>\r\n </div>\r\n </div>\r\n <div class=\"card-body\">\r\n <div class=\"row mx-3\">\r\n <div class=\"col-md-12 item scroll-y\">\r\n <div class=\"item\" *ngFor=\"let images of auditImages;let i=index\" style=\"padding: 10px;\">\r\n <img class=\"mx-3 my-3 img\" [src]=\"images?.imgPath\">\r\n <div class=\"text-center m-0 fs-7 fw-bold\">{{images?.imgName}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <ng-container *ngIf=\"loading\">\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div> \r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"noData\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 mb-3\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src w-25\" src=\"./assets/tango/Icons/Nodata.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n</div>\r\n\r\n", styles: [".img{width:95px;height:200px}.item{position:relative;padding-top:20px;display:inline-block;max-height:595px}.scroll-y{overflow-y:auto!important;position:relative!important}\n"] }]
|
|
86
|
-
}], ctorParameters: () => [{ type: i1.TicketService }, { type: i2.ToastService }, { type: i3.ExcelService }, { type: i0.ChangeDetectorRef }], propDecorators: { data: [{
|
|
87
|
-
type: Input
|
|
88
|
-
}] } });
|
|
89
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tbWFuYWdlLXRpY2tldHMvc3JjL2xpYi9jb21wb25lbnRzL2NvdW50L2NvdW50LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLW1hbmFnZS10aWNrZXRzL3NyYy9saWIvY29tcG9uZW50cy9jb3VudC9jb3VudC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBSXZGLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7QUFPMUMsTUFBTSxPQUFPLGNBQWM7SUFRTDtJQUE4QjtJQUEyQjtJQUE2QjtJQU56RixRQUFRLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUNqQyxJQUFJLENBQUs7SUFDbEIsT0FBTyxHQUFPLElBQUksQ0FBQztJQUNuQixNQUFNLEdBQUssS0FBSyxDQUFDO0lBQ2pCLFdBQVcsQ0FBSztJQUVoQixZQUFvQixPQUFxQixFQUFTLEtBQWtCLEVBQVMsS0FBb0IsRUFBUyxFQUFxQjtRQUEzRyxZQUFPLEdBQVAsT0FBTyxDQUFjO1FBQVMsVUFBSyxHQUFMLEtBQUssQ0FBYTtRQUFTLFVBQUssR0FBTCxLQUFLLENBQWU7UUFBUyxPQUFFLEdBQUYsRUFBRSxDQUFtQjtJQUFFLENBQUM7SUFDbEksUUFBUTtRQUNOLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELGNBQWM7UUFDWixJQUFJLE1BQU0sR0FBTztZQUNoQixRQUFRLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxRQUFRO1lBQzdCLE9BQU8sRUFBQyxJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU87WUFDMUIsU0FBUyxFQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsU0FBUztZQUM5QixNQUFNLEVBQUcsS0FBSztZQUNkLFVBQVUsRUFBRyxJQUFJLENBQUMsSUFBSSxFQUFFLFlBQVk7WUFDcEMsUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsUUFBUTtTQUM3QixDQUFBO1FBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDM0UsSUFBSSxFQUFDLENBQUMsR0FBTyxFQUFDLEVBQUU7Z0JBQ2QsSUFBRyxHQUFHLElBQUksR0FBRyxFQUFFLElBQUksS0FBSyxHQUFHLEVBQUM7b0JBQzFCLElBQUksQ0FBQyxXQUFXLEdBQUcsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUM7b0JBQ3JDLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO29CQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztpQkFDckI7cUJBQUk7b0JBQ0gsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7b0JBQ25CLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO2lCQUN0QjtnQkFDRCxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzFCLENBQUM7WUFDRCxLQUFLLEVBQUMsQ0FBQyxHQUFPLEVBQUMsRUFBRTtnQkFDYixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztnQkFDbkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7WUFDekIsQ0FBQztTQUNGLENBQUMsQ0FBQTtJQUVKLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxNQUFNLEdBQU87WUFDZCxRQUFRLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxRQUFRO1lBQzdCLE9BQU8sRUFBQyxJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU87WUFDMUIsU0FBUyxFQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsU0FBUztZQUM5QixNQUFNLEVBQUcsSUFBSTtZQUNiLFVBQVUsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLFlBQVk7WUFDbkMsUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsUUFBUTtTQUM3QixDQUFBO1FBQ0QsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQTtRQUN0RSxJQUFJLENBQUMsT0FBTyxDQUFDLHVCQUF1QixDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQ3BGLElBQUksRUFBQyxDQUFDLEdBQU8sRUFBQyxFQUFFO2dCQUNkLElBQUcsR0FBRyxFQUFDO29CQUNMLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBQyxJQUFJLENBQUMsQ0FBQTtpQkFDbkM7WUFDSCxDQUFDO1lBQ0QsS0FBSyxFQUFDLENBQUMsR0FBTyxFQUFDLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFBO1lBQ3ZDLENBQUM7U0FDRixDQUFDLENBQUE7SUFFTixDQUFDO3dHQXBFVSxjQUFjOzRGQUFkLGNBQWMsMkVDWDNCLDYyRkFzREE7OzRGRDNDYSxjQUFjO2tCQUwxQixTQUFTOytCQUNFLFdBQVc7d0tBT1osSUFBSTtzQkFBWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRpY2tldFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90aWNrZXQuc2VydmljZSc7XHJcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1zaGFyZWQnO1xyXG5pbXBvcnQgeyBFeGNlbFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9leGNlbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1jb3VudCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NvdW50LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vY291bnQuY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb3VudENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCxPbkRlc3Ryb3kge1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcclxuICBASW5wdXQoKSBkYXRhOmFueTtcclxuICBsb2FkaW5nOmFueSA9IHRydWU7XHJcbiAgbm9EYXRhOmFueT1mYWxzZTtcclxuICBhdWRpdEltYWdlczphbnk7XHJcbiAgXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBTZXJ2aWNlOlRpY2tldFNlcnZpY2UscHJpdmF0ZSB0b2FzdDpUb2FzdFNlcnZpY2UscHJpdmF0ZSBleGNlbCA6IEV4Y2VsU2VydmljZSxwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZil7fVxyXG4gIG5nT25Jbml0KCl7XHJcbiAgICB0aGlzLmdldEF1ZGl0SW1hZ2VzKCk7XHJcbiAgfVxyXG4gIFxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuICBcclxuICBnZXRBdWRpdEltYWdlcygpe1xyXG4gICAgbGV0IHBhcmFtczphbnkgPSB7XHJcbiAgICAgZmlsZURhdGU6IHRoaXMuZGF0YT8uZmlsZURhdGUsXHJcbiAgICAgc3RvcmVJZDp0aGlzLmRhdGE/LnN0b3JlSWQsXHJcbiAgICAgaW1hZ2VUeXBlOnRoaXMuZGF0YT8uaW1hZ2VUeXBlLFxyXG4gICAgIGV4cG9ydCA6IGZhbHNlLFxyXG4gICAgIG1vZHVsZVR5cGUgOiB0aGlzLmRhdGE/LnNlbGVjdGVkVHlwZSxcclxuICAgICB6b25lTmFtZTogdGhpcy5kYXRhPy56b25lTmFtZVxyXG4gICAgfVxyXG4gICAgdGhpcy5TZXJ2aWNlLmdldEF1ZGl0SW1hZ2VzKHBhcmFtcykucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6KHJlczphbnkpPT57XHJcbiAgICAgICAgaWYocmVzICYmIHJlcz8uY29kZSA9PT0gMjAwKXtcclxuICAgICAgICAgIHRoaXMuYXVkaXRJbWFnZXMgPSByZXM/LmRhdGE/LnJlc3VsdDtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5ub0RhdGEgPSBmYWxzZTtcclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgIHRoaXMubm9EYXRhID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6KGVycjphbnkpPT57XHJcbiAgICAgICAgICB0aGlzLm5vRGF0YSA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgfSxcclxuICAgIH0pXHJcbiAgXHJcbiAgfVxyXG4gIFxyXG4gIGV4cG9ydFRhYmxlKCl7XHJcbiAgICBsZXQgcGFyYW1zOmFueSA9IHtcclxuICAgICAgIGZpbGVEYXRlOiB0aGlzLmRhdGE/LmZpbGVEYXRlLFxyXG4gICAgICAgc3RvcmVJZDp0aGlzLmRhdGE/LnN0b3JlSWQsXHJcbiAgICAgICBpbWFnZVR5cGU6dGhpcy5kYXRhPy5pbWFnZVR5cGUsXHJcbiAgICAgICBleHBvcnQgOiB0cnVlLFxyXG4gICAgICAgbW9kdWxlVHlwZTogdGhpcy5kYXRhPy5zZWxlY3RlZFR5cGUsXHJcbiAgICAgICB6b25lTmFtZTogdGhpcy5kYXRhPy56b25lTmFtZVxyXG4gICAgICB9XHJcbiAgICAgIGxldCB0eXBlID0gdGhpcy5kYXRhPy50eXBlID09PSAnYmVmb3JlJyA/ICdCZWZvcmVDb3VudCcgOiAnQWZ0ZXJDb3VudCdcclxuICAgICAgdGhpcy5TZXJ2aWNlLkV4cG9ydEF1ZGl0SW1hZ2VzYXN4bHN4KHBhcmFtcykucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDoocmVzOmFueSk9PntcclxuICAgICAgICAgIGlmKHJlcyl7XHJcbiAgICAgICAgICAgIHRoaXMuZXhjZWwuc2F2ZUFzWmlwRmlsZShyZXMsdHlwZSlcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOihlcnI6YW55KT0+e1xyXG4gICAgICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdChlcnI/LmVycm9yKVxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pXHJcbiAgICBcclxuICB9XHJcbiAgXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNhcmRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRpdGxlIGQtZ3JpZFwiPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZGF0YT8udHlwZVwiIGNsYXNzPVwiY2FyZC1sYWJlbFwiPnt7ZGF0YT8udHlwZSB8IHRpdGxlY2FzZX19IENvdW50IC0ge3tkYXRhPy5zdG9yZUlkfX08L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtc3ViXCI+e3tkYXRhPy5maWxlRGF0ZSB8IGN1c3RvbURhdGVGb3JtYXR9fTwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtdG9vbGJhclwiPlxyXG4gICAgICAgIDxidXR0b24gKm5nSWY9XCIhbm9EYXRhXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJleHBvcnRUYWJsZSgpXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgbXgtMiBidG4tb3V0bGluZSBidG4tb3V0bGluZS1kZWZhdWx0IHJvdW5kZWQtMyB0ZXh0LW5vd3JhcCBib3JkZXItdmFsXCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE3LjUgMTIuNVYxNS44MzMzQzE3LjUgMTYuMjc1NCAxNy4zMjQ0IDE2LjY5OTMgMTcuMDExOCAxNy4wMTE4QzE2LjY5OTMgMTcuMzI0NCAxNi4yNzU0IDE3LjUgMTUuODMzMyAxNy41SDQuMTY2NjdDMy43MjQ2NCAxNy41IDMuMzAwNzIgMTcuMzI0NCAyLjk4ODE2IDE3LjAxMThDMi42NzU1OSAxNi42OTkzIDIuNSAxNi4yNzU0IDIuNSAxNS44MzMzVjEyLjVNMTQuMTY2NyA2LjY2NjY3TDEwIDIuNU0xMCAyLjVMNS44MzMzMyA2LjY2NjY3TTEwIDIuNVYxMi41XCIgc3Ryb2tlPVwiIzM0NDA1NFwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCI+RXhwb3J0PC9zcGFuPiA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBteC0zXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgaXRlbSBzY3JvbGwteVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW1cIiAqbmdGb3I9XCJsZXQgaW1hZ2VzIG9mIGF1ZGl0SW1hZ2VzO2xldCBpPWluZGV4XCIgc3R5bGU9XCJwYWRkaW5nOiAxMHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJteC0zIG15LTMgaW1nXCIgW3NyY109XCJpbWFnZXM/LmltZ1BhdGhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgbS0wIGZzLTcgZnctYm9sZFwiPnt7aW1hZ2VzPy5pbWdOYW1lfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJsb2FkaW5nXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBsb2FkZXIgIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PiAgICAgICAgICAgICAgIFxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibm9EYXRhXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTEyIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1zcmMgdy0yNVwiIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ljb25zL05vZGF0YS5zdmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG48L2Rpdj5cclxuXHJcbiJdfQ==
|
|
@@ -1,187 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, EventEmitter, HostListener, Input, Output } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "../../services/ticket.service";
|
|
4
|
-
import * as i2 from "@angular/common";
|
|
5
|
-
import * as i3 from "@angular/forms";
|
|
6
|
-
// import { ManageUsersService } from '../../services-v2/manage-users.service';
|
|
7
|
-
export class CustomSelectComponent {
|
|
8
|
-
cd;
|
|
9
|
-
authService;
|
|
10
|
-
onClick(event) {
|
|
11
|
-
const target = event.target;
|
|
12
|
-
if (!target.closest('.dropdown')) {
|
|
13
|
-
this.showDropdown = false;
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
items;
|
|
17
|
-
searchField;
|
|
18
|
-
multi;
|
|
19
|
-
idField;
|
|
20
|
-
selectedValues = [];
|
|
21
|
-
disabled;
|
|
22
|
-
label;
|
|
23
|
-
selected = new EventEmitter();
|
|
24
|
-
filteredValues = [];
|
|
25
|
-
showDropdown;
|
|
26
|
-
searchValue;
|
|
27
|
-
instanceId;
|
|
28
|
-
constructor(cd, authService) {
|
|
29
|
-
this.cd = cd;
|
|
30
|
-
this.authService = authService;
|
|
31
|
-
}
|
|
32
|
-
ngOnInit() {
|
|
33
|
-
this.instanceId = crypto.randomUUID();
|
|
34
|
-
this.authService.dropDownTrigger.subscribe((e) => {
|
|
35
|
-
if (e !== this.instanceId) {
|
|
36
|
-
this.showDropdown = false;
|
|
37
|
-
this.cd.detectChanges();
|
|
38
|
-
}
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
ngOnChanges(changes) {
|
|
42
|
-
if (changes['items'] && this.items?.length) {
|
|
43
|
-
this.initializeItems();
|
|
44
|
-
}
|
|
45
|
-
if (changes['selectedValues'] && Array.isArray(changes['selectedValues']?.currentValue) && changes['selectedValues']?.currentValue?.length > 0 && changes['selectedValues']?.currentValue[0]) {
|
|
46
|
-
this.updateSelectedValues();
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
initializeItems() {
|
|
50
|
-
this.filteredValues = this.items.map((item) => ({ ...item }));
|
|
51
|
-
this.updateSelectedValues();
|
|
52
|
-
}
|
|
53
|
-
updateSelectedValues() {
|
|
54
|
-
this.selectedValues?.forEach((selectedItem) => {
|
|
55
|
-
const item = this.filteredValues?.find((filteredItem) => filteredItem?.[this.idField] === selectedItem?.[this.idField]);
|
|
56
|
-
if (item) {
|
|
57
|
-
item.isSelected = true;
|
|
58
|
-
}
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
openDropdown(event) {
|
|
62
|
-
this.authService.dropDownTrigger.next(this.instanceId);
|
|
63
|
-
event.stopPropagation();
|
|
64
|
-
this.showDropdown = !this.showDropdown;
|
|
65
|
-
}
|
|
66
|
-
onInput(event) {
|
|
67
|
-
if (!event.target.value) {
|
|
68
|
-
this.filteredValues = [...this.items];
|
|
69
|
-
}
|
|
70
|
-
else {
|
|
71
|
-
const searchTerm = event.target.value.toLowerCase();
|
|
72
|
-
this.filteredValues = this.items.filter((item) => item[this.searchField].toLowerCase().includes(searchTerm));
|
|
73
|
-
}
|
|
74
|
-
this.updateSelectedValues();
|
|
75
|
-
this.cd.detectChanges();
|
|
76
|
-
}
|
|
77
|
-
onSelect(event, item) {
|
|
78
|
-
if (this.multi) {
|
|
79
|
-
if (event.currentTarget.checked) {
|
|
80
|
-
this.selectedValues.push(item);
|
|
81
|
-
}
|
|
82
|
-
else {
|
|
83
|
-
this.selectedValues = this.selectedValues.filter((elem) => elem[this.idField] !== item[this.idField]);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
else {
|
|
87
|
-
this.selectedValues = [{ ...item }];
|
|
88
|
-
this.filteredValues.forEach((element) => {
|
|
89
|
-
if (element[this.idField] !== item[this.idField]) {
|
|
90
|
-
element.isSelected = false;
|
|
91
|
-
}
|
|
92
|
-
});
|
|
93
|
-
this.showDropdown = false;
|
|
94
|
-
}
|
|
95
|
-
const valuesToEmit = this.selectedValues.map((value) => {
|
|
96
|
-
const selectedItem = { ...value };
|
|
97
|
-
delete selectedItem.isSelected;
|
|
98
|
-
return selectedItem;
|
|
99
|
-
});
|
|
100
|
-
this.cd.detectChanges();
|
|
101
|
-
this.emitSelectedValues(valuesToEmit);
|
|
102
|
-
}
|
|
103
|
-
onSelectAll(event) {
|
|
104
|
-
const selectAll = event.currentTarget.checked;
|
|
105
|
-
this.filteredValues.forEach((item) => item.isSelected = selectAll);
|
|
106
|
-
if (selectAll) {
|
|
107
|
-
this.selectedValues = [...this.filteredValues];
|
|
108
|
-
}
|
|
109
|
-
else {
|
|
110
|
-
this.selectedValues = [];
|
|
111
|
-
}
|
|
112
|
-
const valuesToEmit = this.selectedValues.map((value) => {
|
|
113
|
-
const { isSelected, ...selectedItem } = value;
|
|
114
|
-
return selectedItem;
|
|
115
|
-
});
|
|
116
|
-
this.cd.detectChanges();
|
|
117
|
-
this.emitSelectedValues(valuesToEmit);
|
|
118
|
-
}
|
|
119
|
-
emitSelectedValues(values) {
|
|
120
|
-
if (this.multi) {
|
|
121
|
-
this.selected.emit(values);
|
|
122
|
-
}
|
|
123
|
-
else {
|
|
124
|
-
this.selected.emit(values[0]);
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
checkIfAllSelected() {
|
|
128
|
-
return this.filteredValues.every((item) => item.isSelected);
|
|
129
|
-
}
|
|
130
|
-
onItemClick(item, event) {
|
|
131
|
-
event.stopPropagation();
|
|
132
|
-
// For multi-select, row click should not do anything special;
|
|
133
|
-
// checkbox + onSelect already handle it
|
|
134
|
-
if (this.multi) {
|
|
135
|
-
return;
|
|
136
|
-
}
|
|
137
|
-
// Mark this item as selected so UI highlights it
|
|
138
|
-
item.isSelected = true;
|
|
139
|
-
// Fake an event with `currentTarget.checked = true`
|
|
140
|
-
const fakeEvent = {
|
|
141
|
-
currentTarget: {
|
|
142
|
-
checked: true
|
|
143
|
-
}
|
|
144
|
-
};
|
|
145
|
-
// Reuse your existing logic
|
|
146
|
-
this.onSelect(fakeEvent, item);
|
|
147
|
-
}
|
|
148
|
-
getInitialsFromEmail(email) {
|
|
149
|
-
if (!email)
|
|
150
|
-
return "";
|
|
151
|
-
// take text before @
|
|
152
|
-
const namePart = email.split("@")[0];
|
|
153
|
-
// split by . or space (e.g. "sandeep.pal" -> ["sandeep", "pal"])
|
|
154
|
-
const parts = namePart.split(/[.\s_-]+/).filter(Boolean);
|
|
155
|
-
if (parts.length >= 2) {
|
|
156
|
-
return (parts[0][0] + parts[1][0]).toUpperCase(); // S + P = SP
|
|
157
|
-
}
|
|
158
|
-
// fallback: first two chars of whole namePart
|
|
159
|
-
return namePart.substring(0, 2).toUpperCase();
|
|
160
|
-
}
|
|
161
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CustomSelectComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.TicketService }], target: i0.ɵɵFactoryTarget.Component });
|
|
162
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CustomSelectComponent, selector: "team-select", inputs: { items: "items", searchField: "searchField", multi: "multi", idField: "idField", selectedValues: "selectedValues", disabled: "disabled", label: "label" }, outputs: { selected: "selected" }, host: { listeners: { "document:click": "onClick($event)" } }, usesOnChanges: true, ngImport: i0, template: "<div class=\"outer-container\">\r\n <!-- TRIGGER -->\r\n <div\r\n [ngClass]=\"disabled ? 'disable-input' : ''\"\r\n class=\"select-trigger form-select\"\r\n (click)=\"openDropdown($event)\"\r\n >\r\n <ng-container *ngIf=\"multi; else singleMode\">\r\n <span *ngIf=\"selectedValues?.length\" class=\"select-value mx-2\">\r\n <!-- <img class=\"me-2 trigger-avatar\" alt=\"Pic\" src=\"./assets/tango/Image/users-teams.svg\" /> -->\r\n {{ selectedValues?.[0]?.[searchField] }}\r\n </span>\r\n <span class=\"select-value mx-2\" *ngIf=\"selectedValues?.length > 1\">\r\n +{{ selectedValues?.length - 1 }}\r\n </span>\r\n <span *ngIf=\"!selectedValues?.length\">{{ label || 'Select' }}</span>\r\n </ng-container>\r\n\r\n <ng-template #singleMode>\r\n <span *ngIf=\"selectedValues?.[0]; else placeholderSingle\">\r\n {{ selectedValues?.[0]?.[searchField] || 'Select' }}\r\n </span>\r\n <ng-template #placeholderSingle>\r\n <span >{{ label || 'Select' }}</span>\r\n </ng-template>\r\n </ng-template>\r\n\r\n\r\n </div>\r\n\r\n <!-- DROPDOWN PANEL -->\r\n <div\r\n class=\"input-container dropdown\"\r\n [ngClass]=\"showDropdown ? '' : 'd-none'\"\r\n (click)=\"$event.stopPropagation()\"\r\n >\r\n <!-- Search -->\r\n <div class=\"w-100 input-wrapper\">\r\n <input\r\n [(ngModel)]=\"searchValue\"\r\n placeholder=\"Search\"\r\n (input)=\"onInput($event)\"\r\n type=\"text\"\r\n />\r\n <svg\r\n class=\"search-icon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"16\"\r\n height=\"17\"\r\n viewBox=\"0 0 16 17\"\r\n fill=\"none\"\r\n >\r\n <path\r\n d=\"M14 14.5L11.1 11.6M12.6667 7.83333C12.6667 10.7789 10.2789 13.1667 7.33333 13.1667C4.38781 13.1667 2 10.7789 2 7.83333C2 4.88781 4.38781 2.5 7.33333 2.5C10.2789 2.5 12.6667 4.88781 12.6667 7.83333Z\"\r\n stroke=\"#667085\"\r\n stroke-width=\"1.3\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n </div>\r\n\r\n <ul>\r\n <!-- Select all (multi mode only) -->\r\n <li *ngIf=\"multi && filteredValues?.length\">\r\n <label class=\"form-check\" [for]=\"instanceId\">\r\n <input\r\n (change)=\"onSelectAll($event)\"\r\n [checked]=\"checkIfAllSelected()\"\r\n class=\"form-check-input me-3\"\r\n type=\"checkbox\"\r\n [id]=\"instanceId\"\r\n />\r\n <span class=\"form-check-label\"> Select All </span>\r\n </label>\r\n </li>\r\n\r\n <!-- LIST ITEMS -->\r\n <li\r\n *ngFor=\"let item of filteredValues\"\r\n [ngClass]=\"item.isSelected && !multi ? 'selected' : ''\"\r\n (click)=\"onItemClick(item, $event)\"\r\n >\r\n <!-- multi \u2192 checkbox + label ; single \u2192 user row (avatar + name + email) -->\r\n <ng-container *ngIf=\"multi; else singleItemTemplate\">\r\n <label\r\n [for]=\"item[idField] + instanceId\"\r\n [ngClass]=\"multi ? '' : 'ps-0'\"\r\n class=\"form-check\"\r\n >\r\n <input\r\n (change)=\"onSelect($event, item)\"\r\n [(ngModel)]=\"item.isSelected\"\r\n class=\"form-check-input me-3\"\r\n type=\"checkbox\"\r\n [id]=\"item[idField] + instanceId\"\r\n />\r\n <span class=\"form-check-label\">\r\n {{ item[searchField] }}\r\n </span>\r\n </label>\r\n </ng-container>\r\n\r\n <ng-template #singleItemTemplate>\r\n <div class=\"user-row\">\r\n <div class=\"avatar avatar-text light-primary p-3\">\r\n {{ getInitialsFromEmail(item.email ||\r\n item.email) }}\r\n </div>\r\n <!-- <img\r\n class=\"user-avatar\"\r\n [src]=\"item.avatarUrl || './assets/tango/Image/Avatar.svg'\"\r\n alt=\"{{ item[searchField] }}\"\r\n /> -->\r\n <div class=\"user-text\">\r\n <div class=\"user-name\">\r\n {{ item[searchField] }}\r\n </div>\r\n <div class=\"user-email\">\r\n {{ item.email }}\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </li>\r\n\r\n <li *ngIf=\"!filteredValues?.length\">\r\n <span class=\"d-flex align-items-center justify-content-center\">\r\n No data found\r\n </span>\r\n </li>\r\n </ul>\r\n </div>\r\n</div>\r\n", styles: [":host{width:100%;height:100%}.outer-container{position:relative;background-color:#fff}.outer-container .form-select{font-size:1.1rem;font-weight:600;border-radius:8px!important;color:var(--Gray-500, #344054);border:1px solid var(--Gray-300, #D0D5DD)!important;height:42.5px}.outer-container .disable-input{pointer-events:none;background-color:#f9fafb!important}.outer-container .input-container{width:100%;z-index:1}.outer-container .input-container .input-wrapper{padding:8px 10px;background-color:#fff;border-top-right-radius:8px;border-top-left-radius:8px;border-top:1px solid rgba(16,24,40,.08);border-right:1px solid rgba(16,24,40,.08);border-left:1px solid rgba(16,24,40,.08)}.outer-container .input-container .input-wrapper input{width:100%;border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF);box-shadow:0 1px 2px #1018280d;padding:10px 14px 10px 30px;outline:none}.outer-container .input-container .input-wrapper input ::placeholder{color:var(--Gray-500, #667085);font-family:Inter;font-size:14px;font-weight:500;line-height:20px}.outer-container .input-container .input-wrapper .search-icon{position:absolute;left:20px;top:20px}.outer-container .input-container ul{position:relative;background-color:#fff;margin:0;padding:0;max-height:200px;min-height:auto;overflow-y:auto;border-bottom-right-radius:8px;border-bottom-left-radius:8px;border-bottom:1px solid rgba(16,24,40,.08);border-right:1px solid rgba(16,24,40,.08);border-left:1px solid rgba(16,24,40,.08)}.outer-container .input-container ul .selected{background:#f9fafb}.outer-container .input-container ul li{list-style:none;padding:10px 16px;cursor:pointer}.outer-container .input-container ul li label{cursor:pointer}.outer-container .input-container ul li:hover{background:#f9fafb}.form-check{display:flex;align-items:center}.form-check-input{height:16px;width:16px;border-radius:4px;border:1px solid var(--Primary-600, #00A3FF)}.form-check-input:checked{--bs-form-check-bg-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAICAYAAADA+m62AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAB4SURBVHgBhY7NDUBQEIRnqcJNKXTg6qYTStCB+Isy6IQSNMDa9SLh5eWZZPcw+81kCX/quABhD73QyKXsGoyIvNCJSto2hEhNtY4N9cwYeMXEsVqB1GaSauRQOpty2tSmO3FgloAmF5nEhgyoesMO6CuFW66fn2xdFyA3ZzcRLrMAAAAASUVORK5CYII=);background-color:#eaf8ff;border-color:#00a3ff}.form-check-label{color:var(--Gray-700, #344054);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px}.select-value{border-radius:16px!important;background:var(--Gray-100, #F2F4F7)!important;mix-blend-mode:multiply;color:var(--Gray-700, #344054)!important;text-align:center;font-size:14px;font-style:normal;font-weight:500;line-height:20px;padding:4px 12px 4px 6px}.user-row{display:flex;align-items:center;padding:8px 14px;cursor:pointer;border-bottom:1px solid #f3f4f6}.user-row:last-child{border-bottom:none}.user-row:hover{background:#f5f7ff}.user-avatar{width:36px;height:36px;border-radius:50%;object-fit:cover;margin-right:10px}.user-text{display:flex;flex-direction:column}.user-name{font-size:14px;font-weight:500;color:#111827}.user-email{font-size:12px;color:#6b7280}.disable-input{pointer-events:none;opacity:.6}.avatar{width:42px;height:40px;border-radius:50%;margin-right:15px;font-size:14px;color:#1d2939;font-weight:600}.light-primary{background:#eaf8ff!important}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
163
|
-
}
|
|
164
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CustomSelectComponent, decorators: [{
|
|
165
|
-
type: Component,
|
|
166
|
-
args: [{ selector: 'team-select', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"outer-container\">\r\n <!-- TRIGGER -->\r\n <div\r\n [ngClass]=\"disabled ? 'disable-input' : ''\"\r\n class=\"select-trigger form-select\"\r\n (click)=\"openDropdown($event)\"\r\n >\r\n <ng-container *ngIf=\"multi; else singleMode\">\r\n <span *ngIf=\"selectedValues?.length\" class=\"select-value mx-2\">\r\n <!-- <img class=\"me-2 trigger-avatar\" alt=\"Pic\" src=\"./assets/tango/Image/users-teams.svg\" /> -->\r\n {{ selectedValues?.[0]?.[searchField] }}\r\n </span>\r\n <span class=\"select-value mx-2\" *ngIf=\"selectedValues?.length > 1\">\r\n +{{ selectedValues?.length - 1 }}\r\n </span>\r\n <span *ngIf=\"!selectedValues?.length\">{{ label || 'Select' }}</span>\r\n </ng-container>\r\n\r\n <ng-template #singleMode>\r\n <span *ngIf=\"selectedValues?.[0]; else placeholderSingle\">\r\n {{ selectedValues?.[0]?.[searchField] || 'Select' }}\r\n </span>\r\n <ng-template #placeholderSingle>\r\n <span >{{ label || 'Select' }}</span>\r\n </ng-template>\r\n </ng-template>\r\n\r\n\r\n </div>\r\n\r\n <!-- DROPDOWN PANEL -->\r\n <div\r\n class=\"input-container dropdown\"\r\n [ngClass]=\"showDropdown ? '' : 'd-none'\"\r\n (click)=\"$event.stopPropagation()\"\r\n >\r\n <!-- Search -->\r\n <div class=\"w-100 input-wrapper\">\r\n <input\r\n [(ngModel)]=\"searchValue\"\r\n placeholder=\"Search\"\r\n (input)=\"onInput($event)\"\r\n type=\"text\"\r\n />\r\n <svg\r\n class=\"search-icon\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"16\"\r\n height=\"17\"\r\n viewBox=\"0 0 16 17\"\r\n fill=\"none\"\r\n >\r\n <path\r\n d=\"M14 14.5L11.1 11.6M12.6667 7.83333C12.6667 10.7789 10.2789 13.1667 7.33333 13.1667C4.38781 13.1667 2 10.7789 2 7.83333C2 4.88781 4.38781 2.5 7.33333 2.5C10.2789 2.5 12.6667 4.88781 12.6667 7.83333Z\"\r\n stroke=\"#667085\"\r\n stroke-width=\"1.3\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n </div>\r\n\r\n <ul>\r\n <!-- Select all (multi mode only) -->\r\n <li *ngIf=\"multi && filteredValues?.length\">\r\n <label class=\"form-check\" [for]=\"instanceId\">\r\n <input\r\n (change)=\"onSelectAll($event)\"\r\n [checked]=\"checkIfAllSelected()\"\r\n class=\"form-check-input me-3\"\r\n type=\"checkbox\"\r\n [id]=\"instanceId\"\r\n />\r\n <span class=\"form-check-label\"> Select All </span>\r\n </label>\r\n </li>\r\n\r\n <!-- LIST ITEMS -->\r\n <li\r\n *ngFor=\"let item of filteredValues\"\r\n [ngClass]=\"item.isSelected && !multi ? 'selected' : ''\"\r\n (click)=\"onItemClick(item, $event)\"\r\n >\r\n <!-- multi \u2192 checkbox + label ; single \u2192 user row (avatar + name + email) -->\r\n <ng-container *ngIf=\"multi; else singleItemTemplate\">\r\n <label\r\n [for]=\"item[idField] + instanceId\"\r\n [ngClass]=\"multi ? '' : 'ps-0'\"\r\n class=\"form-check\"\r\n >\r\n <input\r\n (change)=\"onSelect($event, item)\"\r\n [(ngModel)]=\"item.isSelected\"\r\n class=\"form-check-input me-3\"\r\n type=\"checkbox\"\r\n [id]=\"item[idField] + instanceId\"\r\n />\r\n <span class=\"form-check-label\">\r\n {{ item[searchField] }}\r\n </span>\r\n </label>\r\n </ng-container>\r\n\r\n <ng-template #singleItemTemplate>\r\n <div class=\"user-row\">\r\n <div class=\"avatar avatar-text light-primary p-3\">\r\n {{ getInitialsFromEmail(item.email ||\r\n item.email) }}\r\n </div>\r\n <!-- <img\r\n class=\"user-avatar\"\r\n [src]=\"item.avatarUrl || './assets/tango/Image/Avatar.svg'\"\r\n alt=\"{{ item[searchField] }}\"\r\n /> -->\r\n <div class=\"user-text\">\r\n <div class=\"user-name\">\r\n {{ item[searchField] }}\r\n </div>\r\n <div class=\"user-email\">\r\n {{ item.email }}\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </li>\r\n\r\n <li *ngIf=\"!filteredValues?.length\">\r\n <span class=\"d-flex align-items-center justify-content-center\">\r\n No data found\r\n </span>\r\n </li>\r\n </ul>\r\n </div>\r\n</div>\r\n", styles: [":host{width:100%;height:100%}.outer-container{position:relative;background-color:#fff}.outer-container .form-select{font-size:1.1rem;font-weight:600;border-radius:8px!important;color:var(--Gray-500, #344054);border:1px solid var(--Gray-300, #D0D5DD)!important;height:42.5px}.outer-container .disable-input{pointer-events:none;background-color:#f9fafb!important}.outer-container .input-container{width:100%;z-index:1}.outer-container .input-container .input-wrapper{padding:8px 10px;background-color:#fff;border-top-right-radius:8px;border-top-left-radius:8px;border-top:1px solid rgba(16,24,40,.08);border-right:1px solid rgba(16,24,40,.08);border-left:1px solid rgba(16,24,40,.08)}.outer-container .input-container .input-wrapper input{width:100%;border-radius:8px;border:1px solid var(--Gray-300, #D0D5DD);background:var(--White, #FFF);box-shadow:0 1px 2px #1018280d;padding:10px 14px 10px 30px;outline:none}.outer-container .input-container .input-wrapper input ::placeholder{color:var(--Gray-500, #667085);font-family:Inter;font-size:14px;font-weight:500;line-height:20px}.outer-container .input-container .input-wrapper .search-icon{position:absolute;left:20px;top:20px}.outer-container .input-container ul{position:relative;background-color:#fff;margin:0;padding:0;max-height:200px;min-height:auto;overflow-y:auto;border-bottom-right-radius:8px;border-bottom-left-radius:8px;border-bottom:1px solid rgba(16,24,40,.08);border-right:1px solid rgba(16,24,40,.08);border-left:1px solid rgba(16,24,40,.08)}.outer-container .input-container ul .selected{background:#f9fafb}.outer-container .input-container ul li{list-style:none;padding:10px 16px;cursor:pointer}.outer-container .input-container ul li label{cursor:pointer}.outer-container .input-container ul li:hover{background:#f9fafb}.form-check{display:flex;align-items:center}.form-check-input{height:16px;width:16px;border-radius:4px;border:1px solid var(--Primary-600, #00A3FF)}.form-check-input:checked{--bs-form-check-bg-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAICAYAAADA+m62AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAB4SURBVHgBhY7NDUBQEIRnqcJNKXTg6qYTStCB+Isy6IQSNMDa9SLh5eWZZPcw+81kCX/quABhD73QyKXsGoyIvNCJSto2hEhNtY4N9cwYeMXEsVqB1GaSauRQOpty2tSmO3FgloAmF5nEhgyoesMO6CuFW66fn2xdFyA3ZzcRLrMAAAAASUVORK5CYII=);background-color:#eaf8ff;border-color:#00a3ff}.form-check-label{color:var(--Gray-700, #344054);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px}.select-value{border-radius:16px!important;background:var(--Gray-100, #F2F4F7)!important;mix-blend-mode:multiply;color:var(--Gray-700, #344054)!important;text-align:center;font-size:14px;font-style:normal;font-weight:500;line-height:20px;padding:4px 12px 4px 6px}.user-row{display:flex;align-items:center;padding:8px 14px;cursor:pointer;border-bottom:1px solid #f3f4f6}.user-row:last-child{border-bottom:none}.user-row:hover{background:#f5f7ff}.user-avatar{width:36px;height:36px;border-radius:50%;object-fit:cover;margin-right:10px}.user-text{display:flex;flex-direction:column}.user-name{font-size:14px;font-weight:500;color:#111827}.user-email{font-size:12px;color:#6b7280}.disable-input{pointer-events:none;opacity:.6}.avatar{width:42px;height:40px;border-radius:50%;margin-right:15px;font-size:14px;color:#1d2939;font-weight:600}.light-primary{background:#eaf8ff!important}\n"] }]
|
|
167
|
-
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.TicketService }], propDecorators: { onClick: [{
|
|
168
|
-
type: HostListener,
|
|
169
|
-
args: ['document:click', ['$event']]
|
|
170
|
-
}], items: [{
|
|
171
|
-
type: Input
|
|
172
|
-
}], searchField: [{
|
|
173
|
-
type: Input
|
|
174
|
-
}], multi: [{
|
|
175
|
-
type: Input
|
|
176
|
-
}], idField: [{
|
|
177
|
-
type: Input
|
|
178
|
-
}], selectedValues: [{
|
|
179
|
-
type: Input
|
|
180
|
-
}], disabled: [{
|
|
181
|
-
type: Input
|
|
182
|
-
}], label: [{
|
|
183
|
-
type: Input
|
|
184
|
-
}], selected: [{
|
|
185
|
-
type: Output
|
|
186
|
-
}] } });
|
|
187
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXNlbGVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1tYW5hZ2UtdGlja2V0cy9zcmMvbGliL2NvbXBvbmVudHMvY3VzdG9tLXNlbGVjdC9jdXN0b20tc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLW1hbmFnZS10aWNrZXRzL3NyYy9saWIvY29tcG9uZW50cy9jdXN0b20tc2VsZWN0L2N1c3RvbS1zZWxlY3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFxQixTQUFTLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBaUIsTUFBTSxlQUFlLENBQUM7Ozs7O0FBRW5LLCtFQUErRTtBQVMvRSxNQUFNLE9BQU8scUJBQXFCO0lBd0JaO0lBQStCO0lBckJuRCxPQUFPLENBQUMsS0FBaUI7UUFDdkIsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQXFCLENBQUM7UUFDM0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDaEMsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7U0FDM0I7SUFDSCxDQUFDO0lBRVEsS0FBSyxDQUFLO0lBQ1YsV0FBVyxDQUFRO0lBQ25CLEtBQUssQ0FBUztJQUNkLE9BQU8sQ0FBUTtJQUNmLGNBQWMsR0FBUSxFQUFFLENBQUE7SUFDeEIsUUFBUSxDQUFxQjtJQUM3QixLQUFLLENBQVE7SUFDWixRQUFRLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQTtJQUM1QyxjQUFjLEdBQVEsRUFBRSxDQUFBO0lBQ3hCLFlBQVksQ0FBUztJQUNyQixXQUFXLENBQVE7SUFDbkIsVUFBVSxDQUFNO0lBR2hCLFlBQW9CLEVBQXFCLEVBQVUsV0FBeUI7UUFBeEQsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFBVSxnQkFBVyxHQUFYLFdBQVcsQ0FBYztJQUFJLENBQUM7SUFDakYsUUFBUTtRQUNOLElBQUksQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBQyxFQUFFO1lBQzlDLElBQUcsQ0FBQyxLQUFLLElBQUksQ0FBQyxVQUFVLEVBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFBO2dCQUN6QixJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFBO2FBQ3hCO1FBQ0gsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBRWhDLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFO1lBQzFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztTQUN4QjtRQUNELElBQUksT0FBTyxDQUFDLGdCQUFnQixDQUFDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxZQUFZLENBQUMsSUFBSSxPQUFPLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxZQUFZLEVBQUUsTUFBTSxHQUFHLENBQUMsSUFBSSxPQUFPLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDNUwsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7U0FDN0I7SUFDSCxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNuRSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQTtJQUM3QixDQUFDO0lBRUQsb0JBQW9CO1FBQ2xCLElBQUksQ0FBQyxjQUFjLEVBQUUsT0FBTyxDQUFDLENBQUMsWUFBaUIsRUFBRSxFQUFFO1lBQ2pELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLENBQUMsWUFBaUIsRUFBRSxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQzdILElBQUksSUFBSSxFQUFFO2dCQUNSLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO2FBQ3hCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFFTCxDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQVU7UUFDckIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUN0RCxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDekMsQ0FBQztJQUVELE9BQU8sQ0FBQyxLQUFVO1FBQ2hCLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRTtZQUN2QixJQUFJLENBQUMsY0FBYyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDdkM7YUFBTTtZQUNMLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3BELElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUNwRCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FDMUQsQ0FBQztTQUNIO1FBQ0QsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQVUsRUFBRSxJQUFTO1FBQzVCLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNkLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUU7Z0JBQy9CLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBRSxDQUFDO2FBQ2pDO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO2FBQzVHO1NBQ0Y7YUFBTTtZQUNMLElBQUksQ0FBQyxjQUFjLEdBQUcsQ0FBQyxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUNwQyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQVcsRUFBRSxFQUFFO2dCQUMxQyxJQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBQztvQkFDOUMsT0FBTyxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUE7aUJBQzNCO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztTQUMzQjtRQUVELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUU7WUFDMUQsTUFBTSxZQUFZLEdBQUcsRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFDO1lBQ2xDLE9BQU8sWUFBWSxDQUFDLFVBQVUsQ0FBQztZQUMvQixPQUFPLFlBQVksQ0FBQztRQUN0QixDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxDQUFDO0lBRXhDLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBVTtRQUNwQixNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQztRQUM5QyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUMsQ0FBQztRQUV4RSxJQUFJLFNBQVMsRUFBRTtZQUNiLElBQUksQ0FBQyxjQUFjLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztTQUNoRDthQUFNO1lBQ0wsSUFBSSxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUM7U0FDMUI7UUFFRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQVUsRUFBRSxFQUFFO1lBQzFELE1BQU0sRUFBRSxVQUFVLEVBQUUsR0FBRyxZQUFZLEVBQUUsR0FBRyxLQUFLLENBQUM7WUFDOUMsT0FBTyxZQUFZLENBQUM7UUFDdEIsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBR0Qsa0JBQWtCLENBQUMsTUFBYTtRQUM5QixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDZCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUM1QjthQUFNO1lBQ0wsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDL0I7SUFDSCxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBQ0QsV0FBVyxDQUFDLElBQVMsRUFBRSxLQUFpQjtRQUN4QyxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFFeEIsOERBQThEO1FBQzlELHdDQUF3QztRQUN4QyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDZCxPQUFPO1NBQ1I7UUFFRCxpREFBaUQ7UUFDakQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFFdkIsb0RBQW9EO1FBQ3BELE1BQU0sU0FBUyxHQUFRO1lBQ3JCLGFBQWEsRUFBRTtnQkFDYixPQUFPLEVBQUUsSUFBSTthQUNkO1NBQ0YsQ0FBQztRQUVGLDRCQUE0QjtRQUM1QixJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBQ0Msb0JBQW9CLENBQUMsS0FBYztRQUNqQyxJQUFJLENBQUMsS0FBSztZQUFFLE9BQU8sRUFBRSxDQUFDO1FBRXRCLHFCQUFxQjtRQUNyQixNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXJDLGlFQUFpRTtRQUNqRSxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUV6RCxJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO1lBQ3JCLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxhQUFhO1NBQ2hFO1FBRUQsOENBQThDO1FBQzlDLE9BQU8sUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDaEQsQ0FBQzt3R0EvS1UscUJBQXFCOzRGQUFyQixxQkFBcUIsNlVDWGxDLDJ2SkFzSUE7OzRGRDNIYSxxQkFBcUI7a0JBUGpDLFNBQVM7K0JBRUUsYUFBYSxtQkFHTix1QkFBdUIsQ0FBQyxNQUFNO2tIQUsvQyxPQUFPO3NCQUROLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBUWpDLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDSSxRQUFRO3NCQUFqQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUaWNrZXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdGlja2V0LnNlcnZpY2UnO1xyXG4vLyBpbXBvcnQgeyBNYW5hZ2VVc2Vyc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy12Mi9tYW5hZ2UtdXNlcnMuc2VydmljZSc7XHJcbiBcclxuQENvbXBvbmVudCh7XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcclxuICBzZWxlY3RvcjogJ3RlYW0tc2VsZWN0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY3VzdG9tLXNlbGVjdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2N1c3RvbS1zZWxlY3QuY29tcG9uZW50LnNjc3MnLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ3VzdG9tU2VsZWN0Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQge1xyXG4gXHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKVxyXG4gIG9uQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcclxuICAgIGlmICghdGFyZ2V0LmNsb3Nlc3QoJy5kcm9wZG93bicpKSB7XHJcbiAgICAgIHRoaXMuc2hvd0Ryb3Bkb3duID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG4gXHJcbiAgQElucHV0KCkgaXRlbXM6IGFueVxyXG4gIEBJbnB1dCgpIHNlYXJjaEZpZWxkOiBzdHJpbmdcclxuICBASW5wdXQoKSBtdWx0aTogYm9vbGVhblxyXG4gIEBJbnB1dCgpIGlkRmllbGQ6IHN0cmluZ1xyXG4gIEBJbnB1dCgpIHNlbGVjdGVkVmFsdWVzOiBhbnkgPSBbXVxyXG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuIHwgdW5kZWZpbmVkXHJcbiAgQElucHV0KCkgbGFiZWw6IHN0cmluZ1xyXG4gIEBPdXRwdXQoKSBzZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpXHJcbiAgZmlsdGVyZWRWYWx1ZXM6IGFueSA9IFtdXHJcbiAgc2hvd0Ryb3Bkb3duOiBib29sZWFuXHJcbiAgc2VhcmNoVmFsdWU6IHN0cmluZ1xyXG4gIGluc3RhbmNlSWQ6IGFueTtcclxuIFxyXG4gXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgYXV0aFNlcnZpY2U6VGlja2V0U2VydmljZSkgeyB9XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmluc3RhbmNlSWQgPSBjcnlwdG8ucmFuZG9tVVVJRCgpO1xyXG4gICAgdGhpcy5hdXRoU2VydmljZS5kcm9wRG93blRyaWdnZXIuc3Vic2NyaWJlKChlKT0+eyAgICAgICAgICAgXHJcbiAgICAgIGlmKGUgIT09IHRoaXMuaW5zdGFuY2VJZCl7ICAgICAgICBcclxuICAgICAgICB0aGlzLnNob3dEcm9wZG93biA9IGZhbHNlXHJcbiAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKClcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcbiBcclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiBcclxuICAgIGlmIChjaGFuZ2VzWydpdGVtcyddICYmIHRoaXMuaXRlbXM/Lmxlbmd0aCkge1xyXG4gICAgICB0aGlzLmluaXRpYWxpemVJdGVtcygpO1xyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXNbJ3NlbGVjdGVkVmFsdWVzJ10gJiYgQXJyYXkuaXNBcnJheShjaGFuZ2VzWydzZWxlY3RlZFZhbHVlcyddPy5jdXJyZW50VmFsdWUpICYmIGNoYW5nZXNbJ3NlbGVjdGVkVmFsdWVzJ10/LmN1cnJlbnRWYWx1ZT8ubGVuZ3RoID4gMCAmJiBjaGFuZ2VzWydzZWxlY3RlZFZhbHVlcyddPy5jdXJyZW50VmFsdWVbMF0pIHsgICAgICAgICAgICBcclxuICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZFZhbHVlcygpO1xyXG4gICAgfVxyXG4gIH1cclxuIFxyXG4gIGluaXRpYWxpemVJdGVtcygpIHtcclxuICAgIHRoaXMuZmlsdGVyZWRWYWx1ZXMgPSB0aGlzLml0ZW1zLm1hcCgoaXRlbTogYW55KSA9PiAoeyAuLi5pdGVtIH0pKTtcclxuICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRWYWx1ZXMoKVxyXG4gIH1cclxuIFxyXG4gIHVwZGF0ZVNlbGVjdGVkVmFsdWVzKCkgeyAgICBcclxuICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXM/LmZvckVhY2goKHNlbGVjdGVkSXRlbTogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmZpbHRlcmVkVmFsdWVzPy5maW5kKChmaWx0ZXJlZEl0ZW06IGFueSkgPT4gZmlsdGVyZWRJdGVtPy5bdGhpcy5pZEZpZWxkXSA9PT0gc2VsZWN0ZWRJdGVtPy5bdGhpcy5pZEZpZWxkXSk7XHJcbiAgICAgIGlmIChpdGVtKSB7XHJcbiAgICAgICAgaXRlbS5pc1NlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgIFxyXG4gIH1cclxuIFxyXG4gIG9wZW5Ecm9wZG93bihldmVudDogYW55KSB7XHJcbiAgICB0aGlzLmF1dGhTZXJ2aWNlLmRyb3BEb3duVHJpZ2dlci5uZXh0KHRoaXMuaW5zdGFuY2VJZClcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgdGhpcy5zaG93RHJvcGRvd24gPSAhdGhpcy5zaG93RHJvcGRvd247XHJcbiAgfVxyXG4gXHJcbiAgb25JbnB1dChldmVudDogYW55KSB7XHJcbiAgICBpZiAoIWV2ZW50LnRhcmdldC52YWx1ZSkge1xyXG4gICAgICB0aGlzLmZpbHRlcmVkVmFsdWVzID0gWy4uLnRoaXMuaXRlbXNdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3Qgc2VhcmNoVGVybSA9IGV2ZW50LnRhcmdldC52YWx1ZS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICB0aGlzLmZpbHRlcmVkVmFsdWVzID0gdGhpcy5pdGVtcy5maWx0ZXIoKGl0ZW06IGFueSkgPT5cclxuICAgICAgICBpdGVtW3RoaXMuc2VhcmNoRmllbGRdLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVGVybSlcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRWYWx1ZXMoKTtcclxuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuIFxyXG4gIG9uU2VsZWN0KGV2ZW50OiBhbnksIGl0ZW06IGFueSkgeyAgICBcclxuICAgIGlmICh0aGlzLm11bHRpKSB7XHJcbiAgICAgIGlmIChldmVudC5jdXJyZW50VGFyZ2V0LmNoZWNrZWQpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWVzLnB1c2goaXRlbSApOyAgICAgICAgXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlcyA9IHRoaXMuc2VsZWN0ZWRWYWx1ZXMuZmlsdGVyKChlbGVtOiBhbnkpID0+IGVsZW1bdGhpcy5pZEZpZWxkXSAhPT0gaXRlbVt0aGlzLmlkRmllbGRdKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlcyA9IFt7IC4uLml0ZW0gfV07XHJcbiAgICAgIHRoaXMuZmlsdGVyZWRWYWx1ZXMuZm9yRWFjaCgoZWxlbWVudDphbnkpID0+IHtcclxuICAgICAgICBpZihlbGVtZW50W3RoaXMuaWRGaWVsZF0gIT09IGl0ZW1bdGhpcy5pZEZpZWxkXSl7XHJcbiAgICAgICAgICBlbGVtZW50LmlzU2VsZWN0ZWQgPSBmYWxzZVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuc2hvd0Ryb3Bkb3duID0gZmFsc2U7XHJcbiAgICB9XHJcbiBcclxuICAgIGNvbnN0IHZhbHVlc1RvRW1pdCA9IHRoaXMuc2VsZWN0ZWRWYWx1ZXMubWFwKCh2YWx1ZTogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHNlbGVjdGVkSXRlbSA9IHsgLi4udmFsdWUgfTtcclxuICAgICAgZGVsZXRlIHNlbGVjdGVkSXRlbS5pc1NlbGVjdGVkO1xyXG4gICAgICByZXR1cm4gc2VsZWN0ZWRJdGVtO1xyXG4gICAgfSk7XHJcbiBcclxuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgdGhpcy5lbWl0U2VsZWN0ZWRWYWx1ZXModmFsdWVzVG9FbWl0KTtcclxuIFxyXG4gIH1cclxuIFxyXG4gIG9uU2VsZWN0QWxsKGV2ZW50OiBhbnkpIHtcclxuICAgIGNvbnN0IHNlbGVjdEFsbCA9IGV2ZW50LmN1cnJlbnRUYXJnZXQuY2hlY2tlZDtcclxuICAgIHRoaXMuZmlsdGVyZWRWYWx1ZXMuZm9yRWFjaCgoaXRlbTogYW55KSA9PiBpdGVtLmlzU2VsZWN0ZWQgPSBzZWxlY3RBbGwpO1xyXG4gXHJcbiAgICBpZiAoc2VsZWN0QWxsKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXMgPSBbLi4udGhpcy5maWx0ZXJlZFZhbHVlc107XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkVmFsdWVzID0gW107XHJcbiAgICB9XHJcbiBcclxuICAgIGNvbnN0IHZhbHVlc1RvRW1pdCA9IHRoaXMuc2VsZWN0ZWRWYWx1ZXMubWFwKCh2YWx1ZTogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgaXNTZWxlY3RlZCwgLi4uc2VsZWN0ZWRJdGVtIH0gPSB2YWx1ZTtcclxuICAgICAgcmV0dXJuIHNlbGVjdGVkSXRlbTtcclxuICAgIH0pO1xyXG4gXHJcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgIHRoaXMuZW1pdFNlbGVjdGVkVmFsdWVzKHZhbHVlc1RvRW1pdCk7XHJcbiAgfVxyXG4gXHJcbiBcclxuICBlbWl0U2VsZWN0ZWRWYWx1ZXModmFsdWVzOiBhbnlbXSkge1xyXG4gICAgaWYgKHRoaXMubXVsdGkpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZC5lbWl0KHZhbHVlcyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkLmVtaXQodmFsdWVzWzBdKTtcclxuICAgIH1cclxuICB9XHJcbiBcclxuICBjaGVja0lmQWxsU2VsZWN0ZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5maWx0ZXJlZFZhbHVlcy5ldmVyeSgoaXRlbTogYW55KSA9PiBpdGVtLmlzU2VsZWN0ZWQpO1xyXG4gIH1cclxuICBvbkl0ZW1DbGljayhpdGVtOiBhbnksIGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcblxyXG4gIC8vIEZvciBtdWx0aS1zZWxlY3QsIHJvdyBjbGljayBzaG91bGQgbm90IGRvIGFueXRoaW5nIHNwZWNpYWw7XHJcbiAgLy8gY2hlY2tib3ggKyBvblNlbGVjdCBhbHJlYWR5IGhhbmRsZSBpdFxyXG4gIGlmICh0aGlzLm11bHRpKSB7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG5cclxuICAvLyBNYXJrIHRoaXMgaXRlbSBhcyBzZWxlY3RlZCBzbyBVSSBoaWdobGlnaHRzIGl0XHJcbiAgaXRlbS5pc1NlbGVjdGVkID0gdHJ1ZTtcclxuXHJcbiAgLy8gRmFrZSBhbiBldmVudCB3aXRoIGBjdXJyZW50VGFyZ2V0LmNoZWNrZWQgPSB0cnVlYFxyXG4gIGNvbnN0IGZha2VFdmVudDogYW55ID0ge1xyXG4gICAgY3VycmVudFRhcmdldDoge1xyXG4gICAgICBjaGVja2VkOiB0cnVlXHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgLy8gUmV1c2UgeW91ciBleGlzdGluZyBsb2dpY1xyXG4gIHRoaXMub25TZWxlY3QoZmFrZUV2ZW50LCBpdGVtKTtcclxufVxyXG4gIGdldEluaXRpYWxzRnJvbUVtYWlsKGVtYWlsPzogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmICghZW1haWwpIHJldHVybiBcIlwiO1xyXG5cclxuICAgIC8vIHRha2UgdGV4dCBiZWZvcmUgQFxyXG4gICAgY29uc3QgbmFtZVBhcnQgPSBlbWFpbC5zcGxpdChcIkBcIilbMF07XHJcblxyXG4gICAgLy8gc3BsaXQgYnkgLiBvciBzcGFjZSAoZS5nLiBcInNhbmRlZXAucGFsXCIgLT4gW1wic2FuZGVlcFwiLCBcInBhbFwiXSlcclxuICAgIGNvbnN0IHBhcnRzID0gbmFtZVBhcnQuc3BsaXQoL1suXFxzXy1dKy8pLmZpbHRlcihCb29sZWFuKTtcclxuXHJcbiAgICBpZiAocGFydHMubGVuZ3RoID49IDIpIHtcclxuICAgICAgcmV0dXJuIChwYXJ0c1swXVswXSArIHBhcnRzWzFdWzBdKS50b1VwcGVyQ2FzZSgpOyAvLyBTICsgUCA9IFNQXHJcbiAgICB9XHJcblxyXG4gICAgLy8gZmFsbGJhY2s6IGZpcnN0IHR3byBjaGFycyBvZiB3aG9sZSBuYW1lUGFydFxyXG4gICAgcmV0dXJuIG5hbWVQYXJ0LnN1YnN0cmluZygwLCAyKS50b1VwcGVyQ2FzZSgpO1xyXG4gIH1cclxuXHJcbn0iLCI8ZGl2IGNsYXNzPVwib3V0ZXItY29udGFpbmVyXCI+XHJcbiAgPCEtLSBUUklHR0VSIC0tPlxyXG4gIDxkaXZcclxuICAgIFtuZ0NsYXNzXT1cImRpc2FibGVkID8gJ2Rpc2FibGUtaW5wdXQnIDogJydcIlxyXG4gICAgY2xhc3M9XCJzZWxlY3QtdHJpZ2dlciBmb3JtLXNlbGVjdFwiXHJcbiAgICAoY2xpY2spPVwib3BlbkRyb3Bkb3duKCRldmVudClcIlxyXG4gID5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtdWx0aTsgZWxzZSBzaW5nbGVNb2RlXCI+XHJcbiAgICAgIDxzcGFuICpuZ0lmPVwic2VsZWN0ZWRWYWx1ZXM/Lmxlbmd0aFwiIGNsYXNzPVwic2VsZWN0LXZhbHVlIG14LTJcIj5cclxuICAgICAgICA8IS0tIDxpbWcgY2xhc3M9XCJtZS0yIHRyaWdnZXItYXZhdGFyXCIgYWx0PVwiUGljXCIgc3JjPVwiLi9hc3NldHMvdGFuZ28vSW1hZ2UvdXNlcnMtdGVhbXMuc3ZnXCIgLz4gLS0+XHJcbiAgICAgICAge3sgc2VsZWN0ZWRWYWx1ZXM/LlswXT8uW3NlYXJjaEZpZWxkXSB9fVxyXG4gICAgICA8L3NwYW4+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwic2VsZWN0LXZhbHVlIG14LTJcIiAqbmdJZj1cInNlbGVjdGVkVmFsdWVzPy5sZW5ndGggPiAxXCI+XHJcbiAgICAgICAgK3t7IHNlbGVjdGVkVmFsdWVzPy5sZW5ndGggLSAxIH19XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgICAgPHNwYW4gICpuZ0lmPVwiIXNlbGVjdGVkVmFsdWVzPy5sZW5ndGhcIj57eyBsYWJlbCAgfHwgJ1NlbGVjdCcgfX08L3NwYW4+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgI3NpbmdsZU1vZGU+XHJcbiAgICAgIDxzcGFuICpuZ0lmPVwic2VsZWN0ZWRWYWx1ZXM/LlswXTsgZWxzZSBwbGFjZWhvbGRlclNpbmdsZVwiPlxyXG4gICAgICAgIHt7IHNlbGVjdGVkVmFsdWVzPy5bMF0/LltzZWFyY2hGaWVsZF0gfHwgJ1NlbGVjdCcgfX1cclxuICAgICAgPC9zcGFuPlxyXG4gICAgICA8bmctdGVtcGxhdGUgI3BsYWNlaG9sZGVyU2luZ2xlPlxyXG4gICAgICAgIDxzcGFuID57eyBsYWJlbCB8fCAnU2VsZWN0JyB9fTwvc3Bhbj5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG5cclxuICA8L2Rpdj5cclxuXHJcbiAgPCEtLSBEUk9QRE9XTiBQQU5FTCAtLT5cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cImlucHV0LWNvbnRhaW5lciBkcm9wZG93blwiXHJcbiAgICBbbmdDbGFzc109XCJzaG93RHJvcGRvd24gPyAnJyA6ICdkLW5vbmUnXCJcclxuICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gID5cclxuICAgIDwhLS0gU2VhcmNoIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cInctMTAwIGlucHV0LXdyYXBwZXJcIj5cclxuICAgICAgPGlucHV0XHJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJzZWFyY2hWYWx1ZVwiXHJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2hcIlxyXG4gICAgICAgIChpbnB1dCk9XCJvbklucHV0KCRldmVudClcIlxyXG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgLz5cclxuICAgICAgPHN2Z1xyXG4gICAgICAgIGNsYXNzPVwic2VhcmNoLWljb25cIlxyXG4gICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgIHdpZHRoPVwiMTZcIlxyXG4gICAgICAgIGhlaWdodD1cIjE3XCJcclxuICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE3XCJcclxuICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgID5cclxuICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgZD1cIk0xNCAxNC41TDExLjEgMTEuNk0xMi42NjY3IDcuODMzMzNDMTIuNjY2NyAxMC43Nzg5IDEwLjI3ODkgMTMuMTY2NyA3LjMzMzMzIDEzLjE2NjdDNC4zODc4MSAxMy4xNjY3IDIgMTAuNzc4OSAyIDcuODMzMzNDMiA0Ljg4NzgxIDQuMzg3ODEgMi41IDcuMzMzMzMgMi41QzEwLjI3ODkgMi41IDEyLjY2NjcgNC44ODc4MSAxMi42NjY3IDcuODMzMzNaXCJcclxuICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIlxyXG4gICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zXCJcclxuICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvc3ZnPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPHVsPlxyXG4gICAgICA8IS0tIFNlbGVjdCBhbGwgKG11bHRpIG1vZGUgb25seSkgLS0+XHJcbiAgICAgIDxsaSAqbmdJZj1cIm11bHRpICYmIGZpbHRlcmVkVmFsdWVzPy5sZW5ndGhcIj5cclxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrXCIgW2Zvcl09XCJpbnN0YW5jZUlkXCI+XHJcbiAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgKGNoYW5nZSk9XCJvblNlbGVjdEFsbCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgW2NoZWNrZWRdPVwiY2hlY2tJZkFsbFNlbGVjdGVkKClcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgbWUtM1wiXHJcbiAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgIFtpZF09XCJpbnN0YW5jZUlkXCJcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIj4gU2VsZWN0IEFsbCA8L3NwYW4+XHJcbiAgICAgICAgPC9sYWJlbD5cclxuICAgICAgPC9saT5cclxuXHJcbiAgICAgIDwhLS0gTElTVCBJVEVNUyAtLT5cclxuICAgICAgPGxpXHJcbiAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZmlsdGVyZWRWYWx1ZXNcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cIml0ZW0uaXNTZWxlY3RlZCAmJiAhbXVsdGkgPyAnc2VsZWN0ZWQnIDogJydcIlxyXG4gICAgICAgIChjbGljayk9XCJvbkl0ZW1DbGljayhpdGVtLCAkZXZlbnQpXCJcclxuICAgICAgPlxyXG4gICAgICAgIDwhLS0gbXVsdGkg4oaSIGNoZWNrYm94ICsgbGFiZWwgOyBzaW5nbGUg4oaSIHVzZXIgcm93IChhdmF0YXIgKyBuYW1lICsgZW1haWwpIC0tPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtdWx0aTsgZWxzZSBzaW5nbGVJdGVtVGVtcGxhdGVcIj5cclxuICAgICAgICAgIDxsYWJlbFxyXG4gICAgICAgICAgICBbZm9yXT1cIml0ZW1baWRGaWVsZF0gKyBpbnN0YW5jZUlkXCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwibXVsdGkgPyAnJyA6ICdwcy0wJ1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVja1wiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIChjaGFuZ2UpPVwib25TZWxlY3QoJGV2ZW50LCBpdGVtKVwiXHJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpdGVtLmlzU2VsZWN0ZWRcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBtZS0zXCJcclxuICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgIFtpZF09XCJpdGVtW2lkRmllbGRdICsgaW5zdGFuY2VJZFwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgIHt7IGl0ZW1bc2VhcmNoRmllbGRdIH19XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjc2luZ2xlSXRlbVRlbXBsYXRlPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInVzZXItcm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXIgYXZhdGFyLXRleHQgbGlnaHQtcHJpbWFyeSBwLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdldEluaXRpYWxzRnJvbUVtYWlsKGl0ZW0uZW1haWwgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uZW1haWwpIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8IS0tIDxpbWdcclxuICAgICAgICAgICAgICBjbGFzcz1cInVzZXItYXZhdGFyXCJcclxuICAgICAgICAgICAgICBbc3JjXT1cIml0ZW0uYXZhdGFyVXJsIHx8ICcuL2Fzc2V0cy90YW5nby9JbWFnZS9BdmF0YXIuc3ZnJ1wiXHJcbiAgICAgICAgICAgICAgYWx0PVwie3sgaXRlbVtzZWFyY2hGaWVsZF0gfX1cIlxyXG4gICAgICAgICAgICAvPiAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVzZXItdGV4dFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1c2VyLW5hbWVcIj5cclxuICAgICAgICAgICAgICAgIHt7IGl0ZW1bc2VhcmNoRmllbGRdIH19XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVzZXItZW1haWxcIj5cclxuICAgICAgICAgICAgICAgIHt7IGl0ZW0uZW1haWwgfX1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICA8L2xpPlxyXG5cclxuICAgICAgPGxpICpuZ0lmPVwiIWZpbHRlcmVkVmFsdWVzPy5sZW5ndGhcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxyXG4gICAgICAgICAgTm8gZGF0YSBmb3VuZFxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgPC9saT5cclxuICAgIDwvdWw+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { Component, EventEmitter, Output } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "@angular/forms";
|
|
4
|
-
export class FilterOptionsComponent {
|
|
5
|
-
applyFilters = new EventEmitter();
|
|
6
|
-
closePanel = new EventEmitter();
|
|
7
|
-
// sample model
|
|
8
|
-
status = '';
|
|
9
|
-
condition = '';
|
|
10
|
-
ticketValue = null;
|
|
11
|
-
reviewer = '';
|
|
12
|
-
apply() {
|
|
13
|
-
const filters = {
|
|
14
|
-
status: this.status,
|
|
15
|
-
condition: this.condition,
|
|
16
|
-
ticketValue: this.ticketValue,
|
|
17
|
-
reviewer: this.reviewer
|
|
18
|
-
};
|
|
19
|
-
this.applyFilters.emit(filters); // send to parent
|
|
20
|
-
}
|
|
21
|
-
close() {
|
|
22
|
-
this.closePanel.emit();
|
|
23
|
-
}
|
|
24
|
-
reset() {
|
|
25
|
-
this.status = '';
|
|
26
|
-
this.condition = '';
|
|
27
|
-
this.ticketValue = null;
|
|
28
|
-
this.reviewer = '';
|
|
29
|
-
}
|
|
30
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FilterOptionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
31
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FilterOptionsComponent, selector: "lib-filter-options", outputs: { applyFilters: "applyFilters", closePanel: "closePanel" }, ngImport: i0, template: "<div class=\"filter-card\">\r\n <div class=\"filter-header\">\r\n <span>Filter Options</span>\r\n <button class=\"close-btn\" (click)=\"close()\">\u2715</button>\r\n </div>\r\n\r\n <div class=\"field\">\r\n <label>Status</label>\r\n <select [(ngModel)]=\"status\" class=\"select\">\r\n <option value=\"\">Select</option>\r\n <option>Open</option>\r\n <option>Closed</option>\r\n <option>In Progress</option>\r\n </select>\r\n </div>\r\n\r\n <div class=\"field\">\r\n <label>Store accuracy (%) by condition</label>\r\n <div class=\"inline-row\">\r\n <select [(ngModel)]=\"condition\" class=\"select\">\r\n <option value=\"\">Select</option>\r\n <option value=\">\">Greater than</option>\r\n <option value=\"<\">Lesser than</option>\r\n <option value=\">=\">Greater than or equal to</option>\r\n <option value=\"<=\">Lesser than or equal to</option>\r\n </select>\r\n\r\n <input\r\n type=\"number\"\r\n [(ngModel)]=\"ticketValue\"\r\n placeholder=\"1 to 100%\"\r\n class=\"percent-input\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <div class=\"field\">\r\n <label>Reviewed by</label>\r\n <select [(ngModel)]=\"reviewer\" class=\"select\">\r\n <option value=\"\">Select</option>\r\n <option>drewlenskart.com</option>\r\n <option>user1lenskart.com</option>\r\n <option>user2lenskart.com</option>\r\n </select>\r\n </div>\r\n\r\n <div class=\"btn-row\">\r\n <button class=\"btn btn-reset\" (click)=\"reset()\">Reset</button>\r\n <button class=\"btn btn-apply\" (click)=\"apply()\">Apply</button>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";:host{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}body,.page-bg{background:#f3f4f7}.filter-card{width:360px;padding:18px 20px 16px;background:#fff;border-radius:16px;box-shadow:0 8px 20px #0f172a1f;font-size:13px}.filter-header{display:flex;justify-content:space-between;align-items:center;font-weight:600;margin-bottom:16px}.close-btn{border:none;background:transparent;cursor:pointer;font-size:14px}.field{margin-bottom:14px}.field label{display:block;font-size:12px;margin-bottom:4px;color:#4b5563}.inline-row{display:flex;gap:8px;align-items:center}.select{width:100%;padding:8px 10px;border-radius:10px;border:1px solid #e5e7eb;background:#f9fafb;font-size:13px;outline:none;appearance:none;background-image:linear-gradient(45deg,transparent 50%,#9ca3af 50%),linear-gradient(135deg,#9ca3af 50%,transparent 50%);background-position:calc(100% - 18px) 12px,calc(100% - 13px) 12px;background-size:5px 5px,5px 5px;background-repeat:no-repeat}.percent-input{width:110px;padding:8px 10px;border-radius:10px;border:1px solid #e5e7eb;background:#f9fafb;font-size:13px}.btn-row{display:flex;gap:10px;margin-top:10px}.btn{flex:1;border-radius:10px;padding:8px 0;font-size:13px;border:1px solid transparent;cursor:pointer}.btn-reset{background:#f9fafb;border-color:#e5e7eb}.btn-apply{background:#60b8ff;color:#fff}\n"], dependencies: [{ kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
|
|
32
|
-
}
|
|
33
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FilterOptionsComponent, decorators: [{
|
|
34
|
-
type: Component,
|
|
35
|
-
args: [{ selector: 'lib-filter-options', template: "<div class=\"filter-card\">\r\n <div class=\"filter-header\">\r\n <span>Filter Options</span>\r\n <button class=\"close-btn\" (click)=\"close()\">\u2715</button>\r\n </div>\r\n\r\n <div class=\"field\">\r\n <label>Status</label>\r\n <select [(ngModel)]=\"status\" class=\"select\">\r\n <option value=\"\">Select</option>\r\n <option>Open</option>\r\n <option>Closed</option>\r\n <option>In Progress</option>\r\n </select>\r\n </div>\r\n\r\n <div class=\"field\">\r\n <label>Store accuracy (%) by condition</label>\r\n <div class=\"inline-row\">\r\n <select [(ngModel)]=\"condition\" class=\"select\">\r\n <option value=\"\">Select</option>\r\n <option value=\">\">Greater than</option>\r\n <option value=\"<\">Lesser than</option>\r\n <option value=\">=\">Greater than or equal to</option>\r\n <option value=\"<=\">Lesser than or equal to</option>\r\n </select>\r\n\r\n <input\r\n type=\"number\"\r\n [(ngModel)]=\"ticketValue\"\r\n placeholder=\"1 to 100%\"\r\n class=\"percent-input\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <div class=\"field\">\r\n <label>Reviewed by</label>\r\n <select [(ngModel)]=\"reviewer\" class=\"select\">\r\n <option value=\"\">Select</option>\r\n <option>drewlenskart.com</option>\r\n <option>user1lenskart.com</option>\r\n <option>user2lenskart.com</option>\r\n </select>\r\n </div>\r\n\r\n <div class=\"btn-row\">\r\n <button class=\"btn btn-reset\" (click)=\"reset()\">Reset</button>\r\n <button class=\"btn btn-apply\" (click)=\"apply()\">Apply</button>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";:host{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}body,.page-bg{background:#f3f4f7}.filter-card{width:360px;padding:18px 20px 16px;background:#fff;border-radius:16px;box-shadow:0 8px 20px #0f172a1f;font-size:13px}.filter-header{display:flex;justify-content:space-between;align-items:center;font-weight:600;margin-bottom:16px}.close-btn{border:none;background:transparent;cursor:pointer;font-size:14px}.field{margin-bottom:14px}.field label{display:block;font-size:12px;margin-bottom:4px;color:#4b5563}.inline-row{display:flex;gap:8px;align-items:center}.select{width:100%;padding:8px 10px;border-radius:10px;border:1px solid #e5e7eb;background:#f9fafb;font-size:13px;outline:none;appearance:none;background-image:linear-gradient(45deg,transparent 50%,#9ca3af 50%),linear-gradient(135deg,#9ca3af 50%,transparent 50%);background-position:calc(100% - 18px) 12px,calc(100% - 13px) 12px;background-size:5px 5px,5px 5px;background-repeat:no-repeat}.percent-input{width:110px;padding:8px 10px;border-radius:10px;border:1px solid #e5e7eb;background:#f9fafb;font-size:13px}.btn-row{display:flex;gap:10px;margin-top:10px}.btn{flex:1;border-radius:10px;padding:8px 0;font-size:13px;border:1px solid transparent;cursor:pointer}.btn-reset{background:#f9fafb;border-color:#e5e7eb}.btn-apply{background:#60b8ff;color:#fff}\n"] }]
|
|
36
|
-
}], propDecorators: { applyFilters: [{
|
|
37
|
-
type: Output
|
|
38
|
-
}], closePanel: [{
|
|
39
|
-
type: Output
|
|
40
|
-
}] } });
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLW9wdGlvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tbWFuYWdlLXRpY2tldHMvc3JjL2xpYi9jb21wb25lbnRzL2ZpbHRlci1vcHRpb25zL2ZpbHRlci1vcHRpb25zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLW1hbmFnZS10aWNrZXRzL3NyYy9saWIvY29tcG9uZW50cy9maWx0ZXItb3B0aW9ucy9maWx0ZXItb3B0aW9ucy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQU9oRSxNQUFNLE9BQU8sc0JBQXNCO0lBQ3hCLFlBQVksR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO0lBQ3RDLFVBQVUsR0FBSyxJQUFJLFlBQVksRUFBUSxDQUFDO0lBRWxELGVBQWU7SUFDZixNQUFNLEdBQVcsRUFBRSxDQUFDO0lBQ3BCLFNBQVMsR0FBVyxFQUFFLENBQUM7SUFDdkIsV0FBVyxHQUFrQixJQUFJLENBQUM7SUFDbEMsUUFBUSxHQUFXLEVBQUUsQ0FBQztJQUV0QixLQUFLO1FBQ0gsTUFBTSxPQUFPLEdBQUc7WUFDZCxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDbkIsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3pCLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVztZQUM3QixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7U0FDeEIsQ0FBQztRQUNGLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUcsaUJBQWlCO0lBQ3RELENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7d0dBN0JVLHNCQUFzQjs0RkFBdEIsc0JBQXNCLCtIQ1BuQyxvcERBbURBOzs0RkQ1Q2Esc0JBQXNCO2tCQUxsQyxTQUFTOytCQUNFLG9CQUFvQjs4QkFLckIsWUFBWTtzQkFBckIsTUFBTTtnQkFDSSxVQUFVO3NCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItZmlsdGVyLW9wdGlvbnMnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9maWx0ZXItb3B0aW9ucy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2ZpbHRlci1vcHRpb25zLmNvbXBvbmVudC5zY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRmlsdGVyT3B0aW9uc0NvbXBvbmVudCB7XHJcbiBAT3V0cHV0KCkgYXBwbHlGaWx0ZXJzID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIGNsb3NlUGFuZWwgICA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgLy8gc2FtcGxlIG1vZGVsXHJcbiAgc3RhdHVzOiBzdHJpbmcgPSAnJztcclxuICBjb25kaXRpb246IHN0cmluZyA9ICcnO1xyXG4gIHRpY2tldFZhbHVlOiBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuICByZXZpZXdlcjogc3RyaW5nID0gJyc7XHJcblxyXG4gIGFwcGx5KCkge1xyXG4gICAgY29uc3QgZmlsdGVycyA9IHtcclxuICAgICAgc3RhdHVzOiB0aGlzLnN0YXR1cyxcclxuICAgICAgY29uZGl0aW9uOiB0aGlzLmNvbmRpdGlvbixcclxuICAgICAgdGlja2V0VmFsdWU6IHRoaXMudGlja2V0VmFsdWUsXHJcbiAgICAgIHJldmlld2VyOiB0aGlzLnJldmlld2VyXHJcbiAgICB9O1xyXG4gICAgdGhpcy5hcHBseUZpbHRlcnMuZW1pdChmaWx0ZXJzKTsgICAvLyBzZW5kIHRvIHBhcmVudFxyXG4gIH1cclxuXHJcbiAgY2xvc2UoKSB7XHJcbiAgICB0aGlzLmNsb3NlUGFuZWwuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgcmVzZXQoKSB7XHJcbiAgICB0aGlzLnN0YXR1cyA9ICcnO1xyXG4gICAgdGhpcy5jb25kaXRpb24gPSAnJztcclxuICAgIHRoaXMudGlja2V0VmFsdWUgPSBudWxsO1xyXG4gICAgdGhpcy5yZXZpZXdlciA9ICcnO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiZmlsdGVyLWNhcmRcIj5cclxuICA8ZGl2IGNsYXNzPVwiZmlsdGVyLWhlYWRlclwiPlxyXG4gICAgPHNwYW4+RmlsdGVyIE9wdGlvbnM8L3NwYW4+XHJcbiAgICA8YnV0dG9uIGNsYXNzPVwiY2xvc2UtYnRuXCIgKGNsaWNrKT1cImNsb3NlKClcIj7inJU8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImZpZWxkXCI+XHJcbiAgICA8bGFiZWw+U3RhdHVzPC9sYWJlbD5cclxuICAgIDxzZWxlY3QgWyhuZ01vZGVsKV09XCJzdGF0dXNcIiBjbGFzcz1cInNlbGVjdFwiPlxyXG4gICAgICA8b3B0aW9uIHZhbHVlPVwiXCI+U2VsZWN0PC9vcHRpb24+XHJcbiAgICAgIDxvcHRpb24+T3Blbjwvb3B0aW9uPlxyXG4gICAgICA8b3B0aW9uPkNsb3NlZDwvb3B0aW9uPlxyXG4gICAgICA8b3B0aW9uPkluIFByb2dyZXNzPC9vcHRpb24+XHJcbiAgICA8L3NlbGVjdD5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImZpZWxkXCI+XHJcbiAgICA8bGFiZWw+U3RvcmUgYWNjdXJhY3kgKCUpIGJ5IGNvbmRpdGlvbjwvbGFiZWw+XHJcbiAgICA8ZGl2IGNsYXNzPVwiaW5saW5lLXJvd1wiPlxyXG4gICAgICA8c2VsZWN0IFsobmdNb2RlbCldPVwiY29uZGl0aW9uXCIgY2xhc3M9XCJzZWxlY3RcIj5cclxuICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCI+U2VsZWN0PC9vcHRpb24+XHJcbiAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIj5cIj5HcmVhdGVyIHRoYW48L29wdGlvbj5cclxuICAgICAgICA8b3B0aW9uIHZhbHVlPVwiPFwiPkxlc3NlciB0aGFuPC9vcHRpb24+XHJcbiAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIj49XCI+R3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvPC9vcHRpb24+XHJcbiAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIjw9XCI+TGVzc2VyIHRoYW4gb3IgZXF1YWwgdG88L29wdGlvbj5cclxuICAgICAgPC9zZWxlY3Q+XHJcblxyXG4gICAgICA8aW5wdXRcclxuICAgICAgICB0eXBlPVwibnVtYmVyXCJcclxuICAgICAgICBbKG5nTW9kZWwpXT1cInRpY2tldFZhbHVlXCJcclxuICAgICAgICBwbGFjZWhvbGRlcj1cIjEgdG8gMTAwJVwiXHJcbiAgICAgICAgY2xhc3M9XCJwZXJjZW50LWlucHV0XCJcclxuICAgICAgLz5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2IGNsYXNzPVwiZmllbGRcIj5cclxuICAgIDxsYWJlbD5SZXZpZXdlZCBieTwvbGFiZWw+XHJcbiAgICA8c2VsZWN0IFsobmdNb2RlbCldPVwicmV2aWV3ZXJcIiBjbGFzcz1cInNlbGVjdFwiPlxyXG4gICAgICA8b3B0aW9uIHZhbHVlPVwiXCI+U2VsZWN0PC9vcHRpb24+XHJcbiAgICAgIDxvcHRpb24+ZHJld2xlbnNrYXJ0LmNvbTwvb3B0aW9uPlxyXG4gICAgICA8b3B0aW9uPnVzZXIxbGVuc2thcnQuY29tPC9vcHRpb24+XHJcbiAgICAgIDxvcHRpb24+dXNlcjJsZW5za2FydC5jb208L29wdGlvbj5cclxuICAgIDwvc2VsZWN0PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2IGNsYXNzPVwiYnRuLXJvd1wiPlxyXG4gICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcmVzZXRcIiAoY2xpY2spPVwicmVzZXQoKVwiPlJlc2V0PC9idXR0b24+XHJcbiAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1hcHBseVwiIChjbGljayk9XCJhcHBseSgpXCI+QXBwbHk8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|