@memberjunction/ng-conversations 2.104.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (226) hide show
  1. package/README.md +197 -0
  2. package/dist/lib/components/active-tasks/active-tasks-panel.component.d.ts +20 -0
  3. package/dist/lib/components/active-tasks/active-tasks-panel.component.d.ts.map +1 -0
  4. package/dist/lib/components/active-tasks/active-tasks-panel.component.js +125 -0
  5. package/dist/lib/components/active-tasks/active-tasks-panel.component.js.map +1 -0
  6. package/dist/lib/components/agent/active-agent-indicator.component.d.ts +48 -0
  7. package/dist/lib/components/agent/active-agent-indicator.component.d.ts.map +1 -0
  8. package/dist/lib/components/agent/active-agent-indicator.component.js +199 -0
  9. package/dist/lib/components/agent/active-agent-indicator.component.js.map +1 -0
  10. package/dist/lib/components/agent/agent-process-panel.component.d.ts +30 -0
  11. package/dist/lib/components/agent/agent-process-panel.component.d.ts.map +1 -0
  12. package/dist/lib/components/agent/agent-process-panel.component.js +333 -0
  13. package/dist/lib/components/agent/agent-process-panel.component.js.map +1 -0
  14. package/dist/lib/components/artifact/artifact-panel.component.d.ts +22 -0
  15. package/dist/lib/components/artifact/artifact-panel.component.d.ts.map +1 -0
  16. package/dist/lib/components/artifact/artifact-panel.component.js +237 -0
  17. package/dist/lib/components/artifact/artifact-panel.component.js.map +1 -0
  18. package/dist/lib/components/artifact/artifact-upload-modal.component.d.ts +39 -0
  19. package/dist/lib/components/artifact/artifact-upload-modal.component.d.ts.map +1 -0
  20. package/dist/lib/components/artifact/artifact-upload-modal.component.js +384 -0
  21. package/dist/lib/components/artifact/artifact-upload-modal.component.js.map +1 -0
  22. package/dist/lib/components/artifact/artifact-version-history.component.d.ts +28 -0
  23. package/dist/lib/components/artifact/artifact-version-history.component.d.ts.map +1 -0
  24. package/dist/lib/components/artifact/artifact-version-history.component.js +280 -0
  25. package/dist/lib/components/artifact/artifact-version-history.component.js.map +1 -0
  26. package/dist/lib/components/artifact/artifact-viewer-panel.component.d.ts +22 -0
  27. package/dist/lib/components/artifact/artifact-viewer-panel.component.d.ts.map +1 -0
  28. package/dist/lib/components/artifact/artifact-viewer-panel.component.js +182 -0
  29. package/dist/lib/components/artifact/artifact-viewer-panel.component.js.map +1 -0
  30. package/dist/lib/components/artifact/artifact-viewer.component.d.ts +27 -0
  31. package/dist/lib/components/artifact/artifact-viewer.component.d.ts.map +1 -0
  32. package/dist/lib/components/artifact/artifact-viewer.component.js +266 -0
  33. package/dist/lib/components/artifact/artifact-viewer.component.js.map +1 -0
  34. package/dist/lib/components/artifact/inline-artifact.component.d.ts +46 -0
  35. package/dist/lib/components/artifact/inline-artifact.component.d.ts.map +1 -0
  36. package/dist/lib/components/artifact/inline-artifact.component.js +447 -0
  37. package/dist/lib/components/artifact/inline-artifact.component.js.map +1 -0
  38. package/dist/lib/components/collection/collection-artifact-card.component.d.ts +18 -0
  39. package/dist/lib/components/collection/collection-artifact-card.component.d.ts.map +1 -0
  40. package/dist/lib/components/collection/collection-artifact-card.component.js +147 -0
  41. package/dist/lib/components/collection/collection-artifact-card.component.js.map +1 -0
  42. package/dist/lib/components/collection/collection-form-modal.component.d.ts +33 -0
  43. package/dist/lib/components/collection/collection-form-modal.component.d.ts.map +1 -0
  44. package/dist/lib/components/collection/collection-form-modal.component.js +245 -0
  45. package/dist/lib/components/collection/collection-form-modal.component.js.map +1 -0
  46. package/dist/lib/components/collection/collection-tree.component.d.ts +42 -0
  47. package/dist/lib/components/collection/collection-tree.component.d.ts.map +1 -0
  48. package/dist/lib/components/collection/collection-tree.component.js +482 -0
  49. package/dist/lib/components/collection/collection-tree.component.js.map +1 -0
  50. package/dist/lib/components/collection/collection-view.component.d.ts +31 -0
  51. package/dist/lib/components/collection/collection-view.component.d.ts.map +1 -0
  52. package/dist/lib/components/collection/collection-view.component.js +254 -0
  53. package/dist/lib/components/collection/collection-view.component.js.map +1 -0
  54. package/dist/lib/components/collection/collections-full-view.component.d.ts +55 -0
  55. package/dist/lib/components/collection/collections-full-view.component.d.ts.map +1 -0
  56. package/dist/lib/components/collection/collections-full-view.component.js +578 -0
  57. package/dist/lib/components/collection/collections-full-view.component.js.map +1 -0
  58. package/dist/lib/components/conversation/conversation-chat-area.component.d.ts +160 -0
  59. package/dist/lib/components/conversation/conversation-chat-area.component.d.ts.map +1 -0
  60. package/dist/lib/components/conversation/conversation-chat-area.component.js +891 -0
  61. package/dist/lib/components/conversation/conversation-chat-area.component.js.map +1 -0
  62. package/dist/lib/components/conversation/conversation-list.component.d.ts +29 -0
  63. package/dist/lib/components/conversation/conversation-list.component.d.ts.map +1 -0
  64. package/dist/lib/components/conversation/conversation-list.component.js +255 -0
  65. package/dist/lib/components/conversation/conversation-list.component.js.map +1 -0
  66. package/dist/lib/components/dialogs/input-dialog.component.d.ts +17 -0
  67. package/dist/lib/components/dialogs/input-dialog.component.d.ts.map +1 -0
  68. package/dist/lib/components/dialogs/input-dialog.component.js +122 -0
  69. package/dist/lib/components/dialogs/input-dialog.component.js.map +1 -0
  70. package/dist/lib/components/export/export-modal.component.d.ts +37 -0
  71. package/dist/lib/components/export/export-modal.component.d.ts.map +1 -0
  72. package/dist/lib/components/export/export-modal.component.js +414 -0
  73. package/dist/lib/components/export/export-modal.component.js.map +1 -0
  74. package/dist/lib/components/library/library-full-view.component.d.ts +36 -0
  75. package/dist/lib/components/library/library-full-view.component.d.ts.map +1 -0
  76. package/dist/lib/components/library/library-full-view.component.js +270 -0
  77. package/dist/lib/components/library/library-full-view.component.js.map +1 -0
  78. package/dist/lib/components/members/members-modal.component.d.ts +42 -0
  79. package/dist/lib/components/members/members-modal.component.d.ts.map +1 -0
  80. package/dist/lib/components/members/members-modal.component.js +352 -0
  81. package/dist/lib/components/members/members-modal.component.js.map +1 -0
  82. package/dist/lib/components/mention/mention-dropdown.component.d.ts +44 -0
  83. package/dist/lib/components/mention/mention-dropdown.component.d.ts.map +1 -0
  84. package/dist/lib/components/mention/mention-dropdown.component.js +194 -0
  85. package/dist/lib/components/mention/mention-dropdown.component.js.map +1 -0
  86. package/dist/lib/components/message/message-input.component.d.ts +137 -0
  87. package/dist/lib/components/message/message-input.component.d.ts.map +1 -0
  88. package/dist/lib/components/message/message-input.component.js +1159 -0
  89. package/dist/lib/components/message/message-input.component.js.map +1 -0
  90. package/dist/lib/components/message/message-item.component.d.ts +140 -0
  91. package/dist/lib/components/message/message-item.component.d.ts.map +1 -0
  92. package/dist/lib/components/message/message-item.component.js +817 -0
  93. package/dist/lib/components/message/message-item.component.js.map +1 -0
  94. package/dist/lib/components/message/message-list.component.d.ts +77 -0
  95. package/dist/lib/components/message/message-list.component.d.ts.map +1 -0
  96. package/dist/lib/components/message/message-list.component.js +316 -0
  97. package/dist/lib/components/message/message-list.component.js.map +1 -0
  98. package/dist/lib/components/navigation/conversation-navigation.component.d.ts +13 -0
  99. package/dist/lib/components/navigation/conversation-navigation.component.d.ts.map +1 -0
  100. package/dist/lib/components/navigation/conversation-navigation.component.js +88 -0
  101. package/dist/lib/components/navigation/conversation-navigation.component.js.map +1 -0
  102. package/dist/lib/components/notification/activity-indicator.component.d.ts +11 -0
  103. package/dist/lib/components/notification/activity-indicator.component.d.ts.map +1 -0
  104. package/dist/lib/components/notification/activity-indicator.component.js +56 -0
  105. package/dist/lib/components/notification/activity-indicator.component.js.map +1 -0
  106. package/dist/lib/components/notification/notification-badge.component.d.ts +27 -0
  107. package/dist/lib/components/notification/notification-badge.component.d.ts.map +1 -0
  108. package/dist/lib/components/notification/notification-badge.component.js +160 -0
  109. package/dist/lib/components/notification/notification-badge.component.js.map +1 -0
  110. package/dist/lib/components/project/project-form-modal.component.d.ts +34 -0
  111. package/dist/lib/components/project/project-form-modal.component.d.ts.map +1 -0
  112. package/dist/lib/components/project/project-form-modal.component.js +357 -0
  113. package/dist/lib/components/project/project-form-modal.component.js.map +1 -0
  114. package/dist/lib/components/project/project-selector.component.d.ts +36 -0
  115. package/dist/lib/components/project/project-selector.component.d.ts.map +1 -0
  116. package/dist/lib/components/project/project-selector.component.js +317 -0
  117. package/dist/lib/components/project/project-selector.component.js.map +1 -0
  118. package/dist/lib/components/search/search-panel.component.d.ts +120 -0
  119. package/dist/lib/components/search/search-panel.component.d.ts.map +1 -0
  120. package/dist/lib/components/search/search-panel.component.js +714 -0
  121. package/dist/lib/components/search/search-panel.component.js.map +1 -0
  122. package/dist/lib/components/share/share-modal.component.d.ts +46 -0
  123. package/dist/lib/components/share/share-modal.component.d.ts.map +1 -0
  124. package/dist/lib/components/share/share-modal.component.js +431 -0
  125. package/dist/lib/components/share/share-modal.component.js.map +1 -0
  126. package/dist/lib/components/sidebar/conversation-sidebar.component.d.ts +18 -0
  127. package/dist/lib/components/sidebar/conversation-sidebar.component.d.ts.map +1 -0
  128. package/dist/lib/components/sidebar/conversation-sidebar.component.js +81 -0
  129. package/dist/lib/components/sidebar/conversation-sidebar.component.js.map +1 -0
  130. package/dist/lib/components/task/task-form-modal.component.d.ts +42 -0
  131. package/dist/lib/components/task/task-form-modal.component.d.ts.map +1 -0
  132. package/dist/lib/components/task/task-form-modal.component.js +329 -0
  133. package/dist/lib/components/task/task-form-modal.component.js.map +1 -0
  134. package/dist/lib/components/task/task-item.component.d.ts +22 -0
  135. package/dist/lib/components/task/task-item.component.d.ts.map +1 -0
  136. package/dist/lib/components/task/task-item.component.js +234 -0
  137. package/dist/lib/components/task/task-item.component.js.map +1 -0
  138. package/dist/lib/components/task/task-list.component.d.ts +32 -0
  139. package/dist/lib/components/task/task-list.component.d.ts.map +1 -0
  140. package/dist/lib/components/task/task-list.component.js +290 -0
  141. package/dist/lib/components/task/task-list.component.js.map +1 -0
  142. package/dist/lib/components/tasks/tasks-dropdown.component.d.ts +27 -0
  143. package/dist/lib/components/tasks/tasks-dropdown.component.d.ts.map +1 -0
  144. package/dist/lib/components/tasks/tasks-dropdown.component.js +254 -0
  145. package/dist/lib/components/tasks/tasks-dropdown.component.js.map +1 -0
  146. package/dist/lib/components/thread/thread-panel.component.d.ts +65 -0
  147. package/dist/lib/components/thread/thread-panel.component.d.ts.map +1 -0
  148. package/dist/lib/components/thread/thread-panel.component.js +325 -0
  149. package/dist/lib/components/thread/thread-panel.component.js.map +1 -0
  150. package/dist/lib/components/toast/toast.component.d.ts +26 -0
  151. package/dist/lib/components/toast/toast.component.d.ts.map +1 -0
  152. package/dist/lib/components/toast/toast.component.js +108 -0
  153. package/dist/lib/components/toast/toast.component.js.map +1 -0
  154. package/dist/lib/components/workspace/conversation-workspace.component.d.ts +75 -0
  155. package/dist/lib/components/workspace/conversation-workspace.component.d.ts.map +1 -0
  156. package/dist/lib/components/workspace/conversation-workspace.component.js +299 -0
  157. package/dist/lib/components/workspace/conversation-workspace.component.js.map +1 -0
  158. package/dist/lib/conversations.module.d.ts +62 -0
  159. package/dist/lib/conversations.module.d.ts.map +1 -0
  160. package/dist/lib/conversations.module.js +248 -0
  161. package/dist/lib/conversations.module.js.map +1 -0
  162. package/dist/lib/directives/search-shortcut.directive.d.ts +17 -0
  163. package/dist/lib/directives/search-shortcut.directive.d.ts.map +1 -0
  164. package/dist/lib/directives/search-shortcut.directive.js +39 -0
  165. package/dist/lib/directives/search-shortcut.directive.js.map +1 -0
  166. package/dist/lib/models/conversation-state.model.d.ts +72 -0
  167. package/dist/lib/models/conversation-state.model.d.ts.map +1 -0
  168. package/dist/lib/models/conversation-state.model.js +2 -0
  169. package/dist/lib/models/conversation-state.model.js.map +1 -0
  170. package/dist/lib/models/notification.model.d.ts +89 -0
  171. package/dist/lib/models/notification.model.d.ts.map +1 -0
  172. package/dist/lib/models/notification.model.js +11 -0
  173. package/dist/lib/models/notification.model.js.map +1 -0
  174. package/dist/lib/services/active-tasks.service.d.ts +65 -0
  175. package/dist/lib/services/active-tasks.service.d.ts.map +1 -0
  176. package/dist/lib/services/active-tasks.service.js +95 -0
  177. package/dist/lib/services/active-tasks.service.js.map +1 -0
  178. package/dist/lib/services/agent-state.service.d.ts +78 -0
  179. package/dist/lib/services/agent-state.service.d.ts.map +1 -0
  180. package/dist/lib/services/agent-state.service.js +213 -0
  181. package/dist/lib/services/agent-state.service.js.map +1 -0
  182. package/dist/lib/services/artifact-state.service.d.ts +114 -0
  183. package/dist/lib/services/artifact-state.service.d.ts.map +1 -0
  184. package/dist/lib/services/artifact-state.service.js +288 -0
  185. package/dist/lib/services/artifact-state.service.js.map +1 -0
  186. package/dist/lib/services/conversation-agent.service.d.ts +79 -0
  187. package/dist/lib/services/conversation-agent.service.d.ts.map +1 -0
  188. package/dist/lib/services/conversation-agent.service.js +259 -0
  189. package/dist/lib/services/conversation-agent.service.js.map +1 -0
  190. package/dist/lib/services/conversation-state.service.d.ts +122 -0
  191. package/dist/lib/services/conversation-state.service.d.ts.map +1 -0
  192. package/dist/lib/services/conversation-state.service.js +255 -0
  193. package/dist/lib/services/conversation-state.service.js.map +1 -0
  194. package/dist/lib/services/dialog.service.d.ts +54 -0
  195. package/dist/lib/services/dialog.service.d.ts.map +1 -0
  196. package/dist/lib/services/dialog.service.js +157 -0
  197. package/dist/lib/services/dialog.service.js.map +1 -0
  198. package/dist/lib/services/export.service.d.ts +25 -0
  199. package/dist/lib/services/export.service.d.ts.map +1 -0
  200. package/dist/lib/services/export.service.js +237 -0
  201. package/dist/lib/services/export.service.js.map +1 -0
  202. package/dist/lib/services/mention-autocomplete.service.d.ts +59 -0
  203. package/dist/lib/services/mention-autocomplete.service.d.ts.map +1 -0
  204. package/dist/lib/services/mention-autocomplete.service.js +160 -0
  205. package/dist/lib/services/mention-autocomplete.service.js.map +1 -0
  206. package/dist/lib/services/mention-parser.service.d.ts +46 -0
  207. package/dist/lib/services/mention-parser.service.d.ts.map +1 -0
  208. package/dist/lib/services/mention-parser.service.js +156 -0
  209. package/dist/lib/services/mention-parser.service.js.map +1 -0
  210. package/dist/lib/services/notification.service.d.ts +108 -0
  211. package/dist/lib/services/notification.service.d.ts.map +1 -0
  212. package/dist/lib/services/notification.service.js +431 -0
  213. package/dist/lib/services/notification.service.js.map +1 -0
  214. package/dist/lib/services/search.service.d.ts +144 -0
  215. package/dist/lib/services/search.service.d.ts.map +1 -0
  216. package/dist/lib/services/search.service.js +370 -0
  217. package/dist/lib/services/search.service.js.map +1 -0
  218. package/dist/lib/services/toast.service.d.ts +46 -0
  219. package/dist/lib/services/toast.service.d.ts.map +1 -0
  220. package/dist/lib/services/toast.service.js +76 -0
  221. package/dist/lib/services/toast.service.js.map +1 -0
  222. package/dist/public-api.d.ts +42 -0
  223. package/dist/public-api.d.ts.map +1 -0
  224. package/dist/public-api.js +49 -0
  225. package/dist/public-api.js.map +1 -0
  226. package/package.json +54 -0
@@ -0,0 +1,147 @@
1
+ import { Component, Input, Output, EventEmitter } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common";
4
+ function CollectionArtifactCardComponent_div_9_Template(rf, ctx) { if (rf & 1) {
5
+ i0.ɵɵelementStart(0, "div", 17);
6
+ i0.ɵɵtext(1);
7
+ i0.ɵɵelementEnd();
8
+ } if (rf & 2) {
9
+ const ctx_r0 = i0.ɵɵnextContext();
10
+ i0.ɵɵadvance();
11
+ i0.ɵɵtextInterpolate1(" ", ctx_r0.artifact.Description, " ");
12
+ } }
13
+ function CollectionArtifactCardComponent_span_11_Template(rf, ctx) { if (rf & 1) {
14
+ i0.ɵɵelementStart(0, "span", 18);
15
+ i0.ɵɵelement(1, "i", 19);
16
+ i0.ɵɵtext(2);
17
+ i0.ɵɵpipe(3, "date");
18
+ i0.ɵɵelementEnd();
19
+ } if (rf & 2) {
20
+ const ctx_r0 = i0.ɵɵnextContext();
21
+ i0.ɵɵadvance(2);
22
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(3, 1, ctx_r0.artifact.__mj_UpdatedAt, "short"), " ");
23
+ } }
24
+ export class CollectionArtifactCardComponent {
25
+ artifact;
26
+ selected = new EventEmitter();
27
+ viewed = new EventEmitter();
28
+ edited = new EventEmitter();
29
+ removed = new EventEmitter();
30
+ getIconClass() {
31
+ const type = this.artifact.Type?.toLowerCase() || '';
32
+ if (type.includes('code'))
33
+ return 'fa-code';
34
+ if (type.includes('markdown'))
35
+ return 'fa-file-lines';
36
+ if (type.includes('html'))
37
+ return 'fa-file-code';
38
+ if (type.includes('json'))
39
+ return 'fa-brackets-curly';
40
+ if (type.includes('text'))
41
+ return 'fa-file-alt';
42
+ return 'fa-file';
43
+ }
44
+ onSelect() {
45
+ this.selected.emit(this.artifact);
46
+ }
47
+ onView(event) {
48
+ event.stopPropagation();
49
+ this.viewed.emit(this.artifact);
50
+ }
51
+ onEdit(event) {
52
+ event.stopPropagation();
53
+ this.edited.emit(this.artifact);
54
+ }
55
+ onRemove(event) {
56
+ event.stopPropagation();
57
+ this.removed.emit(this.artifact);
58
+ }
59
+ static ɵfac = function CollectionArtifactCardComponent_Factory(t) { return new (t || CollectionArtifactCardComponent)(); };
60
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CollectionArtifactCardComponent, selectors: [["mj-collection-artifact-card"]], inputs: { artifact: "artifact" }, outputs: { selected: "selected", viewed: "viewed", edited: "edited", removed: "removed" }, decls: 19, vars: 5, consts: [[1, "artifact-card", 3, "click"], [1, "card-icon"], [1, "fas", 3, "ngClass"], [1, "card-content"], [1, "card-header"], [1, "artifact-name"], [1, "artifact-type"], ["class", "artifact-description", 4, "ngIf"], [1, "artifact-meta"], ["class", "meta-item", 4, "ngIf"], [1, "card-actions"], ["title", "View", 1, "action-btn", 3, "click"], [1, "fas", "fa-eye"], ["title", "Edit", 1, "action-btn", 3, "click"], [1, "fas", "fa-edit"], ["title", "Remove from collection", 1, "action-btn", 3, "click"], [1, "fas", "fa-times"], [1, "artifact-description"], [1, "meta-item"], [1, "fas", "fa-clock"]], template: function CollectionArtifactCardComponent_Template(rf, ctx) { if (rf & 1) {
61
+ i0.ɵɵelementStart(0, "div", 0);
62
+ i0.ɵɵlistener("click", function CollectionArtifactCardComponent_Template_div_click_0_listener() { return ctx.onSelect(); });
63
+ i0.ɵɵelementStart(1, "div", 1);
64
+ i0.ɵɵelement(2, "i", 2);
65
+ i0.ɵɵelementEnd();
66
+ i0.ɵɵelementStart(3, "div", 3)(4, "div", 4)(5, "h4", 5);
67
+ i0.ɵɵtext(6);
68
+ i0.ɵɵelementEnd();
69
+ i0.ɵɵelementStart(7, "span", 6);
70
+ i0.ɵɵtext(8);
71
+ i0.ɵɵelementEnd()();
72
+ i0.ɵɵtemplate(9, CollectionArtifactCardComponent_div_9_Template, 2, 1, "div", 7);
73
+ i0.ɵɵelementStart(10, "div", 8);
74
+ i0.ɵɵtemplate(11, CollectionArtifactCardComponent_span_11_Template, 4, 4, "span", 9);
75
+ i0.ɵɵelementEnd()();
76
+ i0.ɵɵelementStart(12, "div", 10)(13, "button", 11);
77
+ i0.ɵɵlistener("click", function CollectionArtifactCardComponent_Template_button_click_13_listener($event) { return ctx.onView($event); });
78
+ i0.ɵɵelement(14, "i", 12);
79
+ i0.ɵɵelementEnd();
80
+ i0.ɵɵelementStart(15, "button", 13);
81
+ i0.ɵɵlistener("click", function CollectionArtifactCardComponent_Template_button_click_15_listener($event) { return ctx.onEdit($event); });
82
+ i0.ɵɵelement(16, "i", 14);
83
+ i0.ɵɵelementEnd();
84
+ i0.ɵɵelementStart(17, "button", 15);
85
+ i0.ɵɵlistener("click", function CollectionArtifactCardComponent_Template_button_click_17_listener($event) { return ctx.onRemove($event); });
86
+ i0.ɵɵelement(18, "i", 16);
87
+ i0.ɵɵelementEnd()()();
88
+ } if (rf & 2) {
89
+ i0.ɵɵadvance(2);
90
+ i0.ɵɵproperty("ngClass", ctx.getIconClass());
91
+ i0.ɵɵadvance(4);
92
+ i0.ɵɵtextInterpolate(ctx.artifact.Name);
93
+ i0.ɵɵadvance(2);
94
+ i0.ɵɵtextInterpolate(ctx.artifact.Type);
95
+ i0.ɵɵadvance();
96
+ i0.ɵɵproperty("ngIf", ctx.artifact.Description);
97
+ i0.ɵɵadvance(2);
98
+ i0.ɵɵproperty("ngIf", ctx.artifact.__mj_UpdatedAt);
99
+ } }, dependencies: [i1.NgClass, i1.NgIf, i1.DatePipe], styles: [".artifact-card[_ngcontent-%COMP%] { display: flex; gap: 16px; padding: 16px; border: 1px solid #E8E8E8; border-radius: 8px; cursor: pointer; transition: all 150ms ease; background: white; }\n .artifact-card[_ngcontent-%COMP%]:hover { border-color: #0076B6; box-shadow: 0 2px 8px rgba(0,118,182,0.1); }\n\n .card-icon[_ngcontent-%COMP%] { display: flex; align-items: center; justify-content: center; width: 48px; height: 48px; border-radius: 8px; background: #F0F8FF; color: #0076B6; font-size: 20px; }\n\n .card-content[_ngcontent-%COMP%] { flex: 1; min-width: 0; }\n .card-header[_ngcontent-%COMP%] { display: flex; align-items: center; gap: 12px; margin-bottom: 6px; }\n .artifact-name[_ngcontent-%COMP%] { margin: 0; font-size: 15px; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n .artifact-type[_ngcontent-%COMP%] { padding: 2px 8px; background: #E3F2FD; color: #1976D2; border-radius: 3px; font-size: 11px; font-weight: 500; text-transform: uppercase; }\n\n .artifact-description[_ngcontent-%COMP%] { font-size: 13px; color: #666; margin-bottom: 8px; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }\n\n .artifact-meta[_ngcontent-%COMP%] { display: flex; gap: 16px; font-size: 12px; color: #999; }\n .meta-item[_ngcontent-%COMP%] { display: flex; align-items: center; gap: 4px; }\n\n .card-actions[_ngcontent-%COMP%] { display: none; align-items: center; gap: 4px; }\n .artifact-card[_ngcontent-%COMP%]:hover .card-actions[_ngcontent-%COMP%] { display: flex; }\n .action-btn[_ngcontent-%COMP%] { padding: 8px; background: transparent; border: none; cursor: pointer; border-radius: 4px; color: #666; transition: all 150ms ease; }\n .action-btn[_ngcontent-%COMP%]:hover { background: #F4F4F4; color: #0076B6; }"] });
100
+ }
101
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CollectionArtifactCardComponent, [{
102
+ type: Component,
103
+ args: [{ selector: 'mj-collection-artifact-card', template: `
104
+ <div class="artifact-card" (click)="onSelect()">
105
+ <div class="card-icon">
106
+ <i class="fas" [ngClass]="getIconClass()"></i>
107
+ </div>
108
+ <div class="card-content">
109
+ <div class="card-header">
110
+ <h4 class="artifact-name">{{ artifact.Name }}</h4>
111
+ <span class="artifact-type">{{ artifact.Type }}</span>
112
+ </div>
113
+ <div class="artifact-description" *ngIf="artifact.Description">
114
+ {{ artifact.Description }}
115
+ </div>
116
+ <div class="artifact-meta">
117
+ <span class="meta-item" *ngIf="artifact.__mj_UpdatedAt">
118
+ <i class="fas fa-clock"></i> {{ artifact.__mj_UpdatedAt | date:'short' }}
119
+ </span>
120
+ </div>
121
+ </div>
122
+ <div class="card-actions">
123
+ <button class="action-btn" (click)="onView($event)" title="View">
124
+ <i class="fas fa-eye"></i>
125
+ </button>
126
+ <button class="action-btn" (click)="onEdit($event)" title="Edit">
127
+ <i class="fas fa-edit"></i>
128
+ </button>
129
+ <button class="action-btn" (click)="onRemove($event)" title="Remove from collection">
130
+ <i class="fas fa-times"></i>
131
+ </button>
132
+ </div>
133
+ </div>
134
+ `, styles: ["\n .artifact-card { display: flex; gap: 16px; padding: 16px; border: 1px solid #E8E8E8; border-radius: 8px; cursor: pointer; transition: all 150ms ease; background: white; }\n .artifact-card:hover { border-color: #0076B6; box-shadow: 0 2px 8px rgba(0,118,182,0.1); }\n\n .card-icon { display: flex; align-items: center; justify-content: center; width: 48px; height: 48px; border-radius: 8px; background: #F0F8FF; color: #0076B6; font-size: 20px; }\n\n .card-content { flex: 1; min-width: 0; }\n .card-header { display: flex; align-items: center; gap: 12px; margin-bottom: 6px; }\n .artifact-name { margin: 0; font-size: 15px; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n .artifact-type { padding: 2px 8px; background: #E3F2FD; color: #1976D2; border-radius: 3px; font-size: 11px; font-weight: 500; text-transform: uppercase; }\n\n .artifact-description { font-size: 13px; color: #666; margin-bottom: 8px; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }\n\n .artifact-meta { display: flex; gap: 16px; font-size: 12px; color: #999; }\n .meta-item { display: flex; align-items: center; gap: 4px; }\n\n .card-actions { display: none; align-items: center; gap: 4px; }\n .artifact-card:hover .card-actions { display: flex; }\n .action-btn { padding: 8px; background: transparent; border: none; cursor: pointer; border-radius: 4px; color: #666; transition: all 150ms ease; }\n .action-btn:hover { background: #F4F4F4; color: #0076B6; }\n "] }]
135
+ }], null, { artifact: [{
136
+ type: Input
137
+ }], selected: [{
138
+ type: Output
139
+ }], viewed: [{
140
+ type: Output
141
+ }], edited: [{
142
+ type: Output
143
+ }], removed: [{
144
+ type: Output
145
+ }] }); })();
146
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CollectionArtifactCardComponent, { className: "CollectionArtifactCardComponent", filePath: "src/lib/components/collection/collection-artifact-card.component.ts", lineNumber: 60 }); })();
147
+ //# sourceMappingURL=collection-artifact-card.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collection-artifact-card.component.js","sourceRoot":"","sources":["../../../../src/lib/components/collection/collection-artifact-card.component.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import { EventEmitter, OnChanges, SimpleChanges } from '@angular/core';
2
+ import { UserInfo } from '@memberjunction/core';
3
+ import { CollectionEntity } from '@memberjunction/core-entities';
4
+ import { ToastService } from '../../services/toast.service';
5
+ import * as i0 from "@angular/core";
6
+ /**
7
+ * Modal for creating and editing collections
8
+ */
9
+ export declare class CollectionFormModalComponent implements OnChanges {
10
+ private toastService;
11
+ isOpen: boolean;
12
+ collection?: CollectionEntity;
13
+ parentCollection?: CollectionEntity;
14
+ environmentId: string;
15
+ currentUser: UserInfo;
16
+ saved: EventEmitter<CollectionEntity>;
17
+ cancelled: EventEmitter<void>;
18
+ formData: {
19
+ name: string;
20
+ description: string;
21
+ };
22
+ isSaving: boolean;
23
+ errorMessage: string;
24
+ constructor(toastService: ToastService);
25
+ ngOnChanges(changes: SimpleChanges): void;
26
+ get canSave(): boolean;
27
+ onSave(): Promise<void>;
28
+ onCancel(): void;
29
+ private resetForm;
30
+ static ɵfac: i0.ɵɵFactoryDeclaration<CollectionFormModalComponent, never>;
31
+ static ɵcmp: i0.ɵɵComponentDeclaration<CollectionFormModalComponent, "mj-collection-form-modal", never, { "isOpen": { "alias": "isOpen"; "required": false; }; "collection": { "alias": "collection"; "required": false; }; "parentCollection": { "alias": "parentCollection"; "required": false; }; "environmentId": { "alias": "environmentId"; "required": false; }; "currentUser": { "alias": "currentUser"; "required": false; }; }, { "saved": "saved"; "cancelled": "cancelled"; }, never, never, false, never>;
32
+ }
33
+ //# sourceMappingURL=collection-form-modal.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collection-form-modal.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/collection/collection-form-modal.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACjG,OAAO,EAAE,QAAQ,EAAY,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEjE,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;;AAE5D;;GAEG;AACH,qBAoHa,4BAA6B,YAAW,SAAS;IAkBhD,OAAO,CAAC,YAAY;IAjBvB,MAAM,EAAE,OAAO,CAAS;IACxB,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,aAAa,EAAG,MAAM,CAAC;IACvB,WAAW,EAAG,QAAQ,CAAC;IAEtB,KAAK,iCAAwC;IAC7C,SAAS,qBAA4B;IAExC,QAAQ;;;MAGb;IAEK,QAAQ,EAAE,OAAO,CAAS;IAC1B,YAAY,EAAE,MAAM,CAAM;gBAEb,YAAY,EAAE,YAAY;IAE9C,WAAW,CAAC,OAAO,EAAE,aAAa;IAWlC,IAAI,OAAO,IAAI,OAAO,CAErB;IAEK,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAuC7B,QAAQ,IAAI,IAAI;IAKhB,OAAO,CAAC,SAAS;yCA/EN,4BAA4B;2CAA5B,4BAA4B;CAsFxC"}
@@ -0,0 +1,245 @@
1
+ import { Component, Input, Output, EventEmitter } from '@angular/core';
2
+ import { Metadata } from '@memberjunction/core';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "../../services/toast.service";
5
+ import * as i2 from "@angular/common";
6
+ import * as i3 from "@angular/forms";
7
+ import * as i4 from "@progress/kendo-angular-dialog";
8
+ import * as i5 from "@progress/kendo-angular-buttons";
9
+ function CollectionFormModalComponent_kendo_dialog_0_div_14_Template(rf, ctx) { if (rf & 1) {
10
+ i0.ɵɵelementStart(0, "div", 4)(1, "label", 5);
11
+ i0.ɵɵtext(2, "Parent Collection");
12
+ i0.ɵɵelementEnd();
13
+ i0.ɵɵelementStart(3, "div", 13);
14
+ i0.ɵɵelement(4, "i", 14);
15
+ i0.ɵɵelementStart(5, "span");
16
+ i0.ɵɵtext(6);
17
+ i0.ɵɵelementEnd()()();
18
+ } if (rf & 2) {
19
+ const ctx_r1 = i0.ɵɵnextContext(2);
20
+ i0.ɵɵadvance(6);
21
+ i0.ɵɵtextInterpolate(ctx_r1.parentCollection.Name);
22
+ } }
23
+ function CollectionFormModalComponent_kendo_dialog_0_div_15_Template(rf, ctx) { if (rf & 1) {
24
+ i0.ɵɵelementStart(0, "div", 15);
25
+ i0.ɵɵelement(1, "i", 16);
26
+ i0.ɵɵtext(2);
27
+ i0.ɵɵelementEnd();
28
+ } if (rf & 2) {
29
+ const ctx_r1 = i0.ɵɵnextContext(2);
30
+ i0.ɵɵadvance(2);
31
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.errorMessage, " ");
32
+ } }
33
+ function CollectionFormModalComponent_kendo_dialog_0_Template(rf, ctx) { if (rf & 1) {
34
+ const _r1 = i0.ɵɵgetCurrentView();
35
+ i0.ɵɵelementStart(0, "kendo-dialog", 2);
36
+ i0.ɵɵlistener("close", function CollectionFormModalComponent_kendo_dialog_0_Template_kendo_dialog_close_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onCancel()); });
37
+ i0.ɵɵelementStart(1, "div", 3)(2, "div", 4)(3, "label", 5);
38
+ i0.ɵɵtext(4, " Name ");
39
+ i0.ɵɵelementStart(5, "span", 6);
40
+ i0.ɵɵtext(6, "*");
41
+ i0.ɵɵelementEnd()();
42
+ i0.ɵɵelementStart(7, "input", 7, 0);
43
+ i0.ɵɵtwoWayListener("ngModelChange", function CollectionFormModalComponent_kendo_dialog_0_Template_input_ngModelChange_7_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.formData.name, $event) || (ctx_r1.formData.name = $event); return i0.ɵɵresetView($event); });
44
+ i0.ɵɵlistener("keydown.enter", function CollectionFormModalComponent_kendo_dialog_0_Template_input_keydown_enter_7_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onSave()); });
45
+ i0.ɵɵelementEnd()();
46
+ i0.ɵɵelementStart(9, "div", 4)(10, "label", 5);
47
+ i0.ɵɵtext(11, "Description");
48
+ i0.ɵɵelementEnd();
49
+ i0.ɵɵelementStart(12, "textarea", 8);
50
+ i0.ɵɵtwoWayListener("ngModelChange", function CollectionFormModalComponent_kendo_dialog_0_Template_textarea_ngModelChange_12_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.formData.description, $event) || (ctx_r1.formData.description = $event); return i0.ɵɵresetView($event); });
51
+ i0.ɵɵtext(13, " ");
52
+ i0.ɵɵelementEnd()();
53
+ i0.ɵɵtemplate(14, CollectionFormModalComponent_kendo_dialog_0_div_14_Template, 7, 1, "div", 9)(15, CollectionFormModalComponent_kendo_dialog_0_div_15_Template, 3, 1, "div", 10);
54
+ i0.ɵɵelementEnd();
55
+ i0.ɵɵelementStart(16, "kendo-dialog-actions")(17, "button", 11);
56
+ i0.ɵɵlistener("click", function CollectionFormModalComponent_kendo_dialog_0_Template_button_click_17_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onCancel()); });
57
+ i0.ɵɵtext(18, " Cancel ");
58
+ i0.ɵɵelementEnd();
59
+ i0.ɵɵelementStart(19, "button", 12);
60
+ i0.ɵɵlistener("click", function CollectionFormModalComponent_kendo_dialog_0_Template_button_click_19_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onSave()); });
61
+ i0.ɵɵtext(20);
62
+ i0.ɵɵelementEnd()()();
63
+ } if (rf & 2) {
64
+ const ctx_r1 = i0.ɵɵnextContext();
65
+ i0.ɵɵproperty("title", (ctx_r1.collection == null ? null : ctx_r1.collection.ID) ? "Edit Collection" : "New Collection")("width", 500)("minWidth", 300);
66
+ i0.ɵɵadvance(7);
67
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r1.formData.name);
68
+ i0.ɵɵadvance(5);
69
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r1.formData.description);
70
+ i0.ɵɵadvance(2);
71
+ i0.ɵɵproperty("ngIf", ctx_r1.parentCollection);
72
+ i0.ɵɵadvance();
73
+ i0.ɵɵproperty("ngIf", ctx_r1.errorMessage);
74
+ i0.ɵɵadvance(2);
75
+ i0.ɵɵproperty("disabled", ctx_r1.isSaving);
76
+ i0.ɵɵadvance(2);
77
+ i0.ɵɵproperty("primary", true)("disabled", !ctx_r1.canSave || ctx_r1.isSaving);
78
+ i0.ɵɵadvance();
79
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.isSaving ? "Saving..." : "Save", " ");
80
+ } }
81
+ /**
82
+ * Modal for creating and editing collections
83
+ */
84
+ export class CollectionFormModalComponent {
85
+ toastService;
86
+ isOpen = false;
87
+ collection;
88
+ parentCollection;
89
+ environmentId;
90
+ currentUser;
91
+ saved = new EventEmitter();
92
+ cancelled = new EventEmitter();
93
+ formData = {
94
+ name: '',
95
+ description: ''
96
+ };
97
+ isSaving = false;
98
+ errorMessage = '';
99
+ constructor(toastService) {
100
+ this.toastService = toastService;
101
+ }
102
+ ngOnChanges(changes) {
103
+ if (changes['collection'] || changes['isOpen']) {
104
+ if (this.isOpen && this.collection) {
105
+ this.formData.name = this.collection.Name || '';
106
+ this.formData.description = this.collection.Description || '';
107
+ }
108
+ else if (this.isOpen && !this.collection) {
109
+ this.formData = { name: '', description: '' };
110
+ }
111
+ }
112
+ }
113
+ get canSave() {
114
+ return this.formData.name.trim().length > 0;
115
+ }
116
+ async onSave() {
117
+ if (!this.canSave)
118
+ return;
119
+ this.isSaving = true;
120
+ this.errorMessage = '';
121
+ try {
122
+ const md = new Metadata();
123
+ const collection = this.collection ||
124
+ await md.GetEntityObject('MJ: Collections', this.currentUser);
125
+ collection.Name = this.formData.name.trim();
126
+ collection.Description = this.formData.description.trim() || null;
127
+ collection.EnvironmentID = this.environmentId;
128
+ if (this.parentCollection) {
129
+ collection.ParentID = this.parentCollection.ID;
130
+ }
131
+ const saved = await collection.Save();
132
+ if (saved) {
133
+ this.toastService.success(this.collection ? 'Collection updated successfully' : 'Collection created successfully');
134
+ this.saved.emit(collection);
135
+ this.resetForm();
136
+ }
137
+ else {
138
+ this.errorMessage = collection.LatestResult?.Message || 'Failed to save collection';
139
+ this.toastService.error(this.errorMessage);
140
+ }
141
+ }
142
+ catch (error) {
143
+ console.error('Error saving collection:', error);
144
+ this.errorMessage = 'An unexpected error occurred';
145
+ this.toastService.error(this.errorMessage);
146
+ }
147
+ finally {
148
+ this.isSaving = false;
149
+ }
150
+ }
151
+ onCancel() {
152
+ this.resetForm();
153
+ this.cancelled.emit();
154
+ }
155
+ resetForm() {
156
+ this.formData = {
157
+ name: '',
158
+ description: ''
159
+ };
160
+ this.errorMessage = '';
161
+ }
162
+ static ɵfac = function CollectionFormModalComponent_Factory(t) { return new (t || CollectionFormModalComponent)(i0.ɵɵdirectiveInject(i1.ToastService)); };
163
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CollectionFormModalComponent, selectors: [["mj-collection-form-modal"]], inputs: { isOpen: "isOpen", collection: "collection", parentCollection: "parentCollection", environmentId: "environmentId", currentUser: "currentUser" }, outputs: { saved: "saved", cancelled: "cancelled" }, features: [i0.ɵɵNgOnChangesFeature], decls: 1, vars: 1, consts: [["nameInput", ""], [3, "title", "width", "minWidth", "close", 4, "ngIf"], [3, "close", "title", "width", "minWidth"], [1, "collection-form"], [1, "form-group"], [1, "form-label"], [1, "required"], ["type", "text", "placeholder", "Collection name", 1, "k-textbox", "form-control", 3, "ngModelChange", "keydown.enter", "ngModel"], ["placeholder", "Optional description", "rows", "3", 1, "k-textarea", "form-control", 3, "ngModelChange", "ngModel"], ["class", "form-group", 4, "ngIf"], ["class", "form-error", 4, "ngIf"], ["kendoButton", "", 3, "click", "disabled"], ["kendoButton", "", 3, "click", "primary", "disabled"], [1, "parent-info"], [1, "fas", "fa-folder"], [1, "form-error"], [1, "fas", "fa-exclamation-circle"]], template: function CollectionFormModalComponent_Template(rf, ctx) { if (rf & 1) {
164
+ i0.ɵɵtemplate(0, CollectionFormModalComponent_kendo_dialog_0_Template, 21, 11, "kendo-dialog", 1);
165
+ } if (rf & 2) {
166
+ i0.ɵɵproperty("ngIf", ctx.isOpen);
167
+ } }, dependencies: [i2.NgIf, i3.DefaultValueAccessor, i3.NgControlStatus, i3.NgModel, i4.DialogComponent, i4.DialogActionsComponent, i5.ButtonComponent], styles: [".collection-form[_ngcontent-%COMP%] {\n padding: 20px 0;\n }\n\n .form-group[_ngcontent-%COMP%] {\n margin-bottom: 20px;\n }\n\n .form-label[_ngcontent-%COMP%] {\n display: block;\n margin-bottom: 8px;\n font-weight: 500;\n color: #333;\n }\n\n .required[_ngcontent-%COMP%] {\n color: #DC2626;\n }\n\n .form-control[_ngcontent-%COMP%] {\n width: 100%;\n }\n\n .parent-info[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n background: #F9FAFB;\n border: 1px solid #E5E7EB;\n border-radius: 6px;\n color: #6B7280;\n }\n\n .parent-info[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #1e40af;\n }\n\n .form-error[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px;\n background: #FEE2E2;\n border: 1px solid #FCA5A5;\n border-radius: 6px;\n color: #DC2626;\n font-size: 14px;\n }\n\n .form-error[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n flex-shrink: 0;\n }"] });
168
+ }
169
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CollectionFormModalComponent, [{
170
+ type: Component,
171
+ args: [{ selector: 'mj-collection-form-modal', template: `
172
+ <kendo-dialog
173
+ *ngIf="isOpen"
174
+ [title]="collection?.ID ? 'Edit Collection' : 'New Collection'"
175
+ (close)="onCancel()"
176
+ [width]="500"
177
+ [minWidth]="300">
178
+ <div class="collection-form">
179
+ <div class="form-group">
180
+ <label class="form-label">
181
+ Name <span class="required">*</span>
182
+ </label>
183
+ <input
184
+ type="text"
185
+ class="k-textbox form-control"
186
+ [(ngModel)]="formData.name"
187
+ placeholder="Collection name"
188
+ #nameInput
189
+ (keydown.enter)="onSave()">
190
+ </div>
191
+
192
+ <div class="form-group">
193
+ <label class="form-label">Description</label>
194
+ <textarea
195
+ class="k-textarea form-control"
196
+ [(ngModel)]="formData.description"
197
+ placeholder="Optional description"
198
+ rows="3">
199
+ </textarea>
200
+ </div>
201
+
202
+ <div class="form-group" *ngIf="parentCollection">
203
+ <label class="form-label">Parent Collection</label>
204
+ <div class="parent-info">
205
+ <i class="fas fa-folder"></i>
206
+ <span>{{ parentCollection.Name }}</span>
207
+ </div>
208
+ </div>
209
+
210
+ <div class="form-error" *ngIf="errorMessage">
211
+ <i class="fas fa-exclamation-circle"></i>
212
+ {{ errorMessage }}
213
+ </div>
214
+ </div>
215
+
216
+ <kendo-dialog-actions>
217
+ <button kendoButton (click)="onCancel()" [disabled]="isSaving">
218
+ Cancel
219
+ </button>
220
+ <button kendoButton
221
+ [primary]="true"
222
+ (click)="onSave()"
223
+ [disabled]="!canSave || isSaving">
224
+ {{ isSaving ? 'Saving...' : 'Save' }}
225
+ </button>
226
+ </kendo-dialog-actions>
227
+ </kendo-dialog>
228
+ `, styles: ["\n .collection-form {\n padding: 20px 0;\n }\n\n .form-group {\n margin-bottom: 20px;\n }\n\n .form-label {\n display: block;\n margin-bottom: 8px;\n font-weight: 500;\n color: #333;\n }\n\n .required {\n color: #DC2626;\n }\n\n .form-control {\n width: 100%;\n }\n\n .parent-info {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n background: #F9FAFB;\n border: 1px solid #E5E7EB;\n border-radius: 6px;\n color: #6B7280;\n }\n\n .parent-info i {\n color: #1e40af;\n }\n\n .form-error {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px;\n background: #FEE2E2;\n border: 1px solid #FCA5A5;\n border-radius: 6px;\n color: #DC2626;\n font-size: 14px;\n }\n\n .form-error i {\n flex-shrink: 0;\n }\n "] }]
229
+ }], () => [{ type: i1.ToastService }], { isOpen: [{
230
+ type: Input
231
+ }], collection: [{
232
+ type: Input
233
+ }], parentCollection: [{
234
+ type: Input
235
+ }], environmentId: [{
236
+ type: Input
237
+ }], currentUser: [{
238
+ type: Input
239
+ }], saved: [{
240
+ type: Output
241
+ }], cancelled: [{
242
+ type: Output
243
+ }] }); })();
244
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CollectionFormModalComponent, { className: "CollectionFormModalComponent", filePath: "src/lib/components/collection/collection-form-modal.component.ts", lineNumber: 126 }); })();
245
+ //# sourceMappingURL=collection-form-modal.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collection-form-modal.component.js","sourceRoot":"","sources":["../../../../src/lib/components/collection/collection-form-modal.component.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ import { EventEmitter, OnInit } from '@angular/core';
2
+ import { CollectionEntity } from '@memberjunction/core-entities';
3
+ import { UserInfo } from '@memberjunction/core';
4
+ import * as i0 from "@angular/core";
5
+ interface TreeNode {
6
+ collection: CollectionEntity;
7
+ children: TreeNode[];
8
+ expanded: boolean;
9
+ level: number;
10
+ }
11
+ export declare class CollectionTreeComponent implements OnInit {
12
+ environmentId: string;
13
+ currentUser: UserInfo;
14
+ selectedCollectionId: string | null;
15
+ collectionSelected: EventEmitter<CollectionEntity>;
16
+ collectionCreated: EventEmitter<CollectionEntity>;
17
+ collectionDeleted: EventEmitter<CollectionEntity>;
18
+ collections: CollectionEntity[];
19
+ treeNodes: TreeNode[];
20
+ draggedNode: TreeNode | null;
21
+ dragOverNodeId: string | null;
22
+ ngOnInit(): void;
23
+ private loadCollections;
24
+ private buildTree;
25
+ private buildNode;
26
+ toggleNode(node: TreeNode, event: Event): void;
27
+ onSelectCollection(collection: CollectionEntity): void;
28
+ onCreateCollection(parentId: string | null): Promise<void>;
29
+ onDeleteCollection(collection: CollectionEntity): Promise<void>;
30
+ onDragStart(event: DragEvent, node: TreeNode): void;
31
+ onDragEnd(event: DragEvent): void;
32
+ onDragOver(event: DragEvent, targetNode: TreeNode): void;
33
+ onDragLeave(event: DragEvent, targetNode: TreeNode): void;
34
+ onDrop(event: DragEvent, targetNode: TreeNode): Promise<void>;
35
+ onDragOverRoot(event: DragEvent): void;
36
+ onDropRoot(event: DragEvent): Promise<void>;
37
+ private isDescendant;
38
+ static ɵfac: i0.ɵɵFactoryDeclaration<CollectionTreeComponent, never>;
39
+ static ɵcmp: i0.ɵɵComponentDeclaration<CollectionTreeComponent, "mj-collection-tree", never, { "environmentId": { "alias": "environmentId"; "required": false; }; "currentUser": { "alias": "currentUser"; "required": false; }; "selectedCollectionId": { "alias": "selectedCollectionId"; "required": false; }; }, { "collectionSelected": "collectionSelected"; "collectionCreated": "collectionCreated"; "collectionDeleted": "collectionDeleted"; }, never, never, false, never>;
40
+ }
41
+ export {};
42
+ //# sourceMappingURL=collection-tree.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collection-tree.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/collection/collection-tree.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,QAAQ,EAA+B,MAAM,sBAAsB,CAAC;;AAE7E,UAAU,QAAQ;IAChB,UAAU,EAAE,gBAAgB,CAAC;IAC7B,QAAQ,EAAE,QAAQ,EAAE,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACf;AAOD,qBA4Ia,uBAAwB,YAAW,MAAM;IAC3C,aAAa,EAAG,MAAM,CAAC;IACvB,WAAW,EAAG,QAAQ,CAAC;IACvB,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAQ;IAE1C,kBAAkB,iCAAwC;IAC1D,iBAAiB,iCAAwC;IACzD,iBAAiB,iCAAwC;IAE5D,WAAW,EAAE,gBAAgB,EAAE,CAAM;IACrC,SAAS,EAAE,QAAQ,EAAE,CAAM;IAC3B,WAAW,EAAE,QAAQ,GAAG,IAAI,CAAQ;IACpC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAQ;IAE5C,QAAQ;YAIM,eAAe;IAmB7B,OAAO,CAAC,SAAS;IAKjB,OAAO,CAAC,SAAS;IAUjB,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;IAK9C,kBAAkB,CAAC,UAAU,EAAE,gBAAgB,GAAG,IAAI;IAKhD,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAuB1D,kBAAkB,CAAC,UAAU,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAerE,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,GAAG,IAAI;IAanD,SAAS,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAOjC,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,GAAG,IAAI;IAkBxD,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,GAAG,IAAI;IAMnD,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IA2CnE,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAYhC,UAAU,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IA4BjD,OAAO,CAAC,YAAY;yCAnOT,uBAAuB;2CAAvB,uBAAuB;CAgPnC"}