@memberjunction/ng-explorer-core 2.52.0 → 2.53.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/dist/app-routing.module.d.ts.map +1 -1
  2. package/dist/app-routing.module.js +2 -0
  3. package/dist/app-routing.module.js.map +1 -1
  4. package/dist/lib/app-view/application-view.component.js +108 -76
  5. package/dist/lib/app-view/application-view.component.js.map +1 -1
  6. package/dist/lib/dashboard-browser-component/dashboard-browser.component.js +38 -37
  7. package/dist/lib/dashboard-browser-component/dashboard-browser.component.js.map +1 -1
  8. package/dist/lib/dashboard-preferences-dialog/dashboard-preferences-dialog.component.js +2 -2
  9. package/dist/lib/data-browser-component/data-browser.component.js +99 -60
  10. package/dist/lib/data-browser-component/data-browser.component.js.map +1 -1
  11. package/dist/lib/favorites/favorites.component.js +2 -2
  12. package/dist/lib/generic/resource-container-component.js +5 -5
  13. package/dist/lib/generic/resource-container-component.js.map +1 -1
  14. package/dist/lib/generic-browse-list/generic-browse-list.component.js +57 -58
  15. package/dist/lib/generic-browse-list/generic-browse-list.component.js.map +1 -1
  16. package/dist/lib/generic-browser-list/generic-browser-list.component.d.ts +7 -0
  17. package/dist/lib/generic-browser-list/generic-browser-list.component.d.ts.map +1 -1
  18. package/dist/lib/generic-browser-list/generic-browser-list.component.js +475 -143
  19. package/dist/lib/generic-browser-list/generic-browser-list.component.js.map +1 -1
  20. package/dist/lib/header/header.component.d.ts +6 -0
  21. package/dist/lib/header/header.component.d.ts.map +1 -1
  22. package/dist/lib/header/header.component.js +98 -41
  23. package/dist/lib/header/header.component.js.map +1 -1
  24. package/dist/lib/home-component/home.component.d.ts +5 -0
  25. package/dist/lib/home-component/home.component.d.ts.map +1 -1
  26. package/dist/lib/home-component/home.component.js +137 -33
  27. package/dist/lib/home-component/home.component.js.map +1 -1
  28. package/dist/lib/list-view/list-view.component.js +55 -28
  29. package/dist/lib/list-view/list-view.component.js.map +1 -1
  30. package/dist/lib/navigation/navigation.component.js +33 -42
  31. package/dist/lib/navigation/navigation.component.js.map +1 -1
  32. package/dist/lib/query-browser-component/query-browser.component.js +2 -2
  33. package/dist/lib/report-browser-component/report-browser.component.js +2 -2
  34. package/dist/lib/resource-browser/resource-browser.component.js +297 -177
  35. package/dist/lib/resource-browser/resource-browser.component.js.map +1 -1
  36. package/dist/lib/resource-wrappers/dashboard-resource.component.js +4 -5
  37. package/dist/lib/resource-wrappers/dashboard-resource.component.js.map +1 -1
  38. package/dist/lib/resource-wrappers/record-resource.component.js +4 -5
  39. package/dist/lib/resource-wrappers/record-resource.component.js.map +1 -1
  40. package/dist/lib/services/startup-validation.service.d.ts +25 -0
  41. package/dist/lib/services/startup-validation.service.d.ts.map +1 -0
  42. package/dist/lib/services/startup-validation.service.js +85 -0
  43. package/dist/lib/services/startup-validation.service.js.map +1 -0
  44. package/dist/lib/services/system-validation.service.d.ts +40 -0
  45. package/dist/lib/services/system-validation.service.d.ts.map +1 -0
  46. package/dist/lib/services/system-validation.service.js +68 -0
  47. package/dist/lib/services/system-validation.service.js.map +1 -0
  48. package/dist/lib/single-application/single-application.component.js +2 -2
  49. package/dist/lib/single-entity/single-entity.component.js +2 -2
  50. package/dist/lib/single-list-detail/single-list-detail.component.js +2 -2
  51. package/dist/lib/single-query/single-query.component.js +4 -5
  52. package/dist/lib/single-query/single-query.component.js.map +1 -1
  53. package/dist/lib/single-report/single-report.component.js +4 -5
  54. package/dist/lib/single-report/single-report.component.js.map +1 -1
  55. package/dist/lib/single-view/single-view.component.js +7 -8
  56. package/dist/lib/single-view/single-view.component.js.map +1 -1
  57. package/dist/lib/style-guide-test/style-guide-test.component.d.ts +70 -0
  58. package/dist/lib/style-guide-test/style-guide-test.component.d.ts.map +1 -0
  59. package/dist/lib/style-guide-test/style-guide-test.component.js +1017 -0
  60. package/dist/lib/style-guide-test/style-guide-test.component.js.map +1 -0
  61. package/dist/lib/system-validation/system-validation-banner.component.d.ts +16 -0
  62. package/dist/lib/system-validation/system-validation-banner.component.d.ts.map +1 -0
  63. package/dist/lib/system-validation/system-validation-banner.component.js +156 -0
  64. package/dist/lib/system-validation/system-validation-banner.component.js.map +1 -0
  65. package/dist/lib/tabbed-dashboard/tabbed-dashboard.component.js +24 -26
  66. package/dist/lib/tabbed-dashboard/tabbed-dashboard.component.js.map +1 -1
  67. package/dist/lib/user-notifications/user-notifications.component.js +141 -91
  68. package/dist/lib/user-notifications/user-notifications.component.js.map +1 -1
  69. package/dist/module.d.ts +42 -40
  70. package/dist/module.d.ts.map +1 -1
  71. package/dist/module.js +38 -10
  72. package/dist/module.js.map +1 -1
  73. package/dist/public-api.d.ts +3 -0
  74. package/dist/public-api.d.ts.map +1 -1
  75. package/dist/public-api.js +4 -0
  76. package/dist/public-api.js.map +1 -1
  77. package/package.json +25 -25
@@ -20,46 +20,47 @@ import * as i6 from "@progress/kendo-angular-inputs";
20
20
  import * as i7 from "@progress/kendo-angular-label";
21
21
  import * as i8 from "../resource-browser/resource-browser.component";
22
22
  const _c0 = ["resourceBrowserDashboard"];
23
- function DashboardBrowserComponent_kendo_dialog_3_Conditional_9_Template(rf, ctx) { if (rf & 1) {
24
- const _r4 = i0.ɵɵgetCurrentView();
25
- i0.ɵɵelementStart(0, "button", 12);
26
- i0.ɵɵlistener("click", function DashboardBrowserComponent_kendo_dialog_3_Conditional_9_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.updateDashboard()); });
27
- i0.ɵɵtext(1, " Update ");
28
- i0.ɵɵelementEnd();
29
- } }
30
- function DashboardBrowserComponent_kendo_dialog_3_Conditional_10_Template(rf, ctx) { if (rf & 1) {
31
- const _r5 = i0.ɵɵgetCurrentView();
32
- i0.ɵɵelementStart(0, "button", 12);
33
- i0.ɵɵlistener("click", function DashboardBrowserComponent_kendo_dialog_3_Conditional_10_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.createDashboard()); });
34
- i0.ɵɵtext(1, " Create ");
35
- i0.ɵɵelementEnd();
36
- } }
37
23
  function DashboardBrowserComponent_kendo_dialog_3_Template(rf, ctx) { if (rf & 1) {
38
24
  const _r2 = i0.ɵɵgetCurrentView();
39
- i0.ɵɵelementStart(0, "kendo-dialog", 3);
25
+ i0.ɵɵelementStart(0, "kendo-dialog", 6);
40
26
  i0.ɵɵlistener("close", function DashboardBrowserComponent_kendo_dialog_3_Template_kendo_dialog_close_0_listener() { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.toggleUpsertDashboardDialog(false)); });
41
- i0.ɵɵelementStart(1, "div", 4)(2, "kendo-label", 5)(3, "kendo-textbox", 6);
27
+ i0.ɵɵelementStart(1, "kendo-formfield", 7);
28
+ i0.ɵɵelement(2, "kendo-label", 8);
29
+ i0.ɵɵelementStart(3, "kendo-textbox", 9, 1);
42
30
  i0.ɵɵlistener("valueChange", function DashboardBrowserComponent_kendo_dialog_3_Template_kendo_textbox_valueChange_3_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onUpsertDashboardNameKeyup($event)); });
43
- i0.ɵɵelementEnd()()();
44
- i0.ɵɵelement(4, "br");
45
- i0.ɵɵelementStart(5, "div", 4)(6, "kendo-label", 7)(7, "kendo-textbox", 8);
31
+ i0.ɵɵelementEnd()();
32
+ i0.ɵɵelementStart(5, "kendo-formfield", 10);
33
+ i0.ɵɵelement(6, "kendo-label", 11);
34
+ i0.ɵɵelementStart(7, "kendo-textbox", 12, 2);
46
35
  i0.ɵɵlistener("valueChange", function DashboardBrowserComponent_kendo_dialog_3_Template_kendo_textbox_valueChange_7_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onUpsertDashboardDescriptionKeyup($event)); });
47
- i0.ɵɵelementEnd()()();
48
- i0.ɵɵelementStart(8, "kendo-dialog-actions", 9);
49
- i0.ɵɵtemplate(9, DashboardBrowserComponent_kendo_dialog_3_Conditional_9_Template, 2, 0, "button", 10)(10, DashboardBrowserComponent_kendo_dialog_3_Conditional_10_Template, 2, 0, "button", 10);
50
- i0.ɵɵelementStart(11, "button", 11);
51
- i0.ɵɵlistener("click", function DashboardBrowserComponent_kendo_dialog_3_Template_button_click_11_listener() { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.toggleUpsertDashboardDialog(false)); });
52
- i0.ɵɵtext(12, " Cancel ");
53
- i0.ɵɵelementEnd()()();
36
+ i0.ɵɵelementEnd()();
37
+ i0.ɵɵelementStart(9, "kendo-dialog-actions")(10, "kendo-button", 13);
38
+ i0.ɵɵlistener("click", function DashboardBrowserComponent_kendo_dialog_3_Template_kendo_button_click_10_listener() { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.selectedDashboard ? ctx_r2.updateDashboard() : ctx_r2.createDashboard()); });
39
+ i0.ɵɵelementStart(11, "span", 14);
40
+ i0.ɵɵelement(12, "i", 15);
41
+ i0.ɵɵtext(13);
42
+ i0.ɵɵelementEnd()();
43
+ i0.ɵɵelementStart(14, "kendo-button", 16);
44
+ i0.ɵɵlistener("click", function DashboardBrowserComponent_kendo_dialog_3_Template_kendo_button_click_14_listener() { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.toggleUpsertDashboardDialog(false)); });
45
+ i0.ɵɵelementStart(15, "span", 14);
46
+ i0.ɵɵelement(16, "i", 17);
47
+ i0.ɵɵtext(17, " Cancel ");
48
+ i0.ɵɵelementEnd()()()();
54
49
  } if (rf & 2) {
50
+ const dashboardNameInput_r4 = i0.ɵɵreference(4);
51
+ const dashboardDescInput_r5 = i0.ɵɵreference(8);
55
52
  const ctx_r2 = i0.ɵɵnextContext();
56
- i0.ɵɵproperty("title", ctx_r2.selectedDashboard ? "Update Dashboard" : "Create New Dashboard")("minWidth", 250)("width", 450);
57
- i0.ɵɵadvance(3);
58
- i0.ɵɵproperty("value", ctx_r2.upsertDashboardName);
59
- i0.ɵɵadvance(4);
60
- i0.ɵɵproperty("value", ctx_r2.upsertDashboardDescription);
53
+ i0.ɵɵproperty("title", ctx_r2.selectedDashboard ? "Update Dashboard" : "Create New Dashboard")("minWidth", 400)("width", 500);
61
54
  i0.ɵɵadvance(2);
62
- i0.ɵɵconditional(ctx_r2.selectedDashboard ? 9 : 10);
55
+ i0.ɵɵproperty("for", dashboardNameInput_r4);
56
+ i0.ɵɵadvance();
57
+ i0.ɵɵproperty("value", ctx_r2.upsertDashboardName)("clearButton", true);
58
+ i0.ɵɵadvance(3);
59
+ i0.ɵɵproperty("for", dashboardDescInput_r5);
60
+ i0.ɵɵadvance();
61
+ i0.ɵɵproperty("value", ctx_r2.upsertDashboardDescription)("clearButton", true);
62
+ i0.ɵɵadvance(6);
63
+ i0.ɵɵtextInterpolate1(" ", ctx_r2.selectedDashboard ? "Update" : "Create", " ");
63
64
  } }
64
65
  let DashboardBrowserComponent = class DashboardBrowserComponent extends BaseBrowserComponent {
65
66
  router;
@@ -214,19 +215,19 @@ let DashboardBrowserComponent = class DashboardBrowserComponent extends BaseBrow
214
215
  } if (rf & 2) {
215
216
  let _t;
216
217
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.resourceBrowser = _t.first);
217
- } }, features: [i0.ɵɵInheritDefinitionFeature], decls: 4, vars: 4, consts: [["resourceBrowserDashboard", ""], ["ResourceTypeName", "Dashboards", "Title", "Dashboards", "DisplayMode", "Tile", 3, "ResourceSelected", "NavigateToParentEvent", "EditItemEvent", "EnableCategories", "CurrentCategoryID", "NewItemOptions"], ["class", "dialog-wrapper", 3, "title", "minWidth", "width", "close", 4, "ngIf"], [1, "dialog-wrapper", 3, "close", "title", "minWidth", "width"], [1, "search"], ["text", "Name"], ["placeholder", "Enter a name", 1, "dashboard-name-input", 3, "valueChange", "value"], ["text", "Description"], ["placeholder", "Enter a Description", 3, "valueChange", "value"], [1, "popup-actions-btn"], ["kendoButton", "", "themeColor", "info", 1, "cancel-btn"], ["kendoButton", "", "fillMode", "outline", "themeColor", "info", 1, "yes-btn", 3, "click"], ["kendoButton", "", "themeColor", "info", 1, "cancel-btn", 3, "click"]], template: function DashboardBrowserComponent_Template(rf, ctx) { if (rf & 1) {
218
+ } }, features: [i0.ɵɵInheritDefinitionFeature], decls: 4, vars: 4, consts: [["resourceBrowserDashboard", ""], ["dashboardNameInput", ""], ["dashboardDescInput", ""], [1, "mj-page-container"], ["ResourceTypeName", "Dashboards", "Title", "Dashboards", "DisplayMode", "Tile", 3, "ResourceSelected", "NavigateToParentEvent", "EditItemEvent", "EnableCategories", "CurrentCategoryID", "NewItemOptions"], [3, "title", "minWidth", "width", "close", 4, "ngIf"], [3, "close", "title", "minWidth", "width"], ["orientation", "vertical", 1, "mb-3"], ["text", "Name", 3, "for"], ["placeholder", "Enter dashboard name", "rounded", "medium", 3, "valueChange", "value", "clearButton"], ["orientation", "vertical"], ["text", "Description", 3, "for"], ["placeholder", "Enter description", "rounded", "medium", 3, "valueChange", "value", "clearButton"], ["themeColor", "primary", "rounded", "medium", 3, "click"], [1, "button-content"], [1, "fas", "fa-check"], ["fillMode", "outline", "rounded", "medium", 3, "click"], [1, "fas", "fa-times"]], template: function DashboardBrowserComponent_Template(rf, ctx) { if (rf & 1) {
218
219
  const _r1 = i0.ɵɵgetCurrentView();
219
- i0.ɵɵelementStart(0, "div")(1, "mj-resource-browser", 1, 0);
220
+ i0.ɵɵelementStart(0, "div", 3)(1, "mj-resource-browser", 4, 0);
220
221
  i0.ɵɵlistener("ResourceSelected", function DashboardBrowserComponent_Template_mj_resource_browser_ResourceSelected_1_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onItemClick($event)); })("NavigateToParentEvent", function DashboardBrowserComponent_Template_mj_resource_browser_NavigateToParentEvent_1_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.navigateToParentFolder()); })("EditItemEvent", function DashboardBrowserComponent_Template_mj_resource_browser_EditItemEvent_1_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onBeforeUpdateItemEvent($event)); });
221
222
  i0.ɵɵelementEnd();
222
- i0.ɵɵtemplate(3, DashboardBrowserComponent_kendo_dialog_3_Template, 13, 6, "kendo-dialog", 2);
223
+ i0.ɵɵtemplate(3, DashboardBrowserComponent_kendo_dialog_3_Template, 18, 10, "kendo-dialog", 5);
223
224
  i0.ɵɵelementEnd();
224
225
  } if (rf & 2) {
225
226
  i0.ɵɵadvance();
226
227
  i0.ɵɵproperty("EnableCategories", true)("CurrentCategoryID", ctx.selectedFolderID)("NewItemOptions", ctx.NewItemOptions);
227
228
  i0.ɵɵadvance(2);
228
229
  i0.ɵɵproperty("ngIf", ctx.upsertDashboardDialogVisible);
229
- } }, dependencies: [i3.NgIf, i4.DialogComponent, i4.DialogActionsComponent, i5.ButtonComponent, i6.TextBoxComponent, i7.LabelComponent, i8.ResourceBrowserComponent], styles: [".main-area[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n width: 100%;\n gap: 24px;\n padding: 24px 0;\n}\n.list-view[_ngcontent-%COMP%] {\n padding: 16px;\n min-width: 300px;\n border-radius: 4px;\n background: #FAFAFA;\n border: none;\n}\n .list-view .k-listview-header, \n .list-view .k-listview-footer {\n border: none;\n}\n .list-view .k-listview-content {\n border: 1px solid rgba(0, 0, 0, 0.08);\n border-radius: 4px;\n background: #fff;\n padding: 16px;\n}\n\n.header[_ngcontent-%COMP%], \n.footer[_ngcontent-%COMP%] {\n color: #424242;\n font-size: 16px;\n height: auto;\n margin:0;\n}\n\n.header[_ngcontent-%COMP%] {\n color: #424242;\n margin-bottom: 16px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n.header[_ngcontent-%COMP%] .head-tag[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n color: #424242;\nfont-size: 16px;\nfont-style: normal;\nfont-weight: 400;\nline-height: 20px;\n}\n\n.header[_ngcontent-%COMP%] .count[_ngcontent-%COMP%] {\n width: 24px;\n height: 24px;\n min-width: 24px;\n display: flex;\n justify-content: center;\n align-items: center;\n font-size: 10px;\n background: rgba(0, 0, 0, 0.08);\n border-radius: 50%;\n}\n.footer[_ngcontent-%COMP%] {\n font-size: 14px;\n margin-top: 16px;\n}\n\n.list-item[_ngcontent-%COMP%] {\n color: #424242;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 30px;\n cursor: pointer;\n margin: 4px;\n}\n.card-container[_ngcontent-%COMP%] {\n margin: 0;\n padding: 0;\n box-shadow: none;\n}\n.card-header-entity[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n padding-bottom: 20px;\n border-bottom: 1px solid rgba(0, 0, 0, 0.08);\n}\n.card-header-entity[_ngcontent-%COMP%] .title-wrap[_ngcontent-%COMP%] h1[_ngcontent-%COMP%] {\n color: #424242;\n font-size: 28px;\n font-style: normal;\n font-weight: 300;\n line-height: 28px;\n margin-bottom: 15px;\n}\n.card-header-entity[_ngcontent-%COMP%] .title-wrap[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n}\n.card-header-entity[_ngcontent-%COMP%] .title-wrap[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n display: flex;\n align-items: center;\n gap: 8px;\n color: #424242;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n}\n\n\n\n\n \n.view-card[_ngcontent-%COMP%] .view-icon[_ngcontent-%COMP%] {\n color: var(--sideNav);\n}\n.card-wrapper[_ngcontent-%COMP%] {\n border: 1px solid rgba(0, 0, 0, 0.08);\n border-radius: 6px;\n width: 100% !important;\n}\n.card-wrapper[_ngcontent-%COMP%] .k-card-body[_ngcontent-%COMP%] {\n background: #fff;\n padding: 12px 20px;\n}\n.card-wrapper[_ngcontent-%COMP%] .view-card[_ngcontent-%COMP%] {\n overflow: auto;\n display: flex;\n justify-content: space-between;\n align-items: center;\n background: #fafafa;\n padding: 4px 15px;\n}\n.view-card[_ngcontent-%COMP%] .btn-wrapper[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n}\n\n.k-card-body[_ngcontent-%COMP%] .view-card-content[_ngcontent-%COMP%] h5[_ngcontent-%COMP%] {\n color: #424242;\n font-size: 16px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n margin-bottom: 0;\n letter-spacing: 0.18px;\n}\n.k-card-body[_ngcontent-%COMP%] .view-card-content[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n color: #666;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n height: 48px;\n margin-bottom: 0;\n}\n.card-container[_ngcontent-%COMP%] {\n padding: 0;\n margin: 0;\n box-shadow: none;\n}\n.card-header-entity[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n padding-bottom: 20px;\n border-bottom: 1px solid rgba(0, 0, 0, 0.08);\n}\n\n.card-header-entity[_ngcontent-%COMP%] .title-wrap[_ngcontent-%COMP%] h1[_ngcontent-%COMP%] {\n color: #424242;\n font-size: 28px;\n font-style: normal;\n font-weight: 300;\n line-height: 28px;\n margin-bottom: 15px;\n}\n.card-header-entity[_ngcontent-%COMP%] .title-wrap[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n}\n.card-header-entity[_ngcontent-%COMP%] .title-wrap[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n display: flex;\n align-items: center;\n gap: 8px;\n color: #424242;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n}\n.main-area[_ngcontent-%COMP%] .card-list[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 20px;\n}"] });
230
+ } }, dependencies: [i3.NgIf, i4.DialogComponent, i4.DialogActionsComponent, i5.ButtonComponent, i6.TextBoxComponent, i6.FormFieldComponent, i7.LabelComponent, i8.ResourceBrowserComponent], styles: ["[_nghost-%COMP%] {\n display: block;\n}\n\n\n\n.mb-3[_ngcontent-%COMP%] {\n margin-bottom: 1rem;\n}\n\n\n\n.button-content[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n}"] });
230
231
  };
231
232
  DashboardBrowserComponent = __decorate([
232
233
  RegisterClass(BaseNavigationComponent, 'Dashboards')
@@ -234,7 +235,7 @@ DashboardBrowserComponent = __decorate([
234
235
  export { DashboardBrowserComponent };
235
236
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DashboardBrowserComponent, [{
236
237
  type: Component,
237
- args: [{ selector: 'app-dashboard-browser', template: "<div>\n <mj-resource-browser\n #resourceBrowserDashboard\n ResourceTypeName=\"Dashboards\"\n [EnableCategories]=\"true\"\n [CurrentCategoryID]=\"selectedFolderID\"\n Title=\"Dashboards\"\n DisplayMode=\"Tile\"\n [NewItemOptions]=\"NewItemOptions\"\n (ResourceSelected)=\"onItemClick($event)\"\n (NavigateToParentEvent)=\"navigateToParentFolder()\"\n (EditItemEvent)=\"onBeforeUpdateItemEvent($event)\"\n />\n <kendo-dialog \n [title]=\"selectedDashboard ? 'Update Dashboard' : 'Create New Dashboard'\" \n *ngIf=\"upsertDashboardDialogVisible\" \n (close)=\"toggleUpsertDashboardDialog(false)\"\n [minWidth]=\"250\"\n [width]=\"450\"\n class=\"dialog-wrapper\"\n >\n <div class=\"search\">\n <kendo-label text=\"Name\">\n <kendo-textbox class=\"dashboard-name-input\" [value]=\"upsertDashboardName\" placeholder=\"Enter a name\" (valueChange)=\"onUpsertDashboardNameKeyup($event)\"/>\n </kendo-label>\n </div>\n <br>\n <div class=\"search\">\n <kendo-label text=\"Description\">\n <kendo-textbox [value]=\"upsertDashboardDescription\" placeholder=\"Enter a Description\" (valueChange)=\"onUpsertDashboardDescriptionKeyup($event)\"/>\n </kendo-label>\n </div>\n <kendo-dialog-actions class=\"popup-actions-btn\">\n @if(selectedDashboard){\n <button class=\"cancel-btn\" (click)=\"updateDashboard()\" kendoButton themeColor=\"info\">\n Update\n </button>\n }\n @else {\n <button class=\"cancel-btn\" (click)=\"createDashboard()\" kendoButton themeColor=\"info\">\n Create\n </button>\n }\n <button class=\"yes-btn\" (click)=\"toggleUpsertDashboardDialog(false)\" kendoButton fillMode=\"outline\" themeColor=\"info\">\n Cancel\n </button>\n </kendo-dialog-actions>\n </kendo-dialog>\n</div>\n<!--\n<app-generic-browser-list \n title=\"Dashboards\" \n itemType=\"dashboard\" \n iconName=\"aggregateFields\" \n [items]=\"items\" \n [extraDropdownOptions]=\"extraDropdownOptions\"\n addText=\"Create New Dashboard\"\n ItemEntityName=\"Dashboards\"\n resourceName=\"Dashboard\"\n CategoryEntityName=\"Dashboard Categories\"\n (itemClickEvent)=\"itemClick($event)\" \n (AfterAddFolderEvent)=\"onEvent($event)\"\n (AfterAddItemEvent)=\"onEvent($event)\"\n (AfterDeleteItemEvent)=\"onEvent($event)\"\n (AfterDeleteFolderEvent)=\"onEvent($event)\"\n (BeforeUpdateItemEvent)=\"onBeforeUpdateItemEvent($event)\"\n [selectedFolderID]=\"selectedFolderID\"\n [showLoader]=\"showLoader\"\n [displayAsGrid]=\"displayAsGrid\"\n (viewModeChangeEvent)=\"onViewModeChange($event)\"\n/>\n-->", styles: ["\n.main-area {\n display: flex;\n flex-direction: column;\n height: 100%;\n width: 100%;\n gap: 24px;\n padding: 24px 0;\n}\n.list-view {\n padding: 16px;\n min-width: 300px;\n border-radius: 4px;\n background: #FAFAFA;\n border: none;\n}\n::ng-deep .list-view .k-listview-header, \n::ng-deep .list-view .k-listview-footer {\n border: none;\n}\n::ng-deep .list-view .k-listview-content {\n border: 1px solid rgba(0, 0, 0, 0.08);\n border-radius: 4px;\n background: #fff;\n padding: 16px;\n}\n\n.header,\n.footer {\n color: #424242;\n font-size: 16px;\n height: auto;\n margin:0;\n}\n\n.header {\n color: #424242;\n margin-bottom: 16px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n.header .head-tag {\n display: flex;\n align-items: center;\n gap: 8px;\n color: #424242;\nfont-size: 16px;\nfont-style: normal;\nfont-weight: 400;\nline-height: 20px;\n}\n\n.header .count {\n width: 24px;\n height: 24px;\n min-width: 24px;\n display: flex;\n justify-content: center;\n align-items: center;\n font-size: 10px;\n background: rgba(0, 0, 0, 0.08);\n border-radius: 50%;\n}\n.footer {\n font-size: 14px;\n margin-top: 16px;\n}\n\n.list-item {\n color: #424242;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 30px;\n cursor: pointer;\n margin: 4px;\n}\n.card-container {\n margin: 0;\n padding: 0;\n box-shadow: none;\n}\n.card-header-entity {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n padding-bottom: 20px;\n border-bottom: 1px solid rgba(0, 0, 0, 0.08);\n}\n.card-header-entity .title-wrap h1 {\n color: #424242;\n font-size: 28px;\n font-style: normal;\n font-weight: 300;\n line-height: 28px;\n margin-bottom: 15px;\n}\n.card-header-entity .title-wrap {\n display: flex;\n flex-direction: column;\n}\n.card-header-entity .title-wrap p {\n margin: 0;\n display: flex;\n align-items: center;\n gap: 8px;\n color: #424242;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n}\n\n\n\n\n \n.view-card .view-icon {\n color: var(--sideNav);\n}\n.card-wrapper {\n border: 1px solid rgba(0, 0, 0, 0.08);\n border-radius: 6px;\n width: 100% !important;\n}\n.card-wrapper .k-card-body {\n background: #fff;\n padding: 12px 20px;\n}\n.card-wrapper .view-card {\n overflow: auto;\n display: flex;\n justify-content: space-between;\n align-items: center;\n background: #fafafa;\n padding: 4px 15px;\n}\n.view-card .btn-wrapper {\n display: flex;\n align-items: center;\n}\n\n.k-card-body .view-card-content h5 {\n color: #424242;\n font-size: 16px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n margin-bottom: 0;\n letter-spacing: 0.18px;\n}\n.k-card-body .view-card-content p {\n color: #666;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n height: 48px;\n margin-bottom: 0;\n}\n.card-container {\n padding: 0;\n margin: 0;\n box-shadow: none;\n}\n.card-header-entity {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n padding-bottom: 20px;\n border-bottom: 1px solid rgba(0, 0, 0, 0.08);\n}\n\n.card-header-entity .title-wrap h1 {\n color: #424242;\n font-size: 28px;\n font-style: normal;\n font-weight: 300;\n line-height: 28px;\n margin-bottom: 15px;\n}\n.card-header-entity .title-wrap {\n display: flex;\n flex-direction: column;\n}\n.card-header-entity .title-wrap p {\n margin: 0;\n display: flex;\n align-items: center;\n gap: 8px;\n color: #424242;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n}\n.main-area .card-list {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 20px;\n}\n"] }]
238
+ args: [{ selector: 'app-dashboard-browser', template: "<!-- dashboard-browser.component.html -->\n<div class=\"mj-page-container\">\n <mj-resource-browser\n #resourceBrowserDashboard\n ResourceTypeName=\"Dashboards\"\n [EnableCategories]=\"true\"\n [CurrentCategoryID]=\"selectedFolderID\"\n Title=\"Dashboards\"\n DisplayMode=\"Tile\"\n [NewItemOptions]=\"NewItemOptions\"\n (ResourceSelected)=\"onItemClick($event)\"\n (NavigateToParentEvent)=\"navigateToParentFolder()\"\n (EditItemEvent)=\"onBeforeUpdateItemEvent($event)\"\n />\n\n <!-- Dashboard Creation/Edit Dialog -->\n <kendo-dialog \n [title]=\"selectedDashboard ? 'Update Dashboard' : 'Create New Dashboard'\" \n *ngIf=\"upsertDashboardDialogVisible\" \n (close)=\"toggleUpsertDashboardDialog(false)\"\n [minWidth]=\"400\"\n [width]=\"500\"\n >\n <kendo-formfield orientation=\"vertical\" class=\"mb-3\">\n <kendo-label text=\"Name\" [for]=\"dashboardNameInput\"></kendo-label>\n <kendo-textbox \n #dashboardNameInput\n [value]=\"upsertDashboardName\" \n placeholder=\"Enter dashboard name\" \n [clearButton]=\"true\"\n rounded=\"medium\"\n (valueChange)=\"onUpsertDashboardNameKeyup($event)\"\n />\n </kendo-formfield>\n \n <kendo-formfield orientation=\"vertical\">\n <kendo-label text=\"Description\" [for]=\"dashboardDescInput\"></kendo-label>\n <kendo-textbox \n #dashboardDescInput\n [value]=\"upsertDashboardDescription\" \n placeholder=\"Enter description\" \n [clearButton]=\"true\"\n rounded=\"medium\"\n (valueChange)=\"onUpsertDashboardDescriptionKeyup($event)\"\n />\n </kendo-formfield>\n \n <kendo-dialog-actions>\n <kendo-button \n themeColor=\"primary\"\n rounded=\"medium\"\n (click)=\"selectedDashboard ? updateDashboard() : createDashboard()\">\n <span class=\"button-content\">\n <i class=\"fas fa-check\"></i>\n {{ selectedDashboard ? 'Update' : 'Create' }}\n </span>\n </kendo-button>\n <kendo-button \n fillMode=\"outline\"\n rounded=\"medium\"\n (click)=\"toggleUpsertDashboardDialog(false)\"> \n <span class=\"button-content\">\n <i class=\"fas fa-times\"></i>\n Cancel\n </span>\n </kendo-button>\n </kendo-dialog-actions>\n </kendo-dialog>\n</div>", styles: [":host {\n display: block;\n}\n\n/* Utility margin class */\n.mb-3 {\n margin-bottom: 1rem;\n}\n\n/* Button content wrapper for icons */\n.button-content {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n}"] }]
238
239
  }], () => [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i2.SharedService }], { resourceBrowser: [{
239
240
  type: ViewChild,
240
241
  args: ['resourceBrowserDashboard']
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard-browser.component.js","sourceRoot":"","sources":["../../../src/lib/dashboard-browser-component/dashboard-browser.component.ts","../../../src/lib/dashboard-browser-component/dashboard-browser.component.html"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dashboard-browser.component.js","sourceRoot":"","sources":["../../../src/lib/dashboard-browser-component/dashboard-browser.component.ts","../../../src/lib/dashboard-browser-component/dashboard-browser.component.html"],"names":[],"mappings":"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"}
@@ -552,11 +552,11 @@ export class DashboardPreferencesDialogComponent {
552
552
  i0.ɵɵproperty("disabled", !ctx.hasChanges || ctx.saving);
553
553
  i0.ɵɵadvance();
554
554
  i0.ɵɵconditional(ctx.saving ? 19 : 20);
555
- } }, dependencies: [i1.DefaultValueAccessor, i1.RadioControlValueAccessor, i1.NgControlStatus, i1.NgModel, i2.DialogComponent, i3.LoaderComponent, i4.CdkDropList, i4.CdkDrag], styles: [".dashboard-preferences-dialog[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n.dialog-header[_ngcontent-%COMP%] {\n padding: 20px 24px 16px;\n border-bottom: 1px solid #e0e0e0;\n}\n\n.dialog-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n font-size: 20px;\n font-weight: 600;\n color: #333;\n}\n\n.dialog-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 8px;\n color: #666;\n}\n\n.scope-indicator[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n color: #666;\n}\n\n.scope-indicator[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 6px;\n}\n\n.preference-mode-selector[_ngcontent-%COMP%] {\n margin-top: 12px;\n display: flex;\n gap: 20px;\n}\n\n.preference-mode-selector[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n cursor: pointer;\n font-size: 14px;\n color: #495057;\n}\n\n.preference-mode-selector[_ngcontent-%COMP%] input[type=\"radio\"][_ngcontent-%COMP%] {\n margin: 0;\n}\n\n.dialog-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow: hidden;\n padding: 20px 24px;\n}\n\n.loading-container[_ngcontent-%COMP%], .error-container[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 200px;\n flex-direction: column;\n gap: 12px;\n}\n\n.error-container[_ngcontent-%COMP%] {\n color: #dc3545;\n}\n\n.error-container[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 24px;\n margin-bottom: 8px;\n}\n\n.preferences-panels[_ngcontent-%COMP%] {\n display: flex;\n gap: 20px;\n height: 100%;\n}\n\n.panel[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n border: 1px solid #e0e0e0;\n border-radius: 8px;\n overflow: hidden;\n}\n\n.panel[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0;\n padding: 12px 16px;\n background: #f8f9fa;\n border-bottom: 1px solid #e0e0e0;\n font-size: 14px;\n font-weight: 600;\n color: #495057;\n}\n\n.panel[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 8px;\n color: #6c757d;\n}\n\n.dashboard-list[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 8px;\n min-height: 300px;\n}\n\n.empty-state[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100px;\n color: #6c757d;\n font-style: italic;\n flex-direction: column;\n gap: 8px;\n}\n\n.empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 24px;\n opacity: 0.5;\n}\n\n.dashboard-item[_ngcontent-%COMP%] {\n margin-bottom: 8px;\n border: 1px solid #e0e0e0;\n border-radius: 6px;\n background: white;\n transition: all 0.2s ease;\n cursor: move;\n}\n\n.dashboard-item[_ngcontent-%COMP%]:hover {\n border-color: #007bff;\n box-shadow: 0 2px 4px rgba(0, 123, 255, 0.1);\n}\n\n.dashboard-item.cdk-drag-preview[_ngcontent-%COMP%] {\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n transform: rotate(2deg);\n}\n\n.dashboard-item.cdk-drag-placeholder[_ngcontent-%COMP%] {\n opacity: 0.3;\n border-style: dashed;\n}\n\n.dashboard-item-content[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n padding: 12px;\n gap: 12px;\n}\n\n.drag-handle[_ngcontent-%COMP%] {\n color: #adb5bd;\n cursor: move;\n font-size: 14px;\n}\n\n.order-number[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n background: #007bff;\n color: white;\n border-radius: 50%;\n font-size: 12px;\n font-weight: 600;\n flex-shrink: 0;\n}\n\n.dashboard-info[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.dashboard-name[_ngcontent-%COMP%] {\n font-weight: 500;\n color: #333;\n font-size: 14px;\n}\n\n.dashboard-description[_ngcontent-%COMP%] {\n font-size: 12px;\n color: #6c757d;\n line-height: 1.3;\n}\n\n.add-button[_ngcontent-%COMP%] {\n background: none;\n border: none;\n padding: 4px;\n cursor: pointer;\n color: #28a745;\n border-radius: 4px;\n transition: background-color 0.2s ease;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n opacity: 0.7;\n}\n\n.add-button[_ngcontent-%COMP%]:hover {\n background-color: rgba(40, 167, 69, 0.1);\n opacity: 1;\n}\n\n.remove-button[_ngcontent-%COMP%] {\n background: none;\n border: none;\n padding: 4px;\n cursor: pointer;\n color: #dc3545;\n border-radius: 4px;\n transition: background-color 0.2s ease;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n}\n\n.remove-button[_ngcontent-%COMP%]:hover {\n background-color: rgba(220, 53, 69, 0.1);\n}\n\n.cdk-drop-list-dragging[_ngcontent-%COMP%] .dashboard-item[_ngcontent-%COMP%]:not(.cdk-drag-placeholder) {\n transition: transform 250ms cubic-bezier(0, 0, 0.2, 1);\n}\n\n.dialog-footer[_ngcontent-%COMP%] {\n padding: 16px 24px;\n border-top: 1px solid #e0e0e0;\n display: flex;\n justify-content: flex-end;\n gap: 12px;\n background: #f8f9fa;\n}\n\n.btn[_ngcontent-%COMP%] {\n padding: 8px 16px;\n border-radius: 6px;\n font-size: 14px;\n font-weight: 500;\n border: 1px solid transparent;\n cursor: pointer;\n transition: all 0.2s ease;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.btn-secondary[_ngcontent-%COMP%] {\n background: white;\n border-color: #6c757d;\n color: #6c757d;\n}\n\n.btn-secondary[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: #6c757d;\n color: white;\n}\n\n.btn-primary[_ngcontent-%COMP%] {\n background: #007bff;\n color: white;\n border-color: #007bff;\n}\n\n.btn-primary[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: #0056b3;\n border-color: #0056b3;\n}\n\n\n\n@media (max-width: 768px) {\n .dashboard-preferences-dialog[_ngcontent-%COMP%] {\n width: 95vw;\n max-height: 90vh;\n }\n \n .preferences-panels[_ngcontent-%COMP%] {\n flex-direction: column;\n gap: 16px;\n }\n \n .panel[_ngcontent-%COMP%] {\n min-height: 200px;\n }\n \n .dashboard-list[_ngcontent-%COMP%] {\n min-height: 150px;\n }\n}"] });
555
+ } }, dependencies: [i1.DefaultValueAccessor, i1.RadioControlValueAccessor, i1.NgControlStatus, i1.NgModel, i2.DialogComponent, i3.LoaderComponent, i4.CdkDropList, i4.CdkDrag], styles: [".dashboard-preferences-dialog[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n.dialog-header[_ngcontent-%COMP%] {\n padding: 20px 24px 16px;\n border-bottom: 1px solid #e0e0e0;\n}\n\n.dialog-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n font-size: 20px;\n font-weight: 600;\n color: #333;\n}\n\n.dialog-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 8px;\n color: #666;\n}\n\n.scope-indicator[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n color: #666;\n}\n\n.scope-indicator[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 6px;\n}\n\n.preference-mode-selector[_ngcontent-%COMP%] {\n margin-top: 12px;\n display: flex;\n gap: 20px;\n}\n\n.preference-mode-selector[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n cursor: pointer;\n font-size: 14px;\n color: #495057;\n}\n\n.preference-mode-selector[_ngcontent-%COMP%] input[type=\"radio\"][_ngcontent-%COMP%] {\n margin: 0;\n}\n\n.dialog-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow: hidden;\n padding: 20px 24px;\n}\n\n.loading-container[_ngcontent-%COMP%], .error-container[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 200px;\n flex-direction: column;\n gap: 12px;\n}\n\n.error-container[_ngcontent-%COMP%] {\n color: #dc3545;\n}\n\n.error-container[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 24px;\n margin-bottom: 8px;\n}\n\n.preferences-panels[_ngcontent-%COMP%] {\n display: flex;\n gap: 20px;\n height: 100%;\n}\n\n.panel[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n border: 1px solid #e0e0e0;\n border-radius: 8px;\n overflow: hidden;\n}\n\n.panel[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0;\n padding: 12px 16px;\n background: #f8f9fa;\n border-bottom: 1px solid #e0e0e0;\n font-size: 14px;\n font-weight: 600;\n color: #495057;\n}\n\n.panel[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 8px;\n color: #6c757d;\n}\n\n.dashboard-list[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 8px;\n}\n\n.empty-state[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100px;\n color: #6c757d;\n font-style: italic;\n flex-direction: column;\n gap: 8px;\n}\n\n.empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 24px;\n opacity: 0.5;\n}\n\n.dashboard-item[_ngcontent-%COMP%] {\n margin-bottom: 8px;\n border: 1px solid #e0e0e0;\n border-radius: 6px;\n background: white;\n transition: all 0.2s ease;\n cursor: move;\n}\n\n.dashboard-item[_ngcontent-%COMP%]:hover {\n border-color: #007bff;\n box-shadow: 0 2px 4px rgba(0, 123, 255, 0.1);\n}\n\n.dashboard-item.cdk-drag-preview[_ngcontent-%COMP%] {\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n transform: rotate(2deg);\n}\n\n.dashboard-item.cdk-drag-placeholder[_ngcontent-%COMP%] {\n opacity: 0.3;\n border-style: dashed;\n}\n\n.dashboard-item-content[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n padding: 12px;\n gap: 12px;\n}\n\n.drag-handle[_ngcontent-%COMP%] {\n color: #adb5bd;\n cursor: move;\n font-size: 14px;\n}\n\n.order-number[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n background: #007bff;\n color: white;\n border-radius: 50%;\n font-size: 12px;\n font-weight: 600;\n flex-shrink: 0;\n}\n\n.dashboard-info[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.dashboard-name[_ngcontent-%COMP%] {\n font-weight: 500;\n color: #333;\n font-size: 14px;\n}\n\n.dashboard-description[_ngcontent-%COMP%] {\n font-size: 12px;\n color: #6c757d;\n line-height: 1.3;\n}\n\n.add-button[_ngcontent-%COMP%] {\n background: none;\n border: none;\n padding: 4px;\n cursor: pointer;\n color: #28a745;\n border-radius: 4px;\n transition: background-color 0.2s ease;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n opacity: 0.7;\n}\n\n.add-button[_ngcontent-%COMP%]:hover {\n background-color: rgba(40, 167, 69, 0.1);\n opacity: 1;\n}\n\n.remove-button[_ngcontent-%COMP%] {\n background: none;\n border: none;\n padding: 4px;\n cursor: pointer;\n color: #dc3545;\n border-radius: 4px;\n transition: background-color 0.2s ease;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n}\n\n.remove-button[_ngcontent-%COMP%]:hover {\n background-color: rgba(220, 53, 69, 0.1);\n}\n\n.cdk-drop-list-dragging[_ngcontent-%COMP%] .dashboard-item[_ngcontent-%COMP%]:not(.cdk-drag-placeholder) {\n transition: transform 250ms cubic-bezier(0, 0, 0.2, 1);\n}\n\n.dialog-footer[_ngcontent-%COMP%] {\n padding: 16px 24px;\n border-top: 1px solid #e0e0e0;\n display: flex;\n justify-content: flex-end;\n gap: 12px;\n background: #f8f9fa;\n}\n\n.btn[_ngcontent-%COMP%] {\n padding: 8px 16px;\n border-radius: 6px;\n font-size: 14px;\n font-weight: 500;\n border: 1px solid transparent;\n cursor: pointer;\n transition: all 0.2s ease;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.btn-secondary[_ngcontent-%COMP%] {\n background: white;\n border-color: #6c757d;\n color: #6c757d;\n}\n\n.btn-secondary[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: #6c757d;\n color: white;\n}\n\n.btn-primary[_ngcontent-%COMP%] {\n background: #007bff;\n color: white;\n border-color: #007bff;\n}\n\n.btn-primary[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: #0056b3;\n border-color: #0056b3;\n}\n\n\n\n@media (max-width: 768px) {\n .dashboard-preferences-dialog[_ngcontent-%COMP%] {\n width: 95vw;\n max-height: 90vh;\n }\n \n .preferences-panels[_ngcontent-%COMP%] {\n flex-direction: column;\n gap: 16px;\n }\n \n .panel[_ngcontent-%COMP%] {\n min-height: 200px;\n }\n \n .dashboard-list[_ngcontent-%COMP%] {\n min-height: 150px;\n }\n}"] });
556
556
  }
557
557
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DashboardPreferencesDialogComponent, [{
558
558
  type: Component,
559
- args: [{ selector: 'mj-dashboard-preferences-dialog', template: "<kendo-dialog title=\"Dashboard Preferences\" \n [width]=\"800\" \n [height]=\"600\"\n [minWidth]=\"600\"\n [minHeight]=\"400\"\n (close)=\"onCancel()\">\n<div class=\"dashboard-preferences-dialog\">\n <div class=\"dialog-header\">\n <h3><i class=\"fa-solid fa-sliders\"></i> Dashboard Preferences</h3>\n <p class=\"scope-indicator\">\n @if (scope === 'Global') {\n <i class=\"fa-solid fa-globe\"></i> Global Scope\n } @else {\n <i class=\"fa-solid fa-layer-group\"></i> Application: {{ applicationName }}\n }\n </p>\n @if (isSysAdmin && scope === 'Global') {\n <div class=\"preference-mode-selector\">\n <label>\n <input type=\"radio\" \n name=\"preferenceMode\" \n value=\"personal\" \n [(ngModel)]=\"preferenceMode\"\n (change)=\"onPreferenceModeChange()\">\n Personal Preferences\n </label>\n <label>\n <input type=\"radio\" \n name=\"preferenceMode\" \n value=\"system\" \n [(ngModel)]=\"preferenceMode\"\n (change)=\"onPreferenceModeChange()\">\n System Defaults\n </label>\n </div>\n }\n </div>\n\n <div class=\"dialog-content\">\n @if (loading) {\n <div class=\"loading-container\">\n <kendo-loader></kendo-loader>\n Loading dashboards...\n </div>\n }\n\n @if (error) {\n <div class=\"error-container\">\n <i class=\"fa-solid fa-exclamation-triangle\"></i>\n {{ error }}\n </div>\n }\n\n @if (!loading && !error) {\n <div class=\"preferences-panels\">\n <!-- Available Dashboards Panel -->\n <div class=\"panel available-panel\">\n <h4><i class=\"fa-solid fa-list\"></i> Available Dashboards</h4>\n <div class=\"dashboard-list\" \n cdkDropList \n #availableList=\"cdkDropList\"\n [cdkDropListData]=\"availableDashboards\"\n [cdkDropListConnectedTo]=\"[configuredList]\"\n (cdkDropListDropped)=\"onDrop($event)\">\n \n @if (availableDashboards.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-info-circle\"></i>\n All dashboards are configured\n </div>\n }\n\n @for (dashboard of availableDashboards; track dashboard.ID) {\n <div class=\"dashboard-item available-item\" \n cdkDrag\n [cdkDragData]=\"dashboard\">\n <div class=\"dashboard-item-content\">\n <i class=\"fa-solid fa-grip-vertical drag-handle\"></i>\n <div class=\"dashboard-info\">\n <span class=\"dashboard-name\">{{ dashboard.Name }}</span>\n @if (dashboard.Description) {\n <span class=\"dashboard-description\">{{ dashboard.Description }}</span>\n }\n </div>\n <button type=\"button\" \n class=\"add-button\"\n (click)=\"addDashboard(dashboard)\"\n title=\"Add to configured dashboards\">\n <i class=\"fa-solid fa-plus\"></i>\n </button>\n </div>\n </div>\n }\n </div>\n </div>\n\n <!-- Configured Dashboards Panel -->\n <div class=\"panel configured-panel\">\n <h4><i class=\"fa-solid fa-list-ol\"></i> Configured Dashboards</h4>\n <div class=\"dashboard-list\" \n cdkDropList \n #configuredList=\"cdkDropList\"\n [cdkDropListData]=\"configuredDashboards\"\n [cdkDropListConnectedTo]=\"[availableList]\"\n (cdkDropListDropped)=\"onDrop($event)\">\n \n @if (configuredDashboards.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-info-circle\"></i>\n No dashboards configured\n </div>\n }\n\n @for (dashboard of configuredDashboards; track dashboard.ID; let i = $index) {\n <div class=\"dashboard-item configured-item\" \n cdkDrag\n [cdkDragData]=\"dashboard\">\n <div class=\"dashboard-item-content\">\n <i class=\"fa-solid fa-grip-vertical drag-handle\"></i>\n <span class=\"order-number\">{{ i + 1 }}</span>\n <div class=\"dashboard-info\">\n <span class=\"dashboard-name\">{{ dashboard.Name }}</span>\n @if (dashboard.Description) {\n <span class=\"dashboard-description\">{{ dashboard.Description }}</span>\n }\n </div>\n <button type=\"button\" \n class=\"remove-button\"\n (click)=\"removeDashboard(dashboard)\"\n title=\"Remove from configured dashboards\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n </div>\n }\n </div>\n </div>\n </div>\n }\n </div>\n\n <div class=\"dialog-footer\">\n <button type=\"button\" \n class=\"btn btn-secondary\" \n (click)=\"onCancel()\">\n <i class=\"fa-solid fa-times\"></i> Cancel\n </button>\n <button type=\"button\" \n class=\"btn btn-primary\" \n [disabled]=\"!hasChanges || saving\"\n (click)=\"onSave()\">\n @if (saving) {\n <kendo-loader size=\"small\"></kendo-loader>\n Saving...\n } @else {\n <i class=\"fa-solid fa-check\"></i> Save Changes\n }\n </button>\n </div>\n</div>\n</kendo-dialog>", styles: [".dashboard-preferences-dialog {\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n.dialog-header {\n padding: 20px 24px 16px;\n border-bottom: 1px solid #e0e0e0;\n}\n\n.dialog-header h3 {\n margin: 0 0 8px 0;\n font-size: 20px;\n font-weight: 600;\n color: #333;\n}\n\n.dialog-header h3 i {\n margin-right: 8px;\n color: #666;\n}\n\n.scope-indicator {\n margin: 0;\n font-size: 14px;\n color: #666;\n}\n\n.scope-indicator i {\n margin-right: 6px;\n}\n\n.preference-mode-selector {\n margin-top: 12px;\n display: flex;\n gap: 20px;\n}\n\n.preference-mode-selector label {\n display: flex;\n align-items: center;\n gap: 6px;\n cursor: pointer;\n font-size: 14px;\n color: #495057;\n}\n\n.preference-mode-selector input[type=\"radio\"] {\n margin: 0;\n}\n\n.dialog-content {\n flex: 1;\n overflow: hidden;\n padding: 20px 24px;\n}\n\n.loading-container, .error-container {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 200px;\n flex-direction: column;\n gap: 12px;\n}\n\n.error-container {\n color: #dc3545;\n}\n\n.error-container i {\n font-size: 24px;\n margin-bottom: 8px;\n}\n\n.preferences-panels {\n display: flex;\n gap: 20px;\n height: 100%;\n}\n\n.panel {\n flex: 1;\n display: flex;\n flex-direction: column;\n border: 1px solid #e0e0e0;\n border-radius: 8px;\n overflow: hidden;\n}\n\n.panel h4 {\n margin: 0;\n padding: 12px 16px;\n background: #f8f9fa;\n border-bottom: 1px solid #e0e0e0;\n font-size: 14px;\n font-weight: 600;\n color: #495057;\n}\n\n.panel h4 i {\n margin-right: 8px;\n color: #6c757d;\n}\n\n.dashboard-list {\n flex: 1;\n overflow-y: auto;\n padding: 8px;\n min-height: 300px;\n}\n\n.empty-state {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100px;\n color: #6c757d;\n font-style: italic;\n flex-direction: column;\n gap: 8px;\n}\n\n.empty-state i {\n font-size: 24px;\n opacity: 0.5;\n}\n\n.dashboard-item {\n margin-bottom: 8px;\n border: 1px solid #e0e0e0;\n border-radius: 6px;\n background: white;\n transition: all 0.2s ease;\n cursor: move;\n}\n\n.dashboard-item:hover {\n border-color: #007bff;\n box-shadow: 0 2px 4px rgba(0, 123, 255, 0.1);\n}\n\n.dashboard-item.cdk-drag-preview {\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n transform: rotate(2deg);\n}\n\n.dashboard-item.cdk-drag-placeholder {\n opacity: 0.3;\n border-style: dashed;\n}\n\n.dashboard-item-content {\n display: flex;\n align-items: center;\n padding: 12px;\n gap: 12px;\n}\n\n.drag-handle {\n color: #adb5bd;\n cursor: move;\n font-size: 14px;\n}\n\n.order-number {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n background: #007bff;\n color: white;\n border-radius: 50%;\n font-size: 12px;\n font-weight: 600;\n flex-shrink: 0;\n}\n\n.dashboard-info {\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.dashboard-name {\n font-weight: 500;\n color: #333;\n font-size: 14px;\n}\n\n.dashboard-description {\n font-size: 12px;\n color: #6c757d;\n line-height: 1.3;\n}\n\n.add-button {\n background: none;\n border: none;\n padding: 4px;\n cursor: pointer;\n color: #28a745;\n border-radius: 4px;\n transition: background-color 0.2s ease;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n opacity: 0.7;\n}\n\n.add-button:hover {\n background-color: rgba(40, 167, 69, 0.1);\n opacity: 1;\n}\n\n.remove-button {\n background: none;\n border: none;\n padding: 4px;\n cursor: pointer;\n color: #dc3545;\n border-radius: 4px;\n transition: background-color 0.2s ease;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n}\n\n.remove-button:hover {\n background-color: rgba(220, 53, 69, 0.1);\n}\n\n.cdk-drop-list-dragging .dashboard-item:not(.cdk-drag-placeholder) {\n transition: transform 250ms cubic-bezier(0, 0, 0.2, 1);\n}\n\n.dialog-footer {\n padding: 16px 24px;\n border-top: 1px solid #e0e0e0;\n display: flex;\n justify-content: flex-end;\n gap: 12px;\n background: #f8f9fa;\n}\n\n.btn {\n padding: 8px 16px;\n border-radius: 6px;\n font-size: 14px;\n font-weight: 500;\n border: 1px solid transparent;\n cursor: pointer;\n transition: all 0.2s ease;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.btn:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.btn-secondary {\n background: white;\n border-color: #6c757d;\n color: #6c757d;\n}\n\n.btn-secondary:hover:not(:disabled) {\n background: #6c757d;\n color: white;\n}\n\n.btn-primary {\n background: #007bff;\n color: white;\n border-color: #007bff;\n}\n\n.btn-primary:hover:not(:disabled) {\n background: #0056b3;\n border-color: #0056b3;\n}\n\n/* Responsive design */\n@media (max-width: 768px) {\n .dashboard-preferences-dialog {\n width: 95vw;\n max-height: 90vh;\n }\n \n .preferences-panels {\n flex-direction: column;\n gap: 16px;\n }\n \n .panel {\n min-height: 200px;\n }\n \n .dashboard-list {\n min-height: 150px;\n }\n}"] }]
559
+ args: [{ selector: 'mj-dashboard-preferences-dialog', template: "<kendo-dialog title=\"Dashboard Preferences\" \n [width]=\"800\" \n [height]=\"600\"\n [minWidth]=\"600\"\n [minHeight]=\"400\"\n (close)=\"onCancel()\">\n<div class=\"dashboard-preferences-dialog\">\n <div class=\"dialog-header\">\n <h3><i class=\"fa-solid fa-sliders\"></i> Dashboard Preferences</h3>\n <p class=\"scope-indicator\">\n @if (scope === 'Global') {\n <i class=\"fa-solid fa-globe\"></i> Global Scope\n } @else {\n <i class=\"fa-solid fa-layer-group\"></i> Application: {{ applicationName }}\n }\n </p>\n @if (isSysAdmin && scope === 'Global') {\n <div class=\"preference-mode-selector\">\n <label>\n <input type=\"radio\" \n name=\"preferenceMode\" \n value=\"personal\" \n [(ngModel)]=\"preferenceMode\"\n (change)=\"onPreferenceModeChange()\">\n Personal Preferences\n </label>\n <label>\n <input type=\"radio\" \n name=\"preferenceMode\" \n value=\"system\" \n [(ngModel)]=\"preferenceMode\"\n (change)=\"onPreferenceModeChange()\">\n System Defaults\n </label>\n </div>\n }\n </div>\n\n <div class=\"dialog-content\">\n @if (loading) {\n <div class=\"loading-container\">\n <kendo-loader></kendo-loader>\n Loading dashboards...\n </div>\n }\n\n @if (error) {\n <div class=\"error-container\">\n <i class=\"fa-solid fa-exclamation-triangle\"></i>\n {{ error }}\n </div>\n }\n\n @if (!loading && !error) {\n <div class=\"preferences-panels\">\n <!-- Available Dashboards Panel -->\n <div class=\"panel available-panel\">\n <h4><i class=\"fa-solid fa-list\"></i> Available Dashboards</h4>\n <div class=\"dashboard-list\" \n cdkDropList \n #availableList=\"cdkDropList\"\n [cdkDropListData]=\"availableDashboards\"\n [cdkDropListConnectedTo]=\"[configuredList]\"\n (cdkDropListDropped)=\"onDrop($event)\">\n \n @if (availableDashboards.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-info-circle\"></i>\n All dashboards are configured\n </div>\n }\n\n @for (dashboard of availableDashboards; track dashboard.ID) {\n <div class=\"dashboard-item available-item\" \n cdkDrag\n [cdkDragData]=\"dashboard\">\n <div class=\"dashboard-item-content\">\n <i class=\"fa-solid fa-grip-vertical drag-handle\"></i>\n <div class=\"dashboard-info\">\n <span class=\"dashboard-name\">{{ dashboard.Name }}</span>\n @if (dashboard.Description) {\n <span class=\"dashboard-description\">{{ dashboard.Description }}</span>\n }\n </div>\n <button type=\"button\" \n class=\"add-button\"\n (click)=\"addDashboard(dashboard)\"\n title=\"Add to configured dashboards\">\n <i class=\"fa-solid fa-plus\"></i>\n </button>\n </div>\n </div>\n }\n </div>\n </div>\n\n <!-- Configured Dashboards Panel -->\n <div class=\"panel configured-panel\">\n <h4><i class=\"fa-solid fa-list-ol\"></i> Configured Dashboards</h4>\n <div class=\"dashboard-list\" \n cdkDropList \n #configuredList=\"cdkDropList\"\n [cdkDropListData]=\"configuredDashboards\"\n [cdkDropListConnectedTo]=\"[availableList]\"\n (cdkDropListDropped)=\"onDrop($event)\">\n \n @if (configuredDashboards.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-info-circle\"></i>\n No dashboards configured\n </div>\n }\n\n @for (dashboard of configuredDashboards; track dashboard.ID; let i = $index) {\n <div class=\"dashboard-item configured-item\" \n cdkDrag\n [cdkDragData]=\"dashboard\">\n <div class=\"dashboard-item-content\">\n <i class=\"fa-solid fa-grip-vertical drag-handle\"></i>\n <span class=\"order-number\">{{ i + 1 }}</span>\n <div class=\"dashboard-info\">\n <span class=\"dashboard-name\">{{ dashboard.Name }}</span>\n @if (dashboard.Description) {\n <span class=\"dashboard-description\">{{ dashboard.Description }}</span>\n }\n </div>\n <button type=\"button\" \n class=\"remove-button\"\n (click)=\"removeDashboard(dashboard)\"\n title=\"Remove from configured dashboards\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n </div>\n }\n </div>\n </div>\n </div>\n }\n </div>\n\n <div class=\"dialog-footer\">\n <button type=\"button\" \n class=\"btn btn-secondary\" \n (click)=\"onCancel()\">\n <i class=\"fa-solid fa-times\"></i> Cancel\n </button>\n <button type=\"button\" \n class=\"btn btn-primary\" \n [disabled]=\"!hasChanges || saving\"\n (click)=\"onSave()\">\n @if (saving) {\n <kendo-loader size=\"small\"></kendo-loader>\n Saving...\n } @else {\n <i class=\"fa-solid fa-check\"></i> Save Changes\n }\n </button>\n </div>\n</div>\n</kendo-dialog>", styles: [".dashboard-preferences-dialog {\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n.dialog-header {\n padding: 20px 24px 16px;\n border-bottom: 1px solid #e0e0e0;\n}\n\n.dialog-header h3 {\n margin: 0 0 8px 0;\n font-size: 20px;\n font-weight: 600;\n color: #333;\n}\n\n.dialog-header h3 i {\n margin-right: 8px;\n color: #666;\n}\n\n.scope-indicator {\n margin: 0;\n font-size: 14px;\n color: #666;\n}\n\n.scope-indicator i {\n margin-right: 6px;\n}\n\n.preference-mode-selector {\n margin-top: 12px;\n display: flex;\n gap: 20px;\n}\n\n.preference-mode-selector label {\n display: flex;\n align-items: center;\n gap: 6px;\n cursor: pointer;\n font-size: 14px;\n color: #495057;\n}\n\n.preference-mode-selector input[type=\"radio\"] {\n margin: 0;\n}\n\n.dialog-content {\n flex: 1;\n overflow: hidden;\n padding: 20px 24px;\n}\n\n.loading-container, .error-container {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 200px;\n flex-direction: column;\n gap: 12px;\n}\n\n.error-container {\n color: #dc3545;\n}\n\n.error-container i {\n font-size: 24px;\n margin-bottom: 8px;\n}\n\n.preferences-panels {\n display: flex;\n gap: 20px;\n height: 100%;\n}\n\n.panel {\n flex: 1;\n display: flex;\n flex-direction: column;\n border: 1px solid #e0e0e0;\n border-radius: 8px;\n overflow: hidden;\n}\n\n.panel h4 {\n margin: 0;\n padding: 12px 16px;\n background: #f8f9fa;\n border-bottom: 1px solid #e0e0e0;\n font-size: 14px;\n font-weight: 600;\n color: #495057;\n}\n\n.panel h4 i {\n margin-right: 8px;\n color: #6c757d;\n}\n\n.dashboard-list {\n flex: 1;\n overflow-y: auto;\n padding: 8px;\n}\n\n.empty-state {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100px;\n color: #6c757d;\n font-style: italic;\n flex-direction: column;\n gap: 8px;\n}\n\n.empty-state i {\n font-size: 24px;\n opacity: 0.5;\n}\n\n.dashboard-item {\n margin-bottom: 8px;\n border: 1px solid #e0e0e0;\n border-radius: 6px;\n background: white;\n transition: all 0.2s ease;\n cursor: move;\n}\n\n.dashboard-item:hover {\n border-color: #007bff;\n box-shadow: 0 2px 4px rgba(0, 123, 255, 0.1);\n}\n\n.dashboard-item.cdk-drag-preview {\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n transform: rotate(2deg);\n}\n\n.dashboard-item.cdk-drag-placeholder {\n opacity: 0.3;\n border-style: dashed;\n}\n\n.dashboard-item-content {\n display: flex;\n align-items: center;\n padding: 12px;\n gap: 12px;\n}\n\n.drag-handle {\n color: #adb5bd;\n cursor: move;\n font-size: 14px;\n}\n\n.order-number {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n background: #007bff;\n color: white;\n border-radius: 50%;\n font-size: 12px;\n font-weight: 600;\n flex-shrink: 0;\n}\n\n.dashboard-info {\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.dashboard-name {\n font-weight: 500;\n color: #333;\n font-size: 14px;\n}\n\n.dashboard-description {\n font-size: 12px;\n color: #6c757d;\n line-height: 1.3;\n}\n\n.add-button {\n background: none;\n border: none;\n padding: 4px;\n cursor: pointer;\n color: #28a745;\n border-radius: 4px;\n transition: background-color 0.2s ease;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n opacity: 0.7;\n}\n\n.add-button:hover {\n background-color: rgba(40, 167, 69, 0.1);\n opacity: 1;\n}\n\n.remove-button {\n background: none;\n border: none;\n padding: 4px;\n cursor: pointer;\n color: #dc3545;\n border-radius: 4px;\n transition: background-color 0.2s ease;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n}\n\n.remove-button:hover {\n background-color: rgba(220, 53, 69, 0.1);\n}\n\n.cdk-drop-list-dragging .dashboard-item:not(.cdk-drag-placeholder) {\n transition: transform 250ms cubic-bezier(0, 0, 0.2, 1);\n}\n\n.dialog-footer {\n padding: 16px 24px;\n border-top: 1px solid #e0e0e0;\n display: flex;\n justify-content: flex-end;\n gap: 12px;\n background: #f8f9fa;\n}\n\n.btn {\n padding: 8px 16px;\n border-radius: 6px;\n font-size: 14px;\n font-weight: 500;\n border: 1px solid transparent;\n cursor: pointer;\n transition: all 0.2s ease;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.btn:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.btn-secondary {\n background: white;\n border-color: #6c757d;\n color: #6c757d;\n}\n\n.btn-secondary:hover:not(:disabled) {\n background: #6c757d;\n color: white;\n}\n\n.btn-primary {\n background: #007bff;\n color: white;\n border-color: #007bff;\n}\n\n.btn-primary:hover:not(:disabled) {\n background: #0056b3;\n border-color: #0056b3;\n}\n\n/* Responsive design */\n@media (max-width: 768px) {\n .dashboard-preferences-dialog {\n width: 95vw;\n max-height: 90vh;\n }\n \n .preferences-panels {\n flex-direction: column;\n gap: 16px;\n }\n \n .panel {\n min-height: 200px;\n }\n \n .dashboard-list {\n min-height: 150px;\n }\n}"] }]
560
560
  }], null, { applicationId: [{
561
561
  type: Input
562
562
  }], scope: [{