@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.
- package/dist/app-routing.module.d.ts.map +1 -1
- package/dist/app-routing.module.js +1 -3
- package/dist/app-routing.module.js.map +1 -1
- package/dist/generated/lazy-feature-config.d.ts +1 -1
- package/dist/generated/lazy-feature-config.d.ts.map +1 -1
- package/dist/generated/lazy-feature-config.js +5 -2
- package/dist/generated/lazy-feature-config.js.map +1 -1
- package/dist/lib/dashboard-preferences-dialog/dashboard-preferences-dialog.component.js +49 -49
- package/dist/lib/dashboard-preferences-dialog/dashboard-preferences-dialog.component.js.map +1 -1
- package/dist/lib/oauth/oauth-callback.component.js +6 -6
- package/dist/lib/oauth/oauth-callback.component.js.map +1 -1
- package/dist/lib/oauth/oauth.module.d.ts +2 -3
- package/dist/lib/oauth/oauth.module.d.ts.map +1 -1
- package/dist/lib/oauth/oauth.module.js +0 -4
- package/dist/lib/oauth/oauth.module.js.map +1 -1
- package/dist/lib/resource-wrappers/chat-collections-resource.component.d.ts +6 -25
- package/dist/lib/resource-wrappers/chat-collections-resource.component.d.ts.map +1 -1
- package/dist/lib/resource-wrappers/chat-collections-resource.component.js +30 -124
- package/dist/lib/resource-wrappers/chat-collections-resource.component.js.map +1 -1
- package/dist/lib/resource-wrappers/chat-conversations-resource.component.d.ts +7 -23
- package/dist/lib/resource-wrappers/chat-conversations-resource.component.d.ts.map +1 -1
- package/dist/lib/resource-wrappers/chat-conversations-resource.component.js +50 -142
- package/dist/lib/resource-wrappers/chat-conversations-resource.component.js.map +1 -1
- package/dist/lib/resource-wrappers/chat-tasks-resource.component.d.ts +3 -19
- package/dist/lib/resource-wrappers/chat-tasks-resource.component.d.ts.map +1 -1
- package/dist/lib/resource-wrappers/chat-tasks-resource.component.js +16 -98
- package/dist/lib/resource-wrappers/chat-tasks-resource.component.js.map +1 -1
- package/dist/lib/resource-wrappers/list-detail-resource.component.d.ts +3 -1
- package/dist/lib/resource-wrappers/list-detail-resource.component.d.ts.map +1 -1
- package/dist/lib/resource-wrappers/list-detail-resource.component.js +3 -0
- package/dist/lib/resource-wrappers/list-detail-resource.component.js.map +1 -1
- package/dist/lib/resource-wrappers/notifications-resource.component.js +1 -0
- package/dist/lib/resource-wrappers/notifications-resource.component.js.map +1 -1
- package/dist/lib/resource-wrappers/view-resource.component.d.ts +13 -11
- package/dist/lib/resource-wrappers/view-resource.component.d.ts.map +1 -1
- package/dist/lib/resource-wrappers/view-resource.component.js +80 -89
- package/dist/lib/resource-wrappers/view-resource.component.js.map +1 -1
- package/dist/lib/services/startup-validation.service.d.ts.map +1 -1
- package/dist/lib/services/startup-validation.service.js +0 -3
- package/dist/lib/services/startup-validation.service.js.map +1 -1
- package/dist/lib/shell/components/header/app-nav.component.d.ts.map +1 -1
- package/dist/lib/shell/components/header/app-nav.component.js +18 -3
- package/dist/lib/shell/components/header/app-nav.component.js.map +1 -1
- package/dist/lib/shell/components/tabs/component-cache-manager.d.ts +45 -16
- package/dist/lib/shell/components/tabs/component-cache-manager.d.ts.map +1 -1
- package/dist/lib/shell/components/tabs/component-cache-manager.js +57 -35
- package/dist/lib/shell/components/tabs/component-cache-manager.js.map +1 -1
- package/dist/lib/shell/components/tabs/tab-container.component.d.ts +33 -0
- package/dist/lib/shell/components/tabs/tab-container.component.d.ts.map +1 -1
- package/dist/lib/shell/components/tabs/tab-container.component.js +99 -17
- package/dist/lib/shell/components/tabs/tab-container.component.js.map +1 -1
- package/dist/lib/shell/services/settings-dialog.service.d.ts +8 -8
- package/dist/lib/shell/services/settings-dialog.service.d.ts.map +1 -1
- package/dist/lib/shell/services/settings-dialog.service.js +20 -26
- package/dist/lib/shell/services/settings-dialog.service.js.map +1 -1
- package/dist/lib/shell/shell.component.d.ts.map +1 -1
- package/dist/lib/shell/shell.component.js +17 -17
- package/dist/lib/shell/shell.component.js.map +1 -1
- package/dist/lib/shell/shell.module.d.ts +4 -5
- package/dist/lib/shell/shell.module.d.ts.map +1 -1
- package/dist/lib/shell/shell.module.js +4 -8
- package/dist/lib/shell/shell.module.js.map +1 -1
- package/dist/lib/single-dashboard/Components/add-item/add-item.component.js +72 -71
- package/dist/lib/single-dashboard/Components/add-item/add-item.component.js.map +1 -1
- package/dist/lib/single-dashboard/Components/delete-item/delete-item.component.js +11 -11
- package/dist/lib/single-dashboard/Components/delete-item/delete-item.component.js.map +1 -1
- package/dist/lib/single-dashboard/Components/edit-dashboard/edit-dashboard.component.d.ts +36 -12
- package/dist/lib/single-dashboard/Components/edit-dashboard/edit-dashboard.component.d.ts.map +1 -1
- package/dist/lib/single-dashboard/Components/edit-dashboard/edit-dashboard.component.js +78 -50
- package/dist/lib/single-dashboard/Components/edit-dashboard/edit-dashboard.component.js.map +1 -1
- package/dist/lib/single-dashboard/single-dashboard.component.d.ts +12 -5
- package/dist/lib/single-dashboard/single-dashboard.component.d.ts.map +1 -1
- package/dist/lib/single-dashboard/single-dashboard.component.js +44 -55
- package/dist/lib/single-dashboard/single-dashboard.component.js.map +1 -1
- package/dist/lib/single-list-detail/single-list-detail.component.d.ts +10 -2
- package/dist/lib/single-list-detail/single-list-detail.component.d.ts.map +1 -1
- package/dist/lib/single-list-detail/single-list-detail.component.js +313 -243
- package/dist/lib/single-list-detail/single-list-detail.component.js.map +1 -1
- package/dist/module.d.ts +51 -63
- package/dist/module.d.ts.map +1 -1
- package/dist/module.js +35 -80
- package/dist/module.js.map +1 -1
- package/dist/public-api.d.ts +0 -1
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +0 -1
- package/dist/public-api.js.map +1 -1
- package/package.json +38 -47
- package/dist/lib/generic/form-toolbar.d.ts +0 -8
- package/dist/lib/generic/form-toolbar.d.ts.map +0 -1
- package/dist/lib/generic/form-toolbar.js +0 -114
- 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 "@
|
|
8
|
-
import * as i3 from "@
|
|
9
|
-
import * as i4 from "@
|
|
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.
|
|
15
|
-
|
|
16
|
-
|
|
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
|
|
18
|
+
const option_r2 = i0.ɵɵnextContext().$implicit;
|
|
21
19
|
i0.ɵɵadvance();
|
|
22
|
-
i0.ɵɵ
|
|
20
|
+
i0.ɵɵtextInterpolate(option_r2.Description);
|
|
23
21
|
} }
|
|
24
|
-
function
|
|
25
|
-
const
|
|
26
|
-
i0.ɵɵelementStart(0, "
|
|
27
|
-
i0.ɵɵlistener("click", function
|
|
28
|
-
i0.ɵɵ
|
|
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
|
|
33
|
-
const
|
|
34
|
-
i0.ɵɵelementStart(0, "div",
|
|
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,
|
|
69
|
+
i0.ɵɵconditionalCreate(4, SingleListDetailComponent_Conditional_10_Conditional_4_Template, 2, 1, "span", 20);
|
|
38
70
|
i0.ɵɵelementEnd();
|
|
39
|
-
i0.ɵɵelementStart(5, "div",
|
|
40
|
-
i0.ɵɵconditionalCreate(6,
|
|
41
|
-
i0.ɵɵelementStart(7, "button",
|
|
42
|
-
i0.ɵɵlistener("click", function
|
|
43
|
-
i0.ɵɵelement(8, "span",
|
|
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",
|
|
47
|
-
i0.ɵɵlistener("click", function
|
|
48
|
-
i0.ɵɵelement(11, "span",
|
|
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
|
|
84
|
+
const ctx_r2 = i0.ɵɵnextContext();
|
|
53
85
|
i0.ɵɵadvance(3);
|
|
54
|
-
i0.ɵɵtextInterpolate2("",
|
|
86
|
+
i0.ɵɵtextInterpolate2("", ctx_r2.rowCount, " row", ctx_r2.rowCount !== 1 ? "s" : "");
|
|
55
87
|
i0.ɵɵadvance();
|
|
56
|
-
i0.ɵɵconditional(
|
|
88
|
+
i0.ɵɵconditional(ctx_r2.selectedKeys.length > 0 ? 4 : -1);
|
|
57
89
|
i0.ɵɵadvance(2);
|
|
58
|
-
i0.ɵɵconditional(
|
|
90
|
+
i0.ɵɵconditional(ctx_r2.selectedKeys.length > 0 ? 6 : -1);
|
|
59
91
|
} }
|
|
60
|
-
function
|
|
61
|
-
i0.ɵɵelementStart(0, "div",
|
|
62
|
-
i0.ɵɵelement(1, "mj-loading",
|
|
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
|
|
66
|
-
const
|
|
67
|
-
i0.ɵɵelementStart(0, "div",
|
|
68
|
-
i0.ɵɵlistener("rowClicked", function
|
|
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
|
|
103
|
+
const ctx_r2 = i0.ɵɵnextContext();
|
|
72
104
|
i0.ɵɵadvance();
|
|
73
|
-
i0.ɵɵproperty("listId",
|
|
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
|
|
76
|
-
i0.ɵɵelement(0, "
|
|
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
|
|
79
|
-
i0.ɵɵproperty("
|
|
110
|
+
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
111
|
+
i0.ɵɵproperty("Value", ctx_r2.removeProgressPercent);
|
|
80
112
|
} }
|
|
81
|
-
function
|
|
82
|
-
i0.ɵɵelementStart(0, "div",
|
|
83
|
-
i0.ɵɵelement(1, "mj-loading",
|
|
84
|
-
i0.ɵɵconditionalCreate(2,
|
|
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
|
|
119
|
+
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
88
120
|
i0.ɵɵadvance(2);
|
|
89
|
-
i0.ɵɵconditional(
|
|
121
|
+
i0.ɵɵconditional(ctx_r2.removeTotal > 0 ? 2 : -1);
|
|
90
122
|
} }
|
|
91
|
-
function
|
|
92
|
-
i0.ɵɵelementStart(0, "div",
|
|
93
|
-
i0.ɵɵelement(1, "span",
|
|
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",
|
|
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
|
|
137
|
+
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
106
138
|
i0.ɵɵadvance(5);
|
|
107
|
-
i0.ɵɵtextInterpolate(
|
|
139
|
+
i0.ɵɵtextInterpolate(ctx_r2.selectedKeys.length);
|
|
108
140
|
i0.ɵɵadvance();
|
|
109
|
-
i0.ɵɵtextInterpolate1(" record",
|
|
141
|
+
i0.ɵɵtextInterpolate1(" record", ctx_r2.selectedKeys.length !== 1 ? "s" : "", " from this list?");
|
|
110
142
|
} }
|
|
111
|
-
function
|
|
112
|
-
const
|
|
113
|
-
i0.ɵɵelementStart(0, "
|
|
114
|
-
i0.ɵɵlistener("
|
|
115
|
-
i0.ɵɵelementStart(1, "div",
|
|
116
|
-
i0.ɵɵconditionalCreate(2,
|
|
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, "
|
|
119
|
-
i0.ɵɵlistener("click", function
|
|
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",
|
|
123
|
-
i0.ɵɵlistener("click", function
|
|
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
|
|
128
|
-
i0.ɵɵproperty("
|
|
159
|
+
const ctx_r2 = i0.ɵɵnextContext();
|
|
160
|
+
i0.ɵɵproperty("Visible", true)("MinWidth", 350)("Width", 450);
|
|
129
161
|
i0.ɵɵadvance(2);
|
|
130
|
-
i0.ɵɵconditional(
|
|
162
|
+
i0.ɵɵconditional(ctx_r2.isRemoving ? 2 : 3);
|
|
131
163
|
i0.ɵɵadvance(3);
|
|
132
|
-
i0.ɵɵproperty("disabled",
|
|
164
|
+
i0.ɵɵproperty("disabled", ctx_r2.isRemoving);
|
|
133
165
|
i0.ɵɵadvance(2);
|
|
134
|
-
i0.ɵɵproperty("disabled",
|
|
166
|
+
i0.ɵɵproperty("disabled", ctx_r2.isRemoving);
|
|
135
167
|
} }
|
|
136
|
-
function
|
|
137
|
-
i0.ɵɵelement(0, "
|
|
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
|
|
140
|
-
i0.ɵɵproperty("
|
|
171
|
+
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
172
|
+
i0.ɵɵproperty("Value", ctx_r2.addProgressPercent);
|
|
141
173
|
} }
|
|
142
|
-
function
|
|
143
|
-
i0.ɵɵelementStart(0, "div",
|
|
144
|
-
i0.ɵɵelement(1, "mj-loading",
|
|
145
|
-
i0.ɵɵconditionalCreate(2,
|
|
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
|
|
180
|
+
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
149
181
|
i0.ɵɵadvance(2);
|
|
150
|
-
i0.ɵɵconditional(
|
|
182
|
+
i0.ɵɵconditional(ctx_r2.addTotal > 0 ? 2 : -1);
|
|
151
183
|
} }
|
|
152
|
-
function
|
|
153
|
-
i0.ɵɵ
|
|
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
|
|
164
|
-
i0.ɵɵelementStart(0, "div",
|
|
165
|
-
i0.ɵɵelement(1, "span",
|
|
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
|
|
199
|
+
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
171
200
|
i0.ɵɵadvance(3);
|
|
172
|
-
i0.ɵɵtextInterpolate1("No records found matching \"",
|
|
201
|
+
i0.ɵɵtextInterpolate1("No records found matching \"", ctx_r2.addRecordsSearchFilter, "\"");
|
|
173
202
|
} }
|
|
174
|
-
function
|
|
175
|
-
i0.ɵɵelementStart(0, "div",
|
|
176
|
-
i0.ɵɵelement(1, "span",
|
|
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
|
|
182
|
-
i0.ɵɵelement(0, "span",
|
|
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
|
|
185
|
-
const
|
|
186
|
-
i0.ɵɵelementStart(0, "input",
|
|
187
|
-
i0.ɵɵlistener("click", function
|
|
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
|
|
191
|
-
i0.ɵɵproperty("checked",
|
|
219
|
+
const record_r12 = i0.ɵɵnextContext().$implicit;
|
|
220
|
+
i0.ɵɵproperty("checked", record_r12.isSelected);
|
|
192
221
|
} }
|
|
193
|
-
function
|
|
194
|
-
i0.ɵɵelementStart(0, "span",
|
|
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
|
|
199
|
-
const
|
|
200
|
-
i0.ɵɵelementStart(0, "div",
|
|
201
|
-
i0.ɵɵlistener("click", function
|
|
202
|
-
i0.ɵɵelementStart(1, "div",
|
|
203
|
-
i0.ɵɵconditionalCreate(2,
|
|
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",
|
|
234
|
+
i0.ɵɵelementStart(4, "div", 64);
|
|
206
235
|
i0.ɵɵtext(5);
|
|
207
236
|
i0.ɵɵelementEnd();
|
|
208
|
-
i0.ɵɵconditionalCreate(6,
|
|
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
|
|
212
|
-
i0.ɵɵclassProp("in-list",
|
|
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(
|
|
243
|
+
i0.ɵɵconditional(record_r12.isInList ? 2 : 3);
|
|
215
244
|
i0.ɵɵadvance(3);
|
|
216
|
-
i0.ɵɵtextInterpolate(
|
|
245
|
+
i0.ɵɵtextInterpolate(record_r12.Name);
|
|
217
246
|
i0.ɵɵadvance();
|
|
218
|
-
i0.ɵɵconditional(
|
|
247
|
+
i0.ɵɵconditional(record_r12.isInList ? 6 : -1);
|
|
219
248
|
} }
|
|
220
|
-
function
|
|
221
|
-
const
|
|
222
|
-
i0.ɵɵelementStart(0, "div",
|
|
223
|
-
i0.ɵɵlistener("click", function
|
|
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",
|
|
227
|
-
i0.ɵɵlistener("click", function
|
|
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",
|
|
259
|
+
i0.ɵɵelementStart(5, "span", 57);
|
|
231
260
|
i0.ɵɵtext(6);
|
|
232
261
|
i0.ɵɵelementEnd()();
|
|
233
|
-
i0.ɵɵelementStart(7, "div",
|
|
234
|
-
i0.ɵɵrepeaterCreate(8,
|
|
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
|
|
266
|
+
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
238
267
|
i0.ɵɵadvance(6);
|
|
239
|
-
i0.ɵɵtextInterpolate1("",
|
|
268
|
+
i0.ɵɵtextInterpolate1("", ctx_r2.selectedAddableRecords.length, " selected");
|
|
240
269
|
i0.ɵɵadvance(2);
|
|
241
|
-
i0.ɵɵrepeater(
|
|
270
|
+
i0.ɵɵrepeater(ctx_r2.addableRecords);
|
|
242
271
|
} }
|
|
243
|
-
function
|
|
244
|
-
const
|
|
245
|
-
i0.ɵɵelementStart(0, "div",
|
|
246
|
-
i0.ɵɵ
|
|
247
|
-
i0.ɵɵ
|
|
248
|
-
i0.ɵɵ
|
|
249
|
-
i0.ɵɵ
|
|
250
|
-
i0.ɵɵ
|
|
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(
|
|
253
|
-
i0.ɵɵconditionalCreate(
|
|
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
|
|
257
|
-
i0.ɵɵadvance();
|
|
258
|
-
i0.ɵɵproperty("placeholder", "Search " + ((
|
|
259
|
-
i0.ɵɵadvance(
|
|
260
|
-
i0.ɵɵconditional(
|
|
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
|
|
263
|
-
const
|
|
264
|
-
i0.ɵɵelementStart(0, "
|
|
265
|
-
i0.ɵɵlistener("
|
|
266
|
-
i0.ɵɵelementStart(1, "div",
|
|
267
|
-
i0.ɵɵconditionalCreate(2,
|
|
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, "
|
|
270
|
-
i0.ɵɵlistener("click", function
|
|
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",
|
|
274
|
-
i0.ɵɵlistener("click", function
|
|
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
|
|
279
|
-
i0.ɵɵproperty("
|
|
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(
|
|
311
|
+
i0.ɵɵconditional(ctx_r2.addDialogSaving ? 2 : 3);
|
|
282
312
|
i0.ɵɵadvance(3);
|
|
283
|
-
i0.ɵɵproperty("disabled",
|
|
313
|
+
i0.ɵɵproperty("disabled", ctx_r2.addDialogSaving || ctx_r2.selectedAddableRecords.length === 0);
|
|
284
314
|
i0.ɵɵadvance();
|
|
285
|
-
i0.ɵɵtextInterpolate2(" Add ",
|
|
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",
|
|
317
|
+
i0.ɵɵproperty("disabled", ctx_r2.addDialogSaving);
|
|
288
318
|
} }
|
|
289
|
-
function
|
|
290
|
-
i0.ɵɵelementStart(0, "div",
|
|
291
|
-
i0.ɵɵelement(1, "mj-loading",
|
|
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
|
|
295
|
-
i0.ɵɵelementStart(0, "div",
|
|
296
|
-
i0.ɵɵelement(1, "mj-loading",
|
|
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
|
|
329
|
+
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
300
330
|
i0.ɵɵadvance(2);
|
|
301
|
-
i0.ɵɵproperty("
|
|
331
|
+
i0.ɵɵproperty("Value", ctx_r2.addFromViewProgressPercent);
|
|
302
332
|
} }
|
|
303
|
-
function
|
|
304
|
-
i0.ɵɵelementStart(0, "div",
|
|
305
|
-
i0.ɵɵelement(1, "mj-loading",
|
|
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
|
|
309
|
-
i0.ɵɵelementStart(0, "div",
|
|
310
|
-
i0.ɵɵelement(1, "span",
|
|
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
|
|
316
|
-
const
|
|
317
|
-
i0.ɵɵelementStart(0, "div",
|
|
318
|
-
i0.ɵɵlistener("click", function
|
|
319
|
-
i0.ɵɵelementStart(1, "input",
|
|
320
|
-
i0.ɵɵlistener("click", function
|
|
321
|
-
i0.ɵɵelementEnd();
|
|
322
|
-
i0.ɵɵelement(2, "span",
|
|
323
|
-
i0.ɵɵelementStart(3, "span",
|
|
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
|
|
328
|
-
const
|
|
329
|
-
i0.ɵɵclassProp("selected",
|
|
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",
|
|
361
|
+
i0.ɵɵproperty("checked", ctx_r2.isViewSelected(view_r16));
|
|
332
362
|
i0.ɵɵadvance(3);
|
|
333
|
-
i0.ɵɵtextInterpolate(
|
|
363
|
+
i0.ɵɵtextInterpolate(view_r16.Name);
|
|
334
364
|
} }
|
|
335
|
-
function
|
|
336
|
-
i0.ɵɵrepeaterCreate(0,
|
|
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
|
|
339
|
-
i0.ɵɵrepeater(
|
|
368
|
+
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
369
|
+
i0.ɵɵrepeater(ctx_r2.userViews);
|
|
340
370
|
} }
|
|
341
|
-
function
|
|
342
|
-
i0.ɵɵelementStart(0, "p",
|
|
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",
|
|
346
|
-
i0.ɵɵconditionalCreate(3,
|
|
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
|
|
379
|
+
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
350
380
|
i0.ɵɵadvance(3);
|
|
351
|
-
i0.ɵɵconditional(!
|
|
381
|
+
i0.ɵɵconditional(!ctx_r2.userViews || ctx_r2.userViews.length === 0 ? 3 : 4);
|
|
352
382
|
} }
|
|
353
|
-
function
|
|
354
|
-
const
|
|
355
|
-
i0.ɵɵelementStart(0, "
|
|
356
|
-
i0.ɵɵlistener("
|
|
357
|
-
i0.ɵɵelementStart(1, "div",
|
|
358
|
-
i0.ɵɵconditionalCreate(2,
|
|
359
|
-
i0.ɵɵelementEnd();
|
|
360
|
-
i0.ɵɵelementStart(6, "
|
|
361
|
-
i0.ɵɵlistener("click", function
|
|
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",
|
|
365
|
-
i0.ɵɵlistener("click", function
|
|
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
|
|
370
|
-
i0.ɵɵproperty("
|
|
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(
|
|
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",
|
|
404
|
+
i0.ɵɵproperty("disabled", ctx_r2.showAddFromViewLoader || ctx_r2.userViewsToAdd.length === 0);
|
|
375
405
|
i0.ɵɵadvance();
|
|
376
|
-
i0.ɵɵtextInterpolate2(" Add from ",
|
|
406
|
+
i0.ɵɵtextInterpolate2(" Add from ", ctx_r2.userViewsToAdd.length, " View", ctx_r2.userViewsToAdd.length !== 1 ? "s" : "", " ");
|
|
377
407
|
i0.ɵɵadvance();
|
|
378
|
-
i0.ɵɵproperty("disabled",
|
|
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
|
-
|
|
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
|
-
} },
|
|
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, "
|
|
855
|
-
i0.ɵɵlistener("
|
|
856
|
-
i0.ɵɵelement(
|
|
857
|
-
i0.ɵɵtext(
|
|
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(
|
|
860
|
-
i0.ɵɵconditionalCreate(
|
|
861
|
-
i0.ɵɵconditionalCreate(
|
|
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(
|
|
864
|
-
i0.ɵɵconditionalCreate(
|
|
865
|
-
i0.ɵɵconditionalCreate(
|
|
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.ɵɵ
|
|
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 ?
|
|
941
|
+
i0.ɵɵconditional(ctx.showLoader ? 11 : -1);
|
|
875
942
|
i0.ɵɵadvance();
|
|
876
|
-
i0.ɵɵconditional(!ctx.showLoader && ctx.listRecord ?
|
|
943
|
+
i0.ɵɵconditional(!ctx.showLoader && ctx.listRecord ? 12 : -1);
|
|
877
944
|
i0.ɵɵadvance();
|
|
878
|
-
i0.ɵɵconditional(ctx.showRemoveDialog ?
|
|
945
|
+
i0.ɵɵconditional(ctx.showRemoveDialog ? 13 : -1);
|
|
879
946
|
i0.ɵɵadvance();
|
|
880
|
-
i0.ɵɵconditional(ctx.showAddRecordsDialog ?
|
|
947
|
+
i0.ɵɵconditional(ctx.showAddRecordsDialog ? 14 : -1);
|
|
881
948
|
i0.ɵɵadvance();
|
|
882
|
-
i0.ɵɵconditional(ctx.showAddFromViewDialog ?
|
|
883
|
-
} }, dependencies: [i2.
|
|
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
|