@memberjunction/ng-explorer-settings 2.121.0 → 2.122.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/lib/application-management/application-dialog/application-dialog.component.d.ts +1 -1
- package/dist/lib/application-management/application-dialog/application-dialog.component.d.ts.map +1 -1
- package/dist/lib/application-management/application-dialog/application-dialog.component.js +5 -7
- package/dist/lib/application-management/application-dialog/application-dialog.component.js.map +1 -1
- package/dist/lib/application-management/application-management.component.d.ts +6 -4
- package/dist/lib/application-management/application-management.component.d.ts.map +1 -1
- package/dist/lib/application-management/application-management.component.js +28 -21
- package/dist/lib/application-management/application-management.component.js.map +1 -1
- package/dist/lib/entity-permissions/entity-permissions.component.d.ts +6 -4
- package/dist/lib/entity-permissions/entity-permissions.component.d.ts.map +1 -1
- package/dist/lib/entity-permissions/entity-permissions.component.js +27 -20
- package/dist/lib/entity-permissions/entity-permissions.component.js.map +1 -1
- package/dist/lib/entity-permissions/permission-dialog/permission-dialog.component.d.ts +1 -1
- package/dist/lib/entity-permissions/permission-dialog/permission-dialog.component.d.ts.map +1 -1
- package/dist/lib/entity-permissions/permission-dialog/permission-dialog.component.js +5 -7
- package/dist/lib/entity-permissions/permission-dialog/permission-dialog.component.js.map +1 -1
- package/dist/lib/module.d.ts +33 -19
- package/dist/lib/module.d.ts.map +1 -1
- package/dist/lib/module.js +97 -17
- package/dist/lib/module.js.map +1 -1
- package/dist/lib/role-management/role-dialog/role-dialog.component.d.ts +1 -1
- package/dist/lib/role-management/role-dialog/role-dialog.component.d.ts.map +1 -1
- package/dist/lib/role-management/role-dialog/role-dialog.component.js +5 -7
- package/dist/lib/role-management/role-dialog/role-dialog.component.js.map +1 -1
- package/dist/lib/role-management/role-management.component.d.ts +6 -4
- package/dist/lib/role-management/role-management.component.d.ts.map +1 -1
- package/dist/lib/role-management/role-management.component.js +28 -24
- package/dist/lib/role-management/role-management.component.js.map +1 -1
- package/dist/lib/settings/settings.component.d.ts +2 -2
- package/dist/lib/settings/settings.component.d.ts.map +1 -1
- package/dist/lib/settings/settings.component.js +11 -28
- package/dist/lib/settings/settings.component.js.map +1 -1
- package/dist/lib/shared/components/settings-card/settings-card.component.js +2 -2
- package/dist/lib/sql-logging/sql-logging.component.d.ts +36 -16
- package/dist/lib/sql-logging/sql-logging.component.d.ts.map +1 -1
- package/dist/lib/sql-logging/sql-logging.component.js +26 -29
- package/dist/lib/sql-logging/sql-logging.component.js.map +1 -1
- package/dist/lib/user-app-config/user-app-config.component.d.ts +102 -0
- package/dist/lib/user-app-config/user-app-config.component.d.ts.map +1 -0
- package/dist/lib/user-app-config/user-app-config.component.js +552 -0
- package/dist/lib/user-app-config/user-app-config.component.js.map +1 -0
- package/dist/lib/user-management/user-dialog/user-dialog.component.d.ts +1 -1
- package/dist/lib/user-management/user-dialog/user-dialog.component.d.ts.map +1 -1
- package/dist/lib/user-management/user-dialog/user-dialog.component.js +5 -7
- package/dist/lib/user-management/user-dialog/user-dialog.component.js.map +1 -1
- package/dist/lib/user-management/user-management.component.d.ts +6 -4
- package/dist/lib/user-management/user-management.component.d.ts.map +1 -1
- package/dist/lib/user-management/user-management.component.js +29 -24
- package/dist/lib/user-management/user-management.component.js.map +1 -1
- package/dist/lib/user-profile-settings/user-profile-settings.component.d.ts +1 -1
- package/dist/lib/user-profile-settings/user-profile-settings.component.d.ts.map +1 -1
- package/dist/lib/user-profile-settings/user-profile-settings.component.js +4 -6
- package/dist/lib/user-profile-settings/user-profile-settings.component.js.map +1 -1
- package/dist/public-api.d.ts +23 -1
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +52 -1
- package/dist/public-api.js.map +1 -1
- package/package.json +14 -14
|
@@ -0,0 +1,552 @@
|
|
|
1
|
+
import { Component, Input, Output, EventEmitter } from '@angular/core';
|
|
2
|
+
import { Metadata, RunView, LogError, LogStatus } from '@memberjunction/core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@memberjunction/ng-base-application";
|
|
5
|
+
import * as i2 from "@memberjunction/ng-shared";
|
|
6
|
+
import * as i3 from "@angular/common";
|
|
7
|
+
import * as i4 from "@progress/kendo-angular-dialog";
|
|
8
|
+
import * as i5 from "@progress/kendo-angular-buttons";
|
|
9
|
+
import * as i6 from "@progress/kendo-angular-sortable";
|
|
10
|
+
import * as i7 from "@memberjunction/ng-shared-generic";
|
|
11
|
+
function UserAppConfigComponent_div_0_Template(rf, ctx) { if (rf & 1) {
|
|
12
|
+
i0.ɵɵelement(0, "div", 2);
|
|
13
|
+
} }
|
|
14
|
+
function UserAppConfigComponent_kendo_window_1_div_2_Template(rf, ctx) { if (rf & 1) {
|
|
15
|
+
i0.ɵɵelementStart(0, "div", 16);
|
|
16
|
+
i0.ɵɵelement(1, "mj-loading", 17);
|
|
17
|
+
i0.ɵɵelementEnd();
|
|
18
|
+
} }
|
|
19
|
+
function UserAppConfigComponent_kendo_window_1_div_3_Template(rf, ctx) { if (rf & 1) {
|
|
20
|
+
i0.ɵɵelementStart(0, "div", 18);
|
|
21
|
+
i0.ɵɵelement(1, "span", 19);
|
|
22
|
+
i0.ɵɵtext(2);
|
|
23
|
+
i0.ɵɵelementEnd();
|
|
24
|
+
} if (rf & 2) {
|
|
25
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
26
|
+
i0.ɵɵadvance(2);
|
|
27
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.errorMessage, " ");
|
|
28
|
+
} }
|
|
29
|
+
function UserAppConfigComponent_kendo_window_1_div_4_div_13_Template(rf, ctx) { if (rf & 1) {
|
|
30
|
+
i0.ɵɵelementStart(0, "div", 34);
|
|
31
|
+
i0.ɵɵelement(1, "span", 35);
|
|
32
|
+
i0.ɵɵelementStart(2, "p");
|
|
33
|
+
i0.ɵɵtext(3, "All applications added!");
|
|
34
|
+
i0.ɵɵelementEnd()();
|
|
35
|
+
} }
|
|
36
|
+
function UserAppConfigComponent_kendo_window_1_div_4_div_14_span_6_Template(rf, ctx) { if (rf & 1) {
|
|
37
|
+
i0.ɵɵelementStart(0, "span", 43);
|
|
38
|
+
i0.ɵɵtext(1);
|
|
39
|
+
i0.ɵɵelementEnd();
|
|
40
|
+
} if (rf & 2) {
|
|
41
|
+
const item_r5 = i0.ɵɵnextContext().$implicit;
|
|
42
|
+
i0.ɵɵadvance();
|
|
43
|
+
i0.ɵɵtextInterpolate(item_r5.app.Description);
|
|
44
|
+
} }
|
|
45
|
+
function UserAppConfigComponent_kendo_window_1_div_4_div_14_Template(rf, ctx) { if (rf & 1) {
|
|
46
|
+
const _r4 = i0.ɵɵgetCurrentView();
|
|
47
|
+
i0.ɵɵelementStart(0, "div", 36);
|
|
48
|
+
i0.ɵɵlistener("dblclick", function UserAppConfigComponent_kendo_window_1_div_4_div_14_Template_div_dblclick_0_listener() { const item_r5 = i0.ɵɵrestoreView(_r4).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.addApp(item_r5)); });
|
|
49
|
+
i0.ɵɵelementStart(1, "div", 37);
|
|
50
|
+
i0.ɵɵelement(2, "span");
|
|
51
|
+
i0.ɵɵelementEnd();
|
|
52
|
+
i0.ɵɵelementStart(3, "div", 38)(4, "span", 39);
|
|
53
|
+
i0.ɵɵtext(5);
|
|
54
|
+
i0.ɵɵelementEnd();
|
|
55
|
+
i0.ɵɵtemplate(6, UserAppConfigComponent_kendo_window_1_div_4_div_14_span_6_Template, 2, 1, "span", 40);
|
|
56
|
+
i0.ɵɵelementEnd();
|
|
57
|
+
i0.ɵɵelementStart(7, "button", 41);
|
|
58
|
+
i0.ɵɵlistener("click", function UserAppConfigComponent_kendo_window_1_div_4_div_14_Template_button_click_7_listener() { const item_r5 = i0.ɵɵrestoreView(_r4).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.addApp(item_r5)); });
|
|
59
|
+
i0.ɵɵelement(8, "span", 42);
|
|
60
|
+
i0.ɵɵtext(9, " Add ");
|
|
61
|
+
i0.ɵɵelementEnd()();
|
|
62
|
+
} if (rf & 2) {
|
|
63
|
+
const item_r5 = ctx.$implicit;
|
|
64
|
+
i0.ɵɵadvance();
|
|
65
|
+
i0.ɵɵstyleProp("background-color", item_r5.app.GetColor());
|
|
66
|
+
i0.ɵɵadvance();
|
|
67
|
+
i0.ɵɵclassMap(item_r5.app.Icon || "fa-solid fa-cube");
|
|
68
|
+
i0.ɵɵadvance(3);
|
|
69
|
+
i0.ɵɵtextInterpolate(item_r5.app.Name);
|
|
70
|
+
i0.ɵɵadvance();
|
|
71
|
+
i0.ɵɵproperty("ngIf", item_r5.app.Description);
|
|
72
|
+
} }
|
|
73
|
+
function UserAppConfigComponent_kendo_window_1_div_4_div_24_Template(rf, ctx) { if (rf & 1) {
|
|
74
|
+
i0.ɵɵelementStart(0, "div", 34);
|
|
75
|
+
i0.ɵɵelement(1, "span", 44);
|
|
76
|
+
i0.ɵɵelementStart(2, "p");
|
|
77
|
+
i0.ɵɵtext(3, "No applications selected");
|
|
78
|
+
i0.ɵɵelementEnd();
|
|
79
|
+
i0.ɵɵelementStart(4, "p", 45);
|
|
80
|
+
i0.ɵɵtext(5, "Add apps from the available list");
|
|
81
|
+
i0.ɵɵelementEnd()();
|
|
82
|
+
} }
|
|
83
|
+
function UserAppConfigComponent_kendo_window_1_div_4_kendo_sortable_25_ng_template_1_span_8_Template(rf, ctx) { if (rf & 1) {
|
|
84
|
+
i0.ɵɵelementStart(0, "span", 43);
|
|
85
|
+
i0.ɵɵtext(1);
|
|
86
|
+
i0.ɵɵelementEnd();
|
|
87
|
+
} if (rf & 2) {
|
|
88
|
+
const item_r8 = i0.ɵɵnextContext().item;
|
|
89
|
+
i0.ɵɵadvance();
|
|
90
|
+
i0.ɵɵtextInterpolate(item_r8.app.Description);
|
|
91
|
+
} }
|
|
92
|
+
function UserAppConfigComponent_kendo_window_1_div_4_kendo_sortable_25_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
|
93
|
+
const _r7 = i0.ɵɵgetCurrentView();
|
|
94
|
+
i0.ɵɵelementStart(0, "div", 47);
|
|
95
|
+
i0.ɵɵlistener("dblclick", function UserAppConfigComponent_kendo_window_1_div_4_kendo_sortable_25_ng_template_1_Template_div_dblclick_0_listener($event) { const item_r8 = i0.ɵɵrestoreView(_r7).item; const ctx_r1 = i0.ɵɵnextContext(4); ctx_r1.removeApp(item_r8); return i0.ɵɵresetView($event.stopPropagation()); });
|
|
96
|
+
i0.ɵɵelementStart(1, "div", 48);
|
|
97
|
+
i0.ɵɵelement(2, "span", 49);
|
|
98
|
+
i0.ɵɵelementEnd();
|
|
99
|
+
i0.ɵɵelementStart(3, "div", 37);
|
|
100
|
+
i0.ɵɵelement(4, "span");
|
|
101
|
+
i0.ɵɵelementEnd();
|
|
102
|
+
i0.ɵɵelementStart(5, "div", 38)(6, "span", 39);
|
|
103
|
+
i0.ɵɵtext(7);
|
|
104
|
+
i0.ɵɵelementEnd();
|
|
105
|
+
i0.ɵɵtemplate(8, UserAppConfigComponent_kendo_window_1_div_4_kendo_sortable_25_ng_template_1_span_8_Template, 2, 1, "span", 40);
|
|
106
|
+
i0.ɵɵelementEnd();
|
|
107
|
+
i0.ɵɵelementStart(9, "div", 50)(10, "button", 51);
|
|
108
|
+
i0.ɵɵlistener("click", function UserAppConfigComponent_kendo_window_1_div_4_kendo_sortable_25_ng_template_1_Template_button_click_10_listener($event) { const item_r8 = i0.ɵɵrestoreView(_r7).item; const ctx_r1 = i0.ɵɵnextContext(4); ctx_r1.moveUp(item_r8); return i0.ɵɵresetView($event.stopPropagation()); });
|
|
109
|
+
i0.ɵɵelement(11, "span", 52);
|
|
110
|
+
i0.ɵɵelementEnd();
|
|
111
|
+
i0.ɵɵelementStart(12, "button", 53);
|
|
112
|
+
i0.ɵɵlistener("click", function UserAppConfigComponent_kendo_window_1_div_4_kendo_sortable_25_ng_template_1_Template_button_click_12_listener($event) { const item_r8 = i0.ɵɵrestoreView(_r7).item; const ctx_r1 = i0.ɵɵnextContext(4); ctx_r1.moveDown(item_r8); return i0.ɵɵresetView($event.stopPropagation()); });
|
|
113
|
+
i0.ɵɵelement(13, "span", 54);
|
|
114
|
+
i0.ɵɵelementEnd();
|
|
115
|
+
i0.ɵɵelementStart(14, "button", 55);
|
|
116
|
+
i0.ɵɵlistener("click", function UserAppConfigComponent_kendo_window_1_div_4_kendo_sortable_25_ng_template_1_Template_button_click_14_listener($event) { const item_r8 = i0.ɵɵrestoreView(_r7).item; const ctx_r1 = i0.ɵɵnextContext(4); ctx_r1.removeApp(item_r8); return i0.ɵɵresetView($event.stopPropagation()); });
|
|
117
|
+
i0.ɵɵelement(15, "span", 56);
|
|
118
|
+
i0.ɵɵelementEnd()()();
|
|
119
|
+
} if (rf & 2) {
|
|
120
|
+
const item_r8 = ctx.item;
|
|
121
|
+
const index_r9 = ctx.index;
|
|
122
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
123
|
+
i0.ɵɵstyleProp("border-left-color", item_r8.app.GetColor());
|
|
124
|
+
i0.ɵɵadvance(3);
|
|
125
|
+
i0.ɵɵstyleProp("background-color", item_r8.app.GetColor());
|
|
126
|
+
i0.ɵɵadvance();
|
|
127
|
+
i0.ɵɵclassMap(item_r8.app.Icon || "fa-solid fa-cube");
|
|
128
|
+
i0.ɵɵadvance(3);
|
|
129
|
+
i0.ɵɵtextInterpolate(item_r8.app.Name);
|
|
130
|
+
i0.ɵɵadvance();
|
|
131
|
+
i0.ɵɵproperty("ngIf", item_r8.app.Description);
|
|
132
|
+
i0.ɵɵadvance(2);
|
|
133
|
+
i0.ɵɵproperty("disabled", index_r9 === 0);
|
|
134
|
+
i0.ɵɵadvance(2);
|
|
135
|
+
i0.ɵɵproperty("disabled", index_r9 === ctx_r1.activeApps.length - 1);
|
|
136
|
+
} }
|
|
137
|
+
function UserAppConfigComponent_kendo_window_1_div_4_kendo_sortable_25_Template(rf, ctx) { if (rf & 1) {
|
|
138
|
+
const _r6 = i0.ɵɵgetCurrentView();
|
|
139
|
+
i0.ɵɵelementStart(0, "kendo-sortable", 46);
|
|
140
|
+
i0.ɵɵlistener("dragEnd", function UserAppConfigComponent_kendo_window_1_div_4_kendo_sortable_25_Template_kendo_sortable_dragEnd_0_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.onDragEnd($event)); });
|
|
141
|
+
i0.ɵɵtemplate(1, UserAppConfigComponent_kendo_window_1_div_4_kendo_sortable_25_ng_template_1_Template, 16, 10, "ng-template");
|
|
142
|
+
i0.ɵɵelementEnd();
|
|
143
|
+
} if (rf & 2) {
|
|
144
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
145
|
+
i0.ɵɵproperty("kendoSortableBinding", ctx_r1.activeApps)("animation", true);
|
|
146
|
+
} }
|
|
147
|
+
function UserAppConfigComponent_kendo_window_1_div_4_Template(rf, ctx) { if (rf & 1) {
|
|
148
|
+
const _r3 = i0.ɵɵgetCurrentView();
|
|
149
|
+
i0.ɵɵelementStart(0, "div", 20)(1, "p", 21);
|
|
150
|
+
i0.ɵɵtext(2, " Select which applications appear in your app switcher and arrange them in your preferred order. Double-click to quickly add or remove. Drag and drop to reorder, or use the arrow buttons. ");
|
|
151
|
+
i0.ɵɵelementEnd();
|
|
152
|
+
i0.ɵɵelementStart(3, "div", 22)(4, "div", 23)(5, "div", 24);
|
|
153
|
+
i0.ɵɵlistener("click", function UserAppConfigComponent_kendo_window_1_div_4_Template_div_click_5_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.availablePanelCollapsed = !ctx_r1.availablePanelCollapsed); });
|
|
154
|
+
i0.ɵɵelement(6, "span", 25);
|
|
155
|
+
i0.ɵɵelementStart(7, "h3");
|
|
156
|
+
i0.ɵɵtext(8, "Available Applications");
|
|
157
|
+
i0.ɵɵelementEnd();
|
|
158
|
+
i0.ɵɵelementStart(9, "span", 26);
|
|
159
|
+
i0.ɵɵtext(10);
|
|
160
|
+
i0.ɵɵelementEnd();
|
|
161
|
+
i0.ɵɵelement(11, "span", 27);
|
|
162
|
+
i0.ɵɵelementEnd();
|
|
163
|
+
i0.ɵɵelementStart(12, "div", 28);
|
|
164
|
+
i0.ɵɵtemplate(13, UserAppConfigComponent_kendo_window_1_div_4_div_13_Template, 4, 0, "div", 29)(14, UserAppConfigComponent_kendo_window_1_div_4_div_14_Template, 10, 6, "div", 30);
|
|
165
|
+
i0.ɵɵelementEnd()();
|
|
166
|
+
i0.ɵɵelementStart(15, "div", 31)(16, "div", 24);
|
|
167
|
+
i0.ɵɵlistener("click", function UserAppConfigComponent_kendo_window_1_div_4_Template_div_click_16_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.selectedPanelCollapsed = !ctx_r1.selectedPanelCollapsed); });
|
|
168
|
+
i0.ɵɵelement(17, "span", 32);
|
|
169
|
+
i0.ɵɵelementStart(18, "h3");
|
|
170
|
+
i0.ɵɵtext(19, "Your Applications");
|
|
171
|
+
i0.ɵɵelementEnd();
|
|
172
|
+
i0.ɵɵelementStart(20, "span", 26);
|
|
173
|
+
i0.ɵɵtext(21);
|
|
174
|
+
i0.ɵɵelementEnd();
|
|
175
|
+
i0.ɵɵelement(22, "span", 27);
|
|
176
|
+
i0.ɵɵelementEnd();
|
|
177
|
+
i0.ɵɵelementStart(23, "div", 28);
|
|
178
|
+
i0.ɵɵtemplate(24, UserAppConfigComponent_kendo_window_1_div_4_div_24_Template, 6, 0, "div", 29)(25, UserAppConfigComponent_kendo_window_1_div_4_kendo_sortable_25_Template, 2, 2, "kendo-sortable", 33);
|
|
179
|
+
i0.ɵɵelementEnd()()()();
|
|
180
|
+
} if (rf & 2) {
|
|
181
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
182
|
+
i0.ɵɵadvance(4);
|
|
183
|
+
i0.ɵɵclassProp("collapsed", ctx_r1.availablePanelCollapsed);
|
|
184
|
+
i0.ɵɵadvance(6);
|
|
185
|
+
i0.ɵɵtextInterpolate(ctx_r1.availableApps.length);
|
|
186
|
+
i0.ɵɵadvance();
|
|
187
|
+
i0.ɵɵclassProp("fa-chevron-down", ctx_r1.availablePanelCollapsed)("fa-chevron-up", !ctx_r1.availablePanelCollapsed);
|
|
188
|
+
i0.ɵɵadvance(2);
|
|
189
|
+
i0.ɵɵproperty("ngIf", ctx_r1.availableApps.length === 0);
|
|
190
|
+
i0.ɵɵadvance();
|
|
191
|
+
i0.ɵɵproperty("ngForOf", ctx_r1.availableApps);
|
|
192
|
+
i0.ɵɵadvance();
|
|
193
|
+
i0.ɵɵclassProp("collapsed", ctx_r1.selectedPanelCollapsed);
|
|
194
|
+
i0.ɵɵadvance(6);
|
|
195
|
+
i0.ɵɵtextInterpolate(ctx_r1.activeApps.length);
|
|
196
|
+
i0.ɵɵadvance();
|
|
197
|
+
i0.ɵɵclassProp("fa-chevron-down", ctx_r1.selectedPanelCollapsed)("fa-chevron-up", !ctx_r1.selectedPanelCollapsed);
|
|
198
|
+
i0.ɵɵadvance(2);
|
|
199
|
+
i0.ɵɵproperty("ngIf", ctx_r1.activeApps.length === 0);
|
|
200
|
+
i0.ɵɵadvance();
|
|
201
|
+
i0.ɵɵproperty("ngIf", ctx_r1.activeApps.length > 0);
|
|
202
|
+
} }
|
|
203
|
+
function UserAppConfigComponent_kendo_window_1_button_7_Template(rf, ctx) { if (rf & 1) {
|
|
204
|
+
const _r10 = i0.ɵɵgetCurrentView();
|
|
205
|
+
i0.ɵɵelementStart(0, "button", 15);
|
|
206
|
+
i0.ɵɵlistener("click", function UserAppConfigComponent_kendo_window_1_button_7_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.reset()); });
|
|
207
|
+
i0.ɵɵelement(1, "span", 57);
|
|
208
|
+
i0.ɵɵtext(2, " Reset Changes ");
|
|
209
|
+
i0.ɵɵelementEnd();
|
|
210
|
+
} if (rf & 2) {
|
|
211
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
212
|
+
i0.ɵɵproperty("disabled", ctx_r1.isLoading || ctx_r1.isSaving);
|
|
213
|
+
} }
|
|
214
|
+
function UserAppConfigComponent_kendo_window_1_mj_loading_10_Template(rf, ctx) { if (rf & 1) {
|
|
215
|
+
i0.ɵɵelement(0, "mj-loading", 58);
|
|
216
|
+
} if (rf & 2) {
|
|
217
|
+
i0.ɵɵproperty("showText", false);
|
|
218
|
+
} }
|
|
219
|
+
function UserAppConfigComponent_kendo_window_1_span_11_Template(rf, ctx) { if (rf & 1) {
|
|
220
|
+
i0.ɵɵelement(0, "span", 59);
|
|
221
|
+
} }
|
|
222
|
+
function UserAppConfigComponent_kendo_window_1_Template(rf, ctx) { if (rf & 1) {
|
|
223
|
+
const _r1 = i0.ɵɵgetCurrentView();
|
|
224
|
+
i0.ɵɵelementStart(0, "kendo-window", 3);
|
|
225
|
+
i0.ɵɵlistener("close", function UserAppConfigComponent_kendo_window_1_Template_kendo_window_close_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.close()); });
|
|
226
|
+
i0.ɵɵelementStart(1, "div", 4);
|
|
227
|
+
i0.ɵɵtemplate(2, UserAppConfigComponent_kendo_window_1_div_2_Template, 2, 0, "div", 5)(3, UserAppConfigComponent_kendo_window_1_div_3_Template, 3, 1, "div", 6)(4, UserAppConfigComponent_kendo_window_1_div_4_Template, 26, 18, "div", 7);
|
|
228
|
+
i0.ɵɵelementStart(5, "div", 8)(6, "div", 9);
|
|
229
|
+
i0.ɵɵtemplate(7, UserAppConfigComponent_kendo_window_1_button_7_Template, 3, 1, "button", 10);
|
|
230
|
+
i0.ɵɵelementEnd();
|
|
231
|
+
i0.ɵɵelementStart(8, "div", 11)(9, "button", 12);
|
|
232
|
+
i0.ɵɵlistener("click", function UserAppConfigComponent_kendo_window_1_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.save()); });
|
|
233
|
+
i0.ɵɵtemplate(10, UserAppConfigComponent_kendo_window_1_mj_loading_10_Template, 1, 1, "mj-loading", 13)(11, UserAppConfigComponent_kendo_window_1_span_11_Template, 1, 0, "span", 14);
|
|
234
|
+
i0.ɵɵtext(12);
|
|
235
|
+
i0.ɵɵelementEnd();
|
|
236
|
+
i0.ɵɵelementStart(13, "button", 15);
|
|
237
|
+
i0.ɵɵlistener("click", function UserAppConfigComponent_kendo_window_1_Template_button_click_13_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.close()); });
|
|
238
|
+
i0.ɵɵtext(14, " Cancel ");
|
|
239
|
+
i0.ɵɵelementEnd()()()()();
|
|
240
|
+
} if (rf & 2) {
|
|
241
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
242
|
+
i0.ɵɵproperty("top", 0)("left", 0)("resizable", false)("draggable", false);
|
|
243
|
+
i0.ɵɵadvance(2);
|
|
244
|
+
i0.ɵɵproperty("ngIf", ctx_r1.isLoading);
|
|
245
|
+
i0.ɵɵadvance();
|
|
246
|
+
i0.ɵɵproperty("ngIf", ctx_r1.errorMessage);
|
|
247
|
+
i0.ɵɵadvance();
|
|
248
|
+
i0.ɵɵproperty("ngIf", !ctx_r1.isLoading);
|
|
249
|
+
i0.ɵɵadvance(3);
|
|
250
|
+
i0.ɵɵproperty("ngIf", ctx_r1.hasChanges());
|
|
251
|
+
i0.ɵɵadvance(2);
|
|
252
|
+
i0.ɵɵproperty("disabled", ctx_r1.isLoading || ctx_r1.isSaving || !ctx_r1.hasChanges());
|
|
253
|
+
i0.ɵɵadvance();
|
|
254
|
+
i0.ɵɵproperty("ngIf", ctx_r1.isSaving);
|
|
255
|
+
i0.ɵɵadvance();
|
|
256
|
+
i0.ɵɵproperty("ngIf", !ctx_r1.isSaving);
|
|
257
|
+
i0.ɵɵadvance();
|
|
258
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.isSaving ? "Saving..." : "Save Changes", " ");
|
|
259
|
+
i0.ɵɵadvance();
|
|
260
|
+
i0.ɵɵproperty("disabled", ctx_r1.isSaving);
|
|
261
|
+
} }
|
|
262
|
+
/**
|
|
263
|
+
* Full-screen modal dialog for configuring user's application visibility and order.
|
|
264
|
+
* Allows users to:
|
|
265
|
+
* - Select which applications to show in the app switcher
|
|
266
|
+
* - Reorder applications via drag-and-drop
|
|
267
|
+
*/
|
|
268
|
+
export class UserAppConfigComponent {
|
|
269
|
+
appManager;
|
|
270
|
+
sharedService;
|
|
271
|
+
cdr;
|
|
272
|
+
showDialog = false;
|
|
273
|
+
showDialogChange = new EventEmitter();
|
|
274
|
+
configSaved = new EventEmitter();
|
|
275
|
+
// All available apps from the system
|
|
276
|
+
allApps = [];
|
|
277
|
+
// User's selected apps (active and ordered)
|
|
278
|
+
activeApps = [];
|
|
279
|
+
// Available apps not yet selected
|
|
280
|
+
availableApps = [];
|
|
281
|
+
isLoading = false;
|
|
282
|
+
isSaving = false;
|
|
283
|
+
errorMessage = '';
|
|
284
|
+
// Panel collapse state (for mobile)
|
|
285
|
+
availablePanelCollapsed = false;
|
|
286
|
+
selectedPanelCollapsed = false;
|
|
287
|
+
constructor(appManager, sharedService, cdr) {
|
|
288
|
+
this.appManager = appManager;
|
|
289
|
+
this.sharedService = sharedService;
|
|
290
|
+
this.cdr = cdr;
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* Opens the dialog and loads user's app configuration
|
|
294
|
+
*/
|
|
295
|
+
async open() {
|
|
296
|
+
this.showDialog = true;
|
|
297
|
+
this.showDialogChange.emit(true);
|
|
298
|
+
this.errorMessage = '';
|
|
299
|
+
await this.loadConfiguration();
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* Closes the dialog without saving
|
|
303
|
+
*/
|
|
304
|
+
close() {
|
|
305
|
+
this.showDialog = false;
|
|
306
|
+
this.showDialogChange.emit(false);
|
|
307
|
+
}
|
|
308
|
+
/**
|
|
309
|
+
* Loads the user's current app configuration
|
|
310
|
+
*/
|
|
311
|
+
async loadConfiguration() {
|
|
312
|
+
this.isLoading = true;
|
|
313
|
+
this.errorMessage = '';
|
|
314
|
+
try {
|
|
315
|
+
const md = new Metadata();
|
|
316
|
+
const rv = new RunView();
|
|
317
|
+
// Load all system apps from ApplicationManager
|
|
318
|
+
const systemApps = this.appManager.GetAllSystemApps();
|
|
319
|
+
// Load user's UserApplication records
|
|
320
|
+
const userAppsResult = await rv.RunView({
|
|
321
|
+
EntityName: 'User Applications',
|
|
322
|
+
ExtraFilter: `UserID = '${md.CurrentUser.ID}'`,
|
|
323
|
+
OrderBy: 'Sequence, Application',
|
|
324
|
+
ResultType: 'entity_object'
|
|
325
|
+
});
|
|
326
|
+
const userApps = userAppsResult.Success ? userAppsResult.Results : [];
|
|
327
|
+
// Build app config items
|
|
328
|
+
this.allApps = this.buildAppConfigItems(systemApps, userApps);
|
|
329
|
+
// Separate into active (selected) and available (unselected)
|
|
330
|
+
this.refreshAppLists();
|
|
331
|
+
}
|
|
332
|
+
catch (error) {
|
|
333
|
+
this.errorMessage = 'Failed to load app configuration. Please try again.';
|
|
334
|
+
LogError('Error loading app configuration:', undefined, error instanceof Error ? error.message : String(error));
|
|
335
|
+
}
|
|
336
|
+
finally {
|
|
337
|
+
this.isLoading = false;
|
|
338
|
+
this.cdr.detectChanges();
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
/**
|
|
342
|
+
* Builds app config items by matching system apps with user's UserApplication records
|
|
343
|
+
*/
|
|
344
|
+
buildAppConfigItems(systemApps, userApps) {
|
|
345
|
+
const items = [];
|
|
346
|
+
for (const app of systemApps) {
|
|
347
|
+
const userApp = userApps.find(ua => ua.ApplicationID === app.ID);
|
|
348
|
+
items.push({
|
|
349
|
+
app,
|
|
350
|
+
userAppId: userApp?.ID || null,
|
|
351
|
+
sequence: userApp?.Sequence ?? 999, // Default high sequence for unselected
|
|
352
|
+
isActive: userApp?.IsActive ?? false,
|
|
353
|
+
isDirty: false
|
|
354
|
+
});
|
|
355
|
+
}
|
|
356
|
+
return items;
|
|
357
|
+
}
|
|
358
|
+
/**
|
|
359
|
+
* Separates apps into active and available lists based on isActive state
|
|
360
|
+
*/
|
|
361
|
+
refreshAppLists() {
|
|
362
|
+
this.activeApps = this.allApps
|
|
363
|
+
.filter(item => item.isActive)
|
|
364
|
+
.sort((a, b) => a.sequence - b.sequence);
|
|
365
|
+
this.availableApps = this.allApps
|
|
366
|
+
.filter(item => !item.isActive)
|
|
367
|
+
.sort((a, b) => a.app.Name.localeCompare(b.app.Name));
|
|
368
|
+
}
|
|
369
|
+
/**
|
|
370
|
+
* Handles drag-and-drop reordering of active apps
|
|
371
|
+
*/
|
|
372
|
+
onDragEnd(event) {
|
|
373
|
+
if (event.index >= 0) {
|
|
374
|
+
// Update sequences based on new order
|
|
375
|
+
this.activeApps.forEach((item, index) => {
|
|
376
|
+
if (item.sequence !== index) {
|
|
377
|
+
item.sequence = index;
|
|
378
|
+
item.isDirty = true;
|
|
379
|
+
}
|
|
380
|
+
});
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
/**
|
|
384
|
+
* Adds an app to the user's active list
|
|
385
|
+
*/
|
|
386
|
+
addApp(item) {
|
|
387
|
+
item.isActive = true;
|
|
388
|
+
item.sequence = this.activeApps.length;
|
|
389
|
+
item.isDirty = true;
|
|
390
|
+
this.refreshAppLists();
|
|
391
|
+
}
|
|
392
|
+
/**
|
|
393
|
+
* Removes an app from the user's active list
|
|
394
|
+
*/
|
|
395
|
+
removeApp(item) {
|
|
396
|
+
item.isActive = false;
|
|
397
|
+
item.sequence = 999;
|
|
398
|
+
item.isDirty = true;
|
|
399
|
+
this.refreshAppLists();
|
|
400
|
+
// Resequence remaining active apps
|
|
401
|
+
this.activeApps.forEach((activeItem, index) => {
|
|
402
|
+
if (activeItem.sequence !== index) {
|
|
403
|
+
activeItem.sequence = index;
|
|
404
|
+
activeItem.isDirty = true;
|
|
405
|
+
}
|
|
406
|
+
});
|
|
407
|
+
}
|
|
408
|
+
/**
|
|
409
|
+
* Moves an app up in the order
|
|
410
|
+
*/
|
|
411
|
+
moveUp(item) {
|
|
412
|
+
const index = this.activeApps.indexOf(item);
|
|
413
|
+
if (index > 0) {
|
|
414
|
+
// Swap with previous item
|
|
415
|
+
const prevItem = this.activeApps[index - 1];
|
|
416
|
+
// Swap sequences
|
|
417
|
+
const tempSeq = item.sequence;
|
|
418
|
+
item.sequence = prevItem.sequence;
|
|
419
|
+
prevItem.sequence = tempSeq;
|
|
420
|
+
item.isDirty = true;
|
|
421
|
+
prevItem.isDirty = true;
|
|
422
|
+
// Re-sort and create new array reference to trigger change detection
|
|
423
|
+
this.activeApps = [...this.activeApps].sort((a, b) => a.sequence - b.sequence);
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
/**
|
|
427
|
+
* Moves an app down in the order
|
|
428
|
+
*/
|
|
429
|
+
moveDown(item) {
|
|
430
|
+
const index = this.activeApps.indexOf(item);
|
|
431
|
+
if (index < this.activeApps.length - 1) {
|
|
432
|
+
// Swap with next item
|
|
433
|
+
const nextItem = this.activeApps[index + 1];
|
|
434
|
+
// Swap sequences
|
|
435
|
+
const tempSeq = item.sequence;
|
|
436
|
+
item.sequence = nextItem.sequence;
|
|
437
|
+
nextItem.sequence = tempSeq;
|
|
438
|
+
item.isDirty = true;
|
|
439
|
+
nextItem.isDirty = true;
|
|
440
|
+
// Re-sort and create new array reference to trigger change detection
|
|
441
|
+
this.activeApps = [...this.activeApps].sort((a, b) => a.sequence - b.sequence);
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
/**
|
|
445
|
+
* Checks if there are any unsaved changes
|
|
446
|
+
*/
|
|
447
|
+
hasChanges() {
|
|
448
|
+
return this.allApps.some(item => item.isDirty);
|
|
449
|
+
}
|
|
450
|
+
/**
|
|
451
|
+
* Saves the user's app configuration
|
|
452
|
+
*/
|
|
453
|
+
async save() {
|
|
454
|
+
if (!this.hasChanges()) {
|
|
455
|
+
this.close();
|
|
456
|
+
return;
|
|
457
|
+
}
|
|
458
|
+
this.isSaving = true;
|
|
459
|
+
this.errorMessage = '';
|
|
460
|
+
try {
|
|
461
|
+
const md = new Metadata();
|
|
462
|
+
const rv = new RunView();
|
|
463
|
+
// Process each app config item
|
|
464
|
+
for (const item of this.allApps) {
|
|
465
|
+
if (!item.isDirty)
|
|
466
|
+
continue;
|
|
467
|
+
if (item.userAppId) {
|
|
468
|
+
// Update existing UserApplication record
|
|
469
|
+
await this.updateUserApplication(md, item);
|
|
470
|
+
}
|
|
471
|
+
else if (item.isActive) {
|
|
472
|
+
// Create new UserApplication record (only if active)
|
|
473
|
+
await this.createUserApplication(md, item);
|
|
474
|
+
}
|
|
475
|
+
// If not active and no existing record, nothing to do
|
|
476
|
+
}
|
|
477
|
+
// Reload the ApplicationManager to reflect changes
|
|
478
|
+
LogStatus('User app configuration saved, reloading ApplicationManager...');
|
|
479
|
+
await this.appManager.ReloadUserApplications();
|
|
480
|
+
this.sharedService.CreateSimpleNotification('App configuration saved successfully!', 'success', 3000);
|
|
481
|
+
this.configSaved.emit();
|
|
482
|
+
this.close();
|
|
483
|
+
}
|
|
484
|
+
catch (error) {
|
|
485
|
+
this.errorMessage = 'Failed to save configuration. Please try again.';
|
|
486
|
+
LogError('Error saving app configuration:', undefined, error instanceof Error ? error.message : String(error));
|
|
487
|
+
}
|
|
488
|
+
finally {
|
|
489
|
+
this.isSaving = false;
|
|
490
|
+
this.cdr.detectChanges();
|
|
491
|
+
}
|
|
492
|
+
}
|
|
493
|
+
/**
|
|
494
|
+
* Updates an existing UserApplication record
|
|
495
|
+
*/
|
|
496
|
+
async updateUserApplication(md, item) {
|
|
497
|
+
const userApp = await md.GetEntityObject('User Applications');
|
|
498
|
+
await userApp.Load(item.userAppId);
|
|
499
|
+
userApp.Sequence = item.sequence;
|
|
500
|
+
userApp.IsActive = item.isActive;
|
|
501
|
+
const saved = await userApp.Save();
|
|
502
|
+
if (!saved) {
|
|
503
|
+
throw new Error(`Failed to update UserApplication for ${item.app.Name}: ${userApp.LatestResult}`);
|
|
504
|
+
}
|
|
505
|
+
item.isDirty = false;
|
|
506
|
+
LogStatus(`Updated UserApplication for ${item.app.Name}: sequence=${item.sequence}, isActive=${item.isActive}`);
|
|
507
|
+
}
|
|
508
|
+
/**
|
|
509
|
+
* Creates a new UserApplication record
|
|
510
|
+
*/
|
|
511
|
+
async createUserApplication(md, item) {
|
|
512
|
+
const userApp = await md.GetEntityObject('User Applications');
|
|
513
|
+
userApp.NewRecord();
|
|
514
|
+
userApp.UserID = md.CurrentUser.ID;
|
|
515
|
+
userApp.ApplicationID = item.app.ID;
|
|
516
|
+
userApp.Sequence = item.sequence;
|
|
517
|
+
userApp.IsActive = item.isActive;
|
|
518
|
+
const saved = await userApp.Save();
|
|
519
|
+
if (!saved) {
|
|
520
|
+
throw new Error(`Failed to create UserApplication for ${item.app.Name}: ${userApp.LatestResult}`);
|
|
521
|
+
}
|
|
522
|
+
item.userAppId = userApp.ID;
|
|
523
|
+
item.isDirty = false;
|
|
524
|
+
LogStatus(`Created UserApplication for ${item.app.Name}: sequence=${item.sequence}`);
|
|
525
|
+
}
|
|
526
|
+
/**
|
|
527
|
+
* Resets all changes and reloads the configuration
|
|
528
|
+
*/
|
|
529
|
+
async reset() {
|
|
530
|
+
await this.loadConfiguration();
|
|
531
|
+
}
|
|
532
|
+
static ɵfac = function UserAppConfigComponent_Factory(t) { return new (t || UserAppConfigComponent)(i0.ɵɵdirectiveInject(i1.ApplicationManager), i0.ɵɵdirectiveInject(i2.SharedService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
|
|
533
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: UserAppConfigComponent, selectors: [["mj-user-app-config"]], inputs: { showDialog: "showDialog" }, outputs: { showDialogChange: "showDialogChange", configSaved: "configSaved" }, decls: 2, vars: 2, consts: [["class", "k-overlay", 4, "ngIf"], ["title", "Configure Apps", "class", "full-screen-dialog", 3, "top", "left", "resizable", "draggable", "close", 4, "ngIf"], [1, "k-overlay"], ["title", "Configure Apps", 1, "full-screen-dialog", 3, "close", "top", "left", "resizable", "draggable"], [1, "app-config-container"], ["class", "loading-container", 4, "ngIf"], ["class", "error-message", 4, "ngIf"], ["class", "config-content", 4, "ngIf"], [1, "dialog-footer"], [1, "footer-left"], ["kendoButton", "", "fillMode", "outline", 3, "disabled", "click", 4, "ngIf"], [1, "footer-right"], ["kendoButton", "", "themeColor", "primary", 3, "click", "disabled"], ["size", "small", 3, "showText", 4, "ngIf"], ["class", "fa-solid fa-check", 4, "ngIf"], ["kendoButton", "", "fillMode", "outline", 3, "click", "disabled"], [1, "loading-container"], ["text", "Loading your app configuration...", "size", "medium"], [1, "error-message"], [1, "fa-solid", "fa-circle-exclamation"], [1, "config-content"], [1, "config-description"], [1, "panels-container"], [1, "panel", "available-apps-panel"], [1, "panel-header", 3, "click"], [1, "fa-solid", "fa-layer-group"], [1, "badge"], [1, "collapse-toggle", "fa-solid"], [1, "panel-content"], ["class", "empty-state", 4, "ngIf"], ["class", "available-app-item", 3, "dblclick", 4, "ngFor", "ngForOf"], [1, "panel", "selected-apps-panel"], [1, "fa-solid", "fa-check-circle"], ["itemClass", "app-item", "activeItemClass", "app-item dragging", 3, "kendoSortableBinding", "animation", "dragEnd", 4, "ngIf"], [1, "empty-state"], [1, "fa-solid", "fa-check-double"], [1, "available-app-item", 3, "dblclick"], [1, "app-icon"], [1, "app-info"], [1, "app-name"], ["class", "app-description", 4, "ngIf"], ["kendoButton", "", "themeColor", "primary", "fillMode", "outline", "title", "Add to your apps", 3, "click"], [1, "fa-solid", "fa-plus"], [1, "app-description"], [1, "fa-solid", "fa-inbox"], [1, "hint"], ["itemClass", "app-item", "activeItemClass", "app-item dragging", 3, "dragEnd", "kendoSortableBinding", "animation"], [1, "app-item-content", 3, "dblclick"], [1, "drag-handle"], [1, "fa-solid", "fa-grip-vertical"], [1, "app-actions"], ["kendoButton", "", "fillMode", "flat", "title", "Move up", 3, "click", "disabled"], [1, "fa-solid", "fa-chevron-up"], ["kendoButton", "", "fillMode", "flat", "title", "Move down", 3, "click", "disabled"], [1, "fa-solid", "fa-chevron-down"], ["kendoButton", "", "fillMode", "flat", "themeColor", "error", "title", "Remove from your apps", 3, "click"], [1, "fa-solid", "fa-xmark"], [1, "fa-solid", "fa-rotate-left"], ["size", "small", 3, "showText"], [1, "fa-solid", "fa-check"]], template: function UserAppConfigComponent_Template(rf, ctx) { if (rf & 1) {
|
|
534
|
+
i0.ɵɵtemplate(0, UserAppConfigComponent_div_0_Template, 1, 0, "div", 0)(1, UserAppConfigComponent_kendo_window_1_Template, 15, 13, "kendo-window", 1);
|
|
535
|
+
} if (rf & 2) {
|
|
536
|
+
i0.ɵɵproperty("ngIf", ctx.showDialog);
|
|
537
|
+
i0.ɵɵadvance();
|
|
538
|
+
i0.ɵɵproperty("ngIf", ctx.showDialog);
|
|
539
|
+
} }, dependencies: [i3.NgForOf, i3.NgIf, i4.WindowComponent, i5.ButtonComponent, i6.SortableComponent, i6.SortableBindingDirective, i7.LoadingComponent], styles: ["\n\n[_nghost-%COMP%] .full-screen-dialog {\n width: 100vw !important;\n height: 100vh !important;\n}\n\n[_nghost-%COMP%] .full-screen-dialog .k-window {\n border-radius: 0;\n box-shadow: none;\n}\n\n[_nghost-%COMP%] .full-screen-dialog .k-window-titlebar {\n background: var(--kendo-component-bg, #ffffff);\n border-bottom: 1px solid var(--kendo-border-color, #e0e0e0);\n padding: 16px 24px;\n}\n\n[_nghost-%COMP%] .full-screen-dialog .k-window-title {\n font-size: 1.25rem;\n font-weight: 600;\n}\n\n\n\n[_nghost-%COMP%] .full-screen-dialog .k-window-titlebar-action:not(:last-child) {\n display: none;\n}\n\n[_nghost-%COMP%] .full-screen-dialog .k-window-content {\n padding: 0;\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n\n\n.app-config-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: var(--kendo-surface-bg, #f5f5f5);\n}\n\n\n\n.loading-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100%;\n gap: 16px;\n color: var(--kendo-subtle-text, #666);\n}\n\n\n\n.error-message[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 24px;\n background: var(--kendo-error-bg, #ffebee);\n color: var(--kendo-error-text, #c62828);\n border-bottom: 1px solid var(--kendo-error-border, #ef9a9a);\n}\n\n.error-message[_ngcontent-%COMP%] .fa-solid[_ngcontent-%COMP%] {\n font-size: 1.1rem;\n}\n\n\n\n.config-content[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n padding: 24px;\n overflow: hidden;\n}\n\n.config-description[_ngcontent-%COMP%] {\n margin: 0 0 24px 0;\n color: var(--kendo-subtle-text, #666);\n font-size: 0.95rem;\n line-height: 1.5;\n}\n\n\n\n.panels-container[_ngcontent-%COMP%] {\n flex: 1;\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 24px;\n overflow: hidden;\n}\n\n@media (max-width: 900px) {\n .panels-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n overflow-y: auto;\n }\n\n \n\n .panel-header[_ngcontent-%COMP%] .collapse-toggle[_ngcontent-%COMP%] {\n display: inline-block !important;\n color: var(--kendo-subtle-text, #666) !important;\n }\n\n \n\n .panel-header[_ngcontent-%COMP%] {\n cursor: pointer;\n user-select: none;\n }\n\n .panel-header[_ngcontent-%COMP%]:hover {\n background: var(--kendo-hover-bg, #f0f0f0);\n }\n\n \n\n .panel.collapsed[_ngcontent-%COMP%] {\n flex: 0 0 auto !important;\n }\n\n .panel.collapsed[_ngcontent-%COMP%] .panel-content[_ngcontent-%COMP%] {\n display: none !important;\n }\n\n .panel.collapsed[_ngcontent-%COMP%] .panel-header[_ngcontent-%COMP%] {\n border-bottom: none;\n }\n\n \n\n .panel[_ngcontent-%COMP%]:not(.collapsed) {\n flex: 1 1 auto;\n min-height: 150px;\n }\n}\n\n\n\n.panel[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n background: var(--kendo-component-bg, #ffffff);\n border: 1px solid var(--kendo-border-color, #e0e0e0);\n border-radius: 8px;\n overflow: hidden;\n}\n\n.panel-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 16px 20px;\n background: var(--kendo-surface-bg, #fafafa);\n border-bottom: 1px solid var(--kendo-border-color, #e0e0e0);\n}\n\n.panel-header[_ngcontent-%COMP%] .fa-solid[_ngcontent-%COMP%] {\n font-size: 1.1rem;\n color: var(--kendo-primary, #0078d4);\n}\n\n.panel-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 1rem;\n font-weight: 600;\n flex: 1;\n}\n\n.panel-header[_ngcontent-%COMP%] .badge[_ngcontent-%COMP%] {\n background: var(--kendo-primary, #0078d4);\n color: white;\n padding: 2px 10px;\n border-radius: 12px;\n font-size: 0.85rem;\n font-weight: 500;\n}\n\n\n\n.panel-header[_ngcontent-%COMP%] .collapse-toggle[_ngcontent-%COMP%] {\n display: none;\n color: var(--kendo-subtle-text, #666);\n font-size: 0.9rem;\n margin-left: 8px;\n}\n\n.panel-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 12px;\n}\n\n\n\n.empty-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 48px 24px;\n color: var(--kendo-subtle-text, #999);\n text-align: center;\n}\n\n.empty-state[_ngcontent-%COMP%] .fa-solid[_ngcontent-%COMP%] {\n font-size: 2.5rem;\n margin-bottom: 16px;\n opacity: 0.5;\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 0.95rem;\n}\n\n.empty-state[_ngcontent-%COMP%] .hint[_ngcontent-%COMP%] {\n margin-top: 4px;\n font-size: 0.85rem;\n opacity: 0.7;\n}\n\n\n\n[_nghost-%COMP%] .app-item {\n margin-bottom: 8px;\n cursor: grab;\n}\n\n[_nghost-%COMP%] .app-item.dragging {\n opacity: 0.8;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n}\n\n.app-item-content[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px 16px;\n background: var(--kendo-component-bg, #ffffff);\n border: 1px solid var(--kendo-border-color, #e0e0e0);\n border-left-width: 4px;\n border-radius: 6px;\n transition: all 0.2s ease;\n}\n\n.app-item-content[_ngcontent-%COMP%]:hover {\n border-color: var(--kendo-primary, #0078d4);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n}\n\n.drag-handle[_ngcontent-%COMP%] {\n color: var(--kendo-subtle-text, #999);\n cursor: grab;\n}\n\n.drag-handle[_ngcontent-%COMP%]:active {\n cursor: grabbing;\n}\n\n.app-icon[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: white;\n font-size: 1.1rem;\n flex-shrink: 0;\n}\n\n.app-info[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: 2px;\n min-width: 0;\n}\n\n.app-name[_ngcontent-%COMP%] {\n font-weight: 500;\n font-size: 0.95rem;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.app-description[_ngcontent-%COMP%] {\n font-size: 0.8rem;\n color: var(--kendo-subtle-text, #666);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.app-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n flex-shrink: 0;\n}\n\n.app-actions[_ngcontent-%COMP%] button[_ngcontent-%COMP%] {\n padding: 4px 8px;\n}\n\n\n\n.available-app-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px 16px;\n margin-bottom: 8px;\n background: var(--kendo-component-bg, #ffffff);\n border: 1px solid var(--kendo-border-color, #e0e0e0);\n border-radius: 6px;\n transition: all 0.2s ease;\n}\n\n.available-app-item[_ngcontent-%COMP%]:hover {\n border-color: var(--kendo-primary, #0078d4);\n background: var(--kendo-surface-bg, #fafafa);\n}\n\n.available-app-item[_ngcontent-%COMP%] .app-info[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n\n\n.dialog-footer[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 24px;\n background: var(--kendo-component-bg, #ffffff);\n border-top: 1px solid var(--kendo-border-color, #e0e0e0);\n}\n\n.footer-left[_ngcontent-%COMP%], \n.footer-right[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n}\n\n.dialog-footer[_ngcontent-%COMP%] button[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n\n\n@media (max-width: 600px) {\n .config-content[_ngcontent-%COMP%] {\n padding: 16px;\n }\n\n .panels-container[_ngcontent-%COMP%] {\n gap: 16px;\n }\n\n .app-item-content[_ngcontent-%COMP%], \n .available-app-item[_ngcontent-%COMP%] {\n padding: 10px 12px;\n }\n\n .app-icon[_ngcontent-%COMP%] {\n width: 36px;\n height: 36px;\n font-size: 1rem;\n }\n\n .app-actions[_ngcontent-%COMP%] button[_ngcontent-%COMP%] {\n padding: 2px 6px;\n }\n\n .dialog-footer[_ngcontent-%COMP%] {\n flex-direction: column;\n gap: 12px;\n }\n\n .footer-left[_ngcontent-%COMP%], \n .footer-right[_ngcontent-%COMP%] {\n width: 100%;\n justify-content: center;\n }\n}"] });
|
|
540
|
+
}
|
|
541
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(UserAppConfigComponent, [{
|
|
542
|
+
type: Component,
|
|
543
|
+
args: [{ selector: 'mj-user-app-config', template: "<div class=\"k-overlay\" *ngIf=\"showDialog\"></div>\n<kendo-window\n *ngIf=\"showDialog\"\n [top]=\"0\"\n [left]=\"0\"\n [resizable]=\"false\"\n [draggable]=\"false\"\n title=\"Configure Apps\"\n (close)=\"close()\"\n class=\"full-screen-dialog\"\n>\n <div class=\"app-config-container\">\n <!-- Loading State -->\n <div *ngIf=\"isLoading\" class=\"loading-container\">\n <mj-loading text=\"Loading your app configuration...\" size=\"medium\"></mj-loading>\n </div>\n\n <!-- Error Message -->\n <div *ngIf=\"errorMessage\" class=\"error-message\">\n <span class=\"fa-solid fa-circle-exclamation\"></span>\n {{ errorMessage }}\n </div>\n\n <!-- Main Content -->\n <div *ngIf=\"!isLoading\" class=\"config-content\">\n <p class=\"config-description\">\n Select which applications appear in your app switcher and arrange them in your preferred order.\n Double-click to quickly add or remove. Drag and drop to reorder, or use the arrow buttons.\n </p>\n\n <div class=\"panels-container\">\n <!-- Available Apps Panel -->\n <div class=\"panel available-apps-panel\" [class.collapsed]=\"availablePanelCollapsed\">\n <div class=\"panel-header\" (click)=\"availablePanelCollapsed = !availablePanelCollapsed\">\n <span class=\"fa-solid fa-layer-group\"></span>\n <h3>Available Applications</h3>\n <span class=\"badge\">{{ availableApps.length }}</span>\n <span class=\"collapse-toggle fa-solid\" [class.fa-chevron-down]=\"availablePanelCollapsed\" [class.fa-chevron-up]=\"!availablePanelCollapsed\"></span>\n </div>\n\n <div class=\"panel-content\">\n <div *ngIf=\"availableApps.length === 0\" class=\"empty-state\">\n <span class=\"fa-solid fa-check-double\"></span>\n <p>All applications added!</p>\n </div>\n\n <div *ngFor=\"let item of availableApps\" class=\"available-app-item\" (dblclick)=\"addApp(item)\">\n <div class=\"app-icon\" [style.background-color]=\"item.app.GetColor()\">\n <span [class]=\"item.app.Icon || 'fa-solid fa-cube'\"></span>\n </div>\n\n <div class=\"app-info\">\n <span class=\"app-name\">{{ item.app.Name }}</span>\n <span class=\"app-description\" *ngIf=\"item.app.Description\">{{ item.app.Description }}</span>\n </div>\n\n <button\n kendoButton\n themeColor=\"primary\"\n fillMode=\"outline\"\n (click)=\"addApp(item)\"\n title=\"Add to your apps\"\n >\n <span class=\"fa-solid fa-plus\"></span>\n Add\n </button>\n </div>\n </div>\n </div>\n\n <!-- Selected Apps Panel -->\n <div class=\"panel selected-apps-panel\" [class.collapsed]=\"selectedPanelCollapsed\">\n <div class=\"panel-header\" (click)=\"selectedPanelCollapsed = !selectedPanelCollapsed\">\n <span class=\"fa-solid fa-check-circle\"></span>\n <h3>Your Applications</h3>\n <span class=\"badge\">{{ activeApps.length }}</span>\n <span class=\"collapse-toggle fa-solid\" [class.fa-chevron-down]=\"selectedPanelCollapsed\" [class.fa-chevron-up]=\"!selectedPanelCollapsed\"></span>\n </div>\n\n <div class=\"panel-content\">\n <div *ngIf=\"activeApps.length === 0\" class=\"empty-state\">\n <span class=\"fa-solid fa-inbox\"></span>\n <p>No applications selected</p>\n <p class=\"hint\">Add apps from the available list</p>\n </div>\n\n <kendo-sortable\n *ngIf=\"activeApps.length > 0\"\n [kendoSortableBinding]=\"activeApps\"\n [animation]=\"true\"\n itemClass=\"app-item\"\n activeItemClass=\"app-item dragging\"\n (dragEnd)=\"onDragEnd($event)\"\n >\n <ng-template let-item=\"item\" let-index=\"index\">\n <div class=\"app-item-content\" [style.border-left-color]=\"item.app.GetColor()\" (dblclick)=\"removeApp(item); $event.stopPropagation()\">\n <div class=\"drag-handle\">\n <span class=\"fa-solid fa-grip-vertical\"></span>\n </div>\n\n <div class=\"app-icon\" [style.background-color]=\"item.app.GetColor()\">\n <span [class]=\"item.app.Icon || 'fa-solid fa-cube'\"></span>\n </div>\n\n <div class=\"app-info\">\n <span class=\"app-name\">{{ item.app.Name }}</span>\n <span class=\"app-description\" *ngIf=\"item.app.Description\">{{ item.app.Description }}</span>\n </div>\n\n <div class=\"app-actions\">\n <button\n kendoButton\n fillMode=\"flat\"\n [disabled]=\"index === 0\"\n (click)=\"moveUp(item); $event.stopPropagation()\"\n title=\"Move up\"\n >\n <span class=\"fa-solid fa-chevron-up\"></span>\n </button>\n <button\n kendoButton\n fillMode=\"flat\"\n [disabled]=\"index === activeApps.length - 1\"\n (click)=\"moveDown(item); $event.stopPropagation()\"\n title=\"Move down\"\n >\n <span class=\"fa-solid fa-chevron-down\"></span>\n </button>\n <button\n kendoButton\n fillMode=\"flat\"\n themeColor=\"error\"\n (click)=\"removeApp(item); $event.stopPropagation()\"\n title=\"Remove from your apps\"\n >\n <span class=\"fa-solid fa-xmark\"></span>\n </button>\n </div>\n </div>\n </ng-template>\n </kendo-sortable>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Footer Actions -->\n <div class=\"dialog-footer\">\n <div class=\"footer-left\">\n <button\n kendoButton\n fillMode=\"outline\"\n (click)=\"reset()\"\n [disabled]=\"isLoading || isSaving\"\n *ngIf=\"hasChanges()\"\n >\n <span class=\"fa-solid fa-rotate-left\"></span>\n Reset Changes\n </button>\n </div>\n <div class=\"footer-right\">\n <button\n kendoButton\n themeColor=\"primary\"\n (click)=\"save()\"\n [disabled]=\"isLoading || isSaving || !hasChanges()\"\n >\n <mj-loading *ngIf=\"isSaving\" [showText]=\"false\" size=\"small\"></mj-loading>\n <span *ngIf=\"!isSaving\" class=\"fa-solid fa-check\"></span>\n {{ isSaving ? 'Saving...' : 'Save Changes' }}\n </button>\n <button\n kendoButton\n fillMode=\"outline\"\n (click)=\"close()\"\n [disabled]=\"isSaving\"\n >\n Cancel\n </button>\n </div>\n </div>\n </div>\n</kendo-window>\n", styles: ["/* Full-screen dialog overlay */\n:host ::ng-deep .full-screen-dialog {\n width: 100vw !important;\n height: 100vh !important;\n}\n\n:host ::ng-deep .full-screen-dialog .k-window {\n border-radius: 0;\n box-shadow: none;\n}\n\n:host ::ng-deep .full-screen-dialog .k-window-titlebar {\n background: var(--kendo-component-bg, #ffffff);\n border-bottom: 1px solid var(--kendo-border-color, #e0e0e0);\n padding: 16px 24px;\n}\n\n:host ::ng-deep .full-screen-dialog .k-window-title {\n font-size: 1.25rem;\n font-weight: 600;\n}\n\n/* Hide minimize/maximize buttons, keep only close */\n:host ::ng-deep .full-screen-dialog .k-window-titlebar-action:not(:last-child) {\n display: none;\n}\n\n:host ::ng-deep .full-screen-dialog .k-window-content {\n padding: 0;\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n/* Main container */\n.app-config-container {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: var(--kendo-surface-bg, #f5f5f5);\n}\n\n/* Loading state */\n.loading-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100%;\n gap: 16px;\n color: var(--kendo-subtle-text, #666);\n}\n\n/* Error message */\n.error-message {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 24px;\n background: var(--kendo-error-bg, #ffebee);\n color: var(--kendo-error-text, #c62828);\n border-bottom: 1px solid var(--kendo-error-border, #ef9a9a);\n}\n\n.error-message .fa-solid {\n font-size: 1.1rem;\n}\n\n/* Config content */\n.config-content {\n flex: 1;\n display: flex;\n flex-direction: column;\n padding: 24px;\n overflow: hidden;\n}\n\n.config-description {\n margin: 0 0 24px 0;\n color: var(--kendo-subtle-text, #666);\n font-size: 0.95rem;\n line-height: 1.5;\n}\n\n/* Panels container */\n.panels-container {\n flex: 1;\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 24px;\n overflow: hidden;\n}\n\n@media (max-width: 900px) {\n .panels-container {\n display: flex;\n flex-direction: column;\n gap: 12px;\n overflow-y: auto;\n }\n\n /* Show collapse toggle on mobile */\n .panel-header .collapse-toggle {\n display: inline-block !important;\n color: var(--kendo-subtle-text, #666) !important;\n }\n\n /* Make header clickable on mobile */\n .panel-header {\n cursor: pointer;\n user-select: none;\n }\n\n .panel-header:hover {\n background: var(--kendo-hover-bg, #f0f0f0);\n }\n\n /* Collapsed panel - just show header */\n .panel.collapsed {\n flex: 0 0 auto !important;\n }\n\n .panel.collapsed .panel-content {\n display: none !important;\n }\n\n .panel.collapsed .panel-header {\n border-bottom: none;\n }\n\n /* Non-collapsed panel takes available space */\n .panel:not(.collapsed) {\n flex: 1 1 auto;\n min-height: 150px;\n }\n}\n\n/* Panel styles */\n.panel {\n display: flex;\n flex-direction: column;\n background: var(--kendo-component-bg, #ffffff);\n border: 1px solid var(--kendo-border-color, #e0e0e0);\n border-radius: 8px;\n overflow: hidden;\n}\n\n.panel-header {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 16px 20px;\n background: var(--kendo-surface-bg, #fafafa);\n border-bottom: 1px solid var(--kendo-border-color, #e0e0e0);\n}\n\n.panel-header .fa-solid {\n font-size: 1.1rem;\n color: var(--kendo-primary, #0078d4);\n}\n\n.panel-header h3 {\n margin: 0;\n font-size: 1rem;\n font-weight: 600;\n flex: 1;\n}\n\n.panel-header .badge {\n background: var(--kendo-primary, #0078d4);\n color: white;\n padding: 2px 10px;\n border-radius: 12px;\n font-size: 0.85rem;\n font-weight: 500;\n}\n\n/* Collapse toggle - hidden by default, shown on mobile */\n.panel-header .collapse-toggle {\n display: none;\n color: var(--kendo-subtle-text, #666);\n font-size: 0.9rem;\n margin-left: 8px;\n}\n\n.panel-content {\n flex: 1;\n overflow-y: auto;\n padding: 12px;\n}\n\n/* Empty state */\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 48px 24px;\n color: var(--kendo-subtle-text, #999);\n text-align: center;\n}\n\n.empty-state .fa-solid {\n font-size: 2.5rem;\n margin-bottom: 16px;\n opacity: 0.5;\n}\n\n.empty-state p {\n margin: 0;\n font-size: 0.95rem;\n}\n\n.empty-state .hint {\n margin-top: 4px;\n font-size: 0.85rem;\n opacity: 0.7;\n}\n\n/* Sortable app items */\n:host ::ng-deep .app-item {\n margin-bottom: 8px;\n cursor: grab;\n}\n\n:host ::ng-deep .app-item.dragging {\n opacity: 0.8;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n}\n\n.app-item-content {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px 16px;\n background: var(--kendo-component-bg, #ffffff);\n border: 1px solid var(--kendo-border-color, #e0e0e0);\n border-left-width: 4px;\n border-radius: 6px;\n transition: all 0.2s ease;\n}\n\n.app-item-content:hover {\n border-color: var(--kendo-primary, #0078d4);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n}\n\n.drag-handle {\n color: var(--kendo-subtle-text, #999);\n cursor: grab;\n}\n\n.drag-handle:active {\n cursor: grabbing;\n}\n\n.app-icon {\n width: 40px;\n height: 40px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: white;\n font-size: 1.1rem;\n flex-shrink: 0;\n}\n\n.app-info {\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: 2px;\n min-width: 0;\n}\n\n.app-name {\n font-weight: 500;\n font-size: 0.95rem;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.app-description {\n font-size: 0.8rem;\n color: var(--kendo-subtle-text, #666);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.app-actions {\n display: flex;\n gap: 4px;\n flex-shrink: 0;\n}\n\n.app-actions button {\n padding: 4px 8px;\n}\n\n/* Available app items */\n.available-app-item {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px 16px;\n margin-bottom: 8px;\n background: var(--kendo-component-bg, #ffffff);\n border: 1px solid var(--kendo-border-color, #e0e0e0);\n border-radius: 6px;\n transition: all 0.2s ease;\n}\n\n.available-app-item:hover {\n border-color: var(--kendo-primary, #0078d4);\n background: var(--kendo-surface-bg, #fafafa);\n}\n\n.available-app-item .app-info {\n flex: 1;\n}\n\n/* Dialog footer */\n.dialog-footer {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 24px;\n background: var(--kendo-component-bg, #ffffff);\n border-top: 1px solid var(--kendo-border-color, #e0e0e0);\n}\n\n.footer-left,\n.footer-right {\n display: flex;\n gap: 12px;\n}\n\n.dialog-footer button {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n/* Responsive adjustments */\n@media (max-width: 600px) {\n .config-content {\n padding: 16px;\n }\n\n .panels-container {\n gap: 16px;\n }\n\n .app-item-content,\n .available-app-item {\n padding: 10px 12px;\n }\n\n .app-icon {\n width: 36px;\n height: 36px;\n font-size: 1rem;\n }\n\n .app-actions button {\n padding: 2px 6px;\n }\n\n .dialog-footer {\n flex-direction: column;\n gap: 12px;\n }\n\n .footer-left,\n .footer-right {\n width: 100%;\n justify-content: center;\n }\n}\n"] }]
|
|
544
|
+
}], () => [{ type: i1.ApplicationManager }, { type: i2.SharedService }, { type: i0.ChangeDetectorRef }], { showDialog: [{
|
|
545
|
+
type: Input
|
|
546
|
+
}], showDialogChange: [{
|
|
547
|
+
type: Output
|
|
548
|
+
}], configSaved: [{
|
|
549
|
+
type: Output
|
|
550
|
+
}] }); })();
|
|
551
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(UserAppConfigComponent, { className: "UserAppConfigComponent", filePath: "src/lib/user-app-config/user-app-config.component.ts", lineNumber: 30 }); })();
|
|
552
|
+
//# sourceMappingURL=user-app-config.component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user-app-config.component.js","sourceRoot":"","sources":["../../../src/lib/user-app-config/user-app-config.component.ts","../../../src/lib/user-app-config/user-app-config.component.html"],"names":[],"mappings":"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"}
|
|
@@ -39,6 +39,6 @@ export declare class UserDialogComponent implements OnInit, OnDestroy, OnChanges
|
|
|
39
39
|
onCancel(): void;
|
|
40
40
|
private markFormGroupTouched;
|
|
41
41
|
static ɵfac: i0.ɵɵFactoryDeclaration<UserDialogComponent, never>;
|
|
42
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<UserDialogComponent, "mj-user-dialog", never, { "data": { "alias": "data"; "required": false; }; "visible": { "alias": "visible"; "required": false; }; }, { "result": "result"; }, never, never,
|
|
42
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<UserDialogComponent, "mj-user-dialog", never, { "data": { "alias": "data"; "required": false; }; "visible": { "alias": "visible"; "required": false; }; }, { "result": "result"; }, never, never, false, never>;
|
|
43
43
|
}
|
|
44
44
|
//# sourceMappingURL=user-dialog.component.d.ts.map
|