@memberjunction/ng-conversations 5.41.0 → 5.42.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/__tests__/remote-browser-channel.test.js +163 -1
- package/dist/__tests__/remote-browser-channel.test.js.map +1 -1
- package/dist/lib/components/collection/collections-full-view.component.d.ts +105 -2
- package/dist/lib/components/collection/collections-full-view.component.d.ts.map +1 -1
- package/dist/lib/components/collection/collections-full-view.component.js +1378 -489
- package/dist/lib/components/collection/collections-full-view.component.js.map +1 -1
- package/dist/lib/components/conversation/conversation-chat-area.component.d.ts +4 -0
- package/dist/lib/components/conversation/conversation-chat-area.component.d.ts.map +1 -1
- package/dist/lib/components/conversation/conversation-chat-area.component.js +13 -8
- package/dist/lib/components/conversation/conversation-chat-area.component.js.map +1 -1
- package/dist/lib/components/conversation/conversation-list.component.d.ts +98 -5
- package/dist/lib/components/conversation/conversation-list.component.d.ts.map +1 -1
- package/dist/lib/components/conversation/conversation-list.component.js +1102 -401
- package/dist/lib/components/conversation/conversation-list.component.js.map +1 -1
- package/dist/lib/components/message/message-input.component.js +1 -1
- package/dist/lib/components/message/message-input.component.js.map +1 -1
- package/dist/lib/components/project/project-form-modal.component.d.ts +5 -1
- package/dist/lib/components/project/project-form-modal.component.d.ts.map +1 -1
- package/dist/lib/components/project/project-form-modal.component.js +104 -85
- package/dist/lib/components/project/project-form-modal.component.js.map +1 -1
- package/dist/lib/components/realtime/channels/base-realtime-channel-client.d.ts +22 -0
- package/dist/lib/components/realtime/channels/base-realtime-channel-client.d.ts.map +1 -1
- package/dist/lib/components/realtime/channels/base-realtime-channel-client.js +40 -0
- package/dist/lib/components/realtime/channels/base-realtime-channel-client.js.map +1 -1
- package/dist/lib/components/realtime/realtime-agent-picker.component.d.ts +12 -1
- package/dist/lib/components/realtime/realtime-agent-picker.component.d.ts.map +1 -1
- package/dist/lib/components/realtime/realtime-agent-picker.component.js +97 -19
- package/dist/lib/components/realtime/realtime-agent-picker.component.js.map +1 -1
- package/dist/lib/components/realtime/remote-browser/remote-browser-channel.d.ts +33 -0
- package/dist/lib/components/realtime/remote-browser/remote-browser-channel.d.ts.map +1 -1
- package/dist/lib/components/realtime/remote-browser/remote-browser-channel.js +164 -7
- package/dist/lib/components/realtime/remote-browser/remote-browser-channel.js.map +1 -1
- package/dist/lib/components/realtime/remote-browser/remote-browser-surface.component.d.ts +35 -2
- package/dist/lib/components/realtime/remote-browser/remote-browser-surface.component.d.ts.map +1 -1
- package/dist/lib/components/realtime/remote-browser/remote-browser-surface.component.js +67 -4
- package/dist/lib/components/realtime/remote-browser/remote-browser-surface.component.js.map +1 -1
- package/dist/lib/components/realtime/remote-browser/remote-browser-tools.d.ts +1 -0
- package/dist/lib/components/realtime/remote-browser/remote-browser-tools.d.ts.map +1 -1
- package/dist/lib/components/realtime/remote-browser/remote-browser-tools.js +13 -0
- package/dist/lib/components/realtime/remote-browser/remote-browser-tools.js.map +1 -1
- package/dist/lib/components/workspace/conversation-workspace.component.d.ts +4 -0
- package/dist/lib/components/workspace/conversation-workspace.component.d.ts.map +1 -1
- package/dist/lib/components/workspace/conversation-workspace.component.js +13 -8
- package/dist/lib/components/workspace/conversation-workspace.component.js.map +1 -1
- package/dist/lib/services/artifact-state.service.d.ts +1 -1
- package/dist/lib/services/artifact-state.service.d.ts.map +1 -1
- package/dist/lib/services/artifact-state.service.js +7 -2
- package/dist/lib/services/artifact-state.service.js.map +1 -1
- package/dist/lib/services/realtime-pairing.d.ts +8 -7
- package/dist/lib/services/realtime-pairing.d.ts.map +1 -1
- package/dist/lib/services/realtime-pairing.js +19 -9
- package/dist/lib/services/realtime-pairing.js.map +1 -1
- package/package.json +26 -26
|
@@ -2,7 +2,7 @@ import { Component, Input, Output, EventEmitter, HostListener } from '@angular/c
|
|
|
2
2
|
import { BaseAngularComponent } from '@memberjunction/ng-base-types';
|
|
3
3
|
import { RunView } from '@memberjunction/core';
|
|
4
4
|
import { Subject, takeUntil } from 'rxjs';
|
|
5
|
-
import { UUIDsEqual } from '@memberjunction/global';
|
|
5
|
+
import { UUIDsEqual, NormalizeUUID } from '@memberjunction/global';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
import * as i1 from "../../services/dialog.service";
|
|
8
8
|
import * as i2 from "../../services/artifact-state.service";
|
|
@@ -15,48 +15,51 @@ import * as i8 from "@memberjunction/ng-shared-generic";
|
|
|
15
15
|
import * as i9 from "./collection-share-modal.component";
|
|
16
16
|
import * as i10 from "./collection-form-modal.component";
|
|
17
17
|
import * as i11 from "./artifact-create-modal.component";
|
|
18
|
-
|
|
18
|
+
const _forTrack0 = ($index, $item) => $item.collection.ID;
|
|
19
|
+
const _forTrack1 = ($index, $item) => $item.item.id;
|
|
20
|
+
function CollectionsFullViewComponent_Conditional_9_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
19
21
|
const _r1 = i0.ɵɵgetCurrentView();
|
|
20
|
-
i0.ɵɵelement(0, "i",
|
|
21
|
-
i0.ɵɵelementStart(1, "a",
|
|
22
|
-
i0.ɵɵlistener("click", function
|
|
22
|
+
i0.ɵɵelement(0, "i", 30);
|
|
23
|
+
i0.ɵɵelementStart(1, "a", 31);
|
|
24
|
+
i0.ɵɵlistener("dragover", function CollectionsFullViewComponent_Conditional_9_For_2_Template_a_dragover_1_listener($event) { const crumb_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onCrumbDragOver(crumb_r2.id, $event)); })("dragleave", function CollectionsFullViewComponent_Conditional_9_For_2_Template_a_dragleave_1_listener() { const crumb_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onDragLeave("crumb:" + crumb_r2.id)); })("drop", function CollectionsFullViewComponent_Conditional_9_For_2_Template_a_drop_1_listener($event) { const crumb_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onCrumbDrop(crumb_r2.id, $event)); })("click", function CollectionsFullViewComponent_Conditional_9_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)); });
|
|
23
25
|
i0.ɵɵtext(2);
|
|
24
26
|
i0.ɵɵelementEnd();
|
|
25
27
|
} if (rf & 2) {
|
|
26
28
|
const crumb_r2 = ctx.$implicit;
|
|
27
|
-
const ɵ$
|
|
28
|
-
const ɵ$
|
|
29
|
+
const ɵ$index_21_r4 = ctx.$index;
|
|
30
|
+
const ɵ$count_21_r5 = ctx.$count;
|
|
31
|
+
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
29
32
|
i0.ɵɵadvance();
|
|
30
|
-
i0.ɵɵclassProp("active", ɵ$
|
|
33
|
+
i0.ɵɵclassProp("active", ɵ$index_21_r4 === ɵ$count_21_r5 - 1)("drag-over", ctx_r2.dragOverTargetId === "crumb:" + crumb_r2.id);
|
|
31
34
|
i0.ɵɵadvance();
|
|
32
35
|
i0.ɵɵtextInterpolate1(" ", crumb_r2.name, " ");
|
|
33
36
|
} }
|
|
34
|
-
function
|
|
35
|
-
i0.ɵɵelementStart(0, "span",
|
|
36
|
-
i0.ɵɵrepeaterCreate(1,
|
|
37
|
+
function CollectionsFullViewComponent_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
38
|
+
i0.ɵɵelementStart(0, "span", 8);
|
|
39
|
+
i0.ɵɵrepeaterCreate(1, CollectionsFullViewComponent_Conditional_9_For_2_Template, 3, 5, null, null, i0.ɵɵrepeaterTrackByIdentity);
|
|
37
40
|
i0.ɵɵelementEnd();
|
|
38
41
|
} if (rf & 2) {
|
|
39
42
|
const ctx_r2 = i0.ɵɵnextContext();
|
|
40
43
|
i0.ɵɵadvance();
|
|
41
44
|
i0.ɵɵrepeater(ctx_r2.breadcrumbs);
|
|
42
45
|
} }
|
|
43
|
-
function
|
|
46
|
+
function CollectionsFullViewComponent_Conditional_15_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
44
47
|
const _r7 = i0.ɵɵgetCurrentView();
|
|
45
|
-
i0.ɵɵelementStart(0, "div",
|
|
46
|
-
i0.ɵɵlistener("click", function
|
|
47
|
-
i0.ɵɵelement(2, "i",
|
|
48
|
+
i0.ɵɵelementStart(0, "div", 34)(1, "button", 35);
|
|
49
|
+
i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_15_Conditional_3_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r7); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.setSortBy("name")); });
|
|
50
|
+
i0.ɵɵelement(2, "i", 36);
|
|
48
51
|
i0.ɵɵelementStart(3, "span");
|
|
49
52
|
i0.ɵɵtext(4, "Sort by Name");
|
|
50
53
|
i0.ɵɵelementEnd()();
|
|
51
|
-
i0.ɵɵelementStart(5, "button",
|
|
52
|
-
i0.ɵɵlistener("click", function
|
|
53
|
-
i0.ɵɵelement(6, "i",
|
|
54
|
+
i0.ɵɵelementStart(5, "button", 35);
|
|
55
|
+
i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_15_Conditional_3_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r7); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.setSortBy("date")); });
|
|
56
|
+
i0.ɵɵelement(6, "i", 37);
|
|
54
57
|
i0.ɵɵelementStart(7, "span");
|
|
55
58
|
i0.ɵɵtext(8, "Sort by Date");
|
|
56
59
|
i0.ɵɵelementEnd()();
|
|
57
|
-
i0.ɵɵelementStart(9, "button",
|
|
58
|
-
i0.ɵɵlistener("click", function
|
|
59
|
-
i0.ɵɵelement(10, "i",
|
|
60
|
+
i0.ɵɵelementStart(9, "button", 35);
|
|
61
|
+
i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_15_Conditional_3_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r7); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.setSortBy("type")); });
|
|
62
|
+
i0.ɵɵelement(10, "i", 38);
|
|
60
63
|
i0.ɵɵelementStart(11, "span");
|
|
61
64
|
i0.ɵɵtext(12, "Sort by Type");
|
|
62
65
|
i0.ɵɵelementEnd()()();
|
|
@@ -69,62 +72,62 @@ function CollectionsFullViewComponent_Conditional_13_Conditional_3_Template(rf,
|
|
|
69
72
|
i0.ɵɵadvance(4);
|
|
70
73
|
i0.ɵɵclassProp("active", ctx_r2.sortBy === "type");
|
|
71
74
|
} }
|
|
72
|
-
function
|
|
75
|
+
function CollectionsFullViewComponent_Conditional_15_Template(rf, ctx) { if (rf & 1) {
|
|
73
76
|
const _r6 = i0.ɵɵgetCurrentView();
|
|
74
|
-
i0.ɵɵelementStart(0, "div",
|
|
75
|
-
i0.ɵɵlistener("click", function
|
|
76
|
-
i0.ɵɵelement(2, "i",
|
|
77
|
+
i0.ɵɵelementStart(0, "div", 13)(1, "button", 32);
|
|
78
|
+
i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_15_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r6); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.showSortDropdown = !ctx_r2.showSortDropdown); });
|
|
79
|
+
i0.ɵɵelement(2, "i", 33);
|
|
77
80
|
i0.ɵɵelementEnd();
|
|
78
|
-
i0.ɵɵconditionalCreate(3,
|
|
81
|
+
i0.ɵɵconditionalCreate(3, CollectionsFullViewComponent_Conditional_15_Conditional_3_Template, 13, 6, "div", 34);
|
|
79
82
|
i0.ɵɵelementEnd();
|
|
80
83
|
} if (rf & 2) {
|
|
81
84
|
const ctx_r2 = i0.ɵɵnextContext();
|
|
82
85
|
i0.ɵɵadvance(3);
|
|
83
86
|
i0.ɵɵconditional(ctx_r2.showSortDropdown ? 3 : -1);
|
|
84
87
|
} }
|
|
85
|
-
function
|
|
88
|
+
function CollectionsFullViewComponent_Conditional_19_Template(rf, ctx) { if (rf & 1) {
|
|
86
89
|
const _r8 = i0.ɵɵgetCurrentView();
|
|
87
|
-
i0.ɵɵelementStart(0, "button",
|
|
88
|
-
i0.ɵɵlistener("click", function
|
|
89
|
-
i0.ɵɵelement(1, "i",
|
|
90
|
+
i0.ɵɵelementStart(0, "button", 39);
|
|
91
|
+
i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_19_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r8); const ctx_r2 = i0.ɵɵnextContext(); ctx_r2.searchQuery = ""; return i0.ɵɵresetView(ctx_r2.onSearchChange("")); });
|
|
92
|
+
i0.ɵɵelement(1, "i", 40);
|
|
90
93
|
i0.ɵɵelementEnd();
|
|
91
94
|
} }
|
|
92
|
-
function
|
|
95
|
+
function CollectionsFullViewComponent_Conditional_20_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
93
96
|
const _r9 = i0.ɵɵgetCurrentView();
|
|
94
|
-
i0.ɵɵelementStart(0, "button",
|
|
95
|
-
i0.ɵɵlistener("click", function
|
|
96
|
-
i0.ɵɵelement(1, "i",
|
|
97
|
+
i0.ɵɵelementStart(0, "button", 10);
|
|
98
|
+
i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_20_Conditional_2_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r9); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.shareCurrentCollection()); });
|
|
99
|
+
i0.ɵɵelement(1, "i", 45);
|
|
97
100
|
i0.ɵɵelementEnd();
|
|
98
101
|
} if (rf & 2) {
|
|
99
102
|
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
100
103
|
i0.ɵɵproperty("title", "Share: " + ctx_r2.currentCollection.Name);
|
|
101
104
|
} }
|
|
102
|
-
function
|
|
105
|
+
function CollectionsFullViewComponent_Conditional_20_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
103
106
|
const _r10 = i0.ɵɵgetCurrentView();
|
|
104
|
-
i0.ɵɵelementStart(0, "button",
|
|
105
|
-
i0.ɵɵlistener("click", function
|
|
106
|
-
i0.ɵɵelement(1, "i",
|
|
107
|
+
i0.ɵɵelementStart(0, "button", 10);
|
|
108
|
+
i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_20_Conditional_3_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r10); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.editCurrentCollection()); });
|
|
109
|
+
i0.ɵɵelement(1, "i", 46);
|
|
107
110
|
i0.ɵɵelementEnd();
|
|
108
111
|
} if (rf & 2) {
|
|
109
112
|
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
110
113
|
i0.ɵɵproperty("title", "Edit: " + ctx_r2.currentCollection.Name);
|
|
111
114
|
} }
|
|
112
|
-
function
|
|
115
|
+
function CollectionsFullViewComponent_Conditional_20_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
113
116
|
const _r11 = i0.ɵɵgetCurrentView();
|
|
114
|
-
i0.ɵɵelementStart(0, "button",
|
|
115
|
-
i0.ɵɵlistener("click", function
|
|
116
|
-
i0.ɵɵelement(1, "i",
|
|
117
|
+
i0.ɵɵelementStart(0, "button", 47);
|
|
118
|
+
i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_20_Conditional_4_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r11); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.deleteCurrentCollection()); });
|
|
119
|
+
i0.ɵɵelement(1, "i", 48);
|
|
117
120
|
i0.ɵɵelementEnd();
|
|
118
121
|
} if (rf & 2) {
|
|
119
122
|
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
120
123
|
i0.ɵɵproperty("title", "Delete: " + ctx_r2.currentCollection.Name);
|
|
121
124
|
} }
|
|
122
|
-
function
|
|
123
|
-
i0.ɵɵelement(0, "div",
|
|
124
|
-
i0.ɵɵelementStart(1, "div",
|
|
125
|
-
i0.ɵɵconditionalCreate(2,
|
|
126
|
-
i0.ɵɵconditionalCreate(3,
|
|
127
|
-
i0.ɵɵconditionalCreate(4,
|
|
125
|
+
function CollectionsFullViewComponent_Conditional_20_Template(rf, ctx) { if (rf & 1) {
|
|
126
|
+
i0.ɵɵelement(0, "div", 41);
|
|
127
|
+
i0.ɵɵelementStart(1, "div", 42);
|
|
128
|
+
i0.ɵɵconditionalCreate(2, CollectionsFullViewComponent_Conditional_20_Conditional_2_Template, 2, 1, "button", 43);
|
|
129
|
+
i0.ɵɵconditionalCreate(3, CollectionsFullViewComponent_Conditional_20_Conditional_3_Template, 2, 1, "button", 43);
|
|
130
|
+
i0.ɵɵconditionalCreate(4, CollectionsFullViewComponent_Conditional_20_Conditional_4_Template, 2, 1, "button", 44);
|
|
128
131
|
i0.ɵɵelementEnd();
|
|
129
132
|
} if (rf & 2) {
|
|
130
133
|
const ctx_r2 = i0.ɵɵnextContext();
|
|
@@ -135,17 +138,17 @@ function CollectionsFullViewComponent_Conditional_18_Template(rf, ctx) { if (rf
|
|
|
135
138
|
i0.ɵɵadvance();
|
|
136
139
|
i0.ɵɵconditional(ctx_r2.canDeleteCurrent() ? 4 : -1);
|
|
137
140
|
} }
|
|
138
|
-
function
|
|
141
|
+
function CollectionsFullViewComponent_Conditional_21_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
139
142
|
const _r13 = i0.ɵɵgetCurrentView();
|
|
140
|
-
i0.ɵɵelementStart(0, "div",
|
|
141
|
-
i0.ɵɵlistener("click", function
|
|
142
|
-
i0.ɵɵelement(2, "i",
|
|
143
|
+
i0.ɵɵelementStart(0, "div", 52)(1, "button", 35);
|
|
144
|
+
i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_21_Conditional_6_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r13); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.createCollection()); });
|
|
145
|
+
i0.ɵɵelement(2, "i", 53);
|
|
143
146
|
i0.ɵɵelementStart(3, "span");
|
|
144
147
|
i0.ɵɵtext(4, "New Collection");
|
|
145
148
|
i0.ɵɵelementEnd()();
|
|
146
|
-
i0.ɵɵelementStart(5, "button",
|
|
147
|
-
i0.ɵɵlistener("click", function
|
|
148
|
-
i0.ɵɵelement(6, "i",
|
|
149
|
+
i0.ɵɵelementStart(5, "button", 54);
|
|
150
|
+
i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_21_Conditional_6_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r13); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.addArtifact()); });
|
|
151
|
+
i0.ɵɵelement(6, "i", 55);
|
|
149
152
|
i0.ɵɵelementStart(7, "span");
|
|
150
153
|
i0.ɵɵtext(8, "New Artifact");
|
|
151
154
|
i0.ɵɵelementEnd()()();
|
|
@@ -154,49 +157,142 @@ function CollectionsFullViewComponent_Conditional_19_Conditional_6_Template(rf,
|
|
|
154
157
|
i0.ɵɵadvance(5);
|
|
155
158
|
i0.ɵɵproperty("disabled", !ctx_r2.currentCollectionId);
|
|
156
159
|
} }
|
|
157
|
-
function
|
|
160
|
+
function CollectionsFullViewComponent_Conditional_21_Template(rf, ctx) { if (rf & 1) {
|
|
158
161
|
const _r12 = i0.ɵɵgetCurrentView();
|
|
159
|
-
i0.ɵɵelementStart(0, "div",
|
|
160
|
-
i0.ɵɵlistener("click", function
|
|
161
|
-
i0.ɵɵelement(2, "i",
|
|
162
|
+
i0.ɵɵelementStart(0, "div", 13)(1, "button", 49);
|
|
163
|
+
i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_21_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r12); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.showNewDropdown = !ctx_r2.showNewDropdown); });
|
|
164
|
+
i0.ɵɵelement(2, "i", 50);
|
|
162
165
|
i0.ɵɵelementStart(3, "span");
|
|
163
166
|
i0.ɵɵtext(4, "New");
|
|
164
167
|
i0.ɵɵelementEnd();
|
|
165
|
-
i0.ɵɵelement(5, "i",
|
|
168
|
+
i0.ɵɵelement(5, "i", 51);
|
|
166
169
|
i0.ɵɵelementEnd();
|
|
167
|
-
i0.ɵɵconditionalCreate(6,
|
|
170
|
+
i0.ɵɵconditionalCreate(6, CollectionsFullViewComponent_Conditional_21_Conditional_6_Template, 9, 1, "div", 52);
|
|
168
171
|
i0.ɵɵelementEnd();
|
|
169
172
|
} if (rf & 2) {
|
|
170
173
|
const ctx_r2 = i0.ɵɵnextContext();
|
|
171
174
|
i0.ɵɵadvance(6);
|
|
172
175
|
i0.ɵɵconditional(ctx_r2.showNewDropdown ? 6 : -1);
|
|
173
176
|
} }
|
|
174
|
-
function
|
|
177
|
+
function CollectionsFullViewComponent_Conditional_24_Conditional_9_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
178
|
+
i0.ɵɵelementStart(0, "div", 66);
|
|
179
|
+
i0.ɵɵtext(1, "No collections available");
|
|
180
|
+
i0.ɵɵelementEnd();
|
|
181
|
+
} }
|
|
182
|
+
function CollectionsFullViewComponent_Conditional_24_Conditional_9_Conditional_3_For_1_Template(rf, ctx) { if (rf & 1) {
|
|
183
|
+
const _r16 = i0.ɵɵgetCurrentView();
|
|
184
|
+
i0.ɵɵelementStart(0, "button", 35);
|
|
185
|
+
i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_24_Conditional_9_Conditional_3_For_1_Template_button_click_0_listener() { const node_r17 = i0.ɵɵrestoreView(_r16).$implicit; const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.bulkMoveTo(node_r17.collection)); });
|
|
186
|
+
i0.ɵɵelement(1, "i", 68);
|
|
187
|
+
i0.ɵɵelementStart(2, "span");
|
|
188
|
+
i0.ɵɵtext(3);
|
|
189
|
+
i0.ɵɵelementEnd()();
|
|
190
|
+
} if (rf & 2) {
|
|
191
|
+
const node_r17 = ctx.$implicit;
|
|
192
|
+
i0.ɵɵstyleProp("padding-left", 12 + node_r17.depth * 12, "px");
|
|
193
|
+
i0.ɵɵadvance();
|
|
194
|
+
i0.ɵɵstyleProp("color", node_r17.collection.Color || null);
|
|
195
|
+
i0.ɵɵadvance(2);
|
|
196
|
+
i0.ɵɵtextInterpolate(node_r17.collection.Name);
|
|
197
|
+
} }
|
|
198
|
+
function CollectionsFullViewComponent_Conditional_24_Conditional_9_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
199
|
+
i0.ɵɵrepeaterCreate(0, CollectionsFullViewComponent_Conditional_24_Conditional_9_Conditional_3_For_1_Template, 4, 5, "button", 67, _forTrack0);
|
|
200
|
+
} if (rf & 2) {
|
|
201
|
+
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
202
|
+
i0.ɵɵrepeater(ctx_r2.navigatorNodes);
|
|
203
|
+
} }
|
|
204
|
+
function CollectionsFullViewComponent_Conditional_24_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
205
|
+
const _r15 = i0.ɵɵgetCurrentView();
|
|
206
|
+
i0.ɵɵelementStart(0, "div", 64);
|
|
207
|
+
i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_24_Conditional_9_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r15); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.closeBulkMove()); });
|
|
208
|
+
i0.ɵɵelementEnd();
|
|
209
|
+
i0.ɵɵelementStart(1, "div", 65);
|
|
210
|
+
i0.ɵɵconditionalCreate(2, CollectionsFullViewComponent_Conditional_24_Conditional_9_Conditional_2_Template, 2, 0, "div", 66)(3, CollectionsFullViewComponent_Conditional_24_Conditional_9_Conditional_3_Template, 2, 0);
|
|
211
|
+
i0.ɵɵelementEnd();
|
|
212
|
+
} if (rf & 2) {
|
|
213
|
+
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
214
|
+
i0.ɵɵadvance(2);
|
|
215
|
+
i0.ɵɵconditional(ctx_r2.navigatorNodes.length === 0 ? 2 : 3);
|
|
216
|
+
} }
|
|
217
|
+
function CollectionsFullViewComponent_Conditional_24_Template(rf, ctx) { if (rf & 1) {
|
|
175
218
|
const _r14 = i0.ɵɵgetCurrentView();
|
|
176
|
-
i0.ɵɵelementStart(0, "div",
|
|
219
|
+
i0.ɵɵelementStart(0, "div", 20)(1, "div", 56)(2, "span", 57);
|
|
177
220
|
i0.ɵɵtext(3);
|
|
178
221
|
i0.ɵɵelementEnd()();
|
|
179
|
-
i0.ɵɵelementStart(4, "div",
|
|
180
|
-
i0.ɵɵlistener("click", function
|
|
181
|
-
i0.ɵɵelement(
|
|
182
|
-
i0.ɵɵtext(
|
|
183
|
-
i0.ɵɵelementEnd();
|
|
184
|
-
i0.ɵɵ
|
|
185
|
-
i0.ɵɵ
|
|
186
|
-
i0.ɵɵ
|
|
187
|
-
i0.ɵɵ
|
|
222
|
+
i0.ɵɵelementStart(4, "div", 58)(5, "div", 13)(6, "button", 59);
|
|
223
|
+
i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_24_Template_button_click_6_listener($event) { i0.ɵɵrestoreView(_r14); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.openBulkMove($event)); });
|
|
224
|
+
i0.ɵɵelement(7, "i", 60);
|
|
225
|
+
i0.ɵɵtext(8, " Move to\u2026 ");
|
|
226
|
+
i0.ɵɵelementEnd();
|
|
227
|
+
i0.ɵɵconditionalCreate(9, CollectionsFullViewComponent_Conditional_24_Conditional_9_Template, 4, 1);
|
|
228
|
+
i0.ɵɵelementEnd();
|
|
229
|
+
i0.ɵɵelementStart(10, "button", 61);
|
|
230
|
+
i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_24_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r14); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.stageSelected()); });
|
|
231
|
+
i0.ɵɵelement(11, "i", 62);
|
|
232
|
+
i0.ɵɵtext(12, " Stage ");
|
|
233
|
+
i0.ɵɵelementEnd();
|
|
234
|
+
i0.ɵɵelementStart(13, "button", 59);
|
|
235
|
+
i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_24_Template_button_click_13_listener() { i0.ɵɵrestoreView(_r14); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.clearSelection()); });
|
|
236
|
+
i0.ɵɵelement(14, "i", 40);
|
|
237
|
+
i0.ɵɵtext(15, " Clear ");
|
|
238
|
+
i0.ɵɵelementEnd();
|
|
239
|
+
i0.ɵɵelementStart(16, "button", 63);
|
|
240
|
+
i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_24_Template_button_click_16_listener() { i0.ɵɵrestoreView(_r14); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.deleteSelected()); });
|
|
241
|
+
i0.ɵɵelement(17, "i", 48);
|
|
242
|
+
i0.ɵɵtext(18, " Delete ");
|
|
188
243
|
i0.ɵɵelementEnd()()();
|
|
189
244
|
} if (rf & 2) {
|
|
190
245
|
const ctx_r2 = i0.ɵɵnextContext();
|
|
191
246
|
i0.ɵɵadvance(3);
|
|
192
247
|
i0.ɵɵtextInterpolate1("", ctx_r2.selectedItems.size, " selected");
|
|
248
|
+
i0.ɵɵadvance(6);
|
|
249
|
+
i0.ɵɵconditional(ctx_r2.showBulkMovePopover ? 9 : -1);
|
|
193
250
|
} }
|
|
194
|
-
function
|
|
195
|
-
i0.ɵɵ
|
|
196
|
-
i0.ɵɵ
|
|
251
|
+
function CollectionsFullViewComponent_Conditional_26_For_9_Template(rf, ctx) { if (rf & 1) {
|
|
252
|
+
const _r19 = i0.ɵɵgetCurrentView();
|
|
253
|
+
i0.ɵɵelementStart(0, "button", 73);
|
|
254
|
+
i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_26_For_9_Template_button_click_0_listener() { const node_r20 = i0.ɵɵrestoreView(_r19).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.navigatorClick(node_r20.collection)); })("dragover", function CollectionsFullViewComponent_Conditional_26_For_9_Template_button_dragover_0_listener($event) { const node_r20 = i0.ɵɵrestoreView(_r19).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onNavigatorDragOver(node_r20.collection, $event)); })("dragleave", function CollectionsFullViewComponent_Conditional_26_For_9_Template_button_dragleave_0_listener() { const node_r20 = i0.ɵɵrestoreView(_r19).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onDragLeave("nav:" + node_r20.collection.ID)); })("drop", function CollectionsFullViewComponent_Conditional_26_For_9_Template_button_drop_0_listener($event) { const node_r20 = i0.ɵɵrestoreView(_r19).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onNavigatorDrop(node_r20.collection, $event)); });
|
|
255
|
+
i0.ɵɵelement(1, "i", 68);
|
|
256
|
+
i0.ɵɵelementStart(2, "span", 74);
|
|
257
|
+
i0.ɵɵtext(3);
|
|
258
|
+
i0.ɵɵelementEnd()();
|
|
259
|
+
} if (rf & 2) {
|
|
260
|
+
const node_r20 = ctx.$implicit;
|
|
261
|
+
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
262
|
+
i0.ɵɵstyleProp("padding-left", 10 + node_r20.depth * 14, "px");
|
|
263
|
+
i0.ɵɵclassProp("active", ctx_r2.isCurrentNavigator(node_r20.collection))("drag-over", ctx_r2.dragOverTargetId === "nav:" + node_r20.collection.ID);
|
|
264
|
+
i0.ɵɵproperty("title", node_r20.collection.Name);
|
|
265
|
+
i0.ɵɵadvance();
|
|
266
|
+
i0.ɵɵstyleProp("color", node_r20.collection.Color || null);
|
|
267
|
+
i0.ɵɵadvance(2);
|
|
268
|
+
i0.ɵɵtextInterpolate(node_r20.collection.Name);
|
|
269
|
+
} }
|
|
270
|
+
function CollectionsFullViewComponent_Conditional_26_Template(rf, ctx) { if (rf & 1) {
|
|
271
|
+
const _r18 = i0.ɵɵgetCurrentView();
|
|
272
|
+
i0.ɵɵelementStart(0, "div", 22)(1, "div", 69);
|
|
273
|
+
i0.ɵɵtext(2, "Collections");
|
|
274
|
+
i0.ɵɵelementEnd();
|
|
275
|
+
i0.ɵɵelementStart(3, "div", 70)(4, "button", 71);
|
|
276
|
+
i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_26_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r18); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.navigateToRoot()); })("dragover", function CollectionsFullViewComponent_Conditional_26_Template_button_dragover_4_listener($event) { i0.ɵɵrestoreView(_r18); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onCrumbDragOver(null, $event)); })("dragleave", function CollectionsFullViewComponent_Conditional_26_Template_button_dragleave_4_listener() { i0.ɵɵrestoreView(_r18); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onDragLeave("root")); })("drop", function CollectionsFullViewComponent_Conditional_26_Template_button_drop_4_listener($event) { i0.ɵɵrestoreView(_r18); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onCrumbDrop(null, $event)); });
|
|
277
|
+
i0.ɵɵelement(5, "i", 6);
|
|
278
|
+
i0.ɵɵelementStart(6, "span");
|
|
279
|
+
i0.ɵɵtext(7, "All Collections");
|
|
280
|
+
i0.ɵɵelementEnd()();
|
|
281
|
+
i0.ɵɵrepeaterCreate(8, CollectionsFullViewComponent_Conditional_26_For_9_Template, 4, 10, "button", 72, _forTrack0);
|
|
282
|
+
i0.ɵɵelementEnd()();
|
|
283
|
+
} if (rf & 2) {
|
|
284
|
+
const ctx_r2 = i0.ɵɵnextContext();
|
|
285
|
+
i0.ɵɵadvance(4);
|
|
286
|
+
i0.ɵɵclassProp("active", !ctx_r2.currentCollectionId)("drag-over", ctx_r2.dragOverTargetId === "root");
|
|
287
|
+
i0.ɵɵadvance(4);
|
|
288
|
+
i0.ɵɵrepeater(ctx_r2.navigatorNodes);
|
|
289
|
+
} }
|
|
290
|
+
function CollectionsFullViewComponent_Conditional_28_Template(rf, ctx) { if (rf & 1) {
|
|
291
|
+
i0.ɵɵelementStart(0, "div", 24);
|
|
292
|
+
i0.ɵɵelement(1, "mj-loading", 75);
|
|
197
293
|
i0.ɵɵelementEnd();
|
|
198
294
|
} }
|
|
199
|
-
function
|
|
295
|
+
function CollectionsFullViewComponent_Conditional_29_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
200
296
|
i0.ɵɵelementStart(0, "h3");
|
|
201
297
|
i0.ɵɵtext(1, "No items found");
|
|
202
298
|
i0.ɵɵelementEnd();
|
|
@@ -204,28 +300,28 @@ function CollectionsFullViewComponent_Conditional_25_Conditional_2_Template(rf,
|
|
|
204
300
|
i0.ɵɵtext(3, "Try adjusting your search");
|
|
205
301
|
i0.ɵɵelementEnd();
|
|
206
302
|
} }
|
|
207
|
-
function
|
|
208
|
-
const
|
|
209
|
-
i0.ɵɵelementStart(0, "button",
|
|
210
|
-
i0.ɵɵlistener("click", function
|
|
211
|
-
i0.ɵɵelement(1, "i",
|
|
303
|
+
function CollectionsFullViewComponent_Conditional_29_Conditional_3_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
304
|
+
const _r21 = i0.ɵɵgetCurrentView();
|
|
305
|
+
i0.ɵɵelementStart(0, "button", 78);
|
|
306
|
+
i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_29_Conditional_3_Conditional_4_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r21); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.createCollection()); });
|
|
307
|
+
i0.ɵɵelement(1, "i", 50);
|
|
212
308
|
i0.ɵɵtext(2, " Create Collection ");
|
|
213
309
|
i0.ɵɵelementEnd();
|
|
214
310
|
} }
|
|
215
|
-
function
|
|
311
|
+
function CollectionsFullViewComponent_Conditional_29_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
216
312
|
i0.ɵɵelementStart(0, "h3");
|
|
217
313
|
i0.ɵɵtext(1, "No collections yet");
|
|
218
314
|
i0.ɵɵelementEnd();
|
|
219
315
|
i0.ɵɵelementStart(2, "p");
|
|
220
316
|
i0.ɵɵtext(3, "Create your first collection to get started");
|
|
221
317
|
i0.ɵɵelementEnd();
|
|
222
|
-
i0.ɵɵconditionalCreate(4,
|
|
318
|
+
i0.ɵɵconditionalCreate(4, CollectionsFullViewComponent_Conditional_29_Conditional_3_Conditional_4_Template, 3, 0, "button", 77);
|
|
223
319
|
} if (rf & 2) {
|
|
224
320
|
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
225
321
|
i0.ɵɵadvance(4);
|
|
226
322
|
i0.ɵɵconditional(ctx_r2.canEditCurrent() ? 4 : -1);
|
|
227
323
|
} }
|
|
228
|
-
function
|
|
324
|
+
function CollectionsFullViewComponent_Conditional_29_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
229
325
|
i0.ɵɵelementStart(0, "h3");
|
|
230
326
|
i0.ɵɵtext(1, "This collection is empty");
|
|
231
327
|
i0.ɵɵelementEnd();
|
|
@@ -237,12 +333,12 @@ function CollectionsFullViewComponent_Conditional_25_Conditional_4_Template(rf,
|
|
|
237
333
|
i0.ɵɵtext(6, " button above to add collections or artifacts");
|
|
238
334
|
i0.ɵɵelementEnd();
|
|
239
335
|
} }
|
|
240
|
-
function
|
|
241
|
-
i0.ɵɵelementStart(0, "div",
|
|
242
|
-
i0.ɵɵelement(1, "i",
|
|
243
|
-
i0.ɵɵconditionalCreate(2,
|
|
244
|
-
i0.ɵɵconditionalCreate(3,
|
|
245
|
-
i0.ɵɵconditionalCreate(4,
|
|
336
|
+
function CollectionsFullViewComponent_Conditional_29_Template(rf, ctx) { if (rf & 1) {
|
|
337
|
+
i0.ɵɵelementStart(0, "div", 25);
|
|
338
|
+
i0.ɵɵelement(1, "i", 76);
|
|
339
|
+
i0.ɵɵconditionalCreate(2, CollectionsFullViewComponent_Conditional_29_Conditional_2_Template, 4, 0);
|
|
340
|
+
i0.ɵɵconditionalCreate(3, CollectionsFullViewComponent_Conditional_29_Conditional_3_Template, 5, 1);
|
|
341
|
+
i0.ɵɵconditionalCreate(4, CollectionsFullViewComponent_Conditional_29_Conditional_4_Template, 7, 0);
|
|
246
342
|
i0.ɵɵelementEnd();
|
|
247
343
|
} if (rf & 2) {
|
|
248
344
|
const ctx_r2 = i0.ɵɵnextContext();
|
|
@@ -253,172 +349,165 @@ function CollectionsFullViewComponent_Conditional_25_Template(rf, ctx) { if (rf
|
|
|
253
349
|
i0.ɵɵadvance();
|
|
254
350
|
i0.ɵɵconditional(!ctx_r2.searchQuery && ctx_r2.currentCollectionId ? 4 : -1);
|
|
255
351
|
} }
|
|
256
|
-
function
|
|
257
|
-
|
|
258
|
-
i0.ɵɵ
|
|
259
|
-
i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_26_For_2_Conditional_1_Template_div_click_0_listener($event) { i0.ɵɵrestoreView(_r18); const item_r17 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.toggleItemSelection(item_r17, $event)); });
|
|
260
|
-
i0.ɵɵelement(1, "i", 9);
|
|
261
|
-
i0.ɵɵelementEnd();
|
|
262
|
-
} if (rf & 2) {
|
|
263
|
-
const item_r17 = i0.ɵɵnextContext().$implicit;
|
|
264
|
-
i0.ɵɵadvance();
|
|
265
|
-
i0.ɵɵproperty("ngClass", item_r17.selected ? "fa-check-circle" : "fa-circle");
|
|
266
|
-
} }
|
|
267
|
-
function CollectionsFullViewComponent_Conditional_26_For_2_Conditional_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
268
|
-
i0.ɵɵelementStart(0, "div", 68);
|
|
269
|
-
i0.ɵɵelement(1, "i", 74);
|
|
352
|
+
function CollectionsFullViewComponent_Conditional_30_For_2_Conditional_3_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
353
|
+
i0.ɵɵelementStart(0, "div", 86);
|
|
354
|
+
i0.ɵɵelement(1, "i", 92);
|
|
270
355
|
i0.ɵɵelementEnd();
|
|
271
356
|
} }
|
|
272
|
-
function
|
|
273
|
-
i0.ɵɵelementStart(0, "div",
|
|
357
|
+
function CollectionsFullViewComponent_Conditional_30_For_2_Conditional_3_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
358
|
+
i0.ɵɵelementStart(0, "div", 89);
|
|
274
359
|
i0.ɵɵtext(1);
|
|
275
360
|
i0.ɵɵelementEnd();
|
|
276
361
|
} if (rf & 2) {
|
|
277
|
-
const
|
|
362
|
+
const item_r23 = i0.ɵɵnextContext(2).$implicit;
|
|
278
363
|
i0.ɵɵadvance();
|
|
279
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
364
|
+
i0.ɵɵtextInterpolate1(" ", item_r23.description, " ");
|
|
280
365
|
} }
|
|
281
|
-
function
|
|
282
|
-
i0.ɵɵelementStart(0, "div",
|
|
366
|
+
function CollectionsFullViewComponent_Conditional_30_For_2_Conditional_3_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
367
|
+
i0.ɵɵelementStart(0, "div", 90);
|
|
283
368
|
i0.ɵɵtext(1);
|
|
284
369
|
i0.ɵɵelementEnd();
|
|
285
370
|
} if (rf & 2) {
|
|
286
|
-
const
|
|
371
|
+
const item_r23 = i0.ɵɵnextContext(2).$implicit;
|
|
287
372
|
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
288
373
|
i0.ɵɵadvance();
|
|
289
|
-
i0.ɵɵtextInterpolate1(" ", ctx_r2.getItemCountText(
|
|
374
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r2.getItemCountText(item_r23.itemCount), " ");
|
|
290
375
|
} }
|
|
291
|
-
function
|
|
292
|
-
i0.ɵɵelementStart(0, "div",
|
|
293
|
-
i0.ɵɵelement(1, "i",
|
|
376
|
+
function CollectionsFullViewComponent_Conditional_30_For_2_Conditional_3_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
377
|
+
i0.ɵɵelementStart(0, "div", 91);
|
|
378
|
+
i0.ɵɵelement(1, "i", 93);
|
|
294
379
|
i0.ɵɵtext(2);
|
|
295
380
|
i0.ɵɵelementEnd();
|
|
296
381
|
} if (rf & 2) {
|
|
297
|
-
const
|
|
382
|
+
const item_r23 = i0.ɵɵnextContext(2).$implicit;
|
|
298
383
|
i0.ɵɵadvance(2);
|
|
299
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
384
|
+
i0.ɵɵtextInterpolate1(" ", item_r23.owner, " ");
|
|
300
385
|
} }
|
|
301
|
-
function
|
|
302
|
-
i0.ɵɵelementStart(0, "div",
|
|
303
|
-
i0.ɵɵelement(2, "i",
|
|
304
|
-
i0.ɵɵconditionalCreate(3,
|
|
386
|
+
function CollectionsFullViewComponent_Conditional_30_For_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
387
|
+
i0.ɵɵelementStart(0, "div", 84)(1, "div", 85);
|
|
388
|
+
i0.ɵɵelement(2, "i", 68);
|
|
389
|
+
i0.ɵɵconditionalCreate(3, CollectionsFullViewComponent_Conditional_30_For_2_Conditional_3_Conditional_3_Template, 2, 0, "div", 86);
|
|
305
390
|
i0.ɵɵelementEnd();
|
|
306
|
-
i0.ɵɵelementStart(4, "div",
|
|
391
|
+
i0.ɵɵelementStart(4, "div", 87)(5, "div", 88);
|
|
307
392
|
i0.ɵɵtext(6);
|
|
308
393
|
i0.ɵɵelementEnd();
|
|
309
|
-
i0.ɵɵconditionalCreate(7,
|
|
310
|
-
i0.ɵɵconditionalCreate(8,
|
|
311
|
-
i0.ɵɵconditionalCreate(9,
|
|
394
|
+
i0.ɵɵconditionalCreate(7, CollectionsFullViewComponent_Conditional_30_For_2_Conditional_3_Conditional_7_Template, 2, 1, "div", 89);
|
|
395
|
+
i0.ɵɵconditionalCreate(8, CollectionsFullViewComponent_Conditional_30_For_2_Conditional_3_Conditional_8_Template, 2, 1, "div", 90);
|
|
396
|
+
i0.ɵɵconditionalCreate(9, CollectionsFullViewComponent_Conditional_30_For_2_Conditional_3_Conditional_9_Template, 3, 1, "div", 91);
|
|
312
397
|
i0.ɵɵelementEnd()();
|
|
313
398
|
} if (rf & 2) {
|
|
314
|
-
const
|
|
315
|
-
i0.ɵɵproperty("title",
|
|
399
|
+
const item_r23 = i0.ɵɵnextContext().$implicit;
|
|
400
|
+
i0.ɵɵproperty("title", item_r23.description || item_r23.name);
|
|
316
401
|
i0.ɵɵadvance(3);
|
|
317
|
-
i0.ɵɵconditional(
|
|
402
|
+
i0.ɵɵconditional(item_r23.isShared ? 3 : -1);
|
|
318
403
|
i0.ɵɵadvance(3);
|
|
319
|
-
i0.ɵɵtextInterpolate(
|
|
404
|
+
i0.ɵɵtextInterpolate(item_r23.name);
|
|
320
405
|
i0.ɵɵadvance();
|
|
321
|
-
i0.ɵɵconditional(
|
|
406
|
+
i0.ɵɵconditional(item_r23.description ? 7 : -1);
|
|
322
407
|
i0.ɵɵadvance();
|
|
323
|
-
i0.ɵɵconditional(
|
|
408
|
+
i0.ɵɵconditional(item_r23.itemCount !== undefined ? 8 : -1);
|
|
324
409
|
i0.ɵɵadvance();
|
|
325
|
-
i0.ɵɵconditional(
|
|
410
|
+
i0.ɵɵconditional(item_r23.isShared && item_r23.owner ? 9 : -1);
|
|
326
411
|
} }
|
|
327
|
-
function
|
|
328
|
-
i0.ɵɵelementStart(0, "div",
|
|
412
|
+
function CollectionsFullViewComponent_Conditional_30_For_2_Conditional_4_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
413
|
+
i0.ɵɵelementStart(0, "div", 89);
|
|
329
414
|
i0.ɵɵtext(1);
|
|
330
415
|
i0.ɵɵelementEnd();
|
|
331
416
|
} if (rf & 2) {
|
|
332
|
-
const
|
|
417
|
+
const item_r23 = i0.ɵɵnextContext(2).$implicit;
|
|
333
418
|
i0.ɵɵadvance();
|
|
334
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
419
|
+
i0.ɵɵtextInterpolate1(" ", item_r23.description, " ");
|
|
335
420
|
} }
|
|
336
|
-
function
|
|
337
|
-
i0.ɵɵelementStart(0, "span",
|
|
421
|
+
function CollectionsFullViewComponent_Conditional_30_For_2_Conditional_4_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
422
|
+
i0.ɵɵelementStart(0, "span", 95);
|
|
338
423
|
i0.ɵɵtext(1);
|
|
339
424
|
i0.ɵɵelementEnd();
|
|
340
425
|
} if (rf & 2) {
|
|
341
|
-
const
|
|
426
|
+
const item_r23 = i0.ɵɵnextContext(2).$implicit;
|
|
342
427
|
i0.ɵɵadvance();
|
|
343
|
-
i0.ɵɵtextInterpolate1(" v",
|
|
428
|
+
i0.ɵɵtextInterpolate1(" v", item_r23.versionNumber, " ");
|
|
344
429
|
} }
|
|
345
|
-
function
|
|
346
|
-
i0.ɵɵelementStart(0, "span",
|
|
430
|
+
function CollectionsFullViewComponent_Conditional_30_For_2_Conditional_4_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
431
|
+
i0.ɵɵelementStart(0, "span", 96);
|
|
347
432
|
i0.ɵɵtext(1);
|
|
348
433
|
i0.ɵɵelementEnd();
|
|
349
434
|
} if (rf & 2) {
|
|
350
|
-
const
|
|
435
|
+
const item_r23 = i0.ɵɵnextContext(2).$implicit;
|
|
351
436
|
i0.ɵɵadvance();
|
|
352
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
437
|
+
i0.ɵɵtextInterpolate1(" ", item_r23.artifactType, " ");
|
|
353
438
|
} }
|
|
354
|
-
function
|
|
355
|
-
i0.ɵɵelementStart(0, "div",
|
|
356
|
-
i0.ɵɵelement(2, "i",
|
|
439
|
+
function CollectionsFullViewComponent_Conditional_30_For_2_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
440
|
+
i0.ɵɵelementStart(0, "div", 84)(1, "div", 94);
|
|
441
|
+
i0.ɵɵelement(2, "i", 11);
|
|
357
442
|
i0.ɵɵelementEnd();
|
|
358
|
-
i0.ɵɵelementStart(3, "div",
|
|
443
|
+
i0.ɵɵelementStart(3, "div", 87)(4, "div", 88);
|
|
359
444
|
i0.ɵɵtext(5);
|
|
360
445
|
i0.ɵɵelementEnd();
|
|
361
|
-
i0.ɵɵconditionalCreate(6,
|
|
362
|
-
i0.ɵɵelementStart(7, "div",
|
|
363
|
-
i0.ɵɵconditionalCreate(8,
|
|
364
|
-
i0.ɵɵconditionalCreate(9,
|
|
446
|
+
i0.ɵɵconditionalCreate(6, CollectionsFullViewComponent_Conditional_30_For_2_Conditional_4_Conditional_6_Template, 2, 1, "div", 89);
|
|
447
|
+
i0.ɵɵelementStart(7, "div", 90);
|
|
448
|
+
i0.ɵɵconditionalCreate(8, CollectionsFullViewComponent_Conditional_30_For_2_Conditional_4_Conditional_8_Template, 2, 1, "span", 95);
|
|
449
|
+
i0.ɵɵconditionalCreate(9, CollectionsFullViewComponent_Conditional_30_For_2_Conditional_4_Conditional_9_Template, 2, 1, "span", 96);
|
|
365
450
|
i0.ɵɵelementEnd()()();
|
|
366
451
|
} if (rf & 2) {
|
|
367
|
-
const
|
|
368
|
-
i0.ɵɵproperty("title",
|
|
452
|
+
const item_r23 = i0.ɵɵnextContext().$implicit;
|
|
453
|
+
i0.ɵɵproperty("title", item_r23.description || item_r23.name);
|
|
369
454
|
i0.ɵɵadvance(2);
|
|
370
|
-
i0.ɵɵproperty("ngClass",
|
|
455
|
+
i0.ɵɵproperty("ngClass", item_r23.icon);
|
|
371
456
|
i0.ɵɵadvance(3);
|
|
372
|
-
i0.ɵɵtextInterpolate(
|
|
457
|
+
i0.ɵɵtextInterpolate(item_r23.name);
|
|
373
458
|
i0.ɵɵadvance();
|
|
374
|
-
i0.ɵɵconditional(
|
|
459
|
+
i0.ɵɵconditional(item_r23.description ? 6 : -1);
|
|
375
460
|
i0.ɵɵadvance(2);
|
|
376
|
-
i0.ɵɵconditional(
|
|
461
|
+
i0.ɵɵconditional(item_r23.versionNumber ? 8 : -1);
|
|
377
462
|
i0.ɵɵadvance();
|
|
378
|
-
i0.ɵɵconditional(
|
|
463
|
+
i0.ɵɵconditional(item_r23.artifactType ? 9 : -1);
|
|
379
464
|
} }
|
|
380
|
-
function
|
|
381
|
-
const
|
|
382
|
-
i0.ɵɵelementStart(0, "div",
|
|
383
|
-
i0.ɵɵlistener("click", function
|
|
384
|
-
i0.ɵɵ
|
|
385
|
-
i0.ɵɵ
|
|
386
|
-
i0.ɵɵ
|
|
465
|
+
function CollectionsFullViewComponent_Conditional_30_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
466
|
+
const _r22 = i0.ɵɵgetCurrentView();
|
|
467
|
+
i0.ɵɵelementStart(0, "div", 82);
|
|
468
|
+
i0.ɵɵlistener("dragstart", function CollectionsFullViewComponent_Conditional_30_For_2_Template_div_dragstart_0_listener($event) { const item_r23 = i0.ɵɵrestoreView(_r22).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onItemDragStart(item_r23, $event)); })("dragend", function CollectionsFullViewComponent_Conditional_30_For_2_Template_div_dragend_0_listener() { i0.ɵɵrestoreView(_r22); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onItemDragEnd()); })("dragover", function CollectionsFullViewComponent_Conditional_30_For_2_Template_div_dragover_0_listener($event) { const item_r23 = i0.ɵɵrestoreView(_r22).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(item_r23.type === "folder" ? ctx_r2.onFolderItemDragOver(item_r23, $event) : null); })("dragleave", function CollectionsFullViewComponent_Conditional_30_For_2_Template_div_dragleave_0_listener() { const item_r23 = i0.ɵɵrestoreView(_r22).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(item_r23.type === "folder" ? ctx_r2.onDragLeave(item_r23.id) : null); })("drop", function CollectionsFullViewComponent_Conditional_30_For_2_Template_div_drop_0_listener($event) { const item_r23 = i0.ɵɵrestoreView(_r22).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(item_r23.type === "folder" ? ctx_r2.onFolderItemDrop(item_r23, $event) : null); })("click", function CollectionsFullViewComponent_Conditional_30_For_2_Template_div_click_0_listener($event) { const item_r23 = i0.ɵɵrestoreView(_r22).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onItemClick(item_r23, $event)); })("dblclick", function CollectionsFullViewComponent_Conditional_30_For_2_Template_div_dblclick_0_listener($event) { const item_r23 = i0.ɵɵrestoreView(_r22).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onItemDoubleClick(item_r23, $event)); })("contextmenu", function CollectionsFullViewComponent_Conditional_30_For_2_Template_div_contextmenu_0_listener($event) { const item_r23 = i0.ɵɵrestoreView(_r22).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onItemContextMenu(item_r23, $event)); });
|
|
469
|
+
i0.ɵɵelementStart(1, "div", 83);
|
|
470
|
+
i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_30_For_2_Template_div_click_1_listener($event) { const item_r23 = i0.ɵɵrestoreView(_r22).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onCheckboxClick(item_r23, $event)); });
|
|
471
|
+
i0.ɵɵelement(2, "i", 11);
|
|
472
|
+
i0.ɵɵelementEnd();
|
|
473
|
+
i0.ɵɵconditionalCreate(3, CollectionsFullViewComponent_Conditional_30_For_2_Conditional_3_Template, 10, 6, "div", 84);
|
|
474
|
+
i0.ɵɵconditionalCreate(4, CollectionsFullViewComponent_Conditional_30_For_2_Conditional_4_Template, 10, 6, "div", 84);
|
|
387
475
|
i0.ɵɵelementEnd();
|
|
388
476
|
} if (rf & 2) {
|
|
389
|
-
const
|
|
477
|
+
const item_r23 = ctx.$implicit;
|
|
390
478
|
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
391
|
-
i0.ɵɵclassProp("selected",
|
|
392
|
-
i0.ɵɵ
|
|
393
|
-
i0.ɵɵ
|
|
479
|
+
i0.ɵɵclassProp("selected", item_r23.selected)("active", item_r23.type === "artifact" && ctx_r2.IsArtifactActive(item_r23))("dragging", ctx_r2.draggedItemIds.includes(item_r23.id))("drag-over", ctx_r2.dragOverTargetId === item_r23.id);
|
|
480
|
+
i0.ɵɵproperty("draggable", true);
|
|
481
|
+
i0.ɵɵadvance(2);
|
|
482
|
+
i0.ɵɵproperty("ngClass", item_r23.selected ? "fa-check-circle" : "fa-circle");
|
|
394
483
|
i0.ɵɵadvance();
|
|
395
|
-
i0.ɵɵconditional(
|
|
484
|
+
i0.ɵɵconditional(item_r23.type === "folder" ? 3 : -1);
|
|
396
485
|
i0.ɵɵadvance();
|
|
397
|
-
i0.ɵɵconditional(
|
|
486
|
+
i0.ɵɵconditional(item_r23.type === "artifact" ? 4 : -1);
|
|
398
487
|
} }
|
|
399
|
-
function
|
|
400
|
-
const
|
|
401
|
-
i0.ɵɵelementStart(0, "div",
|
|
488
|
+
function CollectionsFullViewComponent_Conditional_30_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
489
|
+
const _r24 = i0.ɵɵgetCurrentView();
|
|
490
|
+
i0.ɵɵelementStart(0, "div", 81)(1, "span", 97);
|
|
402
491
|
i0.ɵɵtext(2);
|
|
403
492
|
i0.ɵɵelementEnd();
|
|
404
|
-
i0.ɵɵelementStart(3, "div",
|
|
405
|
-
i0.ɵɵlistener("click", function
|
|
406
|
-
i0.ɵɵelement(5, "i",
|
|
493
|
+
i0.ɵɵelementStart(3, "div", 98)(4, "button", 99);
|
|
494
|
+
i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_30_Conditional_3_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r24); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.GoToPage(1)); });
|
|
495
|
+
i0.ɵɵelement(5, "i", 100);
|
|
407
496
|
i0.ɵɵelementEnd();
|
|
408
|
-
i0.ɵɵelementStart(6, "button",
|
|
409
|
-
i0.ɵɵlistener("click", function
|
|
410
|
-
i0.ɵɵelement(7, "i",
|
|
497
|
+
i0.ɵɵelementStart(6, "button", 101);
|
|
498
|
+
i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_30_Conditional_3_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r24); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.GoToPage(ctx_r2.CurrentPage - 1)); });
|
|
499
|
+
i0.ɵɵelement(7, "i", 102);
|
|
411
500
|
i0.ɵɵelementEnd();
|
|
412
|
-
i0.ɵɵelementStart(8, "span",
|
|
501
|
+
i0.ɵɵelementStart(8, "span", 103);
|
|
413
502
|
i0.ɵɵtext(9);
|
|
414
503
|
i0.ɵɵelementEnd();
|
|
415
|
-
i0.ɵɵelementStart(10, "button",
|
|
416
|
-
i0.ɵɵlistener("click", function
|
|
417
|
-
i0.ɵɵelement(11, "i",
|
|
504
|
+
i0.ɵɵelementStart(10, "button", 104);
|
|
505
|
+
i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_30_Conditional_3_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r24); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.GoToPage(ctx_r2.CurrentPage + 1)); });
|
|
506
|
+
i0.ɵɵelement(11, "i", 105);
|
|
418
507
|
i0.ɵɵelementEnd();
|
|
419
|
-
i0.ɵɵelementStart(12, "button",
|
|
420
|
-
i0.ɵɵlistener("click", function
|
|
421
|
-
i0.ɵɵelement(13, "i",
|
|
508
|
+
i0.ɵɵelementStart(12, "button", 106);
|
|
509
|
+
i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_30_Conditional_3_Template_button_click_12_listener() { i0.ɵɵrestoreView(_r24); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.GoToPage(ctx_r2.TotalPages)); });
|
|
510
|
+
i0.ɵɵelement(13, "i", 107);
|
|
422
511
|
i0.ɵɵelementEnd()()();
|
|
423
512
|
} if (rf & 2) {
|
|
424
513
|
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
@@ -435,11 +524,11 @@ function CollectionsFullViewComponent_Conditional_26_Conditional_3_Template(rf,
|
|
|
435
524
|
i0.ɵɵadvance(2);
|
|
436
525
|
i0.ɵɵproperty("disabled", ctx_r2.CurrentPage === ctx_r2.TotalPages);
|
|
437
526
|
} }
|
|
438
|
-
function
|
|
439
|
-
i0.ɵɵelementStart(0, "div",
|
|
440
|
-
i0.ɵɵrepeaterCreate(1,
|
|
527
|
+
function CollectionsFullViewComponent_Conditional_30_Template(rf, ctx) { if (rf & 1) {
|
|
528
|
+
i0.ɵɵelementStart(0, "div", 79);
|
|
529
|
+
i0.ɵɵrepeaterCreate(1, CollectionsFullViewComponent_Conditional_30_For_2_Template, 5, 12, "div", 80, i0.ɵɵrepeaterTrackByIdentity);
|
|
441
530
|
i0.ɵɵelementEnd();
|
|
442
|
-
i0.ɵɵconditionalCreate(3,
|
|
531
|
+
i0.ɵɵconditionalCreate(3, CollectionsFullViewComponent_Conditional_30_Conditional_3_Template, 14, 9, "div", 81);
|
|
443
532
|
} if (rf & 2) {
|
|
444
533
|
const ctx_r2 = i0.ɵɵnextContext();
|
|
445
534
|
i0.ɵɵclassProp("select-mode", ctx_r2.isSelectMode);
|
|
@@ -448,155 +537,138 @@ function CollectionsFullViewComponent_Conditional_26_Template(rf, ctx) { if (rf
|
|
|
448
537
|
i0.ɵɵadvance(2);
|
|
449
538
|
i0.ɵɵconditional(ctx_r2.TotalPages > 1 ? 3 : -1);
|
|
450
539
|
} }
|
|
451
|
-
function
|
|
452
|
-
|
|
453
|
-
i0.ɵɵelementStart(0, "th", 92)(1, "i", 98);
|
|
454
|
-
i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_27_Conditional_4_Template_i_click_1_listener() { i0.ɵɵrestoreView(_r21); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.selectedItems.size === ctx_r2.unifiedItems.length ? ctx_r2.clearSelection() : ctx_r2.selectAll()); });
|
|
455
|
-
i0.ɵɵelementEnd()();
|
|
456
|
-
} if (rf & 2) {
|
|
457
|
-
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
458
|
-
i0.ɵɵadvance();
|
|
459
|
-
i0.ɵɵproperty("ngClass", ctx_r2.selectedItems.size === ctx_r2.unifiedItems.length ? "fa-check-square" : "fa-square");
|
|
460
|
-
} }
|
|
461
|
-
function CollectionsFullViewComponent_Conditional_27_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
462
|
-
i0.ɵɵelement(0, "i", 27);
|
|
540
|
+
function CollectionsFullViewComponent_Conditional_31_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
541
|
+
i0.ɵɵelement(0, "i", 33);
|
|
463
542
|
} }
|
|
464
|
-
function
|
|
465
|
-
i0.ɵɵelement(0, "i",
|
|
543
|
+
function CollectionsFullViewComponent_Conditional_31_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
544
|
+
i0.ɵɵelement(0, "i", 11);
|
|
466
545
|
} if (rf & 2) {
|
|
467
546
|
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
468
547
|
i0.ɵɵproperty("ngClass", ctx_r2.sortOrder === "asc" ? "fa-sort-up" : "fa-sort-down");
|
|
469
548
|
} }
|
|
470
|
-
function
|
|
471
|
-
i0.ɵɵelement(0, "i",
|
|
549
|
+
function CollectionsFullViewComponent_Conditional_31_Conditional_14_Template(rf, ctx) { if (rf & 1) {
|
|
550
|
+
i0.ɵɵelement(0, "i", 33);
|
|
472
551
|
} }
|
|
473
|
-
function
|
|
474
|
-
i0.ɵɵelement(0, "i",
|
|
552
|
+
function CollectionsFullViewComponent_Conditional_31_Conditional_15_Template(rf, ctx) { if (rf & 1) {
|
|
553
|
+
i0.ɵɵelement(0, "i", 11);
|
|
475
554
|
} if (rf & 2) {
|
|
476
555
|
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
477
556
|
i0.ɵɵproperty("ngClass", ctx_r2.sortOrder === "asc" ? "fa-sort-up" : "fa-sort-down");
|
|
478
557
|
} }
|
|
479
|
-
function
|
|
480
|
-
i0.ɵɵelement(0, "i",
|
|
558
|
+
function CollectionsFullViewComponent_Conditional_31_Conditional_19_Template(rf, ctx) { if (rf & 1) {
|
|
559
|
+
i0.ɵɵelement(0, "i", 33);
|
|
481
560
|
} }
|
|
482
|
-
function
|
|
483
|
-
i0.ɵɵelement(0, "i",
|
|
561
|
+
function CollectionsFullViewComponent_Conditional_31_Conditional_20_Template(rf, ctx) { if (rf & 1) {
|
|
562
|
+
i0.ɵɵelement(0, "i", 11);
|
|
484
563
|
} if (rf & 2) {
|
|
485
564
|
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
486
565
|
i0.ɵɵproperty("ngClass", ctx_r2.sortOrder === "asc" ? "fa-sort-up" : "fa-sort-down");
|
|
487
566
|
} }
|
|
488
|
-
function
|
|
489
|
-
|
|
490
|
-
i0.ɵɵelementStart(0, "td", 92)(1, "i", 98);
|
|
491
|
-
i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_27_For_24_Conditional_1_Template_i_click_1_listener($event) { i0.ɵɵrestoreView(_r24); const item_r23 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.toggleItemSelection(item_r23, $event)); });
|
|
492
|
-
i0.ɵɵelementEnd()();
|
|
493
|
-
} if (rf & 2) {
|
|
494
|
-
const item_r23 = i0.ɵɵnextContext().$implicit;
|
|
495
|
-
i0.ɵɵadvance();
|
|
496
|
-
i0.ɵɵproperty("ngClass", item_r23.selected ? "fa-check-circle" : "fa-circle");
|
|
497
|
-
} }
|
|
498
|
-
function CollectionsFullViewComponent_Conditional_27_For_24_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
499
|
-
i0.ɵɵelement(0, "i", 102);
|
|
567
|
+
function CollectionsFullViewComponent_Conditional_31_For_25_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
568
|
+
i0.ɵɵelement(0, "i", 120);
|
|
500
569
|
} }
|
|
501
|
-
function
|
|
570
|
+
function CollectionsFullViewComponent_Conditional_31_For_25_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
502
571
|
i0.ɵɵelementStart(0, "span");
|
|
503
572
|
i0.ɵɵtext(1, "Folder");
|
|
504
573
|
i0.ɵɵelementEnd();
|
|
505
574
|
} }
|
|
506
|
-
function
|
|
507
|
-
i0.ɵɵelementStart(0, "span",
|
|
575
|
+
function CollectionsFullViewComponent_Conditional_31_For_25_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
576
|
+
i0.ɵɵelementStart(0, "span", 96);
|
|
508
577
|
i0.ɵɵtext(1);
|
|
509
578
|
i0.ɵɵelementEnd();
|
|
510
579
|
} if (rf & 2) {
|
|
511
|
-
const
|
|
580
|
+
const item_r27 = i0.ɵɵnextContext().$implicit;
|
|
512
581
|
i0.ɵɵadvance();
|
|
513
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
582
|
+
i0.ɵɵtextInterpolate1(" ", item_r27.artifactType, " ");
|
|
514
583
|
} }
|
|
515
|
-
function
|
|
584
|
+
function CollectionsFullViewComponent_Conditional_31_For_25_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
516
585
|
i0.ɵɵelementStart(0, "span");
|
|
517
586
|
i0.ɵɵtext(1);
|
|
518
587
|
i0.ɵɵpipe(2, "date");
|
|
519
588
|
i0.ɵɵelementEnd();
|
|
520
589
|
} if (rf & 2) {
|
|
521
|
-
const
|
|
590
|
+
const item_r27 = i0.ɵɵnextContext().$implicit;
|
|
522
591
|
i0.ɵɵadvance();
|
|
523
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(2, 1,
|
|
592
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(2, 1, item_r27.lastModified, "short"), " ");
|
|
524
593
|
} }
|
|
525
|
-
function
|
|
594
|
+
function CollectionsFullViewComponent_Conditional_31_For_25_Conditional_15_Template(rf, ctx) { if (rf & 1) {
|
|
526
595
|
i0.ɵɵelementStart(0, "span");
|
|
527
596
|
i0.ɵɵtext(1);
|
|
528
597
|
i0.ɵɵelementEnd();
|
|
529
598
|
} if (rf & 2) {
|
|
530
|
-
const
|
|
599
|
+
const item_r27 = i0.ɵɵnextContext().$implicit;
|
|
531
600
|
i0.ɵɵadvance();
|
|
532
|
-
i0.ɵɵtextInterpolate(
|
|
601
|
+
i0.ɵɵtextInterpolate(item_r27.owner);
|
|
533
602
|
} }
|
|
534
|
-
function
|
|
535
|
-
const
|
|
536
|
-
i0.ɵɵelementStart(0, "tr",
|
|
537
|
-
i0.ɵɵlistener("click", function
|
|
538
|
-
i0.ɵɵ
|
|
539
|
-
i0.ɵɵ
|
|
540
|
-
i0.ɵɵ
|
|
541
|
-
i0.ɵɵelementStart(
|
|
542
|
-
i0.ɵɵ
|
|
603
|
+
function CollectionsFullViewComponent_Conditional_31_For_25_Template(rf, ctx) { if (rf & 1) {
|
|
604
|
+
const _r26 = i0.ɵɵgetCurrentView();
|
|
605
|
+
i0.ɵɵelementStart(0, "tr", 117);
|
|
606
|
+
i0.ɵɵlistener("dragstart", function CollectionsFullViewComponent_Conditional_31_For_25_Template_tr_dragstart_0_listener($event) { const item_r27 = i0.ɵɵrestoreView(_r26).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onItemDragStart(item_r27, $event)); })("dragend", function CollectionsFullViewComponent_Conditional_31_For_25_Template_tr_dragend_0_listener() { i0.ɵɵrestoreView(_r26); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onItemDragEnd()); })("dragover", function CollectionsFullViewComponent_Conditional_31_For_25_Template_tr_dragover_0_listener($event) { const item_r27 = i0.ɵɵrestoreView(_r26).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(item_r27.type === "folder" ? ctx_r2.onFolderItemDragOver(item_r27, $event) : null); })("dragleave", function CollectionsFullViewComponent_Conditional_31_For_25_Template_tr_dragleave_0_listener() { const item_r27 = i0.ɵɵrestoreView(_r26).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(item_r27.type === "folder" ? ctx_r2.onDragLeave(item_r27.id) : null); })("drop", function CollectionsFullViewComponent_Conditional_31_For_25_Template_tr_drop_0_listener($event) { const item_r27 = i0.ɵɵrestoreView(_r26).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(item_r27.type === "folder" ? ctx_r2.onFolderItemDrop(item_r27, $event) : null); })("click", function CollectionsFullViewComponent_Conditional_31_For_25_Template_tr_click_0_listener($event) { const item_r27 = i0.ɵɵrestoreView(_r26).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onItemClick(item_r27, $event)); })("dblclick", function CollectionsFullViewComponent_Conditional_31_For_25_Template_tr_dblclick_0_listener($event) { const item_r27 = i0.ɵɵrestoreView(_r26).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onItemDoubleClick(item_r27, $event)); })("contextmenu", function CollectionsFullViewComponent_Conditional_31_For_25_Template_tr_contextmenu_0_listener($event) { const item_r27 = i0.ɵɵrestoreView(_r26).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onItemContextMenu(item_r27, $event)); });
|
|
607
|
+
i0.ɵɵelementStart(1, "td", 110)(2, "i", 111);
|
|
608
|
+
i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_31_For_25_Template_i_click_2_listener($event) { const item_r27 = i0.ɵɵrestoreView(_r26).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onCheckboxClick(item_r27, $event)); });
|
|
609
|
+
i0.ɵɵelementEnd()();
|
|
610
|
+
i0.ɵɵelementStart(3, "td", 118)(4, "div", 119);
|
|
611
|
+
i0.ɵɵelement(5, "i", 11);
|
|
612
|
+
i0.ɵɵelementStart(6, "span");
|
|
613
|
+
i0.ɵɵtext(7);
|
|
543
614
|
i0.ɵɵelementEnd();
|
|
544
|
-
i0.ɵɵconditionalCreate(
|
|
615
|
+
i0.ɵɵconditionalCreate(8, CollectionsFullViewComponent_Conditional_31_For_25_Conditional_8_Template, 1, 0, "i", 120);
|
|
545
616
|
i0.ɵɵelementEnd()();
|
|
546
|
-
i0.ɵɵelementStart(
|
|
547
|
-
i0.ɵɵconditionalCreate(
|
|
548
|
-
i0.ɵɵconditionalCreate(
|
|
617
|
+
i0.ɵɵelementStart(9, "td", 121);
|
|
618
|
+
i0.ɵɵconditionalCreate(10, CollectionsFullViewComponent_Conditional_31_For_25_Conditional_10_Template, 2, 0, "span");
|
|
619
|
+
i0.ɵɵconditionalCreate(11, CollectionsFullViewComponent_Conditional_31_For_25_Conditional_11_Template, 2, 1, "span", 96);
|
|
549
620
|
i0.ɵɵelementEnd();
|
|
550
|
-
i0.ɵɵelementStart(
|
|
551
|
-
i0.ɵɵconditionalCreate(
|
|
621
|
+
i0.ɵɵelementStart(12, "td", 122);
|
|
622
|
+
i0.ɵɵconditionalCreate(13, CollectionsFullViewComponent_Conditional_31_For_25_Conditional_13_Template, 3, 4, "span");
|
|
552
623
|
i0.ɵɵelementEnd();
|
|
553
|
-
i0.ɵɵelementStart(
|
|
554
|
-
i0.ɵɵconditionalCreate(
|
|
624
|
+
i0.ɵɵelementStart(14, "td", 115);
|
|
625
|
+
i0.ɵɵconditionalCreate(15, CollectionsFullViewComponent_Conditional_31_For_25_Conditional_15_Template, 2, 1, "span");
|
|
555
626
|
i0.ɵɵelementEnd()();
|
|
556
627
|
} if (rf & 2) {
|
|
557
|
-
const
|
|
628
|
+
const item_r27 = ctx.$implicit;
|
|
558
629
|
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
559
|
-
i0.ɵɵclassProp("selected",
|
|
560
|
-
i0.ɵɵ
|
|
561
|
-
i0.ɵɵ
|
|
630
|
+
i0.ɵɵclassProp("selected", item_r27.selected)("active", item_r27.type === "artifact" && ctx_r2.IsArtifactActive(item_r27))("dragging", ctx_r2.draggedItemIds.includes(item_r27.id))("drag-over", ctx_r2.dragOverTargetId === item_r27.id);
|
|
631
|
+
i0.ɵɵproperty("draggable", true);
|
|
632
|
+
i0.ɵɵadvance(2);
|
|
633
|
+
i0.ɵɵproperty("ngClass", item_r27.selected ? "fa-check-circle" : "fa-circle");
|
|
562
634
|
i0.ɵɵadvance(3);
|
|
563
|
-
i0.ɵɵproperty("ngClass",
|
|
635
|
+
i0.ɵɵproperty("ngClass", item_r27.type === "folder" ? "fa-folder" : item_r27.icon);
|
|
564
636
|
i0.ɵɵadvance(2);
|
|
565
|
-
i0.ɵɵtextInterpolate(
|
|
637
|
+
i0.ɵɵtextInterpolate(item_r27.name);
|
|
566
638
|
i0.ɵɵadvance();
|
|
567
|
-
i0.ɵɵconditional(
|
|
639
|
+
i0.ɵɵconditional(item_r27.isShared ? 8 : -1);
|
|
568
640
|
i0.ɵɵadvance(2);
|
|
569
|
-
i0.ɵɵconditional(
|
|
641
|
+
i0.ɵɵconditional(item_r27.type === "folder" ? 10 : -1);
|
|
570
642
|
i0.ɵɵadvance();
|
|
571
|
-
i0.ɵɵconditional(
|
|
643
|
+
i0.ɵɵconditional(item_r27.type === "artifact" ? 11 : -1);
|
|
572
644
|
i0.ɵɵadvance(2);
|
|
573
|
-
i0.ɵɵconditional(
|
|
645
|
+
i0.ɵɵconditional(item_r27.lastModified ? 13 : -1);
|
|
574
646
|
i0.ɵɵadvance(2);
|
|
575
|
-
i0.ɵɵconditional(
|
|
647
|
+
i0.ɵɵconditional(item_r27.owner ? 15 : -1);
|
|
576
648
|
} }
|
|
577
|
-
function
|
|
578
|
-
const
|
|
579
|
-
i0.ɵɵelementStart(0, "div",
|
|
649
|
+
function CollectionsFullViewComponent_Conditional_31_Conditional_26_Template(rf, ctx) { if (rf & 1) {
|
|
650
|
+
const _r28 = i0.ɵɵgetCurrentView();
|
|
651
|
+
i0.ɵɵelementStart(0, "div", 81)(1, "span", 97);
|
|
580
652
|
i0.ɵɵtext(2);
|
|
581
653
|
i0.ɵɵelementEnd();
|
|
582
|
-
i0.ɵɵelementStart(3, "div",
|
|
583
|
-
i0.ɵɵlistener("click", function
|
|
584
|
-
i0.ɵɵelement(5, "i",
|
|
654
|
+
i0.ɵɵelementStart(3, "div", 98)(4, "button", 99);
|
|
655
|
+
i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_31_Conditional_26_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r28); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.GoToPage(1)); });
|
|
656
|
+
i0.ɵɵelement(5, "i", 100);
|
|
585
657
|
i0.ɵɵelementEnd();
|
|
586
|
-
i0.ɵɵelementStart(6, "button",
|
|
587
|
-
i0.ɵɵlistener("click", function
|
|
588
|
-
i0.ɵɵelement(7, "i",
|
|
658
|
+
i0.ɵɵelementStart(6, "button", 101);
|
|
659
|
+
i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_31_Conditional_26_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r28); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.GoToPage(ctx_r2.CurrentPage - 1)); });
|
|
660
|
+
i0.ɵɵelement(7, "i", 102);
|
|
589
661
|
i0.ɵɵelementEnd();
|
|
590
|
-
i0.ɵɵelementStart(8, "span",
|
|
662
|
+
i0.ɵɵelementStart(8, "span", 103);
|
|
591
663
|
i0.ɵɵtext(9);
|
|
592
664
|
i0.ɵɵelementEnd();
|
|
593
|
-
i0.ɵɵelementStart(10, "button",
|
|
594
|
-
i0.ɵɵlistener("click", function
|
|
595
|
-
i0.ɵɵelement(11, "i",
|
|
665
|
+
i0.ɵɵelementStart(10, "button", 104);
|
|
666
|
+
i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_31_Conditional_26_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r28); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.GoToPage(ctx_r2.CurrentPage + 1)); });
|
|
667
|
+
i0.ɵɵelement(11, "i", 105);
|
|
596
668
|
i0.ɵɵelementEnd();
|
|
597
|
-
i0.ɵɵelementStart(12, "button",
|
|
598
|
-
i0.ɵɵlistener("click", function
|
|
599
|
-
i0.ɵɵelement(13, "i",
|
|
669
|
+
i0.ɵɵelementStart(12, "button", 106);
|
|
670
|
+
i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_31_Conditional_26_Template_button_click_12_listener() { i0.ɵɵrestoreView(_r28); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.GoToPage(ctx_r2.TotalPages)); });
|
|
671
|
+
i0.ɵɵelement(13, "i", 107);
|
|
600
672
|
i0.ɵɵelementEnd()()();
|
|
601
673
|
} if (rf & 2) {
|
|
602
674
|
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
@@ -613,103 +685,151 @@ function CollectionsFullViewComponent_Conditional_27_Conditional_25_Template(rf,
|
|
|
613
685
|
i0.ɵɵadvance(2);
|
|
614
686
|
i0.ɵɵproperty("disabled", ctx_r2.CurrentPage === ctx_r2.TotalPages);
|
|
615
687
|
} }
|
|
616
|
-
function
|
|
617
|
-
const
|
|
618
|
-
i0.ɵɵelementStart(0, "div",
|
|
619
|
-
i0.ɵɵ
|
|
620
|
-
i0.ɵɵ
|
|
621
|
-
i0.ɵɵ
|
|
622
|
-
i0.ɵɵ
|
|
623
|
-
i0.ɵɵ
|
|
688
|
+
function CollectionsFullViewComponent_Conditional_31_Template(rf, ctx) { if (rf & 1) {
|
|
689
|
+
const _r25 = i0.ɵɵgetCurrentView();
|
|
690
|
+
i0.ɵɵelementStart(0, "div", 108)(1, "table", 109)(2, "thead")(3, "tr")(4, "th", 110)(5, "i", 111);
|
|
691
|
+
i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_31_Template_i_click_5_listener() { i0.ɵɵrestoreView(_r25); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.selectedItems.size === ctx_r2.unifiedItems.length ? ctx_r2.clearSelection() : ctx_r2.selectAll()); });
|
|
692
|
+
i0.ɵɵelementEnd()();
|
|
693
|
+
i0.ɵɵelementStart(6, "th", 112);
|
|
694
|
+
i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_31_Template_th_click_6_listener() { i0.ɵɵrestoreView(_r25); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.setSortBy("name")); });
|
|
695
|
+
i0.ɵɵelementStart(7, "span");
|
|
696
|
+
i0.ɵɵtext(8, "Name");
|
|
624
697
|
i0.ɵɵelementEnd();
|
|
625
|
-
i0.ɵɵconditionalCreate(
|
|
626
|
-
i0.ɵɵconditionalCreate(
|
|
698
|
+
i0.ɵɵconditionalCreate(9, CollectionsFullViewComponent_Conditional_31_Conditional_9_Template, 1, 0, "i", 33);
|
|
699
|
+
i0.ɵɵconditionalCreate(10, CollectionsFullViewComponent_Conditional_31_Conditional_10_Template, 1, 1, "i", 11);
|
|
627
700
|
i0.ɵɵelementEnd();
|
|
628
|
-
i0.ɵɵelementStart(
|
|
629
|
-
i0.ɵɵlistener("click", function
|
|
630
|
-
i0.ɵɵelementStart(
|
|
631
|
-
i0.ɵɵtext(
|
|
701
|
+
i0.ɵɵelementStart(11, "th", 113);
|
|
702
|
+
i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_31_Template_th_click_11_listener() { i0.ɵɵrestoreView(_r25); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.setSortBy("type")); });
|
|
703
|
+
i0.ɵɵelementStart(12, "span");
|
|
704
|
+
i0.ɵɵtext(13, "Type");
|
|
632
705
|
i0.ɵɵelementEnd();
|
|
633
|
-
i0.ɵɵconditionalCreate(
|
|
634
|
-
i0.ɵɵconditionalCreate(
|
|
706
|
+
i0.ɵɵconditionalCreate(14, CollectionsFullViewComponent_Conditional_31_Conditional_14_Template, 1, 0, "i", 33);
|
|
707
|
+
i0.ɵɵconditionalCreate(15, CollectionsFullViewComponent_Conditional_31_Conditional_15_Template, 1, 1, "i", 11);
|
|
635
708
|
i0.ɵɵelementEnd();
|
|
636
|
-
i0.ɵɵelementStart(
|
|
637
|
-
i0.ɵɵlistener("click", function
|
|
638
|
-
i0.ɵɵelementStart(
|
|
639
|
-
i0.ɵɵtext(
|
|
709
|
+
i0.ɵɵelementStart(16, "th", 114);
|
|
710
|
+
i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_31_Template_th_click_16_listener() { i0.ɵɵrestoreView(_r25); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.setSortBy("date")); });
|
|
711
|
+
i0.ɵɵelementStart(17, "span");
|
|
712
|
+
i0.ɵɵtext(18, "Modified");
|
|
640
713
|
i0.ɵɵelementEnd();
|
|
641
|
-
i0.ɵɵconditionalCreate(
|
|
642
|
-
i0.ɵɵconditionalCreate(
|
|
714
|
+
i0.ɵɵconditionalCreate(19, CollectionsFullViewComponent_Conditional_31_Conditional_19_Template, 1, 0, "i", 33);
|
|
715
|
+
i0.ɵɵconditionalCreate(20, CollectionsFullViewComponent_Conditional_31_Conditional_20_Template, 1, 1, "i", 11);
|
|
643
716
|
i0.ɵɵelementEnd();
|
|
644
|
-
i0.ɵɵelementStart(
|
|
645
|
-
i0.ɵɵtext(
|
|
717
|
+
i0.ɵɵelementStart(21, "th", 115);
|
|
718
|
+
i0.ɵɵtext(22, "Owner");
|
|
646
719
|
i0.ɵɵelementEnd()()();
|
|
647
|
-
i0.ɵɵelementStart(
|
|
648
|
-
i0.ɵɵrepeaterCreate(
|
|
720
|
+
i0.ɵɵelementStart(23, "tbody");
|
|
721
|
+
i0.ɵɵrepeaterCreate(24, CollectionsFullViewComponent_Conditional_31_For_25_Template, 16, 17, "tr", 116, i0.ɵɵrepeaterTrackByIdentity);
|
|
649
722
|
i0.ɵɵelementEnd()()();
|
|
650
|
-
i0.ɵɵconditionalCreate(
|
|
723
|
+
i0.ɵɵconditionalCreate(26, CollectionsFullViewComponent_Conditional_31_Conditional_26_Template, 14, 9, "div", 81);
|
|
651
724
|
} if (rf & 2) {
|
|
652
725
|
const ctx_r2 = i0.ɵɵnextContext();
|
|
653
726
|
i0.ɵɵclassProp("select-mode", ctx_r2.isSelectMode);
|
|
727
|
+
i0.ɵɵadvance(5);
|
|
728
|
+
i0.ɵɵproperty("ngClass", ctx_r2.selectedItems.size === ctx_r2.unifiedItems.length && ctx_r2.unifiedItems.length > 0 ? "fa-check-square" : "fa-square");
|
|
654
729
|
i0.ɵɵadvance(4);
|
|
655
|
-
i0.ɵɵconditional(ctx_r2.
|
|
656
|
-
i0.ɵɵadvance(4);
|
|
657
|
-
i0.ɵɵconditional(ctx_r2.sortBy !== "name" ? 8 : -1);
|
|
730
|
+
i0.ɵɵconditional(ctx_r2.sortBy !== "name" ? 9 : -1);
|
|
658
731
|
i0.ɵɵadvance();
|
|
659
|
-
i0.ɵɵconditional(ctx_r2.sortBy === "name" ?
|
|
732
|
+
i0.ɵɵconditional(ctx_r2.sortBy === "name" ? 10 : -1);
|
|
660
733
|
i0.ɵɵadvance(4);
|
|
661
|
-
i0.ɵɵconditional(ctx_r2.sortBy !== "type" ?
|
|
734
|
+
i0.ɵɵconditional(ctx_r2.sortBy !== "type" ? 14 : -1);
|
|
662
735
|
i0.ɵɵadvance();
|
|
663
|
-
i0.ɵɵconditional(ctx_r2.sortBy === "type" ?
|
|
736
|
+
i0.ɵɵconditional(ctx_r2.sortBy === "type" ? 15 : -1);
|
|
664
737
|
i0.ɵɵadvance(4);
|
|
665
|
-
i0.ɵɵconditional(ctx_r2.sortBy !== "date" ?
|
|
738
|
+
i0.ɵɵconditional(ctx_r2.sortBy !== "date" ? 19 : -1);
|
|
666
739
|
i0.ɵɵadvance();
|
|
667
|
-
i0.ɵɵconditional(ctx_r2.sortBy === "date" ?
|
|
740
|
+
i0.ɵɵconditional(ctx_r2.sortBy === "date" ? 20 : -1);
|
|
668
741
|
i0.ɵɵadvance(4);
|
|
669
742
|
i0.ɵɵrepeater(ctx_r2.PagedItems);
|
|
670
743
|
i0.ɵɵadvance(2);
|
|
671
|
-
i0.ɵɵconditional(ctx_r2.TotalPages > 1 ?
|
|
744
|
+
i0.ɵɵconditional(ctx_r2.TotalPages > 1 ? 26 : -1);
|
|
672
745
|
} }
|
|
673
|
-
function
|
|
674
|
-
const
|
|
675
|
-
i0.ɵɵelementStart(0, "
|
|
676
|
-
i0.ɵɵ
|
|
677
|
-
i0.ɵɵ
|
|
746
|
+
function CollectionsFullViewComponent_Conditional_32_For_7_Template(rf, ctx) { if (rf & 1) {
|
|
747
|
+
const _r30 = i0.ɵɵgetCurrentView();
|
|
748
|
+
i0.ɵɵelementStart(0, "span", 125);
|
|
749
|
+
i0.ɵɵelement(1, "i", 11);
|
|
750
|
+
i0.ɵɵelementStart(2, "span", 129);
|
|
751
|
+
i0.ɵɵtext(3);
|
|
752
|
+
i0.ɵɵelementEnd();
|
|
753
|
+
i0.ɵɵelementStart(4, "button", 130);
|
|
754
|
+
i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_32_For_7_Template_button_click_4_listener() { const entry_r31 = i0.ɵɵrestoreView(_r30).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.removeFromShelf(entry_r31.item.id)); });
|
|
755
|
+
i0.ɵɵelement(5, "i", 40);
|
|
756
|
+
i0.ɵɵelementEnd()();
|
|
757
|
+
} if (rf & 2) {
|
|
758
|
+
const entry_r31 = ctx.$implicit;
|
|
759
|
+
i0.ɵɵproperty("title", entry_r31.item.name);
|
|
760
|
+
i0.ɵɵadvance();
|
|
761
|
+
i0.ɵɵproperty("ngClass", entry_r31.item.type === "folder" ? "fa-folder" : entry_r31.item.icon);
|
|
762
|
+
i0.ɵɵadvance(2);
|
|
763
|
+
i0.ɵɵtextInterpolate(entry_r31.item.name);
|
|
764
|
+
} }
|
|
765
|
+
function CollectionsFullViewComponent_Conditional_32_Template(rf, ctx) { if (rf & 1) {
|
|
766
|
+
const _r29 = i0.ɵɵgetCurrentView();
|
|
767
|
+
i0.ɵɵelementStart(0, "div", 26)(1, "div", 123);
|
|
768
|
+
i0.ɵɵelement(2, "i", 62);
|
|
769
|
+
i0.ɵɵelementStart(3, "span");
|
|
770
|
+
i0.ɵɵtext(4);
|
|
771
|
+
i0.ɵɵelementEnd()();
|
|
772
|
+
i0.ɵɵelementStart(5, "div", 124);
|
|
773
|
+
i0.ɵɵrepeaterCreate(6, CollectionsFullViewComponent_Conditional_32_For_7_Template, 6, 3, "span", 125, _forTrack1);
|
|
774
|
+
i0.ɵɵelementEnd();
|
|
775
|
+
i0.ɵɵelementStart(8, "div", 126)(9, "button", 127);
|
|
776
|
+
i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_32_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r29); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.dropShelfHere()); });
|
|
777
|
+
i0.ɵɵelement(10, "i", 128);
|
|
778
|
+
i0.ɵɵtext(11, " Move here ");
|
|
779
|
+
i0.ɵɵelementEnd();
|
|
780
|
+
i0.ɵɵelementStart(12, "button", 59);
|
|
781
|
+
i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_32_Template_button_click_12_listener() { i0.ɵɵrestoreView(_r29); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.clearShelf()); });
|
|
782
|
+
i0.ɵɵtext(13, "Clear");
|
|
783
|
+
i0.ɵɵelementEnd()()();
|
|
784
|
+
} if (rf & 2) {
|
|
785
|
+
const ctx_r2 = i0.ɵɵnextContext();
|
|
786
|
+
i0.ɵɵadvance(4);
|
|
787
|
+
i0.ɵɵtextInterpolate1("", ctx_r2.shelf.length, " staged");
|
|
788
|
+
i0.ɵɵadvance(2);
|
|
789
|
+
i0.ɵɵrepeater(ctx_r2.shelf);
|
|
790
|
+
i0.ɵɵadvance(3);
|
|
791
|
+
i0.ɵɵproperty("disabled", !ctx_r2.currentCollectionId)("title", ctx_r2.currentCollectionId ? "Move staged items into this collection" : "Open a collection to move items here");
|
|
792
|
+
} }
|
|
793
|
+
function CollectionsFullViewComponent_Conditional_33_Conditional_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
794
|
+
const _r34 = i0.ɵɵgetCurrentView();
|
|
795
|
+
i0.ɵɵelementStart(0, "button", 133);
|
|
796
|
+
i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_33_Conditional_2_Conditional_5_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r34); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.onContextMenuAction("share")); });
|
|
797
|
+
i0.ɵɵelement(1, "i", 45);
|
|
678
798
|
i0.ɵɵelementStart(2, "span");
|
|
679
799
|
i0.ɵɵtext(3, "Share");
|
|
680
800
|
i0.ɵɵelementEnd()();
|
|
681
801
|
} }
|
|
682
|
-
function
|
|
683
|
-
const
|
|
684
|
-
i0.ɵɵelementStart(0, "button",
|
|
685
|
-
i0.ɵɵlistener("click", function
|
|
686
|
-
i0.ɵɵelement(1, "i",
|
|
802
|
+
function CollectionsFullViewComponent_Conditional_33_Conditional_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
803
|
+
const _r35 = i0.ɵɵgetCurrentView();
|
|
804
|
+
i0.ɵɵelementStart(0, "button", 133);
|
|
805
|
+
i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_33_Conditional_2_Conditional_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r35); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.onContextMenuAction("edit")); });
|
|
806
|
+
i0.ɵɵelement(1, "i", 46);
|
|
687
807
|
i0.ɵɵelementStart(2, "span");
|
|
688
808
|
i0.ɵɵtext(3, "Edit");
|
|
689
809
|
i0.ɵɵelementEnd()();
|
|
690
810
|
} }
|
|
691
|
-
function
|
|
692
|
-
const
|
|
693
|
-
i0.ɵɵelement(0, "div",
|
|
694
|
-
i0.ɵɵelementStart(1, "button",
|
|
695
|
-
i0.ɵɵlistener("click", function
|
|
696
|
-
i0.ɵɵelement(2, "i",
|
|
811
|
+
function CollectionsFullViewComponent_Conditional_33_Conditional_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
812
|
+
const _r36 = i0.ɵɵgetCurrentView();
|
|
813
|
+
i0.ɵɵelement(0, "div", 134);
|
|
814
|
+
i0.ɵɵelementStart(1, "button", 136);
|
|
815
|
+
i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_33_Conditional_2_Conditional_7_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r36); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.onContextMenuAction("delete")); });
|
|
816
|
+
i0.ɵɵelement(2, "i", 48);
|
|
697
817
|
i0.ɵɵelementStart(3, "span");
|
|
698
818
|
i0.ɵɵtext(4, "Delete");
|
|
699
819
|
i0.ɵɵelementEnd()();
|
|
700
820
|
} }
|
|
701
|
-
function
|
|
702
|
-
const
|
|
703
|
-
i0.ɵɵelementStart(0, "button",
|
|
704
|
-
i0.ɵɵlistener("click", function
|
|
705
|
-
i0.ɵɵelement(1, "i",
|
|
821
|
+
function CollectionsFullViewComponent_Conditional_33_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
822
|
+
const _r33 = i0.ɵɵgetCurrentView();
|
|
823
|
+
i0.ɵɵelementStart(0, "button", 133);
|
|
824
|
+
i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_33_Conditional_2_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r33); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onContextMenuAction("open")); });
|
|
825
|
+
i0.ɵɵelement(1, "i", 76);
|
|
706
826
|
i0.ɵɵelementStart(2, "span");
|
|
707
827
|
i0.ɵɵtext(3, "Open");
|
|
708
828
|
i0.ɵɵelementEnd()();
|
|
709
|
-
i0.ɵɵelement(4, "div",
|
|
710
|
-
i0.ɵɵconditionalCreate(5,
|
|
711
|
-
i0.ɵɵconditionalCreate(6,
|
|
712
|
-
i0.ɵɵconditionalCreate(7,
|
|
829
|
+
i0.ɵɵelement(4, "div", 134);
|
|
830
|
+
i0.ɵɵconditionalCreate(5, CollectionsFullViewComponent_Conditional_33_Conditional_2_Conditional_5_Template, 4, 0, "button", 135);
|
|
831
|
+
i0.ɵɵconditionalCreate(6, CollectionsFullViewComponent_Conditional_33_Conditional_2_Conditional_6_Template, 4, 0, "button", 135);
|
|
832
|
+
i0.ɵɵconditionalCreate(7, CollectionsFullViewComponent_Conditional_33_Conditional_2_Conditional_7_Template, 5, 0);
|
|
713
833
|
} if (rf & 2) {
|
|
714
834
|
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
715
835
|
i0.ɵɵadvance(5);
|
|
@@ -719,38 +839,109 @@ function CollectionsFullViewComponent_Conditional_28_Conditional_2_Template(rf,
|
|
|
719
839
|
i0.ɵɵadvance();
|
|
720
840
|
i0.ɵɵconditional(ctx_r2.canDelete(ctx_r2.contextMenuItem.collection) ? 7 : -1);
|
|
721
841
|
} }
|
|
722
|
-
function
|
|
723
|
-
|
|
724
|
-
i0.ɵɵelement(
|
|
725
|
-
i0.ɵɵ
|
|
726
|
-
i0.ɵɵ
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
i0.ɵɵ
|
|
842
|
+
function CollectionsFullViewComponent_Conditional_33_Conditional_3_Conditional_0_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
843
|
+
i0.ɵɵelementStart(0, "div", 137);
|
|
844
|
+
i0.ɵɵelement(1, "i", 139);
|
|
845
|
+
i0.ɵɵtext(2, " Loading\u2026");
|
|
846
|
+
i0.ɵɵelementEnd();
|
|
847
|
+
} }
|
|
848
|
+
function CollectionsFullViewComponent_Conditional_33_Conditional_3_Conditional_0_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
849
|
+
i0.ɵɵelementStart(0, "div", 137);
|
|
850
|
+
i0.ɵɵtext(1, "No other collections");
|
|
851
|
+
i0.ɵɵelementEnd();
|
|
852
|
+
} }
|
|
853
|
+
function CollectionsFullViewComponent_Conditional_33_Conditional_3_Conditional_0_Conditional_7_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
854
|
+
const _r38 = i0.ɵɵgetCurrentView();
|
|
855
|
+
i0.ɵɵelementStart(0, "button", 133);
|
|
856
|
+
i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_33_Conditional_3_Conditional_0_Conditional_7_For_2_Template_button_click_0_listener() { const t_r39 = i0.ɵɵrestoreView(_r38).$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.moveArtifactToCollection(t_r39.collection)); });
|
|
857
|
+
i0.ɵɵelement(1, "i", 68);
|
|
858
|
+
i0.ɵɵelementStart(2, "span");
|
|
859
|
+
i0.ɵɵtext(3);
|
|
860
|
+
i0.ɵɵelementEnd()();
|
|
861
|
+
} if (rf & 2) {
|
|
862
|
+
const t_r39 = ctx.$implicit;
|
|
863
|
+
i0.ɵɵstyleProp("padding-left", 14 + t_r39.depth * 12, "px");
|
|
864
|
+
i0.ɵɵadvance();
|
|
865
|
+
i0.ɵɵstyleProp("color", t_r39.collection.Color || null);
|
|
866
|
+
i0.ɵɵadvance(2);
|
|
867
|
+
i0.ɵɵtextInterpolate(t_r39.collection.Name);
|
|
868
|
+
} }
|
|
869
|
+
function CollectionsFullViewComponent_Conditional_33_Conditional_3_Conditional_0_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
870
|
+
i0.ɵɵelementStart(0, "div", 138);
|
|
871
|
+
i0.ɵɵrepeaterCreate(1, CollectionsFullViewComponent_Conditional_33_Conditional_3_Conditional_0_Conditional_7_For_2_Template, 4, 5, "button", 140, _forTrack0);
|
|
872
|
+
i0.ɵɵelementEnd();
|
|
873
|
+
} if (rf & 2) {
|
|
874
|
+
const ctx_r2 = i0.ɵɵnextContext(4);
|
|
875
|
+
i0.ɵɵadvance();
|
|
876
|
+
i0.ɵɵrepeater(ctx_r2.moveTargets);
|
|
877
|
+
} }
|
|
878
|
+
function CollectionsFullViewComponent_Conditional_33_Conditional_3_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
879
|
+
const _r37 = i0.ɵɵgetCurrentView();
|
|
880
|
+
i0.ɵɵelementStart(0, "button", 133);
|
|
881
|
+
i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_33_Conditional_3_Conditional_0_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r37); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.closeMoveSubmenu($event)); });
|
|
882
|
+
i0.ɵɵelement(1, "i", 102);
|
|
883
|
+
i0.ɵɵelementStart(2, "span");
|
|
884
|
+
i0.ɵɵtext(3, "Move to Collection");
|
|
885
|
+
i0.ɵɵelementEnd()();
|
|
886
|
+
i0.ɵɵelement(4, "div", 134);
|
|
887
|
+
i0.ɵɵconditionalCreate(5, CollectionsFullViewComponent_Conditional_33_Conditional_3_Conditional_0_Conditional_5_Template, 3, 0, "div", 137)(6, CollectionsFullViewComponent_Conditional_33_Conditional_3_Conditional_0_Conditional_6_Template, 2, 0, "div", 137)(7, CollectionsFullViewComponent_Conditional_33_Conditional_3_Conditional_0_Conditional_7_Template, 3, 0, "div", 138);
|
|
888
|
+
} if (rf & 2) {
|
|
889
|
+
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
890
|
+
i0.ɵɵadvance(5);
|
|
891
|
+
i0.ɵɵconditional(ctx_r2.isLoadingMoveTargets ? 5 : ctx_r2.moveTargets.length === 0 ? 6 : 7);
|
|
892
|
+
} }
|
|
893
|
+
function CollectionsFullViewComponent_Conditional_33_Conditional_3_Conditional_1_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
894
|
+
const _r41 = i0.ɵɵgetCurrentView();
|
|
895
|
+
i0.ɵɵelementStart(0, "button", 133);
|
|
896
|
+
i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_33_Conditional_3_Conditional_1_Conditional_8_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r41); const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.openMoveSubmenu($event)); });
|
|
897
|
+
i0.ɵɵelement(1, "i", 60);
|
|
898
|
+
i0.ɵɵelementStart(2, "span");
|
|
899
|
+
i0.ɵɵtext(3, "Move to Collection");
|
|
900
|
+
i0.ɵɵelementEnd();
|
|
901
|
+
i0.ɵɵelement(4, "i", 143);
|
|
902
|
+
i0.ɵɵelementEnd();
|
|
903
|
+
i0.ɵɵelement(5, "div", 134);
|
|
904
|
+
i0.ɵɵelementStart(6, "button", 136);
|
|
905
|
+
i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_33_Conditional_3_Conditional_1_Conditional_8_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r41); const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.onContextMenuAction("remove")); });
|
|
906
|
+
i0.ɵɵelement(7, "i", 144);
|
|
907
|
+
i0.ɵɵelementStart(8, "span");
|
|
908
|
+
i0.ɵɵtext(9, "Remove from Collection");
|
|
730
909
|
i0.ɵɵelementEnd()();
|
|
731
910
|
} }
|
|
732
|
-
function
|
|
733
|
-
const
|
|
734
|
-
i0.ɵɵelementStart(0, "button",
|
|
735
|
-
i0.ɵɵlistener("click", function
|
|
736
|
-
i0.ɵɵelement(1, "i",
|
|
911
|
+
function CollectionsFullViewComponent_Conditional_33_Conditional_3_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
912
|
+
const _r40 = i0.ɵɵgetCurrentView();
|
|
913
|
+
i0.ɵɵelementStart(0, "button", 133);
|
|
914
|
+
i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_33_Conditional_3_Conditional_1_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r40); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.onContextMenuAction("view")); });
|
|
915
|
+
i0.ɵɵelement(1, "i", 141);
|
|
737
916
|
i0.ɵɵelementStart(2, "span");
|
|
738
917
|
i0.ɵɵtext(3, "View");
|
|
739
918
|
i0.ɵɵelementEnd()();
|
|
740
|
-
i0.ɵɵ
|
|
919
|
+
i0.ɵɵelementStart(4, "button", 133);
|
|
920
|
+
i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_33_Conditional_3_Conditional_1_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r40); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.onContextMenuAction("openConversation")); });
|
|
921
|
+
i0.ɵɵelement(5, "i", 142);
|
|
922
|
+
i0.ɵɵelementStart(6, "span");
|
|
923
|
+
i0.ɵɵtext(7, "Open source conversation");
|
|
924
|
+
i0.ɵɵelementEnd()();
|
|
925
|
+
i0.ɵɵconditionalCreate(8, CollectionsFullViewComponent_Conditional_33_Conditional_3_Conditional_1_Conditional_8_Template, 10, 0);
|
|
926
|
+
} if (rf & 2) {
|
|
927
|
+
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
928
|
+
i0.ɵɵadvance(8);
|
|
929
|
+
i0.ɵɵconditional(ctx_r2.canEditCurrent() ? 8 : -1);
|
|
930
|
+
} }
|
|
931
|
+
function CollectionsFullViewComponent_Conditional_33_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
932
|
+
i0.ɵɵconditionalCreate(0, CollectionsFullViewComponent_Conditional_33_Conditional_3_Conditional_0_Template, 8, 1)(1, CollectionsFullViewComponent_Conditional_33_Conditional_3_Conditional_1_Template, 9, 1);
|
|
741
933
|
} if (rf & 2) {
|
|
742
934
|
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
743
|
-
i0.ɵɵ
|
|
744
|
-
i0.ɵɵconditional(ctx_r2.canEditCurrent() ? 4 : -1);
|
|
935
|
+
i0.ɵɵconditional(ctx_r2.showMoveSubmenu ? 0 : 1);
|
|
745
936
|
} }
|
|
746
|
-
function
|
|
747
|
-
const
|
|
748
|
-
i0.ɵɵelementStart(0, "div",
|
|
749
|
-
i0.ɵɵlistener("click", function
|
|
937
|
+
function CollectionsFullViewComponent_Conditional_33_Template(rf, ctx) { if (rf & 1) {
|
|
938
|
+
const _r32 = i0.ɵɵgetCurrentView();
|
|
939
|
+
i0.ɵɵelementStart(0, "div", 131);
|
|
940
|
+
i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_33_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r32); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.closeContextMenu()); });
|
|
750
941
|
i0.ɵɵelementEnd();
|
|
751
|
-
i0.ɵɵelementStart(1, "div",
|
|
752
|
-
i0.ɵɵconditionalCreate(2,
|
|
753
|
-
i0.ɵɵconditionalCreate(3,
|
|
942
|
+
i0.ɵɵelementStart(1, "div", 132);
|
|
943
|
+
i0.ɵɵconditionalCreate(2, CollectionsFullViewComponent_Conditional_33_Conditional_2_Template, 8, 3);
|
|
944
|
+
i0.ɵɵconditionalCreate(3, CollectionsFullViewComponent_Conditional_33_Conditional_3_Template, 2, 1);
|
|
754
945
|
i0.ɵɵelementEnd();
|
|
755
946
|
} if (rf & 2) {
|
|
756
947
|
const ctx_r2 = i0.ɵɵnextContext();
|
|
@@ -775,6 +966,8 @@ export class CollectionsFullViewComponent extends BaseAngularComponent {
|
|
|
775
966
|
environmentId;
|
|
776
967
|
currentUser;
|
|
777
968
|
collectionNavigated = new EventEmitter();
|
|
969
|
+
/** Emitted when the user asks to open the conversation an artifact was produced in. */
|
|
970
|
+
openConversationRequested = new EventEmitter();
|
|
778
971
|
collections = [];
|
|
779
972
|
artifactVersions = [];
|
|
780
973
|
filteredCollections = [];
|
|
@@ -824,6 +1017,25 @@ export class CollectionsFullViewComponent extends BaseAngularComponent {
|
|
|
824
1017
|
showContextMenu = false;
|
|
825
1018
|
contextMenuPosition = { x: 0, y: 0 };
|
|
826
1019
|
contextMenuItem = null;
|
|
1020
|
+
/** "Move to Collection" submenu state (within the artifact context menu). */
|
|
1021
|
+
showMoveSubmenu = false;
|
|
1022
|
+
isLoadingMoveTargets = false;
|
|
1023
|
+
moveTargets = [];
|
|
1024
|
+
/** Anchor index (into unifiedItems) for shift-click range selection. */
|
|
1025
|
+
lastSelectedIndex = null;
|
|
1026
|
+
/** Drag-and-drop state. draggedItemIds = the item ids being dragged (1 or the whole selection). */
|
|
1027
|
+
draggedItemIds = [];
|
|
1028
|
+
/** Tag of the current drop target for highlight: item id, 'root', 'crumb:<id>', or 'nav:<id>'. */
|
|
1029
|
+
dragOverTargetId = null;
|
|
1030
|
+
/** Bulk "Move to…" popover (selection toolbar). */
|
|
1031
|
+
showBulkMovePopover = false;
|
|
1032
|
+
/** All accessible collections (navigator pane + move targets + folder-cycle checks). */
|
|
1033
|
+
allCollections = [];
|
|
1034
|
+
allCollectionsById = new Map();
|
|
1035
|
+
navigatorNodes = [];
|
|
1036
|
+
showNavigator = true;
|
|
1037
|
+
/** Staging shelf: items held across navigation, then dropped into a destination collection. */
|
|
1038
|
+
shelf = [];
|
|
827
1039
|
destroy$ = new Subject();
|
|
828
1040
|
isNavigatingProgrammatically = false;
|
|
829
1041
|
constructor(dialogService, artifactState, collectionState, permissionService, artifactIconService, cdr) {
|
|
@@ -845,6 +1057,8 @@ export class CollectionsFullViewComponent extends BaseAngularComponent {
|
|
|
845
1057
|
this.subscribeToCollectionState();
|
|
846
1058
|
// Subscribe to artifact state changes to track active artifact
|
|
847
1059
|
this.subscribeToArtifactState();
|
|
1060
|
+
// Load the full collection set for the navigator pane + drag targets + cycle checks
|
|
1061
|
+
void this.loadAllCollections();
|
|
848
1062
|
// Check if there's an active collection from URL params (set by parent component)
|
|
849
1063
|
const activeCollectionId = this.collectionState.activeCollectionId;
|
|
850
1064
|
if (activeCollectionId) {
|
|
@@ -932,7 +1146,7 @@ export class CollectionsFullViewComponent extends BaseAngularComponent {
|
|
|
932
1146
|
this.cdr.detectChanges();
|
|
933
1147
|
}
|
|
934
1148
|
}
|
|
935
|
-
async loadCollections() {
|
|
1149
|
+
async loadCollections(bypassCache = false) {
|
|
936
1150
|
try {
|
|
937
1151
|
const rv = RunView.FromMetadataProvider(this.ProviderToUse);
|
|
938
1152
|
// Load collections where user is owner OR has permissions
|
|
@@ -950,13 +1164,14 @@ export class CollectionsFullViewComponent extends BaseAngularComponent {
|
|
|
950
1164
|
ExtraFilter: filter,
|
|
951
1165
|
OrderBy: 'Name ASC',
|
|
952
1166
|
MaxRows: 1000,
|
|
953
|
-
ResultType: 'entity_object'
|
|
1167
|
+
ResultType: 'entity_object',
|
|
1168
|
+
BypassCache: bypassCache
|
|
954
1169
|
}, this.currentUser);
|
|
955
1170
|
if (result.Success) {
|
|
956
1171
|
this.collections = result.Results || [];
|
|
957
1172
|
await Promise.all([
|
|
958
1173
|
this.loadUserPermissions(),
|
|
959
|
-
this.loadItemCounts()
|
|
1174
|
+
this.loadItemCounts(bypassCache)
|
|
960
1175
|
]);
|
|
961
1176
|
this.filteredCollections = [...this.collections];
|
|
962
1177
|
}
|
|
@@ -966,9 +1181,11 @@ export class CollectionsFullViewComponent extends BaseAngularComponent {
|
|
|
966
1181
|
}
|
|
967
1182
|
}
|
|
968
1183
|
/**
|
|
969
|
-
* Load item counts (child collections + artifacts) for all visible collections
|
|
1184
|
+
* Load item counts (child collections + artifacts) for all visible collections.
|
|
1185
|
+
* `bypassCache` is passed right after a mutation so the count badges reflect committed
|
|
1186
|
+
* DB state immediately (cache invalidation is async relative to Save/Delete resolving).
|
|
970
1187
|
*/
|
|
971
|
-
async loadItemCounts() {
|
|
1188
|
+
async loadItemCounts(bypassCache = false) {
|
|
972
1189
|
this.itemCountMap.clear();
|
|
973
1190
|
if (this.collections.length === 0)
|
|
974
1191
|
return;
|
|
@@ -980,13 +1197,15 @@ export class CollectionsFullViewComponent extends BaseAngularComponent {
|
|
|
980
1197
|
EntityName: 'MJ: Collections',
|
|
981
1198
|
ExtraFilter: `ParentID IN (${inClause})`,
|
|
982
1199
|
Fields: ['ID', 'ParentID'],
|
|
983
|
-
ResultType: 'simple'
|
|
1200
|
+
ResultType: 'simple',
|
|
1201
|
+
BypassCache: bypassCache
|
|
984
1202
|
},
|
|
985
1203
|
{
|
|
986
1204
|
EntityName: 'MJ: Collection Artifacts',
|
|
987
1205
|
ExtraFilter: `CollectionID IN (${inClause})`,
|
|
988
1206
|
Fields: ['ID', 'CollectionID'],
|
|
989
|
-
ResultType: 'simple'
|
|
1207
|
+
ResultType: 'simple',
|
|
1208
|
+
BypassCache: bypassCache
|
|
990
1209
|
}
|
|
991
1210
|
], this.currentUser);
|
|
992
1211
|
// Count children per parent
|
|
@@ -1022,14 +1241,14 @@ export class CollectionsFullViewComponent extends BaseAngularComponent {
|
|
|
1022
1241
|
this.userPermissions.set(this.currentCollectionId, permission);
|
|
1023
1242
|
}
|
|
1024
1243
|
}
|
|
1025
|
-
async loadArtifacts() {
|
|
1244
|
+
async loadArtifacts(bypassCache = false) {
|
|
1026
1245
|
if (!this.currentCollectionId) {
|
|
1027
1246
|
this.artifactVersions = [];
|
|
1028
1247
|
this.filteredArtifactVersions = [];
|
|
1029
1248
|
return;
|
|
1030
1249
|
}
|
|
1031
1250
|
try {
|
|
1032
|
-
this.artifactVersions = await this.artifactState.loadArtifactVersionsForCollection(this.currentCollectionId, this.currentUser);
|
|
1251
|
+
this.artifactVersions = await this.artifactState.loadArtifactVersionsForCollection(this.currentCollectionId, this.currentUser, bypassCache);
|
|
1033
1252
|
this.filteredArtifactVersions = [...this.artifactVersions];
|
|
1034
1253
|
}
|
|
1035
1254
|
catch (error) {
|
|
@@ -1211,7 +1430,8 @@ export class CollectionsFullViewComponent extends BaseAngularComponent {
|
|
|
1211
1430
|
try {
|
|
1212
1431
|
console.log('Attempting to delete collection and all children...');
|
|
1213
1432
|
await this.deleteCollectionRecursive(collection.ID);
|
|
1214
|
-
await this.loadCollections();
|
|
1433
|
+
await this.loadCollections(true);
|
|
1434
|
+
await this.loadAllCollections(true);
|
|
1215
1435
|
}
|
|
1216
1436
|
catch (error) {
|
|
1217
1437
|
console.error('Error deleting collection:', error);
|
|
@@ -1259,7 +1479,8 @@ export class CollectionsFullViewComponent extends BaseAngularComponent {
|
|
|
1259
1479
|
async onCollectionSaved(collection) {
|
|
1260
1480
|
this.isFormModalOpen = false;
|
|
1261
1481
|
this.editingCollection = undefined;
|
|
1262
|
-
await this.loadCollections();
|
|
1482
|
+
await this.loadCollections(true);
|
|
1483
|
+
await this.loadAllCollections(true);
|
|
1263
1484
|
// Reload current collection permission (it was cleared by loadUserPermissions)
|
|
1264
1485
|
await this.loadCurrentCollectionPermission();
|
|
1265
1486
|
// Update breadcrumb and currentCollection if the saved collection is in the trail
|
|
@@ -1287,7 +1508,7 @@ export class CollectionsFullViewComponent extends BaseAngularComponent {
|
|
|
1287
1508
|
}
|
|
1288
1509
|
async onArtifactSaved(artifact) {
|
|
1289
1510
|
this.isArtifactModalOpen = false;
|
|
1290
|
-
await this.loadArtifacts();
|
|
1511
|
+
await this.loadArtifacts(true);
|
|
1291
1512
|
this.cdr.detectChanges();
|
|
1292
1513
|
}
|
|
1293
1514
|
onArtifactModalCancelled() {
|
|
@@ -1323,7 +1544,7 @@ export class CollectionsFullViewComponent extends BaseAngularComponent {
|
|
|
1323
1544
|
for (const joinRecord of result.Results) {
|
|
1324
1545
|
await joinRecord.Delete();
|
|
1325
1546
|
}
|
|
1326
|
-
await this.loadArtifacts();
|
|
1547
|
+
await this.loadArtifacts(true);
|
|
1327
1548
|
this.buildUnifiedItemList();
|
|
1328
1549
|
}
|
|
1329
1550
|
else {
|
|
@@ -1421,7 +1642,8 @@ export class CollectionsFullViewComponent extends BaseAngularComponent {
|
|
|
1421
1642
|
}
|
|
1422
1643
|
async onPermissionsChanged() {
|
|
1423
1644
|
// Reload collections and permissions after sharing changes
|
|
1424
|
-
await this.loadCollections();
|
|
1645
|
+
await this.loadCollections(true);
|
|
1646
|
+
await this.loadAllCollections(true);
|
|
1425
1647
|
this.cdr.detectChanges();
|
|
1426
1648
|
}
|
|
1427
1649
|
onShareModalCancelled() {
|
|
@@ -1599,25 +1821,8 @@ export class CollectionsFullViewComponent extends BaseAngularComponent {
|
|
|
1599
1821
|
*/
|
|
1600
1822
|
toggleItemSelection(item, event) {
|
|
1601
1823
|
event.stopPropagation();
|
|
1602
|
-
|
|
1603
|
-
|
|
1604
|
-
if (this.selectedItems.has(item.id)) {
|
|
1605
|
-
this.selectedItems.delete(item.id);
|
|
1606
|
-
}
|
|
1607
|
-
else {
|
|
1608
|
-
this.selectedItems.add(item.id);
|
|
1609
|
-
}
|
|
1610
|
-
}
|
|
1611
|
-
else if (event.shiftKey) {
|
|
1612
|
-
// Shift+Click: Select range (TODO: implement range selection)
|
|
1613
|
-
this.selectedItems.add(item.id);
|
|
1614
|
-
}
|
|
1615
|
-
else {
|
|
1616
|
-
// Regular click: Select only this item
|
|
1617
|
-
this.selectedItems.clear();
|
|
1618
|
-
this.selectedItems.add(item.id);
|
|
1619
|
-
}
|
|
1620
|
-
this.buildUnifiedItemList(); // Refresh to update selected states
|
|
1824
|
+
// Checkbox click: additive toggle by default, shift = range, cmd/ctrl = toggle.
|
|
1825
|
+
this.applySelectionGesture(item, event);
|
|
1621
1826
|
}
|
|
1622
1827
|
/**
|
|
1623
1828
|
* Multi-select: Select all items (Phase 3)
|
|
@@ -1627,14 +1832,15 @@ export class CollectionsFullViewComponent extends BaseAngularComponent {
|
|
|
1627
1832
|
for (const item of this.unifiedItems) {
|
|
1628
1833
|
this.selectedItems.add(item.id);
|
|
1629
1834
|
}
|
|
1630
|
-
this.
|
|
1835
|
+
this.refreshSelectionFlags();
|
|
1631
1836
|
}
|
|
1632
1837
|
/**
|
|
1633
1838
|
* Multi-select: Clear selection (Phase 3)
|
|
1634
1839
|
*/
|
|
1635
1840
|
clearSelection() {
|
|
1636
1841
|
this.selectedItems.clear();
|
|
1637
|
-
this.
|
|
1842
|
+
this.lastSelectedIndex = null;
|
|
1843
|
+
this.refreshSelectionFlags();
|
|
1638
1844
|
}
|
|
1639
1845
|
/**
|
|
1640
1846
|
* Multi-select: Delete selected items
|
|
@@ -1672,9 +1878,10 @@ export class CollectionsFullViewComponent extends BaseAngularComponent {
|
|
|
1672
1878
|
}
|
|
1673
1879
|
}
|
|
1674
1880
|
this.clearSelection();
|
|
1675
|
-
await this.loadCollections();
|
|
1881
|
+
await this.loadCollections(true);
|
|
1882
|
+
await this.loadAllCollections(true);
|
|
1676
1883
|
if (artifactItems.length > 0) {
|
|
1677
|
-
await this.loadArtifacts();
|
|
1884
|
+
await this.loadArtifacts(true);
|
|
1678
1885
|
}
|
|
1679
1886
|
this.buildUnifiedItemList();
|
|
1680
1887
|
}
|
|
@@ -1695,7 +1902,12 @@ export class CollectionsFullViewComponent extends BaseAngularComponent {
|
|
|
1695
1902
|
* In normal mode: opens item (folder or artifact)
|
|
1696
1903
|
*/
|
|
1697
1904
|
onItemClick(item, event) {
|
|
1698
|
-
//
|
|
1905
|
+
// Modifier-click selects without needing select mode (shift = range, cmd/ctrl = toggle)
|
|
1906
|
+
if (event && (event.shiftKey || event.metaKey || event.ctrlKey)) {
|
|
1907
|
+
this.applySelectionGesture(item, event, true);
|
|
1908
|
+
return;
|
|
1909
|
+
}
|
|
1910
|
+
// In sticky select mode, a plain click toggles selection
|
|
1699
1911
|
if (this.isSelectMode) {
|
|
1700
1912
|
this.toggleItemSelectionSimple(item);
|
|
1701
1913
|
return;
|
|
@@ -1738,7 +1950,8 @@ export class CollectionsFullViewComponent extends BaseAngularComponent {
|
|
|
1738
1950
|
else {
|
|
1739
1951
|
this.selectedItems.add(item.id);
|
|
1740
1952
|
}
|
|
1741
|
-
this.
|
|
1953
|
+
this.lastSelectedIndex = this.indexOfItem(item.id);
|
|
1954
|
+
this.refreshSelectionFlags();
|
|
1742
1955
|
}
|
|
1743
1956
|
/**
|
|
1744
1957
|
* Get item count text for display
|
|
@@ -1810,6 +2023,7 @@ export class CollectionsFullViewComponent extends BaseAngularComponent {
|
|
|
1810
2023
|
this.contextMenuItem = item;
|
|
1811
2024
|
this.contextMenuPosition = this.clampContextMenuPosition(event.clientX, event.clientY);
|
|
1812
2025
|
this.showContextMenu = true;
|
|
2026
|
+
this.showMoveSubmenu = false;
|
|
1813
2027
|
this.cdr.detectChanges();
|
|
1814
2028
|
}
|
|
1815
2029
|
/** Clamp menu position to keep it within the viewport */
|
|
@@ -1826,8 +2040,129 @@ export class CollectionsFullViewComponent extends BaseAngularComponent {
|
|
|
1826
2040
|
closeContextMenu() {
|
|
1827
2041
|
this.showContextMenu = false;
|
|
1828
2042
|
this.contextMenuItem = null;
|
|
2043
|
+
this.showMoveSubmenu = false;
|
|
1829
2044
|
this.cdr.detectChanges();
|
|
1830
2045
|
}
|
|
2046
|
+
/** Opens the inline "Move to Collection" submenu and loads candidate target collections. */
|
|
2047
|
+
openMoveSubmenu(event) {
|
|
2048
|
+
event.stopPropagation();
|
|
2049
|
+
this.showMoveSubmenu = true;
|
|
2050
|
+
void this.loadMoveTargets();
|
|
2051
|
+
}
|
|
2052
|
+
closeMoveSubmenu(event) {
|
|
2053
|
+
event.stopPropagation();
|
|
2054
|
+
this.showMoveSubmenu = false;
|
|
2055
|
+
this.cdr.detectChanges();
|
|
2056
|
+
}
|
|
2057
|
+
/** Loads every collection the user can access in this environment (flattened, indented), minus the current one. */
|
|
2058
|
+
async loadMoveTargets() {
|
|
2059
|
+
this.isLoadingMoveTargets = true;
|
|
2060
|
+
this.moveTargets = [];
|
|
2061
|
+
this.cdr.detectChanges();
|
|
2062
|
+
try {
|
|
2063
|
+
const rv = RunView.FromMetadataProvider(this.ProviderToUse);
|
|
2064
|
+
const ownerFilter = `OwnerID='${this.currentUser.ID}'`;
|
|
2065
|
+
const permissionSubquery = `ID IN (
|
|
2066
|
+
SELECT CollectionID FROM [__mj].[vwCollectionPermissions] WHERE UserID='${this.currentUser.ID}'
|
|
2067
|
+
)`;
|
|
2068
|
+
const filter = `EnvironmentID='${this.environmentId}' AND (OwnerID IS NULL OR ${ownerFilter} OR ${permissionSubquery})`;
|
|
2069
|
+
const result = await rv.RunView({
|
|
2070
|
+
EntityName: 'MJ: Collections',
|
|
2071
|
+
ExtraFilter: filter,
|
|
2072
|
+
OrderBy: 'Name ASC',
|
|
2073
|
+
MaxRows: 1000,
|
|
2074
|
+
ResultType: 'entity_object'
|
|
2075
|
+
}, this.currentUser);
|
|
2076
|
+
const all = result.Success ? (result.Results || []) : [];
|
|
2077
|
+
const flattened = this.flattenCollectionTree(all);
|
|
2078
|
+
this.moveTargets = this.currentCollectionId
|
|
2079
|
+
? flattened.filter(t => !UUIDsEqual(t.collection.ID, this.currentCollectionId))
|
|
2080
|
+
: flattened;
|
|
2081
|
+
}
|
|
2082
|
+
catch (error) {
|
|
2083
|
+
console.error('Failed to load move targets:', error);
|
|
2084
|
+
this.moveTargets = [];
|
|
2085
|
+
}
|
|
2086
|
+
finally {
|
|
2087
|
+
this.isLoadingMoveTargets = false;
|
|
2088
|
+
this.cdr.detectChanges();
|
|
2089
|
+
}
|
|
2090
|
+
}
|
|
2091
|
+
/** Flattens collections into a depth-first, indented list (orphans treated as roots). */
|
|
2092
|
+
flattenCollectionTree(all) {
|
|
2093
|
+
const ids = new Set(all.map(c => NormalizeUUID(c.ID)));
|
|
2094
|
+
const byParent = new Map();
|
|
2095
|
+
for (const c of all) {
|
|
2096
|
+
const pid = c.ParentID ? NormalizeUUID(c.ParentID) : null;
|
|
2097
|
+
const key = pid && ids.has(pid) ? pid : null;
|
|
2098
|
+
const arr = byParent.get(key) || [];
|
|
2099
|
+
arr.push(c);
|
|
2100
|
+
byParent.set(key, arr);
|
|
2101
|
+
}
|
|
2102
|
+
const out = [];
|
|
2103
|
+
const walk = (parentKey, depth) => {
|
|
2104
|
+
for (const c of (byParent.get(parentKey) || [])) {
|
|
2105
|
+
out.push({ collection: c, depth });
|
|
2106
|
+
walk(NormalizeUUID(c.ID), depth + 1);
|
|
2107
|
+
}
|
|
2108
|
+
};
|
|
2109
|
+
walk(null, 0);
|
|
2110
|
+
return out;
|
|
2111
|
+
}
|
|
2112
|
+
/**
|
|
2113
|
+
* Moves the right-clicked artifact version from the current collection to the target.
|
|
2114
|
+
* Adds to the target first (so a failure never drops it from the source), then removes
|
|
2115
|
+
* the version's join row from the source collection.
|
|
2116
|
+
*/
|
|
2117
|
+
async moveArtifactToCollection(target) {
|
|
2118
|
+
const item = this.contextMenuItem;
|
|
2119
|
+
const fromCollectionId = this.currentCollectionId;
|
|
2120
|
+
this.closeContextMenu();
|
|
2121
|
+
if (!item?.artifact || !item.version || !fromCollectionId)
|
|
2122
|
+
return;
|
|
2123
|
+
if (UUIDsEqual(target.ID, fromCollectionId))
|
|
2124
|
+
return;
|
|
2125
|
+
try {
|
|
2126
|
+
const p = this.ProviderToUse;
|
|
2127
|
+
const rv = RunView.FromMetadataProvider(p);
|
|
2128
|
+
// Add to target (skip if the version is already there to avoid a duplicate join row)
|
|
2129
|
+
const existing = await rv.RunView({
|
|
2130
|
+
EntityName: 'MJ: Collection Artifacts',
|
|
2131
|
+
ExtraFilter: `CollectionID='${target.ID}' AND ArtifactVersionID='${item.version.ID}'`,
|
|
2132
|
+
ResultType: 'simple',
|
|
2133
|
+
Fields: ['ID']
|
|
2134
|
+
}, this.currentUser);
|
|
2135
|
+
if (!(existing.Success && (existing.Results?.length ?? 0) > 0)) {
|
|
2136
|
+
const junction = await p.GetEntityObject('MJ: Collection Artifacts', this.currentUser);
|
|
2137
|
+
junction.CollectionID = target.ID;
|
|
2138
|
+
junction.ArtifactVersionID = item.version.ID;
|
|
2139
|
+
junction.Sequence = 0;
|
|
2140
|
+
const saved = await junction.Save();
|
|
2141
|
+
if (!saved) {
|
|
2142
|
+
throw new Error(junction.LatestResult?.CompleteMessage || 'Failed to add artifact to the target collection');
|
|
2143
|
+
}
|
|
2144
|
+
}
|
|
2145
|
+
// Remove this version's join row(s) from the source collection
|
|
2146
|
+
const sourceRows = await rv.RunView({
|
|
2147
|
+
EntityName: 'MJ: Collection Artifacts',
|
|
2148
|
+
ExtraFilter: `CollectionID='${fromCollectionId}' AND ArtifactVersionID='${item.version.ID}'`,
|
|
2149
|
+
ResultType: 'entity_object'
|
|
2150
|
+
}, this.currentUser);
|
|
2151
|
+
if (sourceRows.Success && sourceRows.Results) {
|
|
2152
|
+
for (const row of sourceRows.Results) {
|
|
2153
|
+
await row.Delete();
|
|
2154
|
+
}
|
|
2155
|
+
}
|
|
2156
|
+
await this.loadArtifacts(true);
|
|
2157
|
+
await this.loadCollections(true);
|
|
2158
|
+
await this.loadAllCollections(true);
|
|
2159
|
+
this.buildUnifiedItemList();
|
|
2160
|
+
}
|
|
2161
|
+
catch (error) {
|
|
2162
|
+
console.error('Error moving artifact:', error);
|
|
2163
|
+
await this.dialogService.alert('Error', 'Failed to move artifact. Please try again.');
|
|
2164
|
+
}
|
|
2165
|
+
}
|
|
1831
2166
|
/** Handle context menu action dispatch */
|
|
1832
2167
|
onContextMenuAction(action) {
|
|
1833
2168
|
const item = this.contextMenuItem;
|
|
@@ -1861,71 +2196,474 @@ export class CollectionsFullViewComponent extends BaseAngularComponent {
|
|
|
1861
2196
|
this.removeArtifact({ artifact: item.artifact, version: item.version });
|
|
1862
2197
|
}
|
|
1863
2198
|
break;
|
|
2199
|
+
case 'openConversation':
|
|
2200
|
+
if (item.artifact && item.version) {
|
|
2201
|
+
void this.openSourceConversation(item);
|
|
2202
|
+
}
|
|
2203
|
+
break;
|
|
1864
2204
|
}
|
|
1865
2205
|
}
|
|
2206
|
+
/**
|
|
2207
|
+
* Resolves the artifact version the user right-clicked to the conversation it was produced in,
|
|
2208
|
+
* then asks the host to open it. Chain: Artifact Version → Conversation Detail Artifacts
|
|
2209
|
+
* (prefer Direction='Output' = produced here) → Conversation Detail → ConversationID.
|
|
2210
|
+
*/
|
|
2211
|
+
async openSourceConversation(item) {
|
|
2212
|
+
if (!item.version)
|
|
2213
|
+
return;
|
|
2214
|
+
const conversationId = await this.resolveArtifactToConversation(item.version.ID);
|
|
2215
|
+
if (conversationId) {
|
|
2216
|
+
this.openConversationRequested.emit({ conversationId });
|
|
2217
|
+
}
|
|
2218
|
+
else {
|
|
2219
|
+
await this.dialogService.alert('No Source Conversation', 'This artifact is not linked to a conversation.');
|
|
2220
|
+
}
|
|
2221
|
+
}
|
|
2222
|
+
async resolveArtifactToConversation(artifactVersionId) {
|
|
2223
|
+
const rv = RunView.FromMetadataProvider(this.ProviderToUse);
|
|
2224
|
+
// Find the message(s) this version is attached to. Prefer the one that produced it
|
|
2225
|
+
// (Direction='Output'); fall back to any link if it only appears as an input.
|
|
2226
|
+
const linkResult = await rv.RunView({
|
|
2227
|
+
EntityName: 'MJ: Conversation Detail Artifacts',
|
|
2228
|
+
ExtraFilter: `ArtifactVersionID='${artifactVersionId}'`,
|
|
2229
|
+
Fields: ['ConversationDetailID', 'Direction'],
|
|
2230
|
+
ResultType: 'simple'
|
|
2231
|
+
}, this.currentUser);
|
|
2232
|
+
const links = linkResult.Success ? (linkResult.Results ?? []) : [];
|
|
2233
|
+
if (links.length === 0)
|
|
2234
|
+
return null;
|
|
2235
|
+
const link = links.find(l => l.Direction === 'Output') ?? links[0];
|
|
2236
|
+
const detailResult = await rv.RunView({
|
|
2237
|
+
EntityName: 'MJ: Conversation Details',
|
|
2238
|
+
ExtraFilter: `ID='${link.ConversationDetailID}'`,
|
|
2239
|
+
Fields: ['ConversationID'],
|
|
2240
|
+
ResultType: 'simple'
|
|
2241
|
+
}, this.currentUser);
|
|
2242
|
+
return detailResult.Success ? (detailResult.Results?.[0]?.ConversationID ?? null) : null;
|
|
2243
|
+
}
|
|
1866
2244
|
/** Close context menu on Escape key */
|
|
1867
2245
|
onEscapeKey() {
|
|
1868
2246
|
if (this.showContextMenu) {
|
|
1869
2247
|
this.closeContextMenu();
|
|
1870
2248
|
}
|
|
1871
2249
|
}
|
|
2250
|
+
// ============================================================
|
|
2251
|
+
// Selection gestures (#4 — frictionless multi-select)
|
|
2252
|
+
// ============================================================
|
|
2253
|
+
indexOfItem(id) {
|
|
2254
|
+
return this.unifiedItems.findIndex(i => i.id === id);
|
|
2255
|
+
}
|
|
2256
|
+
/** Re-sync each item's `selected` flag from the set without rebuilding (preserves page). */
|
|
2257
|
+
refreshSelectionFlags() {
|
|
2258
|
+
for (const it of this.unifiedItems) {
|
|
2259
|
+
it.selected = this.selectedItems.has(it.id);
|
|
2260
|
+
}
|
|
2261
|
+
this.cdr.detectChanges();
|
|
2262
|
+
}
|
|
2263
|
+
/**
|
|
2264
|
+
* Centralized selection gesture used by both the hover checkbox and modifier-clicks.
|
|
2265
|
+
* - shift → range select from the last anchor
|
|
2266
|
+
* - cmd/ctrl → additive toggle
|
|
2267
|
+
* - plain → additive toggle (checkbox) or replace (plainReplaces, used by body clicks)
|
|
2268
|
+
*/
|
|
2269
|
+
applySelectionGesture(item, event, plainReplaces = false) {
|
|
2270
|
+
const idx = this.indexOfItem(item.id);
|
|
2271
|
+
if (event.shiftKey && this.lastSelectedIndex != null && this.lastSelectedIndex >= 0) {
|
|
2272
|
+
const lo = Math.min(this.lastSelectedIndex, idx);
|
|
2273
|
+
const hi = Math.max(this.lastSelectedIndex, idx);
|
|
2274
|
+
for (let i = lo; i <= hi; i++) {
|
|
2275
|
+
const it = this.unifiedItems[i];
|
|
2276
|
+
if (it)
|
|
2277
|
+
this.selectedItems.add(it.id);
|
|
2278
|
+
}
|
|
2279
|
+
}
|
|
2280
|
+
else if (event.metaKey || event.ctrlKey || !plainReplaces) {
|
|
2281
|
+
if (this.selectedItems.has(item.id)) {
|
|
2282
|
+
this.selectedItems.delete(item.id);
|
|
2283
|
+
}
|
|
2284
|
+
else {
|
|
2285
|
+
this.selectedItems.add(item.id);
|
|
2286
|
+
}
|
|
2287
|
+
this.lastSelectedIndex = idx;
|
|
2288
|
+
}
|
|
2289
|
+
else {
|
|
2290
|
+
this.selectedItems.clear();
|
|
2291
|
+
this.selectedItems.add(item.id);
|
|
2292
|
+
this.lastSelectedIndex = idx;
|
|
2293
|
+
}
|
|
2294
|
+
this.refreshSelectionFlags();
|
|
2295
|
+
}
|
|
2296
|
+
/** Hover-checkbox click — selects without requiring an explicit "select mode". */
|
|
2297
|
+
onCheckboxClick(item, event) {
|
|
2298
|
+
event.stopPropagation();
|
|
2299
|
+
this.applySelectionGesture(item, event);
|
|
2300
|
+
}
|
|
2301
|
+
// ============================================================
|
|
2302
|
+
// Drag-and-drop (#1, #2 — drag items onto folders / breadcrumbs / navigator)
|
|
2303
|
+
// ============================================================
|
|
2304
|
+
onItemDragStart(item, event) {
|
|
2305
|
+
// If the dragged item is part of the current selection, drag the whole selection;
|
|
2306
|
+
// otherwise drag just this item.
|
|
2307
|
+
this.draggedItemIds = (this.selectedItems.has(item.id) && this.selectedItems.size > 0)
|
|
2308
|
+
? Array.from(this.selectedItems)
|
|
2309
|
+
: [item.id];
|
|
2310
|
+
if (event.dataTransfer) {
|
|
2311
|
+
event.dataTransfer.effectAllowed = 'move';
|
|
2312
|
+
event.dataTransfer.setData('text/plain', this.draggedItemIds.join(','));
|
|
2313
|
+
}
|
|
2314
|
+
}
|
|
2315
|
+
onItemDragEnd() {
|
|
2316
|
+
this.draggedItemIds = [];
|
|
2317
|
+
this.dragOverTargetId = null;
|
|
2318
|
+
}
|
|
2319
|
+
draggedItems() {
|
|
2320
|
+
return this.unifiedItems.filter(i => this.draggedItemIds.includes(i.id));
|
|
2321
|
+
}
|
|
2322
|
+
/** Folder grid card / list row as a drop target. */
|
|
2323
|
+
onFolderItemDragOver(folderItem, event) {
|
|
2324
|
+
const targetId = folderItem.collection?.ID;
|
|
2325
|
+
if (this.draggedItemIds.length === 0 || this.draggedItemIds.includes(folderItem.id))
|
|
2326
|
+
return;
|
|
2327
|
+
if (!this.canDropOnCollection(targetId))
|
|
2328
|
+
return;
|
|
2329
|
+
event.preventDefault();
|
|
2330
|
+
if (event.dataTransfer)
|
|
2331
|
+
event.dataTransfer.dropEffect = 'move';
|
|
2332
|
+
this.dragOverTargetId = folderItem.id;
|
|
2333
|
+
}
|
|
2334
|
+
onFolderItemDrop(folderItem, event) {
|
|
2335
|
+
event.preventDefault();
|
|
2336
|
+
const targetId = folderItem.collection?.ID ?? null;
|
|
2337
|
+
this.dragOverTargetId = null;
|
|
2338
|
+
void this.moveDraggedItemsTo(targetId);
|
|
2339
|
+
}
|
|
2340
|
+
/** Breadcrumb crumb / Home root as a drop target. crumbId null = top level. */
|
|
2341
|
+
onCrumbDragOver(crumbId, event) {
|
|
2342
|
+
if (this.draggedItemIds.length === 0)
|
|
2343
|
+
return;
|
|
2344
|
+
// Artifacts can't live at the top level (no collection)
|
|
2345
|
+
if (crumbId === null && this.draggedItems().some(i => i.type === 'artifact'))
|
|
2346
|
+
return;
|
|
2347
|
+
if (!this.canDropOnCollection(crumbId))
|
|
2348
|
+
return;
|
|
2349
|
+
event.preventDefault();
|
|
2350
|
+
if (event.dataTransfer)
|
|
2351
|
+
event.dataTransfer.dropEffect = 'move';
|
|
2352
|
+
this.dragOverTargetId = crumbId === null ? 'root' : 'crumb:' + crumbId;
|
|
2353
|
+
}
|
|
2354
|
+
onCrumbDrop(crumbId, event) {
|
|
2355
|
+
event.preventDefault();
|
|
2356
|
+
this.dragOverTargetId = null;
|
|
2357
|
+
void this.moveDraggedItemsTo(crumbId);
|
|
2358
|
+
}
|
|
2359
|
+
/** True when the dragged set may be dropped on the target collection (blocks folder cycles). */
|
|
2360
|
+
canDropOnCollection(targetCollectionId) {
|
|
2361
|
+
if (targetCollectionId === undefined)
|
|
2362
|
+
return false;
|
|
2363
|
+
for (const f of this.draggedItems()) {
|
|
2364
|
+
if (f.type !== 'folder' || !f.collection)
|
|
2365
|
+
continue;
|
|
2366
|
+
const fid = f.collection.ID;
|
|
2367
|
+
if (targetCollectionId && (UUIDsEqual(fid, targetCollectionId) || this.isCollectionDescendant(targetCollectionId, fid))) {
|
|
2368
|
+
return false;
|
|
2369
|
+
}
|
|
2370
|
+
}
|
|
2371
|
+
return true;
|
|
2372
|
+
}
|
|
2373
|
+
isCollectionDescendant(nodeId, ancestorId) {
|
|
2374
|
+
let cur = this.allCollectionsById.get(NormalizeUUID(nodeId));
|
|
2375
|
+
const seen = new Set();
|
|
2376
|
+
while (cur?.ParentID) {
|
|
2377
|
+
const pid = NormalizeUUID(cur.ParentID);
|
|
2378
|
+
if (seen.has(pid))
|
|
2379
|
+
break;
|
|
2380
|
+
seen.add(pid);
|
|
2381
|
+
if (UUIDsEqual(pid, ancestorId))
|
|
2382
|
+
return true;
|
|
2383
|
+
cur = this.allCollectionsById.get(pid);
|
|
2384
|
+
}
|
|
2385
|
+
return false;
|
|
2386
|
+
}
|
|
2387
|
+
async moveDraggedItemsTo(targetCollectionId) {
|
|
2388
|
+
const items = this.draggedItems();
|
|
2389
|
+
this.draggedItemIds = [];
|
|
2390
|
+
await this.moveItemsTo(items, targetCollectionId, this.currentCollectionId);
|
|
2391
|
+
}
|
|
2392
|
+
// ============================================================
|
|
2393
|
+
// Move primitives (shared by drag, bulk move, and shelf)
|
|
2394
|
+
// ============================================================
|
|
2395
|
+
/**
|
|
2396
|
+
* Moves items into the target collection. Artifacts: add the version to the target and remove
|
|
2397
|
+
* it from its source collection. Folders: reparent (target null = top level). Skips no-ops and
|
|
2398
|
+
* invalid folder moves (cycles). Reloads and rebuilds when done.
|
|
2399
|
+
*/
|
|
2400
|
+
async moveItemsTo(items, targetCollectionId, artifactSourceCollectionId) {
|
|
2401
|
+
if (items.length === 0)
|
|
2402
|
+
return;
|
|
2403
|
+
try {
|
|
2404
|
+
const p = this.ProviderToUse;
|
|
2405
|
+
const rv = RunView.FromMetadataProvider(p);
|
|
2406
|
+
for (const item of items) {
|
|
2407
|
+
if (item.type === 'artifact' && item.version) {
|
|
2408
|
+
if (targetCollectionId == null)
|
|
2409
|
+
continue; // artifacts require a collection
|
|
2410
|
+
if (artifactSourceCollectionId && UUIDsEqual(artifactSourceCollectionId, targetCollectionId))
|
|
2411
|
+
continue;
|
|
2412
|
+
await this.addVersionToCollection(p, rv, item.version.ID, targetCollectionId);
|
|
2413
|
+
if (artifactSourceCollectionId) {
|
|
2414
|
+
await this.removeVersionFromCollection(rv, item.version.ID, artifactSourceCollectionId);
|
|
2415
|
+
}
|
|
2416
|
+
}
|
|
2417
|
+
else if (item.type === 'folder' && item.collection) {
|
|
2418
|
+
const fid = item.collection.ID;
|
|
2419
|
+
if (targetCollectionId && (UUIDsEqual(fid, targetCollectionId) || this.isCollectionDescendant(targetCollectionId, fid)))
|
|
2420
|
+
continue;
|
|
2421
|
+
await this.reparentCollection(fid, targetCollectionId);
|
|
2422
|
+
}
|
|
2423
|
+
}
|
|
2424
|
+
this.clearSelection();
|
|
2425
|
+
await this.loadCollections(true);
|
|
2426
|
+
await this.loadArtifacts(true);
|
|
2427
|
+
await this.loadAllCollections(true);
|
|
2428
|
+
this.buildUnifiedItemList();
|
|
2429
|
+
}
|
|
2430
|
+
catch (error) {
|
|
2431
|
+
console.error('Error moving items:', error);
|
|
2432
|
+
await this.dialogService.alert('Error', 'Failed to move item(s). Please try again.');
|
|
2433
|
+
}
|
|
2434
|
+
}
|
|
2435
|
+
async addVersionToCollection(p, rv, versionId, collectionId) {
|
|
2436
|
+
const existing = await rv.RunView({
|
|
2437
|
+
EntityName: 'MJ: Collection Artifacts',
|
|
2438
|
+
ExtraFilter: `CollectionID='${collectionId}' AND ArtifactVersionID='${versionId}'`,
|
|
2439
|
+
ResultType: 'simple',
|
|
2440
|
+
Fields: ['ID']
|
|
2441
|
+
}, this.currentUser);
|
|
2442
|
+
if (existing.Success && (existing.Results?.length ?? 0) > 0)
|
|
2443
|
+
return;
|
|
2444
|
+
const junction = await p.GetEntityObject('MJ: Collection Artifacts', this.currentUser);
|
|
2445
|
+
junction.CollectionID = collectionId;
|
|
2446
|
+
junction.ArtifactVersionID = versionId;
|
|
2447
|
+
junction.Sequence = 0;
|
|
2448
|
+
const ok = await junction.Save();
|
|
2449
|
+
if (!ok)
|
|
2450
|
+
throw new Error(junction.LatestResult?.CompleteMessage || 'Failed to add artifact to collection');
|
|
2451
|
+
}
|
|
2452
|
+
async removeVersionFromCollection(rv, versionId, collectionId) {
|
|
2453
|
+
const rows = await rv.RunView({
|
|
2454
|
+
EntityName: 'MJ: Collection Artifacts',
|
|
2455
|
+
ExtraFilter: `CollectionID='${collectionId}' AND ArtifactVersionID='${versionId}'`,
|
|
2456
|
+
ResultType: 'entity_object'
|
|
2457
|
+
}, this.currentUser);
|
|
2458
|
+
if (rows.Success && rows.Results) {
|
|
2459
|
+
for (const row of rows.Results)
|
|
2460
|
+
await row.Delete();
|
|
2461
|
+
}
|
|
2462
|
+
}
|
|
2463
|
+
async reparentCollection(collectionId, newParentId) {
|
|
2464
|
+
const p = this.ProviderToUse;
|
|
2465
|
+
const collection = await p.GetEntityObject('MJ: Collections', this.currentUser);
|
|
2466
|
+
await collection.Load(collectionId);
|
|
2467
|
+
collection.ParentID = newParentId;
|
|
2468
|
+
const ok = await collection.Save();
|
|
2469
|
+
if (!ok)
|
|
2470
|
+
throw new Error(collection.LatestResult?.CompleteMessage || 'Failed to move folder');
|
|
2471
|
+
}
|
|
2472
|
+
// ============================================================
|
|
2473
|
+
// All-collections cache (navigator + cycle checks + bulk move)
|
|
2474
|
+
// ============================================================
|
|
2475
|
+
async loadAllCollections(bypassCache = false) {
|
|
2476
|
+
const rv = RunView.FromMetadataProvider(this.ProviderToUse);
|
|
2477
|
+
const ownerFilter = `OwnerID='${this.currentUser.ID}'`;
|
|
2478
|
+
const permissionSubquery = `ID IN (
|
|
2479
|
+
SELECT CollectionID FROM [__mj].[vwCollectionPermissions] WHERE UserID='${this.currentUser.ID}'
|
|
2480
|
+
)`;
|
|
2481
|
+
const filter = `EnvironmentID='${this.environmentId}' AND (OwnerID IS NULL OR ${ownerFilter} OR ${permissionSubquery})`;
|
|
2482
|
+
const result = await rv.RunView({
|
|
2483
|
+
EntityName: 'MJ: Collections',
|
|
2484
|
+
ExtraFilter: filter,
|
|
2485
|
+
OrderBy: 'Name ASC',
|
|
2486
|
+
MaxRows: 1000,
|
|
2487
|
+
ResultType: 'entity_object',
|
|
2488
|
+
BypassCache: bypassCache
|
|
2489
|
+
}, this.currentUser);
|
|
2490
|
+
this.allCollections = result.Success ? (result.Results || []) : [];
|
|
2491
|
+
this.allCollectionsById = new Map(this.allCollections.map(c => [NormalizeUUID(c.ID), c]));
|
|
2492
|
+
this.navigatorNodes = this.flattenCollectionTree(this.allCollections);
|
|
2493
|
+
this.cdr.detectChanges();
|
|
2494
|
+
}
|
|
2495
|
+
toggleNavigator() {
|
|
2496
|
+
this.showNavigator = !this.showNavigator;
|
|
2497
|
+
}
|
|
2498
|
+
navigatorClick(collection) {
|
|
2499
|
+
void this.navigateToCollectionById(collection.ID);
|
|
2500
|
+
}
|
|
2501
|
+
isCurrentNavigator(collection) {
|
|
2502
|
+
return !!this.currentCollectionId && UUIDsEqual(collection.ID, this.currentCollectionId);
|
|
2503
|
+
}
|
|
2504
|
+
onNavigatorDragOver(collection, event) {
|
|
2505
|
+
if (this.draggedItemIds.length === 0 || this.draggedItemIds.some(id => UUIDsEqual(id, collection.ID)))
|
|
2506
|
+
return;
|
|
2507
|
+
if (!this.canDropOnCollection(collection.ID))
|
|
2508
|
+
return;
|
|
2509
|
+
event.preventDefault();
|
|
2510
|
+
if (event.dataTransfer)
|
|
2511
|
+
event.dataTransfer.dropEffect = 'move';
|
|
2512
|
+
this.dragOverTargetId = 'nav:' + collection.ID;
|
|
2513
|
+
}
|
|
2514
|
+
onNavigatorDrop(collection, event) {
|
|
2515
|
+
event.preventDefault();
|
|
2516
|
+
this.dragOverTargetId = null;
|
|
2517
|
+
void this.moveDraggedItemsTo(collection.ID);
|
|
2518
|
+
}
|
|
2519
|
+
onDragLeave(tag) {
|
|
2520
|
+
if (this.dragOverTargetId === tag)
|
|
2521
|
+
this.dragOverTargetId = null;
|
|
2522
|
+
}
|
|
2523
|
+
// ============================================================
|
|
2524
|
+
// Bulk "Move to…" (#3)
|
|
2525
|
+
// ============================================================
|
|
2526
|
+
openBulkMove(event) {
|
|
2527
|
+
event.stopPropagation();
|
|
2528
|
+
if (this.navigatorNodes.length === 0)
|
|
2529
|
+
void this.loadAllCollections();
|
|
2530
|
+
this.showBulkMovePopover = true;
|
|
2531
|
+
}
|
|
2532
|
+
closeBulkMove() {
|
|
2533
|
+
this.showBulkMovePopover = false;
|
|
2534
|
+
}
|
|
2535
|
+
async bulkMoveTo(collection) {
|
|
2536
|
+
const items = this.unifiedItems.filter(i => this.selectedItems.has(i.id));
|
|
2537
|
+
this.showBulkMovePopover = false;
|
|
2538
|
+
await this.moveItemsTo(items, collection.ID, this.currentCollectionId);
|
|
2539
|
+
}
|
|
2540
|
+
// ============================================================
|
|
2541
|
+
// Staging shelf (#5)
|
|
2542
|
+
// ============================================================
|
|
2543
|
+
stageSelected() {
|
|
2544
|
+
const items = this.unifiedItems.filter(i => this.selectedItems.has(i.id));
|
|
2545
|
+
for (const it of items) {
|
|
2546
|
+
if (!this.shelf.some(s => s.item.id === it.id)) {
|
|
2547
|
+
this.shelf.push({ item: it, sourceCollectionId: this.currentCollectionId });
|
|
2548
|
+
}
|
|
2549
|
+
}
|
|
2550
|
+
this.clearSelection();
|
|
2551
|
+
this.cdr.detectChanges();
|
|
2552
|
+
}
|
|
2553
|
+
removeFromShelf(id) {
|
|
2554
|
+
this.shelf = this.shelf.filter(s => s.item.id !== id);
|
|
2555
|
+
this.cdr.detectChanges();
|
|
2556
|
+
}
|
|
2557
|
+
clearShelf() {
|
|
2558
|
+
this.shelf = [];
|
|
2559
|
+
this.cdr.detectChanges();
|
|
2560
|
+
}
|
|
2561
|
+
/** Moves all staged items into the currently-open collection. */
|
|
2562
|
+
async dropShelfHere() {
|
|
2563
|
+
if (this.shelf.length === 0 || !this.currentCollectionId)
|
|
2564
|
+
return;
|
|
2565
|
+
const target = this.currentCollectionId;
|
|
2566
|
+
try {
|
|
2567
|
+
const p = this.ProviderToUse;
|
|
2568
|
+
const rv = RunView.FromMetadataProvider(p);
|
|
2569
|
+
for (const entry of this.shelf) {
|
|
2570
|
+
const it = entry.item;
|
|
2571
|
+
if (it.type === 'artifact' && it.version) {
|
|
2572
|
+
if (entry.sourceCollectionId && UUIDsEqual(entry.sourceCollectionId, target))
|
|
2573
|
+
continue;
|
|
2574
|
+
await this.addVersionToCollection(p, rv, it.version.ID, target);
|
|
2575
|
+
if (entry.sourceCollectionId) {
|
|
2576
|
+
await this.removeVersionFromCollection(rv, it.version.ID, entry.sourceCollectionId);
|
|
2577
|
+
}
|
|
2578
|
+
}
|
|
2579
|
+
else if (it.type === 'folder' && it.collection) {
|
|
2580
|
+
const fid = it.collection.ID;
|
|
2581
|
+
if (UUIDsEqual(fid, target) || this.isCollectionDescendant(target, fid))
|
|
2582
|
+
continue;
|
|
2583
|
+
await this.reparentCollection(fid, target);
|
|
2584
|
+
}
|
|
2585
|
+
}
|
|
2586
|
+
this.shelf = [];
|
|
2587
|
+
await this.loadCollections(true);
|
|
2588
|
+
await this.loadArtifacts(true);
|
|
2589
|
+
await this.loadAllCollections(true);
|
|
2590
|
+
this.buildUnifiedItemList();
|
|
2591
|
+
}
|
|
2592
|
+
catch (error) {
|
|
2593
|
+
console.error('Error moving staged items:', error);
|
|
2594
|
+
await this.dialogService.alert('Error', 'Failed to move staged items. Please try again.');
|
|
2595
|
+
}
|
|
2596
|
+
}
|
|
1872
2597
|
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)); };
|
|
1873
2598
|
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CollectionsFullViewComponent, selectors: [["mj-collections-full-view"]], hostBindings: function CollectionsFullViewComponent_HostBindings(rf, ctx) { if (rf & 1) {
|
|
1874
2599
|
i0.ɵɵlistener("keydown.escape", function CollectionsFullViewComponent_keydown_escape_HostBindingHandler() { return ctx.onEscapeKey(); }, i0.ɵɵresolveDocument);
|
|
1875
|
-
} }, inputs: { environmentId: "environmentId", currentUser: "currentUser" }, outputs: { collectionNavigated: "collectionNavigated" }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls:
|
|
2600
|
+
} }, inputs: { environmentId: "environmentId", currentUser: "currentUser" }, outputs: { collectionNavigated: "collectionNavigated", openConversationRequested: "openConversationRequested" }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 37, vars: 36, consts: [[1, "collections-view", 3, "keydown"], [1, "collections-header"], [1, "collections-breadcrumb"], ["title", "Toggle collections panel", 1, "btn-icon", "nav-toggle", 3, "click"], [1, "fas", "fa-bars"], [1, "breadcrumb-item", 3, "dragover", "dragleave", "drop"], [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-body"], [1, "collections-navigator"], [1, "collections-content"], [1, "loading-state"], [1, "empty-state"], [1, "staging-shelf"], [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"], [1, "breadcrumb-link", 3, "dragover", "dragleave", "drop", "click"], ["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, "toolbar-separator"], [1, "toolbar-actions-group"], [1, "btn-icon", 3, "title"], [1, "btn-icon", "btn-icon-danger", 3, "title"], [1, "fas", "fa-share-nodes"], [1, "fas", "fa-pen-to-square"], [1, "btn-icon", "btn-icon-danger", 3, "click", "title"], [1, "fas", "fa-trash"], [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, "fas", "fa-folder-tree"], ["title", "Add to the staging shelf to move later", 1, "btn-toolbar", 3, "click"], [1, "fas", "fa-layer-group"], [1, "btn-toolbar", "btn-danger", 3, "click"], [1, "bulk-move-backdrop", 3, "click"], [1, "dropdown-menu", "bulk-move-menu"], [1, "dropdown-note"], [1, "dropdown-item", 3, "paddingLeft"], [1, "fas", "fa-folder"], [1, "nav-header"], [1, "nav-list"], [1, "nav-row", 3, "click", "dragover", "dragleave", "drop"], [1, "nav-row", 3, "active", "drag-over", "paddingLeft", "title"], [1, "nav-row", 3, "click", "dragover", "dragleave", "drop", "title"], [1, "nav-row-name"], ["text", "Loading collections...", "size", "large"], [1, "fas", "fa-folder-open"], [1, "btn-primary", "empty-state-cta"], [1, "btn-primary", "empty-state-cta", 3, "click"], [1, "unified-grid"], [1, "grid-item", 3, "selected", "active", "dragging", "drag-over", "draggable"], [1, "pagination-bar"], [1, "grid-item", 3, "dragstart", "dragend", "dragover", "dragleave", "drop", "click", "dblclick", "contextmenu", "draggable"], [1, "item-checkbox", 3, "click"], [1, "grid-item-content", 3, "title"], [1, "grid-icon", "folder-icon"], ["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, "pagination-info"], [1, "pagination-controls"], ["title", "First page", 1, "pagination-btn", 3, "click", "disabled"], [1, "fas", "fa-angles-left"], ["title", "Previous page", 1, "pagination-btn", 3, "click", "disabled"], [1, "fas", "fa-chevron-left"], [1, "pagination-page-info"], ["title", "Next page", 1, "pagination-btn", 3, "click", "disabled"], [1, "fas", "fa-chevron-right"], ["title", "Last page", 1, "pagination-btn", 3, "click", "disabled"], [1, "fas", "fa-angles-right"], [1, "unified-list"], [1, "list-table"], [1, "col-checkbox"], [1, "fas", 3, "click", "ngClass"], [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", "dragging", "drag-over", "draggable"], [1, "list-item", 3, "dragstart", "dragend", "dragover", "dragleave", "drop", "click", "dblclick", "contextmenu", "draggable"], [1, "col-name"], [1, "list-name-cell"], ["title", "Shared", 1, "fas", "fa-users", "shared-indicator"], [1, "col-type"], [1, "col-modified"], [1, "shelf-info"], [1, "shelf-chips"], [1, "shelf-chip", 3, "title"], [1, "shelf-actions"], [1, "btn-toolbar", "btn-primary-toolbar", 3, "click", "disabled", "title"], [1, "fas", "fa-arrow-down"], [1, "shelf-chip-name"], ["title", "Remove", 1, "shelf-chip-x", 3, "click"], [1, "context-menu-backdrop", 3, "click"], [1, "context-menu"], [1, "context-menu-item", 3, "click"], [1, "context-menu-divider"], [1, "context-menu-item"], [1, "context-menu-item", "context-menu-danger", 3, "click"], [1, "context-menu-note"], [1, "move-target-list"], [1, "fas", "fa-spinner", "fa-spin"], [1, "context-menu-item", 3, "paddingLeft"], [1, "fas", "fa-eye"], [1, "fas", "fa-comments"], [1, "fas", "fa-chevron-right", "submenu-arrow"], [1, "fas", "fa-times-circle"]], template: function CollectionsFullViewComponent_Template(rf, ctx) { if (rf & 1) {
|
|
1876
2601
|
i0.ɵɵelementStart(0, "div", 0);
|
|
1877
2602
|
i0.ɵɵlistener("keydown", function CollectionsFullViewComponent_Template_div_keydown_0_listener($event) { return ctx.handleKeyboardShortcut($event); });
|
|
1878
|
-
i0.ɵɵelementStart(1, "div", 1)(2, "div", 2)(3, "
|
|
2603
|
+
i0.ɵɵelementStart(1, "div", 1)(2, "div", 2)(3, "button", 3);
|
|
2604
|
+
i0.ɵɵlistener("click", function CollectionsFullViewComponent_Template_button_click_3_listener() { return ctx.toggleNavigator(); });
|
|
1879
2605
|
i0.ɵɵelement(4, "i", 4);
|
|
1880
|
-
i0.ɵɵ
|
|
1881
|
-
i0.ɵɵ
|
|
1882
|
-
i0.ɵɵ
|
|
2606
|
+
i0.ɵɵelementEnd();
|
|
2607
|
+
i0.ɵɵelementStart(5, "div", 5);
|
|
2608
|
+
i0.ɵɵlistener("dragover", function CollectionsFullViewComponent_Template_div_dragover_5_listener($event) { return ctx.onCrumbDragOver(null, $event); })("dragleave", function CollectionsFullViewComponent_Template_div_dragleave_5_listener() { return ctx.onDragLeave("root"); })("drop", function CollectionsFullViewComponent_Template_div_drop_5_listener($event) { return ctx.onCrumbDrop(null, $event); });
|
|
2609
|
+
i0.ɵɵelement(6, "i", 6);
|
|
2610
|
+
i0.ɵɵelementStart(7, "a", 7);
|
|
2611
|
+
i0.ɵɵlistener("click", function CollectionsFullViewComponent_Template_a_click_7_listener() { return ctx.navigateToRoot(); });
|
|
2612
|
+
i0.ɵɵtext(8, "Collections");
|
|
1883
2613
|
i0.ɵɵelementEnd()();
|
|
1884
|
-
i0.ɵɵconditionalCreate(
|
|
2614
|
+
i0.ɵɵconditionalCreate(9, CollectionsFullViewComponent_Conditional_9_Template, 3, 0, "span", 8);
|
|
1885
2615
|
i0.ɵɵelementEnd();
|
|
1886
|
-
i0.ɵɵelementStart(
|
|
1887
|
-
i0.ɵɵlistener("click", function
|
|
1888
|
-
i0.ɵɵelement(
|
|
2616
|
+
i0.ɵɵelementStart(10, "div", 9)(11, "button", 10);
|
|
2617
|
+
i0.ɵɵlistener("click", function CollectionsFullViewComponent_Template_button_click_11_listener() { return ctx.toggleViewMode(); });
|
|
2618
|
+
i0.ɵɵelement(12, "i", 11);
|
|
1889
2619
|
i0.ɵɵelementEnd();
|
|
1890
|
-
i0.ɵɵelementStart(
|
|
1891
|
-
i0.ɵɵlistener("click", function
|
|
1892
|
-
i0.ɵɵelement(
|
|
2620
|
+
i0.ɵɵelementStart(13, "button", 10);
|
|
2621
|
+
i0.ɵɵlistener("click", function CollectionsFullViewComponent_Template_button_click_13_listener() { return ctx.toggleSelectMode(); });
|
|
2622
|
+
i0.ɵɵelement(14, "i", 12);
|
|
1893
2623
|
i0.ɵɵelementEnd();
|
|
1894
|
-
i0.ɵɵconditionalCreate(
|
|
1895
|
-
i0.ɵɵelementStart(
|
|
1896
|
-
i0.ɵɵelement(
|
|
1897
|
-
i0.ɵɵelementStart(
|
|
1898
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
1899
|
-
i0.ɵɵlistener("ngModelChange", function
|
|
2624
|
+
i0.ɵɵconditionalCreate(15, CollectionsFullViewComponent_Conditional_15_Template, 4, 1, "div", 13);
|
|
2625
|
+
i0.ɵɵelementStart(16, "div", 14);
|
|
2626
|
+
i0.ɵɵelement(17, "i", 15);
|
|
2627
|
+
i0.ɵɵelementStart(18, "input", 16);
|
|
2628
|
+
i0.ɵɵtwoWayListener("ngModelChange", function CollectionsFullViewComponent_Template_input_ngModelChange_18_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.searchQuery, $event) || (ctx.searchQuery = $event); return $event; });
|
|
2629
|
+
i0.ɵɵlistener("ngModelChange", function CollectionsFullViewComponent_Template_input_ngModelChange_18_listener($event) { return ctx.onSearchChange($event); });
|
|
1900
2630
|
i0.ɵɵelementEnd();
|
|
1901
|
-
i0.ɵɵconditionalCreate(
|
|
2631
|
+
i0.ɵɵconditionalCreate(19, CollectionsFullViewComponent_Conditional_19_Template, 2, 0, "button", 17);
|
|
1902
2632
|
i0.ɵɵelementEnd();
|
|
1903
|
-
i0.ɵɵconditionalCreate(
|
|
1904
|
-
i0.ɵɵconditionalCreate(
|
|
1905
|
-
i0.ɵɵelementStart(
|
|
1906
|
-
i0.ɵɵlistener("click", function
|
|
1907
|
-
i0.ɵɵelement(
|
|
2633
|
+
i0.ɵɵconditionalCreate(20, CollectionsFullViewComponent_Conditional_20_Template, 5, 3);
|
|
2634
|
+
i0.ɵɵconditionalCreate(21, CollectionsFullViewComponent_Conditional_21_Template, 7, 1, "div", 13);
|
|
2635
|
+
i0.ɵɵelementStart(22, "button", 18);
|
|
2636
|
+
i0.ɵɵlistener("click", function CollectionsFullViewComponent_Template_button_click_22_listener() { return ctx.refresh(); });
|
|
2637
|
+
i0.ɵɵelement(23, "i", 19);
|
|
1908
2638
|
i0.ɵɵelementEnd()()();
|
|
1909
|
-
i0.ɵɵconditionalCreate(
|
|
1910
|
-
i0.ɵɵelementStart(
|
|
1911
|
-
i0.ɵɵconditionalCreate(
|
|
1912
|
-
i0.ɵɵ
|
|
1913
|
-
i0.ɵɵconditionalCreate(
|
|
1914
|
-
i0.ɵɵconditionalCreate(
|
|
2639
|
+
i0.ɵɵconditionalCreate(24, CollectionsFullViewComponent_Conditional_24_Template, 19, 2, "div", 20);
|
|
2640
|
+
i0.ɵɵelementStart(25, "div", 21);
|
|
2641
|
+
i0.ɵɵconditionalCreate(26, CollectionsFullViewComponent_Conditional_26_Template, 10, 4, "div", 22);
|
|
2642
|
+
i0.ɵɵelementStart(27, "div", 23);
|
|
2643
|
+
i0.ɵɵconditionalCreate(28, CollectionsFullViewComponent_Conditional_28_Template, 2, 0, "div", 24);
|
|
2644
|
+
i0.ɵɵconditionalCreate(29, CollectionsFullViewComponent_Conditional_29_Template, 5, 3, "div", 25);
|
|
2645
|
+
i0.ɵɵconditionalCreate(30, CollectionsFullViewComponent_Conditional_30_Template, 4, 3);
|
|
2646
|
+
i0.ɵɵconditionalCreate(31, CollectionsFullViewComponent_Conditional_31_Template, 27, 10);
|
|
1915
2647
|
i0.ɵɵelementEnd()();
|
|
1916
|
-
i0.ɵɵconditionalCreate(
|
|
1917
|
-
i0.ɵɵ
|
|
1918
|
-
i0.ɵɵ
|
|
2648
|
+
i0.ɵɵconditionalCreate(32, CollectionsFullViewComponent_Conditional_32_Template, 14, 3, "div", 26);
|
|
2649
|
+
i0.ɵɵelementEnd();
|
|
2650
|
+
i0.ɵɵconditionalCreate(33, CollectionsFullViewComponent_Conditional_33_Template, 4, 6);
|
|
2651
|
+
i0.ɵɵelementStart(34, "mj-collection-form-modal", 27);
|
|
2652
|
+
i0.ɵɵlistener("saved", function CollectionsFullViewComponent_Template_mj_collection_form_modal_saved_34_listener($event) { return ctx.onCollectionSaved($event); })("cancelled", function CollectionsFullViewComponent_Template_mj_collection_form_modal_cancelled_34_listener() { return ctx.onFormCancelled(); });
|
|
1919
2653
|
i0.ɵɵelementEnd();
|
|
1920
|
-
i0.ɵɵelementStart(
|
|
1921
|
-
i0.ɵɵlistener("saved", function
|
|
2654
|
+
i0.ɵɵelementStart(35, "mj-artifact-create-modal", 28);
|
|
2655
|
+
i0.ɵɵlistener("saved", function CollectionsFullViewComponent_Template_mj_artifact_create_modal_saved_35_listener($event) { return ctx.onArtifactSaved($event); })("cancelled", function CollectionsFullViewComponent_Template_mj_artifact_create_modal_cancelled_35_listener() { return ctx.onArtifactModalCancelled(); });
|
|
1922
2656
|
i0.ɵɵelementEnd();
|
|
1923
|
-
i0.ɵɵelementStart(
|
|
1924
|
-
i0.ɵɵlistener("saved", function
|
|
2657
|
+
i0.ɵɵelementStart(36, "mj-collection-share-modal", 29);
|
|
2658
|
+
i0.ɵɵlistener("saved", function CollectionsFullViewComponent_Template_mj_collection_share_modal_saved_36_listener() { return ctx.onPermissionsChanged(); })("cancelled", function CollectionsFullViewComponent_Template_mj_collection_share_modal_cancelled_36_listener() { return ctx.onShareModalCancelled(); });
|
|
1925
2659
|
i0.ɵɵelementEnd();
|
|
1926
2660
|
} if (rf & 2) {
|
|
1927
|
-
i0.ɵɵadvance(
|
|
1928
|
-
i0.ɵɵ
|
|
2661
|
+
i0.ɵɵadvance(3);
|
|
2662
|
+
i0.ɵɵclassProp("active", ctx.showNavigator);
|
|
2663
|
+
i0.ɵɵadvance(2);
|
|
2664
|
+
i0.ɵɵclassProp("drag-over", ctx.dragOverTargetId === "root");
|
|
2665
|
+
i0.ɵɵadvance(4);
|
|
2666
|
+
i0.ɵɵconditional(ctx.breadcrumbs.length > 0 ? 9 : -1);
|
|
1929
2667
|
i0.ɵɵadvance(2);
|
|
1930
2668
|
i0.ɵɵproperty("title", ctx.viewMode === "grid" ? "Switch to List View" : "Switch to Grid View");
|
|
1931
2669
|
i0.ɵɵadvance();
|
|
@@ -1934,34 +2672,38 @@ export class CollectionsFullViewComponent extends BaseAngularComponent {
|
|
|
1934
2672
|
i0.ɵɵclassProp("active", ctx.isSelectMode);
|
|
1935
2673
|
i0.ɵɵproperty("title", ctx.isSelectMode ? "Exit Select Mode" : "Select Items");
|
|
1936
2674
|
i0.ɵɵadvance(2);
|
|
1937
|
-
i0.ɵɵconditional(ctx.viewMode === "grid" ?
|
|
2675
|
+
i0.ɵɵconditional(ctx.viewMode === "grid" ? 15 : -1);
|
|
1938
2676
|
i0.ɵɵadvance(3);
|
|
1939
2677
|
i0.ɵɵtwoWayProperty("ngModel", ctx.searchQuery);
|
|
1940
2678
|
i0.ɵɵadvance();
|
|
1941
|
-
i0.ɵɵconditional(ctx.searchQuery ?
|
|
2679
|
+
i0.ɵɵconditional(ctx.searchQuery ? 19 : -1);
|
|
1942
2680
|
i0.ɵɵadvance();
|
|
1943
|
-
i0.ɵɵconditional(ctx.currentCollectionId && ctx.currentCollection ?
|
|
2681
|
+
i0.ɵɵconditional(ctx.currentCollectionId && ctx.currentCollection ? 20 : -1);
|
|
1944
2682
|
i0.ɵɵadvance();
|
|
1945
|
-
i0.ɵɵconditional(ctx.canEditCurrent() ?
|
|
2683
|
+
i0.ɵɵconditional(ctx.canEditCurrent() ? 21 : -1);
|
|
1946
2684
|
i0.ɵɵadvance(3);
|
|
1947
|
-
i0.ɵɵconditional(ctx.selectedItems.size > 0 ?
|
|
2685
|
+
i0.ɵɵconditional(ctx.selectedItems.size > 0 ? 24 : -1);
|
|
2686
|
+
i0.ɵɵadvance(2);
|
|
2687
|
+
i0.ɵɵconditional(ctx.showNavigator ? 26 : -1);
|
|
1948
2688
|
i0.ɵɵadvance(2);
|
|
1949
|
-
i0.ɵɵconditional(ctx.isLoading ?
|
|
2689
|
+
i0.ɵɵconditional(ctx.isLoading ? 28 : -1);
|
|
2690
|
+
i0.ɵɵadvance();
|
|
2691
|
+
i0.ɵɵconditional(!ctx.isLoading && ctx.unifiedItems.length === 0 ? 29 : -1);
|
|
1950
2692
|
i0.ɵɵadvance();
|
|
1951
|
-
i0.ɵɵconditional(!ctx.isLoading && ctx.unifiedItems.length
|
|
2693
|
+
i0.ɵɵconditional(!ctx.isLoading && ctx.unifiedItems.length > 0 && ctx.viewMode === "grid" ? 30 : -1);
|
|
1952
2694
|
i0.ɵɵadvance();
|
|
1953
|
-
i0.ɵɵconditional(!ctx.isLoading && ctx.unifiedItems.length > 0 && ctx.viewMode === "
|
|
2695
|
+
i0.ɵɵconditional(!ctx.isLoading && ctx.unifiedItems.length > 0 && ctx.viewMode === "list" ? 31 : -1);
|
|
1954
2696
|
i0.ɵɵadvance();
|
|
1955
|
-
i0.ɵɵconditional(
|
|
2697
|
+
i0.ɵɵconditional(ctx.shelf.length > 0 ? 32 : -1);
|
|
1956
2698
|
i0.ɵɵadvance();
|
|
1957
|
-
i0.ɵɵconditional(ctx.showContextMenu && ctx.contextMenuItem ?
|
|
2699
|
+
i0.ɵɵconditional(ctx.showContextMenu && ctx.contextMenuItem ? 33 : -1);
|
|
1958
2700
|
i0.ɵɵadvance();
|
|
1959
2701
|
i0.ɵɵproperty("isOpen", ctx.isFormModalOpen)("collection", ctx.editingCollection)("parentCollection", ctx.editingCollection ? undefined : ctx.currentCollection || undefined)("environmentId", ctx.environmentId)("currentUser", ctx.currentUser);
|
|
1960
2702
|
i0.ɵɵadvance();
|
|
1961
2703
|
i0.ɵɵproperty("isOpen", ctx.isArtifactModalOpen)("collectionId", ctx.currentCollectionId || "")("environmentId", ctx.environmentId)("currentUser", ctx.currentUser);
|
|
1962
2704
|
i0.ɵɵadvance();
|
|
1963
2705
|
i0.ɵɵproperty("isOpen", ctx.isShareModalOpen)("collection", ctx.sharingCollection)("currentUser", ctx.currentUser)("currentUserPermissions", ctx.sharingCollection ? ctx.userPermissions.get(ctx.sharingCollection.ID) || null : null);
|
|
1964
|
-
} }, dependencies: [i6.NgClass, i7.DefaultValueAccessor, i7.NgControlStatus, i7.NgModel, i8.LoadingComponent, i9.CollectionShareModalComponent, i10.CollectionFormModalComponent, i11.ArtifactCreateModalComponent, i6.DatePipe], styles: ["[_nghost-%COMP%] {\n display: flex;\n flex-direction: column;\n flex: 1;\n min-height: 0;\n }\n\n \n\n .collections-view[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: var(--mj-bg-surface-sunken);\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 var(--mj-border-default);\n gap: 16px;\n background: var(--mj-bg-surface);\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: var(--mj-text-muted);\n font-size: 14px;\n }\n\n .breadcrumb-link[_ngcontent-%COMP%] {\n color: var(--mj-text-primary);\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: var(--mj-brand-primary);\n }\n\n .breadcrumb-link.active[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\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: var(--mj-border-strong);\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: var(--mj-brand-primary);\n border: none;\n border-radius: 6px;\n color: var(--mj-text-inverse);\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: var(--mj-brand-primary-hover);\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 var(--mj-border-strong);\n border-radius: 6px;\n cursor: pointer;\n color: var(--mj-text-muted);\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: var(--mj-bg-surface-sunken);\n color: var(--mj-text-primary);\n border-color: var(--mj-text-disabled);\n }\n\n .btn-icon.active[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary);\n }\n\n .btn-icon.active[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\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: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\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: var(--mj-text-primary);\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: var(--mj-bg-surface-sunken);\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: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n }\n\n .dropdown-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 14px;\n width: 16px;\n text-align: center;\n color: var(--mj-text-muted);\n }\n\n .dropdown-item.active[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n }\n\n .dropdown-divider[_ngcontent-%COMP%] {\n height: 1px;\n background: var(--mj-border-default);\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: var(--mj-text-disabled);\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 var(--mj-border-strong);\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: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n }\n\n .search-clear[_ngcontent-%COMP%] {\n position: absolute;\n right: 6px;\n padding: 4px;\n background: transparent;\n border: none;\n color: var(--mj-text-disabled);\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: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\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: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-bottom: 1px solid color-mix(in srgb, var(--mj-brand-primary) 30%, var(--mj-bg-surface));\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: var(--mj-brand-primary);\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: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-strong);\n border-radius: 6px;\n color: var(--mj-text-secondary);\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: var(--mj-bg-surface-sunken);\n border-color: var(--mj-text-disabled);\n }\n\n .btn-toolbar.btn-danger[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n border-color: color-mix(in srgb, var(--mj-status-error) 30%, var(--mj-bg-surface));\n }\n\n .btn-toolbar.btn-danger[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n border-color: var(--mj-status-error);\n }\n\n \n\n .collections-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\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 flex: 1;\n min-height: 0;\n color: var(--mj-text-disabled);\n text-align: center;\n padding: 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: var(--mj-border-strong);\n }\n\n .empty-state[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n color: var(--mj-text-secondary);\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: var(--mj-text-muted);\n }\n\n .empty-state[_ngcontent-%COMP%] .empty-state-cta[_ngcontent-%COMP%] {\n padding: 10px 20px;\n font-size: 14px;\n border-radius: 8px;\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 flex-shrink: 0;\n }\n\n .grid-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n padding: 12px;\n background: var(--mj-bg-surface);\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: var(--mj-bg-surface-sunken);\n border-color: var(--mj-border-strong);\n }\n\n .grid-item.selected[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-color: var(--mj-brand-primary);\n }\n\n .grid-item.active[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n border-color: var(--mj-status-warning);\n box-shadow: 0 0 0 1px var(--mj-status-warning);\n }\n\n .grid-item.active[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-status-warning) 25%, var(--mj-bg-surface));\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: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-brand-primary) 30%, var(--mj-bg-surface));\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: var(--mj-text-disabled);\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: var(--mj-brand-primary);\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: var(--mj-brand-primary);\n }\n\n .grid-icon.folder-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 36px;\n color: var(--mj-text-inverse);\n }\n\n .grid-icon.artifact-icon[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n }\n\n .grid-icon.artifact-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 32px;\n color: var(--mj-text-muted);\n }\n\n .shared-badge[_ngcontent-%COMP%] {\n position: absolute;\n top: -4px;\n right: -4px;\n width: 20px;\n height: 20px;\n background: var(--mj-status-success);\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n border: 2px solid var(--mj-bg-surface);\n }\n\n .shared-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--mj-text-inverse);\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: var(--mj-text-primary);\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: var(--mj-text-muted);\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: var(--mj-text-muted);\n margin-top: 4px;\n }\n\n .grid-owner[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\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: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\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: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\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: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n overflow: hidden;\n flex-shrink: 0;\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: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\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: var(--mj-text-muted);\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: var(--mj-brand-primary);\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 var(--mj-bg-surface-sunken);\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: var(--mj-bg-surface-sunken);\n }\n\n .list-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr.selected[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n }\n\n .list-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr.active[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n border-left: 3px solid var(--mj-status-warning);\n }\n\n .list-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr.active[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-status-warning) 25%, var(--mj-bg-surface));\n }\n\n .list-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 12px 16px;\n font-size: 13px;\n color: var(--mj-text-secondary);\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: var(--mj-text-disabled);\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: var(--mj-brand-primary);\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: var(--mj-text-muted);\n width: 20px;\n text-align: center;\n }\n\n .list-name-cell[_ngcontent-%COMP%] .fa-folder[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n }\n\n .shared-indicator[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-status-success);\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 }\n\n \n\n .pagination-bar[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 10px 16px;\n margin-top: 8px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n flex-shrink: 0;\n }\n\n .pagination-info[_ngcontent-%COMP%] {\n white-space: nowrap;\n }\n\n .pagination-controls[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n }\n\n .pagination-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 150ms ease;\n font-size: 12px;\n }\n\n .pagination-btn[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: var(--mj-bg-surface-hover);\n border-color: var(--mj-border-strong);\n color: var(--mj-text-primary);\n }\n\n .pagination-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.35;\n cursor: default;\n }\n\n .pagination-page-info[_ngcontent-%COMP%] {\n padding: 0 8px;\n white-space: nowrap;\n font-weight: 500;\n }\n\n \n\n .toolbar-separator[_ngcontent-%COMP%] {\n width: 1px;\n height: 24px;\n background: var(--mj-border-strong);\n margin: 0 4px;\n }\n\n .toolbar-actions-group[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n }\n\n .btn-icon-danger[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n border-color: color-mix(in srgb, var(--mj-status-error) 30%, var(--mj-bg-surface));\n }\n\n .btn-icon-danger[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n border-color: var(--mj-status-error);\n }\n\n \n\n .context-menu-backdrop[_ngcontent-%COMP%] {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 1999;\n }\n\n .context-menu[_ngcontent-%COMP%] {\n position: fixed;\n min-width: 180px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.18);\n padding: 4px;\n z-index: 2000;\n }\n\n .context-menu-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: var(--mj-text-primary);\n font-size: 13px;\n cursor: pointer;\n text-align: left;\n transition: background 100ms ease;\n }\n\n .context-menu-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n }\n\n .context-menu-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 14px;\n width: 16px;\n text-align: center;\n color: var(--mj-text-muted);\n }\n\n .context-menu-danger[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n }\n\n .context-menu-danger[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n }\n\n .context-menu-danger[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n }\n\n .context-menu-divider[_ngcontent-%COMP%] {\n height: 1px;\n background: var(--mj-border-default);\n margin: 4px 0;\n }"] });
|
|
2706
|
+
} }, dependencies: [i6.NgClass, i7.DefaultValueAccessor, i7.NgControlStatus, i7.NgModel, i8.LoadingComponent, i9.CollectionShareModalComponent, i10.CollectionFormModalComponent, i11.ArtifactCreateModalComponent, i6.DatePipe], styles: ["[_nghost-%COMP%] {\n display: flex;\n flex-direction: column;\n flex: 1;\n min-height: 0;\n }\n\n \n\n .collections-view[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: var(--mj-bg-surface-sunken);\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 var(--mj-border-default);\n gap: 16px;\n background: var(--mj-bg-surface);\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: var(--mj-text-muted);\n font-size: 14px;\n }\n\n .breadcrumb-link[_ngcontent-%COMP%] {\n color: var(--mj-text-primary);\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: var(--mj-brand-primary);\n }\n\n .breadcrumb-link.active[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\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: var(--mj-border-strong);\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: var(--mj-brand-primary);\n border: none;\n border-radius: 6px;\n color: var(--mj-text-inverse);\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: var(--mj-brand-primary-hover);\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 var(--mj-border-strong);\n border-radius: 6px;\n cursor: pointer;\n color: var(--mj-text-muted);\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: var(--mj-bg-surface-sunken);\n color: var(--mj-text-primary);\n border-color: var(--mj-text-disabled);\n }\n\n .btn-icon.active[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary);\n }\n\n .btn-icon.active[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\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: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\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: var(--mj-text-primary);\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: var(--mj-bg-surface-sunken);\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: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n }\n\n .dropdown-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 14px;\n width: 16px;\n text-align: center;\n color: var(--mj-text-muted);\n }\n\n .dropdown-item.active[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n }\n\n .dropdown-divider[_ngcontent-%COMP%] {\n height: 1px;\n background: var(--mj-border-default);\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: var(--mj-text-disabled);\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 var(--mj-border-strong);\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: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n }\n\n .search-clear[_ngcontent-%COMP%] {\n position: absolute;\n right: 6px;\n padding: 4px;\n background: transparent;\n border: none;\n color: var(--mj-text-disabled);\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: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\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: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-bottom: 1px solid color-mix(in srgb, var(--mj-brand-primary) 30%, var(--mj-bg-surface));\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: var(--mj-brand-primary);\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: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-strong);\n border-radius: 6px;\n color: var(--mj-text-secondary);\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: var(--mj-bg-surface-sunken);\n border-color: var(--mj-text-disabled);\n }\n\n .btn-toolbar.btn-danger[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n border-color: color-mix(in srgb, var(--mj-status-error) 30%, var(--mj-bg-surface));\n }\n\n .btn-toolbar.btn-danger[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n border-color: var(--mj-status-error);\n }\n\n \n\n .collections-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\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 flex: 1;\n min-height: 0;\n color: var(--mj-text-disabled);\n text-align: center;\n padding: 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: var(--mj-border-strong);\n }\n\n .empty-state[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n color: var(--mj-text-secondary);\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: var(--mj-text-muted);\n }\n\n .empty-state[_ngcontent-%COMP%] .empty-state-cta[_ngcontent-%COMP%] {\n padding: 10px 20px;\n font-size: 14px;\n border-radius: 8px;\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 flex-shrink: 0;\n }\n\n .grid-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n padding: 12px;\n background: var(--mj-bg-surface);\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: var(--mj-bg-surface-sunken);\n border-color: var(--mj-border-strong);\n }\n\n .grid-item.selected[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-color: var(--mj-brand-primary);\n }\n\n .grid-item.active[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n border-color: var(--mj-status-warning);\n box-shadow: 0 0 0 1px var(--mj-status-warning);\n }\n\n .grid-item.active[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-status-warning) 25%, var(--mj-bg-surface));\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: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-brand-primary) 30%, var(--mj-bg-surface));\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: var(--mj-text-disabled);\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: var(--mj-brand-primary);\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: var(--mj-brand-primary);\n }\n\n .grid-icon.folder-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 36px;\n color: var(--mj-text-inverse);\n }\n\n .grid-icon.artifact-icon[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n }\n\n .grid-icon.artifact-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 32px;\n color: var(--mj-text-muted);\n }\n\n .shared-badge[_ngcontent-%COMP%] {\n position: absolute;\n top: -4px;\n right: -4px;\n width: 20px;\n height: 20px;\n background: var(--mj-status-success);\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n border: 2px solid var(--mj-bg-surface);\n }\n\n .shared-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--mj-text-inverse);\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: var(--mj-text-primary);\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: var(--mj-text-muted);\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: var(--mj-text-muted);\n margin-top: 4px;\n }\n\n .grid-owner[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\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: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\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: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\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: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n overflow: hidden;\n flex-shrink: 0;\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: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\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: var(--mj-text-muted);\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: var(--mj-brand-primary);\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 var(--mj-bg-surface-sunken);\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: var(--mj-bg-surface-sunken);\n }\n\n .list-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr.selected[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n }\n\n .list-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr.active[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n border-left: 3px solid var(--mj-status-warning);\n }\n\n .list-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr.active[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-status-warning) 25%, var(--mj-bg-surface));\n }\n\n .list-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 12px 16px;\n font-size: 13px;\n color: var(--mj-text-secondary);\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: var(--mj-text-disabled);\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: var(--mj-brand-primary);\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: var(--mj-text-muted);\n width: 20px;\n text-align: center;\n }\n\n .list-name-cell[_ngcontent-%COMP%] .fa-folder[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n }\n\n .shared-indicator[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-status-success);\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 }\n\n \n\n .pagination-bar[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 10px 16px;\n margin-top: 8px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n flex-shrink: 0;\n }\n\n .pagination-info[_ngcontent-%COMP%] {\n white-space: nowrap;\n }\n\n .pagination-controls[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n }\n\n .pagination-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 150ms ease;\n font-size: 12px;\n }\n\n .pagination-btn[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: var(--mj-bg-surface-hover);\n border-color: var(--mj-border-strong);\n color: var(--mj-text-primary);\n }\n\n .pagination-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.35;\n cursor: default;\n }\n\n .pagination-page-info[_ngcontent-%COMP%] {\n padding: 0 8px;\n white-space: nowrap;\n font-weight: 500;\n }\n\n \n\n .toolbar-separator[_ngcontent-%COMP%] {\n width: 1px;\n height: 24px;\n background: var(--mj-border-strong);\n margin: 0 4px;\n }\n\n .toolbar-actions-group[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n }\n\n .btn-icon-danger[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n border-color: color-mix(in srgb, var(--mj-status-error) 30%, var(--mj-bg-surface));\n }\n\n .btn-icon-danger[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n border-color: var(--mj-status-error);\n }\n\n \n\n .context-menu-backdrop[_ngcontent-%COMP%] {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 1999;\n }\n\n .context-menu[_ngcontent-%COMP%] {\n position: fixed;\n min-width: 180px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.18);\n padding: 4px;\n z-index: 2000;\n }\n\n .context-menu-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: var(--mj-text-primary);\n font-size: 13px;\n cursor: pointer;\n text-align: left;\n transition: background 100ms ease;\n }\n\n .context-menu-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n }\n\n .context-menu-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 14px;\n width: 16px;\n text-align: center;\n color: var(--mj-text-muted);\n }\n\n .context-menu-danger[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n }\n\n .context-menu-danger[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n }\n\n .context-menu-danger[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n }\n\n .context-menu-divider[_ngcontent-%COMP%] {\n height: 1px;\n background: var(--mj-border-default);\n margin: 4px 0;\n }\n .submenu-arrow[_ngcontent-%COMP%] {\n margin-left: auto;\n font-size: 10px;\n opacity: 0.6;\n }\n .move-target-list[_ngcontent-%COMP%] {\n max-height: 240px;\n overflow-y: auto;\n }\n .context-menu-note[_ngcontent-%COMP%] {\n padding: 8px 14px;\n font-size: 12px;\n color: var(--mj-text-muted);\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n \n\n .collections-body[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: row;\n min-height: 0;\n overflow: hidden;\n }\n .collections-navigator[_ngcontent-%COMP%] {\n width: 240px;\n flex-shrink: 0;\n border-right: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n }\n .nav-header[_ngcontent-%COMP%] {\n padding: 12px 14px 8px;\n font-size: 11px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.06em;\n color: var(--mj-text-muted);\n }\n .nav-list[_ngcontent-%COMP%] { display: flex; flex-direction: column; padding: 0 6px 12px; gap: 1px; }\n .nav-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n padding: 7px 10px;\n border: 1px solid transparent;\n border-radius: 6px;\n background: transparent;\n color: var(--mj-text-secondary);\n font-size: 13px;\n text-align: left;\n cursor: pointer;\n transition: background 0.12s ease;\n }\n .nav-row[_ngcontent-%COMP%]:hover { background: var(--mj-bg-surface-hover); color: var(--mj-text-primary); }\n .nav-row.active[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n font-weight: 600;\n }\n .nav-row.drag-over[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 22%, transparent);\n border-color: var(--mj-brand-primary);\n }\n .nav-row[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { font-size: 13px; width: 16px; flex-shrink: 0; }\n .nav-row-name[_ngcontent-%COMP%] { flex: 1; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n .nav-toggle.active[_ngcontent-%COMP%] { color: var(--mj-brand-primary); }\n\n \n\n .grid-item.dragging[_ngcontent-%COMP%], .list-item.dragging[_ngcontent-%COMP%] { opacity: 0.4; }\n .grid-item.drag-over[_ngcontent-%COMP%] {\n border-color: var(--mj-brand-primary) !important;\n background: color-mix(in srgb, var(--mj-brand-primary) 18%, var(--mj-bg-surface)) !important;\n }\n .list-item.drag-over[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 14%, var(--mj-bg-surface));\n box-shadow: inset 0 0 0 1px var(--mj-brand-primary);\n }\n .breadcrumb-item.drag-over[_ngcontent-%COMP%], .breadcrumb-link.drag-over[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 20%, transparent);\n border-radius: 6px;\n outline: 1px solid var(--mj-brand-primary);\n }\n\n \n\n .item-checkbox[_ngcontent-%COMP%] { opacity: 0; transition: opacity 150ms ease; }\n .grid-item[_ngcontent-%COMP%]:hover .item-checkbox[_ngcontent-%COMP%], \n .grid-item.selected[_ngcontent-%COMP%] .item-checkbox[_ngcontent-%COMP%], \n .unified-grid.select-mode[_ngcontent-%COMP%] .item-checkbox[_ngcontent-%COMP%] { opacity: 1; }\n .list-item[_ngcontent-%COMP%] .col-checkbox[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { opacity: 0; transition: opacity 150ms ease; }\n .list-item[_ngcontent-%COMP%]:hover .col-checkbox[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n .list-item.selected[_ngcontent-%COMP%] .col-checkbox[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n .unified-list.select-mode[_ngcontent-%COMP%] .col-checkbox[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { opacity: 1; }\n .list-item.selected[_ngcontent-%COMP%] .col-checkbox[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { color: var(--mj-brand-primary); }\n\n \n\n .bulk-move-backdrop[_ngcontent-%COMP%] {\n position: fixed; inset: 0; z-index: 1000;\n }\n .bulk-move-menu[_ngcontent-%COMP%] {\n max-height: 320px;\n overflow-y: auto;\n z-index: 1001;\n }\n .dropdown-note[_ngcontent-%COMP%] { padding: 10px 14px; font-size: 12px; color: var(--mj-text-muted); }\n\n \n\n .staging-shelf[_ngcontent-%COMP%] {\n flex-shrink: 0;\n display: flex;\n align-items: center;\n gap: 14px;\n padding: 10px 16px;\n background: var(--mj-bg-surface);\n border-top: 1px solid var(--mj-border-default);\n box-shadow: 0 -2px 8px color-mix(in srgb, var(--mj-text-primary) 6%, transparent);\n }\n .shelf-info[_ngcontent-%COMP%] {\n display: flex; align-items: center; gap: 8px;\n font-weight: 600; font-size: 13px; color: var(--mj-text-primary);\n flex-shrink: 0;\n }\n .shelf-info[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { color: var(--mj-brand-primary); }\n .shelf-chips[_ngcontent-%COMP%] {\n flex: 1; min-width: 0;\n display: flex; gap: 6px; overflow-x: auto; padding: 2px 0;\n }\n .shelf-chip[_ngcontent-%COMP%] {\n display: inline-flex; align-items: center; gap: 6px;\n padding: 4px 6px 4px 10px;\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-default);\n border-radius: 999px;\n font-size: 12px; color: var(--mj-text-secondary);\n flex-shrink: 0;\n }\n .shelf-chip-name[_ngcontent-%COMP%] { max-width: 120px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n .shelf-chip-x[_ngcontent-%COMP%] {\n width: 18px; height: 18px; border: 0; background: transparent;\n color: var(--mj-text-muted); cursor: pointer; border-radius: 50%;\n display: flex; align-items: center; justify-content: center; font-size: 10px;\n }\n .shelf-chip-x[_ngcontent-%COMP%]:hover { background: var(--mj-bg-surface-hover); color: var(--mj-text-primary); }\n .shelf-actions[_ngcontent-%COMP%] { display: flex; gap: 8px; flex-shrink: 0; }\n .btn-toolbar.btn-primary-toolbar[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-color: var(--mj-brand-primary);\n }\n .btn-toolbar.btn-primary-toolbar[_ngcontent-%COMP%]:hover:not(:disabled) { background: var(--mj-brand-primary-hover); }\n .btn-toolbar[_ngcontent-%COMP%]:disabled { opacity: 0.5; cursor: not-allowed; }"] });
|
|
1965
2707
|
}
|
|
1966
2708
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CollectionsFullViewComponent, [{
|
|
1967
2709
|
type: Component,
|
|
@@ -1971,7 +2713,15 @@ export class CollectionsFullViewComponent extends BaseAngularComponent {
|
|
|
1971
2713
|
<div class="collections-header">
|
|
1972
2714
|
<!-- Breadcrumb navigation -->
|
|
1973
2715
|
<div class="collections-breadcrumb">
|
|
1974
|
-
<
|
|
2716
|
+
<button class="btn-icon nav-toggle" (click)="toggleNavigator()"
|
|
2717
|
+
[class.active]="showNavigator" title="Toggle collections panel">
|
|
2718
|
+
<i class="fas fa-bars"></i>
|
|
2719
|
+
</button>
|
|
2720
|
+
<div class="breadcrumb-item"
|
|
2721
|
+
[class.drag-over]="dragOverTargetId === 'root'"
|
|
2722
|
+
(dragover)="onCrumbDragOver(null, $event)"
|
|
2723
|
+
(dragleave)="onDragLeave('root')"
|
|
2724
|
+
(drop)="onCrumbDrop(null, $event)">
|
|
1975
2725
|
<i class="fas fa-home"></i>
|
|
1976
2726
|
<a class="breadcrumb-link" (click)="navigateToRoot()">Collections</a>
|
|
1977
2727
|
</div>
|
|
@@ -1981,6 +2731,10 @@ export class CollectionsFullViewComponent extends BaseAngularComponent {
|
|
|
1981
2731
|
<i class="fas fa-chevron-right breadcrumb-separator"></i>
|
|
1982
2732
|
<a class="breadcrumb-link"
|
|
1983
2733
|
[class.active]="last"
|
|
2734
|
+
[class.drag-over]="dragOverTargetId === 'crumb:' + crumb.id"
|
|
2735
|
+
(dragover)="onCrumbDragOver(crumb.id, $event)"
|
|
2736
|
+
(dragleave)="onDragLeave('crumb:' + crumb.id)"
|
|
2737
|
+
(drop)="onCrumbDrop(crumb.id, $event)"
|
|
1984
2738
|
(click)="navigateTo(crumb)">
|
|
1985
2739
|
{{ crumb.name }}
|
|
1986
2740
|
</a>
|
|
@@ -2124,18 +2878,77 @@ export class CollectionsFullViewComponent extends BaseAngularComponent {
|
|
|
2124
2878
|
<span class="selection-count">{{ selectedItems.size }} selected</span>
|
|
2125
2879
|
</div>
|
|
2126
2880
|
<div class="selection-actions">
|
|
2881
|
+
<div class="dropdown-container">
|
|
2882
|
+
<button class="btn-toolbar" (click)="openBulkMove($event)">
|
|
2883
|
+
<i class="fas fa-folder-tree"></i>
|
|
2884
|
+
Move to…
|
|
2885
|
+
</button>
|
|
2886
|
+
@if (showBulkMovePopover) {
|
|
2887
|
+
<div class="bulk-move-backdrop" (click)="closeBulkMove()"></div>
|
|
2888
|
+
<div class="dropdown-menu bulk-move-menu">
|
|
2889
|
+
@if (navigatorNodes.length === 0) {
|
|
2890
|
+
<div class="dropdown-note">No collections available</div>
|
|
2891
|
+
} @else {
|
|
2892
|
+
@for (node of navigatorNodes; track node.collection.ID) {
|
|
2893
|
+
<button class="dropdown-item" [style.paddingLeft.px]="12 + node.depth * 12"
|
|
2894
|
+
(click)="bulkMoveTo(node.collection)">
|
|
2895
|
+
<i class="fas fa-folder" [style.color]="node.collection.Color || null"></i>
|
|
2896
|
+
<span>{{ node.collection.Name }}</span>
|
|
2897
|
+
</button>
|
|
2898
|
+
}
|
|
2899
|
+
}
|
|
2900
|
+
</div>
|
|
2901
|
+
}
|
|
2902
|
+
</div>
|
|
2903
|
+
<button class="btn-toolbar" (click)="stageSelected()" title="Add to the staging shelf to move later">
|
|
2904
|
+
<i class="fas fa-layer-group"></i>
|
|
2905
|
+
Stage
|
|
2906
|
+
</button>
|
|
2127
2907
|
<button class="btn-toolbar" (click)="clearSelection()">
|
|
2128
2908
|
<i class="fas fa-times"></i>
|
|
2129
|
-
Clear
|
|
2909
|
+
Clear
|
|
2130
2910
|
</button>
|
|
2131
2911
|
<button class="btn-toolbar btn-danger" (click)="deleteSelected()">
|
|
2132
2912
|
<i class="fas fa-trash"></i>
|
|
2133
|
-
Delete
|
|
2913
|
+
Delete
|
|
2134
2914
|
</button>
|
|
2135
2915
|
</div>
|
|
2136
2916
|
</div>
|
|
2137
2917
|
}
|
|
2138
2918
|
|
|
2919
|
+
<!-- Body: navigator pane (#6) + content -->
|
|
2920
|
+
<div class="collections-body">
|
|
2921
|
+
@if (showNavigator) {
|
|
2922
|
+
<div class="collections-navigator">
|
|
2923
|
+
<div class="nav-header">Collections</div>
|
|
2924
|
+
<div class="nav-list">
|
|
2925
|
+
<button class="nav-row"
|
|
2926
|
+
[class.active]="!currentCollectionId"
|
|
2927
|
+
[class.drag-over]="dragOverTargetId === 'root'"
|
|
2928
|
+
(click)="navigateToRoot()"
|
|
2929
|
+
(dragover)="onCrumbDragOver(null, $event)"
|
|
2930
|
+
(dragleave)="onDragLeave('root')"
|
|
2931
|
+
(drop)="onCrumbDrop(null, $event)">
|
|
2932
|
+
<i class="fas fa-home"></i>
|
|
2933
|
+
<span>All Collections</span>
|
|
2934
|
+
</button>
|
|
2935
|
+
@for (node of navigatorNodes; track node.collection.ID) {
|
|
2936
|
+
<button class="nav-row"
|
|
2937
|
+
[class.active]="isCurrentNavigator(node.collection)"
|
|
2938
|
+
[class.drag-over]="dragOverTargetId === 'nav:' + node.collection.ID"
|
|
2939
|
+
[style.paddingLeft.px]="10 + node.depth * 14"
|
|
2940
|
+
(click)="navigatorClick(node.collection)"
|
|
2941
|
+
(dragover)="onNavigatorDragOver(node.collection, $event)"
|
|
2942
|
+
(dragleave)="onDragLeave('nav:' + node.collection.ID)"
|
|
2943
|
+
(drop)="onNavigatorDrop(node.collection, $event)"
|
|
2944
|
+
[title]="node.collection.Name">
|
|
2945
|
+
<i class="fas fa-folder" [style.color]="node.collection.Color || null"></i>
|
|
2946
|
+
<span class="nav-row-name">{{ node.collection.Name }}</span>
|
|
2947
|
+
</button>
|
|
2948
|
+
}
|
|
2949
|
+
</div>
|
|
2950
|
+
</div>
|
|
2951
|
+
}
|
|
2139
2952
|
<!-- Content area -->
|
|
2140
2953
|
<div class="collections-content">
|
|
2141
2954
|
<!-- Loading state -->
|
|
@@ -2185,17 +2998,23 @@ export class CollectionsFullViewComponent extends BaseAngularComponent {
|
|
|
2185
2998
|
class="grid-item"
|
|
2186
2999
|
[class.selected]="item.selected"
|
|
2187
3000
|
[class.active]="item.type === 'artifact' && IsArtifactActive(item)"
|
|
3001
|
+
[class.dragging]="draggedItemIds.includes(item.id)"
|
|
3002
|
+
[class.drag-over]="dragOverTargetId === item.id"
|
|
3003
|
+
[draggable]="true"
|
|
3004
|
+
(dragstart)="onItemDragStart(item, $event)"
|
|
3005
|
+
(dragend)="onItemDragEnd()"
|
|
3006
|
+
(dragover)="item.type === 'folder' ? onFolderItemDragOver(item, $event) : null"
|
|
3007
|
+
(dragleave)="item.type === 'folder' ? onDragLeave(item.id) : null"
|
|
3008
|
+
(drop)="item.type === 'folder' ? onFolderItemDrop(item, $event) : null"
|
|
2188
3009
|
(click)="onItemClick(item, $event)"
|
|
2189
3010
|
(dblclick)="onItemDoubleClick(item, $event)"
|
|
2190
3011
|
(contextmenu)="onItemContextMenu(item, $event)">
|
|
2191
|
-
<!-- Selection checkbox (
|
|
2192
|
-
|
|
2193
|
-
|
|
2194
|
-
|
|
2195
|
-
|
|
2196
|
-
|
|
2197
|
-
</div>
|
|
2198
|
-
}
|
|
3012
|
+
<!-- Selection checkbox (hover-reveal — no explicit select mode needed) -->
|
|
3013
|
+
<div class="item-checkbox"
|
|
3014
|
+
(click)="onCheckboxClick(item, $event)">
|
|
3015
|
+
<i class="fas"
|
|
3016
|
+
[ngClass]="item.selected ? 'fa-check-circle' : 'fa-circle'"></i>
|
|
3017
|
+
</div>
|
|
2199
3018
|
<!-- Folder item -->
|
|
2200
3019
|
@if (item.type === 'folder') {
|
|
2201
3020
|
<div
|
|
@@ -2312,13 +3131,11 @@ export class CollectionsFullViewComponent extends BaseAngularComponent {
|
|
|
2312
3131
|
<table class="list-table">
|
|
2313
3132
|
<thead>
|
|
2314
3133
|
<tr>
|
|
2315
|
-
|
|
2316
|
-
<
|
|
2317
|
-
|
|
2318
|
-
|
|
2319
|
-
|
|
2320
|
-
</th>
|
|
2321
|
-
}
|
|
3134
|
+
<th class="col-checkbox">
|
|
3135
|
+
<i class="fas"
|
|
3136
|
+
[ngClass]="selectedItems.size === unifiedItems.length && unifiedItems.length > 0 ? 'fa-check-square' : 'fa-square'"
|
|
3137
|
+
(click)="selectedItems.size === unifiedItems.length ? clearSelection() : selectAll()"></i>
|
|
3138
|
+
</th>
|
|
2322
3139
|
<th class="col-name sortable" (click)="setSortBy('name')">
|
|
2323
3140
|
<span>Name</span>
|
|
2324
3141
|
@if (sortBy !== 'name') {
|
|
@@ -2358,16 +3175,22 @@ export class CollectionsFullViewComponent extends BaseAngularComponent {
|
|
|
2358
3175
|
class="list-item"
|
|
2359
3176
|
[class.selected]="item.selected"
|
|
2360
3177
|
[class.active]="item.type === 'artifact' && IsArtifactActive(item)"
|
|
3178
|
+
[class.dragging]="draggedItemIds.includes(item.id)"
|
|
3179
|
+
[class.drag-over]="dragOverTargetId === item.id"
|
|
3180
|
+
[draggable]="true"
|
|
3181
|
+
(dragstart)="onItemDragStart(item, $event)"
|
|
3182
|
+
(dragend)="onItemDragEnd()"
|
|
3183
|
+
(dragover)="item.type === 'folder' ? onFolderItemDragOver(item, $event) : null"
|
|
3184
|
+
(dragleave)="item.type === 'folder' ? onDragLeave(item.id) : null"
|
|
3185
|
+
(drop)="item.type === 'folder' ? onFolderItemDrop(item, $event) : null"
|
|
2361
3186
|
(click)="onItemClick(item, $event)"
|
|
2362
3187
|
(dblclick)="onItemDoubleClick(item, $event)"
|
|
2363
3188
|
(contextmenu)="onItemContextMenu(item, $event)">
|
|
2364
|
-
|
|
2365
|
-
<
|
|
2366
|
-
|
|
2367
|
-
|
|
2368
|
-
|
|
2369
|
-
</td>
|
|
2370
|
-
}
|
|
3189
|
+
<td class="col-checkbox">
|
|
3190
|
+
<i class="fas"
|
|
3191
|
+
[ngClass]="item.selected ? 'fa-check-circle' : 'fa-circle'"
|
|
3192
|
+
(click)="onCheckboxClick(item, $event)"></i>
|
|
3193
|
+
</td>
|
|
2371
3194
|
<td class="col-name">
|
|
2372
3195
|
<div class="list-name-cell">
|
|
2373
3196
|
<i class="fas"
|
|
@@ -2447,6 +3270,38 @@ export class CollectionsFullViewComponent extends BaseAngularComponent {
|
|
|
2447
3270
|
}
|
|
2448
3271
|
}
|
|
2449
3272
|
</div>
|
|
3273
|
+
</div>
|
|
3274
|
+
|
|
3275
|
+
<!-- Staging shelf (#5) — survives navigation; drop staged items into the open collection -->
|
|
3276
|
+
@if (shelf.length > 0) {
|
|
3277
|
+
<div class="staging-shelf">
|
|
3278
|
+
<div class="shelf-info">
|
|
3279
|
+
<i class="fas fa-layer-group"></i>
|
|
3280
|
+
<span>{{ shelf.length }} staged</span>
|
|
3281
|
+
</div>
|
|
3282
|
+
<div class="shelf-chips">
|
|
3283
|
+
@for (entry of shelf; track entry.item.id) {
|
|
3284
|
+
<span class="shelf-chip" [title]="entry.item.name">
|
|
3285
|
+
<i class="fas" [ngClass]="entry.item.type === 'folder' ? 'fa-folder' : entry.item.icon"></i>
|
|
3286
|
+
<span class="shelf-chip-name">{{ entry.item.name }}</span>
|
|
3287
|
+
<button class="shelf-chip-x" (click)="removeFromShelf(entry.item.id)" title="Remove">
|
|
3288
|
+
<i class="fas fa-times"></i>
|
|
3289
|
+
</button>
|
|
3290
|
+
</span>
|
|
3291
|
+
}
|
|
3292
|
+
</div>
|
|
3293
|
+
<div class="shelf-actions">
|
|
3294
|
+
<button class="btn-toolbar btn-primary-toolbar"
|
|
3295
|
+
(click)="dropShelfHere()"
|
|
3296
|
+
[disabled]="!currentCollectionId"
|
|
3297
|
+
[title]="currentCollectionId ? 'Move staged items into this collection' : 'Open a collection to move items here'">
|
|
3298
|
+
<i class="fas fa-arrow-down"></i>
|
|
3299
|
+
Move here
|
|
3300
|
+
</button>
|
|
3301
|
+
<button class="btn-toolbar" (click)="clearShelf()">Clear</button>
|
|
3302
|
+
</div>
|
|
3303
|
+
</div>
|
|
3304
|
+
}
|
|
2450
3305
|
</div>
|
|
2451
3306
|
|
|
2452
3307
|
<!-- Context Menu -->
|
|
@@ -2482,16 +3337,48 @@ export class CollectionsFullViewComponent extends BaseAngularComponent {
|
|
|
2482
3337
|
}
|
|
2483
3338
|
}
|
|
2484
3339
|
@if (contextMenuItem.type === 'artifact') {
|
|
2485
|
-
|
|
2486
|
-
<
|
|
2487
|
-
|
|
2488
|
-
|
|
2489
|
-
|
|
3340
|
+
@if (showMoveSubmenu) {
|
|
3341
|
+
<button class="context-menu-item" (click)="closeMoveSubmenu($event)">
|
|
3342
|
+
<i class="fas fa-chevron-left"></i>
|
|
3343
|
+
<span>Move to Collection</span>
|
|
3344
|
+
</button>
|
|
2490
3345
|
<div class="context-menu-divider"></div>
|
|
2491
|
-
|
|
2492
|
-
<i class="fas fa-
|
|
2493
|
-
|
|
3346
|
+
@if (isLoadingMoveTargets) {
|
|
3347
|
+
<div class="context-menu-note"><i class="fas fa-spinner fa-spin"></i> Loading…</div>
|
|
3348
|
+
} @else if (moveTargets.length === 0) {
|
|
3349
|
+
<div class="context-menu-note">No other collections</div>
|
|
3350
|
+
} @else {
|
|
3351
|
+
<div class="move-target-list">
|
|
3352
|
+
@for (t of moveTargets; track t.collection.ID) {
|
|
3353
|
+
<button class="context-menu-item" [style.paddingLeft.px]="14 + t.depth * 12"
|
|
3354
|
+
(click)="moveArtifactToCollection(t.collection)">
|
|
3355
|
+
<i class="fas fa-folder" [style.color]="t.collection.Color || null"></i>
|
|
3356
|
+
<span>{{ t.collection.Name }}</span>
|
|
3357
|
+
</button>
|
|
3358
|
+
}
|
|
3359
|
+
</div>
|
|
3360
|
+
}
|
|
3361
|
+
} @else {
|
|
3362
|
+
<button class="context-menu-item" (click)="onContextMenuAction('view')">
|
|
3363
|
+
<i class="fas fa-eye"></i>
|
|
3364
|
+
<span>View</span>
|
|
3365
|
+
</button>
|
|
3366
|
+
<button class="context-menu-item" (click)="onContextMenuAction('openConversation')">
|
|
3367
|
+
<i class="fas fa-comments"></i>
|
|
3368
|
+
<span>Open source conversation</span>
|
|
2494
3369
|
</button>
|
|
3370
|
+
@if (canEditCurrent()) {
|
|
3371
|
+
<button class="context-menu-item" (click)="openMoveSubmenu($event)">
|
|
3372
|
+
<i class="fas fa-folder-tree"></i>
|
|
3373
|
+
<span>Move to Collection</span>
|
|
3374
|
+
<i class="fas fa-chevron-right submenu-arrow"></i>
|
|
3375
|
+
</button>
|
|
3376
|
+
<div class="context-menu-divider"></div>
|
|
3377
|
+
<button class="context-menu-item context-menu-danger" (click)="onContextMenuAction('remove')">
|
|
3378
|
+
<i class="fas fa-times-circle"></i>
|
|
3379
|
+
<span>Remove from Collection</span>
|
|
3380
|
+
</button>
|
|
3381
|
+
}
|
|
2495
3382
|
}
|
|
2496
3383
|
}
|
|
2497
3384
|
</div>
|
|
@@ -2525,16 +3412,18 @@ export class CollectionsFullViewComponent extends BaseAngularComponent {
|
|
|
2525
3412
|
(saved)="onPermissionsChanged()"
|
|
2526
3413
|
(cancelled)="onShareModalCancelled()">
|
|
2527
3414
|
</mj-collection-share-modal>
|
|
2528
|
-
`, styles: ["\n :host {\n display: flex;\n flex-direction: column;\n flex: 1;\n min-height: 0;\n }\n\n /* Main container */\n .collections-view {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: var(--mj-bg-surface-sunken);\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 var(--mj-border-default);\n gap: 16px;\n background: var(--mj-bg-surface);\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: var(--mj-text-muted);\n font-size: 14px;\n }\n\n .breadcrumb-link {\n color: var(--mj-text-primary);\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: var(--mj-brand-primary);\n }\n\n .breadcrumb-link.active {\n color: var(--mj-text-muted);\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: var(--mj-border-strong);\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: var(--mj-brand-primary);\n border: none;\n border-radius: 6px;\n color: var(--mj-text-inverse);\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: background 150ms ease;\n }\n\n .btn-primary:hover {\n background: var(--mj-brand-primary-hover);\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 var(--mj-border-strong);\n border-radius: 6px;\n cursor: pointer;\n color: var(--mj-text-muted);\n transition: all 150ms ease;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .btn-icon:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-primary);\n border-color: var(--mj-text-disabled);\n }\n\n .btn-icon.active {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary);\n }\n\n .btn-icon.active:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\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: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\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: var(--mj-text-primary);\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: var(--mj-bg-surface-sunken);\n }\n\n .dropdown-item:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .dropdown-item.active {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n }\n\n .dropdown-item i {\n font-size: 14px;\n width: 16px;\n text-align: center;\n color: var(--mj-text-muted);\n }\n\n .dropdown-item.active i {\n color: var(--mj-brand-primary);\n }\n\n .dropdown-divider {\n height: 1px;\n background: var(--mj-border-default);\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: var(--mj-text-disabled);\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 var(--mj-border-strong);\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: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n }\n\n .search-clear {\n position: absolute;\n right: 6px;\n padding: 4px;\n background: transparent;\n border: none;\n color: var(--mj-text-disabled);\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: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\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: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-bottom: 1px solid color-mix(in srgb, var(--mj-brand-primary) 30%, var(--mj-bg-surface));\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: var(--mj-brand-primary);\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: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-strong);\n border-radius: 6px;\n color: var(--mj-text-secondary);\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: all 150ms ease;\n }\n\n .btn-toolbar:hover {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-text-disabled);\n }\n\n .btn-toolbar.btn-danger {\n color: var(--mj-status-error);\n border-color: color-mix(in srgb, var(--mj-status-error) 30%, var(--mj-bg-surface));\n }\n\n .btn-toolbar.btn-danger:hover {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n border-color: var(--mj-status-error);\n }\n\n /* Content area */\n .collections-content {\n display: flex;\n flex-direction: column;\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 flex: 1;\n min-height: 0;\n color: var(--mj-text-disabled);\n text-align: center;\n padding: 24px;\n }\n\n .empty-state > i {\n font-size: 64px;\n margin-bottom: 24px;\n opacity: 0.3;\n color: var(--mj-border-strong);\n }\n\n .empty-state h3 {\n margin: 0 0 8px 0;\n color: var(--mj-text-secondary);\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: var(--mj-text-muted);\n }\n\n .empty-state .empty-state-cta {\n padding: 10px 20px;\n font-size: 14px;\n border-radius: 8px;\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 flex-shrink: 0;\n }\n\n .grid-item {\n display: flex;\n flex-direction: column;\n padding: 12px;\n background: var(--mj-bg-surface);\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: var(--mj-bg-surface-sunken);\n border-color: var(--mj-border-strong);\n }\n\n .grid-item.selected {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-color: var(--mj-brand-primary);\n }\n\n .grid-item.active {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n border-color: var(--mj-status-warning);\n box-shadow: 0 0 0 1px var(--mj-status-warning);\n }\n\n .grid-item.active:hover {\n background: color-mix(in srgb, var(--mj-status-warning) 25%, var(--mj-bg-surface));\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: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-brand-primary) 30%, var(--mj-bg-surface));\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: var(--mj-text-disabled);\n transition: color 150ms ease;\n }\n\n .grid-item.selected .item-checkbox i,\n .item-checkbox:hover i {\n color: var(--mj-brand-primary);\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: var(--mj-brand-primary);\n }\n\n .grid-icon.folder-icon i {\n font-size: 36px;\n color: var(--mj-text-inverse);\n }\n\n .grid-icon.artifact-icon {\n background: var(--mj-bg-surface-sunken);\n }\n\n .grid-icon.artifact-icon i {\n font-size: 32px;\n color: var(--mj-text-muted);\n }\n\n .shared-badge {\n position: absolute;\n top: -4px;\n right: -4px;\n width: 20px;\n height: 20px;\n background: var(--mj-status-success);\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n border: 2px solid var(--mj-bg-surface);\n }\n\n .shared-badge i {\n font-size: 10px;\n color: var(--mj-text-inverse);\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: var(--mj-text-primary);\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: var(--mj-text-muted);\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: var(--mj-text-muted);\n margin-top: 4px;\n }\n\n .grid-owner {\n font-size: 11px;\n color: var(--mj-text-muted);\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: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\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: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\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: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n overflow: hidden;\n flex-shrink: 0;\n }\n\n .list-table {\n width: 100%;\n border-collapse: collapse;\n }\n\n .list-table thead {\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n }\n\n .list-table th {\n padding: 10px 16px;\n text-align: left;\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-muted);\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: var(--mj-brand-primary);\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 var(--mj-bg-surface-sunken);\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: var(--mj-bg-surface-sunken);\n }\n\n .list-table tbody tr.selected {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n }\n\n .list-table tbody tr.active {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n border-left: 3px solid var(--mj-status-warning);\n }\n\n .list-table tbody tr.active:hover {\n background: color-mix(in srgb, var(--mj-status-warning) 25%, var(--mj-bg-surface));\n }\n\n .list-table td {\n padding: 12px 16px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n }\n\n .col-checkbox {\n width: 40px;\n text-align: center;\n }\n\n .col-checkbox i {\n font-size: 16px;\n color: var(--mj-text-disabled);\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: var(--mj-brand-primary);\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: var(--mj-text-muted);\n width: 20px;\n text-align: center;\n }\n\n .list-name-cell .fa-folder {\n color: var(--mj-brand-primary);\n }\n\n .shared-indicator {\n font-size: 12px;\n color: var(--mj-status-success);\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\n /* Pagination */\n .pagination-bar {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 10px 16px;\n margin-top: 8px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n flex-shrink: 0;\n }\n\n .pagination-info {\n white-space: nowrap;\n }\n\n .pagination-controls {\n display: flex;\n align-items: center;\n gap: 4px;\n }\n\n .pagination-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 150ms ease;\n font-size: 12px;\n }\n\n .pagination-btn:hover:not(:disabled) {\n background: var(--mj-bg-surface-hover);\n border-color: var(--mj-border-strong);\n color: var(--mj-text-primary);\n }\n\n .pagination-btn:disabled {\n opacity: 0.35;\n cursor: default;\n }\n\n .pagination-page-info {\n padding: 0 8px;\n white-space: nowrap;\n font-weight: 500;\n }\n\n /* Toolbar separator and action group */\n .toolbar-separator {\n width: 1px;\n height: 24px;\n background: var(--mj-border-strong);\n margin: 0 4px;\n }\n\n .toolbar-actions-group {\n display: flex;\n align-items: center;\n gap: 4px;\n }\n\n .btn-icon-danger {\n color: var(--mj-status-error);\n border-color: color-mix(in srgb, var(--mj-status-error) 30%, var(--mj-bg-surface));\n }\n\n .btn-icon-danger:hover {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n border-color: var(--mj-status-error);\n }\n\n /* Context menu */\n .context-menu-backdrop {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 1999;\n }\n\n .context-menu {\n position: fixed;\n min-width: 180px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.18);\n padding: 4px;\n z-index: 2000;\n }\n\n .context-menu-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: var(--mj-text-primary);\n font-size: 13px;\n cursor: pointer;\n text-align: left;\n transition: background 100ms ease;\n }\n\n .context-menu-item:hover {\n background: var(--mj-bg-surface-sunken);\n }\n\n .context-menu-item i {\n font-size: 14px;\n width: 16px;\n text-align: center;\n color: var(--mj-text-muted);\n }\n\n .context-menu-danger {\n color: var(--mj-status-error);\n }\n\n .context-menu-danger i {\n color: var(--mj-status-error);\n }\n\n .context-menu-danger:hover {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n }\n\n .context-menu-divider {\n height: 1px;\n background: var(--mj-border-default);\n margin: 4px 0;\n }\n "] }]
|
|
3415
|
+
`, styles: ["\n :host {\n display: flex;\n flex-direction: column;\n flex: 1;\n min-height: 0;\n }\n\n /* Main container */\n .collections-view {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: var(--mj-bg-surface-sunken);\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 var(--mj-border-default);\n gap: 16px;\n background: var(--mj-bg-surface);\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: var(--mj-text-muted);\n font-size: 14px;\n }\n\n .breadcrumb-link {\n color: var(--mj-text-primary);\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: var(--mj-brand-primary);\n }\n\n .breadcrumb-link.active {\n color: var(--mj-text-muted);\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: var(--mj-border-strong);\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: var(--mj-brand-primary);\n border: none;\n border-radius: 6px;\n color: var(--mj-text-inverse);\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: background 150ms ease;\n }\n\n .btn-primary:hover {\n background: var(--mj-brand-primary-hover);\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 var(--mj-border-strong);\n border-radius: 6px;\n cursor: pointer;\n color: var(--mj-text-muted);\n transition: all 150ms ease;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .btn-icon:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-primary);\n border-color: var(--mj-text-disabled);\n }\n\n .btn-icon.active {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary);\n }\n\n .btn-icon.active:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\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: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\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: var(--mj-text-primary);\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: var(--mj-bg-surface-sunken);\n }\n\n .dropdown-item:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .dropdown-item.active {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n }\n\n .dropdown-item i {\n font-size: 14px;\n width: 16px;\n text-align: center;\n color: var(--mj-text-muted);\n }\n\n .dropdown-item.active i {\n color: var(--mj-brand-primary);\n }\n\n .dropdown-divider {\n height: 1px;\n background: var(--mj-border-default);\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: var(--mj-text-disabled);\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 var(--mj-border-strong);\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: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n }\n\n .search-clear {\n position: absolute;\n right: 6px;\n padding: 4px;\n background: transparent;\n border: none;\n color: var(--mj-text-disabled);\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: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\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: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-bottom: 1px solid color-mix(in srgb, var(--mj-brand-primary) 30%, var(--mj-bg-surface));\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: var(--mj-brand-primary);\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: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-strong);\n border-radius: 6px;\n color: var(--mj-text-secondary);\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: all 150ms ease;\n }\n\n .btn-toolbar:hover {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-text-disabled);\n }\n\n .btn-toolbar.btn-danger {\n color: var(--mj-status-error);\n border-color: color-mix(in srgb, var(--mj-status-error) 30%, var(--mj-bg-surface));\n }\n\n .btn-toolbar.btn-danger:hover {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n border-color: var(--mj-status-error);\n }\n\n /* Content area */\n .collections-content {\n display: flex;\n flex-direction: column;\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 flex: 1;\n min-height: 0;\n color: var(--mj-text-disabled);\n text-align: center;\n padding: 24px;\n }\n\n .empty-state > i {\n font-size: 64px;\n margin-bottom: 24px;\n opacity: 0.3;\n color: var(--mj-border-strong);\n }\n\n .empty-state h3 {\n margin: 0 0 8px 0;\n color: var(--mj-text-secondary);\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: var(--mj-text-muted);\n }\n\n .empty-state .empty-state-cta {\n padding: 10px 20px;\n font-size: 14px;\n border-radius: 8px;\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 flex-shrink: 0;\n }\n\n .grid-item {\n display: flex;\n flex-direction: column;\n padding: 12px;\n background: var(--mj-bg-surface);\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: var(--mj-bg-surface-sunken);\n border-color: var(--mj-border-strong);\n }\n\n .grid-item.selected {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-color: var(--mj-brand-primary);\n }\n\n .grid-item.active {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n border-color: var(--mj-status-warning);\n box-shadow: 0 0 0 1px var(--mj-status-warning);\n }\n\n .grid-item.active:hover {\n background: color-mix(in srgb, var(--mj-status-warning) 25%, var(--mj-bg-surface));\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: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-brand-primary) 30%, var(--mj-bg-surface));\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: var(--mj-text-disabled);\n transition: color 150ms ease;\n }\n\n .grid-item.selected .item-checkbox i,\n .item-checkbox:hover i {\n color: var(--mj-brand-primary);\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: var(--mj-brand-primary);\n }\n\n .grid-icon.folder-icon i {\n font-size: 36px;\n color: var(--mj-text-inverse);\n }\n\n .grid-icon.artifact-icon {\n background: var(--mj-bg-surface-sunken);\n }\n\n .grid-icon.artifact-icon i {\n font-size: 32px;\n color: var(--mj-text-muted);\n }\n\n .shared-badge {\n position: absolute;\n top: -4px;\n right: -4px;\n width: 20px;\n height: 20px;\n background: var(--mj-status-success);\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n border: 2px solid var(--mj-bg-surface);\n }\n\n .shared-badge i {\n font-size: 10px;\n color: var(--mj-text-inverse);\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: var(--mj-text-primary);\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: var(--mj-text-muted);\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: var(--mj-text-muted);\n margin-top: 4px;\n }\n\n .grid-owner {\n font-size: 11px;\n color: var(--mj-text-muted);\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: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\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: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\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: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n overflow: hidden;\n flex-shrink: 0;\n }\n\n .list-table {\n width: 100%;\n border-collapse: collapse;\n }\n\n .list-table thead {\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n }\n\n .list-table th {\n padding: 10px 16px;\n text-align: left;\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-muted);\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: var(--mj-brand-primary);\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 var(--mj-bg-surface-sunken);\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: var(--mj-bg-surface-sunken);\n }\n\n .list-table tbody tr.selected {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n }\n\n .list-table tbody tr.active {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n border-left: 3px solid var(--mj-status-warning);\n }\n\n .list-table tbody tr.active:hover {\n background: color-mix(in srgb, var(--mj-status-warning) 25%, var(--mj-bg-surface));\n }\n\n .list-table td {\n padding: 12px 16px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n }\n\n .col-checkbox {\n width: 40px;\n text-align: center;\n }\n\n .col-checkbox i {\n font-size: 16px;\n color: var(--mj-text-disabled);\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: var(--mj-brand-primary);\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: var(--mj-text-muted);\n width: 20px;\n text-align: center;\n }\n\n .list-name-cell .fa-folder {\n color: var(--mj-brand-primary);\n }\n\n .shared-indicator {\n font-size: 12px;\n color: var(--mj-status-success);\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\n /* Pagination */\n .pagination-bar {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 10px 16px;\n margin-top: 8px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n flex-shrink: 0;\n }\n\n .pagination-info {\n white-space: nowrap;\n }\n\n .pagination-controls {\n display: flex;\n align-items: center;\n gap: 4px;\n }\n\n .pagination-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 150ms ease;\n font-size: 12px;\n }\n\n .pagination-btn:hover:not(:disabled) {\n background: var(--mj-bg-surface-hover);\n border-color: var(--mj-border-strong);\n color: var(--mj-text-primary);\n }\n\n .pagination-btn:disabled {\n opacity: 0.35;\n cursor: default;\n }\n\n .pagination-page-info {\n padding: 0 8px;\n white-space: nowrap;\n font-weight: 500;\n }\n\n /* Toolbar separator and action group */\n .toolbar-separator {\n width: 1px;\n height: 24px;\n background: var(--mj-border-strong);\n margin: 0 4px;\n }\n\n .toolbar-actions-group {\n display: flex;\n align-items: center;\n gap: 4px;\n }\n\n .btn-icon-danger {\n color: var(--mj-status-error);\n border-color: color-mix(in srgb, var(--mj-status-error) 30%, var(--mj-bg-surface));\n }\n\n .btn-icon-danger:hover {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n border-color: var(--mj-status-error);\n }\n\n /* Context menu */\n .context-menu-backdrop {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 1999;\n }\n\n .context-menu {\n position: fixed;\n min-width: 180px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.18);\n padding: 4px;\n z-index: 2000;\n }\n\n .context-menu-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: var(--mj-text-primary);\n font-size: 13px;\n cursor: pointer;\n text-align: left;\n transition: background 100ms ease;\n }\n\n .context-menu-item:hover {\n background: var(--mj-bg-surface-sunken);\n }\n\n .context-menu-item i {\n font-size: 14px;\n width: 16px;\n text-align: center;\n color: var(--mj-text-muted);\n }\n\n .context-menu-danger {\n color: var(--mj-status-error);\n }\n\n .context-menu-danger i {\n color: var(--mj-status-error);\n }\n\n .context-menu-danger:hover {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n }\n\n .context-menu-divider {\n height: 1px;\n background: var(--mj-border-default);\n margin: 4px 0;\n }\n .submenu-arrow {\n margin-left: auto;\n font-size: 10px;\n opacity: 0.6;\n }\n .move-target-list {\n max-height: 240px;\n overflow-y: auto;\n }\n .context-menu-note {\n padding: 8px 14px;\n font-size: 12px;\n color: var(--mj-text-muted);\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n /* ===== Body: navigator pane + content (#6) ===== */\n .collections-body {\n flex: 1;\n display: flex;\n flex-direction: row;\n min-height: 0;\n overflow: hidden;\n }\n .collections-navigator {\n width: 240px;\n flex-shrink: 0;\n border-right: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n }\n .nav-header {\n padding: 12px 14px 8px;\n font-size: 11px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.06em;\n color: var(--mj-text-muted);\n }\n .nav-list { display: flex; flex-direction: column; padding: 0 6px 12px; gap: 1px; }\n .nav-row {\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n padding: 7px 10px;\n border: 1px solid transparent;\n border-radius: 6px;\n background: transparent;\n color: var(--mj-text-secondary);\n font-size: 13px;\n text-align: left;\n cursor: pointer;\n transition: background 0.12s ease;\n }\n .nav-row:hover { background: var(--mj-bg-surface-hover); color: var(--mj-text-primary); }\n .nav-row.active {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n font-weight: 600;\n }\n .nav-row.drag-over {\n background: color-mix(in srgb, var(--mj-brand-primary) 22%, transparent);\n border-color: var(--mj-brand-primary);\n }\n .nav-row i { font-size: 13px; width: 16px; flex-shrink: 0; }\n .nav-row-name { flex: 1; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n .nav-toggle.active { color: var(--mj-brand-primary); }\n\n /* ===== Drag-and-drop visuals (#1/#2) ===== */\n .grid-item.dragging, .list-item.dragging { opacity: 0.4; }\n .grid-item.drag-over {\n border-color: var(--mj-brand-primary) !important;\n background: color-mix(in srgb, var(--mj-brand-primary) 18%, var(--mj-bg-surface)) !important;\n }\n .list-item.drag-over td {\n background: color-mix(in srgb, var(--mj-brand-primary) 14%, var(--mj-bg-surface));\n box-shadow: inset 0 0 0 1px var(--mj-brand-primary);\n }\n .breadcrumb-item.drag-over, .breadcrumb-link.drag-over {\n background: color-mix(in srgb, var(--mj-brand-primary) 20%, transparent);\n border-radius: 6px;\n outline: 1px solid var(--mj-brand-primary);\n }\n\n /* Hover-reveal checkboxes (frictionless selection #4) */\n .item-checkbox { opacity: 0; transition: opacity 150ms ease; }\n .grid-item:hover .item-checkbox,\n .grid-item.selected .item-checkbox,\n .unified-grid.select-mode .item-checkbox { opacity: 1; }\n .list-item .col-checkbox i { opacity: 0; transition: opacity 150ms ease; }\n .list-item:hover .col-checkbox i,\n .list-item.selected .col-checkbox i,\n .unified-list.select-mode .col-checkbox i { opacity: 1; }\n .list-item.selected .col-checkbox i { color: var(--mj-brand-primary); }\n\n /* ===== Bulk \"Move to\u2026\" popover (#3) ===== */\n .bulk-move-backdrop {\n position: fixed; inset: 0; z-index: 1000;\n }\n .bulk-move-menu {\n max-height: 320px;\n overflow-y: auto;\n z-index: 1001;\n }\n .dropdown-note { padding: 10px 14px; font-size: 12px; color: var(--mj-text-muted); }\n\n /* ===== Staging shelf (#5) ===== */\n .staging-shelf {\n flex-shrink: 0;\n display: flex;\n align-items: center;\n gap: 14px;\n padding: 10px 16px;\n background: var(--mj-bg-surface);\n border-top: 1px solid var(--mj-border-default);\n box-shadow: 0 -2px 8px color-mix(in srgb, var(--mj-text-primary) 6%, transparent);\n }\n .shelf-info {\n display: flex; align-items: center; gap: 8px;\n font-weight: 600; font-size: 13px; color: var(--mj-text-primary);\n flex-shrink: 0;\n }\n .shelf-info i { color: var(--mj-brand-primary); }\n .shelf-chips {\n flex: 1; min-width: 0;\n display: flex; gap: 6px; overflow-x: auto; padding: 2px 0;\n }\n .shelf-chip {\n display: inline-flex; align-items: center; gap: 6px;\n padding: 4px 6px 4px 10px;\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-default);\n border-radius: 999px;\n font-size: 12px; color: var(--mj-text-secondary);\n flex-shrink: 0;\n }\n .shelf-chip-name { max-width: 120px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n .shelf-chip-x {\n width: 18px; height: 18px; border: 0; background: transparent;\n color: var(--mj-text-muted); cursor: pointer; border-radius: 50%;\n display: flex; align-items: center; justify-content: center; font-size: 10px;\n }\n .shelf-chip-x:hover { background: var(--mj-bg-surface-hover); color: var(--mj-text-primary); }\n .shelf-actions { display: flex; gap: 8px; flex-shrink: 0; }\n .btn-toolbar.btn-primary-toolbar {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-color: var(--mj-brand-primary);\n }\n .btn-toolbar.btn-primary-toolbar:hover:not(:disabled) { background: var(--mj-brand-primary-hover); }\n .btn-toolbar:disabled { opacity: 0.5; cursor: not-allowed; }\n "] }]
|
|
2529
3416
|
}], () => [{ type: i1.DialogService }, { type: i2.ArtifactStateService }, { type: i3.CollectionStateService }, { type: i4.CollectionPermissionService }, { type: i5.ArtifactIconService }, { type: i0.ChangeDetectorRef }], { environmentId: [{
|
|
2530
3417
|
type: Input
|
|
2531
3418
|
}], currentUser: [{
|
|
2532
3419
|
type: Input
|
|
2533
3420
|
}], collectionNavigated: [{
|
|
2534
3421
|
type: Output
|
|
3422
|
+
}], openConversationRequested: [{
|
|
3423
|
+
type: Output
|
|
2535
3424
|
}], onEscapeKey: [{
|
|
2536
3425
|
type: HostListener,
|
|
2537
3426
|
args: ['document:keydown.escape']
|
|
2538
3427
|
}] }); })();
|
|
2539
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CollectionsFullViewComponent, { className: "CollectionsFullViewComponent", filePath: "src/lib/components/collection/collections-full-view.component.ts", lineNumber:
|
|
3428
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CollectionsFullViewComponent, { className: "CollectionsFullViewComponent", filePath: "src/lib/components/collection/collections-full-view.component.ts", lineNumber: 1746 }); })();
|
|
2540
3429
|
//# sourceMappingURL=collections-full-view.component.js.map
|