@memberjunction/ng-explorer-core 5.22.0 → 5.24.0

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.
Files changed (91) hide show
  1. package/dist/app-routing.module.d.ts.map +1 -1
  2. package/dist/app-routing.module.js +1 -3
  3. package/dist/app-routing.module.js.map +1 -1
  4. package/dist/generated/lazy-feature-config.d.ts +1 -1
  5. package/dist/generated/lazy-feature-config.d.ts.map +1 -1
  6. package/dist/generated/lazy-feature-config.js +5 -2
  7. package/dist/generated/lazy-feature-config.js.map +1 -1
  8. package/dist/lib/dashboard-preferences-dialog/dashboard-preferences-dialog.component.js +49 -49
  9. package/dist/lib/dashboard-preferences-dialog/dashboard-preferences-dialog.component.js.map +1 -1
  10. package/dist/lib/oauth/oauth-callback.component.js +6 -6
  11. package/dist/lib/oauth/oauth-callback.component.js.map +1 -1
  12. package/dist/lib/oauth/oauth.module.d.ts +2 -3
  13. package/dist/lib/oauth/oauth.module.d.ts.map +1 -1
  14. package/dist/lib/oauth/oauth.module.js +0 -4
  15. package/dist/lib/oauth/oauth.module.js.map +1 -1
  16. package/dist/lib/resource-wrappers/chat-collections-resource.component.d.ts +6 -25
  17. package/dist/lib/resource-wrappers/chat-collections-resource.component.d.ts.map +1 -1
  18. package/dist/lib/resource-wrappers/chat-collections-resource.component.js +30 -124
  19. package/dist/lib/resource-wrappers/chat-collections-resource.component.js.map +1 -1
  20. package/dist/lib/resource-wrappers/chat-conversations-resource.component.d.ts +7 -23
  21. package/dist/lib/resource-wrappers/chat-conversations-resource.component.d.ts.map +1 -1
  22. package/dist/lib/resource-wrappers/chat-conversations-resource.component.js +50 -142
  23. package/dist/lib/resource-wrappers/chat-conversations-resource.component.js.map +1 -1
  24. package/dist/lib/resource-wrappers/chat-tasks-resource.component.d.ts +3 -19
  25. package/dist/lib/resource-wrappers/chat-tasks-resource.component.d.ts.map +1 -1
  26. package/dist/lib/resource-wrappers/chat-tasks-resource.component.js +16 -98
  27. package/dist/lib/resource-wrappers/chat-tasks-resource.component.js.map +1 -1
  28. package/dist/lib/resource-wrappers/list-detail-resource.component.d.ts +3 -1
  29. package/dist/lib/resource-wrappers/list-detail-resource.component.d.ts.map +1 -1
  30. package/dist/lib/resource-wrappers/list-detail-resource.component.js +3 -0
  31. package/dist/lib/resource-wrappers/list-detail-resource.component.js.map +1 -1
  32. package/dist/lib/resource-wrappers/notifications-resource.component.js +1 -0
  33. package/dist/lib/resource-wrappers/notifications-resource.component.js.map +1 -1
  34. package/dist/lib/resource-wrappers/view-resource.component.d.ts +13 -11
  35. package/dist/lib/resource-wrappers/view-resource.component.d.ts.map +1 -1
  36. package/dist/lib/resource-wrappers/view-resource.component.js +80 -89
  37. package/dist/lib/resource-wrappers/view-resource.component.js.map +1 -1
  38. package/dist/lib/services/startup-validation.service.d.ts.map +1 -1
  39. package/dist/lib/services/startup-validation.service.js +0 -3
  40. package/dist/lib/services/startup-validation.service.js.map +1 -1
  41. package/dist/lib/shell/components/header/app-nav.component.d.ts.map +1 -1
  42. package/dist/lib/shell/components/header/app-nav.component.js +18 -3
  43. package/dist/lib/shell/components/header/app-nav.component.js.map +1 -1
  44. package/dist/lib/shell/components/tabs/component-cache-manager.d.ts +45 -16
  45. package/dist/lib/shell/components/tabs/component-cache-manager.d.ts.map +1 -1
  46. package/dist/lib/shell/components/tabs/component-cache-manager.js +57 -35
  47. package/dist/lib/shell/components/tabs/component-cache-manager.js.map +1 -1
  48. package/dist/lib/shell/components/tabs/tab-container.component.d.ts +33 -0
  49. package/dist/lib/shell/components/tabs/tab-container.component.d.ts.map +1 -1
  50. package/dist/lib/shell/components/tabs/tab-container.component.js +99 -17
  51. package/dist/lib/shell/components/tabs/tab-container.component.js.map +1 -1
  52. package/dist/lib/shell/services/settings-dialog.service.d.ts +8 -8
  53. package/dist/lib/shell/services/settings-dialog.service.d.ts.map +1 -1
  54. package/dist/lib/shell/services/settings-dialog.service.js +20 -26
  55. package/dist/lib/shell/services/settings-dialog.service.js.map +1 -1
  56. package/dist/lib/shell/shell.component.d.ts.map +1 -1
  57. package/dist/lib/shell/shell.component.js +17 -17
  58. package/dist/lib/shell/shell.component.js.map +1 -1
  59. package/dist/lib/shell/shell.module.d.ts +4 -5
  60. package/dist/lib/shell/shell.module.d.ts.map +1 -1
  61. package/dist/lib/shell/shell.module.js +4 -8
  62. package/dist/lib/shell/shell.module.js.map +1 -1
  63. package/dist/lib/single-dashboard/Components/add-item/add-item.component.js +72 -71
  64. package/dist/lib/single-dashboard/Components/add-item/add-item.component.js.map +1 -1
  65. package/dist/lib/single-dashboard/Components/delete-item/delete-item.component.js +11 -11
  66. package/dist/lib/single-dashboard/Components/delete-item/delete-item.component.js.map +1 -1
  67. package/dist/lib/single-dashboard/Components/edit-dashboard/edit-dashboard.component.d.ts +36 -12
  68. package/dist/lib/single-dashboard/Components/edit-dashboard/edit-dashboard.component.d.ts.map +1 -1
  69. package/dist/lib/single-dashboard/Components/edit-dashboard/edit-dashboard.component.js +78 -50
  70. package/dist/lib/single-dashboard/Components/edit-dashboard/edit-dashboard.component.js.map +1 -1
  71. package/dist/lib/single-dashboard/single-dashboard.component.d.ts +12 -5
  72. package/dist/lib/single-dashboard/single-dashboard.component.d.ts.map +1 -1
  73. package/dist/lib/single-dashboard/single-dashboard.component.js +44 -55
  74. package/dist/lib/single-dashboard/single-dashboard.component.js.map +1 -1
  75. package/dist/lib/single-list-detail/single-list-detail.component.d.ts +10 -2
  76. package/dist/lib/single-list-detail/single-list-detail.component.d.ts.map +1 -1
  77. package/dist/lib/single-list-detail/single-list-detail.component.js +313 -243
  78. package/dist/lib/single-list-detail/single-list-detail.component.js.map +1 -1
  79. package/dist/module.d.ts +51 -63
  80. package/dist/module.d.ts.map +1 -1
  81. package/dist/module.js +35 -80
  82. package/dist/module.js.map +1 -1
  83. package/dist/public-api.d.ts +0 -1
  84. package/dist/public-api.d.ts.map +1 -1
  85. package/dist/public-api.js +0 -1
  86. package/dist/public-api.js.map +1 -1
  87. package/package.json +38 -47
  88. package/dist/lib/generic/form-toolbar.d.ts +0 -8
  89. package/dist/lib/generic/form-toolbar.d.ts.map +0 -1
  90. package/dist/lib/generic/form-toolbar.js +0 -114
  91. package/dist/lib/generic/form-toolbar.js.map +0 -1
@@ -1,96 +1,128 @@
1
- import { Component, Input, ViewChild } from '@angular/core';
1
+ import { Component, Input, ViewChild, HostListener } from '@angular/core';
2
2
  import { CompositeKey, LogError, LogErrorEx, LogStatus, Metadata, RunView } from '@memberjunction/core';
3
3
  import { Subject, debounceTime } from 'rxjs';
4
4
  import { UUIDsEqual, NormalizeUUID } from '@memberjunction/global';
5
5
  import * as i0 from "@angular/core";
6
6
  import * as i1 from "@memberjunction/ng-shared";
7
- import * as i2 from "@progress/kendo-angular-dialog";
8
- import * as i3 from "@progress/kendo-angular-buttons";
9
- import * as i4 from "@progress/kendo-angular-inputs";
10
- import * as i5 from "@progress/kendo-angular-progressbar";
11
- import * as i6 from "@memberjunction/ng-shared-generic";
12
- import * as i7 from "@memberjunction/ng-list-detail-grid";
7
+ import * as i2 from "@memberjunction/ng-ui-components";
8
+ import * as i3 from "@memberjunction/ng-shared-generic";
9
+ import * as i4 from "@memberjunction/ng-list-detail-grid";
13
10
  const _c0 = ["listDetailGrid"];
14
- const _forTrack0 = ($index, $item) => $item.ID;
15
- function SingleListDetailComponent_Conditional_7_Conditional_4_Template(rf, ctx) { if (rf & 1) {
16
- i0.ɵɵelementStart(0, "span", 13);
11
+ const _forTrack0 = ($index, $item) => $item.Text;
12
+ const _forTrack1 = ($index, $item) => $item.ID;
13
+ function SingleListDetailComponent_Conditional_9_For_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
14
+ i0.ɵɵelementStart(0, "span", 17);
17
15
  i0.ɵɵtext(1);
18
16
  i0.ɵɵelementEnd();
19
17
  } if (rf & 2) {
20
- const ctx_r1 = i0.ɵɵnextContext(2);
18
+ const option_r2 = i0.ɵɵnextContext().$implicit;
21
19
  i0.ɵɵadvance();
22
- i0.ɵɵtextInterpolate1("(", ctx_r1.selectedKeys.length, " selected)");
20
+ i0.ɵɵtextInterpolate(option_r2.Description);
23
21
  } }
24
- function SingleListDetailComponent_Conditional_7_Conditional_6_Template(rf, ctx) { if (rf & 1) {
25
- const _r3 = i0.ɵɵgetCurrentView();
26
- i0.ɵɵelementStart(0, "button", 19);
27
- i0.ɵɵlistener("click", function SingleListDetailComponent_Conditional_7_Conditional_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.openRemoveDialog()); });
28
- i0.ɵɵelement(1, "span", 20);
22
+ function SingleListDetailComponent_Conditional_9_For_2_Template(rf, ctx) { if (rf & 1) {
23
+ const _r1 = i0.ɵɵgetCurrentView();
24
+ i0.ɵɵelementStart(0, "div", 15);
25
+ i0.ɵɵlistener("click", function SingleListDetailComponent_Conditional_9_For_2_Template_div_click_0_listener() { const option_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onDropdownItemClick(option_r2)); });
26
+ i0.ɵɵelementStart(1, "span", 16);
27
+ i0.ɵɵtext(2);
28
+ i0.ɵɵelementEnd();
29
+ i0.ɵɵconditionalCreate(3, SingleListDetailComponent_Conditional_9_For_2_Conditional_3_Template, 2, 1, "span", 17);
30
+ i0.ɵɵelementEnd();
31
+ } if (rf & 2) {
32
+ const option_r2 = ctx.$implicit;
33
+ i0.ɵɵadvance(2);
34
+ i0.ɵɵtextInterpolate(option_r2.Text);
35
+ i0.ɵɵadvance();
36
+ i0.ɵɵconditional(option_r2.Description ? 3 : -1);
37
+ } }
38
+ function SingleListDetailComponent_Conditional_9_Template(rf, ctx) { if (rf & 1) {
39
+ i0.ɵɵelementStart(0, "div", 7);
40
+ i0.ɵɵrepeaterCreate(1, SingleListDetailComponent_Conditional_9_For_2_Template, 4, 2, "div", 14, _forTrack0);
41
+ i0.ɵɵelementEnd();
42
+ } if (rf & 2) {
43
+ const ctx_r2 = i0.ɵɵnextContext();
44
+ i0.ɵɵadvance();
45
+ i0.ɵɵrepeater(ctx_r2.addOptions);
46
+ } }
47
+ function SingleListDetailComponent_Conditional_10_Conditional_4_Template(rf, ctx) { if (rf & 1) {
48
+ i0.ɵɵelementStart(0, "span", 20);
49
+ i0.ɵɵtext(1);
50
+ i0.ɵɵelementEnd();
51
+ } if (rf & 2) {
52
+ const ctx_r2 = i0.ɵɵnextContext(2);
53
+ i0.ɵɵadvance();
54
+ i0.ɵɵtextInterpolate1("(", ctx_r2.selectedKeys.length, " selected)");
55
+ } }
56
+ function SingleListDetailComponent_Conditional_10_Conditional_6_Template(rf, ctx) { if (rf & 1) {
57
+ const _r5 = i0.ɵɵgetCurrentView();
58
+ i0.ɵɵelementStart(0, "button", 26);
59
+ i0.ɵɵlistener("click", function SingleListDetailComponent_Conditional_10_Conditional_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.openRemoveDialog()); });
60
+ i0.ɵɵelement(1, "span", 27);
29
61
  i0.ɵɵtext(2, " Remove from List ");
30
62
  i0.ɵɵelementEnd();
31
63
  } }
32
- function SingleListDetailComponent_Conditional_7_Template(rf, ctx) { if (rf & 1) {
33
- const _r1 = i0.ɵɵgetCurrentView();
34
- i0.ɵɵelementStart(0, "div", 5)(1, "div", 11)(2, "span", 12);
64
+ function SingleListDetailComponent_Conditional_10_Template(rf, ctx) { if (rf & 1) {
65
+ const _r4 = i0.ɵɵgetCurrentView();
66
+ i0.ɵɵelementStart(0, "div", 8)(1, "div", 18)(2, "span", 19);
35
67
  i0.ɵɵtext(3);
36
68
  i0.ɵɵelementEnd();
37
- i0.ɵɵconditionalCreate(4, SingleListDetailComponent_Conditional_7_Conditional_4_Template, 2, 1, "span", 13);
69
+ i0.ɵɵconditionalCreate(4, SingleListDetailComponent_Conditional_10_Conditional_4_Template, 2, 1, "span", 20);
38
70
  i0.ɵɵelementEnd();
39
- i0.ɵɵelementStart(5, "div", 14);
40
- i0.ɵɵconditionalCreate(6, SingleListDetailComponent_Conditional_7_Conditional_6_Template, 3, 0, "button", 15);
41
- i0.ɵɵelementStart(7, "button", 16);
42
- i0.ɵɵlistener("click", function SingleListDetailComponent_Conditional_7_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onRefreshClick()); });
43
- i0.ɵɵelement(8, "span", 17);
71
+ i0.ɵɵelementStart(5, "div", 21);
72
+ i0.ɵɵconditionalCreate(6, SingleListDetailComponent_Conditional_10_Conditional_6_Template, 3, 0, "button", 22);
73
+ i0.ɵɵelementStart(7, "button", 23);
74
+ i0.ɵɵlistener("click", function SingleListDetailComponent_Conditional_10_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onRefreshClick()); });
75
+ i0.ɵɵelement(8, "span", 24);
44
76
  i0.ɵɵtext(9, " Refresh ");
45
77
  i0.ɵɵelementEnd();
46
- i0.ɵɵelementStart(10, "button", 16);
47
- i0.ɵɵlistener("click", function SingleListDetailComponent_Conditional_7_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onExportClick()); });
48
- i0.ɵɵelement(11, "span", 18);
78
+ i0.ɵɵelementStart(10, "button", 23);
79
+ i0.ɵɵlistener("click", function SingleListDetailComponent_Conditional_10_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onExportClick()); });
80
+ i0.ɵɵelement(11, "span", 25);
49
81
  i0.ɵɵtext(12, " Export ");
50
82
  i0.ɵɵelementEnd()()();
51
83
  } if (rf & 2) {
52
- const ctx_r1 = i0.ɵɵnextContext();
84
+ const ctx_r2 = i0.ɵɵnextContext();
53
85
  i0.ɵɵadvance(3);
54
- i0.ɵɵtextInterpolate2("", ctx_r1.rowCount, " row", ctx_r1.rowCount !== 1 ? "s" : "");
86
+ i0.ɵɵtextInterpolate2("", ctx_r2.rowCount, " row", ctx_r2.rowCount !== 1 ? "s" : "");
55
87
  i0.ɵɵadvance();
56
- i0.ɵɵconditional(ctx_r1.selectedKeys.length > 0 ? 4 : -1);
88
+ i0.ɵɵconditional(ctx_r2.selectedKeys.length > 0 ? 4 : -1);
57
89
  i0.ɵɵadvance(2);
58
- i0.ɵɵconditional(ctx_r1.selectedKeys.length > 0 ? 6 : -1);
90
+ i0.ɵɵconditional(ctx_r2.selectedKeys.length > 0 ? 6 : -1);
59
91
  } }
60
- function SingleListDetailComponent_Conditional_8_Template(rf, ctx) { if (rf & 1) {
61
- i0.ɵɵelementStart(0, "div", 6);
62
- i0.ɵɵelement(1, "mj-loading", 21);
92
+ function SingleListDetailComponent_Conditional_11_Template(rf, ctx) { if (rf & 1) {
93
+ i0.ɵɵelementStart(0, "div", 9);
94
+ i0.ɵɵelement(1, "mj-loading", 28);
63
95
  i0.ɵɵelementEnd();
64
96
  } }
65
- function SingleListDetailComponent_Conditional_9_Template(rf, ctx) { if (rf & 1) {
66
- const _r4 = i0.ɵɵgetCurrentView();
67
- i0.ɵɵelementStart(0, "div", 7)(1, "mj-list-detail-grid", 22, 0);
68
- i0.ɵɵlistener("rowClicked", function SingleListDetailComponent_Conditional_9_Template_mj_list_detail_grid_rowClicked_1_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onRowClicked($event)); })("rowDoubleClicked", function SingleListDetailComponent_Conditional_9_Template_mj_list_detail_grid_rowDoubleClicked_1_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onRowDoubleClicked($event)); })("selectionChange", function SingleListDetailComponent_Conditional_9_Template_mj_list_detail_grid_selectionChange_1_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onSelectionChange($event)); })("dataLoaded", function SingleListDetailComponent_Conditional_9_Template_mj_list_detail_grid_dataLoaded_1_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onDataLoaded($event)); });
97
+ function SingleListDetailComponent_Conditional_12_Template(rf, ctx) { if (rf & 1) {
98
+ const _r6 = i0.ɵɵgetCurrentView();
99
+ i0.ɵɵelementStart(0, "div", 10)(1, "mj-list-detail-grid", 29, 0);
100
+ i0.ɵɵlistener("rowClicked", function SingleListDetailComponent_Conditional_12_Template_mj_list_detail_grid_rowClicked_1_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onRowClicked($event)); })("rowDoubleClicked", function SingleListDetailComponent_Conditional_12_Template_mj_list_detail_grid_rowDoubleClicked_1_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onRowDoubleClicked($event)); })("selectionChange", function SingleListDetailComponent_Conditional_12_Template_mj_list_detail_grid_selectionChange_1_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onSelectionChange($event)); })("dataLoaded", function SingleListDetailComponent_Conditional_12_Template_mj_list_detail_grid_dataLoaded_1_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onDataLoaded($event)); });
69
101
  i0.ɵɵelementEnd()();
70
102
  } if (rf & 2) {
71
- const ctx_r1 = i0.ɵɵnextContext();
103
+ const ctx_r2 = i0.ɵɵnextContext();
72
104
  i0.ɵɵadvance();
73
- i0.ɵɵproperty("listId", ctx_r1.ListID)("listEntity", ctx_r1.listRecord)("autoNavigate", true)("height", "auto")("showToolbar", false)("toolbarConfig", ctx_r1.gridToolbarConfig)("selectionMode", "checkbox");
105
+ i0.ɵɵproperty("listId", ctx_r2.ListID)("listEntity", ctx_r2.listRecord)("autoNavigate", true)("height", "auto")("showToolbar", false)("toolbarConfig", ctx_r2.gridToolbarConfig)("selectionMode", "checkbox");
74
106
  } }
75
- function SingleListDetailComponent_Conditional_10_Conditional_2_Conditional_2_Template(rf, ctx) { if (rf & 1) {
76
- i0.ɵɵelement(0, "kendo-progressbar", 30);
107
+ function SingleListDetailComponent_Conditional_13_Conditional_2_Conditional_2_Template(rf, ctx) { if (rf & 1) {
108
+ i0.ɵɵelement(0, "mj-progress-bar", 37);
77
109
  } if (rf & 2) {
78
- const ctx_r1 = i0.ɵɵnextContext(3);
79
- i0.ɵɵproperty("min", 0)("max", ctx_r1.removeTotal)("value", ctx_r1.removeProgress)("label", false);
110
+ const ctx_r2 = i0.ɵɵnextContext(3);
111
+ i0.ɵɵproperty("Value", ctx_r2.removeProgressPercent);
80
112
  } }
81
- function SingleListDetailComponent_Conditional_10_Conditional_2_Template(rf, ctx) { if (rf & 1) {
82
- i0.ɵɵelementStart(0, "div", 25);
83
- i0.ɵɵelement(1, "mj-loading", 29);
84
- i0.ɵɵconditionalCreate(2, SingleListDetailComponent_Conditional_10_Conditional_2_Conditional_2_Template, 1, 4, "kendo-progressbar", 30);
113
+ function SingleListDetailComponent_Conditional_13_Conditional_2_Template(rf, ctx) { if (rf & 1) {
114
+ i0.ɵɵelementStart(0, "div", 32);
115
+ i0.ɵɵelement(1, "mj-loading", 36);
116
+ i0.ɵɵconditionalCreate(2, SingleListDetailComponent_Conditional_13_Conditional_2_Conditional_2_Template, 1, 1, "mj-progress-bar", 37);
85
117
  i0.ɵɵelementEnd();
86
118
  } if (rf & 2) {
87
- const ctx_r1 = i0.ɵɵnextContext(2);
119
+ const ctx_r2 = i0.ɵɵnextContext(2);
88
120
  i0.ɵɵadvance(2);
89
- i0.ɵɵconditional(ctx_r1.removeTotal > 0 ? 2 : -1);
121
+ i0.ɵɵconditional(ctx_r2.removeTotal > 0 ? 2 : -1);
90
122
  } }
91
- function SingleListDetailComponent_Conditional_10_Conditional_3_Template(rf, ctx) { if (rf & 1) {
92
- i0.ɵɵelementStart(0, "div", 26);
93
- i0.ɵɵelement(1, "span", 31);
123
+ function SingleListDetailComponent_Conditional_13_Conditional_3_Template(rf, ctx) { if (rf & 1) {
124
+ i0.ɵɵelementStart(0, "div", 33);
125
+ i0.ɵɵelement(1, "span", 38);
94
126
  i0.ɵɵelementStart(2, "p");
95
127
  i0.ɵɵtext(3, "Are you sure you want to remove ");
96
128
  i0.ɵɵelementStart(4, "strong");
@@ -98,288 +130,287 @@ function SingleListDetailComponent_Conditional_10_Conditional_3_Template(rf, ctx
98
130
  i0.ɵɵelementEnd();
99
131
  i0.ɵɵtext(6);
100
132
  i0.ɵɵelementEnd();
101
- i0.ɵɵelementStart(7, "p", 32);
133
+ i0.ɵɵelementStart(7, "p", 39);
102
134
  i0.ɵɵtext(8, "This will not delete the records, only remove them from this list.");
103
135
  i0.ɵɵelementEnd()();
104
136
  } if (rf & 2) {
105
- const ctx_r1 = i0.ɵɵnextContext(2);
137
+ const ctx_r2 = i0.ɵɵnextContext(2);
106
138
  i0.ɵɵadvance(5);
107
- i0.ɵɵtextInterpolate(ctx_r1.selectedKeys.length);
139
+ i0.ɵɵtextInterpolate(ctx_r2.selectedKeys.length);
108
140
  i0.ɵɵadvance();
109
- i0.ɵɵtextInterpolate1(" record", ctx_r1.selectedKeys.length !== 1 ? "s" : "", " from this list?");
141
+ i0.ɵɵtextInterpolate1(" record", ctx_r2.selectedKeys.length !== 1 ? "s" : "", " from this list?");
110
142
  } }
111
- function SingleListDetailComponent_Conditional_10_Template(rf, ctx) { if (rf & 1) {
112
- const _r5 = i0.ɵɵgetCurrentView();
113
- i0.ɵɵelementStart(0, "kendo-dialog", 23);
114
- i0.ɵɵlistener("close", function SingleListDetailComponent_Conditional_10_Template_kendo_dialog_close_0_listener() { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeRemoveDialog()); });
115
- i0.ɵɵelementStart(1, "div", 24);
116
- i0.ɵɵconditionalCreate(2, SingleListDetailComponent_Conditional_10_Conditional_2_Template, 3, 1, "div", 25)(3, SingleListDetailComponent_Conditional_10_Conditional_3_Template, 9, 2, "div", 26);
143
+ function SingleListDetailComponent_Conditional_13_Template(rf, ctx) { if (rf & 1) {
144
+ const _r7 = i0.ɵɵgetCurrentView();
145
+ i0.ɵɵelementStart(0, "mj-dialog", 30);
146
+ i0.ɵɵlistener("Close", function SingleListDetailComponent_Conditional_13_Template_mj_dialog_Close_0_listener() { i0.ɵɵrestoreView(_r7); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.closeRemoveDialog()); });
147
+ i0.ɵɵelementStart(1, "div", 31);
148
+ i0.ɵɵconditionalCreate(2, SingleListDetailComponent_Conditional_13_Conditional_2_Template, 3, 1, "div", 32)(3, SingleListDetailComponent_Conditional_13_Conditional_3_Template, 9, 2, "div", 33);
117
149
  i0.ɵɵelementEnd();
118
- i0.ɵɵelementStart(4, "kendo-dialog-actions")(5, "button", 27);
119
- i0.ɵɵlistener("click", function SingleListDetailComponent_Conditional_10_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.confirmRemoveFromList()); });
150
+ i0.ɵɵelementStart(4, "mj-dialog-actions")(5, "button", 34);
151
+ i0.ɵɵlistener("click", function SingleListDetailComponent_Conditional_13_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r7); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.confirmRemoveFromList()); });
120
152
  i0.ɵɵtext(6, " Remove ");
121
153
  i0.ɵɵelementEnd();
122
- i0.ɵɵelementStart(7, "button", 28);
123
- i0.ɵɵlistener("click", function SingleListDetailComponent_Conditional_10_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeRemoveDialog()); });
154
+ i0.ɵɵelementStart(7, "button", 35);
155
+ i0.ɵɵlistener("click", function SingleListDetailComponent_Conditional_13_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r7); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.closeRemoveDialog()); });
124
156
  i0.ɵɵtext(8, " Cancel ");
125
157
  i0.ɵɵelementEnd()()();
126
158
  } if (rf & 2) {
127
- const ctx_r1 = i0.ɵɵnextContext();
128
- i0.ɵɵproperty("minWidth", 350)("width", 450);
159
+ const ctx_r2 = i0.ɵɵnextContext();
160
+ i0.ɵɵproperty("Visible", true)("MinWidth", 350)("Width", 450);
129
161
  i0.ɵɵadvance(2);
130
- i0.ɵɵconditional(ctx_r1.isRemoving ? 2 : 3);
162
+ i0.ɵɵconditional(ctx_r2.isRemoving ? 2 : 3);
131
163
  i0.ɵɵadvance(3);
132
- i0.ɵɵproperty("disabled", ctx_r1.isRemoving);
164
+ i0.ɵɵproperty("disabled", ctx_r2.isRemoving);
133
165
  i0.ɵɵadvance(2);
134
- i0.ɵɵproperty("disabled", ctx_r1.isRemoving);
166
+ i0.ɵɵproperty("disabled", ctx_r2.isRemoving);
135
167
  } }
136
- function SingleListDetailComponent_Conditional_11_Conditional_2_Conditional_2_Template(rf, ctx) { if (rf & 1) {
137
- i0.ɵɵelement(0, "kendo-progressbar", 30);
168
+ function SingleListDetailComponent_Conditional_14_Conditional_2_Conditional_2_Template(rf, ctx) { if (rf & 1) {
169
+ i0.ɵɵelement(0, "mj-progress-bar", 37);
138
170
  } if (rf & 2) {
139
- const ctx_r1 = i0.ɵɵnextContext(3);
140
- i0.ɵɵproperty("min", 0)("max", ctx_r1.addTotal)("value", ctx_r1.addProgress)("label", false);
171
+ const ctx_r2 = i0.ɵɵnextContext(3);
172
+ i0.ɵɵproperty("Value", ctx_r2.addProgressPercent);
141
173
  } }
142
- function SingleListDetailComponent_Conditional_11_Conditional_2_Template(rf, ctx) { if (rf & 1) {
143
- i0.ɵɵelementStart(0, "div", 25);
144
- i0.ɵɵelement(1, "mj-loading", 36);
145
- i0.ɵɵconditionalCreate(2, SingleListDetailComponent_Conditional_11_Conditional_2_Conditional_2_Template, 1, 4, "kendo-progressbar", 30);
174
+ function SingleListDetailComponent_Conditional_14_Conditional_2_Template(rf, ctx) { if (rf & 1) {
175
+ i0.ɵɵelementStart(0, "div", 32);
176
+ i0.ɵɵelement(1, "mj-loading", 43);
177
+ i0.ɵɵconditionalCreate(2, SingleListDetailComponent_Conditional_14_Conditional_2_Conditional_2_Template, 1, 1, "mj-progress-bar", 37);
146
178
  i0.ɵɵelementEnd();
147
179
  } if (rf & 2) {
148
- const ctx_r1 = i0.ɵɵnextContext(2);
180
+ const ctx_r2 = i0.ɵɵnextContext(2);
149
181
  i0.ɵɵadvance(2);
150
- i0.ɵɵconditional(ctx_r1.addTotal > 0 ? 2 : -1);
182
+ i0.ɵɵconditional(ctx_r2.addTotal > 0 ? 2 : -1);
151
183
  } }
152
- function SingleListDetailComponent_Conditional_11_Conditional_3_ng_template_2_Template(rf, ctx) { if (rf & 1) {
153
- i0.ɵɵelement(0, "span", 44);
154
- } }
155
- function SingleListDetailComponent_Conditional_11_Conditional_3_Conditional_6_Template(rf, ctx) { if (rf & 1) {
156
- i0.ɵɵelementStart(0, "div", 42);
157
- i0.ɵɵelement(1, "mj-loading", 45);
184
+ function SingleListDetailComponent_Conditional_14_Conditional_3_Conditional_7_Template(rf, ctx) { if (rf & 1) {
185
+ i0.ɵɵelementStart(0, "div", 50);
186
+ i0.ɵɵelement(1, "mj-loading", 52);
158
187
  i0.ɵɵelementEnd();
159
188
  } if (rf & 2) {
160
189
  i0.ɵɵadvance();
161
190
  i0.ɵɵproperty("showText", false);
162
191
  } }
163
- function SingleListDetailComponent_Conditional_11_Conditional_3_Conditional_7_Template(rf, ctx) { if (rf & 1) {
164
- i0.ɵɵelementStart(0, "div", 43);
165
- i0.ɵɵelement(1, "span", 46);
192
+ function SingleListDetailComponent_Conditional_14_Conditional_3_Conditional_8_Template(rf, ctx) { if (rf & 1) {
193
+ i0.ɵɵelementStart(0, "div", 51);
194
+ i0.ɵɵelement(1, "span", 53);
166
195
  i0.ɵɵelementStart(2, "p");
167
196
  i0.ɵɵtext(3);
168
197
  i0.ɵɵelementEnd()();
169
198
  } if (rf & 2) {
170
- const ctx_r1 = i0.ɵɵnextContext(3);
199
+ const ctx_r2 = i0.ɵɵnextContext(3);
171
200
  i0.ɵɵadvance(3);
172
- i0.ɵɵtextInterpolate1("No records found matching \"", ctx_r1.addRecordsSearchFilter, "\"");
201
+ i0.ɵɵtextInterpolate1("No records found matching \"", ctx_r2.addRecordsSearchFilter, "\"");
173
202
  } }
174
- function SingleListDetailComponent_Conditional_11_Conditional_3_Conditional_8_Template(rf, ctx) { if (rf & 1) {
175
- i0.ɵɵelementStart(0, "div", 43);
176
- i0.ɵɵelement(1, "span", 47);
203
+ function SingleListDetailComponent_Conditional_14_Conditional_3_Conditional_9_Template(rf, ctx) { if (rf & 1) {
204
+ i0.ɵɵelementStart(0, "div", 51);
205
+ i0.ɵɵelement(1, "span", 54);
177
206
  i0.ɵɵelementStart(2, "p");
178
207
  i0.ɵɵtext(3, "Search for records to add to this list");
179
208
  i0.ɵɵelementEnd()();
180
209
  } }
181
- function SingleListDetailComponent_Conditional_11_Conditional_3_Conditional_9_For_9_Conditional_2_Template(rf, ctx) { if (rf & 1) {
182
- i0.ɵɵelement(0, "span", 55);
210
+ function SingleListDetailComponent_Conditional_14_Conditional_3_Conditional_10_For_9_Conditional_2_Template(rf, ctx) { if (rf & 1) {
211
+ i0.ɵɵelement(0, "span", 62);
183
212
  } }
184
- function SingleListDetailComponent_Conditional_11_Conditional_3_Conditional_9_For_9_Conditional_3_Template(rf, ctx) { if (rf & 1) {
185
- const _r11 = i0.ɵɵgetCurrentView();
186
- i0.ɵɵelementStart(0, "input", 59);
187
- i0.ɵɵlistener("click", function SingleListDetailComponent_Conditional_11_Conditional_3_Conditional_9_For_9_Conditional_3_Template_input_click_0_listener($event) { i0.ɵɵrestoreView(_r11); return i0.ɵɵresetView($event.stopPropagation()); })("change", function SingleListDetailComponent_Conditional_11_Conditional_3_Conditional_9_For_9_Conditional_3_Template_input_change_0_listener() { i0.ɵɵrestoreView(_r11); const record_r10 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.toggleRecordSelection(record_r10)); });
213
+ function SingleListDetailComponent_Conditional_14_Conditional_3_Conditional_10_For_9_Conditional_3_Template(rf, ctx) { if (rf & 1) {
214
+ const _r13 = i0.ɵɵgetCurrentView();
215
+ i0.ɵɵelementStart(0, "input", 66);
216
+ i0.ɵɵlistener("click", function SingleListDetailComponent_Conditional_14_Conditional_3_Conditional_10_For_9_Conditional_3_Template_input_click_0_listener($event) { i0.ɵɵrestoreView(_r13); return i0.ɵɵresetView($event.stopPropagation()); })("change", function SingleListDetailComponent_Conditional_14_Conditional_3_Conditional_10_For_9_Conditional_3_Template_input_change_0_listener() { i0.ɵɵrestoreView(_r13); const record_r12 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.toggleRecordSelection(record_r12)); });
188
217
  i0.ɵɵelementEnd();
189
218
  } if (rf & 2) {
190
- const record_r10 = i0.ɵɵnextContext().$implicit;
191
- i0.ɵɵproperty("checked", record_r10.isSelected);
219
+ const record_r12 = i0.ɵɵnextContext().$implicit;
220
+ i0.ɵɵproperty("checked", record_r12.isSelected);
192
221
  } }
193
- function SingleListDetailComponent_Conditional_11_Conditional_3_Conditional_9_For_9_Conditional_6_Template(rf, ctx) { if (rf & 1) {
194
- i0.ɵɵelementStart(0, "span", 58);
222
+ function SingleListDetailComponent_Conditional_14_Conditional_3_Conditional_10_For_9_Conditional_6_Template(rf, ctx) { if (rf & 1) {
223
+ i0.ɵɵelementStart(0, "span", 65);
195
224
  i0.ɵɵtext(1, "In List");
196
225
  i0.ɵɵelementEnd();
197
226
  } }
198
- function SingleListDetailComponent_Conditional_11_Conditional_3_Conditional_9_For_9_Template(rf, ctx) { if (rf & 1) {
199
- const _r9 = i0.ɵɵgetCurrentView();
200
- i0.ɵɵelementStart(0, "div", 53);
201
- i0.ɵɵlistener("click", function SingleListDetailComponent_Conditional_11_Conditional_3_Conditional_9_For_9_Template_div_click_0_listener() { const record_r10 = i0.ɵɵrestoreView(_r9).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.toggleRecordSelection(record_r10)); });
202
- i0.ɵɵelementStart(1, "div", 54);
203
- i0.ɵɵconditionalCreate(2, SingleListDetailComponent_Conditional_11_Conditional_3_Conditional_9_For_9_Conditional_2_Template, 1, 0, "span", 55)(3, SingleListDetailComponent_Conditional_11_Conditional_3_Conditional_9_For_9_Conditional_3_Template, 1, 1, "input", 56);
227
+ function SingleListDetailComponent_Conditional_14_Conditional_3_Conditional_10_For_9_Template(rf, ctx) { if (rf & 1) {
228
+ const _r11 = i0.ɵɵgetCurrentView();
229
+ i0.ɵɵelementStart(0, "div", 60);
230
+ i0.ɵɵlistener("click", function SingleListDetailComponent_Conditional_14_Conditional_3_Conditional_10_For_9_Template_div_click_0_listener() { const record_r12 = i0.ɵɵrestoreView(_r11).$implicit; const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.toggleRecordSelection(record_r12)); });
231
+ i0.ɵɵelementStart(1, "div", 61);
232
+ i0.ɵɵconditionalCreate(2, SingleListDetailComponent_Conditional_14_Conditional_3_Conditional_10_For_9_Conditional_2_Template, 1, 0, "span", 62)(3, SingleListDetailComponent_Conditional_14_Conditional_3_Conditional_10_For_9_Conditional_3_Template, 1, 1, "input", 63);
204
233
  i0.ɵɵelementEnd();
205
- i0.ɵɵelementStart(4, "div", 57);
234
+ i0.ɵɵelementStart(4, "div", 64);
206
235
  i0.ɵɵtext(5);
207
236
  i0.ɵɵelementEnd();
208
- i0.ɵɵconditionalCreate(6, SingleListDetailComponent_Conditional_11_Conditional_3_Conditional_9_For_9_Conditional_6_Template, 2, 0, "span", 58);
237
+ i0.ɵɵconditionalCreate(6, SingleListDetailComponent_Conditional_14_Conditional_3_Conditional_10_For_9_Conditional_6_Template, 2, 0, "span", 65);
209
238
  i0.ɵɵelementEnd();
210
239
  } if (rf & 2) {
211
- const record_r10 = ctx.$implicit;
212
- i0.ɵɵclassProp("in-list", record_r10.isInList)("selected", record_r10.isSelected);
240
+ const record_r12 = ctx.$implicit;
241
+ i0.ɵɵclassProp("in-list", record_r12.isInList)("selected", record_r12.isSelected);
213
242
  i0.ɵɵadvance(2);
214
- i0.ɵɵconditional(record_r10.isInList ? 2 : 3);
243
+ i0.ɵɵconditional(record_r12.isInList ? 2 : 3);
215
244
  i0.ɵɵadvance(3);
216
- i0.ɵɵtextInterpolate(record_r10.Name);
245
+ i0.ɵɵtextInterpolate(record_r12.Name);
217
246
  i0.ɵɵadvance();
218
- i0.ɵɵconditional(record_r10.isInList ? 6 : -1);
247
+ i0.ɵɵconditional(record_r12.isInList ? 6 : -1);
219
248
  } }
220
- function SingleListDetailComponent_Conditional_11_Conditional_3_Conditional_9_Template(rf, ctx) { if (rf & 1) {
221
- const _r8 = i0.ɵɵgetCurrentView();
222
- i0.ɵɵelementStart(0, "div", 48)(1, "button", 49);
223
- i0.ɵɵlistener("click", function SingleListDetailComponent_Conditional_11_Conditional_3_Conditional_9_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.selectAllAddable()); });
249
+ function SingleListDetailComponent_Conditional_14_Conditional_3_Conditional_10_Template(rf, ctx) { if (rf & 1) {
250
+ const _r10 = i0.ɵɵgetCurrentView();
251
+ i0.ɵɵelementStart(0, "div", 55)(1, "button", 56);
252
+ i0.ɵɵlistener("click", function SingleListDetailComponent_Conditional_14_Conditional_3_Conditional_10_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r10); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.selectAllAddable()); });
224
253
  i0.ɵɵtext(2, "Select All");
225
254
  i0.ɵɵelementEnd();
226
- i0.ɵɵelementStart(3, "button", 49);
227
- i0.ɵɵlistener("click", function SingleListDetailComponent_Conditional_11_Conditional_3_Conditional_9_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.deselectAllAddable()); });
255
+ i0.ɵɵelementStart(3, "button", 56);
256
+ i0.ɵɵlistener("click", function SingleListDetailComponent_Conditional_14_Conditional_3_Conditional_10_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r10); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.deselectAllAddable()); });
228
257
  i0.ɵɵtext(4, "Deselect All");
229
258
  i0.ɵɵelementEnd();
230
- i0.ɵɵelementStart(5, "span", 50);
259
+ i0.ɵɵelementStart(5, "span", 57);
231
260
  i0.ɵɵtext(6);
232
261
  i0.ɵɵelementEnd()();
233
- i0.ɵɵelementStart(7, "div", 51);
234
- i0.ɵɵrepeaterCreate(8, SingleListDetailComponent_Conditional_11_Conditional_3_Conditional_9_For_9_Template, 7, 7, "div", 52, _forTrack0);
262
+ i0.ɵɵelementStart(7, "div", 58);
263
+ i0.ɵɵrepeaterCreate(8, SingleListDetailComponent_Conditional_14_Conditional_3_Conditional_10_For_9_Template, 7, 7, "div", 59, _forTrack1);
235
264
  i0.ɵɵelementEnd();
236
265
  } if (rf & 2) {
237
- const ctx_r1 = i0.ɵɵnextContext(3);
266
+ const ctx_r2 = i0.ɵɵnextContext(3);
238
267
  i0.ɵɵadvance(6);
239
- i0.ɵɵtextInterpolate1("", ctx_r1.selectedAddableRecords.length, " selected");
268
+ i0.ɵɵtextInterpolate1("", ctx_r2.selectedAddableRecords.length, " selected");
240
269
  i0.ɵɵadvance(2);
241
- i0.ɵɵrepeater(ctx_r1.addableRecords);
270
+ i0.ɵɵrepeater(ctx_r2.addableRecords);
242
271
  } }
243
- function SingleListDetailComponent_Conditional_11_Conditional_3_Template(rf, ctx) { if (rf & 1) {
244
- const _r7 = i0.ɵɵgetCurrentView();
245
- i0.ɵɵelementStart(0, "div", 37)(1, "kendo-textbox", 38);
246
- i0.ɵɵlistener("valueChange", function SingleListDetailComponent_Conditional_11_Conditional_3_Template_kendo_textbox_valueChange_1_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onAddRecordsSearchChange($event)); });
247
- i0.ɵɵtemplate(2, SingleListDetailComponent_Conditional_11_Conditional_3_ng_template_2_Template, 1, 0, "ng-template", 39);
248
- i0.ɵɵelementEnd();
249
- i0.ɵɵelementStart(3, "span", 40);
250
- i0.ɵɵtext(4, "Type at least 2 characters to search");
272
+ function SingleListDetailComponent_Conditional_14_Conditional_3_Template(rf, ctx) { if (rf & 1) {
273
+ const _r9 = i0.ɵɵgetCurrentView();
274
+ i0.ɵɵelementStart(0, "div", 44)(1, "div", 45);
275
+ i0.ɵɵelement(2, "span", 46);
276
+ i0.ɵɵelementStart(3, "input", 47);
277
+ i0.ɵɵlistener("input", function SingleListDetailComponent_Conditional_14_Conditional_3_Template_input_input_3_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onAddRecordsSearchInputEvent($event)); });
278
+ i0.ɵɵelementEnd()();
279
+ i0.ɵɵelementStart(4, "span", 48);
280
+ i0.ɵɵtext(5, "Type at least 2 characters to search");
251
281
  i0.ɵɵelementEnd()();
252
- i0.ɵɵelementStart(5, "div", 41);
253
- i0.ɵɵconditionalCreate(6, SingleListDetailComponent_Conditional_11_Conditional_3_Conditional_6_Template, 2, 1, "div", 42)(7, SingleListDetailComponent_Conditional_11_Conditional_3_Conditional_7_Template, 4, 1, "div", 43)(8, SingleListDetailComponent_Conditional_11_Conditional_3_Conditional_8_Template, 4, 0, "div", 43)(9, SingleListDetailComponent_Conditional_11_Conditional_3_Conditional_9_Template, 10, 1);
282
+ i0.ɵɵelementStart(6, "div", 49);
283
+ i0.ɵɵconditionalCreate(7, SingleListDetailComponent_Conditional_14_Conditional_3_Conditional_7_Template, 2, 1, "div", 50)(8, SingleListDetailComponent_Conditional_14_Conditional_3_Conditional_8_Template, 4, 1, "div", 51)(9, SingleListDetailComponent_Conditional_14_Conditional_3_Conditional_9_Template, 4, 0, "div", 51)(10, SingleListDetailComponent_Conditional_14_Conditional_3_Conditional_10_Template, 10, 1);
254
284
  i0.ɵɵelementEnd();
255
285
  } if (rf & 2) {
256
- const ctx_r1 = i0.ɵɵnextContext(2);
257
- i0.ɵɵadvance();
258
- i0.ɵɵproperty("placeholder", "Search " + ((ctx_r1.listRecord == null ? null : ctx_r1.listRecord.Entity) || "records") + "...")("clearButton", true)("value", ctx_r1.addRecordsSearchFilter);
259
- i0.ɵɵadvance(5);
260
- i0.ɵɵconditional(ctx_r1.addDialogLoading ? 6 : ctx_r1.addableRecords.length === 0 && ctx_r1.addRecordsSearchFilter.length >= 2 ? 7 : ctx_r1.addableRecords.length === 0 ? 8 : 9);
286
+ const ctx_r2 = i0.ɵɵnextContext(2);
287
+ i0.ɵɵadvance(3);
288
+ i0.ɵɵproperty("placeholder", "Search " + ((ctx_r2.listRecord == null ? null : ctx_r2.listRecord.Entity) || "records") + "...")("value", ctx_r2.addRecordsSearchFilter);
289
+ i0.ɵɵadvance(4);
290
+ i0.ɵɵconditional(ctx_r2.addDialogLoading ? 7 : ctx_r2.addableRecords.length === 0 && ctx_r2.addRecordsSearchFilter.length >= 2 ? 8 : ctx_r2.addableRecords.length === 0 ? 9 : 10);
261
291
  } }
262
- function SingleListDetailComponent_Conditional_11_Template(rf, ctx) { if (rf & 1) {
263
- const _r6 = i0.ɵɵgetCurrentView();
264
- i0.ɵɵelementStart(0, "kendo-dialog", 33);
265
- i0.ɵɵlistener("close", function SingleListDetailComponent_Conditional_11_Template_kendo_dialog_close_0_listener() { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeAddRecordsDialog()); });
266
- i0.ɵɵelementStart(1, "div", 34);
267
- i0.ɵɵconditionalCreate(2, SingleListDetailComponent_Conditional_11_Conditional_2_Template, 3, 1, "div", 25)(3, SingleListDetailComponent_Conditional_11_Conditional_3_Template, 10, 4);
292
+ function SingleListDetailComponent_Conditional_14_Template(rf, ctx) { if (rf & 1) {
293
+ const _r8 = i0.ɵɵgetCurrentView();
294
+ i0.ɵɵelementStart(0, "mj-dialog", 40);
295
+ i0.ɵɵlistener("Close", function SingleListDetailComponent_Conditional_14_Template_mj_dialog_Close_0_listener() { i0.ɵɵrestoreView(_r8); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.closeAddRecordsDialog()); });
296
+ i0.ɵɵelementStart(1, "div", 41);
297
+ i0.ɵɵconditionalCreate(2, SingleListDetailComponent_Conditional_14_Conditional_2_Template, 3, 1, "div", 32)(3, SingleListDetailComponent_Conditional_14_Conditional_3_Template, 11, 3);
268
298
  i0.ɵɵelementEnd();
269
- i0.ɵɵelementStart(4, "kendo-dialog-actions")(5, "button", 35);
270
- i0.ɵɵlistener("click", function SingleListDetailComponent_Conditional_11_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.confirmAddRecords()); });
299
+ i0.ɵɵelementStart(4, "mj-dialog-actions")(5, "button", 42);
300
+ i0.ɵɵlistener("click", function SingleListDetailComponent_Conditional_14_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r8); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.confirmAddRecords()); });
271
301
  i0.ɵɵtext(6);
272
302
  i0.ɵɵelementEnd();
273
- i0.ɵɵelementStart(7, "button", 28);
274
- i0.ɵɵlistener("click", function SingleListDetailComponent_Conditional_11_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeAddRecordsDialog()); });
303
+ i0.ɵɵelementStart(7, "button", 35);
304
+ i0.ɵɵlistener("click", function SingleListDetailComponent_Conditional_14_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r8); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.closeAddRecordsDialog()); });
275
305
  i0.ɵɵtext(8, " Cancel ");
276
306
  i0.ɵɵelementEnd()()();
277
307
  } if (rf & 2) {
278
- const ctx_r1 = i0.ɵɵnextContext();
279
- i0.ɵɵproperty("title", "Add " + ((ctx_r1.listRecord == null ? null : ctx_r1.listRecord.Entity) || "Records") + " to List")("minWidth", 500)("width", 700)("height", 650);
308
+ const ctx_r2 = i0.ɵɵnextContext();
309
+ i0.ɵɵproperty("Visible", true)("Title", "Add " + ((ctx_r2.listRecord == null ? null : ctx_r2.listRecord.Entity) || "Records") + " to List")("MinWidth", 500)("Width", 700)("Height", 650);
280
310
  i0.ɵɵadvance(2);
281
- i0.ɵɵconditional(ctx_r1.addDialogSaving ? 2 : 3);
311
+ i0.ɵɵconditional(ctx_r2.addDialogSaving ? 2 : 3);
282
312
  i0.ɵɵadvance(3);
283
- i0.ɵɵproperty("disabled", ctx_r1.addDialogSaving || ctx_r1.selectedAddableRecords.length === 0);
313
+ i0.ɵɵproperty("disabled", ctx_r2.addDialogSaving || ctx_r2.selectedAddableRecords.length === 0);
284
314
  i0.ɵɵadvance();
285
- i0.ɵɵtextInterpolate2(" Add ", ctx_r1.selectedAddableRecords.length > 0 ? ctx_r1.selectedAddableRecords.length : "", " Record", ctx_r1.selectedAddableRecords.length !== 1 ? "s" : "", " ");
315
+ i0.ɵɵtextInterpolate2(" Add ", ctx_r2.selectedAddableRecords.length > 0 ? ctx_r2.selectedAddableRecords.length : "", " Record", ctx_r2.selectedAddableRecords.length !== 1 ? "s" : "", " ");
286
316
  i0.ɵɵadvance();
287
- i0.ɵɵproperty("disabled", ctx_r1.addDialogSaving);
317
+ i0.ɵɵproperty("disabled", ctx_r2.addDialogSaving);
288
318
  } }
289
- function SingleListDetailComponent_Conditional_12_Conditional_2_Template(rf, ctx) { if (rf & 1) {
290
- i0.ɵɵelementStart(0, "div", 25);
291
- i0.ɵɵelement(1, "mj-loading", 61);
319
+ function SingleListDetailComponent_Conditional_15_Conditional_2_Template(rf, ctx) { if (rf & 1) {
320
+ i0.ɵɵelementStart(0, "div", 32);
321
+ i0.ɵɵelement(1, "mj-loading", 68);
292
322
  i0.ɵɵelementEnd();
293
323
  } }
294
- function SingleListDetailComponent_Conditional_12_Conditional_3_Template(rf, ctx) { if (rf & 1) {
295
- i0.ɵɵelementStart(0, "div", 25);
296
- i0.ɵɵelement(1, "mj-loading", 36)(2, "kendo-progressbar", 30);
324
+ function SingleListDetailComponent_Conditional_15_Conditional_3_Template(rf, ctx) { if (rf & 1) {
325
+ i0.ɵɵelementStart(0, "div", 32);
326
+ i0.ɵɵelement(1, "mj-loading", 43)(2, "mj-progress-bar", 37);
297
327
  i0.ɵɵelementEnd();
298
328
  } if (rf & 2) {
299
- const ctx_r1 = i0.ɵɵnextContext(2);
329
+ const ctx_r2 = i0.ɵɵnextContext(2);
300
330
  i0.ɵɵadvance(2);
301
- i0.ɵɵproperty("min", 0)("max", ctx_r1.addFromViewTotal)("value", ctx_r1.addFromViewProgress)("label", false);
331
+ i0.ɵɵproperty("Value", ctx_r2.addFromViewProgressPercent);
302
332
  } }
303
- function SingleListDetailComponent_Conditional_12_Conditional_4_Template(rf, ctx) { if (rf & 1) {
304
- i0.ɵɵelementStart(0, "div", 25);
305
- i0.ɵɵelement(1, "mj-loading", 62);
333
+ function SingleListDetailComponent_Conditional_15_Conditional_4_Template(rf, ctx) { if (rf & 1) {
334
+ i0.ɵɵelementStart(0, "div", 32);
335
+ i0.ɵɵelement(1, "mj-loading", 69);
306
336
  i0.ɵɵelementEnd();
307
337
  } }
308
- function SingleListDetailComponent_Conditional_12_Conditional_5_Conditional_3_Template(rf, ctx) { if (rf & 1) {
309
- i0.ɵɵelementStart(0, "div", 43);
310
- i0.ɵɵelement(1, "span", 65);
338
+ function SingleListDetailComponent_Conditional_15_Conditional_5_Conditional_3_Template(rf, ctx) { if (rf & 1) {
339
+ i0.ɵɵelementStart(0, "div", 51);
340
+ i0.ɵɵelement(1, "span", 72);
311
341
  i0.ɵɵelementStart(2, "p");
312
342
  i0.ɵɵtext(3, "No saved views found for this entity");
313
343
  i0.ɵɵelementEnd()();
314
344
  } }
315
- function SingleListDetailComponent_Conditional_12_Conditional_5_Conditional_4_For_1_Template(rf, ctx) { if (rf & 1) {
316
- const _r13 = i0.ɵɵgetCurrentView();
317
- i0.ɵɵelementStart(0, "div", 67);
318
- i0.ɵɵlistener("click", function SingleListDetailComponent_Conditional_12_Conditional_5_Conditional_4_For_1_Template_div_click_0_listener() { const view_r14 = i0.ɵɵrestoreView(_r13).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.toggleViewSelection(view_r14)); });
319
- i0.ɵɵelementStart(1, "input", 59);
320
- i0.ɵɵlistener("click", function SingleListDetailComponent_Conditional_12_Conditional_5_Conditional_4_For_1_Template_input_click_1_listener($event) { i0.ɵɵrestoreView(_r13); return i0.ɵɵresetView($event.stopPropagation()); })("change", function SingleListDetailComponent_Conditional_12_Conditional_5_Conditional_4_For_1_Template_input_change_1_listener() { const view_r14 = i0.ɵɵrestoreView(_r13).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.toggleViewSelection(view_r14)); });
321
- i0.ɵɵelementEnd();
322
- i0.ɵɵelement(2, "span", 68);
323
- i0.ɵɵelementStart(3, "span", 69);
345
+ function SingleListDetailComponent_Conditional_15_Conditional_5_Conditional_4_For_1_Template(rf, ctx) { if (rf & 1) {
346
+ const _r15 = i0.ɵɵgetCurrentView();
347
+ i0.ɵɵelementStart(0, "div", 74);
348
+ i0.ɵɵlistener("click", function SingleListDetailComponent_Conditional_15_Conditional_5_Conditional_4_For_1_Template_div_click_0_listener() { const view_r16 = i0.ɵɵrestoreView(_r15).$implicit; const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.toggleViewSelection(view_r16)); });
349
+ i0.ɵɵelementStart(1, "input", 66);
350
+ i0.ɵɵlistener("click", function SingleListDetailComponent_Conditional_15_Conditional_5_Conditional_4_For_1_Template_input_click_1_listener($event) { i0.ɵɵrestoreView(_r15); return i0.ɵɵresetView($event.stopPropagation()); })("change", function SingleListDetailComponent_Conditional_15_Conditional_5_Conditional_4_For_1_Template_input_change_1_listener() { const view_r16 = i0.ɵɵrestoreView(_r15).$implicit; const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.toggleViewSelection(view_r16)); });
351
+ i0.ɵɵelementEnd();
352
+ i0.ɵɵelement(2, "span", 75);
353
+ i0.ɵɵelementStart(3, "span", 76);
324
354
  i0.ɵɵtext(4);
325
355
  i0.ɵɵelementEnd()();
326
356
  } if (rf & 2) {
327
- const view_r14 = ctx.$implicit;
328
- const ctx_r1 = i0.ɵɵnextContext(4);
329
- i0.ɵɵclassProp("selected", ctx_r1.isViewSelected(view_r14));
357
+ const view_r16 = ctx.$implicit;
358
+ const ctx_r2 = i0.ɵɵnextContext(4);
359
+ i0.ɵɵclassProp("selected", ctx_r2.isViewSelected(view_r16));
330
360
  i0.ɵɵadvance();
331
- i0.ɵɵproperty("checked", ctx_r1.isViewSelected(view_r14));
361
+ i0.ɵɵproperty("checked", ctx_r2.isViewSelected(view_r16));
332
362
  i0.ɵɵadvance(3);
333
- i0.ɵɵtextInterpolate(view_r14.Name);
363
+ i0.ɵɵtextInterpolate(view_r16.Name);
334
364
  } }
335
- function SingleListDetailComponent_Conditional_12_Conditional_5_Conditional_4_Template(rf, ctx) { if (rf & 1) {
336
- i0.ɵɵrepeaterCreate(0, SingleListDetailComponent_Conditional_12_Conditional_5_Conditional_4_For_1_Template, 5, 4, "div", 66, _forTrack0);
365
+ function SingleListDetailComponent_Conditional_15_Conditional_5_Conditional_4_Template(rf, ctx) { if (rf & 1) {
366
+ i0.ɵɵrepeaterCreate(0, SingleListDetailComponent_Conditional_15_Conditional_5_Conditional_4_For_1_Template, 5, 4, "div", 73, _forTrack1);
337
367
  } if (rf & 2) {
338
- const ctx_r1 = i0.ɵɵnextContext(3);
339
- i0.ɵɵrepeater(ctx_r1.userViews);
368
+ const ctx_r2 = i0.ɵɵnextContext(3);
369
+ i0.ɵɵrepeater(ctx_r2.userViews);
340
370
  } }
341
- function SingleListDetailComponent_Conditional_12_Conditional_5_Template(rf, ctx) { if (rf & 1) {
342
- i0.ɵɵelementStart(0, "p", 63);
371
+ function SingleListDetailComponent_Conditional_15_Conditional_5_Template(rf, ctx) { if (rf & 1) {
372
+ i0.ɵɵelementStart(0, "p", 70);
343
373
  i0.ɵɵtext(1, "Select views to add their records to this list:");
344
374
  i0.ɵɵelementEnd();
345
- i0.ɵɵelementStart(2, "div", 64);
346
- i0.ɵɵconditionalCreate(3, SingleListDetailComponent_Conditional_12_Conditional_5_Conditional_3_Template, 4, 0, "div", 43)(4, SingleListDetailComponent_Conditional_12_Conditional_5_Conditional_4_Template, 2, 0);
375
+ i0.ɵɵelementStart(2, "div", 71);
376
+ i0.ɵɵconditionalCreate(3, SingleListDetailComponent_Conditional_15_Conditional_5_Conditional_3_Template, 4, 0, "div", 51)(4, SingleListDetailComponent_Conditional_15_Conditional_5_Conditional_4_Template, 2, 0);
347
377
  i0.ɵɵelementEnd();
348
378
  } if (rf & 2) {
349
- const ctx_r1 = i0.ɵɵnextContext(2);
379
+ const ctx_r2 = i0.ɵɵnextContext(2);
350
380
  i0.ɵɵadvance(3);
351
- i0.ɵɵconditional(!ctx_r1.userViews || ctx_r1.userViews.length === 0 ? 3 : 4);
381
+ i0.ɵɵconditional(!ctx_r2.userViews || ctx_r2.userViews.length === 0 ? 3 : 4);
352
382
  } }
353
- function SingleListDetailComponent_Conditional_12_Template(rf, ctx) { if (rf & 1) {
354
- const _r12 = i0.ɵɵgetCurrentView();
355
- i0.ɵɵelementStart(0, "kendo-dialog", 60);
356
- i0.ɵɵlistener("close", function SingleListDetailComponent_Conditional_12_Template_kendo_dialog_close_0_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeAddFromViewDialog()); });
357
- i0.ɵɵelementStart(1, "div", 24);
358
- i0.ɵɵconditionalCreate(2, SingleListDetailComponent_Conditional_12_Conditional_2_Template, 2, 0, "div", 25)(3, SingleListDetailComponent_Conditional_12_Conditional_3_Template, 3, 4, "div", 25)(4, SingleListDetailComponent_Conditional_12_Conditional_4_Template, 2, 0, "div", 25)(5, SingleListDetailComponent_Conditional_12_Conditional_5_Template, 5, 1);
359
- i0.ɵɵelementEnd();
360
- i0.ɵɵelementStart(6, "kendo-dialog-actions")(7, "button", 35);
361
- i0.ɵɵlistener("click", function SingleListDetailComponent_Conditional_12_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.confirmAddFromView()); });
383
+ function SingleListDetailComponent_Conditional_15_Template(rf, ctx) { if (rf & 1) {
384
+ const _r14 = i0.ɵɵgetCurrentView();
385
+ i0.ɵɵelementStart(0, "mj-dialog", 67);
386
+ i0.ɵɵlistener("Close", function SingleListDetailComponent_Conditional_15_Template_mj_dialog_Close_0_listener() { i0.ɵɵrestoreView(_r14); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.closeAddFromViewDialog()); });
387
+ i0.ɵɵelementStart(1, "div", 31);
388
+ i0.ɵɵconditionalCreate(2, SingleListDetailComponent_Conditional_15_Conditional_2_Template, 2, 0, "div", 32)(3, SingleListDetailComponent_Conditional_15_Conditional_3_Template, 3, 1, "div", 32)(4, SingleListDetailComponent_Conditional_15_Conditional_4_Template, 2, 0, "div", 32)(5, SingleListDetailComponent_Conditional_15_Conditional_5_Template, 5, 1);
389
+ i0.ɵɵelementEnd();
390
+ i0.ɵɵelementStart(6, "mj-dialog-actions")(7, "button", 42);
391
+ i0.ɵɵlistener("click", function SingleListDetailComponent_Conditional_15_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r14); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.confirmAddFromView()); });
362
392
  i0.ɵɵtext(8);
363
393
  i0.ɵɵelementEnd();
364
- i0.ɵɵelementStart(9, "button", 28);
365
- i0.ɵɵlistener("click", function SingleListDetailComponent_Conditional_12_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeAddFromViewDialog()); });
394
+ i0.ɵɵelementStart(9, "button", 35);
395
+ i0.ɵɵlistener("click", function SingleListDetailComponent_Conditional_15_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r14); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.closeAddFromViewDialog()); });
366
396
  i0.ɵɵtext(10, " Cancel ");
367
397
  i0.ɵɵelementEnd()()();
368
398
  } if (rf & 2) {
369
- const ctx_r1 = i0.ɵɵnextContext();
370
- i0.ɵɵproperty("minWidth", 400)("width", 600)("height", 500);
399
+ const ctx_r2 = i0.ɵɵnextContext();
400
+ i0.ɵɵproperty("Visible", true)("MinWidth", 400)("Width", 600)("Height", 500);
371
401
  i0.ɵɵadvance(2);
372
- i0.ɵɵconditional(ctx_r1.showAddFromViewLoader && ctx_r1.fetchingRecordsToSave ? 2 : ctx_r1.showAddFromViewLoader && ctx_r1.addFromViewTotal > 0 ? 3 : ctx_r1.showAddFromViewLoader ? 4 : 5);
402
+ i0.ɵɵconditional(ctx_r2.showAddFromViewLoader && ctx_r2.fetchingRecordsToSave ? 2 : ctx_r2.showAddFromViewLoader && ctx_r2.addFromViewTotal > 0 ? 3 : ctx_r2.showAddFromViewLoader ? 4 : 5);
373
403
  i0.ɵɵadvance(5);
374
- i0.ɵɵproperty("disabled", ctx_r1.showAddFromViewLoader || ctx_r1.userViewsToAdd.length === 0);
404
+ i0.ɵɵproperty("disabled", ctx_r2.showAddFromViewLoader || ctx_r2.userViewsToAdd.length === 0);
375
405
  i0.ɵɵadvance();
376
- i0.ɵɵtextInterpolate2(" Add from ", ctx_r1.userViewsToAdd.length, " View", ctx_r1.userViewsToAdd.length !== 1 ? "s" : "", " ");
406
+ i0.ɵɵtextInterpolate2(" Add from ", ctx_r2.userViewsToAdd.length, " View", ctx_r2.userViewsToAdd.length !== 1 ? "s" : "", " ");
377
407
  i0.ɵɵadvance();
378
- i0.ɵɵproperty("disabled", ctx_r1.showAddFromViewLoader);
408
+ i0.ɵɵproperty("disabled", ctx_r2.showAddFromViewLoader);
379
409
  } }
380
410
  export class SingleListDetailComponent {
381
411
  sharedService;
382
412
  cdr;
413
+ elementRef;
383
414
  ListID = "";
384
415
  listDetailGrid;
385
416
  // List record
@@ -421,6 +452,8 @@ export class SingleListDetailComponent {
421
452
  addFromViewProgress = 0;
422
453
  addFromViewTotal = 0;
423
454
  fetchingRecordsToSave = false;
455
+ // Dropdown button toggle state
456
+ showAddDropdown = false;
424
457
  // Dropdown menu options
425
458
  addOptions = [
426
459
  {
@@ -436,9 +469,18 @@ export class SingleListDetailComponent {
436
469
  Action: () => this.openAddFromViewDialog()
437
470
  }
438
471
  ];
439
- constructor(sharedService, cdr) {
472
+ onDocumentClick(event) {
473
+ if (this.showAddDropdown) {
474
+ const target = event.target;
475
+ if (!this.elementRef.nativeElement.querySelector('.add-dropdown-wrapper')?.contains(target)) {
476
+ this.showAddDropdown = false;
477
+ }
478
+ }
479
+ }
480
+ constructor(sharedService, cdr, elementRef) {
440
481
  this.sharedService = sharedService;
441
482
  this.cdr = cdr;
483
+ this.elementRef = elementRef;
442
484
  // Debounce search input
443
485
  this.searchSubject
444
486
  .pipe(debounceTime(300))
@@ -497,6 +539,18 @@ export class SingleListDetailComponent {
497
539
  // ==========================================
498
540
  // Toolbar Actions
499
541
  // ==========================================
542
+ // ==========================================
543
+ // Progress Percentage Getters
544
+ // ==========================================
545
+ get removeProgressPercent() {
546
+ return this.removeTotal > 0 ? Math.round((this.removeProgress / this.removeTotal) * 100) : 0;
547
+ }
548
+ get addProgressPercent() {
549
+ return this.addTotal > 0 ? Math.round((this.addProgress / this.addTotal) * 100) : 0;
550
+ }
551
+ get addFromViewProgressPercent() {
552
+ return this.addFromViewTotal > 0 ? Math.round((this.addFromViewProgress / this.addFromViewTotal) * 100) : 0;
553
+ }
500
554
  onRefreshClick() {
501
555
  this.refreshGrid();
502
556
  }
@@ -506,7 +560,11 @@ export class SingleListDetailComponent {
506
560
  this.listDetailGrid.export();
507
561
  }
508
562
  }
563
+ toggleAddDropdown() {
564
+ this.showAddDropdown = !this.showAddDropdown;
565
+ }
509
566
  onDropdownItemClick(item) {
567
+ this.showAddDropdown = false;
510
568
  if (item.Action) {
511
569
  item.Action();
512
570
  }
@@ -622,6 +680,10 @@ export class SingleListDetailComponent {
622
680
  this.existingListDetailIds = new Set(result.Results.map(r => NormalizeUUID(r.RecordID)));
623
681
  }
624
682
  }
683
+ onAddRecordsSearchInputEvent(event) {
684
+ const value = event.target.value;
685
+ this.onAddRecordsSearchChange(value);
686
+ }
625
687
  onAddRecordsSearchChange(value) {
626
688
  this.addRecordsSearchFilter = value;
627
689
  this.searchSubject.next(value);
@@ -841,55 +903,63 @@ export class SingleListDetailComponent {
841
903
  this.showAddFromViewLoader = false;
842
904
  }
843
905
  }
844
- static ɵfac = function SingleListDetailComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SingleListDetailComponent)(i0.ɵɵdirectiveInject(i1.SharedService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
906
+ static ɵfac = function SingleListDetailComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SingleListDetailComponent)(i0.ɵɵdirectiveInject(i1.SharedService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i0.ElementRef)); };
845
907
  static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SingleListDetailComponent, selectors: [["mj-list-detail"]], viewQuery: function SingleListDetailComponent_Query(rf, ctx) { if (rf & 1) {
846
908
  i0.ɵɵviewQuery(_c0, 5);
847
909
  } if (rf & 2) {
848
910
  let _t;
849
911
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.listDetailGrid = _t.first);
850
- } }, inputs: { ListID: "ListID" }, standalone: false, decls: 13, vars: 8, consts: [["listDetailGrid", ""], [1, "list-detail-container"], [1, "list-header"], ["textField", "Text", "themeColor", "info", 1, "add-btn", 3, "itemClick", "data"], [1, "fa-solid", "fa-plus"], [1, "custom-toolbar"], [1, "loading-container"], [1, "grid-container"], ["title", "Remove from List", 3, "minWidth", "width"], [3, "title", "minWidth", "width", "height"], ["title", "Add Records from Views", 3, "minWidth", "width", "height"], [1, "toolbar-left"], [1, "row-count"], [1, "selection-count"], [1, "toolbar-right"], ["kendoButton", "", "fillMode", "flat", "themeColor", "error", 1, "toolbar-button", "remove-btn"], ["kendoButton", "", "fillMode", "flat", 1, "toolbar-button", 3, "click"], [1, "fa-solid", "fa-rotate"], [1, "fa-solid", "fa-file-export"], ["kendoButton", "", "fillMode", "flat", "themeColor", "error", 1, "toolbar-button", "remove-btn", 3, "click"], [1, "fa-solid", "fa-trash"], ["text", "Loading list...", "size", "medium"], [3, "rowClicked", "rowDoubleClicked", "selectionChange", "dataLoaded", "listId", "listEntity", "autoNavigate", "height", "showToolbar", "toolbarConfig", "selectionMode"], ["title", "Remove from List", 3, "close", "minWidth", "width"], [1, "dialog-content"], [1, "dialog-loading"], [1, "dialog-message"], ["kendoButton", "", "themeColor", "error", 3, "click", "disabled"], ["kendoButton", "", "fillMode", "outline", 3, "click", "disabled"], ["text", "Removing records...", "size", "small"], [1, "progress-bar", 3, "min", "max", "value", "label"], [1, "fa-solid", "fa-triangle-exclamation", "warning-icon"], [1, "dialog-note"], [3, "close", "title", "minWidth", "width", "height"], [1, "dialog-content", "add-records-dialog"], ["kendoButton", "", "themeColor", "info", 3, "click", "disabled"], ["text", "Adding records to list...", "size", "small"], [1, "search-section"], [1, "search-input", 3, "valueChange", "placeholder", "clearButton", "value"], ["kendoTextBoxPrefixTemplate", ""], [1, "search-hint"], [1, "records-list"], [1, "list-loading"], [1, "empty-results"], [1, "fa-solid", "fa-search", "search-icon"], ["size", "small", 3, "showText"], [1, "fa-solid", "fa-search", "empty-icon"], [1, "fa-solid", "fa-list", "empty-icon"], [1, "selection-controls"], ["kendoButton", "", "fillMode", "flat", "size", "small", 3, "click"], [1, "selection-info"], [1, "records-scroll"], [1, "record-item", 3, "in-list", "selected"], [1, "record-item", 3, "click"], [1, "record-checkbox"], ["title", "Already in list", 1, "fa-solid", "fa-check", "in-list-icon"], ["type", "checkbox", 3, "checked"], [1, "record-name"], [1, "in-list-badge"], ["type", "checkbox", 3, "click", "change", "checked"], ["title", "Add Records from Views", 3, "close", "minWidth", "width", "height"], ["text", "Loading records from views...", "size", "small"], ["text", "Loading views...", "size", "small"], [1, "dialog-instruction"], [1, "views-list"], [1, "fa-solid", "fa-folder-open", "empty-icon"], [1, "view-item", 3, "selected"], [1, "view-item", 3, "click"], [1, "fa-solid", "fa-table-list", "view-icon"], [1, "view-name"]], template: function SingleListDetailComponent_Template(rf, ctx) { if (rf & 1) {
912
+ } }, hostBindings: function SingleListDetailComponent_HostBindings(rf, ctx) { if (rf & 1) {
913
+ i0.ɵɵlistener("click", function SingleListDetailComponent_click_HostBindingHandler($event) { return ctx.onDocumentClick($event); }, i0.ɵɵresolveDocument);
914
+ } }, inputs: { ListID: "ListID" }, standalone: false, decls: 16, vars: 8, consts: [["listDetailGrid", ""], [1, "list-detail-container"], [1, "list-header"], [1, "add-dropdown-wrapper"], ["mjButton", "", "variant", "primary", 1, "add-btn", 3, "click"], [1, "fa-solid", "fa-plus"], [1, "fa-solid", "fa-chevron-down", "add-dropdown-arrow"], [1, "add-dropdown-panel"], [1, "custom-toolbar"], [1, "loading-container"], [1, "grid-container"], ["Title", "Remove from List", 3, "Visible", "MinWidth", "Width"], [3, "Visible", "Title", "MinWidth", "Width", "Height"], ["Title", "Add Records from Views", 3, "Visible", "MinWidth", "Width", "Height"], [1, "add-dropdown-item"], [1, "add-dropdown-item", 3, "click"], [1, "add-dropdown-item-text"], [1, "add-dropdown-item-desc"], [1, "toolbar-left"], [1, "row-count"], [1, "selection-count"], [1, "toolbar-right"], ["mjButton", "", "variant", "flat", 1, "toolbar-button", "remove-btn"], ["mjButton", "", "variant", "flat", 1, "toolbar-button", 3, "click"], [1, "fa-solid", "fa-rotate"], [1, "fa-solid", "fa-file-export"], ["mjButton", "", "variant", "flat", 1, "toolbar-button", "remove-btn", 3, "click"], [1, "fa-solid", "fa-trash"], ["text", "Loading list...", "size", "medium"], [3, "rowClicked", "rowDoubleClicked", "selectionChange", "dataLoaded", "listId", "listEntity", "autoNavigate", "height", "showToolbar", "toolbarConfig", "selectionMode"], ["Title", "Remove from List", 3, "Close", "Visible", "MinWidth", "Width"], [1, "dialog-content"], [1, "dialog-loading"], [1, "dialog-message"], ["mjButton", "", "variant", "danger", 3, "click", "disabled"], ["mjButton", "", "variant", "outline", 3, "click", "disabled"], ["text", "Removing records...", "size", "small"], [1, "progress-bar", 3, "Value"], [1, "fa-solid", "fa-triangle-exclamation", "warning-icon"], [1, "dialog-note"], [3, "Close", "Visible", "Title", "MinWidth", "Width", "Height"], [1, "dialog-content", "add-records-dialog"], ["mjButton", "", "variant", "primary", 3, "click", "disabled"], ["text", "Adding records to list...", "size", "small"], [1, "search-section"], [1, "search-input-wrapper"], [1, "fa-solid", "fa-search", "search-icon"], ["type", "text", 1, "mj-input", "search-input", 3, "input", "placeholder", "value"], [1, "search-hint"], [1, "records-list"], [1, "list-loading"], [1, "empty-results"], ["size", "small", 3, "showText"], [1, "fa-solid", "fa-search", "empty-icon"], [1, "fa-solid", "fa-list", "empty-icon"], [1, "selection-controls"], ["mjButton", "", "variant", "flat", "size", "sm", 3, "click"], [1, "selection-info"], [1, "records-scroll"], [1, "record-item", 3, "in-list", "selected"], [1, "record-item", 3, "click"], [1, "record-checkbox"], ["title", "Already in list", 1, "fa-solid", "fa-check", "in-list-icon"], ["type", "checkbox", 3, "checked"], [1, "record-name"], [1, "in-list-badge"], ["type", "checkbox", 3, "click", "change", "checked"], ["Title", "Add Records from Views", 3, "Close", "Visible", "MinWidth", "Width", "Height"], ["text", "Loading records from views...", "size", "small"], ["text", "Loading views...", "size", "small"], [1, "dialog-instruction"], [1, "views-list"], [1, "fa-solid", "fa-folder-open", "empty-icon"], [1, "view-item", 3, "selected"], [1, "view-item", 3, "click"], [1, "fa-solid", "fa-table-list", "view-icon"], [1, "view-name"]], template: function SingleListDetailComponent_Template(rf, ctx) { if (rf & 1) {
851
915
  i0.ɵɵelementStart(0, "div", 1)(1, "div", 2)(2, "h1");
852
916
  i0.ɵɵtext(3);
853
917
  i0.ɵɵelementEnd();
854
- i0.ɵɵelementStart(4, "kendo-dropdownbutton", 3);
855
- i0.ɵɵlistener("itemClick", function SingleListDetailComponent_Template_kendo_dropdownbutton_itemClick_4_listener($event) { return ctx.onDropdownItemClick($event); });
856
- i0.ɵɵelement(5, "span", 4);
857
- i0.ɵɵtext(6, " Add to List ");
918
+ i0.ɵɵelementStart(4, "div", 3)(5, "button", 4);
919
+ i0.ɵɵlistener("click", function SingleListDetailComponent_Template_button_click_5_listener() { return ctx.toggleAddDropdown(); });
920
+ i0.ɵɵelement(6, "span", 5);
921
+ i0.ɵɵtext(7, " Add to List ");
922
+ i0.ɵɵelement(8, "span", 6);
923
+ i0.ɵɵelementEnd();
924
+ i0.ɵɵconditionalCreate(9, SingleListDetailComponent_Conditional_9_Template, 3, 0, "div", 7);
858
925
  i0.ɵɵelementEnd()();
859
- i0.ɵɵconditionalCreate(7, SingleListDetailComponent_Conditional_7_Template, 13, 4, "div", 5);
860
- i0.ɵɵconditionalCreate(8, SingleListDetailComponent_Conditional_8_Template, 2, 0, "div", 6);
861
- i0.ɵɵconditionalCreate(9, SingleListDetailComponent_Conditional_9_Template, 3, 7, "div", 7);
926
+ i0.ɵɵconditionalCreate(10, SingleListDetailComponent_Conditional_10_Template, 13, 4, "div", 8);
927
+ i0.ɵɵconditionalCreate(11, SingleListDetailComponent_Conditional_11_Template, 2, 0, "div", 9);
928
+ i0.ɵɵconditionalCreate(12, SingleListDetailComponent_Conditional_12_Template, 3, 7, "div", 10);
862
929
  i0.ɵɵelementEnd();
863
- i0.ɵɵconditionalCreate(10, SingleListDetailComponent_Conditional_10_Template, 9, 5, "kendo-dialog", 8);
864
- i0.ɵɵconditionalCreate(11, SingleListDetailComponent_Conditional_11_Template, 9, 9, "kendo-dialog", 9);
865
- i0.ɵɵconditionalCreate(12, SingleListDetailComponent_Conditional_12_Template, 11, 8, "kendo-dialog", 10);
930
+ i0.ɵɵconditionalCreate(13, SingleListDetailComponent_Conditional_13_Template, 9, 6, "mj-dialog", 11);
931
+ i0.ɵɵconditionalCreate(14, SingleListDetailComponent_Conditional_14_Template, 9, 10, "mj-dialog", 12);
932
+ i0.ɵɵconditionalCreate(15, SingleListDetailComponent_Conditional_15_Template, 11, 9, "mj-dialog", 13);
866
933
  } if (rf & 2) {
867
934
  i0.ɵɵadvance(3);
868
935
  i0.ɵɵtextInterpolate(ctx.listRecord ? ctx.listRecord.Name : "List");
936
+ i0.ɵɵadvance(6);
937
+ i0.ɵɵconditional(ctx.showAddDropdown ? 9 : -1);
869
938
  i0.ɵɵadvance();
870
- i0.ɵɵproperty("data", ctx.addOptions);
871
- i0.ɵɵadvance(3);
872
- i0.ɵɵconditional(!ctx.showLoader && ctx.listRecord ? 7 : -1);
939
+ i0.ɵɵconditional(!ctx.showLoader && ctx.listRecord ? 10 : -1);
873
940
  i0.ɵɵadvance();
874
- i0.ɵɵconditional(ctx.showLoader ? 8 : -1);
941
+ i0.ɵɵconditional(ctx.showLoader ? 11 : -1);
875
942
  i0.ɵɵadvance();
876
- i0.ɵɵconditional(!ctx.showLoader && ctx.listRecord ? 9 : -1);
943
+ i0.ɵɵconditional(!ctx.showLoader && ctx.listRecord ? 12 : -1);
877
944
  i0.ɵɵadvance();
878
- i0.ɵɵconditional(ctx.showRemoveDialog ? 10 : -1);
945
+ i0.ɵɵconditional(ctx.showRemoveDialog ? 13 : -1);
879
946
  i0.ɵɵadvance();
880
- i0.ɵɵconditional(ctx.showAddRecordsDialog ? 11 : -1);
947
+ i0.ɵɵconditional(ctx.showAddRecordsDialog ? 14 : -1);
881
948
  i0.ɵɵadvance();
882
- i0.ɵɵconditional(ctx.showAddFromViewDialog ? 12 : -1);
883
- } }, dependencies: [i2.DialogComponent, i2.DialogActionsComponent, i3.ButtonComponent, i3.DropDownButtonComponent, i4.TextBoxComponent, i4.TextBoxPrefixTemplateDirective, i5.ProgressBarComponent, i6.LoadingComponent, i7.ListDetailGridComponent], styles: [".list-detail-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n padding: 20px;\n background: var(--mj-bg-surface-card);\n}\n\n.list-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding-bottom: 16px;\n flex-shrink: 0;\n}\n\n.list-header[_ngcontent-%COMP%] h1[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 24px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n\n\n.custom-toolbar[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 16px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-bottom: none;\n border-radius: 8px 8px 0 0;\n flex-shrink: 0;\n}\n\n.toolbar-left[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.toolbar-right[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.row-count[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.selection-count[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-secondary);\n}\n\n.toolbar-button[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 13px;\n}\n\n.toolbar-button[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n font-size: 14px;\n}\n\n.remove-btn[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n.loading-container[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n flex: 1;\n min-height: 200px;\n}\n\n.grid-container[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 0;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 0 0 8px 8px;\n overflow: hidden;\n}\n\n\n\n.add-btn[_ngcontent-%COMP%] {\n padding: 10px 30px;\n border-radius: 10px;\n color: white;\n background-color: var(--mj-brand-primary);\n font-size: initial;\n cursor: pointer;\n}\n\n.add-btn[_ngcontent-%COMP%]:hover {\n filter: brightness(85%);\n}\n\n .k-dropdown-button .k-button {\n background: var(--mj-brand-primary) !important;\n color: white !important;\n font-size: 16px;\n border: none;\n padding: 8px 25px;\n border-radius: 10px;\n}\n\n .k-dropdown-button .k-button:hover {\n background: var(--mj-brand-primary) !important;\n filter: brightness(85%);\n}\n\n .k-dropdown-button .k-button .k-button-text {\n color: white !important;\n}\n\n .k-dropdown-button .k-button .fa-plus {\n color: white !important;\n}\n\n\n\n\n\n\n.dialog-content[_ngcontent-%COMP%] {\n padding: 8px 0;\n}\n\n.dialog-loading[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 40px 20px;\n gap: 20px;\n}\n\n.dialog-message[_ngcontent-%COMP%] {\n text-align: center;\n padding: 20px;\n}\n\n.warning-icon[_ngcontent-%COMP%] {\n font-size: 48px;\n color: var(--mj-status-warning);\n margin-bottom: 16px;\n display: block;\n}\n\n.dialog-message[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 8px 0;\n font-size: 15px;\n color: var(--mj-text-primary);\n}\n\n.dialog-note[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary) !important;\n font-size: 13px !important;\n}\n\n.progress-bar[_ngcontent-%COMP%] {\n width: 100%;\n max-width: 300px;\n}\n\n\n\n\n\n\n.add-records-dialog[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n.search-section[_ngcontent-%COMP%] {\n padding-bottom: 12px;\n border-bottom: 1px solid var(--mj-border-default);\n margin-bottom: 12px;\n}\n\n.search-input[_ngcontent-%COMP%] {\n width: 100%;\n}\n\n.search-icon[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n padding-left: 8px;\n}\n\n.search-hint[_ngcontent-%COMP%] {\n display: block;\n font-size: 12px;\n color: var(--mj-text-disabled);\n margin-top: 6px;\n}\n\n.records-list[_ngcontent-%COMP%] {\n flex: 1;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n}\n\n.list-loading[_ngcontent-%COMP%] {\n display: flex;\n justify-content: center;\n padding: 40px;\n}\n\n.empty-results[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 40px;\n color: var(--mj-text-disabled);\n}\n\n.empty-icon[_ngcontent-%COMP%] {\n font-size: 32px;\n margin-bottom: 12px;\n color: var(--mj-border-strong);\n}\n\n.empty-results[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n}\n\n.selection-controls[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 0;\n border-bottom: 1px solid var(--mj-border-default);\n margin-bottom: 8px;\n}\n\n.selection-info[_ngcontent-%COMP%] {\n margin-left: auto;\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n.records-scroll[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n max-height: 280px;\n}\n\n.record-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n padding: 10px 12px;\n border-radius: 6px;\n cursor: pointer;\n transition: background-color 0.15s;\n gap: 12px;\n}\n\n.record-item[_ngcontent-%COMP%]:hover:not(.in-list) {\n background: var(--mj-bg-surface-card);\n}\n\n.record-item.selected[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n}\n\n.record-item.in-list[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n cursor: default;\n opacity: 0.7;\n}\n\n.record-checkbox[_ngcontent-%COMP%] {\n width: 20px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.record-checkbox[_ngcontent-%COMP%] input[type=\"checkbox\"][_ngcontent-%COMP%] {\n width: 16px;\n height: 16px;\n cursor: pointer;\n}\n\n.in-list-icon[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n font-size: 14px;\n}\n\n.record-name[_ngcontent-%COMP%] {\n flex: 1;\n font-size: 14px;\n color: var(--mj-text-primary);\n}\n\n.in-list-badge[_ngcontent-%COMP%] {\n font-size: 11px;\n padding: 2px 8px;\n background: color-mix(in srgb, var(--mj-status-success) 10%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n border-radius: 10px;\n font-weight: 500;\n}\n\n\n\n\n\n\n.dialog-instruction[_ngcontent-%COMP%] {\n margin: 0 0 16px 0;\n font-size: 14px;\n color: var(--mj-text-secondary);\n}\n\n.views-list[_ngcontent-%COMP%] {\n max-height: 320px;\n overflow-y: auto;\n}\n\n.view-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n padding: 12px;\n border-radius: 6px;\n cursor: pointer;\n transition: background-color 0.15s;\n gap: 12px;\n}\n\n.view-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n}\n\n.view-item.selected[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n}\n\n.view-item[_ngcontent-%COMP%] input[type=\"checkbox\"][_ngcontent-%COMP%] {\n width: 16px;\n height: 16px;\n cursor: pointer;\n}\n\n.view-icon[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n font-size: 16px;\n}\n\n.view-name[_ngcontent-%COMP%] {\n flex: 1;\n font-size: 14px;\n color: var(--mj-text-primary);\n}"] });
949
+ i0.ɵɵconditional(ctx.showAddFromViewDialog ? 15 : -1);
950
+ } }, dependencies: [i2.MJProgressBarComponent, i3.LoadingComponent, i4.ListDetailGridComponent, i2.MJButtonDirective, i2.MJDialogComponent, i2.MJDialogActionsComponent], styles: [".list-detail-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n padding: 20px;\n background: var(--mj-bg-surface-card);\n}\n\n.list-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding-bottom: 16px;\n flex-shrink: 0;\n}\n\n.list-header[_ngcontent-%COMP%] h1[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 24px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n\n\n.custom-toolbar[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 16px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-bottom: none;\n border-radius: 8px 8px 0 0;\n flex-shrink: 0;\n}\n\n.toolbar-left[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.toolbar-right[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.row-count[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.selection-count[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-secondary);\n}\n\n.toolbar-button[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 13px;\n}\n\n.toolbar-button[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n font-size: 14px;\n}\n\n.remove-btn[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n.loading-container[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n flex: 1;\n min-height: 200px;\n}\n\n.grid-container[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 0;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 0 0 8px 8px;\n overflow: hidden;\n}\n\n\n\n.add-dropdown-wrapper[_ngcontent-%COMP%] {\n position: relative;\n}\n\n.add-btn[_ngcontent-%COMP%] {\n font-size: 16px;\n padding: 8px 25px;\n border-radius: 10px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.add-dropdown-arrow[_ngcontent-%COMP%] {\n font-size: 12px;\n margin-left: 4px;\n}\n\n.add-dropdown-panel[_ngcontent-%COMP%] {\n position: absolute;\n top: 100%;\n right: 0;\n margin-top: 4px;\n min-width: 240px;\n background: var(--mj-bg-surface-elevated);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);\n z-index: 100;\n overflow: hidden;\n}\n\n.add-dropdown-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n padding: 10px 16px;\n cursor: pointer;\n transition: background-color 0.15s;\n}\n\n.add-dropdown-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.add-dropdown-item-text[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.add-dropdown-item-desc[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-secondary);\n margin-top: 2px;\n}\n\n\n\n\n\n\n.dialog-content[_ngcontent-%COMP%] {\n padding: 8px 0;\n}\n\n.dialog-loading[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 40px 20px;\n gap: 20px;\n}\n\n.dialog-message[_ngcontent-%COMP%] {\n text-align: center;\n padding: 20px;\n}\n\n.warning-icon[_ngcontent-%COMP%] {\n font-size: 48px;\n color: var(--mj-status-warning);\n margin-bottom: 16px;\n display: block;\n}\n\n.dialog-message[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 8px 0;\n font-size: 15px;\n color: var(--mj-text-primary);\n}\n\n.dialog-note[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary) !important;\n font-size: 13px !important;\n}\n\n.progress-bar[_ngcontent-%COMP%] {\n width: 100%;\n max-width: 300px;\n}\n\n\n\n\n\n\n.add-records-dialog[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n.search-section[_ngcontent-%COMP%] {\n padding-bottom: 12px;\n border-bottom: 1px solid var(--mj-border-default);\n margin-bottom: 12px;\n}\n\n.search-input-wrapper[_ngcontent-%COMP%] {\n position: relative;\n display: flex;\n align-items: center;\n}\n\n.search-input-wrapper[_ngcontent-%COMP%] .search-icon[_ngcontent-%COMP%] {\n position: absolute;\n left: 10px;\n color: var(--mj-text-disabled);\n font-size: 14px;\n pointer-events: none;\n}\n\n.search-input-wrapper[_ngcontent-%COMP%] .search-input[_ngcontent-%COMP%] {\n width: 100%;\n padding-left: 32px;\n}\n\n.search-hint[_ngcontent-%COMP%] {\n display: block;\n font-size: 12px;\n color: var(--mj-text-disabled);\n margin-top: 6px;\n}\n\n.records-list[_ngcontent-%COMP%] {\n flex: 1;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n}\n\n.list-loading[_ngcontent-%COMP%] {\n display: flex;\n justify-content: center;\n padding: 40px;\n}\n\n.empty-results[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 40px;\n color: var(--mj-text-disabled);\n}\n\n.empty-icon[_ngcontent-%COMP%] {\n font-size: 32px;\n margin-bottom: 12px;\n color: var(--mj-border-strong);\n}\n\n.empty-results[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n}\n\n.selection-controls[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 0;\n border-bottom: 1px solid var(--mj-border-default);\n margin-bottom: 8px;\n}\n\n.selection-info[_ngcontent-%COMP%] {\n margin-left: auto;\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n.records-scroll[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n max-height: 280px;\n}\n\n.record-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n padding: 10px 12px;\n border-radius: 6px;\n cursor: pointer;\n transition: background-color 0.15s;\n gap: 12px;\n}\n\n.record-item[_ngcontent-%COMP%]:hover:not(.in-list) {\n background: var(--mj-bg-surface-card);\n}\n\n.record-item.selected[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n}\n\n.record-item.in-list[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n cursor: default;\n opacity: 0.7;\n}\n\n.record-checkbox[_ngcontent-%COMP%] {\n width: 20px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.record-checkbox[_ngcontent-%COMP%] input[type=\"checkbox\"][_ngcontent-%COMP%] {\n width: 16px;\n height: 16px;\n cursor: pointer;\n}\n\n.in-list-icon[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n font-size: 14px;\n}\n\n.record-name[_ngcontent-%COMP%] {\n flex: 1;\n font-size: 14px;\n color: var(--mj-text-primary);\n}\n\n.in-list-badge[_ngcontent-%COMP%] {\n font-size: 11px;\n padding: 2px 8px;\n background: color-mix(in srgb, var(--mj-status-success) 10%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n border-radius: 10px;\n font-weight: 500;\n}\n\n\n\n\n\n\n.dialog-instruction[_ngcontent-%COMP%] {\n margin: 0 0 16px 0;\n font-size: 14px;\n color: var(--mj-text-secondary);\n}\n\n.views-list[_ngcontent-%COMP%] {\n max-height: 320px;\n overflow-y: auto;\n}\n\n.view-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n padding: 12px;\n border-radius: 6px;\n cursor: pointer;\n transition: background-color 0.15s;\n gap: 12px;\n}\n\n.view-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n}\n\n.view-item.selected[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n}\n\n.view-item[_ngcontent-%COMP%] input[type=\"checkbox\"][_ngcontent-%COMP%] {\n width: 16px;\n height: 16px;\n cursor: pointer;\n}\n\n.view-icon[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n font-size: 16px;\n}\n\n.view-name[_ngcontent-%COMP%] {\n flex: 1;\n font-size: 14px;\n color: var(--mj-text-primary);\n}"] });
884
951
  }
885
952
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SingleListDetailComponent, [{
886
953
  type: Component,
887
- args: [{ standalone: false, selector: 'mj-list-detail', template: "<div class=\"list-detail-container\">\n <!-- Header with title and Add button -->\n <div class=\"list-header\">\n <h1>{{ listRecord ? listRecord.Name : \"List\" }}</h1>\n <kendo-dropdownbutton\n class=\"add-btn\"\n (itemClick)=\"onDropdownItemClick($event)\"\n [data]=\"addOptions\"\n textField=\"Text\"\n themeColor=\"info\">\n <span class=\"fa-solid fa-plus\"></span>\n Add to List\n </kendo-dropdownbutton>\n </div>\n\n <!-- Custom Toolbar -->\n @if (!showLoader && listRecord) {\n <div class=\"custom-toolbar\">\n <div class=\"toolbar-left\">\n <span class=\"row-count\">{{ rowCount }} row{{ rowCount !== 1 ? 's' : '' }}</span>\n @if (selectedKeys.length > 0) {\n <span class=\"selection-count\">({{ selectedKeys.length }} selected)</span>\n }\n </div>\n <div class=\"toolbar-right\">\n @if (selectedKeys.length > 0) {\n <button kendoButton\n (click)=\"openRemoveDialog()\"\n fillMode=\"flat\"\n themeColor=\"error\"\n class=\"toolbar-button remove-btn\">\n <span class=\"fa-solid fa-trash\"></span>\n Remove from List\n </button>\n }\n <button kendoButton\n (click)=\"onRefreshClick()\"\n fillMode=\"flat\"\n class=\"toolbar-button\">\n <span class=\"fa-solid fa-rotate\"></span>\n Refresh\n </button>\n <button kendoButton\n (click)=\"onExportClick()\"\n fillMode=\"flat\"\n class=\"toolbar-button\">\n <span class=\"fa-solid fa-file-export\"></span>\n Export\n </button>\n </div>\n </div>\n }\n\n <!-- Loading State -->\n @if (showLoader) {\n <div class=\"loading-container\">\n <mj-loading text=\"Loading list...\" size=\"medium\"></mj-loading>\n </div>\n }\n\n <!-- Grid -->\n @if (!showLoader && listRecord) {\n <div class=\"grid-container\">\n <mj-list-detail-grid\n #listDetailGrid\n [listId]=\"ListID\"\n [listEntity]=\"listRecord\"\n [autoNavigate]=\"true\"\n [height]=\"'auto'\"\n [showToolbar]=\"false\"\n [toolbarConfig]=\"gridToolbarConfig\"\n [selectionMode]=\"'checkbox'\"\n (rowClicked)=\"onRowClicked($event)\"\n (rowDoubleClicked)=\"onRowDoubleClicked($event)\"\n (selectionChange)=\"onSelectionChange($event)\"\n (dataLoaded)=\"onDataLoaded($event)\">\n </mj-list-detail-grid>\n </div>\n }\n</div>\n\n<!-- Remove from List Confirmation Dialog -->\n@if (showRemoveDialog) {\n <kendo-dialog\n title=\"Remove from List\"\n (close)=\"closeRemoveDialog()\"\n [minWidth]=\"350\"\n [width]=\"450\">\n <div class=\"dialog-content\">\n @if (isRemoving) {\n <div class=\"dialog-loading\">\n <mj-loading text=\"Removing records...\" size=\"small\"></mj-loading>\n @if (removeTotal > 0) {\n <kendo-progressbar\n [min]=\"0\"\n [max]=\"removeTotal\"\n [value]=\"removeProgress\"\n [label]=\"false\"\n class=\"progress-bar\">\n </kendo-progressbar>\n }\n </div>\n } @else {\n <div class=\"dialog-message\">\n <span class=\"fa-solid fa-triangle-exclamation warning-icon\"></span>\n <p>Are you sure you want to remove <strong>{{ selectedKeys.length }}</strong> record{{ selectedKeys.length !== 1 ? 's' : '' }} from this list?</p>\n <p class=\"dialog-note\">This will not delete the records, only remove them from this list.</p>\n </div>\n }\n </div>\n <kendo-dialog-actions>\n <button kendoButton\n (click)=\"confirmRemoveFromList()\"\n [disabled]=\"isRemoving\"\n themeColor=\"error\">\n Remove\n </button>\n <button kendoButton\n (click)=\"closeRemoveDialog()\"\n [disabled]=\"isRemoving\"\n fillMode=\"outline\">\n Cancel\n </button>\n </kendo-dialog-actions>\n </kendo-dialog>\n}\n\n<!-- Add Records Dialog -->\n@if (showAddRecordsDialog) {\n <kendo-dialog\n [title]=\"'Add ' + (listRecord?.Entity || 'Records') + ' to List'\"\n (close)=\"closeAddRecordsDialog()\"\n [minWidth]=\"500\"\n [width]=\"700\"\n [height]=\"650\">\n <div class=\"dialog-content add-records-dialog\">\n @if (addDialogSaving) {\n <div class=\"dialog-loading\">\n <mj-loading text=\"Adding records to list...\" size=\"small\"></mj-loading>\n @if (addTotal > 0) {\n <kendo-progressbar\n [min]=\"0\"\n [max]=\"addTotal\"\n [value]=\"addProgress\"\n [label]=\"false\"\n class=\"progress-bar\">\n </kendo-progressbar>\n }\n </div>\n } @else {\n <!-- Search Input -->\n <div class=\"search-section\">\n <kendo-textbox\n [placeholder]=\"'Search ' + (listRecord?.Entity || 'records') + '...'\"\n [clearButton]=\"true\"\n (valueChange)=\"onAddRecordsSearchChange($event)\"\n [value]=\"addRecordsSearchFilter\"\n class=\"search-input\">\n <ng-template kendoTextBoxPrefixTemplate>\n <span class=\"fa-solid fa-search search-icon\"></span>\n </ng-template>\n </kendo-textbox>\n <span class=\"search-hint\">Type at least 2 characters to search</span>\n </div>\n <!-- Records List -->\n <div class=\"records-list\">\n @if (addDialogLoading) {\n <div class=\"list-loading\">\n <mj-loading [showText]=\"false\" size=\"small\"></mj-loading>\n </div>\n } @else if (addableRecords.length === 0 && addRecordsSearchFilter.length >= 2) {\n <div class=\"empty-results\">\n <span class=\"fa-solid fa-search empty-icon\"></span>\n <p>No records found matching \"{{ addRecordsSearchFilter }}\"</p>\n </div>\n } @else if (addableRecords.length === 0) {\n <div class=\"empty-results\">\n <span class=\"fa-solid fa-list empty-icon\"></span>\n <p>Search for records to add to this list</p>\n </div>\n } @else {\n <!-- Selection controls -->\n <div class=\"selection-controls\">\n <button kendoButton fillMode=\"flat\" size=\"small\" (click)=\"selectAllAddable()\">Select All</button>\n <button kendoButton fillMode=\"flat\" size=\"small\" (click)=\"deselectAllAddable()\">Deselect All</button>\n <span class=\"selection-info\">{{ selectedAddableRecords.length }} selected</span>\n </div>\n <!-- Records -->\n <div class=\"records-scroll\">\n @for (record of addableRecords; track record.ID) {\n <div class=\"record-item\"\n [class.in-list]=\"record.isInList\"\n [class.selected]=\"record.isSelected\"\n (click)=\"toggleRecordSelection(record)\">\n <div class=\"record-checkbox\">\n @if (record.isInList) {\n <span class=\"fa-solid fa-check in-list-icon\" title=\"Already in list\"></span>\n } @else {\n <input type=\"checkbox\"\n [checked]=\"record.isSelected\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"toggleRecordSelection(record)\">\n }\n </div>\n <div class=\"record-name\">{{ record.Name }}</div>\n @if (record.isInList) {\n <span class=\"in-list-badge\">In List</span>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n <kendo-dialog-actions>\n <button kendoButton\n (click)=\"confirmAddRecords()\"\n [disabled]=\"addDialogSaving || selectedAddableRecords.length === 0\"\n themeColor=\"info\">\n Add {{ selectedAddableRecords.length > 0 ? selectedAddableRecords.length : '' }} Record{{ selectedAddableRecords.length !== 1 ? 's' : '' }}\n </button>\n <button kendoButton\n (click)=\"closeAddRecordsDialog()\"\n [disabled]=\"addDialogSaving\"\n fillMode=\"outline\">\n Cancel\n </button>\n </kendo-dialog-actions>\n </kendo-dialog>\n}\n\n<!-- Add From View Dialog -->\n@if (showAddFromViewDialog) {\n <kendo-dialog\n title=\"Add Records from Views\"\n (close)=\"closeAddFromViewDialog()\"\n [minWidth]=\"400\"\n [width]=\"600\"\n [height]=\"500\">\n <div class=\"dialog-content\">\n @if (showAddFromViewLoader && fetchingRecordsToSave) {\n <div class=\"dialog-loading\">\n <mj-loading text=\"Loading records from views...\" size=\"small\"></mj-loading>\n </div>\n } @else if (showAddFromViewLoader && addFromViewTotal > 0) {\n <div class=\"dialog-loading\">\n <mj-loading text=\"Adding records to list...\" size=\"small\"></mj-loading>\n <kendo-progressbar\n [min]=\"0\"\n [max]=\"addFromViewTotal\"\n [value]=\"addFromViewProgress\"\n [label]=\"false\"\n class=\"progress-bar\">\n </kendo-progressbar>\n </div>\n } @else if (showAddFromViewLoader) {\n <div class=\"dialog-loading\">\n <mj-loading text=\"Loading views...\" size=\"small\"></mj-loading>\n </div>\n } @else {\n <p class=\"dialog-instruction\">Select views to add their records to this list:</p>\n <div class=\"views-list\">\n @if (!userViews || userViews.length === 0) {\n <div class=\"empty-results\">\n <span class=\"fa-solid fa-folder-open empty-icon\"></span>\n <p>No saved views found for this entity</p>\n </div>\n } @else {\n @for (view of userViews; track view.ID) {\n <div class=\"view-item\"\n [class.selected]=\"isViewSelected(view)\"\n (click)=\"toggleViewSelection(view)\">\n <input type=\"checkbox\"\n [checked]=\"isViewSelected(view)\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"toggleViewSelection(view)\">\n <span class=\"fa-solid fa-table-list view-icon\"></span>\n <span class=\"view-name\">{{ view.Name }}</span>\n </div>\n }\n }\n </div>\n }\n </div>\n <kendo-dialog-actions>\n <button kendoButton\n (click)=\"confirmAddFromView()\"\n [disabled]=\"showAddFromViewLoader || userViewsToAdd.length === 0\"\n themeColor=\"info\">\n Add from {{ userViewsToAdd.length }} View{{ userViewsToAdd.length !== 1 ? 's' : '' }}\n </button>\n <button kendoButton\n (click)=\"closeAddFromViewDialog()\"\n [disabled]=\"showAddFromViewLoader\"\n fillMode=\"outline\">\n Cancel\n </button>\n </kendo-dialog-actions>\n </kendo-dialog>\n}\n", styles: [".list-detail-container {\n display: flex;\n flex-direction: column;\n height: 100%;\n padding: 20px;\n background: var(--mj-bg-surface-card);\n}\n\n.list-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding-bottom: 16px;\n flex-shrink: 0;\n}\n\n.list-header h1 {\n margin: 0;\n font-size: 24px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n/* Custom Toolbar */\n.custom-toolbar {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 16px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-bottom: none;\n border-radius: 8px 8px 0 0;\n flex-shrink: 0;\n}\n\n.toolbar-left {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.toolbar-right {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.row-count {\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.selection-count {\n font-size: 14px;\n color: var(--mj-text-secondary);\n}\n\n.toolbar-button {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 13px;\n}\n\n.toolbar-button span {\n font-size: 14px;\n}\n\n.remove-btn {\n color: var(--mj-status-error);\n}\n\n.loading-container {\n display: flex;\n align-items: center;\n justify-content: center;\n flex: 1;\n min-height: 200px;\n}\n\n.grid-container {\n flex: 1;\n min-height: 0;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 0 0 8px 8px;\n overflow: hidden;\n}\n\n/* Add Button */\n.add-btn {\n padding: 10px 30px;\n border-radius: 10px;\n color: white;\n background-color: var(--mj-brand-primary);\n font-size: initial;\n cursor: pointer;\n}\n\n.add-btn:hover {\n filter: brightness(85%);\n}\n\n::ng-deep .k-dropdown-button .k-button {\n background: var(--mj-brand-primary) !important;\n color: white !important;\n font-size: 16px;\n border: none;\n padding: 8px 25px;\n border-radius: 10px;\n}\n\n::ng-deep .k-dropdown-button .k-button:hover {\n background: var(--mj-brand-primary) !important;\n filter: brightness(85%);\n}\n\n::ng-deep .k-dropdown-button .k-button .k-button-text {\n color: white !important;\n}\n\n::ng-deep .k-dropdown-button .k-button .fa-plus {\n color: white !important;\n}\n\n/* ==========================================\n Dialog Styles\n ========================================== */\n\n.dialog-content {\n padding: 8px 0;\n}\n\n.dialog-loading {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 40px 20px;\n gap: 20px;\n}\n\n.dialog-message {\n text-align: center;\n padding: 20px;\n}\n\n.warning-icon {\n font-size: 48px;\n color: var(--mj-status-warning);\n margin-bottom: 16px;\n display: block;\n}\n\n.dialog-message p {\n margin: 8px 0;\n font-size: 15px;\n color: var(--mj-text-primary);\n}\n\n.dialog-note {\n color: var(--mj-text-secondary) !important;\n font-size: 13px !important;\n}\n\n.progress-bar {\n width: 100%;\n max-width: 300px;\n}\n\n/* ==========================================\n Add Records Dialog\n ========================================== */\n\n.add-records-dialog {\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n.search-section {\n padding-bottom: 12px;\n border-bottom: 1px solid var(--mj-border-default);\n margin-bottom: 12px;\n}\n\n.search-input {\n width: 100%;\n}\n\n.search-icon {\n color: var(--mj-text-disabled);\n padding-left: 8px;\n}\n\n.search-hint {\n display: block;\n font-size: 12px;\n color: var(--mj-text-disabled);\n margin-top: 6px;\n}\n\n.records-list {\n flex: 1;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n}\n\n.list-loading {\n display: flex;\n justify-content: center;\n padding: 40px;\n}\n\n.empty-results {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 40px;\n color: var(--mj-text-disabled);\n}\n\n.empty-icon {\n font-size: 32px;\n margin-bottom: 12px;\n color: var(--mj-border-strong);\n}\n\n.empty-results p {\n margin: 0;\n font-size: 14px;\n}\n\n.selection-controls {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 0;\n border-bottom: 1px solid var(--mj-border-default);\n margin-bottom: 8px;\n}\n\n.selection-info {\n margin-left: auto;\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n.records-scroll {\n flex: 1;\n overflow-y: auto;\n max-height: 280px;\n}\n\n.record-item {\n display: flex;\n align-items: center;\n padding: 10px 12px;\n border-radius: 6px;\n cursor: pointer;\n transition: background-color 0.15s;\n gap: 12px;\n}\n\n.record-item:hover:not(.in-list) {\n background: var(--mj-bg-surface-card);\n}\n\n.record-item.selected {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n}\n\n.record-item.in-list {\n background: var(--mj-bg-surface-card);\n cursor: default;\n opacity: 0.7;\n}\n\n.record-checkbox {\n width: 20px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.record-checkbox input[type=\"checkbox\"] {\n width: 16px;\n height: 16px;\n cursor: pointer;\n}\n\n.in-list-icon {\n color: var(--mj-status-success);\n font-size: 14px;\n}\n\n.record-name {\n flex: 1;\n font-size: 14px;\n color: var(--mj-text-primary);\n}\n\n.in-list-badge {\n font-size: 11px;\n padding: 2px 8px;\n background: color-mix(in srgb, var(--mj-status-success) 10%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n border-radius: 10px;\n font-weight: 500;\n}\n\n/* ==========================================\n Add From View Dialog\n ========================================== */\n\n.dialog-instruction {\n margin: 0 0 16px 0;\n font-size: 14px;\n color: var(--mj-text-secondary);\n}\n\n.views-list {\n max-height: 320px;\n overflow-y: auto;\n}\n\n.view-item {\n display: flex;\n align-items: center;\n padding: 12px;\n border-radius: 6px;\n cursor: pointer;\n transition: background-color 0.15s;\n gap: 12px;\n}\n\n.view-item:hover {\n background: var(--mj-bg-surface-card);\n}\n\n.view-item.selected {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n}\n\n.view-item input[type=\"checkbox\"] {\n width: 16px;\n height: 16px;\n cursor: pointer;\n}\n\n.view-icon {\n color: var(--mj-text-secondary);\n font-size: 16px;\n}\n\n.view-name {\n flex: 1;\n font-size: 14px;\n color: var(--mj-text-primary);\n}\n"] }]
888
- }], () => [{ type: i1.SharedService }, { type: i0.ChangeDetectorRef }], { ListID: [{
954
+ args: [{ standalone: false, selector: 'mj-list-detail', template: "<div class=\"list-detail-container\">\n <!-- Header with title and Add button -->\n <div class=\"list-header\">\n <h1>{{ listRecord ? listRecord.Name : \"List\" }}</h1>\n <div class=\"add-dropdown-wrapper\">\n <button mjButton variant=\"primary\" class=\"add-btn\" (click)=\"toggleAddDropdown()\">\n <span class=\"fa-solid fa-plus\"></span>\n Add to List\n <span class=\"fa-solid fa-chevron-down add-dropdown-arrow\"></span>\n </button>\n @if (showAddDropdown) {\n <div class=\"add-dropdown-panel\">\n @for (option of addOptions; track option.Text) {\n <div class=\"add-dropdown-item\" (click)=\"onDropdownItemClick(option)\">\n <span class=\"add-dropdown-item-text\">{{ option.Text }}</span>\n @if (option.Description) {\n <span class=\"add-dropdown-item-desc\">{{ option.Description }}</span>\n }\n </div>\n }\n </div>\n }\n </div>\n </div>\n\n <!-- Custom Toolbar -->\n @if (!showLoader && listRecord) {\n <div class=\"custom-toolbar\">\n <div class=\"toolbar-left\">\n <span class=\"row-count\">{{ rowCount }} row{{ rowCount !== 1 ? 's' : '' }}</span>\n @if (selectedKeys.length > 0) {\n <span class=\"selection-count\">({{ selectedKeys.length }} selected)</span>\n }\n </div>\n <div class=\"toolbar-right\">\n @if (selectedKeys.length > 0) {\n <button mjButton\n (click)=\"openRemoveDialog()\"\n variant=\"flat\"\n class=\"toolbar-button remove-btn\">\n <span class=\"fa-solid fa-trash\"></span>\n Remove from List\n </button>\n }\n <button mjButton\n (click)=\"onRefreshClick()\"\n variant=\"flat\"\n class=\"toolbar-button\">\n <span class=\"fa-solid fa-rotate\"></span>\n Refresh\n </button>\n <button mjButton\n (click)=\"onExportClick()\"\n variant=\"flat\"\n class=\"toolbar-button\">\n <span class=\"fa-solid fa-file-export\"></span>\n Export\n </button>\n </div>\n </div>\n }\n\n <!-- Loading State -->\n @if (showLoader) {\n <div class=\"loading-container\">\n <mj-loading text=\"Loading list...\" size=\"medium\"></mj-loading>\n </div>\n }\n\n <!-- Grid -->\n @if (!showLoader && listRecord) {\n <div class=\"grid-container\">\n <mj-list-detail-grid\n #listDetailGrid\n [listId]=\"ListID\"\n [listEntity]=\"listRecord\"\n [autoNavigate]=\"true\"\n [height]=\"'auto'\"\n [showToolbar]=\"false\"\n [toolbarConfig]=\"gridToolbarConfig\"\n [selectionMode]=\"'checkbox'\"\n (rowClicked)=\"onRowClicked($event)\"\n (rowDoubleClicked)=\"onRowDoubleClicked($event)\"\n (selectionChange)=\"onSelectionChange($event)\"\n (dataLoaded)=\"onDataLoaded($event)\">\n </mj-list-detail-grid>\n </div>\n }\n</div>\n\n<!-- Remove from List Confirmation Dialog -->\n@if (showRemoveDialog) {\n <mj-dialog\n [Visible]=\"true\"\n Title=\"Remove from List\"\n (Close)=\"closeRemoveDialog()\"\n [MinWidth]=\"350\"\n [Width]=\"450\">\n <div class=\"dialog-content\">\n @if (isRemoving) {\n <div class=\"dialog-loading\">\n <mj-loading text=\"Removing records...\" size=\"small\"></mj-loading>\n @if (removeTotal > 0) {\n <mj-progress-bar\n [Value]=\"removeProgressPercent\"\n class=\"progress-bar\">\n </mj-progress-bar>\n }\n </div>\n } @else {\n <div class=\"dialog-message\">\n <span class=\"fa-solid fa-triangle-exclamation warning-icon\"></span>\n <p>Are you sure you want to remove <strong>{{ selectedKeys.length }}</strong> record{{ selectedKeys.length !== 1 ? 's' : '' }} from this list?</p>\n <p class=\"dialog-note\">This will not delete the records, only remove them from this list.</p>\n </div>\n }\n </div>\n <mj-dialog-actions>\n <button mjButton\n (click)=\"confirmRemoveFromList()\"\n [disabled]=\"isRemoving\"\n variant=\"danger\">\n Remove\n </button>\n <button mjButton\n (click)=\"closeRemoveDialog()\"\n [disabled]=\"isRemoving\"\n variant=\"outline\">\n Cancel\n </button>\n </mj-dialog-actions>\n </mj-dialog>\n}\n\n<!-- Add Records Dialog -->\n@if (showAddRecordsDialog) {\n <mj-dialog\n [Visible]=\"true\"\n [Title]=\"'Add ' + (listRecord?.Entity || 'Records') + ' to List'\"\n (Close)=\"closeAddRecordsDialog()\"\n [MinWidth]=\"500\"\n [Width]=\"700\"\n [Height]=\"650\">\n <div class=\"dialog-content add-records-dialog\">\n @if (addDialogSaving) {\n <div class=\"dialog-loading\">\n <mj-loading text=\"Adding records to list...\" size=\"small\"></mj-loading>\n @if (addTotal > 0) {\n <mj-progress-bar\n [Value]=\"addProgressPercent\"\n class=\"progress-bar\">\n </mj-progress-bar>\n }\n </div>\n } @else {\n <!-- Search Input -->\n <div class=\"search-section\">\n <div class=\"search-input-wrapper\">\n <span class=\"fa-solid fa-search search-icon\"></span>\n <input\n class=\"mj-input search-input\"\n type=\"text\"\n [placeholder]=\"'Search ' + (listRecord?.Entity || 'records') + '...'\"\n [value]=\"addRecordsSearchFilter\"\n (input)=\"onAddRecordsSearchInputEvent($event)\" />\n </div>\n <span class=\"search-hint\">Type at least 2 characters to search</span>\n </div>\n <!-- Records List -->\n <div class=\"records-list\">\n @if (addDialogLoading) {\n <div class=\"list-loading\">\n <mj-loading [showText]=\"false\" size=\"small\"></mj-loading>\n </div>\n } @else if (addableRecords.length === 0 && addRecordsSearchFilter.length >= 2) {\n <div class=\"empty-results\">\n <span class=\"fa-solid fa-search empty-icon\"></span>\n <p>No records found matching \"{{ addRecordsSearchFilter }}\"</p>\n </div>\n } @else if (addableRecords.length === 0) {\n <div class=\"empty-results\">\n <span class=\"fa-solid fa-list empty-icon\"></span>\n <p>Search for records to add to this list</p>\n </div>\n } @else {\n <!-- Selection controls -->\n <div class=\"selection-controls\">\n <button mjButton variant=\"flat\" size=\"sm\" (click)=\"selectAllAddable()\">Select All</button>\n <button mjButton variant=\"flat\" size=\"sm\" (click)=\"deselectAllAddable()\">Deselect All</button>\n <span class=\"selection-info\">{{ selectedAddableRecords.length }} selected</span>\n </div>\n <!-- Records -->\n <div class=\"records-scroll\">\n @for (record of addableRecords; track record.ID) {\n <div class=\"record-item\"\n [class.in-list]=\"record.isInList\"\n [class.selected]=\"record.isSelected\"\n (click)=\"toggleRecordSelection(record)\">\n <div class=\"record-checkbox\">\n @if (record.isInList) {\n <span class=\"fa-solid fa-check in-list-icon\" title=\"Already in list\"></span>\n } @else {\n <input type=\"checkbox\"\n [checked]=\"record.isSelected\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"toggleRecordSelection(record)\">\n }\n </div>\n <div class=\"record-name\">{{ record.Name }}</div>\n @if (record.isInList) {\n <span class=\"in-list-badge\">In List</span>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n <mj-dialog-actions>\n <button mjButton\n (click)=\"confirmAddRecords()\"\n [disabled]=\"addDialogSaving || selectedAddableRecords.length === 0\"\n variant=\"primary\">\n Add {{ selectedAddableRecords.length > 0 ? selectedAddableRecords.length : '' }} Record{{ selectedAddableRecords.length !== 1 ? 's' : '' }}\n </button>\n <button mjButton\n (click)=\"closeAddRecordsDialog()\"\n [disabled]=\"addDialogSaving\"\n variant=\"outline\">\n Cancel\n </button>\n </mj-dialog-actions>\n </mj-dialog>\n}\n\n<!-- Add From View Dialog -->\n@if (showAddFromViewDialog) {\n <mj-dialog\n [Visible]=\"true\"\n Title=\"Add Records from Views\"\n (Close)=\"closeAddFromViewDialog()\"\n [MinWidth]=\"400\"\n [Width]=\"600\"\n [Height]=\"500\">\n <div class=\"dialog-content\">\n @if (showAddFromViewLoader && fetchingRecordsToSave) {\n <div class=\"dialog-loading\">\n <mj-loading text=\"Loading records from views...\" size=\"small\"></mj-loading>\n </div>\n } @else if (showAddFromViewLoader && addFromViewTotal > 0) {\n <div class=\"dialog-loading\">\n <mj-loading text=\"Adding records to list...\" size=\"small\"></mj-loading>\n <mj-progress-bar\n [Value]=\"addFromViewProgressPercent\"\n class=\"progress-bar\">\n </mj-progress-bar>\n </div>\n } @else if (showAddFromViewLoader) {\n <div class=\"dialog-loading\">\n <mj-loading text=\"Loading views...\" size=\"small\"></mj-loading>\n </div>\n } @else {\n <p class=\"dialog-instruction\">Select views to add their records to this list:</p>\n <div class=\"views-list\">\n @if (!userViews || userViews.length === 0) {\n <div class=\"empty-results\">\n <span class=\"fa-solid fa-folder-open empty-icon\"></span>\n <p>No saved views found for this entity</p>\n </div>\n } @else {\n @for (view of userViews; track view.ID) {\n <div class=\"view-item\"\n [class.selected]=\"isViewSelected(view)\"\n (click)=\"toggleViewSelection(view)\">\n <input type=\"checkbox\"\n [checked]=\"isViewSelected(view)\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"toggleViewSelection(view)\">\n <span class=\"fa-solid fa-table-list view-icon\"></span>\n <span class=\"view-name\">{{ view.Name }}</span>\n </div>\n }\n }\n </div>\n }\n </div>\n <mj-dialog-actions>\n <button mjButton\n (click)=\"confirmAddFromView()\"\n [disabled]=\"showAddFromViewLoader || userViewsToAdd.length === 0\"\n variant=\"primary\">\n Add from {{ userViewsToAdd.length }} View{{ userViewsToAdd.length !== 1 ? 's' : '' }}\n </button>\n <button mjButton\n (click)=\"closeAddFromViewDialog()\"\n [disabled]=\"showAddFromViewLoader\"\n variant=\"outline\">\n Cancel\n </button>\n </mj-dialog-actions>\n </mj-dialog>\n}\n", styles: [".list-detail-container {\n display: flex;\n flex-direction: column;\n height: 100%;\n padding: 20px;\n background: var(--mj-bg-surface-card);\n}\n\n.list-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding-bottom: 16px;\n flex-shrink: 0;\n}\n\n.list-header h1 {\n margin: 0;\n font-size: 24px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n/* Custom Toolbar */\n.custom-toolbar {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 16px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-bottom: none;\n border-radius: 8px 8px 0 0;\n flex-shrink: 0;\n}\n\n.toolbar-left {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.toolbar-right {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.row-count {\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.selection-count {\n font-size: 14px;\n color: var(--mj-text-secondary);\n}\n\n.toolbar-button {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 13px;\n}\n\n.toolbar-button span {\n font-size: 14px;\n}\n\n.remove-btn {\n color: var(--mj-status-error);\n}\n\n.loading-container {\n display: flex;\n align-items: center;\n justify-content: center;\n flex: 1;\n min-height: 200px;\n}\n\n.grid-container {\n flex: 1;\n min-height: 0;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 0 0 8px 8px;\n overflow: hidden;\n}\n\n/* Add Dropdown Button */\n.add-dropdown-wrapper {\n position: relative;\n}\n\n.add-btn {\n font-size: 16px;\n padding: 8px 25px;\n border-radius: 10px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.add-dropdown-arrow {\n font-size: 12px;\n margin-left: 4px;\n}\n\n.add-dropdown-panel {\n position: absolute;\n top: 100%;\n right: 0;\n margin-top: 4px;\n min-width: 240px;\n background: var(--mj-bg-surface-elevated);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);\n z-index: 100;\n overflow: hidden;\n}\n\n.add-dropdown-item {\n display: flex;\n flex-direction: column;\n padding: 10px 16px;\n cursor: pointer;\n transition: background-color 0.15s;\n}\n\n.add-dropdown-item:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.add-dropdown-item-text {\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.add-dropdown-item-desc {\n font-size: 12px;\n color: var(--mj-text-secondary);\n margin-top: 2px;\n}\n\n/* ==========================================\n Dialog Styles\n ========================================== */\n\n.dialog-content {\n padding: 8px 0;\n}\n\n.dialog-loading {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 40px 20px;\n gap: 20px;\n}\n\n.dialog-message {\n text-align: center;\n padding: 20px;\n}\n\n.warning-icon {\n font-size: 48px;\n color: var(--mj-status-warning);\n margin-bottom: 16px;\n display: block;\n}\n\n.dialog-message p {\n margin: 8px 0;\n font-size: 15px;\n color: var(--mj-text-primary);\n}\n\n.dialog-note {\n color: var(--mj-text-secondary) !important;\n font-size: 13px !important;\n}\n\n.progress-bar {\n width: 100%;\n max-width: 300px;\n}\n\n/* ==========================================\n Add Records Dialog\n ========================================== */\n\n.add-records-dialog {\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n.search-section {\n padding-bottom: 12px;\n border-bottom: 1px solid var(--mj-border-default);\n margin-bottom: 12px;\n}\n\n.search-input-wrapper {\n position: relative;\n display: flex;\n align-items: center;\n}\n\n.search-input-wrapper .search-icon {\n position: absolute;\n left: 10px;\n color: var(--mj-text-disabled);\n font-size: 14px;\n pointer-events: none;\n}\n\n.search-input-wrapper .search-input {\n width: 100%;\n padding-left: 32px;\n}\n\n.search-hint {\n display: block;\n font-size: 12px;\n color: var(--mj-text-disabled);\n margin-top: 6px;\n}\n\n.records-list {\n flex: 1;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n}\n\n.list-loading {\n display: flex;\n justify-content: center;\n padding: 40px;\n}\n\n.empty-results {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 40px;\n color: var(--mj-text-disabled);\n}\n\n.empty-icon {\n font-size: 32px;\n margin-bottom: 12px;\n color: var(--mj-border-strong);\n}\n\n.empty-results p {\n margin: 0;\n font-size: 14px;\n}\n\n.selection-controls {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 0;\n border-bottom: 1px solid var(--mj-border-default);\n margin-bottom: 8px;\n}\n\n.selection-info {\n margin-left: auto;\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n.records-scroll {\n flex: 1;\n overflow-y: auto;\n max-height: 280px;\n}\n\n.record-item {\n display: flex;\n align-items: center;\n padding: 10px 12px;\n border-radius: 6px;\n cursor: pointer;\n transition: background-color 0.15s;\n gap: 12px;\n}\n\n.record-item:hover:not(.in-list) {\n background: var(--mj-bg-surface-card);\n}\n\n.record-item.selected {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n}\n\n.record-item.in-list {\n background: var(--mj-bg-surface-card);\n cursor: default;\n opacity: 0.7;\n}\n\n.record-checkbox {\n width: 20px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.record-checkbox input[type=\"checkbox\"] {\n width: 16px;\n height: 16px;\n cursor: pointer;\n}\n\n.in-list-icon {\n color: var(--mj-status-success);\n font-size: 14px;\n}\n\n.record-name {\n flex: 1;\n font-size: 14px;\n color: var(--mj-text-primary);\n}\n\n.in-list-badge {\n font-size: 11px;\n padding: 2px 8px;\n background: color-mix(in srgb, var(--mj-status-success) 10%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n border-radius: 10px;\n font-weight: 500;\n}\n\n/* ==========================================\n Add From View Dialog\n ========================================== */\n\n.dialog-instruction {\n margin: 0 0 16px 0;\n font-size: 14px;\n color: var(--mj-text-secondary);\n}\n\n.views-list {\n max-height: 320px;\n overflow-y: auto;\n}\n\n.view-item {\n display: flex;\n align-items: center;\n padding: 12px;\n border-radius: 6px;\n cursor: pointer;\n transition: background-color 0.15s;\n gap: 12px;\n}\n\n.view-item:hover {\n background: var(--mj-bg-surface-card);\n}\n\n.view-item.selected {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n}\n\n.view-item input[type=\"checkbox\"] {\n width: 16px;\n height: 16px;\n cursor: pointer;\n}\n\n.view-icon {\n color: var(--mj-text-secondary);\n font-size: 16px;\n}\n\n.view-name {\n flex: 1;\n font-size: 14px;\n color: var(--mj-text-primary);\n}\n"] }]
955
+ }], () => [{ type: i1.SharedService }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }], { ListID: [{
889
956
  type: Input
890
957
  }], listDetailGrid: [{
891
958
  type: ViewChild,
892
959
  args: ['listDetailGrid']
960
+ }], onDocumentClick: [{
961
+ type: HostListener,
962
+ args: ['document:click', ['$event']]
893
963
  }] }); })();
894
964
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SingleListDetailComponent, { className: "SingleListDetailComponent", filePath: "src/lib/single-list-detail/single-list-detail.component.ts", lineNumber: 27 }); })();
895
965
  //# sourceMappingURL=single-list-detail.component.js.map