@memberjunction/ng-dashboards 3.0.0 → 3.1.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/AI/components/agents/agent-configuration.component.js +1 -1
- package/dist/AI/components/agents/agent-editor.component.js +1 -1
- package/dist/AI/components/agents/agent-filter-panel.component.js +1 -1
- package/dist/AI/components/charts/performance-heatmap.component.js +1 -1
- package/dist/AI/components/charts/time-series-chart.component.js +1 -1
- package/dist/AI/components/execution-monitoring.component.js +1 -1
- package/dist/AI/components/models/model-management.component.js +1 -1
- package/dist/AI/components/prompts/model-prompt-priority-matrix.component.js +1 -1
- package/dist/AI/components/prompts/prompt-filter-panel.component.js +1 -1
- package/dist/AI/components/prompts/prompt-management.component.js +1 -1
- package/dist/AI/components/prompts/prompt-version-control.component.js +1 -1
- package/dist/AI/components/system/system-config-filter-panel.component.js +1 -1
- package/dist/AI/components/system/system-configuration.component.js +1 -1
- package/dist/AI/components/widgets/kpi-card.component.js +1 -1
- package/dist/AI/components/widgets/live-execution-widget.component.js +1 -1
- package/dist/Actions/components/actions-list-view.component.js +1 -1
- package/dist/Actions/components/actions-overview.component.js +1 -1
- package/dist/Actions/components/categories-list-view.component.js +1 -1
- package/dist/Actions/components/code-management.component.js +1 -1
- package/dist/Actions/components/entity-integration.component.js +1 -1
- package/dist/Actions/components/execution-monitoring.component.js +1 -1
- package/dist/Actions/components/executions-list-view.component.js +1 -1
- package/dist/Actions/components/scheduled-actions.component.js +1 -1
- package/dist/Actions/components/security-permissions.component.js +1 -1
- package/dist/Communication/communication-dashboard.component.js +1 -1
- package/dist/Communication/communication-logs-resource.component.js +1 -1
- package/dist/Communication/communication-monitor-resource.component.js +1 -1
- package/dist/Communication/communication-providers-resource.component.js +1 -1
- package/dist/Communication/communication-runs-resource.component.js +1 -1
- package/dist/ComponentStudio/component-studio-dashboard.component.js +1 -1
- package/dist/ComponentStudio/components/artifact-load-dialog.component.js +1 -1
- package/dist/ComponentStudio/components/artifact-selection-dialog.component.js +1 -1
- package/dist/ComponentStudio/components/text-import-dialog.component.js +1 -1
- package/dist/Credentials/components/credential-category-edit-panel.component.js +1 -1
- package/dist/Credentials/components/credential-edit-panel.component.js +1 -1
- package/dist/Credentials/components/credential-type-edit-panel.component.js +1 -1
- package/dist/Credentials/components/credentials-audit-resource.component.js +1 -1
- package/dist/Credentials/components/credentials-categories-resource.component.js +1 -1
- package/dist/Credentials/components/credentials-list-resource.component.js +1 -1
- package/dist/Credentials/components/credentials-overview-resource.component.js +1 -1
- package/dist/Credentials/components/credentials-types-resource.component.js +1 -1
- package/dist/Credentials/credentials-dashboard.component.js +1 -1
- package/dist/DashboardBrowser/dashboard-browser-resource.component.d.ts +225 -0
- package/dist/DashboardBrowser/dashboard-browser-resource.component.d.ts.map +1 -0
- package/dist/DashboardBrowser/dashboard-browser-resource.component.js +1038 -0
- package/dist/DashboardBrowser/dashboard-browser-resource.component.js.map +1 -0
- package/dist/DashboardBrowser/dashboard-share-dialog.component.d.ts +116 -0
- package/dist/DashboardBrowser/dashboard-share-dialog.component.d.ts.map +1 -0
- package/dist/DashboardBrowser/dashboard-share-dialog.component.js +549 -0
- package/dist/DashboardBrowser/dashboard-share-dialog.component.js.map +1 -0
- package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.js +1 -1
- package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.js +1 -1
- package/dist/DataExplorer/components/view-selector/view-selector.component.js +1 -1
- package/dist/DataExplorer/data-explorer-dashboard.component.d.ts +2 -1
- package/dist/DataExplorer/data-explorer-dashboard.component.d.ts.map +1 -1
- package/dist/DataExplorer/data-explorer-dashboard.component.js +74 -55
- package/dist/DataExplorer/data-explorer-dashboard.component.js.map +1 -1
- package/dist/DataExplorer/data-explorer-resource.component.d.ts +38 -0
- package/dist/DataExplorer/data-explorer-resource.component.d.ts.map +1 -0
- package/dist/DataExplorer/data-explorer-resource.component.js +153 -0
- package/dist/DataExplorer/data-explorer-resource.component.js.map +1 -0
- package/dist/DataExplorer/index.d.ts +1 -0
- package/dist/DataExplorer/index.d.ts.map +1 -1
- package/dist/DataExplorer/index.js +2 -0
- package/dist/DataExplorer/index.js.map +1 -1
- package/dist/EntityAdmin/entity-admin-dashboard.component.js +1 -1
- package/dist/Home/home-application.d.ts +53 -0
- package/dist/Home/home-application.d.ts.map +1 -0
- package/dist/Home/home-application.js +148 -0
- package/dist/Home/home-application.js.map +1 -0
- package/dist/Home/home-dashboard.component.d.ts +10 -10
- package/dist/Home/home-dashboard.component.d.ts.map +1 -1
- package/dist/Home/home-dashboard.component.js +43 -41
- package/dist/Home/home-dashboard.component.js.map +1 -1
- package/dist/Lists/components/lists-browse-resource.component.js +1 -1
- package/dist/Lists/components/lists-categories-resource.component.js +1 -1
- package/dist/Lists/components/lists-my-lists-resource.component.js +1 -1
- package/dist/Lists/components/lists-operations-resource.component.js +1 -1
- package/dist/Lists/components/venn-diagram/venn-diagram.component.js +1 -1
- package/dist/QueryBrowser/query-browser-resource.component.d.ts +101 -0
- package/dist/QueryBrowser/query-browser-resource.component.d.ts.map +1 -0
- package/dist/QueryBrowser/query-browser-resource.component.js +662 -0
- package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -0
- package/dist/Scheduling/components/scheduling-health-resource.component.js +1 -1
- package/dist/Scheduling/components/scheduling-health.component.js +1 -1
- package/dist/Scheduling/components/scheduling-history-resource.component.js +1 -1
- package/dist/Scheduling/components/scheduling-history.component.js +1 -1
- package/dist/Scheduling/components/scheduling-jobs-resource.component.js +1 -1
- package/dist/Scheduling/components/scheduling-jobs.component.js +1 -1
- package/dist/Scheduling/components/scheduling-monitor-resource.component.js +1 -1
- package/dist/Scheduling/components/scheduling-monitoring.component.js +1 -1
- package/dist/Scheduling/components/scheduling-types-resource.component.js +1 -1
- package/dist/Scheduling/components/scheduling-types.component.js +1 -1
- package/dist/Scheduling/scheduling-dashboard.component.js +1 -1
- package/dist/SystemDiagnostics/system-diagnostics.component.d.ts +3 -3
- package/dist/SystemDiagnostics/system-diagnostics.component.d.ts.map +1 -1
- package/dist/SystemDiagnostics/system-diagnostics.component.js +7 -20
- package/dist/SystemDiagnostics/system-diagnostics.component.js.map +1 -1
- package/dist/Testing/components/testing-analytics-resource.component.js +1 -1
- package/dist/Testing/components/testing-analytics.component.js +1 -1
- package/dist/Testing/components/testing-execution-resource.component.js +1 -1
- package/dist/Testing/components/testing-execution.component.js +1 -1
- package/dist/Testing/components/testing-feedback-resource.component.js +1 -1
- package/dist/Testing/components/testing-feedback.component.js +1 -1
- package/dist/Testing/components/testing-overview-resource.component.js +1 -1
- package/dist/Testing/components/testing-overview.component.js +1 -1
- package/dist/Testing/components/testing-version-comparison.component.js +1 -1
- package/dist/Testing/components/testing-version-resource.component.js +1 -1
- package/dist/Testing/components/widgets/oracle-breakdown-table.component.js +1 -1
- package/dist/Testing/components/widgets/suite-tree.component.js +2 -2
- package/dist/Testing/components/widgets/test-run-detail-panel.component.js +1 -1
- package/dist/Testing/testing-dashboard.component.js +1 -1
- package/dist/module.d.ts +61 -55
- package/dist/module.d.ts.map +1 -1
- package/dist/module.js +49 -9
- package/dist/module.js.map +1 -1
- package/dist/public-api.d.ts +5 -0
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +25 -1
- package/dist/public-api.js.map +1 -1
- package/package.json +32 -30
- package/dist/AI/ai-dashboard.component.d.ts +0 -62
- package/dist/AI/ai-dashboard.component.d.ts.map +0 -1
- package/dist/AI/ai-dashboard.component.js +0 -338
- package/dist/AI/ai-dashboard.component.js.map +0 -1
- package/dist/AI/components/models/model-management-v2.component.d.ts +0 -96
- package/dist/AI/components/models/model-management-v2.component.d.ts.map +0 -1
- package/dist/AI/components/models/model-management-v2.component.js +0 -981
- package/dist/AI/components/models/model-management-v2.component.js.map +0 -1
- package/dist/AI/components/prompts/prompt-management-v2.component.d.ts +0 -97
- package/dist/AI/components/prompts/prompt-management-v2.component.d.ts.map +0 -1
- package/dist/AI/components/prompts/prompt-management-v2.component.js +0 -811
- package/dist/AI/components/prompts/prompt-management-v2.component.js.map +0 -1
- package/dist/Actions/actions-management-dashboard.component.d.ts +0 -52
- package/dist/Actions/actions-management-dashboard.component.d.ts.map +0 -1
- package/dist/Actions/actions-management-dashboard.component.js +0 -308
- package/dist/Actions/actions-management-dashboard.component.js.map +0 -1
- package/dist/DataExplorer/components/view-config-panel/view-config-panel.component.d.ts +0 -245
- package/dist/DataExplorer/components/view-config-panel/view-config-panel.component.d.ts.map +0 -1
- package/dist/DataExplorer/components/view-config-panel/view-config-panel.component.js +0 -1143
- package/dist/DataExplorer/components/view-config-panel/view-config-panel.component.js.map +0 -1
- package/dist/EntityAdmin/components/entity-details.component.d.ts +0 -50
- package/dist/EntityAdmin/components/entity-details.component.d.ts.map +0 -1
- package/dist/EntityAdmin/components/entity-details.component.js +0 -680
- package/dist/EntityAdmin/components/entity-details.component.js.map +0 -1
- package/dist/EntityAdmin/components/entity-filter-panel.component.d.ts +0 -31
- package/dist/EntityAdmin/components/entity-filter-panel.component.d.ts.map +0 -1
- package/dist/EntityAdmin/components/entity-filter-panel.component.js +0 -160
- package/dist/EntityAdmin/components/entity-filter-panel.component.js.map +0 -1
- package/dist/EntityAdmin/components/erd-composite.component.d.ts +0 -73
- package/dist/EntityAdmin/components/erd-composite.component.d.ts.map +0 -1
- package/dist/EntityAdmin/components/erd-composite.component.js +0 -271
- package/dist/EntityAdmin/components/erd-composite.component.js.map +0 -1
- package/dist/EntityAdmin/components/erd-diagram.component.d.ts +0 -47
- package/dist/EntityAdmin/components/erd-diagram.component.d.ts.map +0 -1
- package/dist/EntityAdmin/components/erd-diagram.component.js +0 -618
- package/dist/EntityAdmin/components/erd-diagram.component.js.map +0 -1
- package/dist/generic/base-dashboard.d.ts +0 -65
- package/dist/generic/base-dashboard.d.ts.map +0 -1
- package/dist/generic/base-dashboard.js +0 -74
- package/dist/generic/base-dashboard.js.map +0 -1
|
@@ -0,0 +1,549 @@
|
|
|
1
|
+
import { Component, Input, Output, EventEmitter, ViewEncapsulation } from '@angular/core';
|
|
2
|
+
import { Metadata, RunView } from '@memberjunction/core';
|
|
3
|
+
import { DashboardEngine } from '@memberjunction/core-entities';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/common";
|
|
6
|
+
import * as i2 from "@angular/forms";
|
|
7
|
+
import * as i3 from "@progress/kendo-angular-dialog";
|
|
8
|
+
const _forTrack0 = ($index, $item) => $item.User.ID;
|
|
9
|
+
const _forTrack1 = ($index, $item) => $item.ID;
|
|
10
|
+
function DashboardShareDialogComponent_kendo_window_0_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
11
|
+
i0.ɵɵelementStart(0, "div", 5);
|
|
12
|
+
i0.ɵɵelement(1, "i", 27);
|
|
13
|
+
i0.ɵɵelementStart(2, "span");
|
|
14
|
+
i0.ɵɵtext(3);
|
|
15
|
+
i0.ɵɵelementEnd()();
|
|
16
|
+
} if (rf & 2) {
|
|
17
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
18
|
+
i0.ɵɵadvance(3);
|
|
19
|
+
i0.ɵɵtextInterpolate(ctx_r1.Error);
|
|
20
|
+
} }
|
|
21
|
+
function DashboardShareDialogComponent_kendo_window_0_Conditional_12_For_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
22
|
+
i0.ɵɵelementStart(0, "span", 32);
|
|
23
|
+
i0.ɵɵtext(1);
|
|
24
|
+
i0.ɵɵelementEnd();
|
|
25
|
+
} if (rf & 2) {
|
|
26
|
+
const user_r4 = i0.ɵɵnextContext().$implicit;
|
|
27
|
+
i0.ɵɵadvance();
|
|
28
|
+
i0.ɵɵtextInterpolate(user_r4.Email);
|
|
29
|
+
} }
|
|
30
|
+
function DashboardShareDialogComponent_kendo_window_0_Conditional_12_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
31
|
+
const _r3 = i0.ɵɵgetCurrentView();
|
|
32
|
+
i0.ɵɵelementStart(0, "button", 29);
|
|
33
|
+
i0.ɵɵlistener("click", function DashboardShareDialogComponent_kendo_window_0_Conditional_12_For_2_Template_button_click_0_listener() { const user_r4 = i0.ɵɵrestoreView(_r3).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.addUserShare(user_r4)); });
|
|
34
|
+
i0.ɵɵelementStart(1, "span", 30);
|
|
35
|
+
i0.ɵɵtext(2);
|
|
36
|
+
i0.ɵɵelementEnd();
|
|
37
|
+
i0.ɵɵelementStart(3, "span", 31);
|
|
38
|
+
i0.ɵɵtext(4);
|
|
39
|
+
i0.ɵɵelementEnd();
|
|
40
|
+
i0.ɵɵtemplate(5, DashboardShareDialogComponent_kendo_window_0_Conditional_12_For_2_Conditional_5_Template, 2, 1, "span", 32);
|
|
41
|
+
i0.ɵɵelement(6, "i", 33);
|
|
42
|
+
i0.ɵɵelementEnd();
|
|
43
|
+
} if (rf & 2) {
|
|
44
|
+
const user_r4 = ctx.$implicit;
|
|
45
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
46
|
+
i0.ɵɵproperty("disabled", ctx_r1.IsLoading);
|
|
47
|
+
i0.ɵɵadvance(2);
|
|
48
|
+
i0.ɵɵtextInterpolate(ctx_r1.getUserInitials(user_r4));
|
|
49
|
+
i0.ɵɵadvance(2);
|
|
50
|
+
i0.ɵɵtextInterpolate(user_r4.Name);
|
|
51
|
+
i0.ɵɵadvance();
|
|
52
|
+
i0.ɵɵconditional(user_r4.Email ? 5 : -1);
|
|
53
|
+
} }
|
|
54
|
+
function DashboardShareDialogComponent_kendo_window_0_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
55
|
+
i0.ɵɵelementStart(0, "div", 10);
|
|
56
|
+
i0.ɵɵrepeaterCreate(1, DashboardShareDialogComponent_kendo_window_0_Conditional_12_For_2_Template, 7, 4, "button", 28, _forTrack1);
|
|
57
|
+
i0.ɵɵelementEnd();
|
|
58
|
+
} if (rf & 2) {
|
|
59
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
60
|
+
i0.ɵɵadvance();
|
|
61
|
+
i0.ɵɵrepeater(ctx_r1.FilteredAvailableUsers);
|
|
62
|
+
} }
|
|
63
|
+
function DashboardShareDialogComponent_kendo_window_0_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
64
|
+
i0.ɵɵelementStart(0, "div", 11);
|
|
65
|
+
i0.ɵɵtext(1);
|
|
66
|
+
i0.ɵɵelementEnd();
|
|
67
|
+
} if (rf & 2) {
|
|
68
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
69
|
+
i0.ɵɵadvance();
|
|
70
|
+
i0.ɵɵtextInterpolate1(" No users found matching \"", ctx_r1.UserSearchFilter, "\" ");
|
|
71
|
+
} }
|
|
72
|
+
function DashboardShareDialogComponent_kendo_window_0_For_26_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
73
|
+
i0.ɵɵelementStart(0, "span", 35);
|
|
74
|
+
i0.ɵɵtext(1, "New");
|
|
75
|
+
i0.ɵɵelementEnd();
|
|
76
|
+
} }
|
|
77
|
+
function DashboardShareDialogComponent_kendo_window_0_For_26_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
78
|
+
i0.ɵɵelementStart(0, "span", 36);
|
|
79
|
+
i0.ɵɵtext(1);
|
|
80
|
+
i0.ɵɵelementEnd();
|
|
81
|
+
} if (rf & 2) {
|
|
82
|
+
const share_r6 = i0.ɵɵnextContext().$implicit;
|
|
83
|
+
i0.ɵɵadvance();
|
|
84
|
+
i0.ɵɵtextInterpolate(share_r6.User.Email);
|
|
85
|
+
} }
|
|
86
|
+
function DashboardShareDialogComponent_kendo_window_0_For_26_Template(rf, ctx) { if (rf & 1) {
|
|
87
|
+
const _r5 = i0.ɵɵgetCurrentView();
|
|
88
|
+
i0.ɵɵelementStart(0, "div", 34)(1, "span", 30);
|
|
89
|
+
i0.ɵɵtext(2);
|
|
90
|
+
i0.ɵɵelementEnd();
|
|
91
|
+
i0.ɵɵelementStart(3, "div", 16)(4, "span", 17);
|
|
92
|
+
i0.ɵɵtext(5);
|
|
93
|
+
i0.ɵɵtemplate(6, DashboardShareDialogComponent_kendo_window_0_For_26_Conditional_6_Template, 2, 0, "span", 35);
|
|
94
|
+
i0.ɵɵelementEnd();
|
|
95
|
+
i0.ɵɵtemplate(7, DashboardShareDialogComponent_kendo_window_0_For_26_Conditional_7_Template, 2, 1, "span", 36);
|
|
96
|
+
i0.ɵɵelementEnd();
|
|
97
|
+
i0.ɵɵelementStart(8, "div", 37)(9, "label", 38);
|
|
98
|
+
i0.ɵɵelement(10, "input", 39)(11, "i", 40);
|
|
99
|
+
i0.ɵɵelementEnd();
|
|
100
|
+
i0.ɵɵelementStart(12, "label", 41)(13, "input", 42);
|
|
101
|
+
i0.ɵɵlistener("change", function DashboardShareDialogComponent_kendo_window_0_For_26_Template_input_change_13_listener() { const share_r6 = i0.ɵɵrestoreView(_r5).$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.toggleCanEdit(share_r6)); });
|
|
102
|
+
i0.ɵɵelementEnd();
|
|
103
|
+
i0.ɵɵelement(14, "i", 43);
|
|
104
|
+
i0.ɵɵelementEnd();
|
|
105
|
+
i0.ɵɵelementStart(15, "label", 44)(16, "input", 42);
|
|
106
|
+
i0.ɵɵlistener("change", function DashboardShareDialogComponent_kendo_window_0_For_26_Template_input_change_16_listener() { const share_r6 = i0.ɵɵrestoreView(_r5).$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.toggleCanDelete(share_r6)); });
|
|
107
|
+
i0.ɵɵelementEnd();
|
|
108
|
+
i0.ɵɵelement(17, "i", 45);
|
|
109
|
+
i0.ɵɵelementEnd();
|
|
110
|
+
i0.ɵɵelementStart(18, "label", 46)(19, "input", 42);
|
|
111
|
+
i0.ɵɵlistener("change", function DashboardShareDialogComponent_kendo_window_0_For_26_Template_input_change_19_listener() { const share_r6 = i0.ɵɵrestoreView(_r5).$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.toggleCanShare(share_r6)); });
|
|
112
|
+
i0.ɵɵelementEnd();
|
|
113
|
+
i0.ɵɵelement(20, "i", 47);
|
|
114
|
+
i0.ɵɵelementEnd()();
|
|
115
|
+
i0.ɵɵelementStart(21, "button", 48);
|
|
116
|
+
i0.ɵɵlistener("click", function DashboardShareDialogComponent_kendo_window_0_For_26_Template_button_click_21_listener() { const share_r6 = i0.ɵɵrestoreView(_r5).$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.removeUserShare(share_r6)); });
|
|
117
|
+
i0.ɵɵelement(22, "i", 49);
|
|
118
|
+
i0.ɵɵelementEnd()();
|
|
119
|
+
} if (rf & 2) {
|
|
120
|
+
const share_r6 = ctx.$implicit;
|
|
121
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
122
|
+
i0.ɵɵclassProp("share-person-new", share_r6.IsNew)("share-person-modified", share_r6.Permission.Dirty);
|
|
123
|
+
i0.ɵɵadvance(2);
|
|
124
|
+
i0.ɵɵtextInterpolate(ctx_r1.getUserInitials(share_r6.User));
|
|
125
|
+
i0.ɵɵadvance(3);
|
|
126
|
+
i0.ɵɵtextInterpolate1(" ", share_r6.User.Name, " ");
|
|
127
|
+
i0.ɵɵadvance();
|
|
128
|
+
i0.ɵɵconditional(share_r6.IsNew ? 6 : -1);
|
|
129
|
+
i0.ɵɵadvance();
|
|
130
|
+
i0.ɵɵconditional(share_r6.User.Email ? 7 : -1);
|
|
131
|
+
i0.ɵɵadvance(3);
|
|
132
|
+
i0.ɵɵproperty("checked", share_r6.Permission.CanRead);
|
|
133
|
+
i0.ɵɵadvance(3);
|
|
134
|
+
i0.ɵɵproperty("checked", share_r6.Permission.CanEdit);
|
|
135
|
+
i0.ɵɵadvance(3);
|
|
136
|
+
i0.ɵɵproperty("checked", share_r6.Permission.CanDelete);
|
|
137
|
+
i0.ɵɵadvance(3);
|
|
138
|
+
i0.ɵɵproperty("checked", share_r6.Permission.CanShare);
|
|
139
|
+
} }
|
|
140
|
+
function DashboardShareDialogComponent_kendo_window_0_Conditional_27_Template(rf, ctx) { if (rf & 1) {
|
|
141
|
+
i0.ɵɵelementStart(0, "div", 20);
|
|
142
|
+
i0.ɵɵelement(1, "i", 50);
|
|
143
|
+
i0.ɵɵelementStart(2, "span");
|
|
144
|
+
i0.ɵɵtext(3, "Not shared with anyone yet");
|
|
145
|
+
i0.ɵɵelementEnd()();
|
|
146
|
+
} }
|
|
147
|
+
function DashboardShareDialogComponent_kendo_window_0_Conditional_28_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
148
|
+
const _r7 = i0.ɵɵgetCurrentView();
|
|
149
|
+
i0.ɵɵelementStart(0, "div", 51)(1, "span", 52);
|
|
150
|
+
i0.ɵɵtext(2);
|
|
151
|
+
i0.ɵɵelementEnd();
|
|
152
|
+
i0.ɵɵelementStart(3, "span", 53);
|
|
153
|
+
i0.ɵɵtext(4);
|
|
154
|
+
i0.ɵɵelementEnd();
|
|
155
|
+
i0.ɵɵelementStart(5, "button", 54);
|
|
156
|
+
i0.ɵɵlistener("click", function DashboardShareDialogComponent_kendo_window_0_Conditional_28_For_2_Template_button_click_5_listener() { const share_r8 = i0.ɵɵrestoreView(_r7).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.undoRemove(share_r8)); });
|
|
157
|
+
i0.ɵɵelement(6, "i", 55);
|
|
158
|
+
i0.ɵɵtext(7, " Undo ");
|
|
159
|
+
i0.ɵɵelementEnd()();
|
|
160
|
+
} if (rf & 2) {
|
|
161
|
+
const share_r8 = ctx.$implicit;
|
|
162
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
163
|
+
i0.ɵɵadvance(2);
|
|
164
|
+
i0.ɵɵtextInterpolate(ctx_r1.getUserInitials(share_r8.User));
|
|
165
|
+
i0.ɵɵadvance(2);
|
|
166
|
+
i0.ɵɵtextInterpolate(share_r8.User.Name);
|
|
167
|
+
} }
|
|
168
|
+
function DashboardShareDialogComponent_kendo_window_0_Conditional_28_Template(rf, ctx) { if (rf & 1) {
|
|
169
|
+
i0.ɵɵelementStart(0, "div", 21);
|
|
170
|
+
i0.ɵɵrepeaterCreate(1, DashboardShareDialogComponent_kendo_window_0_Conditional_28_For_2_Template, 8, 2, "div", 51, _forTrack0);
|
|
171
|
+
i0.ɵɵelementEnd();
|
|
172
|
+
} if (rf & 2) {
|
|
173
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
174
|
+
i0.ɵɵadvance();
|
|
175
|
+
i0.ɵɵrepeater(ctx_r1.RemovedShares);
|
|
176
|
+
} }
|
|
177
|
+
function DashboardShareDialogComponent_kendo_window_0_Conditional_30_Template(rf, ctx) { if (rf & 1) {
|
|
178
|
+
i0.ɵɵelementStart(0, "span", 23);
|
|
179
|
+
i0.ɵɵelement(1, "i", 56);
|
|
180
|
+
i0.ɵɵtext(2, " Unsaved changes ");
|
|
181
|
+
i0.ɵɵelementEnd();
|
|
182
|
+
} }
|
|
183
|
+
function DashboardShareDialogComponent_kendo_window_0_Conditional_35_Template(rf, ctx) { if (rf & 1) {
|
|
184
|
+
i0.ɵɵelement(0, "i", 57);
|
|
185
|
+
i0.ɵɵtext(1, " Saving... ");
|
|
186
|
+
} }
|
|
187
|
+
function DashboardShareDialogComponent_kendo_window_0_Conditional_36_Template(rf, ctx) { if (rf & 1) {
|
|
188
|
+
i0.ɵɵtext(0, " Save ");
|
|
189
|
+
} }
|
|
190
|
+
function DashboardShareDialogComponent_kendo_window_0_Template(rf, ctx) { if (rf & 1) {
|
|
191
|
+
const _r1 = i0.ɵɵgetCurrentView();
|
|
192
|
+
i0.ɵɵelementStart(0, "kendo-window", 1);
|
|
193
|
+
i0.ɵɵlistener("close", function DashboardShareDialogComponent_kendo_window_0_Template_kendo_window_close_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onCancel()); });
|
|
194
|
+
i0.ɵɵelementStart(1, "kendo-window-titlebar")(2, "div", 2);
|
|
195
|
+
i0.ɵɵelement(3, "i", 3);
|
|
196
|
+
i0.ɵɵelementStart(4, "span");
|
|
197
|
+
i0.ɵɵtext(5);
|
|
198
|
+
i0.ɵɵelementEnd()()();
|
|
199
|
+
i0.ɵɵelementStart(6, "div", 4);
|
|
200
|
+
i0.ɵɵtemplate(7, DashboardShareDialogComponent_kendo_window_0_Conditional_7_Template, 4, 1, "div", 5);
|
|
201
|
+
i0.ɵɵelementStart(8, "div", 6)(9, "div", 7);
|
|
202
|
+
i0.ɵɵelement(10, "i", 8);
|
|
203
|
+
i0.ɵɵelementStart(11, "input", 9);
|
|
204
|
+
i0.ɵɵtwoWayListener("ngModelChange", function DashboardShareDialogComponent_kendo_window_0_Template_input_ngModelChange_11_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.UserSearchFilter, $event) || (ctx_r1.UserSearchFilter = $event); return i0.ɵɵresetView($event); });
|
|
205
|
+
i0.ɵɵelementEnd()();
|
|
206
|
+
i0.ɵɵtemplate(12, DashboardShareDialogComponent_kendo_window_0_Conditional_12_Template, 3, 0, "div", 10)(13, DashboardShareDialogComponent_kendo_window_0_Conditional_13_Template, 2, 1, "div", 11);
|
|
207
|
+
i0.ɵɵelementEnd();
|
|
208
|
+
i0.ɵɵelementStart(14, "div", 6)(15, "div", 12);
|
|
209
|
+
i0.ɵɵtext(16, "People with access");
|
|
210
|
+
i0.ɵɵelementEnd();
|
|
211
|
+
i0.ɵɵelementStart(17, "div", 13)(18, "span", 14);
|
|
212
|
+
i0.ɵɵelement(19, "i", 15);
|
|
213
|
+
i0.ɵɵelementEnd();
|
|
214
|
+
i0.ɵɵelementStart(20, "div", 16)(21, "span", 17);
|
|
215
|
+
i0.ɵɵtext(22);
|
|
216
|
+
i0.ɵɵelementEnd();
|
|
217
|
+
i0.ɵɵelementStart(23, "span", 18);
|
|
218
|
+
i0.ɵɵtext(24, "Owner");
|
|
219
|
+
i0.ɵɵelementEnd()()();
|
|
220
|
+
i0.ɵɵrepeaterCreate(25, DashboardShareDialogComponent_kendo_window_0_For_26_Template, 23, 12, "div", 19, _forTrack0);
|
|
221
|
+
i0.ɵɵtemplate(27, DashboardShareDialogComponent_kendo_window_0_Conditional_27_Template, 4, 0, "div", 20)(28, DashboardShareDialogComponent_kendo_window_0_Conditional_28_Template, 3, 0, "div", 21);
|
|
222
|
+
i0.ɵɵelementEnd();
|
|
223
|
+
i0.ɵɵelementStart(29, "div", 22);
|
|
224
|
+
i0.ɵɵtemplate(30, DashboardShareDialogComponent_kendo_window_0_Conditional_30_Template, 3, 0, "span", 23);
|
|
225
|
+
i0.ɵɵelementStart(31, "div", 24)(32, "button", 25);
|
|
226
|
+
i0.ɵɵlistener("click", function DashboardShareDialogComponent_kendo_window_0_Template_button_click_32_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onCancel()); });
|
|
227
|
+
i0.ɵɵtext(33, " Cancel ");
|
|
228
|
+
i0.ɵɵelementEnd();
|
|
229
|
+
i0.ɵɵelementStart(34, "button", 26);
|
|
230
|
+
i0.ɵɵlistener("click", function DashboardShareDialogComponent_kendo_window_0_Template_button_click_34_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onSave()); });
|
|
231
|
+
i0.ɵɵtemplate(35, DashboardShareDialogComponent_kendo_window_0_Conditional_35_Template, 2, 0)(36, DashboardShareDialogComponent_kendo_window_0_Conditional_36_Template, 1, 0);
|
|
232
|
+
i0.ɵɵelementEnd()()()()();
|
|
233
|
+
} if (rf & 2) {
|
|
234
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
235
|
+
i0.ɵɵproperty("width", 560)("minHeight", 200)("resizable", false)("draggable", true)("keepContent", true);
|
|
236
|
+
i0.ɵɵadvance(5);
|
|
237
|
+
i0.ɵɵtextInterpolate1("Share \"", ctx_r1.Dashboard == null ? null : ctx_r1.Dashboard.Name, "\"");
|
|
238
|
+
i0.ɵɵadvance(2);
|
|
239
|
+
i0.ɵɵconditional(ctx_r1.Error ? 7 : -1);
|
|
240
|
+
i0.ɵɵadvance(4);
|
|
241
|
+
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.UserSearchFilter);
|
|
242
|
+
i0.ɵɵproperty("disabled", ctx_r1.IsLoading);
|
|
243
|
+
i0.ɵɵadvance();
|
|
244
|
+
i0.ɵɵconditional(ctx_r1.FilteredAvailableUsers.length > 0 ? 12 : -1);
|
|
245
|
+
i0.ɵɵadvance();
|
|
246
|
+
i0.ɵɵconditional(ctx_r1.UserSearchFilter && ctx_r1.FilteredAvailableUsers.length === 0 ? 13 : -1);
|
|
247
|
+
i0.ɵɵadvance(9);
|
|
248
|
+
i0.ɵɵtextInterpolate((ctx_r1.Dashboard == null ? null : ctx_r1.Dashboard.User) || "You");
|
|
249
|
+
i0.ɵɵadvance(3);
|
|
250
|
+
i0.ɵɵrepeater(ctx_r1.ActiveShares);
|
|
251
|
+
i0.ɵɵadvance(2);
|
|
252
|
+
i0.ɵɵconditional(ctx_r1.ActiveShares.length === 0 ? 27 : -1);
|
|
253
|
+
i0.ɵɵadvance();
|
|
254
|
+
i0.ɵɵconditional(ctx_r1.RemovedShares.length > 0 ? 28 : -1);
|
|
255
|
+
i0.ɵɵadvance(2);
|
|
256
|
+
i0.ɵɵconditional(ctx_r1.HasChanges ? 30 : -1);
|
|
257
|
+
i0.ɵɵadvance(4);
|
|
258
|
+
i0.ɵɵproperty("disabled", !ctx_r1.HasChanges || ctx_r1.IsLoading);
|
|
259
|
+
i0.ɵɵadvance();
|
|
260
|
+
i0.ɵɵconditional(ctx_r1.IsLoading ? 35 : 36);
|
|
261
|
+
} }
|
|
262
|
+
/**
|
|
263
|
+
* Dialog component for sharing dashboards with other users.
|
|
264
|
+
* Allows setting granular permissions (CanRead, CanEdit, CanDelete, CanShare).
|
|
265
|
+
*/
|
|
266
|
+
export class DashboardShareDialogComponent {
|
|
267
|
+
cdr;
|
|
268
|
+
Visible = false;
|
|
269
|
+
Dashboard = null;
|
|
270
|
+
Result = new EventEmitter();
|
|
271
|
+
/** Current shares for this dashboard */
|
|
272
|
+
UserShares = [];
|
|
273
|
+
/** All available users for sharing (excludes owner and already shared) */
|
|
274
|
+
AvailableUsers = [];
|
|
275
|
+
/** All users in the system */
|
|
276
|
+
allUsers = [];
|
|
277
|
+
/** Loading state */
|
|
278
|
+
IsLoading = false;
|
|
279
|
+
/** Error message to display */
|
|
280
|
+
Error = null;
|
|
281
|
+
/** Search filter for available users */
|
|
282
|
+
UserSearchFilter = '';
|
|
283
|
+
constructor(cdr) {
|
|
284
|
+
this.cdr = cdr;
|
|
285
|
+
}
|
|
286
|
+
ngOnChanges(changes) {
|
|
287
|
+
if (changes['Visible'] && this.Visible && this.Dashboard) {
|
|
288
|
+
this.resetDialog();
|
|
289
|
+
this.loadData();
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* Reset dialog state
|
|
294
|
+
*/
|
|
295
|
+
resetDialog() {
|
|
296
|
+
this.Error = null;
|
|
297
|
+
this.IsLoading = false;
|
|
298
|
+
this.UserShares = [];
|
|
299
|
+
this.AvailableUsers = [];
|
|
300
|
+
this.UserSearchFilter = '';
|
|
301
|
+
}
|
|
302
|
+
/**
|
|
303
|
+
* Load existing shares and available users
|
|
304
|
+
*/
|
|
305
|
+
async loadData() {
|
|
306
|
+
if (!this.Dashboard)
|
|
307
|
+
return;
|
|
308
|
+
this.IsLoading = true;
|
|
309
|
+
this.cdr.detectChanges();
|
|
310
|
+
try {
|
|
311
|
+
const md = new Metadata();
|
|
312
|
+
const rv = new RunView();
|
|
313
|
+
// Load all users
|
|
314
|
+
const usersResult = await rv.RunView({
|
|
315
|
+
EntityName: 'Users',
|
|
316
|
+
ExtraFilter: "IsActive = 1",
|
|
317
|
+
OrderBy: 'Name',
|
|
318
|
+
ResultType: 'entity_object'
|
|
319
|
+
});
|
|
320
|
+
if (usersResult.Success) {
|
|
321
|
+
this.allUsers = usersResult.Results;
|
|
322
|
+
}
|
|
323
|
+
// Get existing shares from DashboardEngine
|
|
324
|
+
const existingShares = DashboardEngine.Instance.GetDashboardShares(this.Dashboard.ID);
|
|
325
|
+
// Build user shares list
|
|
326
|
+
this.UserShares = [];
|
|
327
|
+
for (const permission of existingShares) {
|
|
328
|
+
const user = this.allUsers.find(u => u.ID === permission.UserID);
|
|
329
|
+
if (user) {
|
|
330
|
+
this.UserShares.push({
|
|
331
|
+
Permission: permission,
|
|
332
|
+
User: user,
|
|
333
|
+
IsNew: false,
|
|
334
|
+
MarkedForRemoval: false
|
|
335
|
+
});
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
// Update available users
|
|
339
|
+
this.updateAvailableUsers();
|
|
340
|
+
}
|
|
341
|
+
catch (error) {
|
|
342
|
+
console.error('Error loading share data:', error);
|
|
343
|
+
this.Error = 'Failed to load sharing data. Please try again.';
|
|
344
|
+
}
|
|
345
|
+
finally {
|
|
346
|
+
this.IsLoading = false;
|
|
347
|
+
this.cdr.detectChanges();
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
/**
|
|
351
|
+
* Update the list of available users (excludes owner and already shared)
|
|
352
|
+
*/
|
|
353
|
+
updateAvailableUsers() {
|
|
354
|
+
if (!this.Dashboard)
|
|
355
|
+
return;
|
|
356
|
+
const sharedUserIds = new Set(this.UserShares
|
|
357
|
+
.filter(s => !s.MarkedForRemoval)
|
|
358
|
+
.map(s => s.User.ID));
|
|
359
|
+
// Exclude dashboard owner and already shared users
|
|
360
|
+
this.AvailableUsers = this.allUsers.filter(user => user.ID !== this.Dashboard.UserID && !sharedUserIds.has(user.ID));
|
|
361
|
+
}
|
|
362
|
+
/**
|
|
363
|
+
* Get filtered available users based on search
|
|
364
|
+
*/
|
|
365
|
+
get FilteredAvailableUsers() {
|
|
366
|
+
if (!this.UserSearchFilter.trim()) {
|
|
367
|
+
return this.AvailableUsers.slice(0, 10); // Show first 10 by default
|
|
368
|
+
}
|
|
369
|
+
const filter = this.UserSearchFilter.toLowerCase();
|
|
370
|
+
return this.AvailableUsers
|
|
371
|
+
.filter(user => user.Name.toLowerCase().includes(filter) ||
|
|
372
|
+
(user.Email && user.Email.toLowerCase().includes(filter)))
|
|
373
|
+
.slice(0, 10);
|
|
374
|
+
}
|
|
375
|
+
/**
|
|
376
|
+
* Check if there are unsaved changes
|
|
377
|
+
*/
|
|
378
|
+
get HasChanges() {
|
|
379
|
+
return this.UserShares.some(s => s.IsNew || s.MarkedForRemoval || s.Permission.Dirty);
|
|
380
|
+
}
|
|
381
|
+
/**
|
|
382
|
+
* Add a user to the share list
|
|
383
|
+
*/
|
|
384
|
+
async addUserShare(user) {
|
|
385
|
+
if (!this.Dashboard)
|
|
386
|
+
return;
|
|
387
|
+
const md = new Metadata();
|
|
388
|
+
const permission = await md.GetEntityObject('MJ: Dashboard Permissions');
|
|
389
|
+
permission.NewRecord();
|
|
390
|
+
permission.DashboardID = this.Dashboard.ID;
|
|
391
|
+
permission.UserID = user.ID;
|
|
392
|
+
permission.CanRead = true; // Default to read access
|
|
393
|
+
permission.CanEdit = false;
|
|
394
|
+
permission.CanDelete = false;
|
|
395
|
+
permission.CanShare = false;
|
|
396
|
+
this.UserShares.push({
|
|
397
|
+
Permission: permission,
|
|
398
|
+
User: user,
|
|
399
|
+
IsNew: true,
|
|
400
|
+
MarkedForRemoval: false
|
|
401
|
+
});
|
|
402
|
+
this.updateAvailableUsers();
|
|
403
|
+
this.UserSearchFilter = '';
|
|
404
|
+
this.cdr.detectChanges();
|
|
405
|
+
}
|
|
406
|
+
/**
|
|
407
|
+
* Mark a share for removal
|
|
408
|
+
*/
|
|
409
|
+
removeUserShare(share) {
|
|
410
|
+
if (share.IsNew) {
|
|
411
|
+
// If it's new, just remove from the array
|
|
412
|
+
this.UserShares = this.UserShares.filter(s => s !== share);
|
|
413
|
+
}
|
|
414
|
+
else {
|
|
415
|
+
// Otherwise mark for removal
|
|
416
|
+
share.MarkedForRemoval = true;
|
|
417
|
+
}
|
|
418
|
+
this.updateAvailableUsers();
|
|
419
|
+
this.cdr.detectChanges();
|
|
420
|
+
}
|
|
421
|
+
/**
|
|
422
|
+
* Undo removal of a share
|
|
423
|
+
*/
|
|
424
|
+
undoRemove(share) {
|
|
425
|
+
share.MarkedForRemoval = false;
|
|
426
|
+
this.updateAvailableUsers();
|
|
427
|
+
this.cdr.detectChanges();
|
|
428
|
+
}
|
|
429
|
+
/**
|
|
430
|
+
* Get shares that are not marked for removal
|
|
431
|
+
*/
|
|
432
|
+
get ActiveShares() {
|
|
433
|
+
return this.UserShares.filter(s => !s.MarkedForRemoval);
|
|
434
|
+
}
|
|
435
|
+
/**
|
|
436
|
+
* Get shares marked for removal
|
|
437
|
+
*/
|
|
438
|
+
get RemovedShares() {
|
|
439
|
+
return this.UserShares.filter(s => s.MarkedForRemoval);
|
|
440
|
+
}
|
|
441
|
+
/**
|
|
442
|
+
* Toggle CanEdit permission (also enables CanRead)
|
|
443
|
+
*/
|
|
444
|
+
toggleCanEdit(share) {
|
|
445
|
+
share.Permission.CanEdit = !share.Permission.CanEdit;
|
|
446
|
+
if (share.Permission.CanEdit) {
|
|
447
|
+
share.Permission.CanRead = true;
|
|
448
|
+
}
|
|
449
|
+
this.cdr.detectChanges();
|
|
450
|
+
}
|
|
451
|
+
/**
|
|
452
|
+
* Toggle CanDelete permission (also enables CanRead and CanEdit)
|
|
453
|
+
*/
|
|
454
|
+
toggleCanDelete(share) {
|
|
455
|
+
share.Permission.CanDelete = !share.Permission.CanDelete;
|
|
456
|
+
if (share.Permission.CanDelete) {
|
|
457
|
+
share.Permission.CanRead = true;
|
|
458
|
+
share.Permission.CanEdit = true;
|
|
459
|
+
}
|
|
460
|
+
this.cdr.detectChanges();
|
|
461
|
+
}
|
|
462
|
+
/**
|
|
463
|
+
* Toggle CanShare permission (also enables CanRead)
|
|
464
|
+
*/
|
|
465
|
+
toggleCanShare(share) {
|
|
466
|
+
share.Permission.CanShare = !share.Permission.CanShare;
|
|
467
|
+
if (share.Permission.CanShare) {
|
|
468
|
+
share.Permission.CanRead = true;
|
|
469
|
+
}
|
|
470
|
+
this.cdr.detectChanges();
|
|
471
|
+
}
|
|
472
|
+
/**
|
|
473
|
+
* Save all permission changes
|
|
474
|
+
*/
|
|
475
|
+
async onSave() {
|
|
476
|
+
if (!this.HasChanges) {
|
|
477
|
+
this.onCancel();
|
|
478
|
+
return;
|
|
479
|
+
}
|
|
480
|
+
this.IsLoading = true;
|
|
481
|
+
this.Error = null;
|
|
482
|
+
this.cdr.detectChanges();
|
|
483
|
+
try {
|
|
484
|
+
// Process removals first
|
|
485
|
+
for (const share of this.UserShares.filter(s => s.MarkedForRemoval && !s.IsNew)) {
|
|
486
|
+
const deleted = await share.Permission.Delete();
|
|
487
|
+
if (!deleted) {
|
|
488
|
+
throw new Error(`Failed to remove share for ${share.User.Name}`);
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
// Process new and modified shares
|
|
492
|
+
for (const share of this.UserShares.filter(s => !s.MarkedForRemoval && (s.IsNew || s.Permission.Dirty))) {
|
|
493
|
+
const saved = await share.Permission.Save();
|
|
494
|
+
if (!saved) {
|
|
495
|
+
throw new Error(`Failed to save share for ${share.User.Name}: ${share.Permission.LatestResult?.Message}`);
|
|
496
|
+
}
|
|
497
|
+
}
|
|
498
|
+
// Refresh the engine cache
|
|
499
|
+
await DashboardEngine.Instance.Config(true);
|
|
500
|
+
this.Result.emit({
|
|
501
|
+
Action: 'save',
|
|
502
|
+
Dashboard: this.Dashboard
|
|
503
|
+
});
|
|
504
|
+
}
|
|
505
|
+
catch (error) {
|
|
506
|
+
console.error('Error saving shares:', error);
|
|
507
|
+
this.Error = error instanceof Error ? error.message : 'Failed to save sharing settings.';
|
|
508
|
+
}
|
|
509
|
+
finally {
|
|
510
|
+
this.IsLoading = false;
|
|
511
|
+
this.cdr.detectChanges();
|
|
512
|
+
}
|
|
513
|
+
}
|
|
514
|
+
/**
|
|
515
|
+
* Cancel and close the dialog
|
|
516
|
+
*/
|
|
517
|
+
onCancel() {
|
|
518
|
+
this.Result.emit({ Action: 'cancel' });
|
|
519
|
+
}
|
|
520
|
+
/**
|
|
521
|
+
* Get initials for a user (for avatar display)
|
|
522
|
+
*/
|
|
523
|
+
getUserInitials(user) {
|
|
524
|
+
const name = user.Name || user.Email || '?';
|
|
525
|
+
const parts = name.split(' ');
|
|
526
|
+
if (parts.length >= 2) {
|
|
527
|
+
return (parts[0][0] + parts[1][0]).toUpperCase();
|
|
528
|
+
}
|
|
529
|
+
return name.substring(0, 2).toUpperCase();
|
|
530
|
+
}
|
|
531
|
+
static ɵfac = function DashboardShareDialogComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || DashboardShareDialogComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
|
|
532
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DashboardShareDialogComponent, selectors: [["mj-dashboard-share-dialog"]], inputs: { Visible: "Visible", Dashboard: "Dashboard" }, outputs: { Result: "Result" }, features: [i0.ɵɵNgOnChangesFeature], decls: 1, vars: 1, consts: [["class", "mj-share-dialog-window", "kendoWindowContainer", "", 3, "width", "minHeight", "resizable", "draggable", "keepContent", "close", 4, "ngIf"], ["kendoWindowContainer", "", 1, "mj-share-dialog-window", 3, "close", "width", "minHeight", "resizable", "draggable", "keepContent"], [1, "share-dialog-header"], [1, "fa-solid", "fa-share-nodes"], [1, "share-dialog-body"], [1, "share-alert", "share-alert-error"], [1, "share-section"], [1, "share-search-box"], [1, "fa-solid", "fa-search"], ["type", "text", "placeholder", "Add people by name or email...", 3, "ngModelChange", "ngModel", "disabled"], [1, "share-user-dropdown"], [1, "share-no-results"], [1, "share-section-label"], [1, "share-person", "share-owner"], [1, "share-avatar", "share-avatar-owner"], [1, "fa-solid", "fa-crown"], [1, "share-person-info"], [1, "share-person-name"], [1, "share-person-role"], [1, "share-person", 3, "share-person-new", "share-person-modified"], [1, "share-empty"], [1, "share-removed-section"], [1, "share-footer"], [1, "share-changes-hint"], [1, "share-footer-actions"], ["type", "button", 1, "share-btn", "share-btn-secondary", 3, "click"], ["type", "button", 1, "share-btn", "share-btn-primary", 3, "click", "disabled"], [1, "fa-solid", "fa-exclamation-triangle"], ["type", "button", 1, "share-user-option", 3, "disabled"], ["type", "button", 1, "share-user-option", 3, "click", "disabled"], [1, "share-avatar"], [1, "share-user-name"], [1, "share-user-email"], [1, "fa-solid", "fa-plus"], [1, "share-person"], [1, "share-badge-new"], [1, "share-person-email"], [1, "share-permissions"], ["title", "Can view", 1, "share-perm"], ["type", "checkbox", "disabled", "", 3, "checked"], [1, "fa-solid", "fa-eye"], ["title", "Can edit", 1, "share-perm"], ["type", "checkbox", 3, "change", "checked"], [1, "fa-solid", "fa-edit"], ["title", "Can delete", 1, "share-perm"], [1, "fa-solid", "fa-trash"], ["title", "Can share", 1, "share-perm"], [1, "fa-solid", "fa-share"], ["type", "button", "title", "Remove", 1, "share-remove-btn", 3, "click"], [1, "fa-solid", "fa-times"], [1, "fa-solid", "fa-user-lock"], [1, "share-removed-item"], [1, "share-avatar", "share-avatar-removed"], [1, "share-removed-name"], ["type", "button", 1, "share-undo-btn", 3, "click"], [1, "fa-solid", "fa-undo"], [1, "fa-solid", "fa-circle"], [1, "fa-solid", "fa-spinner", "fa-spin"]], template: function DashboardShareDialogComponent_Template(rf, ctx) { if (rf & 1) {
|
|
533
|
+
i0.ɵɵtemplate(0, DashboardShareDialogComponent_kendo_window_0_Template, 37, 17, "kendo-window", 0);
|
|
534
|
+
} if (rf & 2) {
|
|
535
|
+
i0.ɵɵproperty("ngIf", ctx.Visible);
|
|
536
|
+
} }, dependencies: [i1.NgIf, i2.DefaultValueAccessor, i2.NgControlStatus, i2.NgModel, i3.WindowComponent, i3.WindowTitleBarComponent, i3.WindowContainerDirective], styles: ["/* Dashboard Share Dialog - Compact Design */\n\n/* Window Styling - use specific class to override Kendo defaults */\n.mj-share-dialog-window.k-window {\n border-radius: 12px !important;\n box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2) !important;\n overflow: hidden !important;\n}\n\n.mj-share-dialog-window .k-window-titlebar {\n background: #3f51b5 !important;\n border: none !important;\n padding: 16px 20px !important;\n}\n\n.mj-share-dialog-window .k-window-titlebar .k-window-title {\n display: none !important;\n}\n\n.mj-share-dialog-window .k-window-titlebar .k-window-actions .k-button {\n background: rgba(255, 255, 255, 0.15) !important;\n border: none !important;\n color: #fff !important;\n border-radius: 4px !important;\n}\n\n.mj-share-dialog-window .k-window-titlebar .k-window-actions .k-button:hover {\n background: rgba(255, 255, 255, 0.25) !important;\n}\n\n.mj-share-dialog-window .k-window-content {\n padding: 0 !important;\n background: #fff !important;\n}\n\n/* Header */\n.share-dialog-header {\n display: flex;\n align-items: center;\n gap: 10px;\n color: #fff;\n font-size: 16px;\n font-weight: 500;\n}\n\n.share-dialog-header i {\n font-size: 18px;\n opacity: 0.9;\n}\n\n/* Body */\n.share-dialog-body {\n padding: 0;\n}\n\n/* Alert */\n.share-alert {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 12px 20px;\n font-size: 13px;\n}\n\n.share-alert-error {\n background: #ffebee;\n color: #c62828;\n border-bottom: 1px solid #ffcdd2;\n}\n\n/* Sections */\n.share-section {\n padding: 16px 20px;\n}\n\n.share-section:not(:last-child) {\n border-bottom: 1px solid #e0e0e0;\n}\n\n.share-section-label {\n font-size: 11px;\n font-weight: 600;\n color: #757575;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin-bottom: 12px;\n}\n\n/* Search Box */\n.share-search-box {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 14px;\n background: #f5f5f5;\n border-radius: 8px;\n border: 1px solid transparent;\n transition: all 0.15s;\n}\n\n.share-search-box:focus-within {\n background: #fff;\n border-color: #3f51b5;\n box-shadow: 0 0 0 3px rgba(63, 81, 181, 0.1);\n}\n\n.share-search-box i {\n color: #9e9e9e;\n font-size: 14px;\n}\n\n.share-search-box input {\n flex: 1;\n border: none;\n background: transparent;\n font-size: 14px;\n outline: none;\n}\n\n.share-search-box input::placeholder {\n color: #9e9e9e;\n}\n\n/* User Dropdown */\n.share-user-dropdown {\n margin-top: 8px;\n max-height: 180px;\n overflow-y: auto;\n border: 1px solid #e0e0e0;\n border-radius: 8px;\n background: #fafafa;\n}\n\n.share-user-option {\n display: flex;\n align-items: center;\n gap: 10px;\n width: 100%;\n padding: 10px 12px;\n border: none;\n background: transparent;\n cursor: pointer;\n text-align: left;\n transition: background 0.1s;\n}\n\n.share-user-option:hover {\n background: rgba(63, 81, 181, 0.08);\n}\n\n.share-user-option:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.share-user-option .share-user-name {\n flex: 1;\n font-size: 14px;\n font-weight: 500;\n color: #212121;\n}\n\n.share-user-option .share-user-email {\n font-size: 12px;\n color: #757575;\n margin-right: auto;\n}\n\n.share-user-option i.fa-plus {\n color: #3f51b5;\n font-size: 12px;\n opacity: 0;\n transition: opacity 0.1s;\n}\n\n.share-user-option:hover i.fa-plus {\n opacity: 1;\n}\n\n.share-no-results {\n padding: 16px;\n text-align: center;\n color: #757575;\n font-size: 13px;\n}\n\n/* Avatar */\n.share-avatar {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n background: linear-gradient(135deg, #5c6bc0, #3f51b5);\n color: #fff;\n font-size: 12px;\n font-weight: 600;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.share-avatar-owner {\n background: linear-gradient(135deg, #ffc107, #ff9800);\n font-size: 14px;\n}\n\n.share-avatar-removed {\n background: #bdbdbd;\n}\n\n/* Person Row */\n.share-person {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 10px 0;\n}\n\n.share-person:not(:last-child) {\n border-bottom: 1px solid #f0f0f0;\n}\n\n.share-person-new {\n background: rgba(76, 175, 80, 0.05);\n margin: 0 -20px;\n padding: 10px 20px;\n}\n\n.share-person-modified {\n background: rgba(33, 150, 243, 0.05);\n margin: 0 -20px;\n padding: 10px 20px;\n}\n\n.share-person-info {\n flex: 1;\n min-width: 0;\n}\n\n.share-person-name {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 14px;\n font-weight: 500;\n color: #212121;\n}\n\n.share-person-email {\n font-size: 12px;\n color: #757575;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.share-person-role {\n font-size: 12px;\n color: #ff9800;\n font-weight: 500;\n}\n\n.share-badge-new {\n padding: 2px 6px;\n background: #4caf50;\n color: #fff;\n font-size: 10px;\n font-weight: 600;\n border-radius: 4px;\n}\n\n/* Permissions */\n.share-permissions {\n display: flex;\n gap: 4px;\n}\n\n.share-perm {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border-radius: 4px;\n cursor: pointer;\n transition: all 0.1s;\n position: relative;\n}\n\n.share-perm input {\n position: absolute;\n opacity: 0;\n cursor: pointer;\n}\n\n.share-perm i {\n font-size: 12px;\n color: #bdbdbd;\n transition: color 0.1s;\n}\n\n.share-perm:hover {\n background: #f0f0f0;\n}\n\n.share-perm input:checked + i {\n color: #3f51b5;\n}\n\n.share-perm input:disabled + i {\n color: #3f51b5;\n opacity: 0.7;\n}\n\n/* Remove Button */\n.share-remove-btn {\n width: 28px;\n height: 28px;\n border: none;\n background: transparent;\n color: #bdbdbd;\n border-radius: 4px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.1s;\n}\n\n.share-remove-btn:hover {\n background: #ffebee;\n color: #f44336;\n}\n\n/* Empty State */\n.share-empty {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 20px;\n color: #9e9e9e;\n font-size: 13px;\n background: #fafafa;\n border-radius: 8px;\n justify-content: center;\n}\n\n.share-empty i {\n font-size: 16px;\n}\n\n/* Removed Section */\n.share-removed-section {\n margin-top: 12px;\n padding: 12px;\n background: #fff3e0;\n border-radius: 8px;\n border: 1px solid #ffe0b2;\n}\n\n.share-removed-item {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 6px 0;\n}\n\n.share-removed-name {\n flex: 1;\n font-size: 13px;\n color: #757575;\n text-decoration: line-through;\n}\n\n.share-undo-btn {\n padding: 4px 10px;\n border: none;\n background: transparent;\n color: #f57c00;\n font-size: 12px;\n font-weight: 500;\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.share-undo-btn:hover {\n text-decoration: underline;\n}\n\n/* Footer */\n.share-footer {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n background: #fafafa;\n border-top: 1px solid #e0e0e0;\n}\n\n.share-changes-hint {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: #3f51b5;\n}\n\n.share-changes-hint i {\n font-size: 6px;\n}\n\n.share-footer-actions {\n display: flex;\n gap: 10px;\n margin-left: auto;\n}\n\n.share-btn {\n padding: 8px 18px;\n border-radius: 6px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.15s;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.share-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.share-btn-secondary {\n background: #fff;\n border: 1px solid #d0d0d0;\n color: #666;\n}\n\n.share-btn-secondary:hover:not(:disabled) {\n background: #f5f5f5;\n border-color: #bdbdbd;\n}\n\n.share-btn-primary {\n background: #3f51b5;\n border: none;\n color: #fff;\n}\n\n.share-btn-primary:hover:not(:disabled) {\n background: #303f9f;\n box-shadow: 0 2px 8px rgba(63, 81, 181, 0.3);\n}\n\n/* Owner row specific styling */\n.share-owner {\n background: linear-gradient(135deg, #fff8e1, #ffecb3);\n margin: 0 -20px;\n padding: 10px 20px;\n border-radius: 0;\n}\n"], encapsulation: 2 });
|
|
537
|
+
}
|
|
538
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DashboardShareDialogComponent, [{
|
|
539
|
+
type: Component,
|
|
540
|
+
args: [{ selector: 'mj-dashboard-share-dialog', encapsulation: ViewEncapsulation.None, template: "<kendo-window\n *ngIf=\"Visible\"\n [width]=\"560\"\n [minHeight]=\"200\"\n [resizable]=\"false\"\n [draggable]=\"true\"\n [keepContent]=\"true\"\n (close)=\"onCancel()\"\n class=\"mj-share-dialog-window\"\n kendoWindowContainer>\n\n <kendo-window-titlebar>\n <div class=\"share-dialog-header\">\n <i class=\"fa-solid fa-share-nodes\"></i>\n <span>Share \"{{ Dashboard?.Name }}\"</span>\n </div>\n </kendo-window-titlebar>\n\n <div class=\"share-dialog-body\">\n <!-- Error Alert -->\n @if (Error) {\n <div class=\"share-alert share-alert-error\">\n <i class=\"fa-solid fa-exclamation-triangle\"></i>\n <span>{{ Error }}</span>\n </div>\n }\n\n <!-- Add Users Section -->\n <div class=\"share-section\">\n <div class=\"share-search-box\">\n <i class=\"fa-solid fa-search\"></i>\n <input\n type=\"text\"\n placeholder=\"Add people by name or email...\"\n [(ngModel)]=\"UserSearchFilter\"\n [disabled]=\"IsLoading\">\n </div>\n\n <!-- Available Users Dropdown -->\n @if (FilteredAvailableUsers.length > 0) {\n <div class=\"share-user-dropdown\">\n @for (user of FilteredAvailableUsers; track user.ID) {\n <button type=\"button\" class=\"share-user-option\" (click)=\"addUserShare(user)\" [disabled]=\"IsLoading\">\n <span class=\"share-avatar\">{{ getUserInitials(user) }}</span>\n <span class=\"share-user-name\">{{ user.Name }}</span>\n @if (user.Email) {\n <span class=\"share-user-email\">{{ user.Email }}</span>\n }\n <i class=\"fa-solid fa-plus\"></i>\n </button>\n }\n </div>\n }\n @if (UserSearchFilter && FilteredAvailableUsers.length === 0) {\n <div class=\"share-no-results\">\n No users found matching \"{{ UserSearchFilter }}\"\n </div>\n }\n </div>\n\n <!-- People with Access -->\n <div class=\"share-section\">\n <div class=\"share-section-label\">People with access</div>\n\n <!-- Owner -->\n <div class=\"share-person share-owner\">\n <span class=\"share-avatar share-avatar-owner\">\n <i class=\"fa-solid fa-crown\"></i>\n </span>\n <div class=\"share-person-info\">\n <span class=\"share-person-name\">{{ Dashboard?.User || 'You' }}</span>\n <span class=\"share-person-role\">Owner</span>\n </div>\n </div>\n\n <!-- Shared Users -->\n @for (share of ActiveShares; track share.User.ID) {\n <div class=\"share-person\" [class.share-person-new]=\"share.IsNew\" [class.share-person-modified]=\"share.Permission.Dirty\">\n <span class=\"share-avatar\">{{ getUserInitials(share.User) }}</span>\n <div class=\"share-person-info\">\n <span class=\"share-person-name\">\n {{ share.User.Name }}\n @if (share.IsNew) {\n <span class=\"share-badge-new\">New</span>\n }\n </span>\n @if (share.User.Email) {\n <span class=\"share-person-email\">{{ share.User.Email }}</span>\n }\n </div>\n <div class=\"share-permissions\">\n <label class=\"share-perm\" title=\"Can view\">\n <input type=\"checkbox\" [checked]=\"share.Permission.CanRead\" disabled>\n <i class=\"fa-solid fa-eye\"></i>\n </label>\n <label class=\"share-perm\" title=\"Can edit\">\n <input type=\"checkbox\" [checked]=\"share.Permission.CanEdit\" (change)=\"toggleCanEdit(share)\">\n <i class=\"fa-solid fa-edit\"></i>\n </label>\n <label class=\"share-perm\" title=\"Can delete\">\n <input type=\"checkbox\" [checked]=\"share.Permission.CanDelete\" (change)=\"toggleCanDelete(share)\">\n <i class=\"fa-solid fa-trash\"></i>\n </label>\n <label class=\"share-perm\" title=\"Can share\">\n <input type=\"checkbox\" [checked]=\"share.Permission.CanShare\" (change)=\"toggleCanShare(share)\">\n <i class=\"fa-solid fa-share\"></i>\n </label>\n </div>\n <button type=\"button\" class=\"share-remove-btn\" (click)=\"removeUserShare(share)\" title=\"Remove\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n }\n\n @if (ActiveShares.length === 0) {\n <div class=\"share-empty\">\n <i class=\"fa-solid fa-user-lock\"></i>\n <span>Not shared with anyone yet</span>\n </div>\n }\n\n <!-- Pending Removals -->\n @if (RemovedShares.length > 0) {\n <div class=\"share-removed-section\">\n @for (share of RemovedShares; track share.User.ID) {\n <div class=\"share-removed-item\">\n <span class=\"share-avatar share-avatar-removed\">{{ getUserInitials(share.User) }}</span>\n <span class=\"share-removed-name\">{{ share.User.Name }}</span>\n <button type=\"button\" class=\"share-undo-btn\" (click)=\"undoRemove(share)\">\n <i class=\"fa-solid fa-undo\"></i> Undo\n </button>\n </div>\n }\n </div>\n }\n </div>\n\n <!-- Footer -->\n <div class=\"share-footer\">\n @if (HasChanges) {\n <span class=\"share-changes-hint\">\n <i class=\"fa-solid fa-circle\"></i> Unsaved changes\n </span>\n }\n <div class=\"share-footer-actions\">\n <button type=\"button\" class=\"share-btn share-btn-secondary\" (click)=\"onCancel()\">\n Cancel\n </button>\n <button\n type=\"button\"\n class=\"share-btn share-btn-primary\"\n (click)=\"onSave()\"\n [disabled]=\"!HasChanges || IsLoading\">\n @if (IsLoading) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Saving...\n } @else {\n Save\n }\n </button>\n </div>\n </div>\n </div>\n</kendo-window>\n", styles: ["/* Dashboard Share Dialog - Compact Design */\n\n/* Window Styling - use specific class to override Kendo defaults */\n.mj-share-dialog-window.k-window {\n border-radius: 12px !important;\n box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2) !important;\n overflow: hidden !important;\n}\n\n.mj-share-dialog-window .k-window-titlebar {\n background: #3f51b5 !important;\n border: none !important;\n padding: 16px 20px !important;\n}\n\n.mj-share-dialog-window .k-window-titlebar .k-window-title {\n display: none !important;\n}\n\n.mj-share-dialog-window .k-window-titlebar .k-window-actions .k-button {\n background: rgba(255, 255, 255, 0.15) !important;\n border: none !important;\n color: #fff !important;\n border-radius: 4px !important;\n}\n\n.mj-share-dialog-window .k-window-titlebar .k-window-actions .k-button:hover {\n background: rgba(255, 255, 255, 0.25) !important;\n}\n\n.mj-share-dialog-window .k-window-content {\n padding: 0 !important;\n background: #fff !important;\n}\n\n/* Header */\n.share-dialog-header {\n display: flex;\n align-items: center;\n gap: 10px;\n color: #fff;\n font-size: 16px;\n font-weight: 500;\n}\n\n.share-dialog-header i {\n font-size: 18px;\n opacity: 0.9;\n}\n\n/* Body */\n.share-dialog-body {\n padding: 0;\n}\n\n/* Alert */\n.share-alert {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 12px 20px;\n font-size: 13px;\n}\n\n.share-alert-error {\n background: #ffebee;\n color: #c62828;\n border-bottom: 1px solid #ffcdd2;\n}\n\n/* Sections */\n.share-section {\n padding: 16px 20px;\n}\n\n.share-section:not(:last-child) {\n border-bottom: 1px solid #e0e0e0;\n}\n\n.share-section-label {\n font-size: 11px;\n font-weight: 600;\n color: #757575;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin-bottom: 12px;\n}\n\n/* Search Box */\n.share-search-box {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 14px;\n background: #f5f5f5;\n border-radius: 8px;\n border: 1px solid transparent;\n transition: all 0.15s;\n}\n\n.share-search-box:focus-within {\n background: #fff;\n border-color: #3f51b5;\n box-shadow: 0 0 0 3px rgba(63, 81, 181, 0.1);\n}\n\n.share-search-box i {\n color: #9e9e9e;\n font-size: 14px;\n}\n\n.share-search-box input {\n flex: 1;\n border: none;\n background: transparent;\n font-size: 14px;\n outline: none;\n}\n\n.share-search-box input::placeholder {\n color: #9e9e9e;\n}\n\n/* User Dropdown */\n.share-user-dropdown {\n margin-top: 8px;\n max-height: 180px;\n overflow-y: auto;\n border: 1px solid #e0e0e0;\n border-radius: 8px;\n background: #fafafa;\n}\n\n.share-user-option {\n display: flex;\n align-items: center;\n gap: 10px;\n width: 100%;\n padding: 10px 12px;\n border: none;\n background: transparent;\n cursor: pointer;\n text-align: left;\n transition: background 0.1s;\n}\n\n.share-user-option:hover {\n background: rgba(63, 81, 181, 0.08);\n}\n\n.share-user-option:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.share-user-option .share-user-name {\n flex: 1;\n font-size: 14px;\n font-weight: 500;\n color: #212121;\n}\n\n.share-user-option .share-user-email {\n font-size: 12px;\n color: #757575;\n margin-right: auto;\n}\n\n.share-user-option i.fa-plus {\n color: #3f51b5;\n font-size: 12px;\n opacity: 0;\n transition: opacity 0.1s;\n}\n\n.share-user-option:hover i.fa-plus {\n opacity: 1;\n}\n\n.share-no-results {\n padding: 16px;\n text-align: center;\n color: #757575;\n font-size: 13px;\n}\n\n/* Avatar */\n.share-avatar {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n background: linear-gradient(135deg, #5c6bc0, #3f51b5);\n color: #fff;\n font-size: 12px;\n font-weight: 600;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.share-avatar-owner {\n background: linear-gradient(135deg, #ffc107, #ff9800);\n font-size: 14px;\n}\n\n.share-avatar-removed {\n background: #bdbdbd;\n}\n\n/* Person Row */\n.share-person {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 10px 0;\n}\n\n.share-person:not(:last-child) {\n border-bottom: 1px solid #f0f0f0;\n}\n\n.share-person-new {\n background: rgba(76, 175, 80, 0.05);\n margin: 0 -20px;\n padding: 10px 20px;\n}\n\n.share-person-modified {\n background: rgba(33, 150, 243, 0.05);\n margin: 0 -20px;\n padding: 10px 20px;\n}\n\n.share-person-info {\n flex: 1;\n min-width: 0;\n}\n\n.share-person-name {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 14px;\n font-weight: 500;\n color: #212121;\n}\n\n.share-person-email {\n font-size: 12px;\n color: #757575;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.share-person-role {\n font-size: 12px;\n color: #ff9800;\n font-weight: 500;\n}\n\n.share-badge-new {\n padding: 2px 6px;\n background: #4caf50;\n color: #fff;\n font-size: 10px;\n font-weight: 600;\n border-radius: 4px;\n}\n\n/* Permissions */\n.share-permissions {\n display: flex;\n gap: 4px;\n}\n\n.share-perm {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border-radius: 4px;\n cursor: pointer;\n transition: all 0.1s;\n position: relative;\n}\n\n.share-perm input {\n position: absolute;\n opacity: 0;\n cursor: pointer;\n}\n\n.share-perm i {\n font-size: 12px;\n color: #bdbdbd;\n transition: color 0.1s;\n}\n\n.share-perm:hover {\n background: #f0f0f0;\n}\n\n.share-perm input:checked + i {\n color: #3f51b5;\n}\n\n.share-perm input:disabled + i {\n color: #3f51b5;\n opacity: 0.7;\n}\n\n/* Remove Button */\n.share-remove-btn {\n width: 28px;\n height: 28px;\n border: none;\n background: transparent;\n color: #bdbdbd;\n border-radius: 4px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.1s;\n}\n\n.share-remove-btn:hover {\n background: #ffebee;\n color: #f44336;\n}\n\n/* Empty State */\n.share-empty {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 20px;\n color: #9e9e9e;\n font-size: 13px;\n background: #fafafa;\n border-radius: 8px;\n justify-content: center;\n}\n\n.share-empty i {\n font-size: 16px;\n}\n\n/* Removed Section */\n.share-removed-section {\n margin-top: 12px;\n padding: 12px;\n background: #fff3e0;\n border-radius: 8px;\n border: 1px solid #ffe0b2;\n}\n\n.share-removed-item {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 6px 0;\n}\n\n.share-removed-name {\n flex: 1;\n font-size: 13px;\n color: #757575;\n text-decoration: line-through;\n}\n\n.share-undo-btn {\n padding: 4px 10px;\n border: none;\n background: transparent;\n color: #f57c00;\n font-size: 12px;\n font-weight: 500;\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.share-undo-btn:hover {\n text-decoration: underline;\n}\n\n/* Footer */\n.share-footer {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n background: #fafafa;\n border-top: 1px solid #e0e0e0;\n}\n\n.share-changes-hint {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: #3f51b5;\n}\n\n.share-changes-hint i {\n font-size: 6px;\n}\n\n.share-footer-actions {\n display: flex;\n gap: 10px;\n margin-left: auto;\n}\n\n.share-btn {\n padding: 8px 18px;\n border-radius: 6px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.15s;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.share-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.share-btn-secondary {\n background: #fff;\n border: 1px solid #d0d0d0;\n color: #666;\n}\n\n.share-btn-secondary:hover:not(:disabled) {\n background: #f5f5f5;\n border-color: #bdbdbd;\n}\n\n.share-btn-primary {\n background: #3f51b5;\n border: none;\n color: #fff;\n}\n\n.share-btn-primary:hover:not(:disabled) {\n background: #303f9f;\n box-shadow: 0 2px 8px rgba(63, 81, 181, 0.3);\n}\n\n/* Owner row specific styling */\n.share-owner {\n background: linear-gradient(135deg, #fff8e1, #ffecb3);\n margin: 0 -20px;\n padding: 10px 20px;\n border-radius: 0;\n}\n"] }]
|
|
541
|
+
}], () => [{ type: i0.ChangeDetectorRef }], { Visible: [{
|
|
542
|
+
type: Input
|
|
543
|
+
}], Dashboard: [{
|
|
544
|
+
type: Input
|
|
545
|
+
}], Result: [{
|
|
546
|
+
type: Output
|
|
547
|
+
}] }); })();
|
|
548
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DashboardShareDialogComponent, { className: "DashboardShareDialogComponent", filePath: "src/DashboardBrowser/dashboard-share-dialog.component.ts", lineNumber: 39 }); })();
|
|
549
|
+
//# sourceMappingURL=dashboard-share-dialog.component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dashboard-share-dialog.component.js","sourceRoot":"","sources":["../../src/DashboardBrowser/dashboard-share-dialog.component.ts","../../src/DashboardBrowser/dashboard-share-dialog.component.html"],"names":[],"mappings":"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"}
|
|
@@ -191,5 +191,5 @@ export class FilterDialogComponent {
|
|
|
191
191
|
type: HostListener,
|
|
192
192
|
args: ['document:keydown.escape']
|
|
193
193
|
}] }); })();
|
|
194
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(FilterDialogComponent, { className: "FilterDialogComponent" }); })();
|
|
194
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(FilterDialogComponent, { className: "FilterDialogComponent", filePath: "src/DataExplorer/components/filter-dialog/filter-dialog.component.ts", lineNumber: 15 }); })();
|
|
195
195
|
//# sourceMappingURL=filter-dialog.component.js.map
|
|
@@ -549,5 +549,5 @@ export class NavigationPanelComponent {
|
|
|
549
549
|
}], expandAndFocus: [{
|
|
550
550
|
type: Output
|
|
551
551
|
}] }); })();
|
|
552
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(NavigationPanelComponent, { className: "NavigationPanelComponent" }); })();
|
|
552
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(NavigationPanelComponent, { className: "NavigationPanelComponent", filePath: "src/DataExplorer/components/navigation-panel/navigation-panel.component.ts", lineNumber: 26 }); })();
|
|
553
553
|
//# sourceMappingURL=navigation-panel.component.js.map
|