@memberjunction/ng-conversations 3.4.0 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (153) hide show
  1. package/README.md +287 -155
  2. package/dist/lib/components/active-tasks/active-tasks-panel.component.d.ts.map +1 -1
  3. package/dist/lib/components/active-tasks/active-tasks-panel.component.js +46 -41
  4. package/dist/lib/components/active-tasks/active-tasks-panel.component.js.map +1 -1
  5. package/dist/lib/components/agent/active-agent-indicator.component.d.ts.map +1 -1
  6. package/dist/lib/components/agent/active-agent-indicator.component.js +70 -68
  7. package/dist/lib/components/agent/active-agent-indicator.component.js.map +1 -1
  8. package/dist/lib/components/agent/agent-process-panel.component.d.ts.map +1 -1
  9. package/dist/lib/components/agent/agent-process-panel.component.js +13 -12
  10. package/dist/lib/components/agent/agent-process-panel.component.js.map +1 -1
  11. package/dist/lib/components/artifact/artifact-share-modal.component.js +17 -15
  12. package/dist/lib/components/artifact/artifact-share-modal.component.js.map +1 -1
  13. package/dist/lib/components/attachment/image-viewer.component.d.ts.map +1 -1
  14. package/dist/lib/components/attachment/image-viewer.component.js +20 -21
  15. package/dist/lib/components/attachment/image-viewer.component.js.map +1 -1
  16. package/dist/lib/components/collection/artifact-collection-picker-modal.component.d.ts.map +1 -1
  17. package/dist/lib/components/collection/artifact-collection-picker-modal.component.js +230 -233
  18. package/dist/lib/components/collection/artifact-collection-picker-modal.component.js.map +1 -1
  19. package/dist/lib/components/collection/artifact-create-modal.component.d.ts.map +1 -1
  20. package/dist/lib/components/collection/artifact-create-modal.component.js +100 -103
  21. package/dist/lib/components/collection/artifact-create-modal.component.js.map +1 -1
  22. package/dist/lib/components/collection/collection-artifact-card.component.d.ts.map +1 -1
  23. package/dist/lib/components/collection/collection-artifact-card.component.js +41 -33
  24. package/dist/lib/components/collection/collection-artifact-card.component.js.map +1 -1
  25. package/dist/lib/components/collection/collection-form-modal.component.d.ts.map +1 -1
  26. package/dist/lib/components/collection/collection-form-modal.component.js +85 -84
  27. package/dist/lib/components/collection/collection-form-modal.component.js.map +1 -1
  28. package/dist/lib/components/collection/collection-share-modal.component.js +20 -15
  29. package/dist/lib/components/collection/collection-share-modal.component.js.map +1 -1
  30. package/dist/lib/components/collection/collection-tree.component.d.ts.map +1 -1
  31. package/dist/lib/components/collection/collection-tree.component.js +13 -11
  32. package/dist/lib/components/collection/collection-tree.component.js.map +1 -1
  33. package/dist/lib/components/collection/collection-view.component.d.ts.map +1 -1
  34. package/dist/lib/components/collection/collection-view.component.js +67 -60
  35. package/dist/lib/components/collection/collection-view.component.js.map +1 -1
  36. package/dist/lib/components/collection/collections-full-view.component.d.ts +4 -3
  37. package/dist/lib/components/collection/collections-full-view.component.d.ts.map +1 -1
  38. package/dist/lib/components/collection/collections-full-view.component.js +619 -549
  39. package/dist/lib/components/collection/collections-full-view.component.js.map +1 -1
  40. package/dist/lib/components/conversation/conversation-chat-area.component.d.ts +3 -3
  41. package/dist/lib/components/conversation/conversation-chat-area.component.d.ts.map +1 -1
  42. package/dist/lib/components/conversation/conversation-chat-area.component.js +145 -143
  43. package/dist/lib/components/conversation/conversation-chat-area.component.js.map +1 -1
  44. package/dist/lib/components/conversation/conversation-empty-state.component.d.ts.map +1 -1
  45. package/dist/lib/components/conversation/conversation-empty-state.component.js +44 -44
  46. package/dist/lib/components/conversation/conversation-empty-state.component.js.map +1 -1
  47. package/dist/lib/components/conversation/conversation-list.component.d.ts.map +1 -1
  48. package/dist/lib/components/conversation/conversation-list.component.js +18 -18
  49. package/dist/lib/components/conversation/conversation-list.component.js.map +1 -1
  50. package/dist/lib/components/dialogs/input-dialog.component.d.ts.map +1 -1
  51. package/dist/lib/components/dialogs/input-dialog.component.js +65 -57
  52. package/dist/lib/components/dialogs/input-dialog.component.js.map +1 -1
  53. package/dist/lib/components/export/export-modal.component.d.ts.map +1 -1
  54. package/dist/lib/components/export/export-modal.component.js +126 -134
  55. package/dist/lib/components/export/export-modal.component.js.map +1 -1
  56. package/dist/lib/components/global-tasks/global-tasks-panel.component.d.ts.map +1 -1
  57. package/dist/lib/components/global-tasks/global-tasks-panel.component.js +86 -79
  58. package/dist/lib/components/global-tasks/global-tasks-panel.component.js.map +1 -1
  59. package/dist/lib/components/library/library-full-view.component.d.ts.map +1 -1
  60. package/dist/lib/components/library/library-full-view.component.js +99 -87
  61. package/dist/lib/components/library/library-full-view.component.js.map +1 -1
  62. package/dist/lib/components/members/members-modal.component.d.ts.map +1 -1
  63. package/dist/lib/components/members/members-modal.component.js +124 -119
  64. package/dist/lib/components/members/members-modal.component.js.map +1 -1
  65. package/dist/lib/components/mention/mention-dropdown.component.d.ts.map +1 -1
  66. package/dist/lib/components/mention/mention-dropdown.component.js +50 -46
  67. package/dist/lib/components/mention/mention-dropdown.component.js.map +1 -1
  68. package/dist/lib/components/mention/mention-editor.component.d.ts.map +1 -1
  69. package/dist/lib/components/mention/mention-editor.component.js +39 -38
  70. package/dist/lib/components/mention/mention-editor.component.js.map +1 -1
  71. package/dist/lib/components/message/actionable-commands.component.d.ts.map +1 -1
  72. package/dist/lib/components/message/actionable-commands.component.js +20 -21
  73. package/dist/lib/components/message/actionable-commands.component.js.map +1 -1
  74. package/dist/lib/components/message/agent-response-form.component.d.ts.map +1 -1
  75. package/dist/lib/components/message/agent-response-form.component.js +79 -77
  76. package/dist/lib/components/message/agent-response-form.component.js.map +1 -1
  77. package/dist/lib/components/message/conversation-message-rating.component.d.ts.map +1 -1
  78. package/dist/lib/components/message/conversation-message-rating.component.js +40 -39
  79. package/dist/lib/components/message/conversation-message-rating.component.js.map +1 -1
  80. package/dist/lib/components/message/form-question.component.d.ts.map +1 -1
  81. package/dist/lib/components/message/form-question.component.js +142 -125
  82. package/dist/lib/components/message/form-question.component.js.map +1 -1
  83. package/dist/lib/components/message/message-input-box.component.d.ts.map +1 -1
  84. package/dist/lib/components/message/message-input-box.component.js +10 -11
  85. package/dist/lib/components/message/message-input-box.component.js.map +1 -1
  86. package/dist/lib/components/message/message-input.component.d.ts +2 -2
  87. package/dist/lib/components/message/message-input.component.d.ts.map +1 -1
  88. package/dist/lib/components/message/message-input.component.js +10 -11
  89. package/dist/lib/components/message/message-input.component.js.map +1 -1
  90. package/dist/lib/components/message/message-item.component.d.ts +2 -2
  91. package/dist/lib/components/message/message-item.component.d.ts.map +1 -1
  92. package/dist/lib/components/message/message-item.component.js +121 -107
  93. package/dist/lib/components/message/message-item.component.js.map +1 -1
  94. package/dist/lib/components/message/message-list.component.d.ts +2 -2
  95. package/dist/lib/components/message/message-list.component.d.ts.map +1 -1
  96. package/dist/lib/components/message/message-list.component.js +25 -27
  97. package/dist/lib/components/message/message-list.component.js.map +1 -1
  98. package/dist/lib/components/message/suggested-responses.component.d.ts +1 -1
  99. package/dist/lib/components/message/suggested-responses.component.d.ts.map +1 -1
  100. package/dist/lib/components/message/suggested-responses.component.js +34 -34
  101. package/dist/lib/components/message/suggested-responses.component.js.map +1 -1
  102. package/dist/lib/components/navigation/conversation-navigation.component.d.ts.map +1 -1
  103. package/dist/lib/components/navigation/conversation-navigation.component.js +3 -3
  104. package/dist/lib/components/navigation/conversation-navigation.component.js.map +1 -1
  105. package/dist/lib/components/notification/activity-indicator.component.d.ts.map +1 -1
  106. package/dist/lib/components/notification/activity-indicator.component.js +5 -5
  107. package/dist/lib/components/notification/activity-indicator.component.js.map +1 -1
  108. package/dist/lib/components/notification/notification-badge.component.d.ts.map +1 -1
  109. package/dist/lib/components/notification/notification-badge.component.js +9 -6
  110. package/dist/lib/components/notification/notification-badge.component.js.map +1 -1
  111. package/dist/lib/components/project/project-form-modal.component.d.ts.map +1 -1
  112. package/dist/lib/components/project/project-form-modal.component.js +7 -7
  113. package/dist/lib/components/project/project-form-modal.component.js.map +1 -1
  114. package/dist/lib/components/project/project-selector.component.d.ts.map +1 -1
  115. package/dist/lib/components/project/project-selector.component.js +8 -8
  116. package/dist/lib/components/project/project-selector.component.js.map +1 -1
  117. package/dist/lib/components/search/search-panel.component.d.ts.map +1 -1
  118. package/dist/lib/components/search/search-panel.component.js +32 -27
  119. package/dist/lib/components/search/search-panel.component.js.map +1 -1
  120. package/dist/lib/components/share/share-modal.component.d.ts.map +1 -1
  121. package/dist/lib/components/share/share-modal.component.js +129 -131
  122. package/dist/lib/components/share/share-modal.component.js.map +1 -1
  123. package/dist/lib/components/shared/user-picker.component.js +6 -6
  124. package/dist/lib/components/shared/user-picker.component.js.map +1 -1
  125. package/dist/lib/components/sidebar/conversation-sidebar.component.d.ts.map +1 -1
  126. package/dist/lib/components/sidebar/conversation-sidebar.component.js +41 -37
  127. package/dist/lib/components/sidebar/conversation-sidebar.component.js.map +1 -1
  128. package/dist/lib/components/task/tasks-full-view.component.js +4 -5
  129. package/dist/lib/components/task/tasks-full-view.component.js.map +1 -1
  130. package/dist/lib/components/tasks/task-widget.component.d.ts.map +1 -1
  131. package/dist/lib/components/tasks/task-widget.component.js +144 -118
  132. package/dist/lib/components/tasks/task-widget.component.js.map +1 -1
  133. package/dist/lib/components/tasks/tasks-dropdown.component.d.ts.map +1 -1
  134. package/dist/lib/components/tasks/tasks-dropdown.component.js +176 -149
  135. package/dist/lib/components/tasks/tasks-dropdown.component.js.map +1 -1
  136. package/dist/lib/components/thread/thread-panel.component.d.ts.map +1 -1
  137. package/dist/lib/components/thread/thread-panel.component.js +7 -5
  138. package/dist/lib/components/thread/thread-panel.component.js.map +1 -1
  139. package/dist/lib/components/toast/toast.component.d.ts.map +1 -1
  140. package/dist/lib/components/toast/toast.component.js +10 -11
  141. package/dist/lib/components/toast/toast.component.js.map +1 -1
  142. package/dist/lib/components/workspace/conversation-workspace.component.d.ts +5 -5
  143. package/dist/lib/components/workspace/conversation-workspace.component.d.ts.map +1 -1
  144. package/dist/lib/components/workspace/conversation-workspace.component.js +54 -49
  145. package/dist/lib/components/workspace/conversation-workspace.component.js.map +1 -1
  146. package/dist/lib/directives/search-shortcut.directive.d.ts.map +1 -1
  147. package/dist/lib/directives/search-shortcut.directive.js +3 -2
  148. package/dist/lib/directives/search-shortcut.directive.js.map +1 -1
  149. package/dist/lib/services/mention-autocomplete.service.d.ts +6 -0
  150. package/dist/lib/services/mention-autocomplete.service.d.ts.map +1 -1
  151. package/dist/lib/services/mention-autocomplete.service.js +25 -2
  152. package/dist/lib/services/mention-autocomplete.service.js.map +1 -1
  153. package/package.json +38 -38
@@ -13,49 +13,48 @@ import * as i8 from "@memberjunction/ng-shared-generic";
13
13
  import * as i9 from "./collection-share-modal.component";
14
14
  import * as i10 from "./collection-form-modal.component";
15
15
  import * as i11 from "./artifact-create-modal.component";
16
- function CollectionsFullViewComponent_span_7_ng_container_1_Template(rf, ctx) { if (rf & 1) {
16
+ function CollectionsFullViewComponent_Conditional_7_For_2_Template(rf, ctx) { if (rf & 1) {
17
17
  const _r1 = i0.ɵɵgetCurrentView();
18
- i0.ɵɵelementContainerStart(0);
19
- i0.ɵɵelement(1, "i", 29);
20
- i0.ɵɵelementStart(2, "a", 5);
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)); });
22
- i0.ɵɵtext(3);
18
+ i0.ɵɵelement(0, "i", 27);
19
+ i0.ɵɵelementStart(1, "a", 5);
20
+ i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_7_For_2_Template_a_click_1_listener() { const crumb_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.navigateTo(crumb_r2)); });
21
+ i0.ɵɵtext(2);
23
22
  i0.ɵɵelementEnd();
24
- i0.ɵɵelementContainerEnd();
25
23
  } if (rf & 2) {
26
24
  const crumb_r2 = ctx.$implicit;
27
- const last_r4 = ctx.last;
28
- i0.ɵɵadvance(2);
29
- i0.ɵɵclassProp("active", last_r4);
25
+ const ɵ$index_17_r4 = ctx.$index;
26
+ const ɵ$count_17_r5 = ctx.$count;
27
+ i0.ɵɵadvance();
28
+ i0.ɵɵclassProp("active", ɵ$index_17_r4 === ɵ$count_17_r5 - 1);
30
29
  i0.ɵɵadvance();
31
30
  i0.ɵɵtextInterpolate1(" ", crumb_r2.name, " ");
32
31
  } }
33
- function CollectionsFullViewComponent_span_7_Template(rf, ctx) { if (rf & 1) {
34
- i0.ɵɵelementStart(0, "span", 27);
35
- i0.ɵɵtemplate(1, CollectionsFullViewComponent_span_7_ng_container_1_Template, 4, 3, "ng-container", 28);
32
+ function CollectionsFullViewComponent_Conditional_7_Template(rf, ctx) { if (rf & 1) {
33
+ i0.ɵɵelementStart(0, "span", 6);
34
+ i0.ɵɵrepeaterCreate(1, CollectionsFullViewComponent_Conditional_7_For_2_Template, 3, 3, null, null, i0.ɵɵrepeaterTrackByIdentity);
36
35
  i0.ɵɵelementEnd();
37
36
  } if (rf & 2) {
38
37
  const ctx_r2 = i0.ɵɵnextContext();
39
38
  i0.ɵɵadvance();
40
- i0.ɵɵproperty("ngForOf", ctx_r2.breadcrumbs);
39
+ i0.ɵɵrepeater(ctx_r2.breadcrumbs);
41
40
  } }
42
- function CollectionsFullViewComponent_div_13_div_3_Template(rf, ctx) { if (rf & 1) {
43
- const _r6 = i0.ɵɵgetCurrentView();
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);
41
+ function CollectionsFullViewComponent_Conditional_13_Conditional_3_Template(rf, ctx) { if (rf & 1) {
42
+ const _r7 = i0.ɵɵgetCurrentView();
43
+ i0.ɵɵelementStart(0, "div", 30)(1, "button", 31);
44
+ i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_13_Conditional_3_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r7); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.setSortBy("name")); });
45
+ i0.ɵɵelement(2, "i", 32);
47
46
  i0.ɵɵelementStart(3, "span");
48
47
  i0.ɵɵtext(4, "Sort by Name");
49
48
  i0.ɵɵelementEnd()();
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);
49
+ i0.ɵɵelementStart(5, "button", 31);
50
+ i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_13_Conditional_3_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r7); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.setSortBy("date")); });
51
+ i0.ɵɵelement(6, "i", 33);
53
52
  i0.ɵɵelementStart(7, "span");
54
53
  i0.ɵɵtext(8, "Sort by Date");
55
54
  i0.ɵɵelementEnd()();
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);
55
+ i0.ɵɵelementStart(9, "button", 31);
56
+ i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_13_Conditional_3_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r7); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.setSortBy("type")); });
57
+ i0.ɵɵelement(10, "i", 34);
59
58
  i0.ɵɵelementStart(11, "span");
60
59
  i0.ɵɵtext(12, "Sort by Type");
61
60
  i0.ɵɵelementEnd()()();
@@ -68,37 +67,37 @@ function CollectionsFullViewComponent_div_13_div_3_Template(rf, ctx) { if (rf &
68
67
  i0.ɵɵadvance(4);
69
68
  i0.ɵɵclassProp("active", ctx_r2.sortBy === "type");
70
69
  } }
71
- function CollectionsFullViewComponent_div_13_Template(rf, ctx) { if (rf & 1) {
72
- const _r5 = i0.ɵɵgetCurrentView();
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);
70
+ function CollectionsFullViewComponent_Conditional_13_Template(rf, ctx) { if (rf & 1) {
71
+ const _r6 = i0.ɵɵgetCurrentView();
72
+ i0.ɵɵelementStart(0, "div", 11)(1, "button", 28);
73
+ i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_13_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r6); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.showSortDropdown = !ctx_r2.showSortDropdown); });
74
+ i0.ɵɵelement(2, "i", 29);
76
75
  i0.ɵɵelementEnd();
77
- i0.ɵɵtemplate(3, CollectionsFullViewComponent_div_13_div_3_Template, 13, 6, "div", 33);
76
+ i0.ɵɵconditionalCreate(3, CollectionsFullViewComponent_Conditional_13_Conditional_3_Template, 13, 6, "div", 30);
78
77
  i0.ɵɵelementEnd();
79
78
  } if (rf & 2) {
80
79
  const ctx_r2 = i0.ɵɵnextContext();
81
80
  i0.ɵɵadvance(3);
82
- i0.ɵɵproperty("ngIf", ctx_r2.showSortDropdown);
81
+ i0.ɵɵconditional(ctx_r2.showSortDropdown ? 3 : -1);
83
82
  } }
84
- function CollectionsFullViewComponent_button_17_Template(rf, ctx) { if (rf & 1) {
85
- const _r7 = i0.ɵɵgetCurrentView();
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);
83
+ function CollectionsFullViewComponent_Conditional_17_Template(rf, ctx) { if (rf & 1) {
84
+ const _r8 = i0.ɵɵgetCurrentView();
85
+ i0.ɵɵelementStart(0, "button", 35);
86
+ i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_17_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r8); const ctx_r2 = i0.ɵɵnextContext(); ctx_r2.searchQuery = ""; return i0.ɵɵresetView(ctx_r2.onSearchChange("")); });
87
+ i0.ɵɵelement(1, "i", 36);
89
88
  i0.ɵɵelementEnd();
90
89
  } }
91
- function CollectionsFullViewComponent_div_18_div_6_Template(rf, ctx) { if (rf & 1) {
92
- const _r9 = i0.ɵɵgetCurrentView();
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);
90
+ function CollectionsFullViewComponent_Conditional_18_Conditional_6_Template(rf, ctx) { if (rf & 1) {
91
+ const _r10 = i0.ɵɵgetCurrentView();
92
+ i0.ɵɵelementStart(0, "div", 40)(1, "button", 31);
93
+ i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_18_Conditional_6_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r10); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.createCollection()); });
94
+ i0.ɵɵelement(2, "i", 41);
96
95
  i0.ɵɵelementStart(3, "span");
97
96
  i0.ɵɵtext(4, "New Collection");
98
97
  i0.ɵɵelementEnd()();
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);
98
+ i0.ɵɵelementStart(5, "button", 42);
99
+ i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_18_Conditional_6_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r10); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.addArtifact()); });
100
+ i0.ɵɵelement(6, "i", 43);
102
101
  i0.ɵɵelementStart(7, "span");
103
102
  i0.ɵɵtext(8, "New Artifact");
104
103
  i0.ɵɵelementEnd()()();
@@ -107,36 +106,36 @@ function CollectionsFullViewComponent_div_18_div_6_Template(rf, ctx) { if (rf &
107
106
  i0.ɵɵadvance(5);
108
107
  i0.ɵɵproperty("disabled", !ctx_r2.currentCollectionId);
109
108
  } }
110
- function CollectionsFullViewComponent_div_18_Template(rf, ctx) { if (rf & 1) {
111
- const _r8 = i0.ɵɵgetCurrentView();
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);
109
+ function CollectionsFullViewComponent_Conditional_18_Template(rf, ctx) { if (rf & 1) {
110
+ const _r9 = i0.ɵɵgetCurrentView();
111
+ i0.ɵɵelementStart(0, "div", 11)(1, "button", 37);
112
+ i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_18_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r9); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.showNewDropdown = !ctx_r2.showNewDropdown); });
113
+ i0.ɵɵelement(2, "i", 38);
115
114
  i0.ɵɵelementStart(3, "span");
116
115
  i0.ɵɵtext(4, "New");
117
116
  i0.ɵɵelementEnd();
118
- i0.ɵɵelement(5, "i", 43);
117
+ i0.ɵɵelement(5, "i", 39);
119
118
  i0.ɵɵelementEnd();
120
- i0.ɵɵtemplate(6, CollectionsFullViewComponent_div_18_div_6_Template, 9, 1, "div", 44);
119
+ i0.ɵɵconditionalCreate(6, CollectionsFullViewComponent_Conditional_18_Conditional_6_Template, 9, 1, "div", 40);
121
120
  i0.ɵɵelementEnd();
122
121
  } if (rf & 2) {
123
122
  const ctx_r2 = i0.ɵɵnextContext();
124
123
  i0.ɵɵadvance(6);
125
- i0.ɵɵproperty("ngIf", ctx_r2.showNewDropdown);
124
+ i0.ɵɵconditional(ctx_r2.showNewDropdown ? 6 : -1);
126
125
  } }
127
- function CollectionsFullViewComponent_div_21_Template(rf, ctx) { if (rf & 1) {
128
- const _r10 = i0.ɵɵgetCurrentView();
129
- i0.ɵɵelementStart(0, "div", 49)(1, "div", 50)(2, "span", 51);
126
+ function CollectionsFullViewComponent_Conditional_21_Template(rf, ctx) { if (rf & 1) {
127
+ const _r11 = i0.ɵɵgetCurrentView();
128
+ i0.ɵɵelementStart(0, "div", 18)(1, "div", 44)(2, "span", 45);
130
129
  i0.ɵɵtext(3);
131
130
  i0.ɵɵelementEnd()();
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);
131
+ i0.ɵɵelementStart(4, "div", 46)(5, "button", 47);
132
+ i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_21_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r11); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.clearSelection()); });
133
+ i0.ɵɵelement(6, "i", 36);
135
134
  i0.ɵɵtext(7, " Clear Selection ");
136
135
  i0.ɵɵelementEnd();
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);
136
+ i0.ɵɵelementStart(8, "button", 48);
137
+ i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_21_Template_button_click_8_listener() { i0.ɵɵrestoreView(_r11); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.deleteSelected()); });
138
+ i0.ɵɵelement(9, "i", 49);
140
139
  i0.ɵɵtext(10, " Delete Selected ");
141
140
  i0.ɵɵelementEnd()()();
142
141
  } if (rf & 2) {
@@ -144,395 +143,400 @@ function CollectionsFullViewComponent_div_21_Template(rf, ctx) { if (rf & 1) {
144
143
  i0.ɵɵadvance(3);
145
144
  i0.ɵɵtextInterpolate1("", ctx_r2.selectedItems.size, " selected");
146
145
  } }
147
- function CollectionsFullViewComponent_div_23_Template(rf, ctx) { if (rf & 1) {
148
- i0.ɵɵelementStart(0, "div", 56);
149
- i0.ɵɵelement(1, "mj-loading", 57);
146
+ function CollectionsFullViewComponent_Conditional_23_Template(rf, ctx) { if (rf & 1) {
147
+ i0.ɵɵelementStart(0, "div", 20);
148
+ i0.ɵɵelement(1, "mj-loading", 50);
150
149
  i0.ɵɵelementEnd();
151
150
  } }
152
- function CollectionsFullViewComponent_div_24_ng_container_2_Template(rf, ctx) { if (rf & 1) {
153
- i0.ɵɵelementContainerStart(0);
154
- i0.ɵɵelementStart(1, "h3");
155
- i0.ɵɵtext(2, "No items found");
151
+ function CollectionsFullViewComponent_Conditional_24_Conditional_2_Template(rf, ctx) { if (rf & 1) {
152
+ i0.ɵɵelementStart(0, "h3");
153
+ i0.ɵɵtext(1, "No items found");
156
154
  i0.ɵɵelementEnd();
157
- i0.ɵɵelementStart(3, "p");
158
- i0.ɵɵtext(4, "Try adjusting your search");
155
+ i0.ɵɵelementStart(2, "p");
156
+ i0.ɵɵtext(3, "Try adjusting your search");
159
157
  i0.ɵɵelementEnd();
160
- i0.ɵɵelementContainerEnd();
161
158
  } }
162
- function CollectionsFullViewComponent_div_24_ng_container_3_button_5_Template(rf, ctx) { if (rf & 1) {
163
- const _r11 = i0.ɵɵgetCurrentView();
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);
159
+ function CollectionsFullViewComponent_Conditional_24_Conditional_3_Conditional_4_Template(rf, ctx) { if (rf & 1) {
160
+ const _r12 = i0.ɵɵgetCurrentView();
161
+ i0.ɵɵelementStart(0, "button", 37);
162
+ i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_24_Conditional_3_Conditional_4_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r12); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.createCollection()); });
163
+ i0.ɵɵelement(1, "i", 38);
167
164
  i0.ɵɵtext(2, " Create Collection ");
168
165
  i0.ɵɵelementEnd();
169
166
  } }
170
- function CollectionsFullViewComponent_div_24_ng_container_3_Template(rf, ctx) { if (rf & 1) {
171
- i0.ɵɵelementContainerStart(0);
172
- i0.ɵɵelementStart(1, "h3");
173
- i0.ɵɵtext(2, "No collections yet");
167
+ function CollectionsFullViewComponent_Conditional_24_Conditional_3_Template(rf, ctx) { if (rf & 1) {
168
+ i0.ɵɵelementStart(0, "h3");
169
+ i0.ɵɵtext(1, "No collections yet");
174
170
  i0.ɵɵelementEnd();
175
- i0.ɵɵelementStart(3, "p");
176
- i0.ɵɵtext(4, "Create your first collection to get started");
171
+ i0.ɵɵelementStart(2, "p");
172
+ i0.ɵɵtext(3, "Create your first collection to get started");
177
173
  i0.ɵɵelementEnd();
178
- i0.ɵɵtemplate(5, CollectionsFullViewComponent_div_24_ng_container_3_button_5_Template, 3, 0, "button", 61);
179
- i0.ɵɵelementContainerEnd();
174
+ i0.ɵɵconditionalCreate(4, CollectionsFullViewComponent_Conditional_24_Conditional_3_Conditional_4_Template, 3, 0, "button", 52);
180
175
  } if (rf & 2) {
181
176
  const ctx_r2 = i0.ɵɵnextContext(2);
182
- i0.ɵɵadvance(5);
183
- i0.ɵɵproperty("ngIf", ctx_r2.canEditCurrent());
177
+ i0.ɵɵadvance(4);
178
+ i0.ɵɵconditional(ctx_r2.canEditCurrent() ? 4 : -1);
184
179
  } }
185
- function CollectionsFullViewComponent_div_24_ng_container_4_Template(rf, ctx) { if (rf & 1) {
186
- i0.ɵɵelementContainerStart(0);
187
- i0.ɵɵelementStart(1, "h3");
188
- i0.ɵɵtext(2, "This collection is empty");
180
+ function CollectionsFullViewComponent_Conditional_24_Conditional_4_Template(rf, ctx) { if (rf & 1) {
181
+ i0.ɵɵelementStart(0, "h3");
182
+ i0.ɵɵtext(1, "This collection is empty");
189
183
  i0.ɵɵelementEnd();
190
- i0.ɵɵelementStart(3, "p");
191
- i0.ɵɵtext(4, "Use the ");
192
- i0.ɵɵelementStart(5, "strong");
193
- i0.ɵɵtext(6, "New");
184
+ i0.ɵɵelementStart(2, "p");
185
+ i0.ɵɵtext(3, "Use the ");
186
+ i0.ɵɵelementStart(4, "strong");
187
+ i0.ɵɵtext(5, "New");
194
188
  i0.ɵɵelementEnd();
195
- i0.ɵɵtext(7, " button above to add collections or artifacts");
189
+ i0.ɵɵtext(6, " button above to add collections or artifacts");
196
190
  i0.ɵɵelementEnd();
197
- i0.ɵɵelementContainerEnd();
198
191
  } }
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);
192
+ function CollectionsFullViewComponent_Conditional_24_Template(rf, ctx) { if (rf & 1) {
193
+ i0.ɵɵelementStart(0, "div", 21);
194
+ i0.ɵɵelement(1, "i", 51);
195
+ i0.ɵɵconditionalCreate(2, CollectionsFullViewComponent_Conditional_24_Conditional_2_Template, 4, 0);
196
+ i0.ɵɵconditionalCreate(3, CollectionsFullViewComponent_Conditional_24_Conditional_3_Template, 5, 1);
197
+ i0.ɵɵconditionalCreate(4, CollectionsFullViewComponent_Conditional_24_Conditional_4_Template, 7, 0);
203
198
  i0.ɵɵelementEnd();
204
199
  } if (rf & 2) {
205
200
  const ctx_r2 = i0.ɵɵnextContext();
206
201
  i0.ɵɵadvance(2);
207
- i0.ɵɵproperty("ngIf", ctx_r2.searchQuery);
202
+ i0.ɵɵconditional(ctx_r2.searchQuery ? 2 : -1);
208
203
  i0.ɵɵadvance();
209
- i0.ɵɵproperty("ngIf", !ctx_r2.searchQuery && !ctx_r2.currentCollectionId);
204
+ i0.ɵɵconditional(!ctx_r2.searchQuery && !ctx_r2.currentCollectionId ? 3 : -1);
210
205
  i0.ɵɵadvance();
211
- i0.ɵɵproperty("ngIf", !ctx_r2.searchQuery && ctx_r2.currentCollectionId);
206
+ i0.ɵɵconditional(!ctx_r2.searchQuery && ctx_r2.currentCollectionId ? 4 : -1);
212
207
  } }
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)); });
208
+ function CollectionsFullViewComponent_Conditional_25_For_2_Conditional_1_Template(rf, ctx) { if (rf & 1) {
209
+ const _r15 = i0.ɵɵgetCurrentView();
210
+ i0.ɵɵelementStart(0, "div", 58);
211
+ i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_25_For_2_Conditional_1_Template_div_click_0_listener($event) { i0.ɵɵrestoreView(_r15); const item_r14 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.toggleItemSelection(item_r14, $event)); });
217
212
  i0.ɵɵelement(1, "i", 9);
218
213
  i0.ɵɵelementEnd();
219
214
  } if (rf & 2) {
220
- const item_r13 = i0.ɵɵnextContext().$implicit;
215
+ const item_r14 = i0.ɵɵnextContext().$implicit;
221
216
  i0.ɵɵadvance();
222
- i0.ɵɵproperty("ngClass", item_r13.selected ? "fa-check-circle" : "fa-circle");
217
+ i0.ɵɵproperty("ngClass", item_r14.selected ? "fa-check-circle" : "fa-circle");
223
218
  } }
224
- function CollectionsFullViewComponent_div_25_div_1_div_2_div_3_Template(rf, ctx) { if (rf & 1) {
225
- i0.ɵɵelementStart(0, "div", 77);
226
- i0.ɵɵelement(1, "i", 78);
219
+ function CollectionsFullViewComponent_Conditional_25_For_2_Conditional_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
220
+ i0.ɵɵelementStart(0, "div", 61);
221
+ i0.ɵɵelement(1, "i", 67);
227
222
  i0.ɵɵelementEnd();
228
223
  } }
229
- function CollectionsFullViewComponent_div_25_div_1_div_2_div_7_Template(rf, ctx) { if (rf & 1) {
230
- i0.ɵɵelementStart(0, "div", 79);
224
+ function CollectionsFullViewComponent_Conditional_25_For_2_Conditional_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
225
+ i0.ɵɵelementStart(0, "div", 64);
231
226
  i0.ɵɵtext(1);
232
227
  i0.ɵɵelementEnd();
233
228
  } if (rf & 2) {
234
- const item_r13 = i0.ɵɵnextContext(2).$implicit;
229
+ const item_r14 = i0.ɵɵnextContext(2).$implicit;
235
230
  i0.ɵɵadvance();
236
- i0.ɵɵtextInterpolate1(" ", item_r13.description, " ");
231
+ i0.ɵɵtextInterpolate1(" ", item_r14.description, " ");
237
232
  } }
238
- function CollectionsFullViewComponent_div_25_div_1_div_2_div_8_Template(rf, ctx) { if (rf & 1) {
239
- i0.ɵɵelementStart(0, "div", 80);
233
+ function CollectionsFullViewComponent_Conditional_25_For_2_Conditional_2_Conditional_8_Template(rf, ctx) { if (rf & 1) {
234
+ i0.ɵɵelementStart(0, "div", 65);
240
235
  i0.ɵɵtext(1);
241
236
  i0.ɵɵelementEnd();
242
237
  } if (rf & 2) {
243
- const item_r13 = i0.ɵɵnextContext(2).$implicit;
238
+ const item_r14 = i0.ɵɵnextContext(2).$implicit;
244
239
  const ctx_r2 = i0.ɵɵnextContext(2);
245
240
  i0.ɵɵadvance();
246
- i0.ɵɵtextInterpolate1(" ", ctx_r2.getItemCountText(item_r13.itemCount), " ");
241
+ i0.ɵɵtextInterpolate1(" ", ctx_r2.getItemCountText(item_r14.itemCount), " ");
247
242
  } }
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);
243
+ function CollectionsFullViewComponent_Conditional_25_For_2_Conditional_2_Conditional_9_Template(rf, ctx) { if (rf & 1) {
244
+ i0.ɵɵelementStart(0, "div", 66);
245
+ i0.ɵɵelement(1, "i", 68);
251
246
  i0.ɵɵtext(2);
252
247
  i0.ɵɵelementEnd();
253
248
  } if (rf & 2) {
254
- const item_r13 = i0.ɵɵnextContext(2).$implicit;
249
+ const item_r14 = i0.ɵɵnextContext(2).$implicit;
255
250
  i0.ɵɵadvance(2);
256
- i0.ɵɵtextInterpolate1(" ", item_r13.owner, " ");
251
+ i0.ɵɵtextInterpolate1(" ", item_r14.owner, " ");
257
252
  } }
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);
253
+ function CollectionsFullViewComponent_Conditional_25_For_2_Conditional_2_Template(rf, ctx) { if (rf & 1) {
254
+ i0.ɵɵelementStart(0, "div", 57)(1, "div", 59);
255
+ i0.ɵɵelement(2, "i", 60);
256
+ i0.ɵɵconditionalCreate(3, CollectionsFullViewComponent_Conditional_25_For_2_Conditional_2_Conditional_3_Template, 2, 0, "div", 61);
262
257
  i0.ɵɵelementEnd();
263
- i0.ɵɵelementStart(4, "div", 72)(5, "div", 73);
258
+ i0.ɵɵelementStart(4, "div", 62)(5, "div", 63);
264
259
  i0.ɵɵtext(6);
265
260
  i0.ɵɵelementEnd();
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);
261
+ i0.ɵɵconditionalCreate(7, CollectionsFullViewComponent_Conditional_25_For_2_Conditional_2_Conditional_7_Template, 2, 1, "div", 64);
262
+ i0.ɵɵconditionalCreate(8, CollectionsFullViewComponent_Conditional_25_For_2_Conditional_2_Conditional_8_Template, 2, 1, "div", 65);
263
+ i0.ɵɵconditionalCreate(9, CollectionsFullViewComponent_Conditional_25_For_2_Conditional_2_Conditional_9_Template, 3, 1, "div", 66);
267
264
  i0.ɵɵelementEnd()();
268
265
  } if (rf & 2) {
269
- const item_r13 = i0.ɵɵnextContext().$implicit;
270
- i0.ɵɵproperty("title", item_r13.description || item_r13.name);
266
+ const item_r14 = i0.ɵɵnextContext().$implicit;
267
+ i0.ɵɵproperty("title", item_r14.description || item_r14.name);
271
268
  i0.ɵɵadvance(3);
272
- i0.ɵɵproperty("ngIf", item_r13.isShared);
269
+ i0.ɵɵconditional(item_r14.isShared ? 3 : -1);
273
270
  i0.ɵɵadvance(3);
274
- i0.ɵɵtextInterpolate(item_r13.name);
271
+ i0.ɵɵtextInterpolate(item_r14.name);
275
272
  i0.ɵɵadvance();
276
- i0.ɵɵproperty("ngIf", item_r13.description);
273
+ i0.ɵɵconditional(item_r14.description ? 7 : -1);
277
274
  i0.ɵɵadvance();
278
- i0.ɵɵproperty("ngIf", item_r13.itemCount !== undefined);
275
+ i0.ɵɵconditional(item_r14.itemCount !== undefined ? 8 : -1);
279
276
  i0.ɵɵadvance();
280
- i0.ɵɵproperty("ngIf", item_r13.isShared && item_r13.owner);
277
+ i0.ɵɵconditional(item_r14.isShared && item_r14.owner ? 9 : -1);
281
278
  } }
282
- function CollectionsFullViewComponent_div_25_div_1_div_3_div_6_Template(rf, ctx) { if (rf & 1) {
283
- i0.ɵɵelementStart(0, "div", 79);
279
+ function CollectionsFullViewComponent_Conditional_25_For_2_Conditional_3_Conditional_6_Template(rf, ctx) { if (rf & 1) {
280
+ i0.ɵɵelementStart(0, "div", 64);
284
281
  i0.ɵɵtext(1);
285
282
  i0.ɵɵelementEnd();
286
283
  } if (rf & 2) {
287
- const item_r13 = i0.ɵɵnextContext(2).$implicit;
284
+ const item_r14 = i0.ɵɵnextContext(2).$implicit;
288
285
  i0.ɵɵadvance();
289
- i0.ɵɵtextInterpolate1(" ", item_r13.description, " ");
286
+ i0.ɵɵtextInterpolate1(" ", item_r14.description, " ");
290
287
  } }
291
- function CollectionsFullViewComponent_div_25_div_1_div_3_span_8_Template(rf, ctx) { if (rf & 1) {
292
- i0.ɵɵelementStart(0, "span", 86);
288
+ function CollectionsFullViewComponent_Conditional_25_For_2_Conditional_3_Conditional_8_Template(rf, ctx) { if (rf & 1) {
289
+ i0.ɵɵelementStart(0, "span", 70);
293
290
  i0.ɵɵtext(1);
294
291
  i0.ɵɵelementEnd();
295
292
  } if (rf & 2) {
296
- const item_r13 = i0.ɵɵnextContext(2).$implicit;
293
+ const item_r14 = i0.ɵɵnextContext(2).$implicit;
297
294
  i0.ɵɵadvance();
298
- i0.ɵɵtextInterpolate1(" v", item_r13.versionNumber, " ");
295
+ i0.ɵɵtextInterpolate1(" v", item_r14.versionNumber, " ");
299
296
  } }
300
- function CollectionsFullViewComponent_div_25_div_1_div_3_span_9_Template(rf, ctx) { if (rf & 1) {
301
- i0.ɵɵelementStart(0, "span", 87);
297
+ function CollectionsFullViewComponent_Conditional_25_For_2_Conditional_3_Conditional_9_Template(rf, ctx) { if (rf & 1) {
298
+ i0.ɵɵelementStart(0, "span", 71);
302
299
  i0.ɵɵtext(1);
303
300
  i0.ɵɵelementEnd();
304
301
  } if (rf & 2) {
305
- const item_r13 = i0.ɵɵnextContext(2).$implicit;
302
+ const item_r14 = i0.ɵɵnextContext(2).$implicit;
306
303
  i0.ɵɵadvance();
307
- i0.ɵɵtextInterpolate1(" ", item_r13.artifactType, " ");
304
+ i0.ɵɵtextInterpolate1(" ", item_r14.artifactType, " ");
308
305
  } }
309
- function CollectionsFullViewComponent_div_25_div_1_div_3_Template(rf, ctx) { if (rf & 1) {
310
- i0.ɵɵelementStart(0, "div", 68)(1, "div", 83);
306
+ function CollectionsFullViewComponent_Conditional_25_For_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
307
+ i0.ɵɵelementStart(0, "div", 57)(1, "div", 69);
311
308
  i0.ɵɵelement(2, "i", 9);
312
309
  i0.ɵɵelementEnd();
313
- i0.ɵɵelementStart(3, "div", 72)(4, "div", 73);
310
+ i0.ɵɵelementStart(3, "div", 62)(4, "div", 63);
314
311
  i0.ɵɵtext(5);
315
312
  i0.ɵɵelementEnd();
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);
313
+ i0.ɵɵconditionalCreate(6, CollectionsFullViewComponent_Conditional_25_For_2_Conditional_3_Conditional_6_Template, 2, 1, "div", 64);
314
+ i0.ɵɵelementStart(7, "div", 65);
315
+ i0.ɵɵconditionalCreate(8, CollectionsFullViewComponent_Conditional_25_For_2_Conditional_3_Conditional_8_Template, 2, 1, "span", 70);
316
+ i0.ɵɵconditionalCreate(9, CollectionsFullViewComponent_Conditional_25_For_2_Conditional_3_Conditional_9_Template, 2, 1, "span", 71);
319
317
  i0.ɵɵelementEnd()()();
320
318
  } if (rf & 2) {
321
- const item_r13 = i0.ɵɵnextContext().$implicit;
322
- i0.ɵɵproperty("title", item_r13.description || item_r13.name);
319
+ const item_r14 = i0.ɵɵnextContext().$implicit;
320
+ i0.ɵɵproperty("title", item_r14.description || item_r14.name);
323
321
  i0.ɵɵadvance(2);
324
- i0.ɵɵproperty("ngClass", item_r13.icon);
322
+ i0.ɵɵproperty("ngClass", item_r14.icon);
325
323
  i0.ɵɵadvance(3);
326
- i0.ɵɵtextInterpolate(item_r13.name);
324
+ i0.ɵɵtextInterpolate(item_r14.name);
327
325
  i0.ɵɵadvance();
328
- i0.ɵɵproperty("ngIf", item_r13.description);
326
+ i0.ɵɵconditional(item_r14.description ? 6 : -1);
329
327
  i0.ɵɵadvance(2);
330
- i0.ɵɵproperty("ngIf", item_r13.versionNumber);
328
+ i0.ɵɵconditional(item_r14.versionNumber ? 8 : -1);
331
329
  i0.ɵɵadvance();
332
- i0.ɵɵproperty("ngIf", item_r13.artifactType);
330
+ i0.ɵɵconditional(item_r14.artifactType ? 9 : -1);
333
331
  } }
334
- function CollectionsFullViewComponent_div_25_div_1_Template(rf, ctx) { if (rf & 1) {
335
- const _r12 = i0.ɵɵgetCurrentView();
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);
332
+ function CollectionsFullViewComponent_Conditional_25_For_2_Template(rf, ctx) { if (rf & 1) {
333
+ const _r13 = i0.ɵɵgetCurrentView();
334
+ i0.ɵɵelementStart(0, "div", 55);
335
+ i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_25_For_2_Template_div_click_0_listener($event) { const item_r14 = i0.ɵɵrestoreView(_r13).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onItemClick(item_r14, $event)); })("dblclick", function CollectionsFullViewComponent_Conditional_25_For_2_Template_div_dblclick_0_listener($event) { const item_r14 = i0.ɵɵrestoreView(_r13).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onItemDoubleClick(item_r14, $event)); })("contextmenu", function CollectionsFullViewComponent_Conditional_25_For_2_Template_div_contextmenu_0_listener($event) { const item_r14 = i0.ɵɵrestoreView(_r13).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onItemContextMenu(item_r14, $event)); });
336
+ i0.ɵɵconditionalCreate(1, CollectionsFullViewComponent_Conditional_25_For_2_Conditional_1_Template, 2, 1, "div", 56);
337
+ i0.ɵɵconditionalCreate(2, CollectionsFullViewComponent_Conditional_25_For_2_Conditional_2_Template, 10, 6, "div", 57);
338
+ i0.ɵɵconditionalCreate(3, CollectionsFullViewComponent_Conditional_25_For_2_Conditional_3_Template, 10, 6, "div", 57);
339
339
  i0.ɵɵelementEnd();
340
340
  } if (rf & 2) {
341
- const item_r13 = ctx.$implicit;
341
+ const item_r14 = ctx.$implicit;
342
342
  const ctx_r2 = i0.ɵɵnextContext(2);
343
- i0.ɵɵclassProp("selected", item_r13.selected)("active", item_r13.type === "artifact" && (item_r13.artifact == null ? null : item_r13.artifact.ID) === ctx_r2.activeArtifactId);
343
+ i0.ɵɵclassProp("selected", item_r14.selected)("active", item_r14.type === "artifact" && (item_r14.artifact == null ? null : item_r14.artifact.ID) === ctx_r2.activeArtifactId);
344
344
  i0.ɵɵadvance();
345
- i0.ɵɵproperty("ngIf", ctx_r2.isSelectMode);
345
+ i0.ɵɵconditional(ctx_r2.isSelectMode ? 1 : -1);
346
346
  i0.ɵɵadvance();
347
- i0.ɵɵproperty("ngIf", item_r13.type === "folder");
347
+ i0.ɵɵconditional(item_r14.type === "folder" ? 2 : -1);
348
348
  i0.ɵɵadvance();
349
- i0.ɵɵproperty("ngIf", item_r13.type === "artifact");
349
+ i0.ɵɵconditional(item_r14.type === "artifact" ? 3 : -1);
350
350
  } }
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);
351
+ function CollectionsFullViewComponent_Conditional_25_Template(rf, ctx) { if (rf & 1) {
352
+ i0.ɵɵelementStart(0, "div", 53);
353
+ i0.ɵɵrepeaterCreate(1, CollectionsFullViewComponent_Conditional_25_For_2_Template, 4, 7, "div", 54, i0.ɵɵrepeaterTrackByIdentity);
354
354
  i0.ɵɵelementEnd();
355
355
  } if (rf & 2) {
356
356
  const ctx_r2 = i0.ɵɵnextContext();
357
357
  i0.ɵɵclassProp("select-mode", ctx_r2.isSelectMode);
358
358
  i0.ɵɵadvance();
359
- i0.ɵɵproperty("ngForOf", ctx_r2.unifiedItems);
359
+ i0.ɵɵrepeater(ctx_r2.unifiedItems);
360
360
  } }
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()); });
361
+ function CollectionsFullViewComponent_Conditional_26_Conditional_4_Template(rf, ctx) { if (rf & 1) {
362
+ const _r17 = i0.ɵɵgetCurrentView();
363
+ i0.ɵɵelementStart(0, "th", 74)(1, "i", 80);
364
+ i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_26_Conditional_4_Template_i_click_1_listener() { i0.ɵɵrestoreView(_r17); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.selectedItems.size === ctx_r2.unifiedItems.length ? ctx_r2.clearSelection() : ctx_r2.selectAll()); });
365
365
  i0.ɵɵelementEnd()();
366
366
  } if (rf & 2) {
367
367
  const ctx_r2 = i0.ɵɵnextContext(2);
368
368
  i0.ɵɵadvance();
369
369
  i0.ɵɵproperty("ngClass", ctx_r2.selectedItems.size === ctx_r2.unifiedItems.length ? "fa-check-square" : "fa-square");
370
370
  } }
371
- function CollectionsFullViewComponent_div_26_i_8_Template(rf, ctx) { if (rf & 1) {
372
- i0.ɵɵelement(0, "i", 32);
371
+ function CollectionsFullViewComponent_Conditional_26_Conditional_8_Template(rf, ctx) { if (rf & 1) {
372
+ i0.ɵɵelement(0, "i", 29);
373
373
  } }
374
- function CollectionsFullViewComponent_div_26_i_9_Template(rf, ctx) { if (rf & 1) {
374
+ function CollectionsFullViewComponent_Conditional_26_Conditional_9_Template(rf, ctx) { if (rf & 1) {
375
375
  i0.ɵɵelement(0, "i", 9);
376
376
  } if (rf & 2) {
377
377
  const ctx_r2 = i0.ɵɵnextContext(2);
378
378
  i0.ɵɵproperty("ngClass", ctx_r2.sortOrder === "asc" ? "fa-sort-up" : "fa-sort-down");
379
379
  } }
380
- function CollectionsFullViewComponent_div_26_i_13_Template(rf, ctx) { if (rf & 1) {
381
- i0.ɵɵelement(0, "i", 32);
380
+ function CollectionsFullViewComponent_Conditional_26_Conditional_13_Template(rf, ctx) { if (rf & 1) {
381
+ i0.ɵɵelement(0, "i", 29);
382
382
  } }
383
- function CollectionsFullViewComponent_div_26_i_14_Template(rf, ctx) { if (rf & 1) {
383
+ function CollectionsFullViewComponent_Conditional_26_Conditional_14_Template(rf, ctx) { if (rf & 1) {
384
384
  i0.ɵɵelement(0, "i", 9);
385
385
  } if (rf & 2) {
386
386
  const ctx_r2 = i0.ɵɵnextContext(2);
387
387
  i0.ɵɵproperty("ngClass", ctx_r2.sortOrder === "asc" ? "fa-sort-up" : "fa-sort-down");
388
388
  } }
389
- function CollectionsFullViewComponent_div_26_i_18_Template(rf, ctx) { if (rf & 1) {
390
- i0.ɵɵelement(0, "i", 32);
389
+ function CollectionsFullViewComponent_Conditional_26_Conditional_18_Template(rf, ctx) { if (rf & 1) {
390
+ i0.ɵɵelement(0, "i", 29);
391
391
  } }
392
- function CollectionsFullViewComponent_div_26_i_19_Template(rf, ctx) { if (rf & 1) {
392
+ function CollectionsFullViewComponent_Conditional_26_Conditional_19_Template(rf, ctx) { if (rf & 1) {
393
393
  i0.ɵɵelement(0, "i", 9);
394
394
  } if (rf & 2) {
395
395
  const ctx_r2 = i0.ɵɵnextContext(2);
396
396
  i0.ɵɵproperty("ngClass", ctx_r2.sortOrder === "asc" ? "fa-sort-up" : "fa-sort-down");
397
397
  } }
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)); });
398
+ function CollectionsFullViewComponent_Conditional_26_For_24_Conditional_1_Template(rf, ctx) { if (rf & 1) {
399
+ const _r20 = i0.ɵɵgetCurrentView();
400
+ i0.ɵɵelementStart(0, "td", 74)(1, "i", 80);
401
+ i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_26_For_24_Conditional_1_Template_i_click_1_listener($event) { i0.ɵɵrestoreView(_r20); const item_r19 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.toggleItemSelection(item_r19, $event)); });
402
402
  i0.ɵɵelementEnd()();
403
403
  } if (rf & 2) {
404
- const item_r18 = i0.ɵɵnextContext().$implicit;
404
+ const item_r19 = i0.ɵɵnextContext().$implicit;
405
405
  i0.ɵɵadvance();
406
- i0.ɵɵproperty("ngClass", item_r18.selected ? "fa-check-circle" : "fa-circle");
406
+ i0.ɵɵproperty("ngClass", item_r19.selected ? "fa-check-circle" : "fa-circle");
407
407
  } }
408
- function CollectionsFullViewComponent_div_26_tr_23_i_7_Template(rf, ctx) { if (rf & 1) {
409
- i0.ɵɵelement(0, "i", 106);
408
+ function CollectionsFullViewComponent_Conditional_26_For_24_Conditional_7_Template(rf, ctx) { if (rf & 1) {
409
+ i0.ɵɵelement(0, "i", 84);
410
410
  } }
411
- function CollectionsFullViewComponent_div_26_tr_23_span_9_Template(rf, ctx) { if (rf & 1) {
411
+ function CollectionsFullViewComponent_Conditional_26_For_24_Conditional_9_Template(rf, ctx) { if (rf & 1) {
412
412
  i0.ɵɵelementStart(0, "span");
413
413
  i0.ɵɵtext(1, "Folder");
414
414
  i0.ɵɵelementEnd();
415
415
  } }
416
- function CollectionsFullViewComponent_div_26_tr_23_span_10_Template(rf, ctx) { if (rf & 1) {
417
- i0.ɵɵelementStart(0, "span", 87);
416
+ function CollectionsFullViewComponent_Conditional_26_For_24_Conditional_10_Template(rf, ctx) { if (rf & 1) {
417
+ i0.ɵɵelementStart(0, "span", 71);
418
418
  i0.ɵɵtext(1);
419
419
  i0.ɵɵelementEnd();
420
420
  } if (rf & 2) {
421
- const item_r18 = i0.ɵɵnextContext().$implicit;
421
+ const item_r19 = i0.ɵɵnextContext().$implicit;
422
422
  i0.ɵɵadvance();
423
- i0.ɵɵtextInterpolate1(" ", item_r18.artifactType, " ");
423
+ i0.ɵɵtextInterpolate1(" ", item_r19.artifactType, " ");
424
424
  } }
425
- function CollectionsFullViewComponent_div_26_tr_23_span_12_Template(rf, ctx) { if (rf & 1) {
425
+ function CollectionsFullViewComponent_Conditional_26_For_24_Conditional_12_Template(rf, ctx) { if (rf & 1) {
426
426
  i0.ɵɵelementStart(0, "span");
427
427
  i0.ɵɵtext(1);
428
428
  i0.ɵɵpipe(2, "date");
429
429
  i0.ɵɵelementEnd();
430
430
  } if (rf & 2) {
431
- const item_r18 = i0.ɵɵnextContext().$implicit;
431
+ const item_r19 = i0.ɵɵnextContext().$implicit;
432
432
  i0.ɵɵadvance();
433
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(2, 1, item_r18.lastModified, "short"), " ");
433
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(2, 1, item_r19.lastModified, "short"), " ");
434
434
  } }
435
- function CollectionsFullViewComponent_div_26_tr_23_span_14_Template(rf, ctx) { if (rf & 1) {
435
+ function CollectionsFullViewComponent_Conditional_26_For_24_Conditional_14_Template(rf, ctx) { if (rf & 1) {
436
436
  i0.ɵɵelementStart(0, "span");
437
437
  i0.ɵɵtext(1);
438
438
  i0.ɵɵelementEnd();
439
439
  } if (rf & 2) {
440
- const item_r18 = i0.ɵɵnextContext().$implicit;
440
+ const item_r19 = i0.ɵɵnextContext().$implicit;
441
441
  i0.ɵɵadvance();
442
- i0.ɵɵtextInterpolate(item_r18.owner);
442
+ i0.ɵɵtextInterpolate(item_r19.owner);
443
443
  } }
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);
444
+ function CollectionsFullViewComponent_Conditional_26_For_24_Template(rf, ctx) { if (rf & 1) {
445
+ const _r18 = i0.ɵɵgetCurrentView();
446
+ i0.ɵɵelementStart(0, "tr", 81);
447
+ i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_26_For_24_Template_tr_click_0_listener($event) { const item_r19 = i0.ɵɵrestoreView(_r18).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onItemClick(item_r19, $event)); })("dblclick", function CollectionsFullViewComponent_Conditional_26_For_24_Template_tr_dblclick_0_listener($event) { const item_r19 = i0.ɵɵrestoreView(_r18).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onItemDoubleClick(item_r19, $event)); })("contextmenu", function CollectionsFullViewComponent_Conditional_26_For_24_Template_tr_contextmenu_0_listener($event) { const item_r19 = i0.ɵɵrestoreView(_r18).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onItemContextMenu(item_r19, $event)); });
448
+ i0.ɵɵconditionalCreate(1, CollectionsFullViewComponent_Conditional_26_For_24_Conditional_1_Template, 2, 1, "td", 74);
449
+ i0.ɵɵelementStart(2, "td", 82)(3, "div", 83);
450
450
  i0.ɵɵelement(4, "i", 9);
451
451
  i0.ɵɵelementStart(5, "span");
452
452
  i0.ɵɵtext(6);
453
453
  i0.ɵɵelementEnd();
454
- i0.ɵɵtemplate(7, CollectionsFullViewComponent_div_26_tr_23_i_7_Template, 1, 0, "i", 103);
454
+ i0.ɵɵconditionalCreate(7, CollectionsFullViewComponent_Conditional_26_For_24_Conditional_7_Template, 1, 0, "i", 84);
455
455
  i0.ɵɵelementEnd()();
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);
456
+ i0.ɵɵelementStart(8, "td", 85);
457
+ i0.ɵɵconditionalCreate(9, CollectionsFullViewComponent_Conditional_26_For_24_Conditional_9_Template, 2, 0, "span");
458
+ i0.ɵɵconditionalCreate(10, CollectionsFullViewComponent_Conditional_26_For_24_Conditional_10_Template, 2, 1, "span", 71);
458
459
  i0.ɵɵelementEnd();
459
- i0.ɵɵelementStart(11, "td", 105);
460
- i0.ɵɵtemplate(12, CollectionsFullViewComponent_div_26_tr_23_span_12_Template, 3, 4, "span", 60);
460
+ i0.ɵɵelementStart(11, "td", 86);
461
+ i0.ɵɵconditionalCreate(12, CollectionsFullViewComponent_Conditional_26_For_24_Conditional_12_Template, 3, 4, "span");
461
462
  i0.ɵɵelementEnd();
462
- i0.ɵɵelementStart(13, "td", 96);
463
- i0.ɵɵtemplate(14, CollectionsFullViewComponent_div_26_tr_23_span_14_Template, 2, 1, "span", 60);
463
+ i0.ɵɵelementStart(13, "td", 78);
464
+ i0.ɵɵconditionalCreate(14, CollectionsFullViewComponent_Conditional_26_For_24_Conditional_14_Template, 2, 1, "span");
464
465
  i0.ɵɵelementEnd()();
465
466
  } if (rf & 2) {
466
- const item_r18 = ctx.$implicit;
467
+ const item_r19 = ctx.$implicit;
467
468
  const ctx_r2 = i0.ɵɵnextContext(2);
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.ɵɵclassProp("selected", item_r19.selected)("active", item_r19.type === "artifact" && (item_r19.artifact == null ? null : item_r19.artifact.ID) === ctx_r2.activeArtifactId);
469
470
  i0.ɵɵadvance();
470
- i0.ɵɵproperty("ngIf", ctx_r2.isSelectMode);
471
+ i0.ɵɵconditional(ctx_r2.isSelectMode ? 1 : -1);
471
472
  i0.ɵɵadvance(3);
472
- i0.ɵɵproperty("ngClass", item_r18.type === "folder" ? "fa-folder" : item_r18.icon);
473
+ i0.ɵɵproperty("ngClass", item_r19.type === "folder" ? "fa-folder" : item_r19.icon);
473
474
  i0.ɵɵadvance(2);
474
- i0.ɵɵtextInterpolate(item_r18.name);
475
+ i0.ɵɵtextInterpolate(item_r19.name);
475
476
  i0.ɵɵadvance();
476
- i0.ɵɵproperty("ngIf", item_r18.isShared);
477
+ i0.ɵɵconditional(item_r19.isShared ? 7 : -1);
477
478
  i0.ɵɵadvance(2);
478
- i0.ɵɵproperty("ngIf", item_r18.type === "folder");
479
+ i0.ɵɵconditional(item_r19.type === "folder" ? 9 : -1);
479
480
  i0.ɵɵadvance();
480
- i0.ɵɵproperty("ngIf", item_r18.type === "artifact");
481
+ i0.ɵɵconditional(item_r19.type === "artifact" ? 10 : -1);
481
482
  i0.ɵɵadvance(2);
482
- i0.ɵɵproperty("ngIf", item_r18.lastModified);
483
+ i0.ɵɵconditional(item_r19.lastModified ? 12 : -1);
483
484
  i0.ɵɵadvance(2);
484
- i0.ɵɵproperty("ngIf", item_r18.owner);
485
+ i0.ɵɵconditional(item_r19.owner ? 14 : -1);
485
486
  } }
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")); });
487
+ function CollectionsFullViewComponent_Conditional_26_Template(rf, ctx) { if (rf & 1) {
488
+ const _r16 = i0.ɵɵgetCurrentView();
489
+ i0.ɵɵelementStart(0, "div", 72)(1, "table", 73)(2, "thead")(3, "tr");
490
+ i0.ɵɵconditionalCreate(4, CollectionsFullViewComponent_Conditional_26_Conditional_4_Template, 2, 1, "th", 74);
491
+ i0.ɵɵelementStart(5, "th", 75);
492
+ i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_26_Template_th_click_5_listener() { i0.ɵɵrestoreView(_r16); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.setSortBy("name")); });
492
493
  i0.ɵɵelementStart(6, "span");
493
494
  i0.ɵɵtext(7, "Name");
494
495
  i0.ɵɵelementEnd();
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);
496
+ i0.ɵɵconditionalCreate(8, CollectionsFullViewComponent_Conditional_26_Conditional_8_Template, 1, 0, "i", 29);
497
+ i0.ɵɵconditionalCreate(9, CollectionsFullViewComponent_Conditional_26_Conditional_9_Template, 1, 1, "i", 9);
496
498
  i0.ɵɵelementEnd();
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(10, "th", 76);
500
+ i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_26_Template_th_click_10_listener() { i0.ɵɵrestoreView(_r16); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.setSortBy("type")); });
499
501
  i0.ɵɵelementStart(11, "span");
500
502
  i0.ɵɵtext(12, "Type");
501
503
  i0.ɵɵelementEnd();
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);
504
+ i0.ɵɵconditionalCreate(13, CollectionsFullViewComponent_Conditional_26_Conditional_13_Template, 1, 0, "i", 29);
505
+ i0.ɵɵconditionalCreate(14, CollectionsFullViewComponent_Conditional_26_Conditional_14_Template, 1, 1, "i", 9);
503
506
  i0.ɵɵelementEnd();
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")); });
507
+ i0.ɵɵelementStart(15, "th", 77);
508
+ i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_26_Template_th_click_15_listener() { i0.ɵɵrestoreView(_r16); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.setSortBy("date")); });
506
509
  i0.ɵɵelementStart(16, "span");
507
510
  i0.ɵɵtext(17, "Modified");
508
511
  i0.ɵɵelementEnd();
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);
512
+ i0.ɵɵconditionalCreate(18, CollectionsFullViewComponent_Conditional_26_Conditional_18_Template, 1, 0, "i", 29);
513
+ i0.ɵɵconditionalCreate(19, CollectionsFullViewComponent_Conditional_26_Conditional_19_Template, 1, 1, "i", 9);
510
514
  i0.ɵɵelementEnd();
511
- i0.ɵɵelementStart(20, "th", 96);
515
+ i0.ɵɵelementStart(20, "th", 78);
512
516
  i0.ɵɵtext(21, "Owner");
513
517
  i0.ɵɵelementEnd()()();
514
518
  i0.ɵɵelementStart(22, "tbody");
515
- i0.ɵɵtemplate(23, CollectionsFullViewComponent_div_26_tr_23_Template, 15, 12, "tr", 97);
519
+ i0.ɵɵrepeaterCreate(23, CollectionsFullViewComponent_Conditional_26_For_24_Template, 15, 12, "tr", 79, i0.ɵɵrepeaterTrackByIdentity);
516
520
  i0.ɵɵelementEnd()()();
517
521
  } if (rf & 2) {
518
522
  const ctx_r2 = i0.ɵɵnextContext();
519
523
  i0.ɵɵclassProp("select-mode", ctx_r2.isSelectMode);
520
524
  i0.ɵɵadvance(4);
521
- i0.ɵɵproperty("ngIf", ctx_r2.isSelectMode);
525
+ i0.ɵɵconditional(ctx_r2.isSelectMode ? 4 : -1);
522
526
  i0.ɵɵadvance(4);
523
- i0.ɵɵproperty("ngIf", ctx_r2.sortBy !== "name");
527
+ i0.ɵɵconditional(ctx_r2.sortBy !== "name" ? 8 : -1);
524
528
  i0.ɵɵadvance();
525
- i0.ɵɵproperty("ngIf", ctx_r2.sortBy === "name");
529
+ i0.ɵɵconditional(ctx_r2.sortBy === "name" ? 9 : -1);
526
530
  i0.ɵɵadvance(4);
527
- i0.ɵɵproperty("ngIf", ctx_r2.sortBy !== "type");
531
+ i0.ɵɵconditional(ctx_r2.sortBy !== "type" ? 13 : -1);
528
532
  i0.ɵɵadvance();
529
- i0.ɵɵproperty("ngIf", ctx_r2.sortBy === "type");
533
+ i0.ɵɵconditional(ctx_r2.sortBy === "type" ? 14 : -1);
530
534
  i0.ɵɵadvance(4);
531
- i0.ɵɵproperty("ngIf", ctx_r2.sortBy !== "date");
535
+ i0.ɵɵconditional(ctx_r2.sortBy !== "date" ? 18 : -1);
532
536
  i0.ɵɵadvance();
533
- i0.ɵɵproperty("ngIf", ctx_r2.sortBy === "date");
537
+ i0.ɵɵconditional(ctx_r2.sortBy === "date" ? 19 : -1);
534
538
  i0.ɵɵadvance(4);
535
- i0.ɵɵproperty("ngForOf", ctx_r2.unifiedItems);
539
+ i0.ɵɵrepeater(ctx_r2.unifiedItems);
536
540
  } }
537
541
  /**
538
542
  * Full-panel Collections view component
@@ -544,6 +548,7 @@ export class CollectionsFullViewComponent {
544
548
  collectionState;
545
549
  permissionService;
546
550
  artifactIconService;
551
+ cdr;
547
552
  environmentId;
548
553
  currentUser;
549
554
  collectionNavigated = new EventEmitter();
@@ -574,12 +579,13 @@ export class CollectionsFullViewComponent {
574
579
  isSelectMode = false; // Toggle for selection mode
575
580
  destroy$ = new Subject();
576
581
  isNavigatingProgrammatically = false;
577
- constructor(dialogService, artifactState, collectionState, permissionService, artifactIconService) {
582
+ constructor(dialogService, artifactState, collectionState, permissionService, artifactIconService, cdr) {
578
583
  this.dialogService = dialogService;
579
584
  this.artifactState = artifactState;
580
585
  this.collectionState = collectionState;
581
586
  this.permissionService = permissionService;
582
587
  this.artifactIconService = artifactIconService;
588
+ this.cdr = cdr;
583
589
  }
584
590
  ngOnInit() {
585
591
  // Subscribe to collection state changes for deep linking FIRST
@@ -671,6 +677,7 @@ export class CollectionsFullViewComponent {
671
677
  }
672
678
  finally {
673
679
  this.isLoading = false;
680
+ this.cdr.detectChanges();
674
681
  }
675
682
  }
676
683
  async loadCollections() {
@@ -1435,8 +1442,8 @@ export class CollectionsFullViewComponent {
1435
1442
  // Future enhancement: implement custom context menu with actions
1436
1443
  // event.preventDefault();
1437
1444
  }
1438
- static ɵfac = function CollectionsFullViewComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || CollectionsFullViewComponent)(i0.ɵɵdirectiveInject(i1.DialogService), i0.ɵɵdirectiveInject(i2.ArtifactStateService), i0.ɵɵdirectiveInject(i3.CollectionStateService), i0.ɵɵdirectiveInject(i4.CollectionPermissionService), i0.ɵɵdirectiveInject(i5.ArtifactIconService)); };
1439
- 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) {
1445
+ static ɵfac = function CollectionsFullViewComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || CollectionsFullViewComponent)(i0.ɵɵdirectiveInject(i1.DialogService), i0.ɵɵdirectiveInject(i2.ArtifactStateService), i0.ɵɵdirectiveInject(i3.CollectionStateService), i0.ɵɵdirectiveInject(i4.CollectionPermissionService), i0.ɵɵdirectiveInject(i5.ArtifactIconService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
1446
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CollectionsFullViewComponent, selectors: [["mj-collections-full-view"]], inputs: { environmentId: "environmentId", currentUser: "currentUser" }, outputs: { collectionNavigated: "collectionNavigated" }, standalone: false, 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"], [1, "breadcrumb-path"], [1, "collections-actions"], [1, "btn-icon", 3, "click", "title"], [1, "fas", 3, "ngClass"], [1, "fas", "fa-check-square"], [1, "dropdown-container"], [1, "search-container"], [1, "fas", "fa-search"], ["type", "text", "placeholder", "Search...", 1, "search-input", 3, "ngModelChange", "ngModel"], ["title", "Clear search", 1, "search-clear"], ["title", "Refresh", 1, "btn-icon", 3, "click"], [1, "fas", "fa-sync"], [1, "selection-toolbar"], [1, "collections-content"], [1, "loading-state"], [1, "empty-state"], [1, "unified-grid", 3, "select-mode"], [1, "unified-list", 3, "select-mode"], [3, "saved", "cancelled", "isOpen", "collection", "parentCollection", "environmentId", "currentUser"], [3, "saved", "cancelled", "isOpen", "collectionId", "environmentId", "currentUser"], [3, "saved", "cancelled", "isOpen", "collection", "currentUser", "currentUserPermissions"], [1, "fas", "fa-chevron-right", "breadcrumb-separator"], ["title", "Sort options", 1, "btn-icon", 3, "click"], [1, "fas", "fa-sort"], [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"], [1, "dropdown-menu", "dropdown-menu-right"], [1, "fas", "fa-folder-plus"], [1, "dropdown-item", 3, "click", "disabled"], [1, "fas", "fa-file-plus"], [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"], ["text", "Loading collections...", "size", "large"], [1, "fas", "fa-folder-open"], [1, "btn-primary"], [1, "unified-grid"], [1, "grid-item", 3, "selected", "active"], [1, "grid-item", 3, "click", "dblclick", "contextmenu"], [1, "item-checkbox"], [1, "grid-item-content", 3, "title"], [1, "item-checkbox", 3, "click"], [1, "grid-icon", "folder-icon"], [1, "fas", "fa-folder"], ["title", "Shared", 1, "shared-badge"], [1, "grid-info"], [1, "grid-name"], [1, "grid-description"], [1, "grid-meta"], [1, "grid-owner"], [1, "fas", "fa-users"], [1, "fas", "fa-user"], [1, "grid-icon", "artifact-icon"], [1, "version-badge"], [1, "artifact-type-badge"], [1, "unified-list"], [1, "list-table"], [1, "col-checkbox"], [1, "col-name", "sortable", 3, "click"], [1, "col-type", "sortable", 3, "click"], [1, "col-modified", "sortable", 3, "click"], [1, "col-owner"], [1, "list-item", 3, "selected", "active"], [1, "fas", 3, "click", "ngClass"], [1, "list-item", 3, "click", "dblclick", "contextmenu"], [1, "col-name"], [1, "list-name-cell"], ["title", "Shared", 1, "fas", "fa-users", "shared-indicator"], [1, "col-type"], [1, "col-modified"]], template: function CollectionsFullViewComponent_Template(rf, ctx) { if (rf & 1) {
1440
1447
  i0.ɵɵelementStart(0, "div", 0);
1441
1448
  i0.ɵɵlistener("keydown", function CollectionsFullViewComponent_Template_div_keydown_0_listener($event) { return ctx.handleKeyboardShortcut($event); });
1442
1449
  i0.ɵɵelementStart(1, "div", 1)(2, "div", 2)(3, "div", 3);
@@ -1445,7 +1452,7 @@ export class CollectionsFullViewComponent {
1445
1452
  i0.ɵɵlistener("click", function CollectionsFullViewComponent_Template_a_click_5_listener() { return ctx.navigateToRoot(); });
1446
1453
  i0.ɵɵtext(6, "Collections");
1447
1454
  i0.ɵɵelementEnd()();
1448
- i0.ɵɵtemplate(7, CollectionsFullViewComponent_span_7_Template, 2, 1, "span", 6);
1455
+ i0.ɵɵconditionalCreate(7, CollectionsFullViewComponent_Conditional_7_Template, 3, 0, "span", 6);
1449
1456
  i0.ɵɵelementEnd();
1450
1457
  i0.ɵɵelementStart(8, "div", 7)(9, "button", 8);
1451
1458
  i0.ɵɵlistener("click", function CollectionsFullViewComponent_Template_button_click_9_listener() { return ctx.toggleViewMode(); });
@@ -1455,23 +1462,26 @@ export class CollectionsFullViewComponent {
1455
1462
  i0.ɵɵlistener("click", function CollectionsFullViewComponent_Template_button_click_11_listener() { return ctx.toggleSelectMode(); });
1456
1463
  i0.ɵɵelement(12, "i", 10);
1457
1464
  i0.ɵɵelementEnd();
1458
- i0.ɵɵtemplate(13, CollectionsFullViewComponent_div_13_Template, 4, 1, "div", 11);
1465
+ i0.ɵɵconditionalCreate(13, CollectionsFullViewComponent_Conditional_13_Template, 4, 1, "div", 11);
1459
1466
  i0.ɵɵelementStart(14, "div", 12);
1460
1467
  i0.ɵɵelement(15, "i", 13);
1461
1468
  i0.ɵɵelementStart(16, "input", 14);
1462
1469
  i0.ɵɵtwoWayListener("ngModelChange", function CollectionsFullViewComponent_Template_input_ngModelChange_16_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.searchQuery, $event) || (ctx.searchQuery = $event); return $event; });
1463
1470
  i0.ɵɵlistener("ngModelChange", function CollectionsFullViewComponent_Template_input_ngModelChange_16_listener($event) { return ctx.onSearchChange($event); });
1464
1471
  i0.ɵɵelementEnd();
1465
- i0.ɵɵtemplate(17, CollectionsFullViewComponent_button_17_Template, 2, 0, "button", 15);
1472
+ i0.ɵɵconditionalCreate(17, CollectionsFullViewComponent_Conditional_17_Template, 2, 0, "button", 15);
1466
1473
  i0.ɵɵelementEnd();
1467
- i0.ɵɵtemplate(18, CollectionsFullViewComponent_div_18_Template, 7, 1, "div", 11);
1474
+ i0.ɵɵconditionalCreate(18, CollectionsFullViewComponent_Conditional_18_Template, 7, 1, "div", 11);
1468
1475
  i0.ɵɵelementStart(19, "button", 16);
1469
1476
  i0.ɵɵlistener("click", function CollectionsFullViewComponent_Template_button_click_19_listener() { return ctx.refresh(); });
1470
1477
  i0.ɵɵelement(20, "i", 17);
1471
1478
  i0.ɵɵelementEnd()()();
1472
- i0.ɵɵtemplate(21, CollectionsFullViewComponent_div_21_Template, 11, 1, "div", 18);
1479
+ i0.ɵɵconditionalCreate(21, CollectionsFullViewComponent_Conditional_21_Template, 11, 1, "div", 18);
1473
1480
  i0.ɵɵelementStart(22, "div", 19);
1474
- 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);
1481
+ i0.ɵɵconditionalCreate(23, CollectionsFullViewComponent_Conditional_23_Template, 2, 0, "div", 20);
1482
+ i0.ɵɵconditionalCreate(24, CollectionsFullViewComponent_Conditional_24_Template, 5, 3, "div", 21);
1483
+ i0.ɵɵconditionalCreate(25, CollectionsFullViewComponent_Conditional_25_Template, 3, 2, "div", 22);
1484
+ i0.ɵɵconditionalCreate(26, CollectionsFullViewComponent_Conditional_26_Template, 25, 9, "div", 23);
1475
1485
  i0.ɵɵelementEnd()();
1476
1486
  i0.ɵɵelementStart(27, "mj-collection-form-modal", 24);
1477
1487
  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(); });
@@ -1484,7 +1494,7 @@ export class CollectionsFullViewComponent {
1484
1494
  i0.ɵɵelementEnd();
1485
1495
  } if (rf & 2) {
1486
1496
  i0.ɵɵadvance(7);
1487
- i0.ɵɵproperty("ngIf", ctx.breadcrumbs.length > 0);
1497
+ i0.ɵɵconditional(ctx.breadcrumbs.length > 0 ? 7 : -1);
1488
1498
  i0.ɵɵadvance(2);
1489
1499
  i0.ɵɵproperty("title", ctx.viewMode === "grid" ? "Switch to List View" : "Switch to Grid View");
1490
1500
  i0.ɵɵadvance();
@@ -1493,34 +1503,34 @@ export class CollectionsFullViewComponent {
1493
1503
  i0.ɵɵclassProp("active", ctx.isSelectMode);
1494
1504
  i0.ɵɵproperty("title", ctx.isSelectMode ? "Exit Select Mode" : "Select Items");
1495
1505
  i0.ɵɵadvance(2);
1496
- i0.ɵɵproperty("ngIf", ctx.viewMode === "grid");
1506
+ i0.ɵɵconditional(ctx.viewMode === "grid" ? 13 : -1);
1497
1507
  i0.ɵɵadvance(3);
1498
1508
  i0.ɵɵtwoWayProperty("ngModel", ctx.searchQuery);
1499
1509
  i0.ɵɵadvance();
1500
- i0.ɵɵproperty("ngIf", ctx.searchQuery);
1510
+ i0.ɵɵconditional(ctx.searchQuery ? 17 : -1);
1501
1511
  i0.ɵɵadvance();
1502
- i0.ɵɵproperty("ngIf", ctx.canEditCurrent());
1512
+ i0.ɵɵconditional(ctx.canEditCurrent() ? 18 : -1);
1503
1513
  i0.ɵɵadvance(3);
1504
- i0.ɵɵproperty("ngIf", ctx.selectedItems.size > 0);
1514
+ i0.ɵɵconditional(ctx.selectedItems.size > 0 ? 21 : -1);
1505
1515
  i0.ɵɵadvance(2);
1506
- i0.ɵɵproperty("ngIf", ctx.isLoading);
1516
+ i0.ɵɵconditional(ctx.isLoading ? 23 : -1);
1507
1517
  i0.ɵɵadvance();
1508
- i0.ɵɵproperty("ngIf", !ctx.isLoading && ctx.unifiedItems.length === 0);
1518
+ i0.ɵɵconditional(!ctx.isLoading && ctx.unifiedItems.length === 0 ? 24 : -1);
1509
1519
  i0.ɵɵadvance();
1510
- i0.ɵɵproperty("ngIf", !ctx.isLoading && ctx.unifiedItems.length > 0 && ctx.viewMode === "grid");
1520
+ i0.ɵɵconditional(!ctx.isLoading && ctx.unifiedItems.length > 0 && ctx.viewMode === "grid" ? 25 : -1);
1511
1521
  i0.ɵɵadvance();
1512
- i0.ɵɵproperty("ngIf", !ctx.isLoading && ctx.unifiedItems.length > 0 && ctx.viewMode === "list");
1522
+ i0.ɵɵconditional(!ctx.isLoading && ctx.unifiedItems.length > 0 && ctx.viewMode === "list" ? 26 : -1);
1513
1523
  i0.ɵɵadvance();
1514
1524
  i0.ɵɵproperty("isOpen", ctx.isFormModalOpen)("collection", ctx.editingCollection)("parentCollection", ctx.currentCollection || undefined)("environmentId", ctx.environmentId)("currentUser", ctx.currentUser);
1515
1525
  i0.ɵɵadvance();
1516
1526
  i0.ɵɵproperty("isOpen", ctx.isArtifactModalOpen)("collectionId", ctx.currentCollectionId || "")("environmentId", ctx.environmentId)("currentUser", ctx.currentUser);
1517
1527
  i0.ɵɵadvance();
1518
1528
  i0.ɵɵproperty("isOpen", ctx.isShareModalOpen)("collection", ctx.sharingCollection)("currentUser", ctx.currentUser)("currentUserPermissions", ctx.sharingCollection ? ctx.userPermissions.get(ctx.sharingCollection.ID) || null : null);
1519
- } }, 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 }"] });
1529
+ } }, dependencies: [i6.NgClass, 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 }"] });
1520
1530
  }
1521
1531
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CollectionsFullViewComponent, [{
1522
1532
  type: Component,
1523
- args: [{ selector: 'mj-collections-full-view', template: `
1533
+ args: [{ standalone: false, selector: 'mj-collections-full-view', template: `
1524
1534
  <div class="collections-view" (keydown)="handleKeyboardShortcut($event)">
1525
1535
  <!-- Mac Finder-style Header -->
1526
1536
  <div class="collections-header">
@@ -1530,314 +1540,374 @@ export class CollectionsFullViewComponent {
1530
1540
  <i class="fas fa-home"></i>
1531
1541
  <a class="breadcrumb-link" (click)="navigateToRoot()">Collections</a>
1532
1542
  </div>
1533
- <span class="breadcrumb-path" *ngIf="breadcrumbs.length > 0">
1534
- <ng-container *ngFor="let crumb of breadcrumbs; let last = last">
1535
- <i class="fas fa-chevron-right breadcrumb-separator"></i>
1536
- <a class="breadcrumb-link"
1537
- [class.active]="last"
1538
- (click)="navigateTo(crumb)">
1539
- {{ crumb.name }}
1540
- </a>
1541
- </ng-container>
1542
- </span>
1543
+ @if (breadcrumbs.length > 0) {
1544
+ <span class="breadcrumb-path">
1545
+ @for (crumb of breadcrumbs; track crumb; let last = $last) {
1546
+ <i class="fas fa-chevron-right breadcrumb-separator"></i>
1547
+ <a class="breadcrumb-link"
1548
+ [class.active]="last"
1549
+ (click)="navigateTo(crumb)">
1550
+ {{ crumb.name }}
1551
+ </a>
1552
+ }
1553
+ </span>
1554
+ }
1543
1555
  </div>
1544
-
1556
+
1545
1557
  <!-- Action buttons -->
1546
1558
  <div class="collections-actions">
1547
1559
  <!-- View mode toggle -->
1548
1560
  <button class="btn-icon"
1549
- (click)="toggleViewMode()"
1550
- [title]="viewMode === 'grid' ? 'Switch to List View' : 'Switch to Grid View'">
1561
+ (click)="toggleViewMode()"
1562
+ [title]="viewMode === 'grid' ? 'Switch to List View' : 'Switch to Grid View'">
1551
1563
  <i class="fas" [ngClass]="viewMode === 'grid' ? 'fa-list' : 'fa-th'"></i>
1552
1564
  </button>
1553
-
1565
+
1554
1566
  <!-- Select mode toggle -->
1555
1567
  <button class="btn-icon"
1556
- [class.active]="isSelectMode"
1557
- (click)="toggleSelectMode()"
1558
- [title]="isSelectMode ? 'Exit Select Mode' : 'Select Items'">
1568
+ [class.active]="isSelectMode"
1569
+ (click)="toggleSelectMode()"
1570
+ [title]="isSelectMode ? 'Exit Select Mode' : 'Select Items'">
1559
1571
  <i class="fas fa-check-square"></i>
1560
1572
  </button>
1561
-
1573
+
1562
1574
  <!-- Sort dropdown (grid view only) -->
1563
- <div class="dropdown-container" *ngIf="viewMode === 'grid'">
1564
- <button class="btn-icon"
1565
- (click)="showSortDropdown = !showSortDropdown"
1566
- title="Sort options">
1567
- <i class="fas fa-sort"></i>
1568
- </button>
1569
- <div class="dropdown-menu" *ngIf="showSortDropdown">
1570
- <button class="dropdown-item"
1571
- [class.active]="sortBy === 'name'"
1572
- (click)="setSortBy('name')">
1573
- <i class="fas fa-sort-alpha-down"></i>
1574
- <span>Sort by Name</span>
1575
- </button>
1576
- <button class="dropdown-item"
1577
- [class.active]="sortBy === 'date'"
1578
- (click)="setSortBy('date')">
1579
- <i class="fas fa-calendar"></i>
1580
- <span>Sort by Date</span>
1581
- </button>
1582
- <button class="dropdown-item"
1583
- [class.active]="sortBy === 'type'"
1584
- (click)="setSortBy('type')">
1585
- <i class="fas fa-tag"></i>
1586
- <span>Sort by Type</span>
1575
+ @if (viewMode === 'grid') {
1576
+ <div class="dropdown-container">
1577
+ <button class="btn-icon"
1578
+ (click)="showSortDropdown = !showSortDropdown"
1579
+ title="Sort options">
1580
+ <i class="fas fa-sort"></i>
1587
1581
  </button>
1582
+ @if (showSortDropdown) {
1583
+ <div class="dropdown-menu">
1584
+ <button class="dropdown-item"
1585
+ [class.active]="sortBy === 'name'"
1586
+ (click)="setSortBy('name')">
1587
+ <i class="fas fa-sort-alpha-down"></i>
1588
+ <span>Sort by Name</span>
1589
+ </button>
1590
+ <button class="dropdown-item"
1591
+ [class.active]="sortBy === 'date'"
1592
+ (click)="setSortBy('date')">
1593
+ <i class="fas fa-calendar"></i>
1594
+ <span>Sort by Date</span>
1595
+ </button>
1596
+ <button class="dropdown-item"
1597
+ [class.active]="sortBy === 'type'"
1598
+ (click)="setSortBy('type')">
1599
+ <i class="fas fa-tag"></i>
1600
+ <span>Sort by Type</span>
1601
+ </button>
1602
+ </div>
1603
+ }
1588
1604
  </div>
1589
- </div>
1590
-
1605
+ }
1606
+
1591
1607
  <!-- Search -->
1592
1608
  <div class="search-container">
1593
1609
  <i class="fas fa-search"></i>
1594
1610
  <input type="text"
1595
- class="search-input"
1596
- placeholder="Search..."
1597
- [(ngModel)]="searchQuery"
1598
- (ngModelChange)="onSearchChange($event)">
1599
- <button class="search-clear"
1600
- *ngIf="searchQuery"
1601
- (click)="searchQuery = ''; onSearchChange('')"
1602
- title="Clear search">
1603
- <i class="fas fa-times"></i>
1604
- </button>
1611
+ class="search-input"
1612
+ placeholder="Search..."
1613
+ [(ngModel)]="searchQuery"
1614
+ (ngModelChange)="onSearchChange($event)">
1615
+ @if (searchQuery) {
1616
+ <button class="search-clear"
1617
+ (click)="searchQuery = ''; onSearchChange('')"
1618
+ title="Clear search">
1619
+ <i class="fas fa-times"></i>
1620
+ </button>
1621
+ }
1605
1622
  </div>
1606
-
1623
+
1607
1624
  <!-- New dropdown -->
1608
- <div class="dropdown-container" *ngIf="canEditCurrent()">
1609
- <button class="btn-primary"
1610
- (click)="showNewDropdown = !showNewDropdown">
1611
- <i class="fas fa-plus"></i>
1612
- <span>New</span>
1613
- <i class="fas fa-chevron-down"></i>
1614
- </button>
1615
- <div class="dropdown-menu dropdown-menu-right" *ngIf="showNewDropdown">
1616
- <button class="dropdown-item" (click)="createCollection()">
1617
- <i class="fas fa-folder-plus"></i>
1618
- <span>New Collection</span>
1619
- </button>
1620
- <button class="dropdown-item"
1621
- (click)="addArtifact()"
1622
- [disabled]="!currentCollectionId">
1623
- <i class="fas fa-file-plus"></i>
1624
- <span>New Artifact</span>
1625
+ @if (canEditCurrent()) {
1626
+ <div class="dropdown-container">
1627
+ <button class="btn-primary"
1628
+ (click)="showNewDropdown = !showNewDropdown">
1629
+ <i class="fas fa-plus"></i>
1630
+ <span>New</span>
1631
+ <i class="fas fa-chevron-down"></i>
1625
1632
  </button>
1633
+ @if (showNewDropdown) {
1634
+ <div class="dropdown-menu dropdown-menu-right">
1635
+ <button class="dropdown-item" (click)="createCollection()">
1636
+ <i class="fas fa-folder-plus"></i>
1637
+ <span>New Collection</span>
1638
+ </button>
1639
+ <button class="dropdown-item"
1640
+ (click)="addArtifact()"
1641
+ [disabled]="!currentCollectionId">
1642
+ <i class="fas fa-file-plus"></i>
1643
+ <span>New Artifact</span>
1644
+ </button>
1645
+ </div>
1646
+ }
1626
1647
  </div>
1627
- </div>
1628
-
1648
+ }
1649
+
1629
1650
  <!-- Refresh button -->
1630
1651
  <button class="btn-icon" (click)="refresh()" title="Refresh">
1631
1652
  <i class="fas fa-sync"></i>
1632
1653
  </button>
1633
1654
  </div>
1634
1655
  </div>
1635
-
1656
+
1636
1657
  <!-- Multi-select toolbar (appears when items selected) -->
1637
- <div class="selection-toolbar" *ngIf="selectedItems.size > 0">
1638
- <div class="selection-info">
1639
- <span class="selection-count">{{ selectedItems.size }} selected</span>
1640
- </div>
1641
- <div class="selection-actions">
1642
- <button class="btn-toolbar" (click)="clearSelection()">
1643
- <i class="fas fa-times"></i>
1644
- Clear Selection
1645
- </button>
1646
- <button class="btn-toolbar btn-danger" (click)="deleteSelected()">
1647
- <i class="fas fa-trash"></i>
1648
- Delete Selected
1649
- </button>
1658
+ @if (selectedItems.size > 0) {
1659
+ <div class="selection-toolbar">
1660
+ <div class="selection-info">
1661
+ <span class="selection-count">{{ selectedItems.size }} selected</span>
1662
+ </div>
1663
+ <div class="selection-actions">
1664
+ <button class="btn-toolbar" (click)="clearSelection()">
1665
+ <i class="fas fa-times"></i>
1666
+ Clear Selection
1667
+ </button>
1668
+ <button class="btn-toolbar btn-danger" (click)="deleteSelected()">
1669
+ <i class="fas fa-trash"></i>
1670
+ Delete Selected
1671
+ </button>
1672
+ </div>
1650
1673
  </div>
1651
- </div>
1652
-
1674
+ }
1675
+
1653
1676
  <!-- Content area -->
1654
1677
  <div class="collections-content">
1655
1678
  <!-- Loading state -->
1656
- <div *ngIf="isLoading" class="loading-state">
1657
- <mj-loading text="Loading collections..." size="large"></mj-loading>
1658
- </div>
1659
-
1679
+ @if (isLoading) {
1680
+ <div class="loading-state">
1681
+ <mj-loading text="Loading collections..." size="large"></mj-loading>
1682
+ </div>
1683
+ }
1684
+
1660
1685
  <!-- Empty state -->
1661
- <div *ngIf="!isLoading && unifiedItems.length === 0" class="empty-state">
1662
- <i class="fas fa-folder-open"></i>
1663
-
1664
- <!-- Search returned no results -->
1665
- <ng-container *ngIf="searchQuery">
1666
- <h3>No items found</h3>
1667
- <p>Try adjusting your search</p>
1668
- </ng-container>
1669
-
1670
- <!-- Empty root level -->
1671
- <ng-container *ngIf="!searchQuery && !currentCollectionId">
1672
- <h3>No collections yet</h3>
1673
- <p>Create your first collection to get started</p>
1674
- <button class="btn-primary"
1675
- (click)="createCollection()"
1676
- *ngIf="canEditCurrent()">
1677
- <i class="fas fa-plus"></i>
1678
- Create Collection
1679
- </button>
1680
- </ng-container>
1681
-
1682
- <!-- Empty collection (has parent) -->
1683
- <ng-container *ngIf="!searchQuery && currentCollectionId">
1684
- <h3>This collection is empty</h3>
1685
- <p>Use the <strong>New</strong> button above to add collections or artifacts</p>
1686
- </ng-container>
1687
- </div>
1688
-
1686
+ @if (!isLoading && unifiedItems.length === 0) {
1687
+ <div class="empty-state">
1688
+ <i class="fas fa-folder-open"></i>
1689
+ <!-- Search returned no results -->
1690
+ @if (searchQuery) {
1691
+ <h3>No items found</h3>
1692
+ <p>Try adjusting your search</p>
1693
+ }
1694
+ <!-- Empty root level -->
1695
+ @if (!searchQuery && !currentCollectionId) {
1696
+ <h3>No collections yet</h3>
1697
+ <p>Create your first collection to get started</p>
1698
+ @if (canEditCurrent()) {
1699
+ <button class="btn-primary"
1700
+ (click)="createCollection()"
1701
+ >
1702
+ <i class="fas fa-plus"></i>
1703
+ Create Collection
1704
+ </button>
1705
+ }
1706
+ }
1707
+ <!-- Empty collection (has parent) -->
1708
+ @if (!searchQuery && currentCollectionId) {
1709
+ <h3>This collection is empty</h3>
1710
+ <p>Use the <strong>New</strong> button above to add collections or artifacts</p>
1711
+ }
1712
+ </div>
1713
+ }
1714
+
1689
1715
  <!-- Grid view -->
1690
- <div *ngIf="!isLoading && unifiedItems.length > 0 && viewMode === 'grid'"
1691
- class="unified-grid"
1692
- [class.select-mode]="isSelectMode">
1693
- <div *ngFor="let item of unifiedItems"
1694
- class="grid-item"
1695
- [class.selected]="item.selected"
1696
- [class.active]="item.type === 'artifact' && item.artifact?.ID === activeArtifactId"
1697
- (click)="onItemClick(item, $event)"
1698
- (dblclick)="onItemDoubleClick(item, $event)"
1699
- (contextmenu)="onItemContextMenu(item, $event)">
1700
-
1701
- <!-- Selection checkbox (only visible in select mode) -->
1702
- <div class="item-checkbox"
1703
- *ngIf="isSelectMode"
1704
- (click)="toggleItemSelection(item, $event)">
1705
- <i class="fas"
1706
- [ngClass]="item.selected ? 'fa-check-circle' : 'fa-circle'"></i>
1707
- </div>
1708
-
1709
- <!-- Folder item -->
1710
- <div *ngIf="item.type === 'folder'"
1711
- class="grid-item-content"
1712
- [title]="item.description || item.name">
1713
- <div class="grid-icon folder-icon">
1714
- <i class="fas fa-folder"></i>
1715
- <div class="shared-badge" *ngIf="item.isShared" title="Shared">
1716
- <i class="fas fa-users"></i>
1717
- </div>
1718
- </div>
1719
- <div class="grid-info">
1720
- <div class="grid-name">{{ item.name }}</div>
1721
- <div class="grid-description" *ngIf="item.description">
1722
- {{ item.description }}
1723
- </div>
1724
- <div class="grid-meta" *ngIf="item.itemCount !== undefined">
1725
- {{ getItemCountText(item.itemCount) }}
1726
- </div>
1727
- <div class="grid-owner" *ngIf="item.isShared && item.owner">
1728
- <i class="fas fa-user"></i>
1729
- {{ item.owner }}
1730
- </div>
1731
- </div>
1732
- </div>
1733
-
1734
- <!-- Artifact item -->
1735
- <div *ngIf="item.type === 'artifact'"
1736
- class="grid-item-content"
1737
- [title]="item.description || item.name">
1738
- <div class="grid-icon artifact-icon">
1739
- <i class="fas" [ngClass]="item.icon"></i>
1740
- </div>
1741
- <div class="grid-info">
1742
- <div class="grid-name">{{ item.name }}</div>
1743
- <div class="grid-description" *ngIf="item.description">
1744
- {{ item.description }}
1745
- </div>
1746
- <div class="grid-meta">
1747
- <span class="version-badge" *ngIf="item.versionNumber">
1748
- v{{ item.versionNumber }}
1749
- </span>
1750
- <span class="artifact-type-badge" *ngIf="item.artifactType">
1751
- {{ item.artifactType }}
1752
- </span>
1753
- </div>
1716
+ @if (!isLoading && unifiedItems.length > 0 && viewMode === 'grid') {
1717
+ <div
1718
+ class="unified-grid"
1719
+ [class.select-mode]="isSelectMode">
1720
+ @for (item of unifiedItems; track item) {
1721
+ <div
1722
+ class="grid-item"
1723
+ [class.selected]="item.selected"
1724
+ [class.active]="item.type === 'artifact' && item.artifact?.ID === activeArtifactId"
1725
+ (click)="onItemClick(item, $event)"
1726
+ (dblclick)="onItemDoubleClick(item, $event)"
1727
+ (contextmenu)="onItemContextMenu(item, $event)">
1728
+ <!-- Selection checkbox (only visible in select mode) -->
1729
+ @if (isSelectMode) {
1730
+ <div class="item-checkbox"
1731
+ (click)="toggleItemSelection(item, $event)">
1732
+ <i class="fas"
1733
+ [ngClass]="item.selected ? 'fa-check-circle' : 'fa-circle'"></i>
1734
+ </div>
1735
+ }
1736
+ <!-- Folder item -->
1737
+ @if (item.type === 'folder') {
1738
+ <div
1739
+ class="grid-item-content"
1740
+ [title]="item.description || item.name">
1741
+ <div class="grid-icon folder-icon">
1742
+ <i class="fas fa-folder"></i>
1743
+ @if (item.isShared) {
1744
+ <div class="shared-badge" title="Shared">
1745
+ <i class="fas fa-users"></i>
1746
+ </div>
1747
+ }
1748
+ </div>
1749
+ <div class="grid-info">
1750
+ <div class="grid-name">{{ item.name }}</div>
1751
+ @if (item.description) {
1752
+ <div class="grid-description">
1753
+ {{ item.description }}
1754
+ </div>
1755
+ }
1756
+ @if (item.itemCount !== undefined) {
1757
+ <div class="grid-meta">
1758
+ {{ getItemCountText(item.itemCount) }}
1759
+ </div>
1760
+ }
1761
+ @if (item.isShared && item.owner) {
1762
+ <div class="grid-owner">
1763
+ <i class="fas fa-user"></i>
1764
+ {{ item.owner }}
1765
+ </div>
1766
+ }
1767
+ </div>
1768
+ </div>
1769
+ }
1770
+ <!-- Artifact item -->
1771
+ @if (item.type === 'artifact') {
1772
+ <div
1773
+ class="grid-item-content"
1774
+ [title]="item.description || item.name">
1775
+ <div class="grid-icon artifact-icon">
1776
+ <i class="fas" [ngClass]="item.icon"></i>
1777
+ </div>
1778
+ <div class="grid-info">
1779
+ <div class="grid-name">{{ item.name }}</div>
1780
+ @if (item.description) {
1781
+ <div class="grid-description">
1782
+ {{ item.description }}
1783
+ </div>
1784
+ }
1785
+ <div class="grid-meta">
1786
+ @if (item.versionNumber) {
1787
+ <span class="version-badge">
1788
+ v{{ item.versionNumber }}
1789
+ </span>
1790
+ }
1791
+ @if (item.artifactType) {
1792
+ <span class="artifact-type-badge">
1793
+ {{ item.artifactType }}
1794
+ </span>
1795
+ }
1796
+ </div>
1797
+ </div>
1798
+ </div>
1799
+ }
1754
1800
  </div>
1755
- </div>
1801
+ }
1756
1802
  </div>
1757
- </div>
1758
-
1803
+ }
1804
+
1759
1805
  <!-- List view -->
1760
- <div *ngIf="!isLoading && unifiedItems.length > 0 && viewMode === 'list'"
1761
- class="unified-list"
1762
- [class.select-mode]="isSelectMode">
1763
- <table class="list-table">
1764
- <thead>
1765
- <tr>
1766
- <th class="col-checkbox" *ngIf="isSelectMode">
1767
- <i class="fas"
1768
- [ngClass]="selectedItems.size === unifiedItems.length ? 'fa-check-square' : 'fa-square'"
1769
- (click)="selectedItems.size === unifiedItems.length ? clearSelection() : selectAll()"></i>
1770
- </th>
1771
- <th class="col-name sortable" (click)="setSortBy('name')">
1772
- <span>Name</span>
1773
- <i class="fas fa-sort" *ngIf="sortBy !== 'name'"></i>
1774
- <i class="fas" *ngIf="sortBy === 'name'"
1775
- [ngClass]="sortOrder === 'asc' ? 'fa-sort-up' : 'fa-sort-down'"></i>
1776
- </th>
1777
- <th class="col-type sortable" (click)="setSortBy('type')">
1778
- <span>Type</span>
1779
- <i class="fas fa-sort" *ngIf="sortBy !== 'type'"></i>
1780
- <i class="fas" *ngIf="sortBy === 'type'"
1781
- [ngClass]="sortOrder === 'asc' ? 'fa-sort-up' : 'fa-sort-down'"></i>
1782
- </th>
1783
- <th class="col-modified sortable" (click)="setSortBy('date')">
1784
- <span>Modified</span>
1785
- <i class="fas fa-sort" *ngIf="sortBy !== 'date'"></i>
1786
- <i class="fas" *ngIf="sortBy === 'date'"
1787
- [ngClass]="sortOrder === 'asc' ? 'fa-sort-up' : 'fa-sort-down'"></i>
1788
- </th>
1789
- <th class="col-owner">Owner</th>
1790
- </tr>
1791
- </thead>
1792
- <tbody>
1793
- <tr *ngFor="let item of unifiedItems"
1794
- class="list-item"
1795
- [class.selected]="item.selected"
1796
- [class.active]="item.type === 'artifact' && item.artifact?.ID === activeArtifactId"
1797
- (click)="onItemClick(item, $event)"
1798
- (dblclick)="onItemDoubleClick(item, $event)"
1799
- (contextmenu)="onItemContextMenu(item, $event)">
1800
-
1801
- <td class="col-checkbox" *ngIf="isSelectMode">
1802
- <i class="fas"
1803
- [ngClass]="item.selected ? 'fa-check-circle' : 'fa-circle'"
1804
- (click)="toggleItemSelection(item, $event)"></i>
1805
- </td>
1806
-
1807
- <td class="col-name">
1808
- <div class="list-name-cell">
1809
- <i class="fas"
1810
- [ngClass]="item.type === 'folder' ? 'fa-folder' : item.icon"></i>
1811
- <span>{{ item.name }}</span>
1812
- <i class="fas fa-users shared-indicator"
1813
- *ngIf="item.isShared"
1814
- title="Shared"></i>
1815
- </div>
1816
- </td>
1817
-
1818
- <td class="col-type">
1819
- <span *ngIf="item.type === 'folder'">Folder</span>
1820
- <span *ngIf="item.type === 'artifact'" class="artifact-type-badge">
1821
- {{ item.artifactType }}
1822
- </span>
1823
- </td>
1824
-
1825
- <td class="col-modified">
1826
- <span *ngIf="item.lastModified">
1827
- {{ item.lastModified | date:'short' }}
1828
- </span>
1829
- </td>
1830
-
1831
- <td class="col-owner">
1832
- <span *ngIf="item.owner">{{ item.owner }}</span>
1833
- </td>
1834
- </tr>
1835
- </tbody>
1836
- </table>
1837
- </div>
1806
+ @if (!isLoading && unifiedItems.length > 0 && viewMode === 'list') {
1807
+ <div
1808
+ class="unified-list"
1809
+ [class.select-mode]="isSelectMode">
1810
+ <table class="list-table">
1811
+ <thead>
1812
+ <tr>
1813
+ @if (isSelectMode) {
1814
+ <th class="col-checkbox">
1815
+ <i class="fas"
1816
+ [ngClass]="selectedItems.size === unifiedItems.length ? 'fa-check-square' : 'fa-square'"
1817
+ (click)="selectedItems.size === unifiedItems.length ? clearSelection() : selectAll()"></i>
1818
+ </th>
1819
+ }
1820
+ <th class="col-name sortable" (click)="setSortBy('name')">
1821
+ <span>Name</span>
1822
+ @if (sortBy !== 'name') {
1823
+ <i class="fas fa-sort"></i>
1824
+ }
1825
+ @if (sortBy === 'name') {
1826
+ <i class="fas"
1827
+ [ngClass]="sortOrder === 'asc' ? 'fa-sort-up' : 'fa-sort-down'"></i>
1828
+ }
1829
+ </th>
1830
+ <th class="col-type sortable" (click)="setSortBy('type')">
1831
+ <span>Type</span>
1832
+ @if (sortBy !== 'type') {
1833
+ <i class="fas fa-sort"></i>
1834
+ }
1835
+ @if (sortBy === 'type') {
1836
+ <i class="fas"
1837
+ [ngClass]="sortOrder === 'asc' ? 'fa-sort-up' : 'fa-sort-down'"></i>
1838
+ }
1839
+ </th>
1840
+ <th class="col-modified sortable" (click)="setSortBy('date')">
1841
+ <span>Modified</span>
1842
+ @if (sortBy !== 'date') {
1843
+ <i class="fas fa-sort"></i>
1844
+ }
1845
+ @if (sortBy === 'date') {
1846
+ <i class="fas"
1847
+ [ngClass]="sortOrder === 'asc' ? 'fa-sort-up' : 'fa-sort-down'"></i>
1848
+ }
1849
+ </th>
1850
+ <th class="col-owner">Owner</th>
1851
+ </tr>
1852
+ </thead>
1853
+ <tbody>
1854
+ @for (item of unifiedItems; track item) {
1855
+ <tr
1856
+ class="list-item"
1857
+ [class.selected]="item.selected"
1858
+ [class.active]="item.type === 'artifact' && item.artifact?.ID === activeArtifactId"
1859
+ (click)="onItemClick(item, $event)"
1860
+ (dblclick)="onItemDoubleClick(item, $event)"
1861
+ (contextmenu)="onItemContextMenu(item, $event)">
1862
+ @if (isSelectMode) {
1863
+ <td class="col-checkbox">
1864
+ <i class="fas"
1865
+ [ngClass]="item.selected ? 'fa-check-circle' : 'fa-circle'"
1866
+ (click)="toggleItemSelection(item, $event)"></i>
1867
+ </td>
1868
+ }
1869
+ <td class="col-name">
1870
+ <div class="list-name-cell">
1871
+ <i class="fas"
1872
+ [ngClass]="item.type === 'folder' ? 'fa-folder' : item.icon"></i>
1873
+ <span>{{ item.name }}</span>
1874
+ @if (item.isShared) {
1875
+ <i class="fas fa-users shared-indicator"
1876
+ title="Shared"></i>
1877
+ }
1878
+ </div>
1879
+ </td>
1880
+ <td class="col-type">
1881
+ @if (item.type === 'folder') {
1882
+ <span>Folder</span>
1883
+ }
1884
+ @if (item.type === 'artifact') {
1885
+ <span class="artifact-type-badge">
1886
+ {{ item.artifactType }}
1887
+ </span>
1888
+ }
1889
+ </td>
1890
+ <td class="col-modified">
1891
+ @if (item.lastModified) {
1892
+ <span>
1893
+ {{ item.lastModified | date:'short' }}
1894
+ </span>
1895
+ }
1896
+ </td>
1897
+ <td class="col-owner">
1898
+ @if (item.owner) {
1899
+ <span>{{ item.owner }}</span>
1900
+ }
1901
+ </td>
1902
+ </tr>
1903
+ }
1904
+ </tbody>
1905
+ </table>
1906
+ </div>
1907
+ }
1838
1908
  </div>
1839
1909
  </div>
1840
-
1910
+
1841
1911
  <!-- Modals (unchanged) -->
1842
1912
  <mj-collection-form-modal
1843
1913
  [isOpen]="isFormModalOpen"
@@ -1848,7 +1918,7 @@ export class CollectionsFullViewComponent {
1848
1918
  (saved)="onCollectionSaved($event)"
1849
1919
  (cancelled)="onFormCancelled()">
1850
1920
  </mj-collection-form-modal>
1851
-
1921
+
1852
1922
  <mj-artifact-create-modal
1853
1923
  [isOpen]="isArtifactModalOpen"
1854
1924
  [collectionId]="currentCollectionId || ''"
@@ -1857,7 +1927,7 @@ export class CollectionsFullViewComponent {
1857
1927
  (saved)="onArtifactSaved($event)"
1858
1928
  (cancelled)="onArtifactModalCancelled()">
1859
1929
  </mj-artifact-create-modal>
1860
-
1930
+
1861
1931
  <mj-collection-share-modal
1862
1932
  [isOpen]="isShareModalOpen"
1863
1933
  [collection]="sharingCollection"
@@ -1866,13 +1936,13 @@ export class CollectionsFullViewComponent {
1866
1936
  (saved)="onPermissionsChanged()"
1867
1937
  (cancelled)="onShareModalCancelled()">
1868
1938
  </mj-collection-share-modal>
1869
- `, 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 "] }]
1870
- }], () => [{ type: i1.DialogService }, { type: i2.ArtifactStateService }, { type: i3.CollectionStateService }, { type: i4.CollectionPermissionService }, { type: i5.ArtifactIconService }], { environmentId: [{
1939
+ `, 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 "] }]
1940
+ }], () => [{ type: i1.DialogService }, { type: i2.ArtifactStateService }, { type: i3.CollectionStateService }, { type: i4.CollectionPermissionService }, { type: i5.ArtifactIconService }, { type: i0.ChangeDetectorRef }], { environmentId: [{
1871
1941
  type: Input
1872
1942
  }], currentUser: [{
1873
1943
  type: Input
1874
1944
  }], collectionNavigated: [{
1875
1945
  type: Output
1876
1946
  }] }); })();
1877
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CollectionsFullViewComponent, { className: "CollectionsFullViewComponent", filePath: "src/lib/components/collection/collections-full-view.component.ts", lineNumber: 1062 }); })();
1947
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CollectionsFullViewComponent, { className: "CollectionsFullViewComponent", filePath: "src/lib/components/collection/collections-full-view.component.ts", lineNumber: 1123 }); })();
1878
1948
  //# sourceMappingURL=collections-full-view.component.js.map