@memberjunction/ng-user-view-grid 1.3.3 → 1.4.1

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.
@@ -8,14 +8,16 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  });
9
9
  };
10
10
  import { Component, ViewChild, ElementRef, Output, EventEmitter, Input } from '@angular/core';
11
- import { Metadata, RunView, EntityFieldTSType, LogError, CompositeKey, PotentialDuplicateRequest } from '@memberjunction/core';
11
+ import { Metadata, RunView, EntityFieldTSType, LogError, CompositeKey, PotentialDuplicateRequest, FieldValueCollection } from '@memberjunction/core';
12
12
  import { ViewInfo } from '@memberjunction/core-entities';
13
13
  import { GridComponent } from "@progress/kendo-angular-grid";
14
14
  import { Keys } from '@progress/kendo-angular-common';
15
- import { Subject } from 'rxjs';
15
+ import { Subject, distinctUntilChanged } from 'rxjs';
16
+ import { debounceTime } from "rxjs/operators";
16
17
  import { ExcelExportComponent } from '@progress/kendo-angular-excel-export';
17
18
  import { MJEventType, MJGlobal } from '@memberjunction/global';
18
19
  import { TextAreaComponent } from '@progress/kendo-angular-inputs';
20
+ import { BaseFormComponentEventCodes, SharedService } from '@memberjunction/ng-shared';
19
21
  import * as i0 from "@angular/core";
20
22
  import * as i1 from "@angular/forms";
21
23
  import * as i2 from "@angular/router";
@@ -26,248 +28,333 @@ import * as i6 from "@progress/kendo-angular-excel-export";
26
28
  import * as i7 from "@progress/kendo-angular-buttons";
27
29
  import * as i8 from "@memberjunction/ng-compare-records";
28
30
  import * as i9 from "@memberjunction/ng-container-directives";
31
+ import * as i10 from "@progress/kendo-angular-inputs";
32
+ import * as i11 from "@memberjunction/ng-entity-form-dialog";
33
+ import * as i12 from "@progress/kendo-angular-indicators";
29
34
  const _c0 = ["kendoGrid"];
30
35
  const _c1 = ["excelExport"];
31
36
  const _c2 = ["recordCompareRef"];
32
37
  const _c3 = ["analysisQuestion"];
33
38
  const _c4 = ["analysisResults"];
34
39
  const _c5 = ["compareDialogContainer"];
35
- function UserViewGridComponent_ng_template_3_button_0_Template(rf, ctx) { if (rf & 1) {
36
- const _r18 = i0.ɵɵgetCurrentView();
37
- i0.ɵɵelementStart(0, "button", 16);
38
- i0.ɵɵlistener("click", function UserViewGridComponent_ng_template_3_button_0_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r18); const ctx_r17 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r17.doExcelExport()); });
39
- i0.ɵɵelement(1, "span", 17);
40
- i0.ɵɵtext(2, " Export to Excel ");
40
+ const _c6 = ["entityFormDialog"];
41
+ function UserViewGridComponent_ng_template_3_Conditional_0_Conditional_0_Template(rf, ctx) { if (rf & 1) {
42
+ const _r19 = i0.ɵɵgetCurrentView();
43
+ i0.ɵɵelementStart(0, "button", 17);
44
+ i0.ɵɵlistener("click", function UserViewGridComponent_ng_template_3_Conditional_0_Conditional_0_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r19); const ctx_r18 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r18.doCreateNewRecord()); });
45
+ i0.ɵɵelement(1, "span", 21);
46
+ i0.ɵɵtext(2);
41
47
  i0.ɵɵelementEnd();
48
+ } if (rf & 2) {
49
+ const ctx_r16 = i0.ɵɵnextContext(3);
50
+ i0.ɵɵadvance(2);
51
+ i0.ɵɵtextInterpolate1(" New ", ctx_r16.entityRecord == null ? null : ctx_r16.entityRecord.EntityInfo == null ? null : ctx_r16.entityRecord.EntityInfo.Name, " ");
42
52
  } }
43
- function UserViewGridComponent_ng_template_3_button_1_Template(rf, ctx) { if (rf & 1) {
44
- const _r20 = i0.ɵɵgetCurrentView();
45
- i0.ɵɵelementStart(0, "button", 18);
46
- i0.ɵɵlistener("click", function UserViewGridComponent_ng_template_3_button_1_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r20); const ctx_r19 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r19.enableCheckbox(false, "duplicate")); });
47
- i0.ɵɵtext(1, " Search For Duplicates ");
53
+ function UserViewGridComponent_ng_template_3_Conditional_0_Conditional_12_Template(rf, ctx) { if (rf & 1) {
54
+ const _r21 = i0.ɵɵgetCurrentView();
55
+ i0.ɵɵelementStart(0, "button", 22);
56
+ i0.ɵɵlistener("click", function UserViewGridComponent_ng_template_3_Conditional_0_Conditional_12_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r21); const ctx_r20 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r20.RefreshFromSavedParams()); });
57
+ i0.ɵɵelement(1, "span", 23);
58
+ i0.ɵɵtext(2, " Refresh ");
48
59
  i0.ɵɵelementEnd();
49
- } if (rf & 2) {
50
- const ctx_r9 = i0.ɵɵnextContext(2);
51
- i0.ɵɵproperty("disabled", ctx_r9.duplicateMode && ctx_r9.recordsToCompare.length < 2);
52
60
  } }
53
- function UserViewGridComponent_ng_template_3_button_2_Template(rf, ctx) { if (rf & 1) {
54
- const _r22 = i0.ɵɵgetCurrentView();
55
- i0.ɵɵelementStart(0, "button", 18);
56
- i0.ɵɵlistener("click", function UserViewGridComponent_ng_template_3_button_2_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r22); const ctx_r21 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r21.enableCheckbox(false, "duplicate")); });
57
- i0.ɵɵtext(1, " Search For Duplicates ");
61
+ function UserViewGridComponent_ng_template_3_Conditional_0_Template(rf, ctx) { if (rf & 1) {
62
+ const _r23 = i0.ɵɵgetCurrentView();
63
+ i0.ɵɵtemplate(0, UserViewGridComponent_ng_template_3_Conditional_0_Conditional_0_Template, 3, 1, "button", 16);
64
+ i0.ɵɵelementStart(1, "button", 17);
65
+ i0.ɵɵlistener("click", function UserViewGridComponent_ng_template_3_Conditional_0_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r23); const ctx_r22 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r22.doExcelExport()); });
66
+ i0.ɵɵelement(2, "span", 18);
67
+ i0.ɵɵtext(3, " Export to Excel ");
68
+ i0.ɵɵelementEnd();
69
+ i0.ɵɵelementStart(4, "button", 19);
70
+ i0.ɵɵlistener("click", function UserViewGridComponent_ng_template_3_Conditional_0_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r23); const ctx_r24 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r24.enableCheckbox(false, "duplicate")); });
71
+ i0.ɵɵtext(5, " Search For Duplicates ");
72
+ i0.ɵɵelementEnd();
73
+ i0.ɵɵelementStart(6, "button", 19);
74
+ i0.ɵɵlistener("click", function UserViewGridComponent_ng_template_3_Conditional_0_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r23); const ctx_r25 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r25.enableCheckbox(false, "addToList")); });
75
+ i0.ɵɵtext(7, " Add To List ");
76
+ i0.ɵɵelementEnd();
77
+ i0.ɵɵelementStart(8, "button", 19);
78
+ i0.ɵɵlistener("click", function UserViewGridComponent_ng_template_3_Conditional_0_Template_button_click_8_listener() { i0.ɵɵrestoreView(_r23); const ctx_r26 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r26.enableMergeOrCompare(false, "merge")); });
79
+ i0.ɵɵtext(9, " Merge ");
58
80
  i0.ɵɵelementEnd();
81
+ i0.ɵɵelementStart(10, "button", 19);
82
+ i0.ɵɵlistener("click", function UserViewGridComponent_ng_template_3_Conditional_0_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r23); const ctx_r27 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r27.enableMergeOrCompare(false, "compare")); });
83
+ i0.ɵɵtext(11, " Compare ");
84
+ i0.ɵɵelementEnd();
85
+ i0.ɵɵtemplate(12, UserViewGridComponent_ng_template_3_Conditional_0_Conditional_12_Template, 3, 0, "button", 20);
59
86
  } if (rf & 2) {
60
87
  const ctx_r10 = i0.ɵɵnextContext(2);
61
- i0.ɵɵproperty("disabled", ctx_r10.duplicateMode && ctx_r10.recordsToCompare.length < 2);
88
+ i0.ɵɵconditional(0, ctx_r10.ShowCreateNewRecordButton && ctx_r10.UserCanCreateNewRecord ? 0 : -1);
89
+ i0.ɵɵadvance(12);
90
+ i0.ɵɵconditional(12, ctx_r10.showRefreshButton ? 12 : -1);
62
91
  } }
63
- function UserViewGridComponent_ng_template_3_button_3_Template(rf, ctx) { if (rf & 1) {
64
- const _r24 = i0.ɵɵgetCurrentView();
65
- i0.ɵɵelementStart(0, "button", 19);
66
- i0.ɵɵlistener("click", function UserViewGridComponent_ng_template_3_button_3_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r24); const ctx_r23 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r23.enableMergeOrCompare(false, "compare")); });
67
- i0.ɵɵtext(1, "Compare");
92
+ function UserViewGridComponent_ng_template_3_Conditional_1_Template(rf, ctx) { if (rf & 1) {
93
+ const _r29 = i0.ɵɵgetCurrentView();
94
+ i0.ɵɵelementStart(0, "button", 24);
95
+ i0.ɵɵlistener("click", function UserViewGridComponent_ng_template_3_Conditional_1_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r29); const ctx_r28 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r28.enableCheckbox(false, "duplicate")); });
96
+ i0.ɵɵtext(1, " Search For Duplicates ");
68
97
  i0.ɵɵelementEnd();
69
98
  } if (rf & 2) {
70
99
  const ctx_r11 = i0.ɵɵnextContext(2);
71
- i0.ɵɵproperty("disabled", ctx_r11.compareMode && ctx_r11.recordsToCompare.length < 2);
100
+ i0.ɵɵproperty("disabled", ctx_r11.duplicateMode && ctx_r11.recordsToCompare.length < 2);
72
101
  } }
73
- function UserViewGridComponent_ng_template_3_button_4_Template(rf, ctx) { if (rf & 1) {
74
- const _r26 = i0.ɵɵgetCurrentView();
75
- i0.ɵɵelementStart(0, "button", 19);
76
- i0.ɵɵlistener("click", function UserViewGridComponent_ng_template_3_button_4_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r26); const ctx_r25 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r25.enableMergeOrCompare(false, "compare")); });
77
- i0.ɵɵtext(1, "Compare");
102
+ function UserViewGridComponent_ng_template_3_Conditional_2_Template(rf, ctx) { if (rf & 1) {
103
+ const _r31 = i0.ɵɵgetCurrentView();
104
+ i0.ɵɵelementStart(0, "button", 24);
105
+ i0.ɵɵlistener("click", function UserViewGridComponent_ng_template_3_Conditional_2_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r31); const ctx_r30 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r30.enableCheckbox(false, "addToList")); });
106
+ i0.ɵɵtext(1, " Add To List ");
78
107
  i0.ɵɵelementEnd();
79
108
  } if (rf & 2) {
80
109
  const ctx_r12 = i0.ɵɵnextContext(2);
81
- i0.ɵɵproperty("disabled", ctx_r12.compareMode && ctx_r12.recordsToCompare.length < 2);
110
+ i0.ɵɵproperty("disabled", ctx_r12.addToListMode && ctx_r12.recordsToCompare.length === 0);
82
111
  } }
83
- function UserViewGridComponent_ng_template_3_button_5_Template(rf, ctx) { if (rf & 1) {
84
- const _r28 = i0.ɵɵgetCurrentView();
85
- i0.ɵɵelementStart(0, "button", 19);
86
- i0.ɵɵlistener("click", function UserViewGridComponent_ng_template_3_button_5_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r28); const ctx_r27 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r27.enableMergeOrCompare(false, "merge")); });
87
- i0.ɵɵtext(1, "Merge");
112
+ function UserViewGridComponent_ng_template_3_Conditional_3_Template(rf, ctx) { if (rf & 1) {
113
+ const _r33 = i0.ɵɵgetCurrentView();
114
+ i0.ɵɵelementStart(0, "button", 24);
115
+ i0.ɵɵlistener("click", function UserViewGridComponent_ng_template_3_Conditional_3_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r33); const ctx_r32 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r32.enableMergeOrCompare(false, "compare")); });
116
+ i0.ɵɵtext(1, " Compare ");
88
117
  i0.ɵɵelementEnd();
89
118
  } if (rf & 2) {
90
119
  const ctx_r13 = i0.ɵɵnextContext(2);
91
- i0.ɵɵproperty("disabled", ctx_r13.mergeMode && ctx_r13.recordsToCompare.length < 2);
120
+ i0.ɵɵproperty("disabled", ctx_r13.compareMode && ctx_r13.recordsToCompare.length < 2);
92
121
  } }
93
- function UserViewGridComponent_ng_template_3_button_6_Template(rf, ctx) { if (rf & 1) {
94
- const _r30 = i0.ɵɵgetCurrentView();
95
- i0.ɵɵelementStart(0, "button", 19);
96
- i0.ɵɵlistener("click", function UserViewGridComponent_ng_template_3_button_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r30); const ctx_r29 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r29.enableMergeOrCompare(false, "merge")); });
97
- i0.ɵɵtext(1, "Merge");
122
+ function UserViewGridComponent_ng_template_3_Conditional_4_Template(rf, ctx) { if (rf & 1) {
123
+ const _r35 = i0.ɵɵgetCurrentView();
124
+ i0.ɵɵelementStart(0, "button", 24);
125
+ i0.ɵɵlistener("click", function UserViewGridComponent_ng_template_3_Conditional_4_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r35); const ctx_r34 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r34.enableMergeOrCompare(false, "merge")); });
126
+ i0.ɵɵtext(1, " Merge ");
98
127
  i0.ɵɵelementEnd();
99
128
  } if (rf & 2) {
100
129
  const ctx_r14 = i0.ɵɵnextContext(2);
101
130
  i0.ɵɵproperty("disabled", ctx_r14.mergeMode && ctx_r14.recordsToCompare.length < 2);
102
131
  } }
103
- function UserViewGridComponent_ng_template_3_Conditional_7_Template(rf, ctx) { if (rf & 1) {
104
- const _r32 = i0.ɵɵgetCurrentView();
105
- i0.ɵɵelementStart(0, "button", 20);
106
- i0.ɵɵlistener("click", function UserViewGridComponent_ng_template_3_Conditional_7_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r32); const ctx_r31 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r31.enableCheckbox(true, "")); });
132
+ function UserViewGridComponent_ng_template_3_Conditional_5_Template(rf, ctx) { if (rf & 1) {
133
+ const _r37 = i0.ɵɵgetCurrentView();
134
+ i0.ɵɵelementStart(0, "button", 19);
135
+ i0.ɵɵlistener("click", function UserViewGridComponent_ng_template_3_Conditional_5_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r37); const ctx_r36 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r36.enableCheckbox(true, "")); });
107
136
  i0.ɵɵtext(1, " Cancel ");
108
137
  i0.ɵɵelementEnd();
109
138
  } }
110
- function UserViewGridComponent_ng_template_3_Conditional_8_Template(rf, ctx) { if (rf & 1) {
111
- const _r34 = i0.ɵɵgetCurrentView();
112
- i0.ɵɵelementStart(0, "button", 21);
113
- i0.ɵɵlistener("click", function UserViewGridComponent_ng_template_3_Conditional_8_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r34); const ctx_r33 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r33.RefreshFromSavedParams()); });
114
- i0.ɵɵelement(1, "span", 22);
115
- i0.ɵɵtext(2, " Refresh ");
116
- i0.ɵɵelementEnd();
117
- } }
118
139
  function UserViewGridComponent_ng_template_3_Template(rf, ctx) { if (rf & 1) {
119
- i0.ɵɵtemplate(0, UserViewGridComponent_ng_template_3_button_0_Template, 3, 0, "button", 11)(1, UserViewGridComponent_ng_template_3_button_1_Template, 2, 1, "button", 12)(2, UserViewGridComponent_ng_template_3_button_2_Template, 2, 1, "button", 12)(3, UserViewGridComponent_ng_template_3_button_3_Template, 2, 1, "button", 13)(4, UserViewGridComponent_ng_template_3_button_4_Template, 2, 1, "button", 13)(5, UserViewGridComponent_ng_template_3_button_5_Template, 2, 1, "button", 13)(6, UserViewGridComponent_ng_template_3_button_6_Template, 2, 1, "button", 13)(7, UserViewGridComponent_ng_template_3_Conditional_7_Template, 2, 0, "button", 14)(8, UserViewGridComponent_ng_template_3_Conditional_8_Template, 3, 0, "button", 15);
140
+ i0.ɵɵtemplate(0, UserViewGridComponent_ng_template_3_Conditional_0_Template, 13, 2)(1, UserViewGridComponent_ng_template_3_Conditional_1_Template, 2, 1, "button", 14)(2, UserViewGridComponent_ng_template_3_Conditional_2_Template, 2, 1, "button", 14)(3, UserViewGridComponent_ng_template_3_Conditional_3_Template, 2, 1, "button", 14)(4, UserViewGridComponent_ng_template_3_Conditional_4_Template, 2, 1, "button", 14)(5, UserViewGridComponent_ng_template_3_Conditional_5_Template, 2, 0, "button", 15);
120
141
  } if (rf & 2) {
121
142
  const ctx_r1 = i0.ɵɵnextContext();
122
- i0.ɵɵproperty("ngIf", !ctx_r1.compareMode && !ctx_r1.mergeMode);
123
- i0.ɵɵadvance();
124
- i0.ɵɵproperty("ngIf", !ctx_r1.compareMode && !ctx_r1.mergeMode && !ctx_r1.duplicateMode);
125
- i0.ɵɵadvance();
126
- i0.ɵɵproperty("ngIf", ctx_r1.duplicateMode);
127
- i0.ɵɵadvance();
128
- i0.ɵɵproperty("ngIf", !ctx_r1.compareMode && !ctx_r1.mergeMode && !ctx_r1.duplicateMode);
143
+ i0.ɵɵconditional(0, !ctx_r1.anyModeEnabled ? 0 : -1);
129
144
  i0.ɵɵadvance();
130
- i0.ɵɵproperty("ngIf", ctx_r1.compareMode);
145
+ i0.ɵɵconditional(1, ctx_r1.duplicateMode ? 1 : -1);
131
146
  i0.ɵɵadvance();
132
- i0.ɵɵproperty("ngIf", !ctx_r1.mergeMode && !ctx_r1.compareMode && !ctx_r1.duplicateMode);
147
+ i0.ɵɵconditional(2, ctx_r1.addToListMode ? 2 : -1);
133
148
  i0.ɵɵadvance();
134
- i0.ɵɵproperty("ngIf", ctx_r1.mergeMode);
149
+ i0.ɵɵconditional(3, ctx_r1.compareMode ? 3 : -1);
135
150
  i0.ɵɵadvance();
136
- i0.ɵɵconditional(7, ctx_r1.compareMode || ctx_r1.mergeMode || ctx_r1.duplicateMode ? 7 : -1);
151
+ i0.ɵɵconditional(4, ctx_r1.mergeMode ? 4 : -1);
137
152
  i0.ɵɵadvance();
138
- i0.ɵɵconditional(8, ctx_r1.showRefreshButton && !ctx_r1.compareMode && !ctx_r1.mergeMode && !ctx_r1.duplicateMode ? 8 : -1);
153
+ i0.ɵɵconditional(5, ctx_r1.anyModeEnabled ? 5 : -1);
139
154
  } }
140
- const _c6 = () => ({ "text-align": "center", "vertical-align": "center" });
141
- const _c7 = () => ({ "font-weight": "bold", "background-color": "white" });
155
+ const _c7 = () => ({ "text-align": "center", "vertical-align": "center" });
156
+ const _c8 = () => ({ "font-weight": "bold", "background-color": "white" });
142
157
  function UserViewGridComponent_kendo_grid_checkbox_column_4_Template(rf, ctx) { if (rf & 1) {
143
- i0.ɵɵelement(0, "kendo-grid-checkbox-column", 23);
158
+ i0.ɵɵelement(0, "kendo-grid-checkbox-column", 25);
144
159
  } if (rf & 2) {
145
- i0.ɵɵstyleMap(i0.ɵɵpureFunction0(4, _c6));
146
- i0.ɵɵproperty("width", 50)("headerStyle", i0.ɵɵpureFunction0(5, _c7));
160
+ i0.ɵɵstyleMap(i0.ɵɵpureFunction0(4, _c7));
161
+ i0.ɵɵproperty("width", 50)("headerStyle", i0.ɵɵpureFunction0(5, _c8));
147
162
  } }
148
163
  function UserViewGridComponent_kendo_grid_column_5_1_ng_template_0_Template(rf, ctx) { if (rf & 1) {
149
164
  i0.ɵɵtext(0);
150
165
  i0.ɵɵpipe(1, "number");
151
166
  i0.ɵɵpipe(2, "number");
152
167
  i0.ɵɵelement(3, "br");
153
- i0.ɵɵelementStart(4, "span", 26);
168
+ i0.ɵɵelementStart(4, "span", 28);
154
169
  i0.ɵɵtext(5);
155
170
  i0.ɵɵpipe(6, "number");
156
171
  i0.ɵɵelementEnd();
157
172
  } if (rf & 2) {
158
- const ctx_r37 = i0.ɵɵnextContext(3);
159
- i0.ɵɵtextInterpolate2(" ", i0.ɵɵpipeBind1(1, 3, ctx_r37.viewData.length), "", ctx_r37.totalRowCount > ctx_r37.viewData.length ? " of " + i0.ɵɵpipeBind1(2, 5, ctx_r37.totalRowCount) : " rows", "");
173
+ const ctx_r40 = i0.ɵɵnextContext(3);
174
+ i0.ɵɵtextInterpolate2(" ", i0.ɵɵpipeBind1(1, 3, ctx_r40.viewData.length), "", ctx_r40.totalRowCount > ctx_r40.viewData.length ? " of " + i0.ɵɵpipeBind1(2, 5, ctx_r40.totalRowCount) : " rows", "");
160
175
  i0.ɵɵadvance(5);
161
- i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind2(6, 7, ctx_r37.viewExecutionTime, "1.2-2"), " seconds");
176
+ i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind2(6, 7, ctx_r40.viewExecutionTime, "1.2-2"), " seconds");
162
177
  } }
163
178
  function UserViewGridComponent_kendo_grid_column_5_1_Template(rf, ctx) { if (rf & 1) {
164
- i0.ɵɵtemplate(0, UserViewGridComponent_kendo_grid_column_5_1_ng_template_0_Template, 7, 10, "ng-template", 25);
179
+ i0.ɵɵtemplate(0, UserViewGridComponent_kendo_grid_column_5_1_ng_template_0_Template, 7, 10, "ng-template", 27);
165
180
  } }
166
181
  function UserViewGridComponent_kendo_grid_column_5_Template(rf, ctx) { if (rf & 1) {
167
- i0.ɵɵelementStart(0, "kendo-grid-column", 24);
182
+ i0.ɵɵelementStart(0, "kendo-grid-column", 26);
168
183
  i0.ɵɵtemplate(1, UserViewGridComponent_kendo_grid_column_5_1_Template, 1, 0, null, 10);
169
184
  i0.ɵɵelementEnd();
170
185
  } if (rf & 2) {
171
- const item_r35 = ctx.$implicit;
186
+ const item_r38 = ctx.$implicit;
172
187
  const ctx_r3 = i0.ɵɵnextContext();
173
- i0.ɵɵstyleMap(ctx_r3.GetColumnCellStyle(item_r35));
174
- i0.ɵɵproperty("field", item_r35.Name)("title", ctx_r3.GetColumnTitle(item_r35))("width", item_r35.width ? item_r35.width : 100)("editable", item_r35.EntityField.AllowUpdateAPI)("editor", ctx_r3.getEditor(item_r35.EntityField))("headerStyle", i0.ɵɵpureFunction0(9, _c7));
188
+ i0.ɵɵstyleMap(ctx_r3.GetColumnCellStyle(item_r38));
189
+ i0.ɵɵproperty("field", item_r38.Name)("title", ctx_r3.GetColumnTitle(item_r38))("width", item_r38.width ? item_r38.width : 100)("editable", item_r38.EntityField.AllowUpdateAPI)("editor", ctx_r3.getEditor(item_r38.EntityField))("headerStyle", i0.ɵɵpureFunction0(9, _c8));
175
190
  i0.ɵɵadvance();
176
- i0.ɵɵproperty("ngIf", item_r35 === ctx_r3.visibleColumns[0]);
191
+ i0.ɵɵproperty("ngIf", item_r38 === ctx_r3.visibleColumns[0]);
177
192
  } }
178
193
  function UserViewGridComponent_kendo_excelexport_column_8_Template(rf, ctx) { if (rf & 1) {
179
- i0.ɵɵelement(0, "kendo-excelexport-column", 27);
194
+ i0.ɵɵelement(0, "kendo-excelexport-column", 29);
180
195
  } if (rf & 2) {
181
- const exportCol_r38 = ctx.$implicit;
182
- i0.ɵɵproperty("field", exportCol_r38.Name)("title", exportCol_r38.Name);
196
+ const exportCol_r41 = ctx.$implicit;
197
+ i0.ɵɵproperty("field", exportCol_r41.Name)("title", exportCol_r41.Name);
183
198
  } }
184
199
  function UserViewGridComponent_div_11_kendo_window_2_button_5_Template(rf, ctx) { if (rf & 1) {
185
- const _r47 = i0.ɵɵgetCurrentView();
186
- i0.ɵɵelementStart(0, "button", 38);
187
- i0.ɵɵlistener("click", function UserViewGridComponent_div_11_kendo_window_2_button_5_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r47); const ctx_r46 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r46.closeCompareDialog("merge")); });
200
+ const _r50 = i0.ɵɵgetCurrentView();
201
+ i0.ɵɵelementStart(0, "button", 40);
202
+ i0.ɵɵlistener("click", function UserViewGridComponent_div_11_kendo_window_2_button_5_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r50); const ctx_r49 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r49.closeCompareDialog("merge")); });
188
203
  i0.ɵɵtext(1, " Merge Records ");
189
204
  i0.ɵɵelementEnd();
190
205
  } }
191
206
  function UserViewGridComponent_div_11_kendo_window_2_button_6_Template(rf, ctx) { if (rf & 1) {
192
- const _r49 = i0.ɵɵgetCurrentView();
193
- i0.ɵɵelementStart(0, "button", 38);
194
- i0.ɵɵlistener("click", function UserViewGridComponent_div_11_kendo_window_2_button_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r49); const ctx_r48 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r48.findDuplicateRecords()); });
207
+ const _r52 = i0.ɵɵgetCurrentView();
208
+ i0.ɵɵelementStart(0, "button", 40);
209
+ i0.ɵɵlistener("click", function UserViewGridComponent_div_11_kendo_window_2_button_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r52); const ctx_r51 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r51.findDuplicateRecords()); });
195
210
  i0.ɵɵtext(1, " Search for Duplicates ");
196
211
  i0.ɵɵelementEnd();
197
212
  } }
198
213
  function UserViewGridComponent_div_11_kendo_window_2_button_7_Template(rf, ctx) { if (rf & 1) {
199
- const _r51 = i0.ɵɵgetCurrentView();
200
- i0.ɵɵelementStart(0, "button", 39);
201
- i0.ɵɵlistener("click", function UserViewGridComponent_div_11_kendo_window_2_button_7_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r51); const ctx_r50 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r50.closeCompareDialog("close")); });
214
+ const _r54 = i0.ɵɵgetCurrentView();
215
+ i0.ɵɵelementStart(0, "button", 41);
216
+ i0.ɵɵlistener("click", function UserViewGridComponent_div_11_kendo_window_2_button_7_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r54); const ctx_r53 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r53.closeCompareDialog("close")); });
202
217
  i0.ɵɵtext(1, " Close ");
203
218
  i0.ɵɵelementEnd();
204
219
  } }
205
220
  function UserViewGridComponent_div_11_kendo_window_2_button_8_Template(rf, ctx) { if (rf & 1) {
206
- const _r53 = i0.ɵɵgetCurrentView();
207
- i0.ɵɵelementStart(0, "button", 39);
208
- i0.ɵɵlistener("click", function UserViewGridComponent_div_11_kendo_window_2_button_8_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r53); const ctx_r52 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r52.closeCompareDialog("cancel")); });
221
+ const _r56 = i0.ɵɵgetCurrentView();
222
+ i0.ɵɵelementStart(0, "button", 41);
223
+ i0.ɵɵlistener("click", function UserViewGridComponent_div_11_kendo_window_2_button_8_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r56); const ctx_r55 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r55.closeCompareDialog("cancel")); });
209
224
  i0.ɵɵtext(1, " Cancel ");
210
225
  i0.ɵɵelementEnd();
211
226
  } }
212
227
  function UserViewGridComponent_div_11_kendo_window_2_kendo_dialog_9_Template(rf, ctx) { if (rf & 1) {
213
- const _r55 = i0.ɵɵgetCurrentView();
214
- i0.ɵɵelementStart(0, "kendo-dialog", 40);
215
- i0.ɵɵlistener("close", function UserViewGridComponent_div_11_kendo_window_2_kendo_dialog_9_Template_kendo_dialog_close_0_listener() { i0.ɵɵrestoreView(_r55); const ctx_r54 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r54.closeConfirmMergeDialog("cancel")); });
216
- i0.ɵɵelementStart(1, "p", 41);
228
+ const _r58 = i0.ɵɵgetCurrentView();
229
+ i0.ɵɵelementStart(0, "kendo-dialog", 42);
230
+ i0.ɵɵlistener("close", function UserViewGridComponent_div_11_kendo_window_2_kendo_dialog_9_Template_kendo_dialog_close_0_listener() { i0.ɵɵrestoreView(_r58); const ctx_r57 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r57.closeConfirmMergeDialog("cancel")); });
231
+ i0.ɵɵelementStart(1, "p", 43);
217
232
  i0.ɵɵtext(2, " Are you sure you want to merge the records? This action cannot be undone. If you select \"Yes\", the records will be merged and the duplicate records will be deleted. ");
218
233
  i0.ɵɵelementEnd();
219
- i0.ɵɵelementStart(3, "kendo-dialog-actions")(4, "button", 16);
220
- i0.ɵɵlistener("click", function UserViewGridComponent_div_11_kendo_window_2_kendo_dialog_9_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r55); const ctx_r56 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r56.closeConfirmMergeDialog("no")); });
234
+ i0.ɵɵelementStart(3, "kendo-dialog-actions")(4, "button", 17);
235
+ i0.ɵɵlistener("click", function UserViewGridComponent_div_11_kendo_window_2_kendo_dialog_9_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r58); const ctx_r59 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r59.closeConfirmMergeDialog("no")); });
221
236
  i0.ɵɵtext(5, "No");
222
237
  i0.ɵɵelementEnd();
223
- i0.ɵɵelementStart(6, "button", 42);
224
- i0.ɵɵlistener("click", function UserViewGridComponent_div_11_kendo_window_2_kendo_dialog_9_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r55); const ctx_r57 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r57.closeConfirmMergeDialog("yes")); });
238
+ i0.ɵɵelementStart(6, "button", 44);
239
+ i0.ɵɵlistener("click", function UserViewGridComponent_div_11_kendo_window_2_kendo_dialog_9_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r58); const ctx_r60 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r60.closeConfirmMergeDialog("yes")); });
225
240
  i0.ɵɵtext(7, " Yes ");
226
241
  i0.ɵɵelementEnd()()();
227
242
  } if (rf & 2) {
228
243
  i0.ɵɵproperty("minWidth", 250)("width", 450);
229
244
  } }
230
245
  function UserViewGridComponent_div_11_kendo_window_2_Template(rf, ctx) { if (rf & 1) {
231
- const _r59 = i0.ɵɵgetCurrentView();
232
- i0.ɵɵelementStart(0, "kendo-window", 30);
233
- i0.ɵɵlistener("close", function UserViewGridComponent_div_11_kendo_window_2_Template_kendo_window_close_0_listener($event) { i0.ɵɵrestoreView(_r59); const ctx_r58 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r58.closeCompareDialog($event)); });
234
- i0.ɵɵelementStart(1, "div", 31);
235
- i0.ɵɵelement(2, "mj-compare-records", 32, 33);
246
+ const _r62 = i0.ɵɵgetCurrentView();
247
+ i0.ɵɵelementStart(0, "kendo-window", 32);
248
+ i0.ɵɵlistener("close", function UserViewGridComponent_div_11_kendo_window_2_Template_kendo_window_close_0_listener($event) { i0.ɵɵrestoreView(_r62); const ctx_r61 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r61.closeCompareDialog($event)); });
249
+ i0.ɵɵelementStart(1, "div", 33);
250
+ i0.ɵɵelement(2, "mj-compare-records", 34, 35);
236
251
  i0.ɵɵelementEnd();
237
- i0.ɵɵelementStart(4, "div", 34);
238
- i0.ɵɵtemplate(5, UserViewGridComponent_div_11_kendo_window_2_button_5_Template, 2, 0, "button", 35)(6, UserViewGridComponent_div_11_kendo_window_2_button_6_Template, 2, 0, "button", 35)(7, UserViewGridComponent_div_11_kendo_window_2_button_7_Template, 2, 0, "button", 36)(8, UserViewGridComponent_div_11_kendo_window_2_button_8_Template, 2, 0, "button", 36);
252
+ i0.ɵɵelementStart(4, "div", 36);
253
+ i0.ɵɵtemplate(5, UserViewGridComponent_div_11_kendo_window_2_button_5_Template, 2, 0, "button", 37)(6, UserViewGridComponent_div_11_kendo_window_2_button_6_Template, 2, 0, "button", 37)(7, UserViewGridComponent_div_11_kendo_window_2_button_7_Template, 2, 0, "button", 38)(8, UserViewGridComponent_div_11_kendo_window_2_button_8_Template, 2, 0, "button", 38);
239
254
  i0.ɵɵelementEnd();
240
- i0.ɵɵtemplate(9, UserViewGridComponent_div_11_kendo_window_2_kendo_dialog_9_Template, 8, 2, "kendo-dialog", 37);
255
+ i0.ɵɵtemplate(9, UserViewGridComponent_div_11_kendo_window_2_kendo_dialog_9_Template, 8, 2, "kendo-dialog", 39);
241
256
  i0.ɵɵelementEnd();
242
257
  } if (rf & 2) {
243
- const ctx_r39 = i0.ɵɵnextContext(2);
258
+ const ctx_r42 = i0.ɵɵnextContext(2);
244
259
  i0.ɵɵproperty("minHeight", 300)("minWidth", 800)("top", 100)("left", 100)("width", 1200)("height", 675)("resizable", true);
245
260
  i0.ɵɵadvance();
246
261
  i0.ɵɵproperty("fillHeight", true)("bottomMargin", 100);
247
262
  i0.ɵɵadvance();
248
- i0.ɵɵproperty("entityName", ctx_r39._entityInfo ? ctx_r39._entityInfo.Name : "")("recordsToCompare", ctx_r39.recordsToCompare)("visibleColumns", ctx_r39.visibleColumns)("selectionMode", ctx_r39.mergeMode ? true : false);
263
+ i0.ɵɵproperty("entityName", ctx_r42._entityInfo ? ctx_r42._entityInfo.Name : "")("recordsToCompare", ctx_r42.recordsToCompare)("visibleColumns", ctx_r42.visibleColumns)("selectionMode", ctx_r42.mergeMode ? true : false);
249
264
  i0.ɵɵadvance(3);
250
- i0.ɵɵproperty("ngIf", ctx_r39.mergeMode);
265
+ i0.ɵɵproperty("ngIf", ctx_r42.mergeMode);
251
266
  i0.ɵɵadvance();
252
- i0.ɵɵproperty("ngIf", ctx_r39.duplicateMode);
267
+ i0.ɵɵproperty("ngIf", ctx_r42.duplicateMode);
253
268
  i0.ɵɵadvance();
254
- i0.ɵɵproperty("ngIf", ctx_r39.compareMode);
269
+ i0.ɵɵproperty("ngIf", ctx_r42.compareMode);
255
270
  i0.ɵɵadvance();
256
- i0.ɵɵproperty("ngIf", ctx_r39.mergeMode || ctx_r39.duplicateMode);
271
+ i0.ɵɵproperty("ngIf", ctx_r42.mergeMode || ctx_r42.duplicateMode);
257
272
  i0.ɵɵadvance();
258
- i0.ɵɵproperty("ngIf", ctx_r39.isConfirmDialogOpen);
273
+ i0.ɵɵproperty("ngIf", ctx_r42.isConfirmDialogOpen);
259
274
  } }
260
275
  function UserViewGridComponent_div_11_Template(rf, ctx) { if (rf & 1) {
261
276
  i0.ɵɵelementStart(0, "div");
262
- i0.ɵɵelement(1, "div", 28);
263
- i0.ɵɵtemplate(2, UserViewGridComponent_div_11_kendo_window_2_Template, 10, 18, "kendo-window", 29);
277
+ i0.ɵɵelement(1, "div", 30);
278
+ i0.ɵɵtemplate(2, UserViewGridComponent_div_11_kendo_window_2_Template, 10, 18, "kendo-window", 31);
264
279
  i0.ɵɵelementEnd();
265
280
  } if (rf & 2) {
266
281
  const ctx_r7 = i0.ɵɵnextContext();
267
282
  i0.ɵɵadvance(2);
268
283
  i0.ɵɵproperty("ngIf", ctx_r7.isCompareDialogOpened);
269
284
  } }
285
+ function UserViewGridComponent_kendo_dialog_12_Conditional_4_Template(rf, ctx) { if (rf & 1) {
286
+ i0.ɵɵelement(0, "kendo-loader", 48);
287
+ } }
288
+ function UserViewGridComponent_kendo_dialog_12_Conditional_5_For_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
289
+ const _r75 = i0.ɵɵgetCurrentView();
290
+ i0.ɵɵelementStart(0, "button", 17);
291
+ i0.ɵɵlistener("click", function UserViewGridComponent_kendo_dialog_12_Conditional_5_For_1_Conditional_2_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r75); const listEntity_r66 = i0.ɵɵnextContext().$implicit; const ctx_r73 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r73.removeFromList(listEntity_r66)); });
292
+ i0.ɵɵelement(1, "span", 52);
293
+ i0.ɵɵtext(2, " Remove ");
294
+ i0.ɵɵelementEnd();
295
+ } }
296
+ function UserViewGridComponent_kendo_dialog_12_Conditional_5_For_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
297
+ const _r78 = i0.ɵɵgetCurrentView();
298
+ i0.ɵɵelementStart(0, "button", 17);
299
+ i0.ɵɵlistener("click", function UserViewGridComponent_kendo_dialog_12_Conditional_5_For_1_Conditional_3_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r78); const listEntity_r66 = i0.ɵɵnextContext().$implicit; const ctx_r76 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r76.addToList(listEntity_r66)); });
300
+ i0.ɵɵelement(1, "span", 53);
301
+ i0.ɵɵtext(2, " Add ");
302
+ i0.ɵɵelementEnd();
303
+ } }
304
+ function UserViewGridComponent_kendo_dialog_12_Conditional_5_For_1_Template(rf, ctx) { if (rf & 1) {
305
+ i0.ɵɵelementStart(0, "div", 51);
306
+ i0.ɵɵtext(1);
307
+ i0.ɵɵtemplate(2, UserViewGridComponent_kendo_dialog_12_Conditional_5_For_1_Conditional_2_Template, 3, 0, "button", 16)(3, UserViewGridComponent_kendo_dialog_12_Conditional_5_For_1_Conditional_3_Template, 3, 0);
308
+ i0.ɵɵelementEnd();
309
+ i0.ɵɵelement(4, "hr");
310
+ } if (rf & 2) {
311
+ const listEntity_r66 = ctx.$implicit;
312
+ const ctx_r65 = i0.ɵɵnextContext(3);
313
+ i0.ɵɵadvance();
314
+ i0.ɵɵtextInterpolate1(" ", listEntity_r66.Name, " ");
315
+ i0.ɵɵadvance();
316
+ i0.ɵɵconditional(2, ctx_r65.selectedListEntities.includes(listEntity_r66) ? 2 : 3);
317
+ } }
318
+ function UserViewGridComponent_kendo_dialog_12_Conditional_5_Template(rf, ctx) { if (rf & 1) {
319
+ i0.ɵɵrepeaterCreate(0, UserViewGridComponent_kendo_dialog_12_Conditional_5_For_1_Template, 5, 2, null, null, i0.ɵɵrepeaterTrackByIdentity);
320
+ } if (rf & 2) {
321
+ const ctx_r64 = i0.ɵɵnextContext(2);
322
+ i0.ɵɵrepeater(ctx_r64.listEntities);
323
+ } }
324
+ function UserViewGridComponent_kendo_dialog_12_Template(rf, ctx) { if (rf & 1) {
325
+ const _r80 = i0.ɵɵgetCurrentView();
326
+ i0.ɵɵelementStart(0, "kendo-dialog", 45);
327
+ i0.ɵɵlistener("close", function UserViewGridComponent_kendo_dialog_12_Template_kendo_dialog_close_0_listener() { i0.ɵɵrestoreView(_r80); const ctx_r79 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r79.toggleAddToListDialog(false)); });
328
+ i0.ɵɵelementStart(1, "div")(2, "kendo-textbox", 46);
329
+ i0.ɵɵlistener("valueChange", function UserViewGridComponent_kendo_dialog_12_Template_kendo_textbox_valueChange_2_listener($event) { i0.ɵɵrestoreView(_r80); const ctx_r81 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r81.onSearch($event)); });
330
+ i0.ɵɵelementEnd()();
331
+ i0.ɵɵelementStart(3, "div", 47);
332
+ i0.ɵɵtemplate(4, UserViewGridComponent_kendo_dialog_12_Conditional_4_Template, 1, 0, "kendo-loader", 48)(5, UserViewGridComponent_kendo_dialog_12_Conditional_5_Template, 2, 0);
333
+ i0.ɵɵelementEnd();
334
+ i0.ɵɵelementStart(6, "kendo-dialog-actions")(7, "button", 49);
335
+ i0.ɵɵlistener("click", function UserViewGridComponent_kendo_dialog_12_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r80); const ctx_r82 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r82.addRecordsToSelectedLists()); });
336
+ i0.ɵɵtext(8, " Save ");
337
+ i0.ɵɵelementEnd();
338
+ i0.ɵɵelementStart(9, "button", 50);
339
+ i0.ɵɵlistener("click", function UserViewGridComponent_kendo_dialog_12_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r80); const ctx_r83 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r83.toggleAddToListDialog(false)); });
340
+ i0.ɵɵtext(10, " Cancel ");
341
+ i0.ɵɵelementEnd()()();
342
+ } if (rf & 2) {
343
+ const ctx_r8 = i0.ɵɵnextContext();
344
+ i0.ɵɵproperty("minHeight", 450)("maxHeight", 450)("minWidth", 500)("maxWidth", 650);
345
+ i0.ɵɵadvance(2);
346
+ i0.ɵɵproperty("clearButton", true);
347
+ i0.ɵɵadvance(2);
348
+ i0.ɵɵconditional(4, ctx_r8.showAddToListLoader ? 4 : 5);
349
+ i0.ɵɵadvance(3);
350
+ i0.ɵɵproperty("disabled", ctx_r8.showAddToListLoader);
351
+ i0.ɵɵadvance(2);
352
+ i0.ɵɵproperty("disabled", ctx_r8.showAddToListLoader);
353
+ } }
270
354
  export class UserViewGridComponent {
355
+ get anyModeEnabled() {
356
+ return this.compareMode || this.mergeMode || this.duplicateMode || this.addToListMode;
357
+ }
271
358
  get PendingRecords() {
272
359
  return this._pendingRecords;
273
360
  }
@@ -277,6 +364,18 @@ export class UserViewGridComponent {
277
364
  else
278
365
  return 0;
279
366
  }
367
+ /**
368
+ * This property is true if the user has the ability to create a new record which is a combination of the user-level permission coupled with the
369
+ * entity-level setting AllowCreateAPI being set to 1.
370
+ */
371
+ get UserCanCreateNewRecord() {
372
+ if (this._entityInfo && this._entityInfo.AllowCreateAPI) {
373
+ const perm = this._entityInfo.GetUserPermisions(new Metadata().CurrentUser);
374
+ return perm.CanCreate;
375
+ }
376
+ else
377
+ return false;
378
+ }
280
379
  StartEditMode() {
281
380
  this.InEditMode = true;
282
381
  }
@@ -360,7 +459,8 @@ export class UserViewGridComponent {
360
459
  LogError(e);
361
460
  }
362
461
  }
363
- constructor(formBuilder, router, renderer) {
462
+ constructor(elementRef, formBuilder, router, renderer) {
463
+ this.elementRef = elementRef;
364
464
  this.formBuilder = formBuilder;
365
465
  this.router = router;
366
466
  this.renderer = renderer;
@@ -369,6 +469,14 @@ export class UserViewGridComponent {
369
469
  this.InEditMode = false;
370
470
  this.EditMode = "None";
371
471
  this.AutoNavigate = true;
472
+ /**
473
+ * If set to true, the Create New Record button will be displayed if the user is allowed to create new records for the entity being shown. If set to false, the Create New Record button will be hidden.
474
+ */
475
+ this.ShowCreateNewRecordButton = true;
476
+ /**
477
+ * When set to Dialog, the Create New Record button will open a dialog to create a new record. When set to Tab, the Create New Record button will open a new tab to create a new record.
478
+ */
479
+ this.CreateRecordMode = "Tab";
372
480
  this.rowClicked = new EventEmitter();
373
481
  this.rowEdited = new EventEmitter();
374
482
  this.kendoGridElement = null;
@@ -392,10 +500,13 @@ export class UserViewGridComponent {
392
500
  this.gridHeight = 750;
393
501
  this._newGridState = {};
394
502
  this.editModeEnded = new Subject();
503
+ this.searchDebounce$ = new Subject();
395
504
  this.recordsToCompare = [];
396
505
  this.compareMode = false;
397
506
  this.mergeMode = false;
398
507
  this.duplicateMode = false;
508
+ this.addToListMode = false;
509
+ this.showNewRecordDialog = false;
399
510
  this.selectableSettings = {
400
511
  enabled: false
401
512
  };
@@ -404,6 +515,12 @@ export class UserViewGridComponent {
404
515
  this.isConfirmDialogOpen = false;
405
516
  this.showRefreshButton = true;
406
517
  this.viewExecutionTime = 0;
518
+ this.showAddToListDialog = false;
519
+ this.showAddToListLoader = false;
520
+ this.sourceListEntities = null;
521
+ this.listEntities = [];
522
+ this.selectedListEntities = [];
523
+ this.listEntitySearch = '';
407
524
  this.data = [
408
525
  { text: "Folder" },
409
526
  { text: "Report with Skip" },
@@ -415,6 +532,7 @@ export class UserViewGridComponent {
415
532
  // Export Functionality
416
533
  this.exportColumns = [];
417
534
  this.exportData = [];
535
+ this.entityFormDialog = null;
418
536
  }
419
537
  SaveView() {
420
538
  // debounced outer function...
@@ -560,28 +678,43 @@ export class UserViewGridComponent {
560
678
  }
561
679
  cellClickHandler(args) {
562
680
  return __awaiter(this, void 0, void 0, function* () {
563
- if (this.compareMode || this.mergeMode)
681
+ if (this.compareMode || this.mergeMode) {
564
682
  return;
565
- if (this._entityInfo) {
566
- const compositeKey = new CompositeKey();
567
- compositeKey.LoadFromEntityInfoAndRecord(this._entityInfo, this.viewData[args.rowIndex]);
568
- this.rowClicked.emit({
569
- entityId: this._entityInfo.ID,
570
- entityName: this._entityInfo.Name,
571
- CompositeKey: compositeKey
572
- });
573
- if (this._entityInfo.AllowUpdateAPI &&
574
- this.EditMode !== "None") {
575
- const perm = this._entityInfo.GetUserPermisions(new Metadata().CurrentUser);
576
- if (perm.CanUpdate) {
577
- this.StartEditMode();
578
- args.sender.editCell(args.rowIndex, args.columnIndex, this.createFormGroup(args.dataItem));
579
- }
683
+ }
684
+ if (!this._entityInfo) {
685
+ LogError("cellClickHandler() called but this._entityInfo is null or undefined");
686
+ return;
687
+ }
688
+ const compositeKey = new CompositeKey();
689
+ compositeKey.LoadFromEntityInfoAndRecord(this._entityInfo, this.viewData[args.rowIndex]);
690
+ this.rowClicked.emit({
691
+ entityId: this._entityInfo.ID,
692
+ entityName: this._entityInfo.Name,
693
+ CompositeKey: compositeKey
694
+ });
695
+ if (this._entityInfo.AllowUpdateAPI && this.EditMode !== "None") {
696
+ const perm = this._entityInfo.GetUserPermisions(new Metadata().CurrentUser);
697
+ if (perm.CanUpdate) {
698
+ this.StartEditMode();
699
+ args.sender.editCell(args.rowIndex, args.columnIndex, this.createFormGroup(args.dataItem));
580
700
  }
581
- if (this.EditMode === 'None' && this.AutoNavigate) {
582
- // tell app router to go to this record
583
- this.router.navigate(['resource', 'record', compositeKey.ToURLSegment()], { queryParams: { Entity: this._entityInfo.Name } });
701
+ }
702
+ if (this.EditMode === 'None' && this.AutoNavigate) {
703
+ // tell app router to go to this record
704
+ let decodedUrl = decodeURIComponent(this.router.url).slice(1);
705
+ if (decodedUrl.includes('?')) {
706
+ decodedUrl = decodedUrl.split('?')[0];
584
707
  }
708
+ const newURL = ['resource', 'record', compositeKey.ToURLSegment()];
709
+ const newURLString = newURL.join('/');
710
+ const refreshPage = newURLString === decodedUrl;
711
+ this.router.navigate(newURL, { queryParams: { Entity: this._entityInfo.Name } }).then(() => {
712
+ //handle the edge case of us navigating to a new entity record that
713
+ //has the same ID as the current entity record
714
+ if (refreshPage) {
715
+ window.location.reload();
716
+ }
717
+ });
585
718
  }
586
719
  });
587
720
  }
@@ -608,7 +741,6 @@ export class UserViewGridComponent {
608
741
  }
609
742
  }
610
743
  cellCloseHandler(args) {
611
- var _a;
612
744
  return __awaiter(this, void 0, void 0, function* () {
613
745
  try {
614
746
  if (this._entityInfo && this.EditMode !== "None") {
@@ -623,7 +755,9 @@ export class UserViewGridComponent {
623
755
  // update the data item with the new values - this drives UI refresh while we save the record...
624
756
  Object.assign(dataItem, formGroup.value);
625
757
  const md = new Metadata();
626
- const pkey = this._entityInfo.PrimaryKey.Name;
758
+ // JONATHAN FIX THIS TO USE MULTI-COLUMN PRIMARY KEYS
759
+ alert('Jonathan, fix this to use multi-column primary keys - all commented out now til you fix');
760
+ // const pkey = this._entityInfo.PrimaryKey.Name;
627
761
  let record;
628
762
  let bSaved = false;
629
763
  if (this.EditMode === "Save") {
@@ -633,11 +767,12 @@ export class UserViewGridComponent {
633
767
  yield record.InnerLoad(compositeKey);
634
768
  record.SetMany(formGroup.value);
635
769
  bSaved = yield record.Save();
636
- if (!bSaved)
637
- this.CreateSimpleNotification("Error saving record: " + record.Get(pkey), 'error', 5000);
770
+ // if (!bSaved)
771
+ // this.CreateSimpleNotification("Error saving record: " + record.Get(pkey), 'error', 5000)
638
772
  }
639
773
  else {
640
- record = (_a = this._pendingRecords.find((r) => r.record.Get(pkey) === dataItem[pkey])) === null || _a === void 0 ? void 0 : _a.record;
774
+ // JS - fix this too
775
+ // record = this._pendingRecords.find((r: GridPendingRecordItem) => r.record.Get(pkey) === dataItem[pkey])?.record;
641
776
  if (!record) { // haven't edited this one before
642
777
  record = yield md.GetEntityObject(this._viewEntity.Get('Entity'));
643
778
  let compositeKey = new CompositeKey();
@@ -691,6 +826,38 @@ export class UserViewGridComponent {
691
826
  //this.setGridHeight();
692
827
  if (this.Params)
693
828
  this.Refresh(this.Params);
829
+ // setup event listener for MJGlobal because we might have a parent component that sends us messages
830
+ MJGlobal.Instance.GetEventListener(false).subscribe((e) => {
831
+ switch (e.event) {
832
+ case MJEventType.ComponentEvent:
833
+ if (e.eventCode === BaseFormComponentEventCodes.BASE_CODE) {
834
+ // we have an event from a BaseFormComponent, now we need to determine if WE are a descendant of that component
835
+ const event = e.args;
836
+ if (SharedService.IsDescendant(event.elementRef, this.elementRef)) {
837
+ // we are a descendant of the component that sent the event, so we need to handle it
838
+ switch (event.subEventCode) {
839
+ case BaseFormComponentEventCodes.EDITING_COMPLETE:
840
+ this.EditingComplete();
841
+ break;
842
+ case BaseFormComponentEventCodes.REVERT_PENDING_CHANGES:
843
+ this.RevertPendingChanges();
844
+ break;
845
+ case BaseFormComponentEventCodes.POPULATE_PENDING_RECORDS:
846
+ // provide all of our pending records back to the caller
847
+ this.PendingRecords.forEach((r) => {
848
+ var _a, _b, _c;
849
+ const arr = (_a = event.returnValue) === null || _a === void 0 ? void 0 : _a.pendingRecords;
850
+ if (arr && typeof arr.push === 'function') {
851
+ (_c = (_b = event.returnValue) === null || _b === void 0 ? void 0 : _b.pendingRecords) === null || _c === void 0 ? void 0 : _c.push(r.record);
852
+ }
853
+ });
854
+ break;
855
+ }
856
+ }
857
+ }
858
+ break;
859
+ }
860
+ });
694
861
  }
695
862
  moveDialogToBody() {
696
863
  if (this._movedToBody)
@@ -708,7 +875,6 @@ export class UserViewGridComponent {
708
875
  this._deferLoadCount++; // only do this one time
709
876
  if (this.Params)
710
877
  this.Refresh(this.Params);
711
- return;
712
878
  }
713
879
  }
714
880
  RefreshFromSavedParams() {
@@ -780,7 +946,7 @@ export class UserViewGridComponent {
780
946
  cols = (_c = this._entityInfo) === null || _c === void 0 ? void 0 : _c.Fields.filter((f) => f.DefaultInView).map((f) => {
781
947
  return {
782
948
  ID: f.ID,
783
- Name: f.Name,
949
+ Name: f.CodeName,
784
950
  DisplayName: f.DisplayName,
785
951
  EntityField: f,
786
952
  hidden: false,
@@ -875,7 +1041,10 @@ export class UserViewGridComponent {
875
1041
  }
876
1042
  }
877
1043
  enableCheckbox(cancel = false, type) {
878
- if (!cancel && this.recordsToCompare.length >= 2) {
1044
+ if (!cancel && type === 'addToList' && this.recordsToCompare.length >= 1) {
1045
+ this.toggleAddToListDialog(true);
1046
+ }
1047
+ else if (!cancel && this.recordsToCompare.length >= 2) {
879
1048
  // this scenario occurs when we've already started the merge/compare/duplicate and the user has selected records, then clicked the merge/compare button again
880
1049
  this.isCompareDialogOpened = true;
881
1050
  this.moveDialogToBody();
@@ -885,6 +1054,7 @@ export class UserViewGridComponent {
885
1054
  this.mergeMode = false;
886
1055
  this.compareMode = false;
887
1056
  this.duplicateMode = false;
1057
+ this.addToListMode = false;
888
1058
  this.selectedKeys = [];
889
1059
  this.recordsToCompare = [];
890
1060
  }
@@ -899,6 +1069,9 @@ export class UserViewGridComponent {
899
1069
  else if (type === 'duplicate') {
900
1070
  this.duplicateMode = true;
901
1071
  }
1072
+ else if (type === 'addToList') {
1073
+ this.addToListMode = true;
1074
+ }
902
1075
  }
903
1076
  }
904
1077
  closeConfirmMergeDialog(event) {
@@ -910,7 +1083,7 @@ export class UserViewGridComponent {
910
1083
  const result = yield md.MergeRecords({
911
1084
  EntityName: this._entityInfo.Name,
912
1085
  RecordsToMerge: this.recordsToCompare.map((r) => {
913
- return r.CompositeKey;
1086
+ return r.PrimaryKey;
914
1087
  }).filter((compositeKey) => {
915
1088
  if (!this.recordCompareComponent) {
916
1089
  return false;
@@ -952,7 +1125,6 @@ export class UserViewGridComponent {
952
1125
  }
953
1126
  closeCompareDialog(event) {
954
1127
  return __awaiter(this, void 0, void 0, function* () {
955
- console.log(event);
956
1128
  switch (event) {
957
1129
  case 'merge':
958
1130
  // user has requested to merge the records and retain the selected record from the compare records component, so run the merge
@@ -965,6 +1137,7 @@ export class UserViewGridComponent {
965
1137
  this.mergeMode = false;
966
1138
  this.compareMode = false;
967
1139
  this.duplicateMode = false;
1140
+ this.addToListMode = false;
968
1141
  this.isCompareDialogOpened = false;
969
1142
  break;
970
1143
  }
@@ -1047,8 +1220,154 @@ export class UserViewGridComponent {
1047
1220
  throw new Error("Unable to get export data");
1048
1221
  });
1049
1222
  }
1223
+ /**
1224
+ * This method will create a new record of the given entity type. It will only work if the User has the ability to create records of
1225
+ * this entity type and also if the entity level setting AllowCreateAPI is set to 1. If either of these conditions are not met, then
1226
+ * this method will do nothing.
1227
+ */
1228
+ doCreateNewRecord() {
1229
+ var _a;
1230
+ return __awaiter(this, void 0, void 0, function* () {
1231
+ // creates a new record either using a dialog or with the router
1232
+ if (this.UserCanCreateNewRecord && this._entityInfo) {
1233
+ if (this.CreateRecordMode === 'Tab') {
1234
+ // route to a resource/record with a blank string for the 3rd segment which is normally the pkey value
1235
+ // here we don't provide the pkey value so the record component will know to create a new record
1236
+ this.router.navigate(['resource', 'record', '' /*add this 3rd param that's blank so the route validates*/], { queryParams: {
1237
+ Entity: this._entityInfo.Name,
1238
+ NewRecordValues: this.NewRecordValues ? (_a = FieldValueCollection.FromObject(this.NewRecordValues)) === null || _a === void 0 ? void 0 : _a.ToURLSegment() : null
1239
+ }
1240
+ });
1241
+ }
1242
+ else {
1243
+ // configured to display a dialog instead, we'll use the entity-form-dialog for this
1244
+ if (this.entityFormDialog) {
1245
+ const md = new Metadata();
1246
+ const newRecord = yield md.GetEntityObject(this._entityInfo.Name);
1247
+ if (this.NewRecordValues) {
1248
+ // we have new record values in a simple JS object, so grab the key/values from the object and set the values in the new record for non null/undefined values
1249
+ Object.keys(this.NewRecordValues).filter((key) => this.NewRecordValues[key] !== null && this.NewRecordValues[key] !== undefined).forEach((key) => {
1250
+ newRecord.Set(key, this.NewRecordValues[key]);
1251
+ });
1252
+ }
1253
+ this.entityFormDialog.Record = newRecord;
1254
+ this.showNewRecordDialog = true;
1255
+ }
1256
+ else {
1257
+ // don't have the dialog reference, throw an error
1258
+ throw new Error("Unable to create new record, entity-form-dialog is not available");
1259
+ }
1260
+ }
1261
+ }
1262
+ });
1263
+ }
1264
+ toggleAddToListDialog(show) {
1265
+ return __awaiter(this, void 0, void 0, function* () {
1266
+ this.showAddToListDialog = show;
1267
+ if (show) {
1268
+ if (!this.sourceListEntities) {
1269
+ yield this.loadListEntities();
1270
+ }
1271
+ else {
1272
+ this.listEntities = this.sourceListEntities;
1273
+ this.selectedListEntities = [];
1274
+ }
1275
+ }
1276
+ else {
1277
+ this.enableCheckbox(true, 'addToList');
1278
+ }
1279
+ this.setupSearchDebounce();
1280
+ });
1281
+ }
1282
+ loadListEntities() {
1283
+ return __awaiter(this, void 0, void 0, function* () {
1284
+ if (!this._entityInfo) {
1285
+ LogError("Entity Info is not set");
1286
+ return;
1287
+ }
1288
+ const md = new Metadata();
1289
+ const rv = new RunView();
1290
+ const rvResult = yield rv.RunView({
1291
+ EntityName: 'Lists',
1292
+ ExtraFilter: `UserID = ${md.CurrentUser.ID} AND EntityID = ${this._entityInfo.ID}`,
1293
+ ResultType: 'entity_object'
1294
+ });
1295
+ if (!rvResult.Success) {
1296
+ LogError("Failed to load List Entities");
1297
+ return;
1298
+ }
1299
+ this.sourceListEntities = this.listEntities = rvResult.Results;
1300
+ });
1301
+ }
1302
+ addToList(listEntity) {
1303
+ return __awaiter(this, void 0, void 0, function* () {
1304
+ console.log('add to list', listEntity.Name);
1305
+ this.selectedListEntities.push(listEntity);
1306
+ this.selectedListEntities.includes(listEntity);
1307
+ });
1308
+ }
1309
+ removeFromList(listEntity) {
1310
+ return __awaiter(this, void 0, void 0, function* () {
1311
+ console.log('remove from list', listEntity.Name);
1312
+ this.selectedListEntities = this.selectedListEntities.filter((le) => le.ID !== listEntity.ID);
1313
+ });
1314
+ }
1315
+ addRecordsToSelectedLists() {
1316
+ return __awaiter(this, void 0, void 0, function* () {
1317
+ this.showAddToListLoader = true;
1318
+ const md = new Metadata();
1319
+ let errorCount = 0;
1320
+ for (const listEntity of this.selectedListEntities) {
1321
+ for (const index of this.selectedKeys) {
1322
+ const listDetail = yield md.GetEntityObject('List Details');
1323
+ const viewData = this.viewData[index];
1324
+ const idField = viewData.ID;
1325
+ listDetail.NewRecord();
1326
+ listDetail.ListID = listEntity.ID;
1327
+ listDetail.RecordID = idField.toString();
1328
+ listDetail.Sequence = 0;
1329
+ listDetail.ContextCurrentUser = md.CurrentUser;
1330
+ let saveResult = yield listDetail.Save();
1331
+ if (!saveResult) {
1332
+ LogError(`Failed to save record to list: ${listEntity.Name}`);
1333
+ LogError(listDetail.LatestResult);
1334
+ errorCount++;
1335
+ }
1336
+ }
1337
+ }
1338
+ if (errorCount === 0) {
1339
+ this.CreateSimpleNotification('Records successfully added to the selected lists', 'success', 2000);
1340
+ }
1341
+ else {
1342
+ this.CreateSimpleNotification('Some records failed to be added to the selected lists', 'error', 2000);
1343
+ }
1344
+ this.showAddToListLoader = false;
1345
+ this.toggleAddToListDialog(false);
1346
+ });
1347
+ }
1348
+ onSearch(inputValue) {
1349
+ this.searchDebounce$.next(inputValue);
1350
+ }
1351
+ setupSearchDebounce() {
1352
+ this.searchDebounce$.pipe(debounceTime(500), // updated to 500ms to reduce API calls and since most people don't type super fast
1353
+ distinctUntilChanged()).subscribe((inputValue) => {
1354
+ this.search(inputValue);
1355
+ });
1356
+ }
1357
+ search(inputValue) {
1358
+ return __awaiter(this, void 0, void 0, function* () {
1359
+ if (!this.sourceListEntities) {
1360
+ return;
1361
+ }
1362
+ this.listEntitySearch = inputValue;
1363
+ const toLowerCase = inputValue.toLowerCase();
1364
+ this.listEntities = this.sourceListEntities.filter((listEntity) => {
1365
+ return listEntity.Name.toLowerCase().includes(toLowerCase);
1366
+ });
1367
+ });
1368
+ }
1050
1369
  }
1051
- UserViewGridComponent.ɵfac = function UserViewGridComponent_Factory(t) { return new (t || UserViewGridComponent)(i0.ɵɵdirectiveInject(i1.FormBuilder), i0.ɵɵdirectiveInject(i2.Router), i0.ɵɵdirectiveInject(i0.Renderer2)); };
1370
+ UserViewGridComponent.ɵfac = function UserViewGridComponent_Factory(t) { return new (t || UserViewGridComponent)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i1.FormBuilder), i0.ɵɵdirectiveInject(i2.Router), i0.ɵɵdirectiveInject(i0.Renderer2)); };
1052
1371
  UserViewGridComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: UserViewGridComponent, selectors: [["mj-user-view-grid"]], viewQuery: function UserViewGridComponent_Query(rf, ctx) { if (rf & 1) {
1053
1372
  i0.ɵɵviewQuery(_c0, 5, GridComponent);
1054
1373
  i0.ɵɵviewQuery(_c0, 5, ElementRef);
@@ -1057,6 +1376,7 @@ UserViewGridComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: UserV
1057
1376
  i0.ɵɵviewQuery(_c3, 5, TextAreaComponent);
1058
1377
  i0.ɵɵviewQuery(_c4, 5, ElementRef);
1059
1378
  i0.ɵɵviewQuery(_c5, 5);
1379
+ i0.ɵɵviewQuery(_c6, 5);
1060
1380
  } if (rf & 2) {
1061
1381
  let _t;
1062
1382
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.kendoGridElement = _t.first);
@@ -1066,24 +1386,28 @@ UserViewGridComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: UserV
1066
1386
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.analysisQuestion = _t.first);
1067
1387
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.analysisResults = _t.first);
1068
1388
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.compareDialogContainer = _t.first);
1069
- } }, inputs: { Params: "Params", BottomMargin: "BottomMargin", InEditMode: "InEditMode", EditMode: "EditMode", AutoNavigate: "AutoNavigate", AllowLoad: "AllowLoad" }, outputs: { rowClicked: "rowClicked", rowEdited: "rowEdited" }, decls: 12, vars: 19, consts: [["mjFillContainer", "", 1, "user-view-grid-wrap"], ["mjFillContainer", "", "scrollable", "virtual", "kendoGridSelectBy", "", 3, "resizable", "data", "skip", "pageSize", "rowHeight", "loading", "height", "sortable", "sort", "reorderable", "selectable", "selectedKeys", "pageChange", "selectedKeysChange", "cellClick", "cellClose", "columnReorder", "columnResize", "selectionChange", "sortChange"], ["kendoGrid", ""], ["kendoGridToolbarTemplate", ""], [3, "width", "headerStyle", "style", 4, "ngIf"], [3, "field", "title", "width", "editable", "editor", "headerStyle", "style", 4, "ngFor", "ngForOf"], [3, "data", "fileName"], ["excelExport", ""], [3, "field", "title", 4, "ngFor", "ngForOf"], ["compareDialogContainer", ""], [4, "ngIf"], ["kendoButton", "", 3, "click", 4, "ngIf"], ["kendoButton", "", "class", "k-button-solid-base list-button", 3, "disabled", "click", 4, "ngIf"], ["class", "k-button k-button-md k-rounded-md k-button-solid-base k-button-solid", 3, "disabled", "click", 4, "ngIf"], ["kendoButton", "", "class", "k-button-solid-base list-button"], ["kendoButton", "", "class", "list-button"], ["kendoButton", "", 3, "click"], [1, "fa-regular", "fa-file-excel"], ["kendoButton", "", 1, "k-button-solid-base", "list-button", 3, "disabled", "click"], [1, "k-button", "k-button-md", "k-rounded-md", "k-button-solid-base", "k-button-solid", 3, "disabled", "click"], ["kendoButton", "", 1, "k-button-solid-base", "list-button", 3, "click"], ["kendoButton", "", 1, "list-button", 3, "click"], [1, "fa-solid", "fa-arrows-rotate"], [3, "width", "headerStyle"], [3, "field", "title", "width", "editable", "editor", "headerStyle"], ["kendoGridFooterTemplate", ""], [2, "font-size", "smaller", "font-weight", "normal"], [3, "field", "title"], [1, "k-overlay"], ["title", "Compare Records", 3, "minHeight", "minWidth", "top", "left", "width", "height", "resizable", "close", 4, "ngIf"], ["title", "Compare Records", 3, "minHeight", "minWidth", "top", "left", "width", "height", "resizable", "close"], ["mjFillContainer", "", 3, "fillHeight", "bottomMargin"], [3, "entityName", "recordsToCompare", "visibleColumns", "selectionMode"], ["recordCompareRef", ""], [1, "k-actions", "k-actions-end"], ["kendoButton", "", "themeColor", "primary", "type", "button", 3, "click", 4, "ngIf"], ["kendoButton", "", "type", "button", 3, "click", 4, "ngIf"], ["title", "Confirm Choice", 3, "minWidth", "width", "close", 4, "ngIf"], ["kendoButton", "", "themeColor", "primary", "type", "button", 3, "click"], ["kendoButton", "", "type", "button", 3, "click"], ["title", "Confirm Choice", 3, "minWidth", "width", "close"], [2, "margin", "30px", "text-align", "center"], ["kendoButton", "", "themeColor", "primary", 3, "click"]], template: function UserViewGridComponent_Template(rf, ctx) { if (rf & 1) {
1389
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.entityFormDialog = _t.first);
1390
+ } }, inputs: { Params: "Params", BottomMargin: "BottomMargin", InEditMode: "InEditMode", EditMode: "EditMode", AutoNavigate: "AutoNavigate", NewRecordValues: "NewRecordValues", ShowCreateNewRecordButton: "ShowCreateNewRecordButton", CreateRecordMode: "CreateRecordMode", AllowLoad: "AllowLoad" }, outputs: { rowClicked: "rowClicked", rowEdited: "rowEdited" }, decls: 15, vars: 21, consts: [["mjFillContainer", "", 1, "user-view-grid-wrap"], ["mjFillContainer", "", "scrollable", "virtual", "kendoGridSelectBy", "", 3, "resizable", "data", "skip", "pageSize", "rowHeight", "loading", "height", "sortable", "sort", "reorderable", "selectable", "selectedKeys", "pageChange", "selectedKeysChange", "cellClick", "cellClose", "columnReorder", "columnResize", "selectionChange", "sortChange"], ["kendoGrid", ""], ["kendoGridToolbarTemplate", ""], [3, "width", "headerStyle", "style", 4, "ngIf"], [3, "field", "title", "width", "editable", "editor", "headerStyle", "style", 4, "ngFor", "ngForOf"], [3, "data", "fileName"], ["excelExport", ""], [3, "field", "title", 4, "ngFor", "ngForOf"], ["compareDialogContainer", ""], [4, "ngIf"], ["class", "dialog-wrapper", "title", "Select List(s) To Add Record", 3, "minHeight", "maxHeight", "minWidth", "maxWidth", "close", 4, "ngIf"], ["Mode", "complete", 3, "Visible"], ["entityFormDialog", ""], ["kendoButton", "", "class", "k-button-solid-base list-button", 3, "disabled"], ["kendoButton", "", "class", "k-button-solid-base list-button"], ["kendoButton", ""], ["kendoButton", "", 3, "click"], [1, "fa-regular", "fa-file-excel"], ["kendoButton", "", 1, "k-button-solid-base", "list-button", 3, "click"], ["kendoButton", "", "class", "list-button"], [1, "fa-regular", "fa-plus"], ["kendoButton", "", 1, "list-button", 3, "click"], [1, "fa-solid", "fa-arrows-rotate"], ["kendoButton", "", 1, "k-button-solid-base", "list-button", 3, "disabled", "click"], [3, "width", "headerStyle"], [3, "field", "title", "width", "editable", "editor", "headerStyle"], ["kendoGridFooterTemplate", ""], [2, "font-size", "smaller", "font-weight", "normal"], [3, "field", "title"], [1, "k-overlay"], ["title", "Compare Records", 3, "minHeight", "minWidth", "top", "left", "width", "height", "resizable", "close", 4, "ngIf"], ["title", "Compare Records", 3, "minHeight", "minWidth", "top", "left", "width", "height", "resizable", "close"], ["mjFillContainer", "", 3, "fillHeight", "bottomMargin"], [3, "entityName", "recordsToCompare", "visibleColumns", "selectionMode"], ["recordCompareRef", ""], [1, "k-actions", "k-actions-end"], ["kendoButton", "", "themeColor", "primary", "type", "button", 3, "click", 4, "ngIf"], ["kendoButton", "", "type", "button", 3, "click", 4, "ngIf"], ["title", "Confirm Choice", 3, "minWidth", "width", "close", 4, "ngIf"], ["kendoButton", "", "themeColor", "primary", "type", "button", 3, "click"], ["kendoButton", "", "type", "button", 3, "click"], ["title", "Confirm Choice", 3, "minWidth", "width", "close"], [2, "margin", "30px", "text-align", "center"], ["kendoButton", "", "themeColor", "primary", 3, "click"], ["title", "Select List(s) To Add Record", 1, "dialog-wrapper", 3, "minHeight", "maxHeight", "minWidth", "maxWidth", "close"], ["id", "listSearch", "placeholder", "Search Lists...", "kendoTextBox", "", 1, "padding-bottom-small", 3, "clearButton", "valueChange"], [1, "overflow-y-scroll"], ["type", "converging-spinner"], ["kendoButton", "", "themeColor", "primary", 3, "disabled", "click"], ["kendoButton", "", 3, "disabled", "click"], [1, "list-item"], [1, "fa-regular", "fa-circle-minus"], [1, "fa-regular", "fa-circle-plus"]], template: function UserViewGridComponent_Template(rf, ctx) { if (rf & 1) {
1070
1391
  i0.ɵɵelementStart(0, "div", 0)(1, "kendo-grid", 1, 2);
1071
1392
  i0.ɵɵlistener("pageChange", function UserViewGridComponent_Template_kendo_grid_pageChange_1_listener($event) { return ctx.pageChange($event); });
1072
1393
  i0.ɵɵtwoWayListener("selectedKeysChange", function UserViewGridComponent_Template_kendo_grid_selectedKeysChange_1_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.selectedKeys, $event) || (ctx.selectedKeys = $event); return $event; });
1073
1394
  i0.ɵɵlistener("cellClick", function UserViewGridComponent_Template_kendo_grid_cellClick_1_listener($event) { return ctx.cellClickHandler($event); })("cellClose", function UserViewGridComponent_Template_kendo_grid_cellClose_1_listener($event) { return ctx.cellCloseHandler($event); })("columnReorder", function UserViewGridComponent_Template_kendo_grid_columnReorder_1_listener($event) { return ctx.columnReorder($event); })("columnResize", function UserViewGridComponent_Template_kendo_grid_columnResize_1_listener($event) { return ctx.columnResize($event); })("selectionChange", function UserViewGridComponent_Template_kendo_grid_selectionChange_1_listener($event) { return ctx.selectionChange($event); })("sortChange", function UserViewGridComponent_Template_kendo_grid_sortChange_1_listener($event) { return ctx.sortChanged($event); });
1074
- i0.ɵɵtemplate(3, UserViewGridComponent_ng_template_3_Template, 9, 9, "ng-template", 3)(4, UserViewGridComponent_kendo_grid_checkbox_column_4_Template, 1, 6, "kendo-grid-checkbox-column", 4)(5, UserViewGridComponent_kendo_grid_column_5_Template, 2, 10, "kendo-grid-column", 5);
1395
+ i0.ɵɵtemplate(3, UserViewGridComponent_ng_template_3_Template, 6, 6, "ng-template", 3)(4, UserViewGridComponent_kendo_grid_checkbox_column_4_Template, 1, 6, "kendo-grid-checkbox-column", 4)(5, UserViewGridComponent_kendo_grid_column_5_Template, 2, 10, "kendo-grid-column", 5);
1075
1396
  i0.ɵɵelementStart(6, "kendo-excelexport", 6, 7);
1076
1397
  i0.ɵɵtemplate(8, UserViewGridComponent_kendo_excelexport_column_8_Template, 1, 2, "kendo-excelexport-column", 8);
1077
1398
  i0.ɵɵelementEnd()();
1078
1399
  i0.ɵɵelementStart(9, "div", null, 9);
1079
1400
  i0.ɵɵtemplate(11, UserViewGridComponent_div_11_Template, 3, 1, "div", 10);
1080
- i0.ɵɵelementEnd()();
1401
+ i0.ɵɵelementEnd();
1402
+ i0.ɵɵtemplate(12, UserViewGridComponent_kendo_dialog_12_Template, 11, 8, "kendo-dialog", 11);
1403
+ i0.ɵɵelementEnd();
1404
+ i0.ɵɵelement(13, "mj-entity-form-dialog", 12, 13);
1081
1405
  } if (rf & 2) {
1082
1406
  i0.ɵɵadvance();
1083
1407
  i0.ɵɵproperty("resizable", true)("data", ctx.gridView)("skip", ctx.skip)("pageSize", ctx.pageSize)("rowHeight", 36)("loading", ctx.isLoading)("height", ctx.gridHeight)("sortable", true)("sort", ctx.sortSettings)("resizable", true)("reorderable", true)("selectable", true);
1084
1408
  i0.ɵɵtwoWayProperty("selectedKeys", ctx.selectedKeys);
1085
1409
  i0.ɵɵadvance(3);
1086
- i0.ɵɵproperty("ngIf", ctx.compareMode || ctx.mergeMode || ctx.duplicateMode);
1410
+ i0.ɵɵproperty("ngIf", ctx.anyModeEnabled);
1087
1411
  i0.ɵɵadvance();
1088
1412
  i0.ɵɵproperty("ngForOf", ctx.visibleColumns);
1089
1413
  i0.ɵɵadvance();
@@ -1092,11 +1416,15 @@ UserViewGridComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: UserV
1092
1416
  i0.ɵɵproperty("ngForOf", ctx.exportColumns);
1093
1417
  i0.ɵɵadvance(3);
1094
1418
  i0.ɵɵproperty("ngIf", ctx.isCompareDialogOpened);
1095
- } }, dependencies: [i3.NgForOf, i3.NgIf, i4.GridComponent, i4.ToolbarTemplateDirective, i4.SelectionDirective, i4.ColumnComponent, i4.FooterTemplateDirective, i4.CheckboxColumnComponent, i5.DialogComponent, i5.DialogActionsComponent, i5.WindowComponent, i6.ExcelExportComponent, i6.ColumnComponent, i7.ButtonComponent, i8.CompareRecordsComponent, i9.FillContainer, i3.DecimalPipe], styles: [".user-view-grid-wrap[_ngcontent-%COMP%] {\n height: calc(100vh - 20px);\n}\n\n.user-view-grid-column-header[_ngcontent-%COMP%] {\n background-color: #fff;\n font-size: 20pt;\n font-weight: bold;\n}\n\n.title-wrapper[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 14px 0;\n border-bottom: 1px solid var(--med-gray);\n}\n .title-wrapper[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 24px;\n line-height: 28px;\n }\n .main-fav-wrapper[_ngcontent-%COMP%] {\n background: #fff;\n padding: 20px;\n }\n .filter-wrapper[_ngcontent-%COMP%] {\n display: flex;\n justify-content: flex-start;\n gap: 14px;\n align-items: center;\n}\n .title-wrapper[_ngcontent-%COMP%] .search[_ngcontent-%COMP%] input[_ngcontent-%COMP%] {\n width: 100%;\n height: 100%;\n font-size: 16px;\n background: transparent;\n border: none;\n box-sizing: border-box;\n padding-left: 40px;\n\n }\n .title-wrapper[_ngcontent-%COMP%] .search[_ngcontent-%COMP%] {\n background: var(--light-shade);\n width: 360px;\n height: 44px;\n position: relative;\n border-radius: 10px;\n }\n .title-wrapper[_ngcontent-%COMP%] .search[_ngcontent-%COMP%] svg[_ngcontent-%COMP%] {\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n left: 12px;\n}\n.k-table-td[_ngcontent-%COMP%] {\n border-right: none !important;\n}.btn-cmn[_ngcontent-%COMP%] {\n width: 44px;\n height: 44px;\n min-width: 44px;\n background: transparent;\n border-radius: 8px;\n border: 1px solid var(--gray-color);\n}\n.btn-cmn.active[_ngcontent-%COMP%] {\n border: 1px solid var(--border-blue);\n}\n .title-wrapper .filter-wrapper .k-dropdown-button .k-button {\n border: 1px solid var(--gray-color);\n border-radius: 8px; padding: 10px 25px;\n background: var(--white-color);\n color: var(--sideNav);\n}\n .user-view-grid-wrap .k-grid-aria-root .k-grid-header .k-grid-header-table thead tr th {\n border-right: none;\n border-inline-start-width: 0;\n color: var(--thead-color);\n}\n .user-view-grid-wrap .k-grid-aria-root kendo-grid-list .k-grid-table tbody tr td { \n border-inline-start-width: 0;\n color: var(--tdata-color);\n font-weight: 500;\n border-bottom-width: 1px;\n}"] });
1419
+ i0.ɵɵadvance();
1420
+ i0.ɵɵproperty("ngIf", ctx.showAddToListDialog);
1421
+ i0.ɵɵadvance();
1422
+ i0.ɵɵproperty("Visible", ctx.showNewRecordDialog);
1423
+ } }, dependencies: [i3.NgForOf, i3.NgIf, i4.GridComponent, i4.ToolbarTemplateDirective, i4.SelectionDirective, i4.ColumnComponent, i4.FooterTemplateDirective, i4.CheckboxColumnComponent, i5.DialogComponent, i5.DialogActionsComponent, i5.WindowComponent, i6.ExcelExportComponent, i6.ColumnComponent, i7.ButtonComponent, i8.CompareRecordsComponent, i9.FillContainer, i10.TextBoxComponent, i11.EntityFormDialogComponent, i12.LoaderComponent, i3.DecimalPipe], styles: [".user-view-grid-wrap[_ngcontent-%COMP%] {\n height: calc(100vh - 20px);\n}\n\n.user-view-grid-column-header[_ngcontent-%COMP%] {\n background-color: #fff;\n font-size: 20pt;\n font-weight: bold;\n}\n\n.title-wrapper[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 14px 0;\n border-bottom: 1px solid var(--med-gray);\n}\n .title-wrapper[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 24px;\n line-height: 28px;\n }\n .main-fav-wrapper[_ngcontent-%COMP%] {\n background: #fff;\n padding: 20px;\n }\n .filter-wrapper[_ngcontent-%COMP%] {\n display: flex;\n justify-content: flex-start;\n gap: 14px;\n align-items: center;\n}\n .title-wrapper[_ngcontent-%COMP%] .search[_ngcontent-%COMP%] input[_ngcontent-%COMP%] {\n width: 100%;\n height: 100%;\n font-size: 16px;\n background: transparent;\n border: none;\n box-sizing: border-box;\n padding-left: 40px;\n\n }\n .title-wrapper[_ngcontent-%COMP%] .search[_ngcontent-%COMP%] {\n background: var(--light-shade);\n width: 360px;\n height: 44px;\n position: relative;\n border-radius: 10px;\n }\n .title-wrapper[_ngcontent-%COMP%] .search[_ngcontent-%COMP%] svg[_ngcontent-%COMP%] {\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n left: 12px;\n}\n.k-table-td[_ngcontent-%COMP%] {\n border-right: none !important;\n}.btn-cmn[_ngcontent-%COMP%] {\n width: 44px;\n height: 44px;\n min-width: 44px;\n background: transparent;\n border-radius: 8px;\n border: 1px solid var(--gray-color);\n}\n.btn-cmn.active[_ngcontent-%COMP%] {\n border: 1px solid var(--border-blue);\n}\n .title-wrapper .filter-wrapper .k-dropdown-button .k-button {\n border: 1px solid var(--gray-color);\n border-radius: 8px; padding: 10px 25px;\n background: var(--white-color);\n color: var(--sideNav);\n}\n .user-view-grid-wrap .k-grid-aria-root .k-grid-header .k-grid-header-table thead tr th {\n border-right: none;\n border-inline-start-width: 0;\n color: var(--thead-color);\n}\n .user-view-grid-wrap .k-grid-aria-root kendo-grid-list .k-grid-table tbody tr td { \n border-inline-start-width: 0;\n color: var(--tdata-color);\n font-weight: 500;\n border-bottom-width: 1px;\n} \n\n.overflow-y-scroll[_ngcontent-%COMP%] {\n overflow-y: auto;\n max-height: 275px;\n}\n\n.padding-bottom-small[_ngcontent-%COMP%] {\n padding-bottom: 10px;\n}\n\n.list-item[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n padding-bottom: 5px;\n}"] });
1096
1424
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(UserViewGridComponent, [{
1097
1425
  type: Component,
1098
- args: [{ selector: 'mj-user-view-grid', template: "<div class=\"user-view-grid-wrap\" mjFillContainer>\n <kendo-grid #kendoGrid\n mjFillContainer\n [resizable]=\"true\"\n [data]=\"gridView\" \n [skip]=\"skip\"\n [pageSize]=\"pageSize\"\n scrollable=\"virtual\"\n [rowHeight]=\"36\"\n (pageChange)=\"pageChange($event)\"\n [loading]=\"isLoading\"\n [height]=\"gridHeight\"\n [sortable]=\"true\"\n [sort]=\"sortSettings\" \n [resizable]=\"true\"\n [reorderable]=\"true\"\n [selectable]=\"true\"\n kendoGridSelectBy\n [(selectedKeys)]=\"selectedKeys\"\n (cellClick)=\"cellClickHandler($event)\"\n (cellClose)=\"cellCloseHandler($event)\"\n (columnReorder)=\"columnReorder($event)\"\n (columnResize)=\"columnResize($event)\"\n (selectionChange)=\"selectionChange($event)\"\n (sortChange)=\"sortChanged($event)\"\n >\n <ng-template kendoGridToolbarTemplate>\n \n <button kendoButton *ngIf=\"!compareMode && !mergeMode\" (click)=\"doExcelExport()\" >\n <span class=\"fa-regular fa-file-excel\"></span>\n Export to Excel\n </button>\n\n <!-- 3 buttons for duplicate. First one only shows when duplication is going on in the grid, the next one is the one the user starts the process with before records are selected, last one is to cancel the pending duple. -->\n <button (click)=\"enableCheckbox(false, 'duplicate')\" *ngIf=\"(!compareMode && !mergeMode && !duplicateMode)\" [disabled]=\"duplicateMode && recordsToCompare.length < 2\" kendoButton class=\"k-button-solid-base list-button\">\n Search For Duplicates\n </button>\n <button (click)=\"enableCheckbox(false, 'duplicate')\" *ngIf=\"duplicateMode\" [disabled]=\"duplicateMode && recordsToCompare.length < 2\" kendoButton class=\"k-button-solid-base list-button\">\n Search For Duplicates\n </button>\n <!--\n <button (click)=\"enableCheckbox(true, 'duplicate')\" *ngIf=\"duplicateMode\" kendoButton class=\"k-button-solid-base list-button\">\n Cancel\n </button>\n -->\n\n\n <!-- 3 buttons for compare. First one only shows when comparison is going on in the grid, the next one is the one the user starts the process with before records are selected, last one is to cancel the pending compare. -->\n <button (click)=\"enableMergeOrCompare(false, 'compare')\" *ngIf=\"!compareMode && !mergeMode && !duplicateMode\" [disabled]=\"compareMode && recordsToCompare.length < 2\" class=\"k-button k-button-md k-rounded-md k-button-solid-base k-button-solid\">Compare</button>\n <button (click)=\"enableMergeOrCompare(false, 'compare')\" *ngIf=\"compareMode\" [disabled]=\"compareMode && recordsToCompare.length < 2\" class=\"k-button k-button-md k-rounded-md k-button-solid-base k-button-solid\">Compare</button>\n <!--\n <button (click)=\"enableMergeOrCompare(true, 'compare')\" *ngIf=\"compareMode\" class=\"k-button k-button-md k-rounded-md k-button-solid-base k-button-solid\">Cancel</button>\n -->\n\n <!-- 3 buttons for merge. First one only shows when merge is getting goin in the grid, the next one is the one the user starts the process with before records are selected, last one is to cancel the pending merge. -->\n <button (click)=\"enableMergeOrCompare(false, 'merge')\" *ngIf=\"!mergeMode && !compareMode && !duplicateMode\" [disabled]=\"mergeMode && recordsToCompare.length < 2\" class=\"k-button k-button-md k-rounded-md k-button-solid-base k-button-solid\">Merge</button>\n <button (click)=\"enableMergeOrCompare(false, 'merge')\" *ngIf=\"mergeMode\" [disabled]=\"mergeMode && recordsToCompare.length < 2\" class=\"k-button k-button-md k-rounded-md k-button-solid-base k-button-solid\">Merge</button>\n <!--\n <button (click)=\"enableMergeOrCompare(true, 'merge')\" *ngIf=\"mergeMode\" class=\"k-button k-button-md k-rounded-md k-button-solid-base k-button-solid\">Cancel</button>\n -->\n \n @if(compareMode || mergeMode || duplicateMode){\n <button (click)=\"enableCheckbox(true, '')\" kendoButton class=\"k-button-solid-base list-button\">\n Cancel\n </button>\n }\n @if(showRefreshButton && !compareMode && !mergeMode && !duplicateMode){\n <button\n kendoButton\n class=\"list-button\"\n (click)=\"RefreshFromSavedParams()\">\n <span class=\"fa-solid fa-arrows-rotate\"></span>\n Refresh\n </button>\n }\n </ng-template>\n \n <kendo-grid-checkbox-column \n *ngIf=\"compareMode || mergeMode || duplicateMode\" \n [width]=\"50\" \n [headerStyle]=\"{ 'font-weight' : 'bold', 'background-color': 'white' }\" \n [style]=\"{'text-align': 'center', 'vertical-align': 'center'}\">\n </kendo-grid-checkbox-column>\n \n <kendo-grid-column \n *ngFor=\"let item of visibleColumns\" \n [field]=\"item.Name\" \n [title]=\"GetColumnTitle(item)\"\n [width]=\"item.width ? item.width : 100\"\n [editable]=\"item.EntityField.AllowUpdateAPI\"\n [editor]=\"getEditor(item.EntityField)\"\n [headerStyle]=\"{ 'font-weight' : 'bold', 'background-color': 'white' }\"\n [style]=\"this.GetColumnCellStyle(item)\"\n >\n <ng-template *ngIf=\"item===visibleColumns[0]\" kendoGridFooterTemplate >\n {{this.viewData.length | number}}{{this.totalRowCount > this.viewData.length ? ' of ' + (this.totalRowCount | number) : ' rows'}}<br/><span style=\"font-size: smaller; font-weight: normal;\">{{viewExecutionTime | number:'1.2-2'}} seconds</span>\n </ng-template>\n </kendo-grid-column>\n \n <kendo-excelexport #excelExport [data]=\"exportData\" [fileName]=\"(_viewEntity ? _viewEntity.Get('Name') : _entityInfo?.Name) + '.xlsx'\">\n <kendo-excelexport-column *ngFor=\"let exportCol of exportColumns\" [field]=\"exportCol.Name\" [title]=\"exportCol.Name\">\n </kendo-excelexport-column>\n </kendo-excelexport>\n </kendo-grid>\n \n <div #compareDialogContainer>\n <div *ngIf=\"isCompareDialogOpened\">\n <div class=\"k-overlay\"></div>\n <kendo-window\n [minHeight]=\"300\"\n [minWidth]=\"800\"\n [top]=\"100\"\n [left]=\"100\"\n [width]=\"1200\"\n [height]=\"675\"\n [resizable]=\"true\"\n (close)=\"closeCompareDialog($event)\"\n title=\"Compare Records\"\n *ngIf=\"isCompareDialogOpened\"\n >\n <div mjFillContainer [fillHeight]=\"true\" [bottomMargin]=\"100\">\n <mj-compare-records\n #recordCompareRef\n [entityName]=\"_entityInfo ? _entityInfo.Name : ''\"\n [recordsToCompare]=\"recordsToCompare\" \n [visibleColumns]=\"visibleColumns\" \n [selectionMode]=\"mergeMode ? true : false\"\n >\n </mj-compare-records>\n </div>\n <div class=\"k-actions k-actions-end\">\n <button *ngIf=\"mergeMode\" kendoButton themeColor=\"primary\" type=\"button\" (click)=\"closeCompareDialog('merge')\">\n Merge Records\n </button>\n <button *ngIf=\"duplicateMode\" kendoButton themeColor=\"primary\" type=\"button\" (click)=\"findDuplicateRecords()\">\n Search for Duplicates\n </button>\n <button *ngIf=\"compareMode\" kendoButton type=\"button\" (click)=\"closeCompareDialog('close')\">\n Close\n </button>\n <button *ngIf=\"mergeMode || duplicateMode\" kendoButton type=\"button\" (click)=\"closeCompareDialog('cancel')\">\n Cancel\n </button>\n </div> \n <kendo-dialog\n title=\"Confirm Choice\"\n *ngIf=\"isConfirmDialogOpen\"\n (close)=\"closeConfirmMergeDialog('cancel')\"\n [minWidth]=\"250\"\n [width]=\"450\"\n >\n <p style=\"margin: 30px; text-align: center;\">\n Are you sure you want to merge the records? This action cannot be undone. If you select \"Yes\", the records will be merged and the duplicate records will be deleted.\n </p>\n <kendo-dialog-actions>\n <button kendoButton (click)=\"closeConfirmMergeDialog('no')\">No</button>\n <button kendoButton (click)=\"closeConfirmMergeDialog('yes')\" themeColor=\"primary\">\n Yes\n </button>\n </kendo-dialog-actions>\n </kendo-dialog>\n </kendo-window>\n </div> \n </div>\n </div>\n ", styles: [".user-view-grid-wrap {\n height: calc(100vh - 20px);\n}\n\n.user-view-grid-column-header {\n background-color: #fff;\n font-size: 20pt;\n font-weight: bold;\n}\n\n.title-wrapper {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 14px 0;\n border-bottom: 1px solid var(--med-gray);\n}\n .title-wrapper h4 {\n margin: 0;\n font-size: 24px;\n line-height: 28px;\n }\n .main-fav-wrapper {\n background: #fff;\n padding: 20px;\n }\n .filter-wrapper {\n display: flex;\n justify-content: flex-start;\n gap: 14px;\n align-items: center;\n}\n .title-wrapper .search input {\n width: 100%;\n height: 100%;\n font-size: 16px;\n background: transparent;\n border: none;\n box-sizing: border-box;\n padding-left: 40px;\n\n }\n .title-wrapper .search {\n background: var(--light-shade);\n width: 360px;\n height: 44px;\n position: relative;\n border-radius: 10px;\n }\n .title-wrapper .search svg {\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n left: 12px;\n}\n.k-table-td {\n border-right: none !important;\n}.btn-cmn {\n width: 44px;\n height: 44px;\n min-width: 44px;\n background: transparent;\n border-radius: 8px;\n border: 1px solid var(--gray-color);\n}\n.btn-cmn.active {\n border: 1px solid var(--border-blue);\n}\n::ng-deep .title-wrapper .filter-wrapper .k-dropdown-button .k-button {\n border: 1px solid var(--gray-color);\n border-radius: 8px; padding: 10px 25px;\n background: var(--white-color);\n color: var(--sideNav);\n}\n::ng-deep .user-view-grid-wrap .k-grid-aria-root .k-grid-header .k-grid-header-table thead tr th {\n border-right: none;\n border-inline-start-width: 0;\n color: var(--thead-color);\n}\n::ng-deep .user-view-grid-wrap .k-grid-aria-root kendo-grid-list .k-grid-table tbody tr td { \n border-inline-start-width: 0;\n color: var(--tdata-color);\n font-weight: 500;\n border-bottom-width: 1px;\n} "] }]
1099
- }], () => [{ type: i1.FormBuilder }, { type: i2.Router }, { type: i0.Renderer2 }], { Params: [{
1426
+ args: [{ selector: 'mj-user-view-grid', template: "<div class=\"user-view-grid-wrap\" mjFillContainer>\n <kendo-grid #kendoGrid\n mjFillContainer\n [resizable]=\"true\"\n [data]=\"gridView\" \n [skip]=\"skip\"\n [pageSize]=\"pageSize\"\n scrollable=\"virtual\"\n [rowHeight]=\"36\"\n (pageChange)=\"pageChange($event)\"\n [loading]=\"isLoading\"\n [height]=\"gridHeight\"\n [sortable]=\"true\"\n [sort]=\"sortSettings\" \n [resizable]=\"true\"\n [reorderable]=\"true\"\n [selectable]=\"true\"\n kendoGridSelectBy\n [(selectedKeys)]=\"selectedKeys\"\n (cellClick)=\"cellClickHandler($event)\"\n (cellClose)=\"cellCloseHandler($event)\"\n (columnReorder)=\"columnReorder($event)\"\n (columnResize)=\"columnResize($event)\"\n (selectionChange)=\"selectionChange($event)\"\n (sortChange)=\"sortChanged($event)\"\n >\n <ng-template kendoGridToolbarTemplate>\n @if(!anyModeEnabled){\n @if(ShowCreateNewRecordButton && UserCanCreateNewRecord) {\n <button kendoButton (click)=\"doCreateNewRecord()\" >\n <span class=\"fa-regular fa-plus\"></span>\n New {{entityRecord?.EntityInfo?.Name}}\n </button> \n }\n\n <button kendoButton (click)=\"doExcelExport()\" >\n <span class=\"fa-regular fa-file-excel\"></span>\n Export to Excel\n </button>\n <button (click)=\"enableCheckbox(false, 'duplicate')\" kendoButton class=\"k-button-solid-base list-button\">\n Search For Duplicates\n </button>\n <button (click)=\"enableCheckbox(false, 'addToList')\" kendoButton class=\"k-button-solid-base list-button\">\n Add To List\n </button>\n <button (click)=\"enableMergeOrCompare(false, 'merge')\" kendoButton class=\"k-button-solid-base list-button\">\n Merge\n </button>\n <button (click)=\"enableMergeOrCompare(false, 'compare')\" kendoButton class=\"k-button-solid-base list-button\">\n Compare\n </button>\n\n @if(showRefreshButton){\n <button kendoButton class=\"list-button\" (click)=\"RefreshFromSavedParams()\">\n <span class=\"fa-solid fa-arrows-rotate\"></span>\n Refresh\n </button>\n }\n }\n @if(duplicateMode){\n <button (click)=\"enableCheckbox(false, 'duplicate')\" [disabled]=\"duplicateMode && recordsToCompare.length < 2\" kendoButton class=\"k-button-solid-base list-button\">\n Search For Duplicates\n </button>\n }\n @if(addToListMode){\n <button (click)=\"enableCheckbox(false, 'addToList')\" [disabled]=\"addToListMode && recordsToCompare.length === 0\" kendoButton class=\"k-button-solid-base list-button\">\n Add To List\n </button>\n }\n @if(compareMode){\n <button (click)=\"enableMergeOrCompare(false, 'compare')\" [disabled]=\"compareMode && recordsToCompare.length < 2\" kendoButton class=\"k-button-solid-base list-button\">\n Compare\n </button>\n }\n @if(mergeMode){\n <button (click)=\"enableMergeOrCompare(false, 'merge')\" [disabled]=\"mergeMode && recordsToCompare.length < 2\" kendoButton class=\"k-button-solid-base list-button\">\n Merge\n </button>\n }\n @if(anyModeEnabled){\n <button (click)=\"enableCheckbox(true, '')\" kendoButton class=\"k-button-solid-base list-button\">\n Cancel\n </button>\n }\n </ng-template>\n \n <kendo-grid-checkbox-column \n *ngIf=\"anyModeEnabled\" \n [width]=\"50\" \n [headerStyle]=\"{ 'font-weight' : 'bold', 'background-color': 'white' }\" \n [style]=\"{'text-align': 'center', 'vertical-align': 'center'}\">\n </kendo-grid-checkbox-column>\n \n <kendo-grid-column \n *ngFor=\"let item of visibleColumns\" \n [field]=\"item.Name\" \n [title]=\"GetColumnTitle(item)\"\n [width]=\"item.width ? item.width : 100\"\n [editable]=\"item.EntityField.AllowUpdateAPI\"\n [editor]=\"getEditor(item.EntityField)\"\n [headerStyle]=\"{ 'font-weight' : 'bold', 'background-color': 'white' }\"\n [style]=\"this.GetColumnCellStyle(item)\"\n >\n <ng-template *ngIf=\"item===visibleColumns[0]\" kendoGridFooterTemplate >\n {{this.viewData.length | number}}{{this.totalRowCount > this.viewData.length ? ' of ' + (this.totalRowCount | number) : ' rows'}}<br/><span style=\"font-size: smaller; font-weight: normal;\">{{viewExecutionTime | number:'1.2-2'}} seconds</span>\n </ng-template>\n </kendo-grid-column>\n \n <kendo-excelexport #excelExport [data]=\"exportData\" [fileName]=\"(_viewEntity ? _viewEntity.Get('Name') : _entityInfo?.Name) + '.xlsx'\">\n <kendo-excelexport-column *ngFor=\"let exportCol of exportColumns\" [field]=\"exportCol.Name\" [title]=\"exportCol.Name\">\n </kendo-excelexport-column>\n </kendo-excelexport>\n </kendo-grid>\n \n <div #compareDialogContainer>\n <div *ngIf=\"isCompareDialogOpened\">\n <div class=\"k-overlay\"></div>\n <kendo-window\n [minHeight]=\"300\"\n [minWidth]=\"800\"\n [top]=\"100\"\n [left]=\"100\"\n [width]=\"1200\"\n [height]=\"675\"\n [resizable]=\"true\"\n (close)=\"closeCompareDialog($event)\"\n title=\"Compare Records\"\n *ngIf=\"isCompareDialogOpened\"\n >\n <div mjFillContainer [fillHeight]=\"true\" [bottomMargin]=\"100\">\n <mj-compare-records\n #recordCompareRef\n [entityName]=\"_entityInfo ? _entityInfo.Name : ''\"\n [recordsToCompare]=\"recordsToCompare\" \n [visibleColumns]=\"visibleColumns\" \n [selectionMode]=\"mergeMode ? true : false\"\n >\n </mj-compare-records>\n </div>\n <div class=\"k-actions k-actions-end\">\n <button *ngIf=\"mergeMode\" kendoButton themeColor=\"primary\" type=\"button\" (click)=\"closeCompareDialog('merge')\">\n Merge Records\n </button>\n <button *ngIf=\"duplicateMode\" kendoButton themeColor=\"primary\" type=\"button\" (click)=\"findDuplicateRecords()\">\n Search for Duplicates\n </button>\n <button *ngIf=\"compareMode\" kendoButton type=\"button\" (click)=\"closeCompareDialog('close')\">\n Close\n </button>\n <button *ngIf=\"mergeMode || duplicateMode\" kendoButton type=\"button\" (click)=\"closeCompareDialog('cancel')\">\n Cancel\n </button>\n </div> \n <kendo-dialog\n title=\"Confirm Choice\"\n *ngIf=\"isConfirmDialogOpen\"\n (close)=\"closeConfirmMergeDialog('cancel')\"\n [minWidth]=\"250\"\n [width]=\"450\"\n >\n <p style=\"margin: 30px; text-align: center;\">\n Are you sure you want to merge the records? This action cannot be undone. If you select \"Yes\", the records will be merged and the duplicate records will be deleted.\n </p>\n <kendo-dialog-actions>\n <button kendoButton (click)=\"closeConfirmMergeDialog('no')\">No</button>\n <button kendoButton (click)=\"closeConfirmMergeDialog('yes')\" themeColor=\"primary\">\n Yes\n </button>\n </kendo-dialog-actions>\n </kendo-dialog>\n </kendo-window>\n </div> \n </div>\n <kendo-dialog\n class=\"dialog-wrapper\"\n title=\"Select List(s) To Add Record\"\n *ngIf=\"showAddToListDialog\"\n (close)=\"toggleAddToListDialog(false)\"\n [minHeight]=\"450\"\n [maxHeight]=\"450\"\n [minWidth]=\"500\"\n [maxWidth]=\"650\"\n >\n <div>\n <kendo-textbox\n id=\"listSearch\"\n placeholder=\"Search Lists...\"\n kendoTextBox\n (valueChange)=\"onSearch($event)\"\n [clearButton]=\"true\"\n class=\"padding-bottom-small\"\n ></kendo-textbox>\n </div>\n <div class=\"overflow-y-scroll\">\n @if(showAddToListLoader){\n <kendo-loader type=\"converging-spinner\"></kendo-loader>\n }\n @else {\n @for(listEntity of listEntities; track listEntity){\n <div class=\"list-item\">\n {{listEntity.Name}}\n @if(selectedListEntities.includes(listEntity)){\n <button kendoButton (click)=\"removeFromList(listEntity)\">\n <span class=\"fa-regular fa-circle-minus\"></span>\n Remove\n </button>\n }\n @else {\n <button kendoButton (click)=\"addToList(listEntity)\">\n <span class=\"fa-regular fa-circle-plus\"></span>\n Add\n </button>\n }\n </div>\n <hr>\n }\n }\n </div>\n <kendo-dialog-actions>\n <button kendoButton (click)=\"addRecordsToSelectedLists()\" [disabled]=\"showAddToListLoader\" themeColor=\"primary\">\n Save\n </button>\n <button kendoButton (click)=\"toggleAddToListDialog(false)\" [disabled]=\"showAddToListLoader\">\n Cancel\n </button>\n </kendo-dialog-actions>\n </kendo-dialog>\n</div>\n \n<!-- Entity Form Dialog Component here for future use as needed -->\n<mj-entity-form-dialog\n #entityFormDialog\n Mode=\"complete\"\n [Visible]=\"showNewRecordDialog\"\n></mj-entity-form-dialog>", styles: [".user-view-grid-wrap {\n height: calc(100vh - 20px);\n}\n\n.user-view-grid-column-header {\n background-color: #fff;\n font-size: 20pt;\n font-weight: bold;\n}\n\n.title-wrapper {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 14px 0;\n border-bottom: 1px solid var(--med-gray);\n}\n .title-wrapper h4 {\n margin: 0;\n font-size: 24px;\n line-height: 28px;\n }\n .main-fav-wrapper {\n background: #fff;\n padding: 20px;\n }\n .filter-wrapper {\n display: flex;\n justify-content: flex-start;\n gap: 14px;\n align-items: center;\n}\n .title-wrapper .search input {\n width: 100%;\n height: 100%;\n font-size: 16px;\n background: transparent;\n border: none;\n box-sizing: border-box;\n padding-left: 40px;\n\n }\n .title-wrapper .search {\n background: var(--light-shade);\n width: 360px;\n height: 44px;\n position: relative;\n border-radius: 10px;\n }\n .title-wrapper .search svg {\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n left: 12px;\n}\n.k-table-td {\n border-right: none !important;\n}.btn-cmn {\n width: 44px;\n height: 44px;\n min-width: 44px;\n background: transparent;\n border-radius: 8px;\n border: 1px solid var(--gray-color);\n}\n.btn-cmn.active {\n border: 1px solid var(--border-blue);\n}\n::ng-deep .title-wrapper .filter-wrapper .k-dropdown-button .k-button {\n border: 1px solid var(--gray-color);\n border-radius: 8px; padding: 10px 25px;\n background: var(--white-color);\n color: var(--sideNav);\n}\n::ng-deep .user-view-grid-wrap .k-grid-aria-root .k-grid-header .k-grid-header-table thead tr th {\n border-right: none;\n border-inline-start-width: 0;\n color: var(--thead-color);\n}\n::ng-deep .user-view-grid-wrap .k-grid-aria-root kendo-grid-list .k-grid-table tbody tr td { \n border-inline-start-width: 0;\n color: var(--tdata-color);\n font-weight: 500;\n border-bottom-width: 1px;\n} \n\n.overflow-y-scroll {\n overflow-y: auto;\n max-height: 275px;\n}\n\n.padding-bottom-small {\n padding-bottom: 10px;\n}\n\n.list-item {\n display: flex;\n justify-content: space-between;\n padding-bottom: 5px;\n}"] }]
1427
+ }], () => [{ type: i0.ElementRef }, { type: i1.FormBuilder }, { type: i2.Router }, { type: i0.Renderer2 }], { Params: [{
1100
1428
  type: Input
1101
1429
  }], BottomMargin: [{
1102
1430
  type: Input
@@ -1106,6 +1434,12 @@ UserViewGridComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: UserV
1106
1434
  type: Input
1107
1435
  }], AutoNavigate: [{
1108
1436
  type: Input
1437
+ }], NewRecordValues: [{
1438
+ type: Input
1439
+ }], ShowCreateNewRecordButton: [{
1440
+ type: Input
1441
+ }], CreateRecordMode: [{
1442
+ type: Input
1109
1443
  }], rowClicked: [{
1110
1444
  type: Output
1111
1445
  }], rowEdited: [{
@@ -1133,5 +1467,8 @@ UserViewGridComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: UserV
1133
1467
  args: ['compareDialogContainer']
1134
1468
  }], AllowLoad: [{
1135
1469
  type: Input
1470
+ }], entityFormDialog: [{
1471
+ type: ViewChild,
1472
+ args: ['entityFormDialog']
1136
1473
  }] }); })();
1137
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(UserViewGridComponent, { className: "UserViewGridComponent", filePath: "src/lib/ng-user-view-grid.component.ts", lineNumber: 43 }); })();
1474
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(UserViewGridComponent, { className: "UserViewGridComponent", filePath: "src/lib/ng-user-view-grid.component.ts", lineNumber: 46 }); })();