@memberjunction/ng-conversations 2.121.0 → 2.122.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/dist/lib/components/artifact/artifact-share-modal.component.js +2 -2
  2. package/dist/lib/components/collection/artifact-collection-picker-modal.component.d.ts.map +1 -1
  3. package/dist/lib/components/collection/artifact-collection-picker-modal.component.js +18 -17
  4. package/dist/lib/components/collection/artifact-collection-picker-modal.component.js.map +1 -1
  5. package/dist/lib/components/collection/collection-share-modal.component.js +2 -2
  6. package/dist/lib/components/collection/collections-full-view.component.d.ts +29 -3
  7. package/dist/lib/components/collection/collections-full-view.component.d.ts.map +1 -1
  8. package/dist/lib/components/collection/collections-full-view.component.js +328 -222
  9. package/dist/lib/components/collection/collections-full-view.component.js.map +1 -1
  10. package/dist/lib/components/conversation/conversation-chat-area.component.js +74 -77
  11. package/dist/lib/components/conversation/conversation-chat-area.component.js.map +1 -1
  12. package/dist/lib/components/conversation/conversation-empty-state.component.js +13 -14
  13. package/dist/lib/components/conversation/conversation-empty-state.component.js.map +1 -1
  14. package/dist/lib/components/conversation/conversation-list.component.d.ts.map +1 -1
  15. package/dist/lib/components/conversation/conversation-list.component.js +4 -7
  16. package/dist/lib/components/conversation/conversation-list.component.js.map +1 -1
  17. package/dist/lib/components/export/export-modal.component.d.ts.map +1 -1
  18. package/dist/lib/components/export/export-modal.component.js +8 -11
  19. package/dist/lib/components/export/export-modal.component.js.map +1 -1
  20. package/dist/lib/components/library/library-full-view.component.d.ts.map +1 -1
  21. package/dist/lib/components/library/library-full-view.component.js +9 -11
  22. package/dist/lib/components/library/library-full-view.component.js.map +1 -1
  23. package/dist/lib/components/members/members-modal.component.d.ts.map +1 -1
  24. package/dist/lib/components/members/members-modal.component.js +9 -12
  25. package/dist/lib/components/members/members-modal.component.js.map +1 -1
  26. package/dist/lib/components/mention/mention-editor.component.js +2 -2
  27. package/dist/lib/components/message/message-input-box.component.js +2 -2
  28. package/dist/lib/components/message/message-input.component.js +2 -2
  29. package/dist/lib/components/message/message-item.component.js +2 -2
  30. package/dist/lib/components/search/search-panel.component.js +8 -10
  31. package/dist/lib/components/search/search-panel.component.js.map +1 -1
  32. package/dist/lib/components/task/tasks-full-view.component.d.ts +2 -1
  33. package/dist/lib/components/task/tasks-full-view.component.d.ts.map +1 -1
  34. package/dist/lib/components/task/tasks-full-view.component.js +8 -1
  35. package/dist/lib/components/task/tasks-full-view.component.js.map +1 -1
  36. package/dist/lib/components/toast/toast.component.js +2 -2
  37. package/dist/lib/components/toast/toast.component.js.map +1 -1
  38. package/dist/lib/components/workspace/conversation-workspace.component.d.ts.map +1 -1
  39. package/dist/lib/components/workspace/conversation-workspace.component.js +30 -29
  40. package/dist/lib/components/workspace/conversation-workspace.component.js.map +1 -1
  41. package/dist/lib/conversations.module.d.ts +8 -7
  42. package/dist/lib/conversations.module.d.ts.map +1 -1
  43. package/dist/lib/conversations.module.js +5 -1
  44. package/dist/lib/conversations.module.js.map +1 -1
  45. package/dist/lib/models/navigation-request.model.d.ts +26 -0
  46. package/dist/lib/models/navigation-request.model.d.ts.map +1 -0
  47. package/dist/lib/models/navigation-request.model.js +2 -0
  48. package/dist/lib/models/navigation-request.model.js.map +1 -0
  49. package/dist/lib/services/conversation-state.service.d.ts +11 -1
  50. package/dist/lib/services/conversation-state.service.d.ts.map +1 -1
  51. package/dist/lib/services/conversation-state.service.js +20 -1
  52. package/dist/lib/services/conversation-state.service.js.map +1 -1
  53. package/dist/lib/services/mention-autocomplete.service.d.ts.map +1 -1
  54. package/dist/lib/services/mention-autocomplete.service.js +0 -7
  55. package/dist/lib/services/mention-autocomplete.service.js.map +1 -1
  56. package/dist/public-api.d.ts +3 -0
  57. package/dist/public-api.d.ts.map +1 -1
  58. package/dist/public-api.js +3 -0
  59. package/dist/public-api.js.map +1 -1
  60. package/package.json +17 -16
@@ -9,13 +9,14 @@ import * as i4 from "../../services/collection-permission.service";
9
9
  import * as i5 from "@memberjunction/ng-artifacts";
10
10
  import * as i6 from "@angular/common";
11
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";
12
+ import * as i8 from "@memberjunction/ng-shared-generic";
13
+ import * as i9 from "./collection-share-modal.component";
14
+ import * as i10 from "./collection-form-modal.component";
15
+ import * as i11 from "./artifact-create-modal.component";
15
16
  function CollectionsFullViewComponent_span_7_ng_container_1_Template(rf, ctx) { if (rf & 1) {
16
17
  const _r1 = i0.ɵɵgetCurrentView();
17
18
  i0.ɵɵelementContainerStart(0);
18
- i0.ɵɵelement(1, "i", 28);
19
+ i0.ɵɵelement(1, "i", 29);
19
20
  i0.ɵɵelementStart(2, "a", 5);
20
21
  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)); });
21
22
  i0.ɵɵtext(3);
@@ -30,31 +31,31 @@ function CollectionsFullViewComponent_span_7_ng_container_1_Template(rf, ctx) {
30
31
  i0.ɵɵtextInterpolate1(" ", crumb_r2.name, " ");
31
32
  } }
32
33
  function CollectionsFullViewComponent_span_7_Template(rf, ctx) { if (rf & 1) {
33
- i0.ɵɵelementStart(0, "span", 26);
34
- i0.ɵɵtemplate(1, CollectionsFullViewComponent_span_7_ng_container_1_Template, 4, 3, "ng-container", 27);
34
+ i0.ɵɵelementStart(0, "span", 27);
35
+ i0.ɵɵtemplate(1, CollectionsFullViewComponent_span_7_ng_container_1_Template, 4, 3, "ng-container", 28);
35
36
  i0.ɵɵelementEnd();
36
37
  } if (rf & 2) {
37
38
  const ctx_r2 = i0.ɵɵnextContext();
38
39
  i0.ɵɵadvance();
39
40
  i0.ɵɵproperty("ngForOf", ctx_r2.breadcrumbs);
40
41
  } }
41
- function CollectionsFullViewComponent_div_11_div_3_Template(rf, ctx) { if (rf & 1) {
42
+ function CollectionsFullViewComponent_div_13_div_3_Template(rf, ctx) { if (rf & 1) {
42
43
  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);
44
+ i0.ɵɵelementStart(0, "div", 34)(1, "button", 35);
45
+ i0.ɵɵlistener("click", function CollectionsFullViewComponent_div_13_div_3_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r6); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.setSortBy("name")); });
46
+ i0.ɵɵelement(2, "i", 36);
46
47
  i0.ɵɵelementStart(3, "span");
47
48
  i0.ɵɵtext(4, "Sort by Name");
48
49
  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);
50
+ i0.ɵɵelementStart(5, "button", 35);
51
+ i0.ɵɵlistener("click", function CollectionsFullViewComponent_div_13_div_3_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r6); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.setSortBy("date")); });
52
+ i0.ɵɵelement(6, "i", 37);
52
53
  i0.ɵɵelementStart(7, "span");
53
54
  i0.ɵɵtext(8, "Sort by Date");
54
55
  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);
56
+ i0.ɵɵelementStart(9, "button", 35);
57
+ i0.ɵɵlistener("click", function CollectionsFullViewComponent_div_13_div_3_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r6); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.setSortBy("type")); });
58
+ i0.ɵɵelement(10, "i", 38);
58
59
  i0.ɵɵelementStart(11, "span");
59
60
  i0.ɵɵtext(12, "Sort by Type");
60
61
  i0.ɵɵelementEnd()()();
@@ -67,37 +68,37 @@ function CollectionsFullViewComponent_div_11_div_3_Template(rf, ctx) { if (rf &
67
68
  i0.ɵɵadvance(4);
68
69
  i0.ɵɵclassProp("active", ctx_r2.sortBy === "type");
69
70
  } }
70
- function CollectionsFullViewComponent_div_11_Template(rf, ctx) { if (rf & 1) {
71
+ function CollectionsFullViewComponent_div_13_Template(rf, ctx) { if (rf & 1) {
71
72
  const _r5 = i0.ɵɵgetCurrentView();
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);
73
+ i0.ɵɵelementStart(0, "div", 30)(1, "button", 31);
74
+ i0.ɵɵlistener("click", function CollectionsFullViewComponent_div_13_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.showSortDropdown = !ctx_r2.showSortDropdown); });
75
+ i0.ɵɵelement(2, "i", 32);
75
76
  i0.ɵɵelementEnd();
76
- i0.ɵɵtemplate(3, CollectionsFullViewComponent_div_11_div_3_Template, 13, 6, "div", 32);
77
+ i0.ɵɵtemplate(3, CollectionsFullViewComponent_div_13_div_3_Template, 13, 6, "div", 33);
77
78
  i0.ɵɵelementEnd();
78
79
  } if (rf & 2) {
79
80
  const ctx_r2 = i0.ɵɵnextContext();
80
81
  i0.ɵɵadvance(3);
81
82
  i0.ɵɵproperty("ngIf", ctx_r2.showSortDropdown);
82
83
  } }
83
- function CollectionsFullViewComponent_button_15_Template(rf, ctx) { if (rf & 1) {
84
+ function CollectionsFullViewComponent_button_17_Template(rf, ctx) { if (rf & 1) {
84
85
  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);
86
+ i0.ɵɵelementStart(0, "button", 39);
87
+ i0.ɵɵlistener("click", function CollectionsFullViewComponent_button_17_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r7); const ctx_r2 = i0.ɵɵnextContext(); ctx_r2.searchQuery = ""; return i0.ɵɵresetView(ctx_r2.onSearchChange("")); });
88
+ i0.ɵɵelement(1, "i", 40);
88
89
  i0.ɵɵelementEnd();
89
90
  } }
90
- function CollectionsFullViewComponent_div_16_div_6_Template(rf, ctx) { if (rf & 1) {
91
+ function CollectionsFullViewComponent_div_18_div_6_Template(rf, ctx) { if (rf & 1) {
91
92
  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);
93
+ i0.ɵɵelementStart(0, "div", 45)(1, "button", 35);
94
+ i0.ɵɵlistener("click", function CollectionsFullViewComponent_div_18_div_6_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r9); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.createCollection()); });
95
+ i0.ɵɵelement(2, "i", 46);
95
96
  i0.ɵɵelementStart(3, "span");
96
97
  i0.ɵɵtext(4, "New Collection");
97
98
  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);
99
+ i0.ɵɵelementStart(5, "button", 47);
100
+ i0.ɵɵlistener("click", function CollectionsFullViewComponent_div_18_div_6_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r9); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.addArtifact()); });
101
+ i0.ɵɵelement(6, "i", 48);
101
102
  i0.ɵɵelementStart(7, "span");
102
103
  i0.ɵɵtext(8, "New Artifact");
103
104
  i0.ɵɵelementEnd()()();
@@ -106,36 +107,36 @@ function CollectionsFullViewComponent_div_16_div_6_Template(rf, ctx) { if (rf &
106
107
  i0.ɵɵadvance(5);
107
108
  i0.ɵɵproperty("disabled", !ctx_r2.currentCollectionId);
108
109
  } }
109
- function CollectionsFullViewComponent_div_16_Template(rf, ctx) { if (rf & 1) {
110
+ function CollectionsFullViewComponent_div_18_Template(rf, ctx) { if (rf & 1) {
110
111
  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);
112
+ i0.ɵɵelementStart(0, "div", 30)(1, "button", 41);
113
+ i0.ɵɵlistener("click", function CollectionsFullViewComponent_div_18_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r8); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.showNewDropdown = !ctx_r2.showNewDropdown); });
114
+ i0.ɵɵelement(2, "i", 42);
114
115
  i0.ɵɵelementStart(3, "span");
115
116
  i0.ɵɵtext(4, "New");
116
117
  i0.ɵɵelementEnd();
117
- i0.ɵɵelement(5, "i", 42);
118
+ i0.ɵɵelement(5, "i", 43);
118
119
  i0.ɵɵelementEnd();
119
- i0.ɵɵtemplate(6, CollectionsFullViewComponent_div_16_div_6_Template, 9, 1, "div", 43);
120
+ i0.ɵɵtemplate(6, CollectionsFullViewComponent_div_18_div_6_Template, 9, 1, "div", 44);
120
121
  i0.ɵɵelementEnd();
121
122
  } if (rf & 2) {
122
123
  const ctx_r2 = i0.ɵɵnextContext();
123
124
  i0.ɵɵadvance(6);
124
125
  i0.ɵɵproperty("ngIf", ctx_r2.showNewDropdown);
125
126
  } }
126
- function CollectionsFullViewComponent_div_19_Template(rf, ctx) { if (rf & 1) {
127
+ function CollectionsFullViewComponent_div_21_Template(rf, ctx) { if (rf & 1) {
127
128
  const _r10 = i0.ɵɵgetCurrentView();
128
- i0.ɵɵelementStart(0, "div", 48)(1, "div", 49)(2, "span", 50);
129
+ i0.ɵɵelementStart(0, "div", 49)(1, "div", 50)(2, "span", 51);
129
130
  i0.ɵɵtext(3);
130
131
  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);
132
+ i0.ɵɵelementStart(4, "div", 52)(5, "button", 53);
133
+ i0.ɵɵlistener("click", function CollectionsFullViewComponent_div_21_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r10); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.clearSelection()); });
134
+ i0.ɵɵelement(6, "i", 40);
134
135
  i0.ɵɵtext(7, " Clear Selection ");
135
136
  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);
137
+ i0.ɵɵelementStart(8, "button", 54);
138
+ i0.ɵɵlistener("click", function CollectionsFullViewComponent_div_21_Template_button_click_8_listener() { i0.ɵɵrestoreView(_r10); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.deleteSelected()); });
139
+ i0.ɵɵelement(9, "i", 55);
139
140
  i0.ɵɵtext(10, " Delete Selected ");
140
141
  i0.ɵɵelementEnd()()();
141
142
  } if (rf & 2) {
@@ -143,14 +144,12 @@ function CollectionsFullViewComponent_div_19_Template(rf, ctx) { if (rf & 1) {
143
144
  i0.ɵɵadvance(3);
144
145
  i0.ɵɵtextInterpolate1("", ctx_r2.selectedItems.size, " selected");
145
146
  } }
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()();
147
+ function CollectionsFullViewComponent_div_23_Template(rf, ctx) { if (rf & 1) {
148
+ i0.ɵɵelementStart(0, "div", 56);
149
+ i0.ɵɵelement(1, "mj-loading", 57);
150
+ i0.ɵɵelementEnd();
152
151
  } }
153
- function CollectionsFullViewComponent_div_22_ng_container_2_Template(rf, ctx) { if (rf & 1) {
152
+ function CollectionsFullViewComponent_div_24_ng_container_2_Template(rf, ctx) { if (rf & 1) {
154
153
  i0.ɵɵelementContainerStart(0);
155
154
  i0.ɵɵelementStart(1, "h3");
156
155
  i0.ɵɵtext(2, "No items found");
@@ -160,15 +159,15 @@ function CollectionsFullViewComponent_div_22_ng_container_2_Template(rf, ctx) {
160
159
  i0.ɵɵelementEnd();
161
160
  i0.ɵɵelementContainerEnd();
162
161
  } }
163
- function CollectionsFullViewComponent_div_22_ng_container_3_button_5_Template(rf, ctx) { if (rf & 1) {
162
+ function CollectionsFullViewComponent_div_24_ng_container_3_button_5_Template(rf, ctx) { if (rf & 1) {
164
163
  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);
164
+ i0.ɵɵelementStart(0, "button", 41);
165
+ i0.ɵɵlistener("click", function CollectionsFullViewComponent_div_24_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()); });
166
+ i0.ɵɵelement(1, "i", 42);
168
167
  i0.ɵɵtext(2, " Create Collection ");
169
168
  i0.ɵɵelementEnd();
170
169
  } }
171
- function CollectionsFullViewComponent_div_22_ng_container_3_Template(rf, ctx) { if (rf & 1) {
170
+ function CollectionsFullViewComponent_div_24_ng_container_3_Template(rf, ctx) { if (rf & 1) {
172
171
  i0.ɵɵelementContainerStart(0);
173
172
  i0.ɵɵelementStart(1, "h3");
174
173
  i0.ɵɵtext(2, "No collections yet");
@@ -176,14 +175,14 @@ function CollectionsFullViewComponent_div_22_ng_container_3_Template(rf, ctx) {
176
175
  i0.ɵɵelementStart(3, "p");
177
176
  i0.ɵɵtext(4, "Create your first collection to get started");
178
177
  i0.ɵɵelementEnd();
179
- i0.ɵɵtemplate(5, CollectionsFullViewComponent_div_22_ng_container_3_button_5_Template, 3, 0, "button", 60);
178
+ i0.ɵɵtemplate(5, CollectionsFullViewComponent_div_24_ng_container_3_button_5_Template, 3, 0, "button", 61);
180
179
  i0.ɵɵelementContainerEnd();
181
180
  } if (rf & 2) {
182
181
  const ctx_r2 = i0.ɵɵnextContext(2);
183
182
  i0.ɵɵadvance(5);
184
183
  i0.ɵɵproperty("ngIf", ctx_r2.canEditCurrent());
185
184
  } }
186
- function CollectionsFullViewComponent_div_22_ng_container_4_Template(rf, ctx) { if (rf & 1) {
185
+ function CollectionsFullViewComponent_div_24_ng_container_4_Template(rf, ctx) { if (rf & 1) {
187
186
  i0.ɵɵelementContainerStart(0);
188
187
  i0.ɵɵelementStart(1, "h3");
189
188
  i0.ɵɵtext(2, "This collection is empty");
@@ -197,10 +196,10 @@ function CollectionsFullViewComponent_div_22_ng_container_4_Template(rf, ctx) {
197
196
  i0.ɵɵelementEnd();
198
197
  i0.ɵɵelementContainerEnd();
199
198
  } }
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);
199
+ function CollectionsFullViewComponent_div_24_Template(rf, ctx) { if (rf & 1) {
200
+ i0.ɵɵelementStart(0, "div", 58);
201
+ i0.ɵɵelement(1, "i", 59);
202
+ i0.ɵɵtemplate(2, CollectionsFullViewComponent_div_24_ng_container_2_Template, 5, 0, "ng-container", 60)(3, CollectionsFullViewComponent_div_24_ng_container_3_Template, 6, 1, "ng-container", 60)(4, CollectionsFullViewComponent_div_24_ng_container_4_Template, 8, 0, "ng-container", 60);
204
203
  i0.ɵɵelementEnd();
205
204
  } if (rf & 2) {
206
205
  const ctx_r2 = i0.ɵɵnextContext();
@@ -211,13 +210,24 @@ function CollectionsFullViewComponent_div_22_Template(rf, ctx) { if (rf & 1) {
211
210
  i0.ɵɵadvance();
212
211
  i0.ɵɵproperty("ngIf", !ctx_r2.searchQuery && ctx_r2.currentCollectionId);
213
212
  } }
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);
213
+ function CollectionsFullViewComponent_div_25_div_1_div_1_Template(rf, ctx) { if (rf & 1) {
214
+ const _r14 = i0.ɵɵgetCurrentView();
215
+ i0.ɵɵelementStart(0, "div", 67);
216
+ i0.ɵɵlistener("click", function CollectionsFullViewComponent_div_25_div_1_div_1_Template_div_click_0_listener($event) { i0.ɵɵrestoreView(_r14); const item_r13 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.toggleItemSelection(item_r13, $event)); });
217
+ i0.ɵɵelement(1, "i", 9);
217
218
  i0.ɵɵelementEnd();
219
+ } if (rf & 2) {
220
+ const item_r13 = i0.ɵɵnextContext().$implicit;
221
+ i0.ɵɵadvance();
222
+ i0.ɵɵproperty("ngClass", item_r13.selected ? "fa-check-circle" : "fa-circle");
218
223
  } }
219
- function CollectionsFullViewComponent_div_23_div_1_div_3_div_7_Template(rf, ctx) { if (rf & 1) {
224
+ function CollectionsFullViewComponent_div_25_div_1_div_2_div_3_Template(rf, ctx) { if (rf & 1) {
220
225
  i0.ɵɵelementStart(0, "div", 77);
226
+ i0.ɵɵelement(1, "i", 78);
227
+ i0.ɵɵelementEnd();
228
+ } }
229
+ function CollectionsFullViewComponent_div_25_div_1_div_2_div_7_Template(rf, ctx) { if (rf & 1) {
230
+ i0.ɵɵelementStart(0, "div", 79);
221
231
  i0.ɵɵtext(1);
222
232
  i0.ɵɵelementEnd();
223
233
  } if (rf & 2) {
@@ -225,8 +235,8 @@ function CollectionsFullViewComponent_div_23_div_1_div_3_div_7_Template(rf, ctx)
225
235
  i0.ɵɵadvance();
226
236
  i0.ɵɵtextInterpolate1(" ", item_r13.description, " ");
227
237
  } }
228
- function CollectionsFullViewComponent_div_23_div_1_div_3_div_8_Template(rf, ctx) { if (rf & 1) {
229
- i0.ɵɵelementStart(0, "div", 78);
238
+ function CollectionsFullViewComponent_div_25_div_1_div_2_div_8_Template(rf, ctx) { if (rf & 1) {
239
+ i0.ɵɵelementStart(0, "div", 80);
230
240
  i0.ɵɵtext(1);
231
241
  i0.ɵɵelementEnd();
232
242
  } if (rf & 2) {
@@ -235,9 +245,9 @@ function CollectionsFullViewComponent_div_23_div_1_div_3_div_8_Template(rf, ctx)
235
245
  i0.ɵɵadvance();
236
246
  i0.ɵɵtextInterpolate1(" ", ctx_r2.getItemCountText(item_r13.itemCount), " ");
237
247
  } }
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);
248
+ function CollectionsFullViewComponent_div_25_div_1_div_2_div_9_Template(rf, ctx) { if (rf & 1) {
249
+ i0.ɵɵelementStart(0, "div", 81);
250
+ i0.ɵɵelement(1, "i", 82);
241
251
  i0.ɵɵtext(2);
242
252
  i0.ɵɵelementEnd();
243
253
  } if (rf & 2) {
@@ -245,15 +255,15 @@ function CollectionsFullViewComponent_div_23_div_1_div_3_div_9_Template(rf, ctx)
245
255
  i0.ɵɵadvance(2);
246
256
  i0.ɵɵtextInterpolate1(" ", item_r13.owner, " ");
247
257
  } }
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);
258
+ function CollectionsFullViewComponent_div_25_div_1_div_2_Template(rf, ctx) { if (rf & 1) {
259
+ i0.ɵɵelementStart(0, "div", 68)(1, "div", 69);
260
+ i0.ɵɵelement(2, "i", 70);
261
+ i0.ɵɵtemplate(3, CollectionsFullViewComponent_div_25_div_1_div_2_div_3_Template, 2, 0, "div", 71);
252
262
  i0.ɵɵelementEnd();
253
- i0.ɵɵelementStart(4, "div", 70)(5, "div", 71);
263
+ i0.ɵɵelementStart(4, "div", 72)(5, "div", 73);
254
264
  i0.ɵɵtext(6);
255
265
  i0.ɵɵelementEnd();
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);
266
+ i0.ɵɵtemplate(7, CollectionsFullViewComponent_div_25_div_1_div_2_div_7_Template, 2, 1, "div", 74)(8, CollectionsFullViewComponent_div_25_div_1_div_2_div_8_Template, 2, 1, "div", 75)(9, CollectionsFullViewComponent_div_25_div_1_div_2_div_9_Template, 3, 1, "div", 76);
257
267
  i0.ɵɵelementEnd()();
258
268
  } if (rf & 2) {
259
269
  const item_r13 = i0.ɵɵnextContext().$implicit;
@@ -269,8 +279,8 @@ function CollectionsFullViewComponent_div_23_div_1_div_3_Template(rf, ctx) { if
269
279
  i0.ɵɵadvance();
270
280
  i0.ɵɵproperty("ngIf", item_r13.isShared && item_r13.owner);
271
281
  } }
272
- function CollectionsFullViewComponent_div_23_div_1_div_4_div_6_Template(rf, ctx) { if (rf & 1) {
273
- i0.ɵɵelementStart(0, "div", 77);
282
+ function CollectionsFullViewComponent_div_25_div_1_div_3_div_6_Template(rf, ctx) { if (rf & 1) {
283
+ i0.ɵɵelementStart(0, "div", 79);
274
284
  i0.ɵɵtext(1);
275
285
  i0.ɵɵelementEnd();
276
286
  } if (rf & 2) {
@@ -278,8 +288,8 @@ function CollectionsFullViewComponent_div_23_div_1_div_4_div_6_Template(rf, ctx)
278
288
  i0.ɵɵadvance();
279
289
  i0.ɵɵtextInterpolate1(" ", item_r13.description, " ");
280
290
  } }
281
- function CollectionsFullViewComponent_div_23_div_1_div_4_span_8_Template(rf, ctx) { if (rf & 1) {
282
- i0.ɵɵelementStart(0, "span", 84);
291
+ function CollectionsFullViewComponent_div_25_div_1_div_3_span_8_Template(rf, ctx) { if (rf & 1) {
292
+ i0.ɵɵelementStart(0, "span", 86);
283
293
  i0.ɵɵtext(1);
284
294
  i0.ɵɵelementEnd();
285
295
  } if (rf & 2) {
@@ -287,8 +297,8 @@ function CollectionsFullViewComponent_div_23_div_1_div_4_span_8_Template(rf, ctx
287
297
  i0.ɵɵadvance();
288
298
  i0.ɵɵtextInterpolate1(" v", item_r13.versionNumber, " ");
289
299
  } }
290
- function CollectionsFullViewComponent_div_23_div_1_div_4_span_9_Template(rf, ctx) { if (rf & 1) {
291
- i0.ɵɵelementStart(0, "span", 85);
300
+ function CollectionsFullViewComponent_div_25_div_1_div_3_span_9_Template(rf, ctx) { if (rf & 1) {
301
+ i0.ɵɵelementStart(0, "span", 87);
292
302
  i0.ɵɵtext(1);
293
303
  i0.ɵɵelementEnd();
294
304
  } if (rf & 2) {
@@ -296,16 +306,16 @@ function CollectionsFullViewComponent_div_23_div_1_div_4_span_9_Template(rf, ctx
296
306
  i0.ɵɵadvance();
297
307
  i0.ɵɵtextInterpolate1(" ", item_r13.artifactType, " ");
298
308
  } }
299
- function CollectionsFullViewComponent_div_23_div_1_div_4_Template(rf, ctx) { if (rf & 1) {
300
- i0.ɵɵelementStart(0, "div", 66)(1, "div", 81);
309
+ function CollectionsFullViewComponent_div_25_div_1_div_3_Template(rf, ctx) { if (rf & 1) {
310
+ i0.ɵɵelementStart(0, "div", 68)(1, "div", 83);
301
311
  i0.ɵɵelement(2, "i", 9);
302
312
  i0.ɵɵelementEnd();
303
- i0.ɵɵelementStart(3, "div", 70)(4, "div", 71);
313
+ i0.ɵɵelementStart(3, "div", 72)(4, "div", 73);
304
314
  i0.ɵɵtext(5);
305
315
  i0.ɵɵelementEnd();
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);
316
+ i0.ɵɵtemplate(6, CollectionsFullViewComponent_div_25_div_1_div_3_div_6_Template, 2, 1, "div", 74);
317
+ i0.ɵɵelementStart(7, "div", 80);
318
+ i0.ɵɵtemplate(8, CollectionsFullViewComponent_div_25_div_1_div_3_span_8_Template, 2, 1, "span", 84)(9, CollectionsFullViewComponent_div_25_div_1_div_3_span_9_Template, 2, 1, "span", 85);
309
319
  i0.ɵɵelementEnd()()();
310
320
  } if (rf & 2) {
311
321
  const item_r13 = i0.ɵɵnextContext().$implicit;
@@ -321,179 +331,194 @@ function CollectionsFullViewComponent_div_23_div_1_div_4_Template(rf, ctx) { if
321
331
  i0.ɵɵadvance();
322
332
  i0.ɵɵproperty("ngIf", item_r13.artifactType);
323
333
  } }
324
- function CollectionsFullViewComponent_div_23_div_1_Template(rf, ctx) { if (rf & 1) {
334
+ function CollectionsFullViewComponent_div_25_div_1_Template(rf, ctx) { if (rf & 1) {
325
335
  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);
336
+ i0.ɵɵelementStart(0, "div", 64);
337
+ i0.ɵɵlistener("click", function CollectionsFullViewComponent_div_25_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)); })("dblclick", function CollectionsFullViewComponent_div_25_div_1_Template_div_dblclick_0_listener($event) { const item_r13 = i0.ɵɵrestoreView(_r12).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onItemDoubleClick(item_r13, $event)); })("contextmenu", function CollectionsFullViewComponent_div_25_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)); });
338
+ i0.ɵɵtemplate(1, CollectionsFullViewComponent_div_25_div_1_div_1_Template, 2, 1, "div", 65)(2, CollectionsFullViewComponent_div_25_div_1_div_2_Template, 10, 6, "div", 66)(3, CollectionsFullViewComponent_div_25_div_1_div_3_Template, 10, 6, "div", 66);
333
339
  i0.ɵɵelementEnd();
334
340
  } if (rf & 2) {
335
341
  const item_r13 = ctx.$implicit;
336
342
  const ctx_r2 = i0.ɵɵnextContext(2);
337
343
  i0.ɵɵclassProp("selected", item_r13.selected)("active", item_r13.type === "artifact" && (item_r13.artifact == null ? null : item_r13.artifact.ID) === ctx_r2.activeArtifactId);
338
- i0.ɵɵadvance(2);
339
- i0.ɵɵproperty("ngClass", item_r13.selected ? "fa-check-circle" : "fa-circle");
344
+ i0.ɵɵadvance();
345
+ i0.ɵɵproperty("ngIf", ctx_r2.isSelectMode);
340
346
  i0.ɵɵadvance();
341
347
  i0.ɵɵproperty("ngIf", item_r13.type === "folder");
342
348
  i0.ɵɵadvance();
343
349
  i0.ɵɵproperty("ngIf", item_r13.type === "artifact");
344
350
  } }
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);
351
+ function CollectionsFullViewComponent_div_25_Template(rf, ctx) { if (rf & 1) {
352
+ i0.ɵɵelementStart(0, "div", 62);
353
+ i0.ɵɵtemplate(1, CollectionsFullViewComponent_div_25_div_1_Template, 4, 7, "div", 63);
348
354
  i0.ɵɵelementEnd();
349
355
  } if (rf & 2) {
350
356
  const ctx_r2 = i0.ɵɵnextContext();
357
+ i0.ɵɵclassProp("select-mode", ctx_r2.isSelectMode);
351
358
  i0.ɵɵadvance();
352
359
  i0.ɵɵproperty("ngForOf", ctx_r2.unifiedItems);
353
360
  } }
354
- function CollectionsFullViewComponent_div_24_i_9_Template(rf, ctx) { if (rf & 1) {
355
- i0.ɵɵelement(0, "i", 31);
361
+ function CollectionsFullViewComponent_div_26_th_4_Template(rf, ctx) { if (rf & 1) {
362
+ const _r16 = i0.ɵɵgetCurrentView();
363
+ i0.ɵɵelementStart(0, "th", 98)(1, "i", 99);
364
+ i0.ɵɵlistener("click", function CollectionsFullViewComponent_div_26_th_4_Template_i_click_1_listener() { i0.ɵɵrestoreView(_r16); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.selectedItems.size === ctx_r2.unifiedItems.length ? ctx_r2.clearSelection() : ctx_r2.selectAll()); });
365
+ i0.ɵɵelementEnd()();
366
+ } if (rf & 2) {
367
+ const ctx_r2 = i0.ɵɵnextContext(2);
368
+ i0.ɵɵadvance();
369
+ i0.ɵɵproperty("ngClass", ctx_r2.selectedItems.size === ctx_r2.unifiedItems.length ? "fa-check-square" : "fa-square");
370
+ } }
371
+ function CollectionsFullViewComponent_div_26_i_8_Template(rf, ctx) { if (rf & 1) {
372
+ i0.ɵɵelement(0, "i", 32);
356
373
  } }
357
- function CollectionsFullViewComponent_div_24_i_10_Template(rf, ctx) { if (rf & 1) {
374
+ function CollectionsFullViewComponent_div_26_i_9_Template(rf, ctx) { if (rf & 1) {
358
375
  i0.ɵɵelement(0, "i", 9);
359
376
  } if (rf & 2) {
360
377
  const ctx_r2 = i0.ɵɵnextContext(2);
361
378
  i0.ɵɵproperty("ngClass", ctx_r2.sortOrder === "asc" ? "fa-sort-up" : "fa-sort-down");
362
379
  } }
363
- function CollectionsFullViewComponent_div_24_i_14_Template(rf, ctx) { if (rf & 1) {
364
- i0.ɵɵelement(0, "i", 31);
380
+ function CollectionsFullViewComponent_div_26_i_13_Template(rf, ctx) { if (rf & 1) {
381
+ i0.ɵɵelement(0, "i", 32);
365
382
  } }
366
- function CollectionsFullViewComponent_div_24_i_15_Template(rf, ctx) { if (rf & 1) {
383
+ function CollectionsFullViewComponent_div_26_i_14_Template(rf, ctx) { if (rf & 1) {
367
384
  i0.ɵɵelement(0, "i", 9);
368
385
  } if (rf & 2) {
369
386
  const ctx_r2 = i0.ɵɵnextContext(2);
370
387
  i0.ɵɵproperty("ngClass", ctx_r2.sortOrder === "asc" ? "fa-sort-up" : "fa-sort-down");
371
388
  } }
372
- function CollectionsFullViewComponent_div_24_i_19_Template(rf, ctx) { if (rf & 1) {
373
- i0.ɵɵelement(0, "i", 31);
389
+ function CollectionsFullViewComponent_div_26_i_18_Template(rf, ctx) { if (rf & 1) {
390
+ i0.ɵɵelement(0, "i", 32);
374
391
  } }
375
- function CollectionsFullViewComponent_div_24_i_20_Template(rf, ctx) { if (rf & 1) {
392
+ function CollectionsFullViewComponent_div_26_i_19_Template(rf, ctx) { if (rf & 1) {
376
393
  i0.ɵɵelement(0, "i", 9);
377
394
  } if (rf & 2) {
378
395
  const ctx_r2 = i0.ɵɵnextContext(2);
379
396
  i0.ɵɵproperty("ngClass", ctx_r2.sortOrder === "asc" ? "fa-sort-up" : "fa-sort-down");
380
397
  } }
381
- function CollectionsFullViewComponent_div_24_tr_24_i_8_Template(rf, ctx) { if (rf & 1) {
382
- i0.ɵɵelement(0, "i", 103);
398
+ function CollectionsFullViewComponent_div_26_tr_23_td_1_Template(rf, ctx) { if (rf & 1) {
399
+ const _r19 = i0.ɵɵgetCurrentView();
400
+ i0.ɵɵelementStart(0, "td", 98)(1, "i", 99);
401
+ i0.ɵɵlistener("click", function CollectionsFullViewComponent_div_26_tr_23_td_1_Template_i_click_1_listener($event) { i0.ɵɵrestoreView(_r19); const item_r18 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.toggleItemSelection(item_r18, $event)); });
402
+ i0.ɵɵelementEnd()();
403
+ } if (rf & 2) {
404
+ const item_r18 = i0.ɵɵnextContext().$implicit;
405
+ i0.ɵɵadvance();
406
+ i0.ɵɵproperty("ngClass", item_r18.selected ? "fa-check-circle" : "fa-circle");
383
407
  } }
384
- function CollectionsFullViewComponent_div_24_tr_24_span_10_Template(rf, ctx) { if (rf & 1) {
408
+ function CollectionsFullViewComponent_div_26_tr_23_i_7_Template(rf, ctx) { if (rf & 1) {
409
+ i0.ɵɵelement(0, "i", 106);
410
+ } }
411
+ function CollectionsFullViewComponent_div_26_tr_23_span_9_Template(rf, ctx) { if (rf & 1) {
385
412
  i0.ɵɵelementStart(0, "span");
386
413
  i0.ɵɵtext(1, "Folder");
387
414
  i0.ɵɵelementEnd();
388
415
  } }
389
- function CollectionsFullViewComponent_div_24_tr_24_span_11_Template(rf, ctx) { if (rf & 1) {
390
- i0.ɵɵelementStart(0, "span", 85);
416
+ function CollectionsFullViewComponent_div_26_tr_23_span_10_Template(rf, ctx) { if (rf & 1) {
417
+ i0.ɵɵelementStart(0, "span", 87);
391
418
  i0.ɵɵtext(1);
392
419
  i0.ɵɵelementEnd();
393
420
  } if (rf & 2) {
394
- const item_r16 = i0.ɵɵnextContext().$implicit;
421
+ const item_r18 = i0.ɵɵnextContext().$implicit;
395
422
  i0.ɵɵadvance();
396
- i0.ɵɵtextInterpolate1(" ", item_r16.artifactType, " ");
423
+ i0.ɵɵtextInterpolate1(" ", item_r18.artifactType, " ");
397
424
  } }
398
- function CollectionsFullViewComponent_div_24_tr_24_span_13_Template(rf, ctx) { if (rf & 1) {
425
+ function CollectionsFullViewComponent_div_26_tr_23_span_12_Template(rf, ctx) { if (rf & 1) {
399
426
  i0.ɵɵelementStart(0, "span");
400
427
  i0.ɵɵtext(1);
401
428
  i0.ɵɵpipe(2, "date");
402
429
  i0.ɵɵelementEnd();
403
430
  } if (rf & 2) {
404
- const item_r16 = i0.ɵɵnextContext().$implicit;
431
+ const item_r18 = i0.ɵɵnextContext().$implicit;
405
432
  i0.ɵɵadvance();
406
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(2, 1, item_r16.lastModified, "short"), " ");
433
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(2, 1, item_r18.lastModified, "short"), " ");
407
434
  } }
408
- function CollectionsFullViewComponent_div_24_tr_24_span_15_Template(rf, ctx) { if (rf & 1) {
435
+ function CollectionsFullViewComponent_div_26_tr_23_span_14_Template(rf, ctx) { if (rf & 1) {
409
436
  i0.ɵɵelementStart(0, "span");
410
437
  i0.ɵɵtext(1);
411
438
  i0.ɵɵelementEnd();
412
439
  } if (rf & 2) {
413
- const item_r16 = i0.ɵɵnextContext().$implicit;
440
+ const item_r18 = i0.ɵɵnextContext().$implicit;
414
441
  i0.ɵɵadvance();
415
- i0.ɵɵtextInterpolate(item_r16.owner);
442
+ i0.ɵɵtextInterpolate(item_r18.owner);
416
443
  } }
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);
444
+ function CollectionsFullViewComponent_div_26_tr_23_Template(rf, ctx) { if (rf & 1) {
445
+ const _r17 = i0.ɵɵgetCurrentView();
446
+ i0.ɵɵelementStart(0, "tr", 100);
447
+ i0.ɵɵlistener("click", function CollectionsFullViewComponent_div_26_tr_23_Template_tr_click_0_listener($event) { const item_r18 = i0.ɵɵrestoreView(_r17).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onItemClick(item_r18, $event)); })("dblclick", function CollectionsFullViewComponent_div_26_tr_23_Template_tr_dblclick_0_listener($event) { const item_r18 = i0.ɵɵrestoreView(_r17).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onItemDoubleClick(item_r18, $event)); })("contextmenu", function CollectionsFullViewComponent_div_26_tr_23_Template_tr_contextmenu_0_listener($event) { const item_r18 = i0.ɵɵrestoreView(_r17).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onItemContextMenu(item_r18, $event)); });
448
+ i0.ɵɵtemplate(1, CollectionsFullViewComponent_div_26_tr_23_td_1_Template, 2, 1, "td", 90);
449
+ i0.ɵɵelementStart(2, "td", 101)(3, "div", 102);
450
+ i0.ɵɵelement(4, "i", 9);
451
+ i0.ɵɵelementStart(5, "span");
452
+ i0.ɵɵtext(6);
428
453
  i0.ɵɵelementEnd();
429
- i0.ɵɵtemplate(8, CollectionsFullViewComponent_div_24_tr_24_i_8_Template, 1, 0, "i", 100);
454
+ i0.ɵɵtemplate(7, CollectionsFullViewComponent_div_26_tr_23_i_7_Template, 1, 0, "i", 103);
430
455
  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);
456
+ i0.ɵɵelementStart(8, "td", 104);
457
+ i0.ɵɵtemplate(9, CollectionsFullViewComponent_div_26_tr_23_span_9_Template, 2, 0, "span", 60)(10, CollectionsFullViewComponent_div_26_tr_23_span_10_Template, 2, 1, "span", 85);
433
458
  i0.ɵɵelementEnd();
434
- i0.ɵɵelementStart(12, "td", 102);
435
- i0.ɵɵtemplate(13, CollectionsFullViewComponent_div_24_tr_24_span_13_Template, 3, 4, "span", 59);
459
+ i0.ɵɵelementStart(11, "td", 105);
460
+ i0.ɵɵtemplate(12, CollectionsFullViewComponent_div_26_tr_23_span_12_Template, 3, 4, "span", 60);
436
461
  i0.ɵɵelementEnd();
437
- i0.ɵɵelementStart(14, "td", 95);
438
- i0.ɵɵtemplate(15, CollectionsFullViewComponent_div_24_tr_24_span_15_Template, 2, 1, "span", 59);
462
+ i0.ɵɵelementStart(13, "td", 96);
463
+ i0.ɵɵtemplate(14, CollectionsFullViewComponent_div_26_tr_23_span_14_Template, 2, 1, "span", 60);
439
464
  i0.ɵɵelementEnd()();
440
465
  } if (rf & 2) {
441
- const item_r16 = ctx.$implicit;
466
+ const item_r18 = ctx.$implicit;
442
467
  const ctx_r2 = i0.ɵɵnextContext(2);
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");
468
+ i0.ɵɵclassProp("selected", item_r18.selected)("active", item_r18.type === "artifact" && (item_r18.artifact == null ? null : item_r18.artifact.ID) === ctx_r2.activeArtifactId);
469
+ i0.ɵɵadvance();
470
+ i0.ɵɵproperty("ngIf", ctx_r2.isSelectMode);
446
471
  i0.ɵɵadvance(3);
447
- i0.ɵɵproperty("ngClass", item_r16.type === "folder" ? "fa-folder" : item_r16.icon);
472
+ i0.ɵɵproperty("ngClass", item_r18.type === "folder" ? "fa-folder" : item_r18.icon);
448
473
  i0.ɵɵadvance(2);
449
- i0.ɵɵtextInterpolate(item_r16.name);
474
+ i0.ɵɵtextInterpolate(item_r18.name);
450
475
  i0.ɵɵadvance();
451
- i0.ɵɵproperty("ngIf", item_r16.isShared);
476
+ i0.ɵɵproperty("ngIf", item_r18.isShared);
452
477
  i0.ɵɵadvance(2);
453
- i0.ɵɵproperty("ngIf", item_r16.type === "folder");
478
+ i0.ɵɵproperty("ngIf", item_r18.type === "folder");
454
479
  i0.ɵɵadvance();
455
- i0.ɵɵproperty("ngIf", item_r16.type === "artifact");
480
+ i0.ɵɵproperty("ngIf", item_r18.type === "artifact");
456
481
  i0.ɵɵadvance(2);
457
- i0.ɵɵproperty("ngIf", item_r16.lastModified);
482
+ i0.ɵɵproperty("ngIf", item_r18.lastModified);
458
483
  i0.ɵɵadvance(2);
459
- i0.ɵɵproperty("ngIf", item_r16.owner);
484
+ i0.ɵɵproperty("ngIf", item_r18.owner);
460
485
  } }
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");
486
+ function CollectionsFullViewComponent_div_26_Template(rf, ctx) { if (rf & 1) {
487
+ const _r15 = i0.ɵɵgetCurrentView();
488
+ i0.ɵɵelementStart(0, "div", 88)(1, "table", 89)(2, "thead")(3, "tr");
489
+ i0.ɵɵtemplate(4, CollectionsFullViewComponent_div_26_th_4_Template, 2, 1, "th", 90);
490
+ i0.ɵɵelementStart(5, "th", 91);
491
+ i0.ɵɵlistener("click", function CollectionsFullViewComponent_div_26_Template_th_click_5_listener() { i0.ɵɵrestoreView(_r15); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.setSortBy("name")); });
492
+ i0.ɵɵelementStart(6, "span");
493
+ i0.ɵɵtext(7, "Name");
470
494
  i0.ɵɵelementEnd();
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);
495
+ i0.ɵɵtemplate(8, CollectionsFullViewComponent_div_26_i_8_Template, 1, 0, "i", 92)(9, CollectionsFullViewComponent_div_26_i_9_Template, 1, 1, "i", 93);
472
496
  i0.ɵɵelementEnd();
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");
497
+ i0.ɵɵelementStart(10, "th", 94);
498
+ i0.ɵɵlistener("click", function CollectionsFullViewComponent_div_26_Template_th_click_10_listener() { i0.ɵɵrestoreView(_r15); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.setSortBy("type")); });
499
+ i0.ɵɵelementStart(11, "span");
500
+ i0.ɵɵtext(12, "Type");
477
501
  i0.ɵɵelementEnd();
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);
502
+ i0.ɵɵtemplate(13, CollectionsFullViewComponent_div_26_i_13_Template, 1, 0, "i", 92)(14, CollectionsFullViewComponent_div_26_i_14_Template, 1, 1, "i", 93);
479
503
  i0.ɵɵelementEnd();
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");
504
+ i0.ɵɵelementStart(15, "th", 95);
505
+ i0.ɵɵlistener("click", function CollectionsFullViewComponent_div_26_Template_th_click_15_listener() { i0.ɵɵrestoreView(_r15); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.setSortBy("date")); });
506
+ i0.ɵɵelementStart(16, "span");
507
+ i0.ɵɵtext(17, "Modified");
484
508
  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);
509
+ i0.ɵɵtemplate(18, CollectionsFullViewComponent_div_26_i_18_Template, 1, 0, "i", 92)(19, CollectionsFullViewComponent_div_26_i_19_Template, 1, 1, "i", 93);
486
510
  i0.ɵɵelementEnd();
487
- i0.ɵɵelementStart(21, "th", 95);
488
- i0.ɵɵtext(22, "Owner");
511
+ i0.ɵɵelementStart(20, "th", 96);
512
+ i0.ɵɵtext(21, "Owner");
489
513
  i0.ɵɵelementEnd()()();
490
- i0.ɵɵelementStart(23, "tbody");
491
- i0.ɵɵtemplate(24, CollectionsFullViewComponent_div_24_tr_24_Template, 16, 12, "tr", 96);
514
+ i0.ɵɵelementStart(22, "tbody");
515
+ i0.ɵɵtemplate(23, CollectionsFullViewComponent_div_26_tr_23_Template, 15, 12, "tr", 97);
492
516
  i0.ɵɵelementEnd()()();
493
517
  } if (rf & 2) {
494
518
  const ctx_r2 = i0.ɵɵnextContext();
495
- i0.ɵɵadvance(5);
496
- i0.ɵɵproperty("ngClass", ctx_r2.selectedItems.size === ctx_r2.unifiedItems.length ? "fa-check-square" : "fa-square");
519
+ i0.ɵɵclassProp("select-mode", ctx_r2.isSelectMode);
520
+ i0.ɵɵadvance(4);
521
+ i0.ɵɵproperty("ngIf", ctx_r2.isSelectMode);
497
522
  i0.ɵɵadvance(4);
498
523
  i0.ɵɵproperty("ngIf", ctx_r2.sortBy !== "name");
499
524
  i0.ɵɵadvance();
@@ -546,6 +571,7 @@ export class CollectionsFullViewComponent {
546
571
  showNewDropdown = false;
547
572
  showSortDropdown = false;
548
573
  activeArtifactId = null; // Track which artifact is currently being viewed
574
+ isSelectMode = false; // Toggle for selection mode
549
575
  destroy$ = new Subject();
550
576
  isNavigatingProgrammatically = false;
551
577
  constructor(dialogService, artifactState, collectionState, permissionService, artifactIconService) {
@@ -978,9 +1004,6 @@ export class CollectionsFullViewComponent {
978
1004
  viewArtifact(item) {
979
1005
  this.activeArtifactId = item.artifact.ID;
980
1006
  this.artifactState.openArtifact(item.artifact.ID, item.version.VersionNumber);
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
984
1007
  }
985
1008
  // Permission validation and checking methods
986
1009
  async validatePermission(collection, requiredPermission) {
@@ -1152,6 +1175,27 @@ export class CollectionsFullViewComponent {
1152
1175
  // Save preference to localStorage
1153
1176
  localStorage.setItem('collections-view-mode', mode);
1154
1177
  }
1178
+ /**
1179
+ * Toggle selection mode on/off
1180
+ * When entering select mode, clicks toggle selection instead of opening items
1181
+ * When exiting select mode, clears any selections
1182
+ */
1183
+ toggleSelectMode() {
1184
+ this.isSelectMode = !this.isSelectMode;
1185
+ if (!this.isSelectMode) {
1186
+ // Clear selection when exiting select mode
1187
+ this.clearSelection();
1188
+ }
1189
+ }
1190
+ /**
1191
+ * Exit selection mode (called when navigating to a new folder)
1192
+ */
1193
+ exitSelectMode() {
1194
+ if (this.isSelectMode) {
1195
+ this.isSelectMode = false;
1196
+ this.clearSelection();
1197
+ }
1198
+ }
1155
1199
  /**
1156
1200
  * Set sort order - toggles asc/desc if clicking same column
1157
1201
  */
@@ -1252,16 +1296,56 @@ export class CollectionsFullViewComponent {
1252
1296
  return 0;
1253
1297
  }
1254
1298
  /**
1255
- * Handle clicking on unified item (Phase 1)
1299
+ * Handle clicking on unified item
1300
+ * In select mode: toggles selection
1301
+ * In normal mode: opens item (folder or artifact)
1256
1302
  */
1257
1303
  onItemClick(item, event) {
1304
+ // In select mode, single click toggles selection
1305
+ if (this.isSelectMode) {
1306
+ this.toggleItemSelectionSimple(item);
1307
+ return;
1308
+ }
1309
+ // Normal mode: open the item
1310
+ this.openItem(item);
1311
+ }
1312
+ /**
1313
+ * Handle double-clicking on unified item
1314
+ * Always opens the item, even in select mode
1315
+ */
1316
+ onItemDoubleClick(item, event) {
1317
+ event?.preventDefault();
1318
+ this.openItem(item);
1319
+ }
1320
+ /**
1321
+ * Open an item (folder or artifact)
1322
+ */
1323
+ openItem(item) {
1258
1324
  if (item.type === 'folder' && item.collection) {
1325
+ // Exit select mode when navigating to a new folder
1326
+ this.exitSelectMode();
1259
1327
  this.openCollection(item.collection);
1260
1328
  }
1261
1329
  else if (item.type === 'artifact') {
1330
+ if (!item.artifact || !item.version) {
1331
+ console.error('Artifact or version is missing for item:', item.id);
1332
+ return;
1333
+ }
1262
1334
  this.viewArtifact({ artifact: item.artifact, version: item.version });
1263
1335
  }
1264
1336
  }
1337
+ /**
1338
+ * Simple toggle for item selection (used in select mode)
1339
+ */
1340
+ toggleItemSelectionSimple(item) {
1341
+ if (this.selectedItems.has(item.id)) {
1342
+ this.selectedItems.delete(item.id);
1343
+ }
1344
+ else {
1345
+ this.selectedItems.add(item.id);
1346
+ }
1347
+ this.buildUnifiedItemList();
1348
+ }
1265
1349
  /**
1266
1350
  * Get item count text for display
1267
1351
  */
@@ -1289,21 +1373,24 @@ export class CollectionsFullViewComponent {
1289
1373
  }
1290
1374
  /**
1291
1375
  * Handle keyboard shortcuts
1292
- * - Cmd/Ctrl+A: Select all
1293
- * - Escape: Clear selection
1376
+ * - Cmd/Ctrl+A: Select all (enters select mode if not already)
1377
+ * - Escape: Exit select mode and clear selection
1294
1378
  * - Delete/Backspace: Delete selected items
1295
1379
  */
1296
1380
  handleKeyboardShortcut(event) {
1297
- // Cmd+A / Ctrl+A: Select all
1381
+ // Cmd+A / Ctrl+A: Select all (enters select mode)
1298
1382
  if ((event.metaKey || event.ctrlKey) && event.key === 'a') {
1299
1383
  event.preventDefault();
1384
+ if (!this.isSelectMode) {
1385
+ this.isSelectMode = true;
1386
+ }
1300
1387
  this.selectAll();
1301
1388
  return;
1302
1389
  }
1303
- // Escape: Clear selection
1304
- if (event.key === 'Escape' && this.selectedItems.size > 0) {
1390
+ // Escape: Exit select mode
1391
+ if (event.key === 'Escape' && this.isSelectMode) {
1305
1392
  event.preventDefault();
1306
- this.clearSelection();
1393
+ this.exitSelectMode();
1307
1394
  return;
1308
1395
  }
1309
1396
  // Delete/Backspace: Delete selected items
@@ -1332,7 +1419,7 @@ export class CollectionsFullViewComponent {
1332
1419
  // event.preventDefault();
1333
1420
  }
1334
1421
  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) {
1422
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CollectionsFullViewComponent, selectors: [["mj-collections-full-view"]], inputs: { environmentId: "environmentId", currentUser: "currentUser" }, outputs: { collectionNavigated: "collectionNavigated" }, decls: 30, vars: 28, 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"], [1, "fas", "fa-check-square"], ["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", 3, "select-mode", 4, "ngIf"], ["class", "unified-list", 3, "select-mode", 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"], ["text", "Loading collections...", "size", "large"], [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", "dblclick", "contextmenu", 4, "ngFor", "ngForOf"], [1, "grid-item", 3, "click", "dblclick", "contextmenu"], ["class", "item-checkbox", 3, "click", 4, "ngIf"], ["class", "grid-item-content", 3, "title", 4, "ngIf"], [1, "item-checkbox", 3, "click"], [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"], ["class", "col-checkbox", 4, "ngIf"], [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", "dblclick", "contextmenu", 4, "ngFor", "ngForOf"], [1, "col-checkbox"], [1, "fas", 3, "click", "ngClass"], [1, "list-item", 3, "click", "dblclick", "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
1423
  i0.ɵɵelementStart(0, "div", 0);
1337
1424
  i0.ɵɵlistener("keydown", function CollectionsFullViewComponent_Template_div_keydown_0_listener($event) { return ctx.handleKeyboardShortcut($event); });
1338
1425
  i0.ɵɵelementStart(1, "div", 1)(2, "div", 2)(3, "div", 3);
@@ -1347,32 +1434,36 @@ export class CollectionsFullViewComponent {
1347
1434
  i0.ɵɵlistener("click", function CollectionsFullViewComponent_Template_button_click_9_listener() { return ctx.toggleViewMode(); });
1348
1435
  i0.ɵɵelement(10, "i", 9);
1349
1436
  i0.ɵɵelementEnd();
1350
- i0.ɵɵtemplate(11, CollectionsFullViewComponent_div_11_Template, 4, 1, "div", 10);
1351
- i0.ɵɵelementStart(12, "div", 11);
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); });
1437
+ i0.ɵɵelementStart(11, "button", 8);
1438
+ i0.ɵɵlistener("click", function CollectionsFullViewComponent_Template_button_click_11_listener() { return ctx.toggleSelectMode(); });
1439
+ i0.ɵɵelement(12, "i", 10);
1356
1440
  i0.ɵɵelementEnd();
1357
- i0.ɵɵtemplate(15, CollectionsFullViewComponent_button_15_Template, 2, 0, "button", 14);
1441
+ i0.ɵɵtemplate(13, CollectionsFullViewComponent_div_13_Template, 4, 1, "div", 11);
1442
+ i0.ɵɵelementStart(14, "div", 12);
1443
+ i0.ɵɵelement(15, "i", 13);
1444
+ i0.ɵɵelementStart(16, "input", 14);
1445
+ i0.ɵɵtwoWayListener("ngModelChange", function CollectionsFullViewComponent_Template_input_ngModelChange_16_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.searchQuery, $event) || (ctx.searchQuery = $event); return $event; });
1446
+ i0.ɵɵlistener("ngModelChange", function CollectionsFullViewComponent_Template_input_ngModelChange_16_listener($event) { return ctx.onSearchChange($event); });
1358
1447
  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);
1448
+ i0.ɵɵtemplate(17, CollectionsFullViewComponent_button_17_Template, 2, 0, "button", 15);
1449
+ i0.ɵɵelementEnd();
1450
+ i0.ɵɵtemplate(18, CollectionsFullViewComponent_div_18_Template, 7, 1, "div", 11);
1451
+ i0.ɵɵelementStart(19, "button", 16);
1452
+ i0.ɵɵlistener("click", function CollectionsFullViewComponent_Template_button_click_19_listener() { return ctx.refresh(); });
1453
+ i0.ɵɵelement(20, "i", 17);
1363
1454
  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);
1455
+ i0.ɵɵtemplate(21, CollectionsFullViewComponent_div_21_Template, 11, 1, "div", 18);
1456
+ i0.ɵɵelementStart(22, "div", 19);
1457
+ i0.ɵɵtemplate(23, CollectionsFullViewComponent_div_23_Template, 2, 0, "div", 20)(24, CollectionsFullViewComponent_div_24_Template, 5, 3, "div", 21)(25, CollectionsFullViewComponent_div_25_Template, 2, 3, "div", 22)(26, CollectionsFullViewComponent_div_26_Template, 24, 10, "div", 23);
1367
1458
  i0.ɵɵelementEnd()();
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(); });
1459
+ i0.ɵɵelementStart(27, "mj-collection-form-modal", 24);
1460
+ i0.ɵɵlistener("saved", function CollectionsFullViewComponent_Template_mj_collection_form_modal_saved_27_listener($event) { return ctx.onCollectionSaved($event); })("cancelled", function CollectionsFullViewComponent_Template_mj_collection_form_modal_cancelled_27_listener() { return ctx.onFormCancelled(); });
1370
1461
  i0.ɵɵelementEnd();
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(); });
1462
+ i0.ɵɵelementStart(28, "mj-artifact-create-modal", 25);
1463
+ i0.ɵɵlistener("saved", function CollectionsFullViewComponent_Template_mj_artifact_create_modal_saved_28_listener($event) { return ctx.onArtifactSaved($event); })("cancelled", function CollectionsFullViewComponent_Template_mj_artifact_create_modal_cancelled_28_listener() { return ctx.onArtifactModalCancelled(); });
1373
1464
  i0.ɵɵelementEnd();
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(); });
1465
+ i0.ɵɵelementStart(29, "mj-collection-share-modal", 26);
1466
+ i0.ɵɵlistener("saved", function CollectionsFullViewComponent_Template_mj_collection_share_modal_saved_29_listener() { return ctx.onPermissionsChanged(); })("cancelled", function CollectionsFullViewComponent_Template_mj_collection_share_modal_cancelled_29_listener() { return ctx.onShareModalCancelled(); });
1376
1467
  i0.ɵɵelementEnd();
1377
1468
  } if (rf & 2) {
1378
1469
  i0.ɵɵadvance(7);
@@ -1382,6 +1473,9 @@ export class CollectionsFullViewComponent {
1382
1473
  i0.ɵɵadvance();
1383
1474
  i0.ɵɵproperty("ngClass", ctx.viewMode === "grid" ? "fa-list" : "fa-th");
1384
1475
  i0.ɵɵadvance();
1476
+ i0.ɵɵclassProp("active", ctx.isSelectMode);
1477
+ i0.ɵɵproperty("title", ctx.isSelectMode ? "Exit Select Mode" : "Select Items");
1478
+ i0.ɵɵadvance(2);
1385
1479
  i0.ɵɵproperty("ngIf", ctx.viewMode === "grid");
1386
1480
  i0.ɵɵadvance(3);
1387
1481
  i0.ɵɵtwoWayProperty("ngModel", ctx.searchQuery);
@@ -1405,7 +1499,7 @@ export class CollectionsFullViewComponent {
1405
1499
  i0.ɵɵproperty("isOpen", ctx.isArtifactModalOpen)("collectionId", ctx.currentCollectionId || "")("environmentId", ctx.environmentId)("currentUser", ctx.currentUser);
1406
1500
  i0.ɵɵadvance();
1407
1501
  i0.ɵɵproperty("isOpen", ctx.isShareModalOpen)("collection", ctx.sharingCollection)("currentUser", ctx.currentUser)("currentUserPermissions", ctx.sharingCollection ? ctx.userPermissions.get(ctx.sharingCollection.ID) || null : null);
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 }"] });
1502
+ } }, dependencies: [i6.NgClass, i6.NgForOf, i6.NgIf, i7.DefaultValueAccessor, i7.NgControlStatus, i7.NgModel, i8.LoadingComponent, i9.CollectionShareModalComponent, i10.CollectionFormModalComponent, i11.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 .btn-icon.active[_ngcontent-%COMP%] {\n background: #EFF6FF;\n color: #007AFF;\n border-color: #007AFF;\n }\n\n .btn-icon.active[_ngcontent-%COMP%]:hover {\n background: #DBEAFE;\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 .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 user-select: none;\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 \n\n .unified-grid.select-mode[_ngcontent-%COMP%] .grid-item[_ngcontent-%COMP%] {\n cursor: pointer;\n }\n\n .unified-grid.select-mode[_ngcontent-%COMP%] .grid-item[_ngcontent-%COMP%]:hover {\n background: #EFF6FF;\n border-color: #93C5FD;\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 cursor: pointer;\n user-select: none;\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 }"] });
1409
1503
  }
1410
1504
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CollectionsFullViewComponent, [{
1411
1505
  type: Component,
@@ -1440,6 +1534,14 @@ export class CollectionsFullViewComponent {
1440
1534
  <i class="fas" [ngClass]="viewMode === 'grid' ? 'fa-list' : 'fa-th'"></i>
1441
1535
  </button>
1442
1536
 
1537
+ <!-- Select mode toggle -->
1538
+ <button class="btn-icon"
1539
+ [class.active]="isSelectMode"
1540
+ (click)="toggleSelectMode()"
1541
+ [title]="isSelectMode ? 'Exit Select Mode' : 'Select Items'">
1542
+ <i class="fas fa-check-square"></i>
1543
+ </button>
1544
+
1443
1545
  <!-- Sort dropdown (grid view only) -->
1444
1546
  <div class="dropdown-container" *ngIf="viewMode === 'grid'">
1445
1547
  <button class="btn-icon"
@@ -1535,8 +1637,7 @@ export class CollectionsFullViewComponent {
1535
1637
  <div class="collections-content">
1536
1638
  <!-- Loading state -->
1537
1639
  <div *ngIf="isLoading" class="loading-state">
1538
- <i class="fas fa-spinner fa-spin"></i>
1539
- <p>Loading collections...</p>
1640
+ <mj-loading text="Loading collections..." size="large"></mj-loading>
1540
1641
  </div>
1541
1642
 
1542
1643
  <!-- Empty state -->
@@ -1570,16 +1671,19 @@ export class CollectionsFullViewComponent {
1570
1671
 
1571
1672
  <!-- Grid view -->
1572
1673
  <div *ngIf="!isLoading && unifiedItems.length > 0 && viewMode === 'grid'"
1573
- class="unified-grid">
1674
+ class="unified-grid"
1675
+ [class.select-mode]="isSelectMode">
1574
1676
  <div *ngFor="let item of unifiedItems"
1575
1677
  class="grid-item"
1576
1678
  [class.selected]="item.selected"
1577
1679
  [class.active]="item.type === 'artifact' && item.artifact?.ID === activeArtifactId"
1578
1680
  (click)="onItemClick(item, $event)"
1681
+ (dblclick)="onItemDoubleClick(item, $event)"
1579
1682
  (contextmenu)="onItemContextMenu(item, $event)">
1580
1683
 
1581
- <!-- Selection checkbox -->
1684
+ <!-- Selection checkbox (only visible in select mode) -->
1582
1685
  <div class="item-checkbox"
1686
+ *ngIf="isSelectMode"
1583
1687
  (click)="toggleItemSelection(item, $event)">
1584
1688
  <i class="fas"
1585
1689
  [ngClass]="item.selected ? 'fa-check-circle' : 'fa-circle'"></i>
@@ -1637,11 +1741,12 @@ export class CollectionsFullViewComponent {
1637
1741
 
1638
1742
  <!-- List view -->
1639
1743
  <div *ngIf="!isLoading && unifiedItems.length > 0 && viewMode === 'list'"
1640
- class="unified-list">
1744
+ class="unified-list"
1745
+ [class.select-mode]="isSelectMode">
1641
1746
  <table class="list-table">
1642
1747
  <thead>
1643
1748
  <tr>
1644
- <th class="col-checkbox">
1749
+ <th class="col-checkbox" *ngIf="isSelectMode">
1645
1750
  <i class="fas"
1646
1751
  [ngClass]="selectedItems.size === unifiedItems.length ? 'fa-check-square' : 'fa-square'"
1647
1752
  (click)="selectedItems.size === unifiedItems.length ? clearSelection() : selectAll()"></i>
@@ -1673,9 +1778,10 @@ export class CollectionsFullViewComponent {
1673
1778
  [class.selected]="item.selected"
1674
1779
  [class.active]="item.type === 'artifact' && item.artifact?.ID === activeArtifactId"
1675
1780
  (click)="onItemClick(item, $event)"
1781
+ (dblclick)="onItemDoubleClick(item, $event)"
1676
1782
  (contextmenu)="onItemContextMenu(item, $event)">
1677
1783
 
1678
- <td class="col-checkbox">
1784
+ <td class="col-checkbox" *ngIf="isSelectMode">
1679
1785
  <i class="fas"
1680
1786
  [ngClass]="item.selected ? 'fa-check-circle' : 'fa-circle'"
1681
1787
  (click)="toggleItemSelection(item, $event)"></i>
@@ -1743,7 +1849,7 @@ export class CollectionsFullViewComponent {
1743
1849
  (saved)="onPermissionsChanged()"
1744
1850
  (cancelled)="onShareModalCancelled()">
1745
1851
  </mj-collection-share-modal>
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 "] }]
1852
+ `, 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 .btn-icon.active {\n background: #EFF6FF;\n color: #007AFF;\n border-color: #007AFF;\n }\n\n .btn-icon.active:hover {\n background: #DBEAFE;\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 .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 user-select: none;\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 /* Select mode styling for grid */\n .unified-grid.select-mode .grid-item {\n cursor: pointer;\n }\n\n .unified-grid.select-mode .grid-item:hover {\n background: #EFF6FF;\n border-color: #93C5FD;\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 cursor: pointer;\n user-select: none;\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
1853
  }], () => [{ type: i1.DialogService }, { type: i2.ArtifactStateService }, { type: i3.CollectionStateService }, { type: i4.CollectionPermissionService }, { type: i5.ArtifactIconService }], { environmentId: [{
1748
1854
  type: Input
1749
1855
  }], currentUser: [{
@@ -1751,5 +1857,5 @@ export class CollectionsFullViewComponent {
1751
1857
  }], collectionNavigated: [{
1752
1858
  type: Output
1753
1859
  }] }); })();
1754
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CollectionsFullViewComponent, { className: "CollectionsFullViewComponent", filePath: "src/lib/components/collection/collections-full-view.component.ts", lineNumber: 1038 }); })();
1860
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CollectionsFullViewComponent, { className: "CollectionsFullViewComponent", filePath: "src/lib/components/collection/collections-full-view.component.ts", lineNumber: 1062 }); })();
1755
1861
  //# sourceMappingURL=collections-full-view.component.js.map