@memberjunction/ng-conversations 2.116.0 → 2.118.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/components/collection/collection-artifact-card.component.d.ts +7 -1
- package/dist/lib/components/collection/collection-artifact-card.component.d.ts.map +1 -1
- package/dist/lib/components/collection/collection-artifact-card.component.js +14 -18
- package/dist/lib/components/collection/collection-artifact-card.component.js.map +1 -1
- package/dist/lib/components/collection/collections-full-view.component.d.ts +86 -1
- package/dist/lib/components/collection/collections-full-view.component.d.ts.map +1 -1
- package/dist/lib/components/collection/collections-full-view.component.js +1042 -255
- package/dist/lib/components/collection/collections-full-view.component.js.map +1 -1
- package/dist/lib/components/conversation/conversation-chat-area.component.d.ts +9 -2
- package/dist/lib/components/conversation/conversation-chat-area.component.d.ts.map +1 -1
- package/dist/lib/components/conversation/conversation-chat-area.component.js +236 -162
- package/dist/lib/components/conversation/conversation-chat-area.component.js.map +1 -1
- package/dist/lib/components/mention/mention-dropdown.component.js +2 -2
- package/dist/lib/components/mention/mention-editor.component.d.ts +21 -0
- package/dist/lib/components/mention/mention-editor.component.d.ts.map +1 -1
- package/dist/lib/components/mention/mention-editor.component.js +299 -2
- package/dist/lib/components/mention/mention-editor.component.js.map +1 -1
- package/dist/lib/components/message/actionable-commands.component.d.ts +33 -0
- package/dist/lib/components/message/actionable-commands.component.d.ts.map +1 -0
- package/dist/lib/components/message/actionable-commands.component.js +107 -0
- package/dist/lib/components/message/actionable-commands.component.js.map +1 -0
- package/dist/lib/components/message/agent-response-form.component.d.ts +72 -0
- package/dist/lib/components/message/agent-response-form.component.d.ts.map +1 -0
- package/dist/lib/components/message/agent-response-form.component.js +310 -0
- package/dist/lib/components/message/agent-response-form.component.js.map +1 -0
- package/dist/lib/components/message/form-question.component.d.ts +105 -0
- package/dist/lib/components/message/form-question.component.d.ts.map +1 -0
- package/dist/lib/components/message/form-question.component.js +621 -0
- package/dist/lib/components/message/form-question.component.js.map +1 -0
- package/dist/lib/components/message/message-input-box.component.d.ts +12 -0
- package/dist/lib/components/message/message-input-box.component.d.ts.map +1 -1
- package/dist/lib/components/message/message-input-box.component.js +14 -1
- package/dist/lib/components/message/message-input-box.component.js.map +1 -1
- package/dist/lib/components/message/message-input.component.d.ts +3 -3
- package/dist/lib/components/message/message-input.component.d.ts.map +1 -1
- package/dist/lib/components/message/message-input.component.js +85 -51
- package/dist/lib/components/message/message-input.component.js.map +1 -1
- package/dist/lib/components/message/message-item.component.d.ts +39 -6
- package/dist/lib/components/message/message-item.component.d.ts.map +1 -1
- package/dist/lib/components/message/message-item.component.js +490 -196
- package/dist/lib/components/message/message-item.component.js.map +1 -1
- package/dist/lib/components/message/message-list.component.d.ts +2 -1
- package/dist/lib/components/message/message-list.component.d.ts.map +1 -1
- package/dist/lib/components/message/message-list.component.js +5 -1
- package/dist/lib/components/message/message-list.component.js.map +1 -1
- package/dist/lib/components/workspace/conversation-workspace.component.d.ts +23 -6
- package/dist/lib/components/workspace/conversation-workspace.component.d.ts.map +1 -1
- package/dist/lib/components/workspace/conversation-workspace.component.js +128 -52
- package/dist/lib/components/workspace/conversation-workspace.component.js.map +1 -1
- package/dist/lib/conversations.module.d.ts +60 -56
- package/dist/lib/conversations.module.d.ts.map +1 -1
- package/dist/lib/conversations.module.js +17 -1
- package/dist/lib/conversations.module.js.map +1 -1
- package/dist/lib/models/collection-view.model.d.ts +30 -0
- package/dist/lib/models/collection-view.model.d.ts.map +1 -0
- package/dist/lib/models/collection-view.model.js +2 -0
- package/dist/lib/models/collection-view.model.js.map +1 -0
- package/dist/lib/models/conversation-state.model.d.ts +1 -0
- package/dist/lib/models/conversation-state.model.d.ts.map +1 -1
- package/dist/lib/services/conversation-agent.service.d.ts +4 -1
- package/dist/lib/services/conversation-agent.service.d.ts.map +1 -1
- package/dist/lib/services/conversation-agent.service.js +22 -2
- package/dist/lib/services/conversation-agent.service.js.map +1 -1
- package/dist/lib/services/data-cache.service.d.ts +12 -0
- package/dist/lib/services/data-cache.service.d.ts.map +1 -1
- package/dist/lib/services/data-cache.service.js +41 -0
- package/dist/lib/services/data-cache.service.js.map +1 -1
- package/dist/lib/services/mention-parser.service.d.ts +6 -1
- package/dist/lib/services/mention-parser.service.d.ts.map +1 -1
- package/dist/lib/services/mention-parser.service.js +114 -34
- package/dist/lib/services/mention-parser.service.js.map +1 -1
- package/dist/lib/services/ui-command-handler.service.d.ts +45 -0
- package/dist/lib/services/ui-command-handler.service.d.ts.map +1 -0
- package/dist/lib/services/ui-command-handler.service.js +95 -0
- package/dist/lib/services/ui-command-handler.service.js.map +1 -0
- package/package.json +15 -14
|
@@ -6,15 +6,16 @@ import * as i1 from "../../services/dialog.service";
|
|
|
6
6
|
import * as i2 from "../../services/artifact-state.service";
|
|
7
7
|
import * as i3 from "../../services/collection-state.service";
|
|
8
8
|
import * as i4 from "../../services/collection-permission.service";
|
|
9
|
-
import * as i5 from "@
|
|
10
|
-
import * as i6 from "
|
|
11
|
-
import * as i7 from "
|
|
12
|
-
import * as i8 from "./
|
|
13
|
-
|
|
9
|
+
import * as i5 from "@memberjunction/ng-artifacts";
|
|
10
|
+
import * as i6 from "@angular/common";
|
|
11
|
+
import * as i7 from "@angular/forms";
|
|
12
|
+
import * as i8 from "./collection-share-modal.component";
|
|
13
|
+
import * as i9 from "./collection-form-modal.component";
|
|
14
|
+
import * as i10 from "./artifact-create-modal.component";
|
|
14
15
|
function CollectionsFullViewComponent_span_7_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
15
16
|
const _r1 = i0.ɵɵgetCurrentView();
|
|
16
17
|
i0.ɵɵelementContainerStart(0);
|
|
17
|
-
i0.ɵɵelement(1, "i",
|
|
18
|
+
i0.ɵɵelement(1, "i", 28);
|
|
18
19
|
i0.ɵɵelementStart(2, "a", 5);
|
|
19
20
|
i0.ɵɵlistener("click", function CollectionsFullViewComponent_span_7_ng_container_1_Template_a_click_2_listener() { const crumb_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.navigateTo(crumb_r2)); });
|
|
20
21
|
i0.ɵɵtext(3);
|
|
@@ -29,226 +30,484 @@ function CollectionsFullViewComponent_span_7_ng_container_1_Template(rf, ctx) {
|
|
|
29
30
|
i0.ɵɵtextInterpolate1(" ", crumb_r2.name, " ");
|
|
30
31
|
} }
|
|
31
32
|
function CollectionsFullViewComponent_span_7_Template(rf, ctx) { if (rf & 1) {
|
|
32
|
-
i0.ɵɵelementStart(0, "span",
|
|
33
|
-
i0.ɵɵtemplate(1, CollectionsFullViewComponent_span_7_ng_container_1_Template, 4, 3, "ng-container",
|
|
33
|
+
i0.ɵɵelementStart(0, "span", 26);
|
|
34
|
+
i0.ɵɵtemplate(1, CollectionsFullViewComponent_span_7_ng_container_1_Template, 4, 3, "ng-container", 27);
|
|
34
35
|
i0.ɵɵelementEnd();
|
|
35
36
|
} if (rf & 2) {
|
|
36
37
|
const ctx_r2 = i0.ɵɵnextContext();
|
|
37
38
|
i0.ɵɵadvance();
|
|
38
39
|
i0.ɵɵproperty("ngForOf", ctx_r2.breadcrumbs);
|
|
39
40
|
} }
|
|
40
|
-
function
|
|
41
|
+
function CollectionsFullViewComponent_div_11_div_3_Template(rf, ctx) { if (rf & 1) {
|
|
42
|
+
const _r6 = i0.ɵɵgetCurrentView();
|
|
43
|
+
i0.ɵɵelementStart(0, "div", 33)(1, "button", 34);
|
|
44
|
+
i0.ɵɵlistener("click", function CollectionsFullViewComponent_div_11_div_3_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r6); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.setSortBy("name")); });
|
|
45
|
+
i0.ɵɵelement(2, "i", 35);
|
|
46
|
+
i0.ɵɵelementStart(3, "span");
|
|
47
|
+
i0.ɵɵtext(4, "Sort by Name");
|
|
48
|
+
i0.ɵɵelementEnd()();
|
|
49
|
+
i0.ɵɵelementStart(5, "button", 34);
|
|
50
|
+
i0.ɵɵlistener("click", function CollectionsFullViewComponent_div_11_div_3_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r6); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.setSortBy("date")); });
|
|
51
|
+
i0.ɵɵelement(6, "i", 36);
|
|
52
|
+
i0.ɵɵelementStart(7, "span");
|
|
53
|
+
i0.ɵɵtext(8, "Sort by Date");
|
|
54
|
+
i0.ɵɵelementEnd()();
|
|
55
|
+
i0.ɵɵelementStart(9, "button", 34);
|
|
56
|
+
i0.ɵɵlistener("click", function CollectionsFullViewComponent_div_11_div_3_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r6); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.setSortBy("type")); });
|
|
57
|
+
i0.ɵɵelement(10, "i", 37);
|
|
58
|
+
i0.ɵɵelementStart(11, "span");
|
|
59
|
+
i0.ɵɵtext(12, "Sort by Type");
|
|
60
|
+
i0.ɵɵelementEnd()()();
|
|
61
|
+
} if (rf & 2) {
|
|
62
|
+
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
63
|
+
i0.ɵɵadvance();
|
|
64
|
+
i0.ɵɵclassProp("active", ctx_r2.sortBy === "name");
|
|
65
|
+
i0.ɵɵadvance(4);
|
|
66
|
+
i0.ɵɵclassProp("active", ctx_r2.sortBy === "date");
|
|
67
|
+
i0.ɵɵadvance(4);
|
|
68
|
+
i0.ɵɵclassProp("active", ctx_r2.sortBy === "type");
|
|
69
|
+
} }
|
|
70
|
+
function CollectionsFullViewComponent_div_11_Template(rf, ctx) { if (rf & 1) {
|
|
41
71
|
const _r5 = i0.ɵɵgetCurrentView();
|
|
42
|
-
i0.ɵɵelementStart(0, "button",
|
|
43
|
-
i0.ɵɵlistener("click", function
|
|
44
|
-
i0.ɵɵelement(
|
|
45
|
-
i0.ɵɵ
|
|
72
|
+
i0.ɵɵelementStart(0, "div", 29)(1, "button", 30);
|
|
73
|
+
i0.ɵɵlistener("click", function CollectionsFullViewComponent_div_11_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.showSortDropdown = !ctx_r2.showSortDropdown); });
|
|
74
|
+
i0.ɵɵelement(2, "i", 31);
|
|
75
|
+
i0.ɵɵelementEnd();
|
|
76
|
+
i0.ɵɵtemplate(3, CollectionsFullViewComponent_div_11_div_3_Template, 13, 6, "div", 32);
|
|
77
|
+
i0.ɵɵelementEnd();
|
|
78
|
+
} if (rf & 2) {
|
|
79
|
+
const ctx_r2 = i0.ɵɵnextContext();
|
|
80
|
+
i0.ɵɵadvance(3);
|
|
81
|
+
i0.ɵɵproperty("ngIf", ctx_r2.showSortDropdown);
|
|
82
|
+
} }
|
|
83
|
+
function CollectionsFullViewComponent_button_15_Template(rf, ctx) { if (rf & 1) {
|
|
84
|
+
const _r7 = i0.ɵɵgetCurrentView();
|
|
85
|
+
i0.ɵɵelementStart(0, "button", 38);
|
|
86
|
+
i0.ɵɵlistener("click", function CollectionsFullViewComponent_button_15_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r7); const ctx_r2 = i0.ɵɵnextContext(); ctx_r2.searchQuery = ""; return i0.ɵɵresetView(ctx_r2.onSearchChange("")); });
|
|
87
|
+
i0.ɵɵelement(1, "i", 39);
|
|
46
88
|
i0.ɵɵelementEnd();
|
|
47
89
|
} }
|
|
48
|
-
function
|
|
49
|
-
i0.ɵɵ
|
|
50
|
-
i0.ɵɵ
|
|
51
|
-
i0.ɵɵ
|
|
52
|
-
i0.ɵɵ
|
|
90
|
+
function CollectionsFullViewComponent_div_16_div_6_Template(rf, ctx) { if (rf & 1) {
|
|
91
|
+
const _r9 = i0.ɵɵgetCurrentView();
|
|
92
|
+
i0.ɵɵelementStart(0, "div", 44)(1, "button", 34);
|
|
93
|
+
i0.ɵɵlistener("click", function CollectionsFullViewComponent_div_16_div_6_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r9); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.createCollection()); });
|
|
94
|
+
i0.ɵɵelement(2, "i", 45);
|
|
95
|
+
i0.ɵɵelementStart(3, "span");
|
|
96
|
+
i0.ɵɵtext(4, "New Collection");
|
|
53
97
|
i0.ɵɵelementEnd()();
|
|
98
|
+
i0.ɵɵelementStart(5, "button", 46);
|
|
99
|
+
i0.ɵɵlistener("click", function CollectionsFullViewComponent_div_16_div_6_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r9); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.addArtifact()); });
|
|
100
|
+
i0.ɵɵelement(6, "i", 47);
|
|
101
|
+
i0.ɵɵelementStart(7, "span");
|
|
102
|
+
i0.ɵɵtext(8, "New Artifact");
|
|
103
|
+
i0.ɵɵelementEnd()()();
|
|
104
|
+
} if (rf & 2) {
|
|
105
|
+
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
106
|
+
i0.ɵɵadvance(5);
|
|
107
|
+
i0.ɵɵproperty("disabled", !ctx_r2.currentCollectionId);
|
|
54
108
|
} }
|
|
55
|
-
function
|
|
56
|
-
const
|
|
57
|
-
i0.ɵɵelementStart(0, "button",
|
|
58
|
-
i0.ɵɵlistener("click", function
|
|
59
|
-
i0.ɵɵelement(
|
|
60
|
-
i0.ɵɵ
|
|
109
|
+
function CollectionsFullViewComponent_div_16_Template(rf, ctx) { if (rf & 1) {
|
|
110
|
+
const _r8 = i0.ɵɵgetCurrentView();
|
|
111
|
+
i0.ɵɵelementStart(0, "div", 29)(1, "button", 40);
|
|
112
|
+
i0.ɵɵlistener("click", function CollectionsFullViewComponent_div_16_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r8); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.showNewDropdown = !ctx_r2.showNewDropdown); });
|
|
113
|
+
i0.ɵɵelement(2, "i", 41);
|
|
114
|
+
i0.ɵɵelementStart(3, "span");
|
|
115
|
+
i0.ɵɵtext(4, "New");
|
|
61
116
|
i0.ɵɵelementEnd();
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
i0.ɵɵ
|
|
65
|
-
i0.ɵɵelement(1, "i", 48);
|
|
117
|
+
i0.ɵɵelement(5, "i", 42);
|
|
118
|
+
i0.ɵɵelementEnd();
|
|
119
|
+
i0.ɵɵtemplate(6, CollectionsFullViewComponent_div_16_div_6_Template, 9, 1, "div", 43);
|
|
66
120
|
i0.ɵɵelementEnd();
|
|
121
|
+
} if (rf & 2) {
|
|
122
|
+
const ctx_r2 = i0.ɵɵnextContext();
|
|
123
|
+
i0.ɵɵadvance(6);
|
|
124
|
+
i0.ɵɵproperty("ngIf", ctx_r2.showNewDropdown);
|
|
67
125
|
} }
|
|
68
|
-
function
|
|
69
|
-
i0.ɵɵ
|
|
70
|
-
i0.ɵɵ
|
|
71
|
-
i0.ɵɵelementStart(2, "span");
|
|
126
|
+
function CollectionsFullViewComponent_div_19_Template(rf, ctx) { if (rf & 1) {
|
|
127
|
+
const _r10 = i0.ɵɵgetCurrentView();
|
|
128
|
+
i0.ɵɵelementStart(0, "div", 48)(1, "div", 49)(2, "span", 50);
|
|
72
129
|
i0.ɵɵtext(3);
|
|
73
130
|
i0.ɵɵelementEnd()();
|
|
131
|
+
i0.ɵɵelementStart(4, "div", 51)(5, "button", 52);
|
|
132
|
+
i0.ɵɵlistener("click", function CollectionsFullViewComponent_div_19_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r10); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.clearSelection()); });
|
|
133
|
+
i0.ɵɵelement(6, "i", 39);
|
|
134
|
+
i0.ɵɵtext(7, " Clear Selection ");
|
|
135
|
+
i0.ɵɵelementEnd();
|
|
136
|
+
i0.ɵɵelementStart(8, "button", 53);
|
|
137
|
+
i0.ɵɵlistener("click", function CollectionsFullViewComponent_div_19_Template_button_click_8_listener() { i0.ɵɵrestoreView(_r10); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.deleteSelected()); });
|
|
138
|
+
i0.ɵɵelement(9, "i", 54);
|
|
139
|
+
i0.ɵɵtext(10, " Delete Selected ");
|
|
140
|
+
i0.ɵɵelementEnd()()();
|
|
74
141
|
} if (rf & 2) {
|
|
75
|
-
const
|
|
142
|
+
const ctx_r2 = i0.ɵɵnextContext();
|
|
76
143
|
i0.ɵɵadvance(3);
|
|
77
|
-
i0.ɵɵ
|
|
144
|
+
i0.ɵɵtextInterpolate1("", ctx_r2.selectedItems.size, " selected");
|
|
78
145
|
} }
|
|
79
|
-
function
|
|
80
|
-
i0.ɵɵelementStart(0, "div",
|
|
81
|
-
i0.ɵɵ
|
|
146
|
+
function CollectionsFullViewComponent_div_21_Template(rf, ctx) { if (rf & 1) {
|
|
147
|
+
i0.ɵɵelementStart(0, "div", 55);
|
|
148
|
+
i0.ɵɵelement(1, "i", 56);
|
|
149
|
+
i0.ɵɵelementStart(2, "p");
|
|
150
|
+
i0.ɵɵtext(3, "Loading collections...");
|
|
151
|
+
i0.ɵɵelementEnd()();
|
|
152
|
+
} }
|
|
153
|
+
function CollectionsFullViewComponent_div_22_ng_container_2_Template(rf, ctx) { if (rf & 1) {
|
|
154
|
+
i0.ɵɵelementContainerStart(0);
|
|
155
|
+
i0.ɵɵelementStart(1, "h3");
|
|
156
|
+
i0.ɵɵtext(2, "No items found");
|
|
157
|
+
i0.ɵɵelementEnd();
|
|
158
|
+
i0.ɵɵelementStart(3, "p");
|
|
159
|
+
i0.ɵɵtext(4, "Try adjusting your search");
|
|
160
|
+
i0.ɵɵelementEnd();
|
|
161
|
+
i0.ɵɵelementContainerEnd();
|
|
162
|
+
} }
|
|
163
|
+
function CollectionsFullViewComponent_div_22_ng_container_3_button_5_Template(rf, ctx) { if (rf & 1) {
|
|
164
|
+
const _r11 = i0.ɵɵgetCurrentView();
|
|
165
|
+
i0.ɵɵelementStart(0, "button", 40);
|
|
166
|
+
i0.ɵɵlistener("click", function CollectionsFullViewComponent_div_22_ng_container_3_button_5_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r11); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.createCollection()); });
|
|
167
|
+
i0.ɵɵelement(1, "i", 41);
|
|
168
|
+
i0.ɵɵtext(2, " Create Collection ");
|
|
169
|
+
i0.ɵɵelementEnd();
|
|
170
|
+
} }
|
|
171
|
+
function CollectionsFullViewComponent_div_22_ng_container_3_Template(rf, ctx) { if (rf & 1) {
|
|
172
|
+
i0.ɵɵelementContainerStart(0);
|
|
173
|
+
i0.ɵɵelementStart(1, "h3");
|
|
174
|
+
i0.ɵɵtext(2, "No collections yet");
|
|
175
|
+
i0.ɵɵelementEnd();
|
|
176
|
+
i0.ɵɵelementStart(3, "p");
|
|
177
|
+
i0.ɵɵtext(4, "Create your first collection to get started");
|
|
178
|
+
i0.ɵɵelementEnd();
|
|
179
|
+
i0.ɵɵtemplate(5, CollectionsFullViewComponent_div_22_ng_container_3_button_5_Template, 3, 0, "button", 60);
|
|
180
|
+
i0.ɵɵelementContainerEnd();
|
|
181
|
+
} if (rf & 2) {
|
|
182
|
+
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
183
|
+
i0.ɵɵadvance(5);
|
|
184
|
+
i0.ɵɵproperty("ngIf", ctx_r2.canEditCurrent());
|
|
185
|
+
} }
|
|
186
|
+
function CollectionsFullViewComponent_div_22_ng_container_4_Template(rf, ctx) { if (rf & 1) {
|
|
187
|
+
i0.ɵɵelementContainerStart(0);
|
|
188
|
+
i0.ɵɵelementStart(1, "h3");
|
|
189
|
+
i0.ɵɵtext(2, "This collection is empty");
|
|
190
|
+
i0.ɵɵelementEnd();
|
|
191
|
+
i0.ɵɵelementStart(3, "p");
|
|
192
|
+
i0.ɵɵtext(4, "Use the ");
|
|
193
|
+
i0.ɵɵelementStart(5, "strong");
|
|
194
|
+
i0.ɵɵtext(6, "New");
|
|
195
|
+
i0.ɵɵelementEnd();
|
|
196
|
+
i0.ɵɵtext(7, " button above to add collections or artifacts");
|
|
197
|
+
i0.ɵɵelementEnd();
|
|
198
|
+
i0.ɵɵelementContainerEnd();
|
|
199
|
+
} }
|
|
200
|
+
function CollectionsFullViewComponent_div_22_Template(rf, ctx) { if (rf & 1) {
|
|
201
|
+
i0.ɵɵelementStart(0, "div", 57);
|
|
202
|
+
i0.ɵɵelement(1, "i", 58);
|
|
203
|
+
i0.ɵɵtemplate(2, CollectionsFullViewComponent_div_22_ng_container_2_Template, 5, 0, "ng-container", 59)(3, CollectionsFullViewComponent_div_22_ng_container_3_Template, 6, 1, "ng-container", 59)(4, CollectionsFullViewComponent_div_22_ng_container_4_Template, 8, 0, "ng-container", 59);
|
|
82
204
|
i0.ɵɵelementEnd();
|
|
83
205
|
} if (rf & 2) {
|
|
84
|
-
const
|
|
206
|
+
const ctx_r2 = i0.ɵɵnextContext();
|
|
207
|
+
i0.ɵɵadvance(2);
|
|
208
|
+
i0.ɵɵproperty("ngIf", ctx_r2.searchQuery);
|
|
209
|
+
i0.ɵɵadvance();
|
|
210
|
+
i0.ɵɵproperty("ngIf", !ctx_r2.searchQuery && !ctx_r2.currentCollectionId);
|
|
85
211
|
i0.ɵɵadvance();
|
|
86
|
-
i0.ɵɵ
|
|
212
|
+
i0.ɵɵproperty("ngIf", !ctx_r2.searchQuery && ctx_r2.currentCollectionId);
|
|
87
213
|
} }
|
|
88
|
-
function
|
|
89
|
-
|
|
90
|
-
i0.ɵɵ
|
|
91
|
-
i0.ɵɵlistener("click", function CollectionsFullViewComponent_div_14_div_8_div_1_button_10_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r9); const collection_r8 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.shareCollection(collection_r8)); });
|
|
92
|
-
i0.ɵɵelement(1, "i", 53);
|
|
214
|
+
function CollectionsFullViewComponent_div_23_div_1_div_3_div_3_Template(rf, ctx) { if (rf & 1) {
|
|
215
|
+
i0.ɵɵelementStart(0, "div", 75);
|
|
216
|
+
i0.ɵɵelement(1, "i", 76);
|
|
93
217
|
i0.ɵɵelementEnd();
|
|
94
218
|
} }
|
|
95
|
-
function
|
|
96
|
-
|
|
97
|
-
i0.ɵɵ
|
|
98
|
-
i0.ɵɵlistener("click", function CollectionsFullViewComponent_div_14_div_8_div_1_button_11_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r10); const collection_r8 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.editCollection(collection_r8)); });
|
|
99
|
-
i0.ɵɵelement(1, "i", 55);
|
|
219
|
+
function CollectionsFullViewComponent_div_23_div_1_div_3_div_7_Template(rf, ctx) { if (rf & 1) {
|
|
220
|
+
i0.ɵɵelementStart(0, "div", 77);
|
|
221
|
+
i0.ɵɵtext(1);
|
|
100
222
|
i0.ɵɵelementEnd();
|
|
223
|
+
} if (rf & 2) {
|
|
224
|
+
const item_r13 = i0.ɵɵnextContext(2).$implicit;
|
|
225
|
+
i0.ɵɵadvance();
|
|
226
|
+
i0.ɵɵtextInterpolate1(" ", item_r13.description, " ");
|
|
101
227
|
} }
|
|
102
|
-
function
|
|
103
|
-
|
|
104
|
-
i0.ɵɵ
|
|
105
|
-
i0.ɵɵlistener("click", function CollectionsFullViewComponent_div_14_div_8_div_1_button_12_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r11); const collection_r8 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.deleteCollection(collection_r8)); });
|
|
106
|
-
i0.ɵɵelement(1, "i", 57);
|
|
228
|
+
function CollectionsFullViewComponent_div_23_div_1_div_3_div_8_Template(rf, ctx) { if (rf & 1) {
|
|
229
|
+
i0.ɵɵelementStart(0, "div", 78);
|
|
230
|
+
i0.ɵɵtext(1);
|
|
107
231
|
i0.ɵɵelementEnd();
|
|
232
|
+
} if (rf & 2) {
|
|
233
|
+
const item_r13 = i0.ɵɵnextContext(2).$implicit;
|
|
234
|
+
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
235
|
+
i0.ɵɵadvance();
|
|
236
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r2.getItemCountText(item_r13.itemCount), " ");
|
|
108
237
|
} }
|
|
109
|
-
function
|
|
110
|
-
|
|
111
|
-
i0.ɵɵ
|
|
112
|
-
i0.ɵɵ
|
|
113
|
-
i0.ɵɵelementStart(1, "div", 36);
|
|
114
|
-
i0.ɵɵelement(2, "i", 37);
|
|
115
|
-
i0.ɵɵtemplate(3, CollectionsFullViewComponent_div_14_div_8_div_1_div_3_Template, 2, 0, "div", 38);
|
|
238
|
+
function CollectionsFullViewComponent_div_23_div_1_div_3_div_9_Template(rf, ctx) { if (rf & 1) {
|
|
239
|
+
i0.ɵɵelementStart(0, "div", 79);
|
|
240
|
+
i0.ɵɵelement(1, "i", 80);
|
|
241
|
+
i0.ɵɵtext(2);
|
|
116
242
|
i0.ɵɵelementEnd();
|
|
117
|
-
|
|
118
|
-
i0.ɵɵ
|
|
243
|
+
} if (rf & 2) {
|
|
244
|
+
const item_r13 = i0.ɵɵnextContext(2).$implicit;
|
|
245
|
+
i0.ɵɵadvance(2);
|
|
246
|
+
i0.ɵɵtextInterpolate1(" ", item_r13.owner, " ");
|
|
247
|
+
} }
|
|
248
|
+
function CollectionsFullViewComponent_div_23_div_1_div_3_Template(rf, ctx) { if (rf & 1) {
|
|
249
|
+
i0.ɵɵelementStart(0, "div", 66)(1, "div", 67);
|
|
250
|
+
i0.ɵɵelement(2, "i", 68);
|
|
251
|
+
i0.ɵɵtemplate(3, CollectionsFullViewComponent_div_23_div_1_div_3_div_3_Template, 2, 0, "div", 69);
|
|
119
252
|
i0.ɵɵelementEnd();
|
|
120
|
-
i0.ɵɵ
|
|
253
|
+
i0.ɵɵelementStart(4, "div", 70)(5, "div", 71);
|
|
254
|
+
i0.ɵɵtext(6);
|
|
121
255
|
i0.ɵɵelementEnd();
|
|
122
|
-
i0.ɵɵ
|
|
123
|
-
i0.ɵɵlistener("click", function CollectionsFullViewComponent_div_14_div_8_div_1_Template_div_click_9_listener($event) { i0.ɵɵrestoreView(_r7); return i0.ɵɵresetView($event.stopPropagation()); });
|
|
124
|
-
i0.ɵɵtemplate(10, CollectionsFullViewComponent_div_14_div_8_div_1_button_10_Template, 2, 0, "button", 44)(11, CollectionsFullViewComponent_div_14_div_8_div_1_button_11_Template, 2, 0, "button", 45)(12, CollectionsFullViewComponent_div_14_div_8_div_1_button_12_Template, 2, 0, "button", 46);
|
|
256
|
+
i0.ɵɵtemplate(7, CollectionsFullViewComponent_div_23_div_1_div_3_div_7_Template, 2, 1, "div", 72)(8, CollectionsFullViewComponent_div_23_div_1_div_3_div_8_Template, 2, 1, "div", 73)(9, CollectionsFullViewComponent_div_23_div_1_div_3_div_9_Template, 3, 1, "div", 74);
|
|
125
257
|
i0.ɵɵelementEnd()();
|
|
126
258
|
} if (rf & 2) {
|
|
127
|
-
const
|
|
128
|
-
|
|
259
|
+
const item_r13 = i0.ɵɵnextContext().$implicit;
|
|
260
|
+
i0.ɵɵproperty("title", item_r13.description || item_r13.name);
|
|
129
261
|
i0.ɵɵadvance(3);
|
|
130
|
-
i0.ɵɵproperty("ngIf",
|
|
262
|
+
i0.ɵɵproperty("ngIf", item_r13.isShared);
|
|
131
263
|
i0.ɵɵadvance(3);
|
|
132
|
-
i0.ɵɵtextInterpolate(
|
|
264
|
+
i0.ɵɵtextInterpolate(item_r13.name);
|
|
133
265
|
i0.ɵɵadvance();
|
|
134
|
-
i0.ɵɵproperty("ngIf",
|
|
266
|
+
i0.ɵɵproperty("ngIf", item_r13.description);
|
|
135
267
|
i0.ɵɵadvance();
|
|
136
|
-
i0.ɵɵproperty("ngIf",
|
|
137
|
-
i0.ɵɵadvance(2);
|
|
138
|
-
i0.ɵɵproperty("ngIf", ctx_r2.canShare(collection_r8));
|
|
139
|
-
i0.ɵɵadvance();
|
|
140
|
-
i0.ɵɵproperty("ngIf", ctx_r2.canEdit(collection_r8));
|
|
268
|
+
i0.ɵɵproperty("ngIf", item_r13.itemCount !== undefined);
|
|
141
269
|
i0.ɵɵadvance();
|
|
142
|
-
i0.ɵɵproperty("ngIf",
|
|
270
|
+
i0.ɵɵproperty("ngIf", item_r13.isShared && item_r13.owner);
|
|
143
271
|
} }
|
|
144
|
-
function
|
|
145
|
-
i0.ɵɵelementStart(0, "div",
|
|
146
|
-
i0.ɵɵ
|
|
272
|
+
function CollectionsFullViewComponent_div_23_div_1_div_4_div_6_Template(rf, ctx) { if (rf & 1) {
|
|
273
|
+
i0.ɵɵelementStart(0, "div", 77);
|
|
274
|
+
i0.ɵɵtext(1);
|
|
147
275
|
i0.ɵɵelementEnd();
|
|
148
276
|
} if (rf & 2) {
|
|
149
|
-
const
|
|
277
|
+
const item_r13 = i0.ɵɵnextContext(2).$implicit;
|
|
150
278
|
i0.ɵɵadvance();
|
|
151
|
-
i0.ɵɵ
|
|
279
|
+
i0.ɵɵtextInterpolate1(" ", item_r13.description, " ");
|
|
152
280
|
} }
|
|
153
|
-
function
|
|
154
|
-
|
|
155
|
-
i0.ɵɵ
|
|
156
|
-
i0.ɵɵlistener("click", function CollectionsFullViewComponent_div_14_div_9_button_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r12); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.addArtifact()); });
|
|
157
|
-
i0.ɵɵelement(1, "i", 32);
|
|
158
|
-
i0.ɵɵtext(2, " Add Artifact ");
|
|
281
|
+
function CollectionsFullViewComponent_div_23_div_1_div_4_span_8_Template(rf, ctx) { if (rf & 1) {
|
|
282
|
+
i0.ɵɵelementStart(0, "span", 84);
|
|
283
|
+
i0.ɵɵtext(1);
|
|
159
284
|
i0.ɵɵelementEnd();
|
|
285
|
+
} if (rf & 2) {
|
|
286
|
+
const item_r13 = i0.ɵɵnextContext(2).$implicit;
|
|
287
|
+
i0.ɵɵadvance();
|
|
288
|
+
i0.ɵɵtextInterpolate1(" v", item_r13.versionNumber, " ");
|
|
160
289
|
} }
|
|
161
|
-
function
|
|
162
|
-
|
|
163
|
-
i0.ɵɵ
|
|
164
|
-
i0.ɵɵlistener("click", function CollectionsFullViewComponent_div_14_div_9_div_7_For_2_button_12_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r15); const item_r14 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.removeArtifact(item_r14)); });
|
|
165
|
-
i0.ɵɵelement(1, "i", 69);
|
|
290
|
+
function CollectionsFullViewComponent_div_23_div_1_div_4_span_9_Template(rf, ctx) { if (rf & 1) {
|
|
291
|
+
i0.ɵɵelementStart(0, "span", 85);
|
|
292
|
+
i0.ɵɵtext(1);
|
|
166
293
|
i0.ɵɵelementEnd();
|
|
294
|
+
} if (rf & 2) {
|
|
295
|
+
const item_r13 = i0.ɵɵnextContext(2).$implicit;
|
|
296
|
+
i0.ɵɵadvance();
|
|
297
|
+
i0.ɵɵtextInterpolate1(" ", item_r13.artifactType, " ");
|
|
167
298
|
} }
|
|
168
|
-
function
|
|
169
|
-
|
|
170
|
-
i0.ɵɵ
|
|
171
|
-
i0.ɵɵlistener("click", function CollectionsFullViewComponent_div_14_div_9_div_7_For_2_Template_div_click_0_listener() { const item_r14 = i0.ɵɵrestoreView(_r13).$implicit; const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.viewArtifact(item_r14)); });
|
|
172
|
-
i0.ɵɵelementStart(1, "div", 62);
|
|
173
|
-
i0.ɵɵelement(2, "i", 63);
|
|
299
|
+
function CollectionsFullViewComponent_div_23_div_1_div_4_Template(rf, ctx) { if (rf & 1) {
|
|
300
|
+
i0.ɵɵelementStart(0, "div", 66)(1, "div", 81);
|
|
301
|
+
i0.ɵɵelement(2, "i", 9);
|
|
174
302
|
i0.ɵɵelementEnd();
|
|
175
|
-
i0.ɵɵelementStart(3, "div",
|
|
303
|
+
i0.ɵɵelementStart(3, "div", 70)(4, "div", 71);
|
|
176
304
|
i0.ɵɵtext(5);
|
|
177
305
|
i0.ɵɵelementEnd();
|
|
178
|
-
i0.ɵɵ
|
|
179
|
-
i0.ɵɵ
|
|
180
|
-
i0.ɵɵ
|
|
181
|
-
i0.ɵɵelementStart(9, "span", 66);
|
|
182
|
-
i0.ɵɵtext(10);
|
|
306
|
+
i0.ɵɵtemplate(6, CollectionsFullViewComponent_div_23_div_1_div_4_div_6_Template, 2, 1, "div", 72);
|
|
307
|
+
i0.ɵɵelementStart(7, "div", 78);
|
|
308
|
+
i0.ɵɵtemplate(8, CollectionsFullViewComponent_div_23_div_1_div_4_span_8_Template, 2, 1, "span", 82)(9, CollectionsFullViewComponent_div_23_div_1_div_4_span_9_Template, 2, 1, "span", 83);
|
|
183
309
|
i0.ɵɵelementEnd()()();
|
|
184
|
-
i0.ɵɵelementStart(11, "div", 43);
|
|
185
|
-
i0.ɵɵlistener("click", function CollectionsFullViewComponent_div_14_div_9_div_7_For_2_Template_div_click_11_listener($event) { i0.ɵɵrestoreView(_r13); return i0.ɵɵresetView($event.stopPropagation()); });
|
|
186
|
-
i0.ɵɵtemplate(12, CollectionsFullViewComponent_div_14_div_9_div_7_For_2_button_12_Template, 2, 0, "button", 67);
|
|
187
|
-
i0.ɵɵelementEnd()();
|
|
188
310
|
} if (rf & 2) {
|
|
189
|
-
const
|
|
190
|
-
|
|
191
|
-
i0.ɵɵadvance(
|
|
192
|
-
i0.ɵɵ
|
|
311
|
+
const item_r13 = i0.ɵɵnextContext().$implicit;
|
|
312
|
+
i0.ɵɵproperty("title", item_r13.description || item_r13.name);
|
|
313
|
+
i0.ɵɵadvance(2);
|
|
314
|
+
i0.ɵɵproperty("ngClass", item_r13.icon);
|
|
193
315
|
i0.ɵɵadvance(3);
|
|
194
|
-
i0.ɵɵ
|
|
316
|
+
i0.ɵɵtextInterpolate(item_r13.name);
|
|
317
|
+
i0.ɵɵadvance();
|
|
318
|
+
i0.ɵɵproperty("ngIf", item_r13.description);
|
|
195
319
|
i0.ɵɵadvance(2);
|
|
196
|
-
i0.ɵɵ
|
|
320
|
+
i0.ɵɵproperty("ngIf", item_r13.versionNumber);
|
|
321
|
+
i0.ɵɵadvance();
|
|
322
|
+
i0.ɵɵproperty("ngIf", item_r13.artifactType);
|
|
323
|
+
} }
|
|
324
|
+
function CollectionsFullViewComponent_div_23_div_1_Template(rf, ctx) { if (rf & 1) {
|
|
325
|
+
const _r12 = i0.ɵɵgetCurrentView();
|
|
326
|
+
i0.ɵɵelementStart(0, "div", 63);
|
|
327
|
+
i0.ɵɵlistener("click", function CollectionsFullViewComponent_div_23_div_1_Template_div_click_0_listener($event) { const item_r13 = i0.ɵɵrestoreView(_r12).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onItemClick(item_r13, $event)); })("contextmenu", function CollectionsFullViewComponent_div_23_div_1_Template_div_contextmenu_0_listener($event) { const item_r13 = i0.ɵɵrestoreView(_r12).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onItemContextMenu(item_r13, $event)); });
|
|
328
|
+
i0.ɵɵelementStart(1, "div", 64);
|
|
329
|
+
i0.ɵɵlistener("click", function CollectionsFullViewComponent_div_23_div_1_Template_div_click_1_listener($event) { const item_r13 = i0.ɵɵrestoreView(_r12).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.toggleItemSelection(item_r13, $event)); });
|
|
330
|
+
i0.ɵɵelement(2, "i", 9);
|
|
331
|
+
i0.ɵɵelementEnd();
|
|
332
|
+
i0.ɵɵtemplate(3, CollectionsFullViewComponent_div_23_div_1_div_3_Template, 10, 6, "div", 65)(4, CollectionsFullViewComponent_div_23_div_1_div_4_Template, 10, 6, "div", 65);
|
|
333
|
+
i0.ɵɵelementEnd();
|
|
334
|
+
} if (rf & 2) {
|
|
335
|
+
const item_r13 = ctx.$implicit;
|
|
336
|
+
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
337
|
+
i0.ɵɵclassProp("selected", item_r13.selected)("active", item_r13.type === "artifact" && (item_r13.artifact == null ? null : item_r13.artifact.ID) === ctx_r2.activeArtifactId);
|
|
197
338
|
i0.ɵɵadvance(2);
|
|
198
|
-
i0.ɵɵproperty("
|
|
339
|
+
i0.ɵɵproperty("ngClass", item_r13.selected ? "fa-check-circle" : "fa-circle");
|
|
340
|
+
i0.ɵɵadvance();
|
|
341
|
+
i0.ɵɵproperty("ngIf", item_r13.type === "folder");
|
|
342
|
+
i0.ɵɵadvance();
|
|
343
|
+
i0.ɵɵproperty("ngIf", item_r13.type === "artifact");
|
|
199
344
|
} }
|
|
200
|
-
function
|
|
201
|
-
i0.ɵɵelementStart(0, "div",
|
|
202
|
-
i0.ɵɵ
|
|
345
|
+
function CollectionsFullViewComponent_div_23_Template(rf, ctx) { if (rf & 1) {
|
|
346
|
+
i0.ɵɵelementStart(0, "div", 61);
|
|
347
|
+
i0.ɵɵtemplate(1, CollectionsFullViewComponent_div_23_div_1_Template, 5, 7, "div", 62);
|
|
203
348
|
i0.ɵɵelementEnd();
|
|
204
349
|
} if (rf & 2) {
|
|
205
|
-
const ctx_r2 = i0.ɵɵnextContext(
|
|
350
|
+
const ctx_r2 = i0.ɵɵnextContext();
|
|
206
351
|
i0.ɵɵadvance();
|
|
207
|
-
i0.ɵɵ
|
|
352
|
+
i0.ɵɵproperty("ngForOf", ctx_r2.unifiedItems);
|
|
353
|
+
} }
|
|
354
|
+
function CollectionsFullViewComponent_div_24_i_9_Template(rf, ctx) { if (rf & 1) {
|
|
355
|
+
i0.ɵɵelement(0, "i", 31);
|
|
208
356
|
} }
|
|
209
|
-
function
|
|
210
|
-
i0.ɵɵ
|
|
211
|
-
|
|
357
|
+
function CollectionsFullViewComponent_div_24_i_10_Template(rf, ctx) { if (rf & 1) {
|
|
358
|
+
i0.ɵɵelement(0, "i", 9);
|
|
359
|
+
} if (rf & 2) {
|
|
360
|
+
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
361
|
+
i0.ɵɵproperty("ngClass", ctx_r2.sortOrder === "asc" ? "fa-sort-up" : "fa-sort-down");
|
|
362
|
+
} }
|
|
363
|
+
function CollectionsFullViewComponent_div_24_i_14_Template(rf, ctx) { if (rf & 1) {
|
|
364
|
+
i0.ɵɵelement(0, "i", 31);
|
|
365
|
+
} }
|
|
366
|
+
function CollectionsFullViewComponent_div_24_i_15_Template(rf, ctx) { if (rf & 1) {
|
|
367
|
+
i0.ɵɵelement(0, "i", 9);
|
|
368
|
+
} if (rf & 2) {
|
|
369
|
+
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
370
|
+
i0.ɵɵproperty("ngClass", ctx_r2.sortOrder === "asc" ? "fa-sort-up" : "fa-sort-down");
|
|
371
|
+
} }
|
|
372
|
+
function CollectionsFullViewComponent_div_24_i_19_Template(rf, ctx) { if (rf & 1) {
|
|
373
|
+
i0.ɵɵelement(0, "i", 31);
|
|
374
|
+
} }
|
|
375
|
+
function CollectionsFullViewComponent_div_24_i_20_Template(rf, ctx) { if (rf & 1) {
|
|
376
|
+
i0.ɵɵelement(0, "i", 9);
|
|
377
|
+
} if (rf & 2) {
|
|
378
|
+
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
379
|
+
i0.ɵɵproperty("ngClass", ctx_r2.sortOrder === "asc" ? "fa-sort-up" : "fa-sort-down");
|
|
380
|
+
} }
|
|
381
|
+
function CollectionsFullViewComponent_div_24_tr_24_i_8_Template(rf, ctx) { if (rf & 1) {
|
|
382
|
+
i0.ɵɵelement(0, "i", 103);
|
|
383
|
+
} }
|
|
384
|
+
function CollectionsFullViewComponent_div_24_tr_24_span_10_Template(rf, ctx) { if (rf & 1) {
|
|
385
|
+
i0.ɵɵelementStart(0, "span");
|
|
386
|
+
i0.ɵɵtext(1, "Folder");
|
|
212
387
|
i0.ɵɵelementEnd();
|
|
213
|
-
|
|
214
|
-
|
|
388
|
+
} }
|
|
389
|
+
function CollectionsFullViewComponent_div_24_tr_24_span_11_Template(rf, ctx) { if (rf & 1) {
|
|
390
|
+
i0.ɵɵelementStart(0, "span", 85);
|
|
391
|
+
i0.ɵɵtext(1);
|
|
215
392
|
i0.ɵɵelementEnd();
|
|
216
|
-
|
|
393
|
+
} if (rf & 2) {
|
|
394
|
+
const item_r16 = i0.ɵɵnextContext().$implicit;
|
|
395
|
+
i0.ɵɵadvance();
|
|
396
|
+
i0.ɵɵtextInterpolate1(" ", item_r16.artifactType, " ");
|
|
397
|
+
} }
|
|
398
|
+
function CollectionsFullViewComponent_div_24_tr_24_span_13_Template(rf, ctx) { if (rf & 1) {
|
|
399
|
+
i0.ɵɵelementStart(0, "span");
|
|
400
|
+
i0.ɵɵtext(1);
|
|
401
|
+
i0.ɵɵpipe(2, "date");
|
|
217
402
|
i0.ɵɵelementEnd();
|
|
218
|
-
|
|
403
|
+
} if (rf & 2) {
|
|
404
|
+
const item_r16 = i0.ɵɵnextContext().$implicit;
|
|
405
|
+
i0.ɵɵadvance();
|
|
406
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(2, 1, item_r16.lastModified, "short"), " ");
|
|
407
|
+
} }
|
|
408
|
+
function CollectionsFullViewComponent_div_24_tr_24_span_15_Template(rf, ctx) { if (rf & 1) {
|
|
409
|
+
i0.ɵɵelementStart(0, "span");
|
|
410
|
+
i0.ɵɵtext(1);
|
|
219
411
|
i0.ɵɵelementEnd();
|
|
220
412
|
} if (rf & 2) {
|
|
413
|
+
const item_r16 = i0.ɵɵnextContext().$implicit;
|
|
414
|
+
i0.ɵɵadvance();
|
|
415
|
+
i0.ɵɵtextInterpolate(item_r16.owner);
|
|
416
|
+
} }
|
|
417
|
+
function CollectionsFullViewComponent_div_24_tr_24_Template(rf, ctx) { if (rf & 1) {
|
|
418
|
+
const _r15 = i0.ɵɵgetCurrentView();
|
|
419
|
+
i0.ɵɵelementStart(0, "tr", 97);
|
|
420
|
+
i0.ɵɵlistener("click", function CollectionsFullViewComponent_div_24_tr_24_Template_tr_click_0_listener($event) { const item_r16 = i0.ɵɵrestoreView(_r15).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onItemClick(item_r16, $event)); })("contextmenu", function CollectionsFullViewComponent_div_24_tr_24_Template_tr_contextmenu_0_listener($event) { const item_r16 = i0.ɵɵrestoreView(_r15).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onItemContextMenu(item_r16, $event)); });
|
|
421
|
+
i0.ɵɵelementStart(1, "td", 88)(2, "i", 89);
|
|
422
|
+
i0.ɵɵlistener("click", function CollectionsFullViewComponent_div_24_tr_24_Template_i_click_2_listener($event) { const item_r16 = i0.ɵɵrestoreView(_r15).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.toggleItemSelection(item_r16, $event)); });
|
|
423
|
+
i0.ɵɵelementEnd()();
|
|
424
|
+
i0.ɵɵelementStart(3, "td", 98)(4, "div", 99);
|
|
425
|
+
i0.ɵɵelement(5, "i", 9);
|
|
426
|
+
i0.ɵɵelementStart(6, "span");
|
|
427
|
+
i0.ɵɵtext(7);
|
|
428
|
+
i0.ɵɵelementEnd();
|
|
429
|
+
i0.ɵɵtemplate(8, CollectionsFullViewComponent_div_24_tr_24_i_8_Template, 1, 0, "i", 100);
|
|
430
|
+
i0.ɵɵelementEnd()();
|
|
431
|
+
i0.ɵɵelementStart(9, "td", 101);
|
|
432
|
+
i0.ɵɵtemplate(10, CollectionsFullViewComponent_div_24_tr_24_span_10_Template, 2, 0, "span", 59)(11, CollectionsFullViewComponent_div_24_tr_24_span_11_Template, 2, 1, "span", 83);
|
|
433
|
+
i0.ɵɵelementEnd();
|
|
434
|
+
i0.ɵɵelementStart(12, "td", 102);
|
|
435
|
+
i0.ɵɵtemplate(13, CollectionsFullViewComponent_div_24_tr_24_span_13_Template, 3, 4, "span", 59);
|
|
436
|
+
i0.ɵɵelementEnd();
|
|
437
|
+
i0.ɵɵelementStart(14, "td", 95);
|
|
438
|
+
i0.ɵɵtemplate(15, CollectionsFullViewComponent_div_24_tr_24_span_15_Template, 2, 1, "span", 59);
|
|
439
|
+
i0.ɵɵelementEnd()();
|
|
440
|
+
} if (rf & 2) {
|
|
441
|
+
const item_r16 = ctx.$implicit;
|
|
221
442
|
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
222
|
-
i0.ɵɵ
|
|
223
|
-
i0.ɵɵ
|
|
443
|
+
i0.ɵɵclassProp("selected", item_r16.selected)("active", item_r16.type === "artifact" && (item_r16.artifact == null ? null : item_r16.artifact.ID) === ctx_r2.activeArtifactId);
|
|
444
|
+
i0.ɵɵadvance(2);
|
|
445
|
+
i0.ɵɵproperty("ngClass", item_r16.selected ? "fa-check-circle" : "fa-circle");
|
|
446
|
+
i0.ɵɵadvance(3);
|
|
447
|
+
i0.ɵɵproperty("ngClass", item_r16.type === "folder" ? "fa-folder" : item_r16.icon);
|
|
448
|
+
i0.ɵɵadvance(2);
|
|
449
|
+
i0.ɵɵtextInterpolate(item_r16.name);
|
|
224
450
|
i0.ɵɵadvance();
|
|
225
|
-
i0.ɵɵproperty("ngIf",
|
|
451
|
+
i0.ɵɵproperty("ngIf", item_r16.isShared);
|
|
452
|
+
i0.ɵɵadvance(2);
|
|
453
|
+
i0.ɵɵproperty("ngIf", item_r16.type === "folder");
|
|
226
454
|
i0.ɵɵadvance();
|
|
227
|
-
i0.ɵɵproperty("ngIf",
|
|
455
|
+
i0.ɵɵproperty("ngIf", item_r16.type === "artifact");
|
|
456
|
+
i0.ɵɵadvance(2);
|
|
457
|
+
i0.ɵɵproperty("ngIf", item_r16.lastModified);
|
|
458
|
+
i0.ɵɵadvance(2);
|
|
459
|
+
i0.ɵɵproperty("ngIf", item_r16.owner);
|
|
228
460
|
} }
|
|
229
|
-
function
|
|
230
|
-
|
|
231
|
-
i0.ɵɵ
|
|
461
|
+
function CollectionsFullViewComponent_div_24_Template(rf, ctx) { if (rf & 1) {
|
|
462
|
+
const _r14 = i0.ɵɵgetCurrentView();
|
|
463
|
+
i0.ɵɵelementStart(0, "div", 86)(1, "table", 87)(2, "thead")(3, "tr")(4, "th", 88)(5, "i", 89);
|
|
464
|
+
i0.ɵɵlistener("click", function CollectionsFullViewComponent_div_24_Template_i_click_5_listener() { i0.ɵɵrestoreView(_r14); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.selectedItems.size === ctx_r2.unifiedItems.length ? ctx_r2.clearSelection() : ctx_r2.selectAll()); });
|
|
465
|
+
i0.ɵɵelementEnd()();
|
|
466
|
+
i0.ɵɵelementStart(6, "th", 90);
|
|
467
|
+
i0.ɵɵlistener("click", function CollectionsFullViewComponent_div_24_Template_th_click_6_listener() { i0.ɵɵrestoreView(_r14); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.setSortBy("name")); });
|
|
468
|
+
i0.ɵɵelementStart(7, "span");
|
|
469
|
+
i0.ɵɵtext(8, "Name");
|
|
232
470
|
i0.ɵɵelementEnd();
|
|
233
|
-
i0.ɵɵ
|
|
234
|
-
i0.ɵɵtext(6);
|
|
471
|
+
i0.ɵɵtemplate(9, CollectionsFullViewComponent_div_24_i_9_Template, 1, 0, "i", 91)(10, CollectionsFullViewComponent_div_24_i_10_Template, 1, 1, "i", 92);
|
|
235
472
|
i0.ɵɵelementEnd();
|
|
236
|
-
i0.ɵɵ
|
|
473
|
+
i0.ɵɵelementStart(11, "th", 93);
|
|
474
|
+
i0.ɵɵlistener("click", function CollectionsFullViewComponent_div_24_Template_th_click_11_listener() { i0.ɵɵrestoreView(_r14); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.setSortBy("type")); });
|
|
475
|
+
i0.ɵɵelementStart(12, "span");
|
|
476
|
+
i0.ɵɵtext(13, "Type");
|
|
237
477
|
i0.ɵɵelementEnd();
|
|
238
|
-
i0.ɵɵtemplate(
|
|
478
|
+
i0.ɵɵtemplate(14, CollectionsFullViewComponent_div_24_i_14_Template, 1, 0, "i", 91)(15, CollectionsFullViewComponent_div_24_i_15_Template, 1, 1, "i", 92);
|
|
239
479
|
i0.ɵɵelementEnd();
|
|
240
|
-
i0.ɵɵ
|
|
480
|
+
i0.ɵɵelementStart(16, "th", 94);
|
|
481
|
+
i0.ɵɵlistener("click", function CollectionsFullViewComponent_div_24_Template_th_click_16_listener() { i0.ɵɵrestoreView(_r14); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.setSortBy("date")); });
|
|
482
|
+
i0.ɵɵelementStart(17, "span");
|
|
483
|
+
i0.ɵɵtext(18, "Modified");
|
|
241
484
|
i0.ɵɵelementEnd();
|
|
485
|
+
i0.ɵɵtemplate(19, CollectionsFullViewComponent_div_24_i_19_Template, 1, 0, "i", 91)(20, CollectionsFullViewComponent_div_24_i_20_Template, 1, 1, "i", 92);
|
|
486
|
+
i0.ɵɵelementEnd();
|
|
487
|
+
i0.ɵɵelementStart(21, "th", 95);
|
|
488
|
+
i0.ɵɵtext(22, "Owner");
|
|
489
|
+
i0.ɵɵelementEnd()()();
|
|
490
|
+
i0.ɵɵelementStart(23, "tbody");
|
|
491
|
+
i0.ɵɵtemplate(24, CollectionsFullViewComponent_div_24_tr_24_Template, 16, 12, "tr", 96);
|
|
492
|
+
i0.ɵɵelementEnd()()();
|
|
242
493
|
} if (rf & 2) {
|
|
243
494
|
const ctx_r2 = i0.ɵɵnextContext();
|
|
244
|
-
i0.ɵɵadvance(
|
|
245
|
-
i0.ɵɵ
|
|
495
|
+
i0.ɵɵadvance(5);
|
|
496
|
+
i0.ɵɵproperty("ngClass", ctx_r2.selectedItems.size === ctx_r2.unifiedItems.length ? "fa-check-square" : "fa-square");
|
|
497
|
+
i0.ɵɵadvance(4);
|
|
498
|
+
i0.ɵɵproperty("ngIf", ctx_r2.sortBy !== "name");
|
|
246
499
|
i0.ɵɵadvance();
|
|
247
|
-
i0.ɵɵproperty("ngIf", ctx_r2.
|
|
500
|
+
i0.ɵɵproperty("ngIf", ctx_r2.sortBy === "name");
|
|
501
|
+
i0.ɵɵadvance(4);
|
|
502
|
+
i0.ɵɵproperty("ngIf", ctx_r2.sortBy !== "type");
|
|
248
503
|
i0.ɵɵadvance();
|
|
249
|
-
i0.ɵɵproperty("ngIf", ctx_r2.
|
|
504
|
+
i0.ɵɵproperty("ngIf", ctx_r2.sortBy === "type");
|
|
505
|
+
i0.ɵɵadvance(4);
|
|
506
|
+
i0.ɵɵproperty("ngIf", ctx_r2.sortBy !== "date");
|
|
250
507
|
i0.ɵɵadvance();
|
|
251
|
-
i0.ɵɵproperty("ngIf", ctx_r2.
|
|
508
|
+
i0.ɵɵproperty("ngIf", ctx_r2.sortBy === "date");
|
|
509
|
+
i0.ɵɵadvance(4);
|
|
510
|
+
i0.ɵɵproperty("ngForOf", ctx_r2.unifiedItems);
|
|
252
511
|
} }
|
|
253
512
|
/**
|
|
254
513
|
* Full-panel Collections view component
|
|
@@ -259,6 +518,7 @@ export class CollectionsFullViewComponent {
|
|
|
259
518
|
artifactState;
|
|
260
519
|
collectionState;
|
|
261
520
|
permissionService;
|
|
521
|
+
artifactIconService;
|
|
262
522
|
environmentId;
|
|
263
523
|
currentUser;
|
|
264
524
|
collectionNavigated = new EventEmitter();
|
|
@@ -276,18 +536,31 @@ export class CollectionsFullViewComponent {
|
|
|
276
536
|
userPermissions = new Map();
|
|
277
537
|
isShareModalOpen = false;
|
|
278
538
|
sharingCollection = null;
|
|
539
|
+
// New UI state for Mac Finder-style view
|
|
540
|
+
viewMode = 'grid';
|
|
541
|
+
sortBy = 'name';
|
|
542
|
+
sortOrder = 'asc';
|
|
543
|
+
searchQuery = '';
|
|
544
|
+
unifiedItems = [];
|
|
545
|
+
selectedItems = new Set();
|
|
546
|
+
showNewDropdown = false;
|
|
547
|
+
showSortDropdown = false;
|
|
548
|
+
activeArtifactId = null; // Track which artifact is currently being viewed
|
|
279
549
|
destroy$ = new Subject();
|
|
280
550
|
isNavigatingProgrammatically = false;
|
|
281
|
-
constructor(dialogService, artifactState, collectionState, permissionService) {
|
|
551
|
+
constructor(dialogService, artifactState, collectionState, permissionService, artifactIconService) {
|
|
282
552
|
this.dialogService = dialogService;
|
|
283
553
|
this.artifactState = artifactState;
|
|
284
554
|
this.collectionState = collectionState;
|
|
285
555
|
this.permissionService = permissionService;
|
|
556
|
+
this.artifactIconService = artifactIconService;
|
|
286
557
|
}
|
|
287
558
|
ngOnInit() {
|
|
288
559
|
this.loadData();
|
|
289
560
|
// Subscribe to collection state changes for deep linking
|
|
290
561
|
this.subscribeToCollectionState();
|
|
562
|
+
// Subscribe to artifact state changes to track active artifact
|
|
563
|
+
this.subscribeToArtifactState();
|
|
291
564
|
}
|
|
292
565
|
ngOnDestroy() {
|
|
293
566
|
this.destroy$.next();
|
|
@@ -318,14 +591,40 @@ export class CollectionsFullViewComponent {
|
|
|
318
591
|
}
|
|
319
592
|
});
|
|
320
593
|
}
|
|
594
|
+
/**
|
|
595
|
+
* Subscribe to artifact state changes to track which artifact is currently open
|
|
596
|
+
*/
|
|
597
|
+
subscribeToArtifactState() {
|
|
598
|
+
this.artifactState.activeArtifact$
|
|
599
|
+
.pipe(takeUntil(this.destroy$))
|
|
600
|
+
.subscribe(artifact => {
|
|
601
|
+
// Update active artifact ID for highlighting
|
|
602
|
+
this.activeArtifactId = artifact?.ID || null;
|
|
603
|
+
});
|
|
604
|
+
}
|
|
321
605
|
async loadData() {
|
|
322
606
|
this.isLoading = true;
|
|
323
607
|
try {
|
|
608
|
+
// Load saved view preferences from localStorage
|
|
609
|
+
const savedMode = localStorage.getItem('collections-view-mode');
|
|
610
|
+
if (savedMode === 'grid' || savedMode === 'list') {
|
|
611
|
+
this.viewMode = savedMode;
|
|
612
|
+
}
|
|
613
|
+
const savedSortBy = localStorage.getItem('collections-sort-by');
|
|
614
|
+
if (savedSortBy === 'name' || savedSortBy === 'date' || savedSortBy === 'type') {
|
|
615
|
+
this.sortBy = savedSortBy;
|
|
616
|
+
}
|
|
617
|
+
const savedSortOrder = localStorage.getItem('collections-sort-order');
|
|
618
|
+
if (savedSortOrder === 'asc' || savedSortOrder === 'desc') {
|
|
619
|
+
this.sortOrder = savedSortOrder;
|
|
620
|
+
}
|
|
324
621
|
await Promise.all([
|
|
325
622
|
this.loadCollections(),
|
|
326
623
|
this.loadArtifacts(),
|
|
327
624
|
this.loadCurrentCollectionPermission()
|
|
328
625
|
]);
|
|
626
|
+
// Build unified item list after data loads
|
|
627
|
+
this.buildUnifiedItemList();
|
|
329
628
|
}
|
|
330
629
|
finally {
|
|
331
630
|
this.isLoading = false;
|
|
@@ -399,10 +698,11 @@ export class CollectionsFullViewComponent {
|
|
|
399
698
|
this.breadcrumbs.push({ id: collection.ID, name: collection.Name });
|
|
400
699
|
this.currentCollectionId = collection.ID;
|
|
401
700
|
this.currentCollection = collection;
|
|
701
|
+
this.activeArtifactId = null; // Clear active artifact when switching collections
|
|
402
702
|
await this.loadData();
|
|
403
703
|
// Update state service
|
|
404
704
|
this.collectionState.setActiveCollection(collection.ID);
|
|
405
|
-
//
|
|
705
|
+
// Close any open artifact when switching collections
|
|
406
706
|
this.collectionNavigated.emit({
|
|
407
707
|
collectionId: collection.ID,
|
|
408
708
|
versionId: null
|
|
@@ -426,7 +726,7 @@ export class CollectionsFullViewComponent {
|
|
|
426
726
|
await this.loadData();
|
|
427
727
|
// Update state service
|
|
428
728
|
this.collectionState.setActiveCollection(crumb.id);
|
|
429
|
-
//
|
|
729
|
+
// Close any open artifact when navigating collections
|
|
430
730
|
this.collectionNavigated.emit({
|
|
431
731
|
collectionId: crumb.id,
|
|
432
732
|
versionId: null
|
|
@@ -446,7 +746,7 @@ export class CollectionsFullViewComponent {
|
|
|
446
746
|
await this.loadData();
|
|
447
747
|
// Update state service
|
|
448
748
|
this.collectionState.setActiveCollection(null);
|
|
449
|
-
//
|
|
749
|
+
// Close any open artifact when navigating to root
|
|
450
750
|
this.collectionNavigated.emit({
|
|
451
751
|
collectionId: null,
|
|
452
752
|
versionId: null
|
|
@@ -529,6 +829,7 @@ export class CollectionsFullViewComponent {
|
|
|
529
829
|
if (!canEdit)
|
|
530
830
|
return;
|
|
531
831
|
}
|
|
832
|
+
this.showNewDropdown = false;
|
|
532
833
|
this.editingCollection = undefined;
|
|
533
834
|
this.isFormModalOpen = true;
|
|
534
835
|
}
|
|
@@ -608,6 +909,8 @@ export class CollectionsFullViewComponent {
|
|
|
608
909
|
await this.loadCollections();
|
|
609
910
|
// Reload current collection permission (it was cleared by loadUserPermissions)
|
|
610
911
|
await this.loadCurrentCollectionPermission();
|
|
912
|
+
// Rebuild unified list to show new collection
|
|
913
|
+
this.buildUnifiedItemList();
|
|
611
914
|
}
|
|
612
915
|
onFormCancelled() {
|
|
613
916
|
this.isFormModalOpen = false;
|
|
@@ -620,6 +923,7 @@ export class CollectionsFullViewComponent {
|
|
|
620
923
|
if (!canEdit)
|
|
621
924
|
return;
|
|
622
925
|
}
|
|
926
|
+
this.showNewDropdown = false;
|
|
623
927
|
this.isArtifactModalOpen = true;
|
|
624
928
|
}
|
|
625
929
|
async onArtifactSaved(artifact) {
|
|
@@ -672,12 +976,11 @@ export class CollectionsFullViewComponent {
|
|
|
672
976
|
}
|
|
673
977
|
}
|
|
674
978
|
viewArtifact(item) {
|
|
979
|
+
this.activeArtifactId = item.artifact.ID;
|
|
675
980
|
this.artifactState.openArtifact(item.artifact.ID, item.version.VersionNumber);
|
|
676
|
-
//
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
versionId: item.version.ID
|
|
680
|
-
});
|
|
981
|
+
// Don't emit navigation event when just viewing an artifact in current collection
|
|
982
|
+
// Only emit when actually navigating between collections (handled by openCollection, navigateTo, etc.)
|
|
983
|
+
// The artifactState.openArtifact() already handles updating the artifact viewer
|
|
681
984
|
}
|
|
682
985
|
// Permission validation and checking methods
|
|
683
986
|
async validatePermission(collection, requiredPermission) {
|
|
@@ -759,9 +1062,280 @@ export class CollectionsFullViewComponent {
|
|
|
759
1062
|
this.isShareModalOpen = false;
|
|
760
1063
|
this.sharingCollection = null;
|
|
761
1064
|
}
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
1065
|
+
/**
|
|
1066
|
+
* Get the icon for an artifact using the centralized icon service.
|
|
1067
|
+
* Fallback priority: Plugin icon > Metadata icon > Hardcoded mapping > Generic icon
|
|
1068
|
+
*/
|
|
1069
|
+
getArtifactIcon(artifact) {
|
|
1070
|
+
return this.artifactIconService.getArtifactIcon(artifact);
|
|
1071
|
+
}
|
|
1072
|
+
// ==================== NEW MAC FINDER-STYLE METHODS ====================
|
|
1073
|
+
/**
|
|
1074
|
+
* Build unified list of folders and artifacts (Phase 1)
|
|
1075
|
+
*/
|
|
1076
|
+
buildUnifiedItemList() {
|
|
1077
|
+
const items = [];
|
|
1078
|
+
// Add folders first (collections)
|
|
1079
|
+
for (const collection of this.filteredCollections) {
|
|
1080
|
+
items.push({
|
|
1081
|
+
type: 'folder',
|
|
1082
|
+
id: collection.ID,
|
|
1083
|
+
name: collection.Name,
|
|
1084
|
+
description: collection.Description || undefined,
|
|
1085
|
+
icon: 'fa-folder',
|
|
1086
|
+
itemCount: 0, // TODO: calculate actual count
|
|
1087
|
+
owner: collection.Owner || undefined,
|
|
1088
|
+
isShared: this.isShared(collection),
|
|
1089
|
+
selected: this.selectedItems.has(collection.ID),
|
|
1090
|
+
collection: collection
|
|
1091
|
+
});
|
|
1092
|
+
}
|
|
1093
|
+
// Then add artifacts
|
|
1094
|
+
for (const item of this.filteredArtifactVersions) {
|
|
1095
|
+
items.push({
|
|
1096
|
+
type: 'artifact',
|
|
1097
|
+
id: item.version.ID,
|
|
1098
|
+
name: item.artifact.Name,
|
|
1099
|
+
description: item.artifact.Description || undefined,
|
|
1100
|
+
icon: this.getArtifactIcon(item.artifact),
|
|
1101
|
+
versionNumber: item.version.VersionNumber,
|
|
1102
|
+
artifactType: item.artifact.Type,
|
|
1103
|
+
lastModified: item.version.__mj_UpdatedAt,
|
|
1104
|
+
selected: this.selectedItems.has(item.version.ID),
|
|
1105
|
+
artifact: item.artifact,
|
|
1106
|
+
version: item.version
|
|
1107
|
+
});
|
|
1108
|
+
}
|
|
1109
|
+
// Apply sorting
|
|
1110
|
+
this.unifiedItems = this.sortItems(items);
|
|
1111
|
+
}
|
|
1112
|
+
/**
|
|
1113
|
+
* Sort items by selected criteria (Phase 2)
|
|
1114
|
+
*/
|
|
1115
|
+
sortItems(items) {
|
|
1116
|
+
return items.sort((a, b) => {
|
|
1117
|
+
let comparison = 0;
|
|
1118
|
+
// Always keep folders before artifacts
|
|
1119
|
+
if (a.type !== b.type) {
|
|
1120
|
+
return a.type === 'folder' ? -1 : 1;
|
|
1121
|
+
}
|
|
1122
|
+
// Then sort by selected criteria
|
|
1123
|
+
switch (this.sortBy) {
|
|
1124
|
+
case 'name':
|
|
1125
|
+
comparison = a.name.localeCompare(b.name);
|
|
1126
|
+
break;
|
|
1127
|
+
case 'date':
|
|
1128
|
+
const aDate = a.lastModified || new Date(0);
|
|
1129
|
+
const bDate = b.lastModified || new Date(0);
|
|
1130
|
+
comparison = aDate.getTime() - bDate.getTime();
|
|
1131
|
+
break;
|
|
1132
|
+
case 'type':
|
|
1133
|
+
comparison = (a.artifactType || '').localeCompare(b.artifactType || '');
|
|
1134
|
+
break;
|
|
1135
|
+
}
|
|
1136
|
+
return this.sortOrder === 'asc' ? comparison : -comparison;
|
|
1137
|
+
});
|
|
1138
|
+
}
|
|
1139
|
+
/**
|
|
1140
|
+
* Toggle between grid and list view
|
|
1141
|
+
*/
|
|
1142
|
+
toggleViewMode() {
|
|
1143
|
+
this.viewMode = this.viewMode === 'grid' ? 'list' : 'grid';
|
|
1144
|
+
// Save preference to localStorage
|
|
1145
|
+
localStorage.setItem('collections-view-mode', this.viewMode);
|
|
1146
|
+
}
|
|
1147
|
+
/**
|
|
1148
|
+
* Set view mode explicitly
|
|
1149
|
+
*/
|
|
1150
|
+
setViewMode(mode) {
|
|
1151
|
+
this.viewMode = mode;
|
|
1152
|
+
// Save preference to localStorage
|
|
1153
|
+
localStorage.setItem('collections-view-mode', mode);
|
|
1154
|
+
}
|
|
1155
|
+
/**
|
|
1156
|
+
* Set sort order - toggles asc/desc if clicking same column
|
|
1157
|
+
*/
|
|
1158
|
+
setSortBy(sortBy) {
|
|
1159
|
+
if (this.sortBy === sortBy) {
|
|
1160
|
+
// Toggle order if same sort
|
|
1161
|
+
this.sortOrder = this.sortOrder === 'asc' ? 'desc' : 'asc';
|
|
1162
|
+
}
|
|
1163
|
+
else {
|
|
1164
|
+
this.sortBy = sortBy;
|
|
1165
|
+
this.sortOrder = 'asc';
|
|
1166
|
+
}
|
|
1167
|
+
// Save sort preferences to localStorage
|
|
1168
|
+
localStorage.setItem('collections-sort-by', this.sortBy);
|
|
1169
|
+
localStorage.setItem('collections-sort-order', this.sortOrder);
|
|
1170
|
+
// Close dropdown and rebuild list
|
|
1171
|
+
this.showSortDropdown = false;
|
|
1172
|
+
this.buildUnifiedItemList();
|
|
1173
|
+
}
|
|
1174
|
+
/**
|
|
1175
|
+
* Filter items by search query (Phase 2)
|
|
1176
|
+
*/
|
|
1177
|
+
onSearchChange(query) {
|
|
1178
|
+
// If query parameter provided, use it; otherwise use searchQuery property
|
|
1179
|
+
const searchText = query !== undefined ? query : this.searchQuery;
|
|
1180
|
+
if (!searchText.trim()) {
|
|
1181
|
+
// Reset to all items
|
|
1182
|
+
this.buildUnifiedItemList();
|
|
1183
|
+
return;
|
|
1184
|
+
}
|
|
1185
|
+
const lowerQuery = searchText.toLowerCase();
|
|
1186
|
+
this.unifiedItems = this.unifiedItems.filter(item => item.name.toLowerCase().includes(lowerQuery) ||
|
|
1187
|
+
item.description?.toLowerCase().includes(lowerQuery));
|
|
1188
|
+
}
|
|
1189
|
+
/**
|
|
1190
|
+
* Multi-select: Toggle item selection (Phase 3)
|
|
1191
|
+
*/
|
|
1192
|
+
toggleItemSelection(item, event) {
|
|
1193
|
+
event.stopPropagation();
|
|
1194
|
+
if (event.metaKey || event.ctrlKey) {
|
|
1195
|
+
// Cmd/Ctrl+Click: Toggle individual selection
|
|
1196
|
+
if (this.selectedItems.has(item.id)) {
|
|
1197
|
+
this.selectedItems.delete(item.id);
|
|
1198
|
+
}
|
|
1199
|
+
else {
|
|
1200
|
+
this.selectedItems.add(item.id);
|
|
1201
|
+
}
|
|
1202
|
+
}
|
|
1203
|
+
else if (event.shiftKey) {
|
|
1204
|
+
// Shift+Click: Select range (TODO: implement range selection)
|
|
1205
|
+
this.selectedItems.add(item.id);
|
|
1206
|
+
}
|
|
1207
|
+
else {
|
|
1208
|
+
// Regular click: Select only this item
|
|
1209
|
+
this.selectedItems.clear();
|
|
1210
|
+
this.selectedItems.add(item.id);
|
|
1211
|
+
}
|
|
1212
|
+
this.buildUnifiedItemList(); // Refresh to update selected states
|
|
1213
|
+
}
|
|
1214
|
+
/**
|
|
1215
|
+
* Multi-select: Select all items (Phase 3)
|
|
1216
|
+
*/
|
|
1217
|
+
selectAll() {
|
|
1218
|
+
this.selectedItems.clear();
|
|
1219
|
+
for (const item of this.unifiedItems) {
|
|
1220
|
+
this.selectedItems.add(item.id);
|
|
1221
|
+
}
|
|
1222
|
+
this.buildUnifiedItemList();
|
|
1223
|
+
}
|
|
1224
|
+
/**
|
|
1225
|
+
* Multi-select: Clear selection (Phase 3)
|
|
1226
|
+
*/
|
|
1227
|
+
clearSelection() {
|
|
1228
|
+
this.selectedItems.clear();
|
|
1229
|
+
this.buildUnifiedItemList();
|
|
1230
|
+
}
|
|
1231
|
+
/**
|
|
1232
|
+
* Multi-select: Delete selected items (Phase 3)
|
|
1233
|
+
*/
|
|
1234
|
+
async deleteSelected() {
|
|
1235
|
+
if (this.selectedItems.size === 0)
|
|
1236
|
+
return;
|
|
1237
|
+
const confirmed = await this.dialogService.confirm({
|
|
1238
|
+
title: `Delete ${this.selectedItems.size} item(s)?`,
|
|
1239
|
+
message: 'This action cannot be undone.',
|
|
1240
|
+
dangerous: true
|
|
1241
|
+
});
|
|
1242
|
+
if (!confirmed)
|
|
1243
|
+
return;
|
|
1244
|
+
// TODO: Implement batch delete
|
|
1245
|
+
this.clearSelection();
|
|
1246
|
+
}
|
|
1247
|
+
/**
|
|
1248
|
+
* Get count of items in folder (Phase 1)
|
|
1249
|
+
*/
|
|
1250
|
+
async getCollectionItemCount(collectionId) {
|
|
1251
|
+
// TODO: Query for actual count
|
|
1252
|
+
return 0;
|
|
1253
|
+
}
|
|
1254
|
+
/**
|
|
1255
|
+
* Handle clicking on unified item (Phase 1)
|
|
1256
|
+
*/
|
|
1257
|
+
onItemClick(item, event) {
|
|
1258
|
+
if (item.type === 'folder' && item.collection) {
|
|
1259
|
+
this.openCollection(item.collection);
|
|
1260
|
+
}
|
|
1261
|
+
else if (item.type === 'artifact') {
|
|
1262
|
+
this.viewArtifact({ artifact: item.artifact, version: item.version });
|
|
1263
|
+
}
|
|
1264
|
+
}
|
|
1265
|
+
/**
|
|
1266
|
+
* Get item count text for display
|
|
1267
|
+
*/
|
|
1268
|
+
getItemCountText(itemCount) {
|
|
1269
|
+
if (itemCount !== undefined) {
|
|
1270
|
+
if (itemCount === 0)
|
|
1271
|
+
return 'Empty';
|
|
1272
|
+
if (itemCount === 1)
|
|
1273
|
+
return '1 item';
|
|
1274
|
+
return `${itemCount} items`;
|
|
1275
|
+
}
|
|
1276
|
+
const folders = this.unifiedItems.filter(i => i.type === 'folder').length;
|
|
1277
|
+
const artifacts = this.unifiedItems.filter(i => i.type === 'artifact').length;
|
|
1278
|
+
const total = folders + artifacts;
|
|
1279
|
+
if (total === 0)
|
|
1280
|
+
return 'No items';
|
|
1281
|
+
if (total === 1)
|
|
1282
|
+
return '1 item';
|
|
1283
|
+
const parts = [];
|
|
1284
|
+
if (folders > 0)
|
|
1285
|
+
parts.push(`${folders} folder${folders > 1 ? 's' : ''}`);
|
|
1286
|
+
if (artifacts > 0)
|
|
1287
|
+
parts.push(`${artifacts} artifact${artifacts > 1 ? 's' : ''}`);
|
|
1288
|
+
return parts.join(', ');
|
|
1289
|
+
}
|
|
1290
|
+
/**
|
|
1291
|
+
* Handle keyboard shortcuts
|
|
1292
|
+
* - Cmd/Ctrl+A: Select all
|
|
1293
|
+
* - Escape: Clear selection
|
|
1294
|
+
* - Delete/Backspace: Delete selected items
|
|
1295
|
+
*/
|
|
1296
|
+
handleKeyboardShortcut(event) {
|
|
1297
|
+
// Cmd+A / Ctrl+A: Select all
|
|
1298
|
+
if ((event.metaKey || event.ctrlKey) && event.key === 'a') {
|
|
1299
|
+
event.preventDefault();
|
|
1300
|
+
this.selectAll();
|
|
1301
|
+
return;
|
|
1302
|
+
}
|
|
1303
|
+
// Escape: Clear selection
|
|
1304
|
+
if (event.key === 'Escape' && this.selectedItems.size > 0) {
|
|
1305
|
+
event.preventDefault();
|
|
1306
|
+
this.clearSelection();
|
|
1307
|
+
return;
|
|
1308
|
+
}
|
|
1309
|
+
// Delete/Backspace: Delete selected items
|
|
1310
|
+
if ((event.key === 'Delete' || event.key === 'Backspace') && this.selectedItems.size > 0) {
|
|
1311
|
+
// Only if not focused on an input
|
|
1312
|
+
const target = event.target;
|
|
1313
|
+
if (target.tagName !== 'INPUT' && target.tagName !== 'TEXTAREA') {
|
|
1314
|
+
event.preventDefault();
|
|
1315
|
+
this.deleteSelected();
|
|
1316
|
+
}
|
|
1317
|
+
return;
|
|
1318
|
+
}
|
|
1319
|
+
}
|
|
1320
|
+
/**
|
|
1321
|
+
* Handle right-click context menu
|
|
1322
|
+
* Opens browser context menu for now - can be extended with custom menu
|
|
1323
|
+
*/
|
|
1324
|
+
onItemContextMenu(item, event) {
|
|
1325
|
+
// Select the item if not already selected
|
|
1326
|
+
if (!item.selected) {
|
|
1327
|
+
this.clearSelection();
|
|
1328
|
+
this.toggleItemSelection(item, event);
|
|
1329
|
+
}
|
|
1330
|
+
// Allow browser's default context menu for now
|
|
1331
|
+
// Future enhancement: implement custom context menu with actions
|
|
1332
|
+
// event.preventDefault();
|
|
1333
|
+
}
|
|
1334
|
+
static ɵfac = function CollectionsFullViewComponent_Factory(t) { return new (t || CollectionsFullViewComponent)(i0.ɵɵdirectiveInject(i1.DialogService), i0.ɵɵdirectiveInject(i2.ArtifactStateService), i0.ɵɵdirectiveInject(i3.CollectionStateService), i0.ɵɵdirectiveInject(i4.CollectionPermissionService), i0.ɵɵdirectiveInject(i5.ArtifactIconService)); };
|
|
1335
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CollectionsFullViewComponent, selectors: [["mj-collections-full-view"]], inputs: { environmentId: "environmentId", currentUser: "currentUser" }, outputs: { collectionNavigated: "collectionNavigated" }, decls: 28, vars: 25, consts: [[1, "collections-view", 3, "keydown"], [1, "collections-header"], [1, "collections-breadcrumb"], [1, "breadcrumb-item"], [1, "fas", "fa-home"], [1, "breadcrumb-link", 3, "click"], ["class", "breadcrumb-path", 4, "ngIf"], [1, "collections-actions"], [1, "btn-icon", 3, "click", "title"], [1, "fas", 3, "ngClass"], ["class", "dropdown-container", 4, "ngIf"], [1, "search-container"], [1, "fas", "fa-search"], ["type", "text", "placeholder", "Search...", 1, "search-input", 3, "ngModelChange", "ngModel"], ["class", "search-clear", "title", "Clear search", 3, "click", 4, "ngIf"], ["title", "Refresh", 1, "btn-icon", 3, "click"], [1, "fas", "fa-sync"], ["class", "selection-toolbar", 4, "ngIf"], [1, "collections-content"], ["class", "loading-state", 4, "ngIf"], ["class", "empty-state", 4, "ngIf"], ["class", "unified-grid", 4, "ngIf"], ["class", "unified-list", 4, "ngIf"], [3, "saved", "cancelled", "isOpen", "collection", "parentCollection", "environmentId", "currentUser"], [3, "saved", "cancelled", "isOpen", "collectionId", "environmentId", "currentUser"], [3, "saved", "cancelled", "isOpen", "collection", "currentUser", "currentUserPermissions"], [1, "breadcrumb-path"], [4, "ngFor", "ngForOf"], [1, "fas", "fa-chevron-right", "breadcrumb-separator"], [1, "dropdown-container"], ["title", "Sort options", 1, "btn-icon", 3, "click"], [1, "fas", "fa-sort"], ["class", "dropdown-menu", 4, "ngIf"], [1, "dropdown-menu"], [1, "dropdown-item", 3, "click"], [1, "fas", "fa-sort-alpha-down"], [1, "fas", "fa-calendar"], [1, "fas", "fa-tag"], ["title", "Clear search", 1, "search-clear", 3, "click"], [1, "fas", "fa-times"], [1, "btn-primary", 3, "click"], [1, "fas", "fa-plus"], [1, "fas", "fa-chevron-down"], ["class", "dropdown-menu dropdown-menu-right", 4, "ngIf"], [1, "dropdown-menu", "dropdown-menu-right"], [1, "fas", "fa-folder-plus"], [1, "dropdown-item", 3, "click", "disabled"], [1, "fas", "fa-file-plus"], [1, "selection-toolbar"], [1, "selection-info"], [1, "selection-count"], [1, "selection-actions"], [1, "btn-toolbar", 3, "click"], [1, "btn-toolbar", "btn-danger", 3, "click"], [1, "fas", "fa-trash"], [1, "loading-state"], [1, "fas", "fa-spinner", "fa-spin"], [1, "empty-state"], [1, "fas", "fa-folder-open"], [4, "ngIf"], ["class", "btn-primary", 3, "click", 4, "ngIf"], [1, "unified-grid"], ["class", "grid-item", 3, "selected", "active", "click", "contextmenu", 4, "ngFor", "ngForOf"], [1, "grid-item", 3, "click", "contextmenu"], [1, "item-checkbox", 3, "click"], ["class", "grid-item-content", 3, "title", 4, "ngIf"], [1, "grid-item-content", 3, "title"], [1, "grid-icon", "folder-icon"], [1, "fas", "fa-folder"], ["class", "shared-badge", "title", "Shared", 4, "ngIf"], [1, "grid-info"], [1, "grid-name"], ["class", "grid-description", 4, "ngIf"], ["class", "grid-meta", 4, "ngIf"], ["class", "grid-owner", 4, "ngIf"], ["title", "Shared", 1, "shared-badge"], [1, "fas", "fa-users"], [1, "grid-description"], [1, "grid-meta"], [1, "grid-owner"], [1, "fas", "fa-user"], [1, "grid-icon", "artifact-icon"], ["class", "version-badge", 4, "ngIf"], ["class", "artifact-type-badge", 4, "ngIf"], [1, "version-badge"], [1, "artifact-type-badge"], [1, "unified-list"], [1, "list-table"], [1, "col-checkbox"], [1, "fas", 3, "click", "ngClass"], [1, "col-name", "sortable", 3, "click"], ["class", "fas fa-sort", 4, "ngIf"], ["class", "fas", 3, "ngClass", 4, "ngIf"], [1, "col-type", "sortable", 3, "click"], [1, "col-modified", "sortable", 3, "click"], [1, "col-owner"], ["class", "list-item", 3, "selected", "active", "click", "contextmenu", 4, "ngFor", "ngForOf"], [1, "list-item", 3, "click", "contextmenu"], [1, "col-name"], [1, "list-name-cell"], ["class", "fas fa-users shared-indicator", "title", "Shared", 4, "ngIf"], [1, "col-type"], [1, "col-modified"], ["title", "Shared", 1, "fas", "fa-users", "shared-indicator"]], template: function CollectionsFullViewComponent_Template(rf, ctx) { if (rf & 1) {
|
|
1336
|
+
i0.ɵɵelementStart(0, "div", 0);
|
|
1337
|
+
i0.ɵɵlistener("keydown", function CollectionsFullViewComponent_Template_div_keydown_0_listener($event) { return ctx.handleKeyboardShortcut($event); });
|
|
1338
|
+
i0.ɵɵelementStart(1, "div", 1)(2, "div", 2)(3, "div", 3);
|
|
765
1339
|
i0.ɵɵelement(4, "i", 4);
|
|
766
1340
|
i0.ɵɵelementStart(5, "a", 5);
|
|
767
1341
|
i0.ɵɵlistener("click", function CollectionsFullViewComponent_Template_a_click_5_listener() { return ctx.navigateToRoot(); });
|
|
@@ -769,46 +1343,77 @@ export class CollectionsFullViewComponent {
|
|
|
769
1343
|
i0.ɵɵelementEnd()();
|
|
770
1344
|
i0.ɵɵtemplate(7, CollectionsFullViewComponent_span_7_Template, 2, 1, "span", 6);
|
|
771
1345
|
i0.ɵɵelementEnd();
|
|
772
|
-
i0.ɵɵelementStart(8, "div", 7);
|
|
773
|
-
i0.ɵɵ
|
|
774
|
-
i0.ɵɵ
|
|
775
|
-
i0.ɵɵ
|
|
776
|
-
i0.ɵɵ
|
|
777
|
-
i0.ɵɵelementEnd()()();
|
|
1346
|
+
i0.ɵɵelementStart(8, "div", 7)(9, "button", 8);
|
|
1347
|
+
i0.ɵɵlistener("click", function CollectionsFullViewComponent_Template_button_click_9_listener() { return ctx.toggleViewMode(); });
|
|
1348
|
+
i0.ɵɵelement(10, "i", 9);
|
|
1349
|
+
i0.ɵɵelementEnd();
|
|
1350
|
+
i0.ɵɵtemplate(11, CollectionsFullViewComponent_div_11_Template, 4, 1, "div", 10);
|
|
778
1351
|
i0.ɵɵelementStart(12, "div", 11);
|
|
779
|
-
i0.ɵɵ
|
|
1352
|
+
i0.ɵɵelement(13, "i", 12);
|
|
1353
|
+
i0.ɵɵelementStart(14, "input", 13);
|
|
1354
|
+
i0.ɵɵtwoWayListener("ngModelChange", function CollectionsFullViewComponent_Template_input_ngModelChange_14_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.searchQuery, $event) || (ctx.searchQuery = $event); return $event; });
|
|
1355
|
+
i0.ɵɵlistener("ngModelChange", function CollectionsFullViewComponent_Template_input_ngModelChange_14_listener($event) { return ctx.onSearchChange($event); });
|
|
1356
|
+
i0.ɵɵelementEnd();
|
|
1357
|
+
i0.ɵɵtemplate(15, CollectionsFullViewComponent_button_15_Template, 2, 0, "button", 14);
|
|
1358
|
+
i0.ɵɵelementEnd();
|
|
1359
|
+
i0.ɵɵtemplate(16, CollectionsFullViewComponent_div_16_Template, 7, 1, "div", 10);
|
|
1360
|
+
i0.ɵɵelementStart(17, "button", 15);
|
|
1361
|
+
i0.ɵɵlistener("click", function CollectionsFullViewComponent_Template_button_click_17_listener() { return ctx.refresh(); });
|
|
1362
|
+
i0.ɵɵelement(18, "i", 16);
|
|
1363
|
+
i0.ɵɵelementEnd()()();
|
|
1364
|
+
i0.ɵɵtemplate(19, CollectionsFullViewComponent_div_19_Template, 11, 1, "div", 17);
|
|
1365
|
+
i0.ɵɵelementStart(20, "div", 18);
|
|
1366
|
+
i0.ɵɵtemplate(21, CollectionsFullViewComponent_div_21_Template, 4, 0, "div", 19)(22, CollectionsFullViewComponent_div_22_Template, 5, 3, "div", 20)(23, CollectionsFullViewComponent_div_23_Template, 2, 1, "div", 21)(24, CollectionsFullViewComponent_div_24_Template, 25, 8, "div", 22);
|
|
780
1367
|
i0.ɵɵelementEnd()();
|
|
781
|
-
i0.ɵɵelementStart(
|
|
782
|
-
i0.ɵɵlistener("saved", function
|
|
1368
|
+
i0.ɵɵelementStart(25, "mj-collection-form-modal", 23);
|
|
1369
|
+
i0.ɵɵlistener("saved", function CollectionsFullViewComponent_Template_mj_collection_form_modal_saved_25_listener($event) { return ctx.onCollectionSaved($event); })("cancelled", function CollectionsFullViewComponent_Template_mj_collection_form_modal_cancelled_25_listener() { return ctx.onFormCancelled(); });
|
|
783
1370
|
i0.ɵɵelementEnd();
|
|
784
|
-
i0.ɵɵelementStart(
|
|
785
|
-
i0.ɵɵlistener("saved", function
|
|
1371
|
+
i0.ɵɵelementStart(26, "mj-artifact-create-modal", 24);
|
|
1372
|
+
i0.ɵɵlistener("saved", function CollectionsFullViewComponent_Template_mj_artifact_create_modal_saved_26_listener($event) { return ctx.onArtifactSaved($event); })("cancelled", function CollectionsFullViewComponent_Template_mj_artifact_create_modal_cancelled_26_listener() { return ctx.onArtifactModalCancelled(); });
|
|
786
1373
|
i0.ɵɵelementEnd();
|
|
787
|
-
i0.ɵɵelementStart(
|
|
788
|
-
i0.ɵɵlistener("saved", function
|
|
1374
|
+
i0.ɵɵelementStart(27, "mj-collection-share-modal", 25);
|
|
1375
|
+
i0.ɵɵlistener("saved", function CollectionsFullViewComponent_Template_mj_collection_share_modal_saved_27_listener() { return ctx.onPermissionsChanged(); })("cancelled", function CollectionsFullViewComponent_Template_mj_collection_share_modal_cancelled_27_listener() { return ctx.onShareModalCancelled(); });
|
|
789
1376
|
i0.ɵɵelementEnd();
|
|
790
1377
|
} if (rf & 2) {
|
|
791
1378
|
i0.ɵɵadvance(7);
|
|
792
1379
|
i0.ɵɵproperty("ngIf", ctx.breadcrumbs.length > 0);
|
|
793
1380
|
i0.ɵɵadvance(2);
|
|
1381
|
+
i0.ɵɵproperty("title", ctx.viewMode === "grid" ? "Switch to List View" : "Switch to Grid View");
|
|
1382
|
+
i0.ɵɵadvance();
|
|
1383
|
+
i0.ɵɵproperty("ngClass", ctx.viewMode === "grid" ? "fa-list" : "fa-th");
|
|
1384
|
+
i0.ɵɵadvance();
|
|
1385
|
+
i0.ɵɵproperty("ngIf", ctx.viewMode === "grid");
|
|
1386
|
+
i0.ɵɵadvance(3);
|
|
1387
|
+
i0.ɵɵtwoWayProperty("ngModel", ctx.searchQuery);
|
|
1388
|
+
i0.ɵɵadvance();
|
|
1389
|
+
i0.ɵɵproperty("ngIf", ctx.searchQuery);
|
|
1390
|
+
i0.ɵɵadvance();
|
|
794
1391
|
i0.ɵɵproperty("ngIf", ctx.canEditCurrent());
|
|
795
|
-
i0.ɵɵadvance(
|
|
1392
|
+
i0.ɵɵadvance(3);
|
|
1393
|
+
i0.ɵɵproperty("ngIf", ctx.selectedItems.size > 0);
|
|
1394
|
+
i0.ɵɵadvance(2);
|
|
796
1395
|
i0.ɵɵproperty("ngIf", ctx.isLoading);
|
|
797
1396
|
i0.ɵɵadvance();
|
|
798
|
-
i0.ɵɵproperty("ngIf", !ctx.isLoading);
|
|
1397
|
+
i0.ɵɵproperty("ngIf", !ctx.isLoading && ctx.unifiedItems.length === 0);
|
|
1398
|
+
i0.ɵɵadvance();
|
|
1399
|
+
i0.ɵɵproperty("ngIf", !ctx.isLoading && ctx.unifiedItems.length > 0 && ctx.viewMode === "grid");
|
|
1400
|
+
i0.ɵɵadvance();
|
|
1401
|
+
i0.ɵɵproperty("ngIf", !ctx.isLoading && ctx.unifiedItems.length > 0 && ctx.viewMode === "list");
|
|
799
1402
|
i0.ɵɵadvance();
|
|
800
1403
|
i0.ɵɵproperty("isOpen", ctx.isFormModalOpen)("collection", ctx.editingCollection)("parentCollection", ctx.currentCollection || undefined)("environmentId", ctx.environmentId)("currentUser", ctx.currentUser);
|
|
801
1404
|
i0.ɵɵadvance();
|
|
802
1405
|
i0.ɵɵproperty("isOpen", ctx.isArtifactModalOpen)("collectionId", ctx.currentCollectionId || "")("environmentId", ctx.environmentId)("currentUser", ctx.currentUser);
|
|
803
1406
|
i0.ɵɵadvance();
|
|
804
1407
|
i0.ɵɵproperty("isOpen", ctx.isShareModalOpen)("collection", ctx.sharingCollection)("currentUser", ctx.currentUser)("currentUserPermissions", ctx.sharingCollection ? ctx.userPermissions.get(ctx.sharingCollection.ID) || null : null);
|
|
805
|
-
} }, dependencies: [i5.NgForOf, i5.NgIf, i6.CollectionShareModalComponent, i7.CollectionFormModalComponent, i8.ArtifactCreateModalComponent], styles: [".collections-view[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: white;\n }\n\n .collections-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n padding: 16px 24px;\n border-bottom: 1px solid #E5E7EB;\n gap: 16px;\n }\n\n .collections-breadcrumb[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n flex: 1;\n min-width: 0;\n }\n\n .breadcrumb-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n .breadcrumb-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #6B7280;\n font-size: 14px;\n }\n\n .breadcrumb-link[_ngcontent-%COMP%] {\n color: #111827;\n font-weight: 500;\n cursor: pointer;\n text-decoration: none;\n white-space: nowrap;\n transition: color 150ms ease;\n }\n\n .breadcrumb-link[_ngcontent-%COMP%]:hover {\n color: #1e40af;\n }\n\n .breadcrumb-link.active[_ngcontent-%COMP%] {\n color: #6B7280;\n cursor: default;\n }\n\n .breadcrumb-path[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n overflow-x: auto;\n }\n\n .breadcrumb-separator[_ngcontent-%COMP%] {\n color: #D1D5DB;\n font-size: 10px;\n }\n\n .collections-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n }\n\n .btn-primary[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 8px 16px;\n background: #1e40af;\n border: none;\n border-radius: 6px;\n color: white;\n font-size: 14px;\n cursor: pointer;\n transition: background 150ms ease;\n }\n\n .btn-primary[_ngcontent-%COMP%]:hover {\n background: #1e3a8a;\n }\n\n .btn-secondary[_ngcontent-%COMP%] {\n padding: 8px 12px;\n background: transparent;\n border: 1px solid #E5E7EB;\n border-radius: 6px;\n cursor: pointer;\n color: #6B7280;\n transition: all 150ms ease;\n }\n\n .btn-secondary[_ngcontent-%COMP%]:hover {\n background: #F9FAFB;\n color: #111827;\n }\n\n .btn-sm[_ngcontent-%COMP%] {\n padding: 6px 12px;\n font-size: 13px;\n }\n\n .collections-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 24px;\n }\n\n .loading-state[_ngcontent-%COMP%], .empty-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100%;\n color: #9CA3AF;\n max-width: 400px;\n margin: 0 auto;\n text-align: center;\n padding: 48px 24px;\n }\n\n .loading-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 48px;\n margin-bottom: 16px;\n opacity: 0.5;\n }\n\n .empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 64px;\n margin-bottom: 24px;\n opacity: 0.3;\n color: #D1D5DB;\n }\n\n .empty-state[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n color: #374151;\n font-size: 20px;\n font-weight: 600;\n }\n\n .empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0 0 24px 0;\n font-size: 14px;\n color: #6B7280;\n line-height: 1.5;\n }\n\n .loading-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n }\n\n .empty-state[_ngcontent-%COMP%] .btn-primary[_ngcontent-%COMP%] {\n padding: 10px 20px;\n font-size: 14px;\n font-weight: 500;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n }\n\n .empty-state[_ngcontent-%COMP%] .btn-primary[_ngcontent-%COMP%]:hover {\n box-shadow: 0 2px 6px rgba(0, 0, 0, 0.15);\n }\n\n .content-grid[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 32px;\n }\n\n .section[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n }\n\n .section-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n }\n\n .section-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: #111827;\n }\n\n .section-count[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 24px;\n height: 24px;\n padding: 0 8px;\n background: #EFF6FF;\n border-radius: 12px;\n font-size: 13px;\n font-weight: 600;\n color: #1e40af;\n }\n\n .collection-grid[_ngcontent-%COMP%], .artifact-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));\n gap: 16px;\n }\n\n .collection-card[_ngcontent-%COMP%], .artifact-card[_ngcontent-%COMP%] {\n display: flex;\n align-items: start;\n gap: 16px;\n padding: 20px;\n background: white;\n border: 1px solid #E5E7EB;\n border-radius: 8px;\n cursor: pointer;\n transition: all 150ms ease;\n position: relative;\n }\n\n .collection-card[_ngcontent-%COMP%]:hover, .artifact-card[_ngcontent-%COMP%]:hover {\n border-color: #1e40af;\n box-shadow: 0 2px 8px rgba(0,0,0,0.08);\n }\n\n .card-icon[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: #EFF6FF;\n border-radius: 8px;\n flex-shrink: 0;\n position: relative;\n }\n\n .card-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 20px;\n color: #1e40af;\n }\n\n .shared-badge[_ngcontent-%COMP%] {\n position: absolute;\n top: -4px;\n right: -4px;\n width: 18px;\n height: 18px;\n background: #10B981;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n border: 2px solid white;\n }\n\n .shared-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 9px;\n color: white;\n }\n\n .artifact-icon[_ngcontent-%COMP%] {\n background: #F0FDF4;\n }\n\n .artifact-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #059669;\n }\n\n .card-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n }\n\n .card-name[_ngcontent-%COMP%] {\n font-size: 15px;\n font-weight: 500;\n color: #111827;\n margin-bottom: 4px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .card-owner[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-bottom: 6px;\n font-size: 12px;\n color: #6B7280;\n }\n\n .card-owner[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n }\n\n .card-description[_ngcontent-%COMP%] {\n font-size: 13px;\n color: #6B7280;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n .card-meta[_ngcontent-%COMP%] {\n font-size: 12px;\n color: #9CA3AF;\n }\n\n .artifact-type[_ngcontent-%COMP%] {\n padding: 2px 8px;\n background: #F3F4F6;\n border-radius: 4px;\n font-weight: 500;\n }\n\n .card-actions[_ngcontent-%COMP%] {\n position: absolute;\n top: 12px;\n right: 12px;\n display: flex;\n gap: 4px;\n opacity: 0;\n transition: opacity 150ms ease;\n }\n\n .collection-card[_ngcontent-%COMP%]:hover .card-actions[_ngcontent-%COMP%], \n .artifact-card[_ngcontent-%COMP%]:hover .card-actions[_ngcontent-%COMP%] {\n opacity: 1;\n }\n\n .card-action-btn[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: white;\n border: 1px solid #E5E7EB;\n border-radius: 6px;\n color: #6B7280;\n cursor: pointer;\n transition: all 150ms ease;\n }\n\n .card-action-btn[_ngcontent-%COMP%]:hover {\n background: #F9FAFB;\n color: #111827;\n border-color: #D1D5DB;\n }\n\n .card-action-btn.danger[_ngcontent-%COMP%]:hover {\n background: #FEE2E2;\n color: #DC2626;\n border-color: #FCA5A5;\n }"] });
|
|
1408
|
+
} }, dependencies: [i6.NgClass, i6.NgForOf, i6.NgIf, i7.DefaultValueAccessor, i7.NgControlStatus, i7.NgModel, i8.CollectionShareModalComponent, i9.CollectionFormModalComponent, i10.ArtifactCreateModalComponent, i6.DatePipe], styles: ["\n\n .collections-view[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: #FAFAFA;\n position: relative;\n }\n\n \n\n .collections-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n padding: 12px 20px;\n border-bottom: 1px solid #E5E7EB;\n gap: 16px;\n background: white;\n }\n\n .collections-breadcrumb[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n flex: 1;\n min-width: 0;\n }\n\n .breadcrumb-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n }\n\n .breadcrumb-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #6B7280;\n font-size: 14px;\n }\n\n .breadcrumb-link[_ngcontent-%COMP%] {\n color: #111827;\n font-weight: 500;\n cursor: pointer;\n text-decoration: none;\n white-space: nowrap;\n transition: color 150ms ease;\n font-size: 14px;\n }\n\n .breadcrumb-link[_ngcontent-%COMP%]:hover {\n color: #0076D6;\n }\n\n .breadcrumb-link.active[_ngcontent-%COMP%] {\n color: #6B7280;\n cursor: default;\n }\n\n .breadcrumb-path[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n overflow-x: auto;\n }\n\n .breadcrumb-separator[_ngcontent-%COMP%] {\n color: #D1D5DB;\n font-size: 10px;\n }\n\n .collections-actions[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n \n\n .btn-primary[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 6px 12px;\n background: #007AFF;\n border: none;\n border-radius: 6px;\n color: white;\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: background 150ms ease;\n }\n\n .btn-primary[_ngcontent-%COMP%]:hover {\n background: #0051D5;\n }\n\n .btn-primary[_ngcontent-%COMP%] i.fa-chevron-down[_ngcontent-%COMP%] {\n font-size: 10px;\n margin-left: 2px;\n }\n\n .btn-icon[_ngcontent-%COMP%] {\n padding: 6px 10px;\n background: transparent;\n border: 1px solid #D1D5DB;\n border-radius: 6px;\n cursor: pointer;\n color: #6B7280;\n transition: all 150ms ease;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .btn-icon[_ngcontent-%COMP%]:hover {\n background: #F9FAFB;\n color: #111827;\n border-color: #9CA3AF;\n }\n\n \n\n .dropdown-container[_ngcontent-%COMP%] {\n position: relative;\n }\n\n .dropdown-menu[_ngcontent-%COMP%] {\n position: absolute;\n top: calc(100% + 4px);\n left: 0;\n min-width: 200px;\n background: white;\n border: 1px solid #E5E7EB;\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n padding: 4px;\n z-index: 1000;\n }\n\n .dropdown-menu-right[_ngcontent-%COMP%] {\n left: auto;\n right: 0;\n }\n\n .dropdown-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n width: 100%;\n padding: 8px 12px;\n background: transparent;\n border: none;\n border-radius: 4px;\n color: #111827;\n font-size: 13px;\n cursor: pointer;\n text-align: left;\n transition: background 100ms ease;\n }\n\n .dropdown-item[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: #F3F4F6;\n }\n\n .dropdown-item[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .dropdown-item.active[_ngcontent-%COMP%] {\n background: #EFF6FF;\n color: #007AFF;\n }\n\n .dropdown-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 14px;\n width: 16px;\n text-align: center;\n color: #6B7280;\n }\n\n .dropdown-item.active[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #007AFF;\n }\n\n .dropdown-divider[_ngcontent-%COMP%] {\n height: 1px;\n background: #E5E7EB;\n margin: 4px 0;\n }\n\n \n\n .search-container[_ngcontent-%COMP%] {\n position: relative;\n display: flex;\n align-items: center;\n min-width: 200px;\n }\n\n .search-container[_ngcontent-%COMP%] i.fa-search[_ngcontent-%COMP%] {\n position: absolute;\n left: 10px;\n color: #9CA3AF;\n font-size: 13px;\n pointer-events: none;\n }\n\n .search-input[_ngcontent-%COMP%] {\n width: 100%;\n padding: 6px 32px 6px 32px;\n border: 1px solid #D1D5DB;\n border-radius: 6px;\n font-size: 13px;\n outline: none;\n transition: all 150ms ease;\n }\n\n .search-input[_ngcontent-%COMP%]:focus {\n border-color: #007AFF;\n box-shadow: 0 0 0 3px rgba(0, 122, 255, 0.1);\n }\n\n .search-clear[_ngcontent-%COMP%] {\n position: absolute;\n right: 6px;\n padding: 4px;\n background: transparent;\n border: none;\n color: #9CA3AF;\n cursor: pointer;\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .search-clear[_ngcontent-%COMP%]:hover {\n background: #F3F4F6;\n color: #6B7280;\n }\n\n \n\n .selection-toolbar[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 8px 20px;\n background: #EFF6FF;\n border-bottom: 1px solid #BFDBFE;\n }\n\n .selection-info[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n }\n\n .selection-count[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 600;\n color: #1E40AF;\n }\n\n .selection-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n }\n\n .btn-toolbar[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 6px 12px;\n background: white;\n border: 1px solid #D1D5DB;\n border-radius: 6px;\n color: #374151;\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: all 150ms ease;\n }\n\n .btn-toolbar[_ngcontent-%COMP%]:hover {\n background: #F9FAFB;\n border-color: #9CA3AF;\n }\n\n .btn-toolbar.btn-danger[_ngcontent-%COMP%] {\n color: #DC2626;\n border-color: #FCA5A5;\n }\n\n .btn-toolbar.btn-danger[_ngcontent-%COMP%]:hover {\n background: #FEE2E2;\n border-color: #DC2626;\n }\n\n \n\n .collections-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 20px;\n }\n\n \n\n .loading-state[_ngcontent-%COMP%], .empty-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100%;\n color: #9CA3AF;\n text-align: center;\n padding: 48px 24px;\n }\n\n .loading-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 48px;\n margin-bottom: 16px;\n opacity: 0.5;\n }\n\n .loading-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n }\n\n .empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 64px;\n margin-bottom: 24px;\n opacity: 0.3;\n color: #D1D5DB;\n }\n\n .empty-state[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n color: #374151;\n font-size: 18px;\n font-weight: 600;\n }\n\n .empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0 0 24px 0;\n font-size: 14px;\n color: #6B7280;\n }\n\n .empty-state-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n flex-wrap: wrap;\n justify-content: center;\n }\n\n \n\n .unified-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));\n gap: 16px;\n padding: 4px;\n }\n\n .grid-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n padding: 12px;\n background: white;\n border: 2px solid transparent;\n border-radius: 8px;\n cursor: pointer;\n transition: all 150ms ease;\n position: relative;\n }\n\n .grid-item[_ngcontent-%COMP%]:hover {\n background: #F9FAFB;\n border-color: #D1D5DB;\n }\n\n .grid-item.selected[_ngcontent-%COMP%] {\n background: #EFF6FF;\n border-color: #007AFF;\n }\n\n .grid-item.active[_ngcontent-%COMP%] {\n background: #FEF3C7;\n border-color: #F59E0B;\n box-shadow: 0 0 0 1px #F59E0B;\n }\n\n .grid-item.active[_ngcontent-%COMP%]:hover {\n background: #FDE68A;\n }\n\n .item-checkbox[_ngcontent-%COMP%] {\n position: absolute;\n top: 8px;\n right: 8px;\n width: 20px;\n height: 20px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n z-index: 10;\n }\n\n .item-checkbox[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 16px;\n color: #9CA3AF;\n transition: color 150ms ease;\n }\n\n .grid-item.selected[_ngcontent-%COMP%] .item-checkbox[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n .item-checkbox[_ngcontent-%COMP%]:hover i[_ngcontent-%COMP%] {\n color: #007AFF;\n }\n\n .grid-item-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n }\n\n .grid-icon[_ngcontent-%COMP%] {\n width: 64px;\n height: 64px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 8px;\n position: relative;\n }\n\n .grid-icon.folder-icon[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #60A5FA 0%, #3B82F6 100%);\n }\n\n .grid-icon.folder-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 36px;\n color: white;\n }\n\n .grid-icon.artifact-icon[_ngcontent-%COMP%] {\n background: #F3F4F6;\n }\n\n .grid-icon.artifact-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 32px;\n color: #6B7280;\n }\n\n .shared-badge[_ngcontent-%COMP%] {\n position: absolute;\n top: -4px;\n right: -4px;\n width: 20px;\n height: 20px;\n background: #10B981;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n border: 2px solid white;\n }\n\n .shared-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n color: white;\n }\n\n .grid-info[_ngcontent-%COMP%] {\n width: 100%;\n text-align: center;\n }\n\n .grid-name[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 500;\n color: #111827;\n line-height: 1.3;\n margin-bottom: 4px;\n \n\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n word-break: break-word;\n }\n\n .grid-description[_ngcontent-%COMP%] {\n font-size: 11px;\n color: #6B7280;\n line-height: 1.3;\n margin-bottom: 4px;\n \n\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n word-break: break-word;\n }\n\n .grid-meta[_ngcontent-%COMP%] {\n font-size: 11px;\n color: #6B7280;\n margin-top: 4px;\n }\n\n .grid-owner[_ngcontent-%COMP%] {\n font-size: 11px;\n color: #6B7280;\n margin-top: 2px;\n }\n\n .grid-owner[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n margin-right: 3px;\n }\n\n .version-badge[_ngcontent-%COMP%] {\n display: inline-block;\n padding: 2px 6px;\n background: #FEF3C7;\n color: #92400E;\n border-radius: 3px;\n font-size: 10px;\n font-weight: 600;\n font-family: monospace;\n margin-right: 4px;\n }\n\n .artifact-type-badge[_ngcontent-%COMP%] {\n display: inline-block;\n padding: 2px 6px;\n background: #DBEAFE;\n color: #1E40AF;\n border-radius: 3px;\n font-size: 10px;\n font-weight: 500;\n text-transform: uppercase;\n }\n\n \n\n .unified-list[_ngcontent-%COMP%] {\n background: white;\n border: 1px solid #E5E7EB;\n border-radius: 8px;\n overflow: hidden;\n }\n\n .list-table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n }\n\n .list-table[_ngcontent-%COMP%] thead[_ngcontent-%COMP%] {\n background: #F9FAFB;\n border-bottom: 1px solid #E5E7EB;\n }\n\n .list-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n padding: 10px 16px;\n text-align: left;\n font-size: 12px;\n font-weight: 600;\n color: #6B7280;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n }\n\n .list-table[_ngcontent-%COMP%] th.sortable[_ngcontent-%COMP%] {\n cursor: pointer;\n user-select: none;\n transition: color 150ms ease;\n }\n\n .list-table[_ngcontent-%COMP%] th.sortable[_ngcontent-%COMP%]:hover {\n color: #007AFF;\n }\n\n .list-table[_ngcontent-%COMP%] th.sortable[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n display: inline-block;\n margin-right: 6px;\n }\n\n .list-table[_ngcontent-%COMP%] th.sortable[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n opacity: 0.5;\n }\n\n .list-table[_ngcontent-%COMP%] th.sortable[_ngcontent-%COMP%]:hover i[_ngcontent-%COMP%] {\n opacity: 1;\n }\n\n .list-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] {\n border-bottom: 1px solid #F3F4F6;\n transition: background 150ms ease;\n }\n\n .list-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n }\n\n .list-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover {\n background: #F9FAFB;\n }\n\n .list-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr.selected[_ngcontent-%COMP%] {\n background: #EFF6FF;\n }\n\n .list-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr.active[_ngcontent-%COMP%] {\n background: #FEF3C7;\n border-left: 3px solid #F59E0B;\n }\n\n .list-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr.active[_ngcontent-%COMP%]:hover {\n background: #FDE68A;\n }\n\n .list-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 12px 16px;\n font-size: 13px;\n color: #374151;\n }\n\n .col-checkbox[_ngcontent-%COMP%] {\n width: 40px;\n text-align: center;\n }\n\n .col-checkbox[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 16px;\n color: #9CA3AF;\n cursor: pointer;\n transition: color 150ms ease;\n }\n\n .col-checkbox[_ngcontent-%COMP%] i[_ngcontent-%COMP%]:hover, \n .list-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr.selected[_ngcontent-%COMP%] .col-checkbox[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #007AFF;\n }\n\n .col-name[_ngcontent-%COMP%] {\n min-width: 300px;\n }\n\n .list-name-cell[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n }\n\n .list-name-cell[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 16px;\n color: #6B7280;\n width: 20px;\n text-align: center;\n }\n\n .list-name-cell[_ngcontent-%COMP%] .fa-folder[_ngcontent-%COMP%] {\n color: #3B82F6;\n }\n\n .shared-indicator[_ngcontent-%COMP%] {\n font-size: 12px;\n color: #10B981;\n margin-left: auto;\n }\n\n .col-type[_ngcontent-%COMP%] {\n width: 150px;\n }\n\n .col-modified[_ngcontent-%COMP%] {\n width: 180px;\n }\n\n .col-owner[_ngcontent-%COMP%] {\n width: 150px;\n }"] });
|
|
806
1409
|
}
|
|
807
1410
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CollectionsFullViewComponent, [{
|
|
808
1411
|
type: Component,
|
|
809
1412
|
args: [{ selector: 'mj-collections-full-view', template: `
|
|
810
|
-
<div class="collections-view">
|
|
1413
|
+
<div class="collections-view" (keydown)="handleKeyboardShortcut($event)">
|
|
1414
|
+
<!-- Mac Finder-style Header -->
|
|
811
1415
|
<div class="collections-header">
|
|
1416
|
+
<!-- Breadcrumb navigation -->
|
|
812
1417
|
<div class="collections-breadcrumb">
|
|
813
1418
|
<div class="breadcrumb-item">
|
|
814
1419
|
<i class="fas fa-home"></i>
|
|
@@ -825,108 +1430,292 @@ export class CollectionsFullViewComponent {
|
|
|
825
1430
|
</ng-container>
|
|
826
1431
|
</span>
|
|
827
1432
|
</div>
|
|
1433
|
+
|
|
1434
|
+
<!-- Action buttons -->
|
|
828
1435
|
<div class="collections-actions">
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
1436
|
+
<!-- View mode toggle -->
|
|
1437
|
+
<button class="btn-icon"
|
|
1438
|
+
(click)="toggleViewMode()"
|
|
1439
|
+
[title]="viewMode === 'grid' ? 'Switch to List View' : 'Switch to Grid View'">
|
|
1440
|
+
<i class="fas" [ngClass]="viewMode === 'grid' ? 'fa-list' : 'fa-th'"></i>
|
|
832
1441
|
</button>
|
|
833
|
-
|
|
1442
|
+
|
|
1443
|
+
<!-- Sort dropdown (grid view only) -->
|
|
1444
|
+
<div class="dropdown-container" *ngIf="viewMode === 'grid'">
|
|
1445
|
+
<button class="btn-icon"
|
|
1446
|
+
(click)="showSortDropdown = !showSortDropdown"
|
|
1447
|
+
title="Sort options">
|
|
1448
|
+
<i class="fas fa-sort"></i>
|
|
1449
|
+
</button>
|
|
1450
|
+
<div class="dropdown-menu" *ngIf="showSortDropdown">
|
|
1451
|
+
<button class="dropdown-item"
|
|
1452
|
+
[class.active]="sortBy === 'name'"
|
|
1453
|
+
(click)="setSortBy('name')">
|
|
1454
|
+
<i class="fas fa-sort-alpha-down"></i>
|
|
1455
|
+
<span>Sort by Name</span>
|
|
1456
|
+
</button>
|
|
1457
|
+
<button class="dropdown-item"
|
|
1458
|
+
[class.active]="sortBy === 'date'"
|
|
1459
|
+
(click)="setSortBy('date')">
|
|
1460
|
+
<i class="fas fa-calendar"></i>
|
|
1461
|
+
<span>Sort by Date</span>
|
|
1462
|
+
</button>
|
|
1463
|
+
<button class="dropdown-item"
|
|
1464
|
+
[class.active]="sortBy === 'type'"
|
|
1465
|
+
(click)="setSortBy('type')">
|
|
1466
|
+
<i class="fas fa-tag"></i>
|
|
1467
|
+
<span>Sort by Type</span>
|
|
1468
|
+
</button>
|
|
1469
|
+
</div>
|
|
1470
|
+
</div>
|
|
1471
|
+
|
|
1472
|
+
<!-- Search -->
|
|
1473
|
+
<div class="search-container">
|
|
1474
|
+
<i class="fas fa-search"></i>
|
|
1475
|
+
<input type="text"
|
|
1476
|
+
class="search-input"
|
|
1477
|
+
placeholder="Search..."
|
|
1478
|
+
[(ngModel)]="searchQuery"
|
|
1479
|
+
(ngModelChange)="onSearchChange($event)">
|
|
1480
|
+
<button class="search-clear"
|
|
1481
|
+
*ngIf="searchQuery"
|
|
1482
|
+
(click)="searchQuery = ''; onSearchChange('')"
|
|
1483
|
+
title="Clear search">
|
|
1484
|
+
<i class="fas fa-times"></i>
|
|
1485
|
+
</button>
|
|
1486
|
+
</div>
|
|
1487
|
+
|
|
1488
|
+
<!-- New dropdown -->
|
|
1489
|
+
<div class="dropdown-container" *ngIf="canEditCurrent()">
|
|
1490
|
+
<button class="btn-primary"
|
|
1491
|
+
(click)="showNewDropdown = !showNewDropdown">
|
|
1492
|
+
<i class="fas fa-plus"></i>
|
|
1493
|
+
<span>New</span>
|
|
1494
|
+
<i class="fas fa-chevron-down"></i>
|
|
1495
|
+
</button>
|
|
1496
|
+
<div class="dropdown-menu dropdown-menu-right" *ngIf="showNewDropdown">
|
|
1497
|
+
<button class="dropdown-item" (click)="createCollection()">
|
|
1498
|
+
<i class="fas fa-folder-plus"></i>
|
|
1499
|
+
<span>New Collection</span>
|
|
1500
|
+
</button>
|
|
1501
|
+
<button class="dropdown-item"
|
|
1502
|
+
(click)="addArtifact()"
|
|
1503
|
+
[disabled]="!currentCollectionId">
|
|
1504
|
+
<i class="fas fa-file-plus"></i>
|
|
1505
|
+
<span>New Artifact</span>
|
|
1506
|
+
</button>
|
|
1507
|
+
</div>
|
|
1508
|
+
</div>
|
|
1509
|
+
|
|
1510
|
+
<!-- Refresh button -->
|
|
1511
|
+
<button class="btn-icon" (click)="refresh()" title="Refresh">
|
|
834
1512
|
<i class="fas fa-sync"></i>
|
|
835
1513
|
</button>
|
|
836
1514
|
</div>
|
|
837
1515
|
</div>
|
|
838
1516
|
|
|
1517
|
+
<!-- Multi-select toolbar (appears when items selected) -->
|
|
1518
|
+
<div class="selection-toolbar" *ngIf="selectedItems.size > 0">
|
|
1519
|
+
<div class="selection-info">
|
|
1520
|
+
<span class="selection-count">{{ selectedItems.size }} selected</span>
|
|
1521
|
+
</div>
|
|
1522
|
+
<div class="selection-actions">
|
|
1523
|
+
<button class="btn-toolbar" (click)="clearSelection()">
|
|
1524
|
+
<i class="fas fa-times"></i>
|
|
1525
|
+
Clear Selection
|
|
1526
|
+
</button>
|
|
1527
|
+
<button class="btn-toolbar btn-danger" (click)="deleteSelected()">
|
|
1528
|
+
<i class="fas fa-trash"></i>
|
|
1529
|
+
Delete Selected
|
|
1530
|
+
</button>
|
|
1531
|
+
</div>
|
|
1532
|
+
</div>
|
|
1533
|
+
|
|
1534
|
+
<!-- Content area -->
|
|
839
1535
|
<div class="collections-content">
|
|
1536
|
+
<!-- Loading state -->
|
|
840
1537
|
<div *ngIf="isLoading" class="loading-state">
|
|
841
1538
|
<i class="fas fa-spinner fa-spin"></i>
|
|
842
1539
|
<p>Loading collections...</p>
|
|
843
1540
|
</div>
|
|
844
1541
|
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
<
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
1542
|
+
<!-- Empty state -->
|
|
1543
|
+
<div *ngIf="!isLoading && unifiedItems.length === 0" class="empty-state">
|
|
1544
|
+
<i class="fas fa-folder-open"></i>
|
|
1545
|
+
|
|
1546
|
+
<!-- Search returned no results -->
|
|
1547
|
+
<ng-container *ngIf="searchQuery">
|
|
1548
|
+
<h3>No items found</h3>
|
|
1549
|
+
<p>Try adjusting your search</p>
|
|
1550
|
+
</ng-container>
|
|
1551
|
+
|
|
1552
|
+
<!-- Empty root level -->
|
|
1553
|
+
<ng-container *ngIf="!searchQuery && !currentCollectionId">
|
|
1554
|
+
<h3>No collections yet</h3>
|
|
1555
|
+
<p>Create your first collection to get started</p>
|
|
1556
|
+
<button class="btn-primary"
|
|
1557
|
+
(click)="createCollection()"
|
|
1558
|
+
*ngIf="canEditCurrent()">
|
|
1559
|
+
<i class="fas fa-plus"></i>
|
|
1560
|
+
Create Collection
|
|
1561
|
+
</button>
|
|
1562
|
+
</ng-container>
|
|
1563
|
+
|
|
1564
|
+
<!-- Empty collection (has parent) -->
|
|
1565
|
+
<ng-container *ngIf="!searchQuery && currentCollectionId">
|
|
1566
|
+
<h3>This collection is empty</h3>
|
|
1567
|
+
<p>Use the <strong>New</strong> button above to add collections or artifacts</p>
|
|
1568
|
+
</ng-container>
|
|
1569
|
+
</div>
|
|
1570
|
+
|
|
1571
|
+
<!-- Grid view -->
|
|
1572
|
+
<div *ngIf="!isLoading && unifiedItems.length > 0 && viewMode === 'grid'"
|
|
1573
|
+
class="unified-grid">
|
|
1574
|
+
<div *ngFor="let item of unifiedItems"
|
|
1575
|
+
class="grid-item"
|
|
1576
|
+
[class.selected]="item.selected"
|
|
1577
|
+
[class.active]="item.type === 'artifact' && item.artifact?.ID === activeArtifactId"
|
|
1578
|
+
(click)="onItemClick(item, $event)"
|
|
1579
|
+
(contextmenu)="onItemContextMenu(item, $event)">
|
|
1580
|
+
|
|
1581
|
+
<!-- Selection checkbox -->
|
|
1582
|
+
<div class="item-checkbox"
|
|
1583
|
+
(click)="toggleItemSelection(item, $event)">
|
|
1584
|
+
<i class="fas"
|
|
1585
|
+
[ngClass]="item.selected ? 'fa-check-circle' : 'fa-circle'"></i>
|
|
855
1586
|
</div>
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
</div>
|
|
1587
|
+
|
|
1588
|
+
<!-- Folder item -->
|
|
1589
|
+
<div *ngIf="item.type === 'folder'"
|
|
1590
|
+
class="grid-item-content"
|
|
1591
|
+
[title]="item.description || item.name">
|
|
1592
|
+
<div class="grid-icon folder-icon">
|
|
1593
|
+
<i class="fas fa-folder"></i>
|
|
1594
|
+
<div class="shared-badge" *ngIf="item.isShared" title="Shared">
|
|
1595
|
+
<i class="fas fa-users"></i>
|
|
866
1596
|
</div>
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
</div>
|
|
1597
|
+
</div>
|
|
1598
|
+
<div class="grid-info">
|
|
1599
|
+
<div class="grid-name">{{ item.name }}</div>
|
|
1600
|
+
<div class="grid-description" *ngIf="item.description">
|
|
1601
|
+
{{ item.description }}
|
|
1602
|
+
</div>
|
|
1603
|
+
<div class="grid-meta" *ngIf="item.itemCount !== undefined">
|
|
1604
|
+
{{ getItemCountText(item.itemCount) }}
|
|
876
1605
|
</div>
|
|
877
|
-
<div class="
|
|
878
|
-
<
|
|
879
|
-
|
|
880
|
-
</button>
|
|
881
|
-
<button class="card-action-btn" *ngIf="canEdit(collection)" (click)="editCollection(collection)" title="Edit">
|
|
882
|
-
<i class="fas fa-edit"></i>
|
|
883
|
-
</button>
|
|
884
|
-
<button class="card-action-btn danger" *ngIf="canDelete(collection)" (click)="deleteCollection(collection)" title="Delete">
|
|
885
|
-
<i class="fas fa-trash"></i>
|
|
886
|
-
</button>
|
|
1606
|
+
<div class="grid-owner" *ngIf="item.isShared && item.owner">
|
|
1607
|
+
<i class="fas fa-user"></i>
|
|
1608
|
+
{{ item.owner }}
|
|
887
1609
|
</div>
|
|
888
1610
|
</div>
|
|
889
1611
|
</div>
|
|
890
|
-
</div>
|
|
891
1612
|
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
<
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
<div class="
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
<div class="card-meta">
|
|
912
|
-
<span class="version-badge">v{{ item.version.VersionNumber }}</span>
|
|
913
|
-
<span class="artifact-type">{{ item.artifact.Type || 'Unknown' }}</span>
|
|
914
|
-
</div>
|
|
915
|
-
</div>
|
|
916
|
-
<div class="card-actions" (click)="$event.stopPropagation()">
|
|
917
|
-
<button class="card-action-btn" (click)="removeArtifact(item)" title="Remove from collection" *ngIf="canDeleteCurrent()">
|
|
918
|
-
<i class="fas fa-times"></i>
|
|
919
|
-
</button>
|
|
920
|
-
</div>
|
|
1613
|
+
<!-- Artifact item -->
|
|
1614
|
+
<div *ngIf="item.type === 'artifact'"
|
|
1615
|
+
class="grid-item-content"
|
|
1616
|
+
[title]="item.description || item.name">
|
|
1617
|
+
<div class="grid-icon artifact-icon">
|
|
1618
|
+
<i class="fas" [ngClass]="item.icon"></i>
|
|
1619
|
+
</div>
|
|
1620
|
+
<div class="grid-info">
|
|
1621
|
+
<div class="grid-name">{{ item.name }}</div>
|
|
1622
|
+
<div class="grid-description" *ngIf="item.description">
|
|
1623
|
+
{{ item.description }}
|
|
1624
|
+
</div>
|
|
1625
|
+
<div class="grid-meta">
|
|
1626
|
+
<span class="version-badge" *ngIf="item.versionNumber">
|
|
1627
|
+
v{{ item.versionNumber }}
|
|
1628
|
+
</span>
|
|
1629
|
+
<span class="artifact-type-badge" *ngIf="item.artifactType">
|
|
1630
|
+
{{ item.artifactType }}
|
|
1631
|
+
</span>
|
|
921
1632
|
</div>
|
|
922
|
-
|
|
1633
|
+
</div>
|
|
923
1634
|
</div>
|
|
924
1635
|
</div>
|
|
925
1636
|
</div>
|
|
1637
|
+
|
|
1638
|
+
<!-- List view -->
|
|
1639
|
+
<div *ngIf="!isLoading && unifiedItems.length > 0 && viewMode === 'list'"
|
|
1640
|
+
class="unified-list">
|
|
1641
|
+
<table class="list-table">
|
|
1642
|
+
<thead>
|
|
1643
|
+
<tr>
|
|
1644
|
+
<th class="col-checkbox">
|
|
1645
|
+
<i class="fas"
|
|
1646
|
+
[ngClass]="selectedItems.size === unifiedItems.length ? 'fa-check-square' : 'fa-square'"
|
|
1647
|
+
(click)="selectedItems.size === unifiedItems.length ? clearSelection() : selectAll()"></i>
|
|
1648
|
+
</th>
|
|
1649
|
+
<th class="col-name sortable" (click)="setSortBy('name')">
|
|
1650
|
+
<span>Name</span>
|
|
1651
|
+
<i class="fas fa-sort" *ngIf="sortBy !== 'name'"></i>
|
|
1652
|
+
<i class="fas" *ngIf="sortBy === 'name'"
|
|
1653
|
+
[ngClass]="sortOrder === 'asc' ? 'fa-sort-up' : 'fa-sort-down'"></i>
|
|
1654
|
+
</th>
|
|
1655
|
+
<th class="col-type sortable" (click)="setSortBy('type')">
|
|
1656
|
+
<span>Type</span>
|
|
1657
|
+
<i class="fas fa-sort" *ngIf="sortBy !== 'type'"></i>
|
|
1658
|
+
<i class="fas" *ngIf="sortBy === 'type'"
|
|
1659
|
+
[ngClass]="sortOrder === 'asc' ? 'fa-sort-up' : 'fa-sort-down'"></i>
|
|
1660
|
+
</th>
|
|
1661
|
+
<th class="col-modified sortable" (click)="setSortBy('date')">
|
|
1662
|
+
<span>Modified</span>
|
|
1663
|
+
<i class="fas fa-sort" *ngIf="sortBy !== 'date'"></i>
|
|
1664
|
+
<i class="fas" *ngIf="sortBy === 'date'"
|
|
1665
|
+
[ngClass]="sortOrder === 'asc' ? 'fa-sort-up' : 'fa-sort-down'"></i>
|
|
1666
|
+
</th>
|
|
1667
|
+
<th class="col-owner">Owner</th>
|
|
1668
|
+
</tr>
|
|
1669
|
+
</thead>
|
|
1670
|
+
<tbody>
|
|
1671
|
+
<tr *ngFor="let item of unifiedItems"
|
|
1672
|
+
class="list-item"
|
|
1673
|
+
[class.selected]="item.selected"
|
|
1674
|
+
[class.active]="item.type === 'artifact' && item.artifact?.ID === activeArtifactId"
|
|
1675
|
+
(click)="onItemClick(item, $event)"
|
|
1676
|
+
(contextmenu)="onItemContextMenu(item, $event)">
|
|
1677
|
+
|
|
1678
|
+
<td class="col-checkbox">
|
|
1679
|
+
<i class="fas"
|
|
1680
|
+
[ngClass]="item.selected ? 'fa-check-circle' : 'fa-circle'"
|
|
1681
|
+
(click)="toggleItemSelection(item, $event)"></i>
|
|
1682
|
+
</td>
|
|
1683
|
+
|
|
1684
|
+
<td class="col-name">
|
|
1685
|
+
<div class="list-name-cell">
|
|
1686
|
+
<i class="fas"
|
|
1687
|
+
[ngClass]="item.type === 'folder' ? 'fa-folder' : item.icon"></i>
|
|
1688
|
+
<span>{{ item.name }}</span>
|
|
1689
|
+
<i class="fas fa-users shared-indicator"
|
|
1690
|
+
*ngIf="item.isShared"
|
|
1691
|
+
title="Shared"></i>
|
|
1692
|
+
</div>
|
|
1693
|
+
</td>
|
|
1694
|
+
|
|
1695
|
+
<td class="col-type">
|
|
1696
|
+
<span *ngIf="item.type === 'folder'">Folder</span>
|
|
1697
|
+
<span *ngIf="item.type === 'artifact'" class="artifact-type-badge">
|
|
1698
|
+
{{ item.artifactType }}
|
|
1699
|
+
</span>
|
|
1700
|
+
</td>
|
|
1701
|
+
|
|
1702
|
+
<td class="col-modified">
|
|
1703
|
+
<span *ngIf="item.lastModified">
|
|
1704
|
+
{{ item.lastModified | date:'short' }}
|
|
1705
|
+
</span>
|
|
1706
|
+
</td>
|
|
1707
|
+
|
|
1708
|
+
<td class="col-owner">
|
|
1709
|
+
<span *ngIf="item.owner">{{ item.owner }}</span>
|
|
1710
|
+
</td>
|
|
1711
|
+
</tr>
|
|
1712
|
+
</tbody>
|
|
1713
|
+
</table>
|
|
1714
|
+
</div>
|
|
926
1715
|
</div>
|
|
927
1716
|
</div>
|
|
928
1717
|
|
|
929
|
-
<!--
|
|
1718
|
+
<!-- Modals (unchanged) -->
|
|
930
1719
|
<mj-collection-form-modal
|
|
931
1720
|
[isOpen]="isFormModalOpen"
|
|
932
1721
|
[collection]="editingCollection"
|
|
@@ -937,7 +1726,6 @@ export class CollectionsFullViewComponent {
|
|
|
937
1726
|
(cancelled)="onFormCancelled()">
|
|
938
1727
|
</mj-collection-form-modal>
|
|
939
1728
|
|
|
940
|
-
<!-- Artifact Create Modal -->
|
|
941
1729
|
<mj-artifact-create-modal
|
|
942
1730
|
[isOpen]="isArtifactModalOpen"
|
|
943
1731
|
[collectionId]="currentCollectionId || ''"
|
|
@@ -947,7 +1735,6 @@ export class CollectionsFullViewComponent {
|
|
|
947
1735
|
(cancelled)="onArtifactModalCancelled()">
|
|
948
1736
|
</mj-artifact-create-modal>
|
|
949
1737
|
|
|
950
|
-
<!-- Share Modal -->
|
|
951
1738
|
<mj-collection-share-modal
|
|
952
1739
|
[isOpen]="isShareModalOpen"
|
|
953
1740
|
[collection]="sharingCollection"
|
|
@@ -956,13 +1743,13 @@ export class CollectionsFullViewComponent {
|
|
|
956
1743
|
(saved)="onPermissionsChanged()"
|
|
957
1744
|
(cancelled)="onShareModalCancelled()">
|
|
958
1745
|
</mj-collection-share-modal>
|
|
959
|
-
`, styles: ["\n .collections-view {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: white;\n }\n\n .collections-header {\n display: flex;\n align-items: center;\n padding: 16px 24px;\n border-bottom: 1px solid #E5E7EB;\n gap: 16px;\n }\n\n .collections-breadcrumb {\n display: flex;\n align-items: center;\n gap: 8px;\n flex: 1;\n min-width: 0;\n }\n\n .breadcrumb-item {\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n .breadcrumb-item i {\n color: #6B7280;\n font-size: 14px;\n }\n\n .breadcrumb-link {\n color: #111827;\n font-weight: 500;\n cursor: pointer;\n text-decoration: none;\n white-space: nowrap;\n transition: color 150ms ease;\n }\n\n .breadcrumb-link:hover {\n color: #1e40af;\n }\n\n .breadcrumb-link.active {\n color: #6B7280;\n cursor: default;\n }\n\n .breadcrumb-path {\n display: flex;\n align-items: center;\n gap: 8px;\n overflow-x: auto;\n }\n\n .breadcrumb-separator {\n color: #D1D5DB;\n font-size: 10px;\n }\n\n .collections-actions {\n display: flex;\n gap: 8px;\n }\n\n .btn-primary {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 8px 16px;\n background: #1e40af;\n border: none;\n border-radius: 6px;\n color: white;\n font-size: 14px;\n cursor: pointer;\n transition: background 150ms ease;\n }\n\n .btn-primary:hover {\n background: #1e3a8a;\n }\n\n .btn-secondary {\n padding: 8px 12px;\n background: transparent;\n border: 1px solid #E5E7EB;\n border-radius: 6px;\n cursor: pointer;\n color: #6B7280;\n transition: all 150ms ease;\n }\n\n .btn-secondary:hover {\n background: #F9FAFB;\n color: #111827;\n }\n\n .btn-sm {\n padding: 6px 12px;\n font-size: 13px;\n }\n\n .collections-content {\n flex: 1;\n overflow-y: auto;\n padding: 24px;\n }\n\n .loading-state, .empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100%;\n color: #9CA3AF;\n max-width: 400px;\n margin: 0 auto;\n text-align: center;\n padding: 48px 24px;\n }\n\n .loading-state i {\n font-size: 48px;\n margin-bottom: 16px;\n opacity: 0.5;\n }\n\n .empty-state i {\n font-size: 64px;\n margin-bottom: 24px;\n opacity: 0.3;\n color: #D1D5DB;\n }\n\n .empty-state h3 {\n margin: 0 0 8px 0;\n color: #374151;\n font-size: 20px;\n font-weight: 600;\n }\n\n .empty-state p {\n margin: 0 0 24px 0;\n font-size: 14px;\n color: #6B7280;\n line-height: 1.5;\n }\n\n .loading-state p {\n margin: 0;\n font-size: 14px;\n }\n\n .empty-state .btn-primary {\n padding: 10px 20px;\n font-size: 14px;\n font-weight: 500;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n }\n\n .empty-state .btn-primary:hover {\n box-shadow: 0 2px 6px rgba(0, 0, 0, 0.15);\n }\n\n .content-grid {\n display: flex;\n flex-direction: column;\n gap: 32px;\n }\n\n .section {\n display: flex;\n flex-direction: column;\n gap: 16px;\n }\n\n .section-header {\n display: flex;\n align-items: center;\n gap: 12px;\n }\n\n .section-header h3 {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: #111827;\n }\n\n .section-count {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 24px;\n height: 24px;\n padding: 0 8px;\n background: #EFF6FF;\n border-radius: 12px;\n font-size: 13px;\n font-weight: 600;\n color: #1e40af;\n }\n\n .collection-grid, .artifact-grid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));\n gap: 16px;\n }\n\n .collection-card, .artifact-card {\n display: flex;\n align-items: start;\n gap: 16px;\n padding: 20px;\n background: white;\n border: 1px solid #E5E7EB;\n border-radius: 8px;\n cursor: pointer;\n transition: all 150ms ease;\n position: relative;\n }\n\n .collection-card:hover, .artifact-card:hover {\n border-color: #1e40af;\n box-shadow: 0 2px 8px rgba(0,0,0,0.08);\n }\n\n .card-icon {\n width: 40px;\n height: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: #EFF6FF;\n border-radius: 8px;\n flex-shrink: 0;\n position: relative;\n }\n\n .card-icon i {\n font-size: 20px;\n color: #1e40af;\n }\n\n .shared-badge {\n position: absolute;\n top: -4px;\n right: -4px;\n width: 18px;\n height: 18px;\n background: #10B981;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n border: 2px solid white;\n }\n\n .shared-badge i {\n font-size: 9px;\n color: white;\n }\n\n .artifact-icon {\n background: #F0FDF4;\n }\n\n .artifact-icon i {\n color: #059669;\n }\n\n .card-content {\n flex: 1;\n min-width: 0;\n }\n\n .card-name {\n font-size: 15px;\n font-weight: 500;\n color: #111827;\n margin-bottom: 4px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .card-owner {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-bottom: 6px;\n font-size: 12px;\n color: #6B7280;\n }\n\n .card-owner i {\n font-size: 10px;\n }\n\n .card-description {\n font-size: 13px;\n color: #6B7280;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n .card-meta {\n font-size: 12px;\n color: #9CA3AF;\n }\n\n .artifact-type {\n padding: 2px 8px;\n background: #F3F4F6;\n border-radius: 4px;\n font-weight: 500;\n }\n\n .card-actions {\n position: absolute;\n top: 12px;\n right: 12px;\n display: flex;\n gap: 4px;\n opacity: 0;\n transition: opacity 150ms ease;\n }\n\n .collection-card:hover .card-actions,\n .artifact-card:hover .card-actions {\n opacity: 1;\n }\n\n .card-action-btn {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: white;\n border: 1px solid #E5E7EB;\n border-radius: 6px;\n color: #6B7280;\n cursor: pointer;\n transition: all 150ms ease;\n }\n\n .card-action-btn:hover {\n background: #F9FAFB;\n color: #111827;\n border-color: #D1D5DB;\n }\n\n .card-action-btn.danger:hover {\n background: #FEE2E2;\n color: #DC2626;\n border-color: #FCA5A5;\n }\n "] }]
|
|
960
|
-
}], () => [{ type: i1.DialogService }, { type: i2.ArtifactStateService }, { type: i3.CollectionStateService }, { type: i4.CollectionPermissionService }], { environmentId: [{
|
|
1746
|
+
`, styles: ["\n /* Main container */\n .collections-view {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: #FAFAFA;\n position: relative;\n }\n\n /* Header */\n .collections-header {\n display: flex;\n align-items: center;\n padding: 12px 20px;\n border-bottom: 1px solid #E5E7EB;\n gap: 16px;\n background: white;\n }\n\n .collections-breadcrumb {\n display: flex;\n align-items: center;\n gap: 6px;\n flex: 1;\n min-width: 0;\n }\n\n .breadcrumb-item {\n display: flex;\n align-items: center;\n gap: 6px;\n }\n\n .breadcrumb-item i {\n color: #6B7280;\n font-size: 14px;\n }\n\n .breadcrumb-link {\n color: #111827;\n font-weight: 500;\n cursor: pointer;\n text-decoration: none;\n white-space: nowrap;\n transition: color 150ms ease;\n font-size: 14px;\n }\n\n .breadcrumb-link:hover {\n color: #0076D6;\n }\n\n .breadcrumb-link.active {\n color: #6B7280;\n cursor: default;\n }\n\n .breadcrumb-path {\n display: flex;\n align-items: center;\n gap: 6px;\n overflow-x: auto;\n }\n\n .breadcrumb-separator {\n color: #D1D5DB;\n font-size: 10px;\n }\n\n .collections-actions {\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n /* Button styles */\n .btn-primary {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 6px 12px;\n background: #007AFF;\n border: none;\n border-radius: 6px;\n color: white;\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: background 150ms ease;\n }\n\n .btn-primary:hover {\n background: #0051D5;\n }\n\n .btn-primary i.fa-chevron-down {\n font-size: 10px;\n margin-left: 2px;\n }\n\n .btn-icon {\n padding: 6px 10px;\n background: transparent;\n border: 1px solid #D1D5DB;\n border-radius: 6px;\n cursor: pointer;\n color: #6B7280;\n transition: all 150ms ease;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .btn-icon:hover {\n background: #F9FAFB;\n color: #111827;\n border-color: #9CA3AF;\n }\n\n /* Dropdown menus */\n .dropdown-container {\n position: relative;\n }\n\n .dropdown-menu {\n position: absolute;\n top: calc(100% + 4px);\n left: 0;\n min-width: 200px;\n background: white;\n border: 1px solid #E5E7EB;\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n padding: 4px;\n z-index: 1000;\n }\n\n .dropdown-menu-right {\n left: auto;\n right: 0;\n }\n\n .dropdown-item {\n display: flex;\n align-items: center;\n gap: 10px;\n width: 100%;\n padding: 8px 12px;\n background: transparent;\n border: none;\n border-radius: 4px;\n color: #111827;\n font-size: 13px;\n cursor: pointer;\n text-align: left;\n transition: background 100ms ease;\n }\n\n .dropdown-item:hover:not(:disabled) {\n background: #F3F4F6;\n }\n\n .dropdown-item:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .dropdown-item.active {\n background: #EFF6FF;\n color: #007AFF;\n }\n\n .dropdown-item i {\n font-size: 14px;\n width: 16px;\n text-align: center;\n color: #6B7280;\n }\n\n .dropdown-item.active i {\n color: #007AFF;\n }\n\n .dropdown-divider {\n height: 1px;\n background: #E5E7EB;\n margin: 4px 0;\n }\n\n /* Search */\n .search-container {\n position: relative;\n display: flex;\n align-items: center;\n min-width: 200px;\n }\n\n .search-container i.fa-search {\n position: absolute;\n left: 10px;\n color: #9CA3AF;\n font-size: 13px;\n pointer-events: none;\n }\n\n .search-input {\n width: 100%;\n padding: 6px 32px 6px 32px;\n border: 1px solid #D1D5DB;\n border-radius: 6px;\n font-size: 13px;\n outline: none;\n transition: all 150ms ease;\n }\n\n .search-input:focus {\n border-color: #007AFF;\n box-shadow: 0 0 0 3px rgba(0, 122, 255, 0.1);\n }\n\n .search-clear {\n position: absolute;\n right: 6px;\n padding: 4px;\n background: transparent;\n border: none;\n color: #9CA3AF;\n cursor: pointer;\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .search-clear:hover {\n background: #F3F4F6;\n color: #6B7280;\n }\n\n /* Selection toolbar */\n .selection-toolbar {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 8px 20px;\n background: #EFF6FF;\n border-bottom: 1px solid #BFDBFE;\n }\n\n .selection-info {\n display: flex;\n align-items: center;\n gap: 12px;\n }\n\n .selection-count {\n font-size: 13px;\n font-weight: 600;\n color: #1E40AF;\n }\n\n .selection-actions {\n display: flex;\n gap: 8px;\n }\n\n .btn-toolbar {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 6px 12px;\n background: white;\n border: 1px solid #D1D5DB;\n border-radius: 6px;\n color: #374151;\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: all 150ms ease;\n }\n\n .btn-toolbar:hover {\n background: #F9FAFB;\n border-color: #9CA3AF;\n }\n\n .btn-toolbar.btn-danger {\n color: #DC2626;\n border-color: #FCA5A5;\n }\n\n .btn-toolbar.btn-danger:hover {\n background: #FEE2E2;\n border-color: #DC2626;\n }\n\n /* Content area */\n .collections-content {\n flex: 1;\n overflow-y: auto;\n padding: 20px;\n }\n\n /* Loading and empty states */\n .loading-state, .empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100%;\n color: #9CA3AF;\n text-align: center;\n padding: 48px 24px;\n }\n\n .loading-state i {\n font-size: 48px;\n margin-bottom: 16px;\n opacity: 0.5;\n }\n\n .loading-state p {\n margin: 0;\n font-size: 14px;\n }\n\n .empty-state i {\n font-size: 64px;\n margin-bottom: 24px;\n opacity: 0.3;\n color: #D1D5DB;\n }\n\n .empty-state h3 {\n margin: 0 0 8px 0;\n color: #374151;\n font-size: 18px;\n font-weight: 600;\n }\n\n .empty-state p {\n margin: 0 0 24px 0;\n font-size: 14px;\n color: #6B7280;\n }\n\n .empty-state-actions {\n display: flex;\n gap: 12px;\n flex-wrap: wrap;\n justify-content: center;\n }\n\n /* Grid view */\n .unified-grid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));\n gap: 16px;\n padding: 4px;\n }\n\n .grid-item {\n display: flex;\n flex-direction: column;\n padding: 12px;\n background: white;\n border: 2px solid transparent;\n border-radius: 8px;\n cursor: pointer;\n transition: all 150ms ease;\n position: relative;\n }\n\n .grid-item:hover {\n background: #F9FAFB;\n border-color: #D1D5DB;\n }\n\n .grid-item.selected {\n background: #EFF6FF;\n border-color: #007AFF;\n }\n\n .grid-item.active {\n background: #FEF3C7;\n border-color: #F59E0B;\n box-shadow: 0 0 0 1px #F59E0B;\n }\n\n .grid-item.active:hover {\n background: #FDE68A;\n }\n\n .item-checkbox {\n position: absolute;\n top: 8px;\n right: 8px;\n width: 20px;\n height: 20px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n z-index: 10;\n }\n\n .item-checkbox i {\n font-size: 16px;\n color: #9CA3AF;\n transition: color 150ms ease;\n }\n\n .grid-item.selected .item-checkbox i,\n .item-checkbox:hover i {\n color: #007AFF;\n }\n\n .grid-item-content {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n }\n\n .grid-icon {\n width: 64px;\n height: 64px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 8px;\n position: relative;\n }\n\n .grid-icon.folder-icon {\n background: linear-gradient(135deg, #60A5FA 0%, #3B82F6 100%);\n }\n\n .grid-icon.folder-icon i {\n font-size: 36px;\n color: white;\n }\n\n .grid-icon.artifact-icon {\n background: #F3F4F6;\n }\n\n .grid-icon.artifact-icon i {\n font-size: 32px;\n color: #6B7280;\n }\n\n .shared-badge {\n position: absolute;\n top: -4px;\n right: -4px;\n width: 20px;\n height: 20px;\n background: #10B981;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n border: 2px solid white;\n }\n\n .shared-badge i {\n font-size: 10px;\n color: white;\n }\n\n .grid-info {\n width: 100%;\n text-align: center;\n }\n\n .grid-name {\n font-size: 13px;\n font-weight: 500;\n color: #111827;\n line-height: 1.3;\n margin-bottom: 4px;\n /* Allow wrapping to 2 lines max */\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n word-break: break-word;\n }\n\n .grid-description {\n font-size: 11px;\n color: #6B7280;\n line-height: 1.3;\n margin-bottom: 4px;\n /* Allow wrapping to 2 lines max */\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n word-break: break-word;\n }\n\n .grid-meta {\n font-size: 11px;\n color: #6B7280;\n margin-top: 4px;\n }\n\n .grid-owner {\n font-size: 11px;\n color: #6B7280;\n margin-top: 2px;\n }\n\n .grid-owner i {\n font-size: 10px;\n margin-right: 3px;\n }\n\n .version-badge {\n display: inline-block;\n padding: 2px 6px;\n background: #FEF3C7;\n color: #92400E;\n border-radius: 3px;\n font-size: 10px;\n font-weight: 600;\n font-family: monospace;\n margin-right: 4px;\n }\n\n .artifact-type-badge {\n display: inline-block;\n padding: 2px 6px;\n background: #DBEAFE;\n color: #1E40AF;\n border-radius: 3px;\n font-size: 10px;\n font-weight: 500;\n text-transform: uppercase;\n }\n\n /* List view */\n .unified-list {\n background: white;\n border: 1px solid #E5E7EB;\n border-radius: 8px;\n overflow: hidden;\n }\n\n .list-table {\n width: 100%;\n border-collapse: collapse;\n }\n\n .list-table thead {\n background: #F9FAFB;\n border-bottom: 1px solid #E5E7EB;\n }\n\n .list-table th {\n padding: 10px 16px;\n text-align: left;\n font-size: 12px;\n font-weight: 600;\n color: #6B7280;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n }\n\n .list-table th.sortable {\n cursor: pointer;\n user-select: none;\n transition: color 150ms ease;\n }\n\n .list-table th.sortable:hover {\n color: #007AFF;\n }\n\n .list-table th.sortable span {\n display: inline-block;\n margin-right: 6px;\n }\n\n .list-table th.sortable i {\n font-size: 10px;\n opacity: 0.5;\n }\n\n .list-table th.sortable:hover i {\n opacity: 1;\n }\n\n .list-table tbody tr {\n border-bottom: 1px solid #F3F4F6;\n transition: background 150ms ease;\n }\n\n .list-table tbody tr:last-child {\n border-bottom: none;\n }\n\n .list-table tbody tr:hover {\n background: #F9FAFB;\n }\n\n .list-table tbody tr.selected {\n background: #EFF6FF;\n }\n\n .list-table tbody tr.active {\n background: #FEF3C7;\n border-left: 3px solid #F59E0B;\n }\n\n .list-table tbody tr.active:hover {\n background: #FDE68A;\n }\n\n .list-table td {\n padding: 12px 16px;\n font-size: 13px;\n color: #374151;\n }\n\n .col-checkbox {\n width: 40px;\n text-align: center;\n }\n\n .col-checkbox i {\n font-size: 16px;\n color: #9CA3AF;\n cursor: pointer;\n transition: color 150ms ease;\n }\n\n .col-checkbox i:hover,\n .list-table tbody tr.selected .col-checkbox i {\n color: #007AFF;\n }\n\n .col-name {\n min-width: 300px;\n }\n\n .list-name-cell {\n display: flex;\n align-items: center;\n gap: 10px;\n }\n\n .list-name-cell i {\n font-size: 16px;\n color: #6B7280;\n width: 20px;\n text-align: center;\n }\n\n .list-name-cell .fa-folder {\n color: #3B82F6;\n }\n\n .shared-indicator {\n font-size: 12px;\n color: #10B981;\n margin-left: auto;\n }\n\n .col-type {\n width: 150px;\n }\n\n .col-modified {\n width: 180px;\n }\n\n .col-owner {\n width: 150px;\n }\n "] }]
|
|
1747
|
+
}], () => [{ type: i1.DialogService }, { type: i2.ArtifactStateService }, { type: i3.CollectionStateService }, { type: i4.CollectionPermissionService }, { type: i5.ArtifactIconService }], { environmentId: [{
|
|
961
1748
|
type: Input
|
|
962
1749
|
}], currentUser: [{
|
|
963
1750
|
type: Input
|
|
964
1751
|
}], collectionNavigated: [{
|
|
965
1752
|
type: Output
|
|
966
1753
|
}] }); })();
|
|
967
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CollectionsFullViewComponent, { className: "CollectionsFullViewComponent", filePath: "src/lib/components/collection/collections-full-view.component.ts", lineNumber:
|
|
1754
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CollectionsFullViewComponent, { className: "CollectionsFullViewComponent", filePath: "src/lib/components/collection/collections-full-view.component.ts", lineNumber: 1038 }); })();
|
|
968
1755
|
//# sourceMappingURL=collections-full-view.component.js.map
|