@memberjunction/ng-conversations 3.0.0 → 3.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/components/active-tasks/active-tasks-panel.component.js +1 -1
- package/dist/lib/components/agent/active-agent-indicator.component.js +1 -1
- package/dist/lib/components/agent/agent-process-panel.component.js +1 -1
- package/dist/lib/components/artifact/artifact-share-modal.component.js +1 -1
- package/dist/lib/components/attachment/image-viewer.component.js +1 -1
- package/dist/lib/components/collection/artifact-collection-picker-modal.component.js +1 -1
- package/dist/lib/components/collection/artifact-create-modal.component.js +1 -1
- package/dist/lib/components/collection/collection-artifact-card.component.js +1 -1
- package/dist/lib/components/collection/collection-form-modal.component.js +1 -1
- package/dist/lib/components/collection/collection-share-modal.component.js +1 -1
- package/dist/lib/components/collection/collection-tree.component.js +1 -1
- package/dist/lib/components/collection/collection-view.component.js +1 -1
- package/dist/lib/components/collection/collections-full-view.component.js +1 -1
- package/dist/lib/components/conversation/conversation-chat-area.component.d.ts +1 -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 +9 -1
- package/dist/lib/components/conversation/conversation-chat-area.component.js.map +1 -1
- package/dist/lib/components/conversation/conversation-empty-state.component.js +1 -1
- package/dist/lib/components/conversation/conversation-list.component.js +1 -1
- package/dist/lib/components/dialogs/input-dialog.component.js +1 -1
- package/dist/lib/components/export/export-modal.component.js +1 -1
- package/dist/lib/components/global-tasks/global-tasks-panel.component.js +1 -1
- package/dist/lib/components/library/library-full-view.component.js +1 -1
- package/dist/lib/components/members/members-modal.component.js +1 -1
- package/dist/lib/components/mention/mention-dropdown.component.js +1 -1
- package/dist/lib/components/mention/mention-editor.component.js +1 -1
- package/dist/lib/components/message/actionable-commands.component.js +1 -1
- package/dist/lib/components/message/agent-response-form.component.js +1 -1
- package/dist/lib/components/message/conversation-message-rating.component.js +1 -1
- package/dist/lib/components/message/form-question.component.js +1 -1
- package/dist/lib/components/message/message-input-box.component.js +1 -1
- package/dist/lib/components/message/message-input.component.js +1 -1
- package/dist/lib/components/message/message-item.component.js +1 -1
- package/dist/lib/components/message/message-list.component.d.ts.map +1 -1
- package/dist/lib/components/message/message-list.component.js +7 -1
- package/dist/lib/components/message/message-list.component.js.map +1 -1
- package/dist/lib/components/message/suggested-responses.component.js +1 -1
- package/dist/lib/components/navigation/conversation-navigation.component.js +1 -1
- package/dist/lib/components/notification/activity-indicator.component.js +1 -1
- package/dist/lib/components/notification/notification-badge.component.js +1 -1
- package/dist/lib/components/project/project-form-modal.component.js +1 -1
- package/dist/lib/components/project/project-selector.component.js +1 -1
- package/dist/lib/components/search/search-panel.component.js +1 -1
- package/dist/lib/components/share/share-modal.component.js +1 -1
- package/dist/lib/components/shared/user-picker.component.js +1 -1
- package/dist/lib/components/sidebar/conversation-sidebar.component.js +1 -1
- package/dist/lib/components/task/tasks-full-view.component.js +1 -1
- package/dist/lib/components/tasks/task-widget.component.js +1 -1
- package/dist/lib/components/tasks/tasks-dropdown.component.js +1 -1
- package/dist/lib/components/thread/thread-panel.component.js +1 -1
- package/dist/lib/components/toast/toast.component.js +1 -1
- package/dist/lib/components/workspace/conversation-workspace.component.js +1 -1
- package/package.json +17 -17
- package/dist/lib/components/artifact/artifact-viewer-panel.component.d.ts +0 -48
- package/dist/lib/components/artifact/artifact-viewer-panel.component.d.ts.map +0 -1
- package/dist/lib/components/artifact/artifact-viewer-panel.component.js +0 -457
- package/dist/lib/components/artifact/artifact-viewer-panel.component.js.map +0 -1
- package/dist/lib/components/delete-confirm/delete-confirm-modal.component.d.ts +0 -52
- package/dist/lib/components/delete-confirm/delete-confirm-modal.component.d.ts.map +0 -1
- package/dist/lib/components/delete-confirm/delete-confirm-modal.component.js +0 -276
- package/dist/lib/components/delete-confirm/delete-confirm-modal.component.js.map +0 -1
- package/dist/lib/services/conversation-state.service.d.ts +0 -160
- package/dist/lib/services/conversation-state.service.d.ts.map +0 -1
- package/dist/lib/services/conversation-state.service.js +0 -334
- package/dist/lib/services/conversation-state.service.js.map +0 -1
|
@@ -1,276 +0,0 @@
|
|
|
1
|
-
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "@angular/common";
|
|
4
|
-
import * as i2 from "@angular/forms";
|
|
5
|
-
import * as i3 from "@memberjunction/ng-shared-generic";
|
|
6
|
-
const _forTrack0 = ($index, $item) => $item.ID;
|
|
7
|
-
function DeleteConfirmModalComponent_Conditional_0_For_16_Template(rf, ctx) { if (rf & 1) {
|
|
8
|
-
i0.ɵɵelementStart(0, "div", 10);
|
|
9
|
-
i0.ɵɵelement(1, "i", 19);
|
|
10
|
-
i0.ɵɵelementStart(2, "span", 20);
|
|
11
|
-
i0.ɵɵtext(3);
|
|
12
|
-
i0.ɵɵelementEnd()();
|
|
13
|
-
} if (rf & 2) {
|
|
14
|
-
const message_r3 = ctx.$implicit;
|
|
15
|
-
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
16
|
-
i0.ɵɵadvance();
|
|
17
|
-
i0.ɵɵproperty("ngClass", ctx_r1.getMessageIcon(message_r3));
|
|
18
|
-
i0.ɵɵadvance(2);
|
|
19
|
-
i0.ɵɵtextInterpolate(ctx_r1.truncateMessage(message_r3.Message));
|
|
20
|
-
} }
|
|
21
|
-
function DeleteConfirmModalComponent_Conditional_0_Conditional_17_Template(rf, ctx) { if (rf & 1) {
|
|
22
|
-
const _r4 = i0.ɵɵgetCurrentView();
|
|
23
|
-
i0.ɵɵelementStart(0, "div", 11)(1, "div", 21);
|
|
24
|
-
i0.ɵɵelement(2, "i", 22);
|
|
25
|
-
i0.ɵɵelementStart(3, "span");
|
|
26
|
-
i0.ɵɵtext(4);
|
|
27
|
-
i0.ɵɵelementEnd()();
|
|
28
|
-
i0.ɵɵelementStart(5, "label", 23)(6, "input", 24);
|
|
29
|
-
i0.ɵɵtwoWayListener("ngModelChange", function DeleteConfirmModalComponent_Conditional_0_Conditional_17_Template_input_ngModelChange_6_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.keepArtifacts, $event) || (ctx_r1.keepArtifacts = $event); return i0.ɵɵresetView($event); });
|
|
30
|
-
i0.ɵɵelementEnd();
|
|
31
|
-
i0.ɵɵelementStart(7, "span");
|
|
32
|
-
i0.ɵɵtext(8, "Keep artifacts (unlink from conversation)");
|
|
33
|
-
i0.ɵɵelementEnd()()();
|
|
34
|
-
} if (rf & 2) {
|
|
35
|
-
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
36
|
-
i0.ɵɵadvance(4);
|
|
37
|
-
i0.ɵɵtextInterpolate2("This will also delete ", ctx_r1.artifactsAffected.length, " ", ctx_r1.artifactsAffected.length === 1 ? "artifact" : "artifacts", "");
|
|
38
|
-
i0.ɵɵadvance(2);
|
|
39
|
-
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.keepArtifacts);
|
|
40
|
-
i0.ɵɵproperty("disabled", ctx_r1.isDeleting);
|
|
41
|
-
} }
|
|
42
|
-
function DeleteConfirmModalComponent_Conditional_0_Conditional_21_Template(rf, ctx) { if (rf & 1) {
|
|
43
|
-
i0.ɵɵelementStart(0, "div", 14);
|
|
44
|
-
i0.ɵɵelement(1, "mj-loading", 25);
|
|
45
|
-
i0.ɵɵelementEnd();
|
|
46
|
-
} }
|
|
47
|
-
function DeleteConfirmModalComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
48
|
-
const _r1 = i0.ɵɵgetCurrentView();
|
|
49
|
-
i0.ɵɵelementStart(0, "div", 1);
|
|
50
|
-
i0.ɵɵlistener("click", function DeleteConfirmModalComponent_Conditional_0_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onCancel()); });
|
|
51
|
-
i0.ɵɵelementStart(1, "div", 2);
|
|
52
|
-
i0.ɵɵlistener("click", function DeleteConfirmModalComponent_Conditional_0_Template_div_click_1_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView($event.stopPropagation()); });
|
|
53
|
-
i0.ɵɵelementStart(2, "div", 3)(3, "h3");
|
|
54
|
-
i0.ɵɵelement(4, "i", 4);
|
|
55
|
-
i0.ɵɵtext(5);
|
|
56
|
-
i0.ɵɵelementEnd();
|
|
57
|
-
i0.ɵɵelementStart(6, "button", 5);
|
|
58
|
-
i0.ɵɵlistener("click", function DeleteConfirmModalComponent_Conditional_0_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onCancel()); });
|
|
59
|
-
i0.ɵɵelement(7, "i", 6);
|
|
60
|
-
i0.ɵɵelementEnd()();
|
|
61
|
-
i0.ɵɵelementStart(8, "div", 7)(9, "p", 8);
|
|
62
|
-
i0.ɵɵtext(10, " You are about to delete ");
|
|
63
|
-
i0.ɵɵelementStart(11, "strong");
|
|
64
|
-
i0.ɵɵtext(12);
|
|
65
|
-
i0.ɵɵelementEnd();
|
|
66
|
-
i0.ɵɵtext(13);
|
|
67
|
-
i0.ɵɵelementEnd();
|
|
68
|
-
i0.ɵɵelementStart(14, "div", 9);
|
|
69
|
-
i0.ɵɵrepeaterCreate(15, DeleteConfirmModalComponent_Conditional_0_For_16_Template, 4, 2, "div", 10, _forTrack0);
|
|
70
|
-
i0.ɵɵelementEnd();
|
|
71
|
-
i0.ɵɵtemplate(17, DeleteConfirmModalComponent_Conditional_0_Conditional_17_Template, 9, 4, "div", 11);
|
|
72
|
-
i0.ɵɵelementStart(18, "div", 12);
|
|
73
|
-
i0.ɵɵelement(19, "i", 13);
|
|
74
|
-
i0.ɵɵtext(20, " This action cannot be undone. ");
|
|
75
|
-
i0.ɵɵelementEnd();
|
|
76
|
-
i0.ɵɵtemplate(21, DeleteConfirmModalComponent_Conditional_0_Conditional_21_Template, 2, 0, "div", 14);
|
|
77
|
-
i0.ɵɵelementEnd();
|
|
78
|
-
i0.ɵɵelementStart(22, "div", 15)(23, "button", 16);
|
|
79
|
-
i0.ɵɵlistener("click", function DeleteConfirmModalComponent_Conditional_0_Template_button_click_23_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onCancel()); });
|
|
80
|
-
i0.ɵɵtext(24, " Cancel ");
|
|
81
|
-
i0.ɵɵelementEnd();
|
|
82
|
-
i0.ɵɵelementStart(25, "button", 17);
|
|
83
|
-
i0.ɵɵlistener("click", function DeleteConfirmModalComponent_Conditional_0_Template_button_click_25_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onConfirm()); });
|
|
84
|
-
i0.ɵɵelement(26, "i", 18);
|
|
85
|
-
i0.ɵɵtext(27);
|
|
86
|
-
i0.ɵɵelementEnd()()()();
|
|
87
|
-
} if (rf & 2) {
|
|
88
|
-
const ctx_r1 = i0.ɵɵnextContext();
|
|
89
|
-
i0.ɵɵadvance(5);
|
|
90
|
-
i0.ɵɵtextInterpolate1(" ", ctx_r1.dialogTitle, " ");
|
|
91
|
-
i0.ɵɵadvance();
|
|
92
|
-
i0.ɵɵproperty("disabled", ctx_r1.isDeleting);
|
|
93
|
-
i0.ɵɵadvance(6);
|
|
94
|
-
i0.ɵɵtextInterpolate(ctx_r1.messagesToDelete.length);
|
|
95
|
-
i0.ɵɵadvance();
|
|
96
|
-
i0.ɵɵtextInterpolate1(" ", ctx_r1.messagesToDelete.length === 1 ? "message" : "messages", ": ");
|
|
97
|
-
i0.ɵɵadvance(2);
|
|
98
|
-
i0.ɵɵrepeater(ctx_r1.messagesToDelete);
|
|
99
|
-
i0.ɵɵadvance(2);
|
|
100
|
-
i0.ɵɵconditional(ctx_r1.artifactsAffected.length > 0 ? 17 : -1);
|
|
101
|
-
i0.ɵɵadvance(4);
|
|
102
|
-
i0.ɵɵconditional(ctx_r1.isDeleting ? 21 : -1);
|
|
103
|
-
i0.ɵɵadvance(2);
|
|
104
|
-
i0.ɵɵproperty("disabled", ctx_r1.isDeleting);
|
|
105
|
-
i0.ɵɵadvance(2);
|
|
106
|
-
i0.ɵɵproperty("disabled", ctx_r1.isDeleting);
|
|
107
|
-
i0.ɵɵadvance(2);
|
|
108
|
-
i0.ɵɵtextInterpolate1(" Delete ", ctx_r1.messagesToDelete.length === 1 ? "Message" : "Messages", " ");
|
|
109
|
-
} }
|
|
110
|
-
/**
|
|
111
|
-
* Confirmation modal for deleting conversation messages.
|
|
112
|
-
* Shows a preview of messages to be deleted and affected artifacts.
|
|
113
|
-
* Uses custom CSS modal pattern (not Kendo) to match conversation UI.
|
|
114
|
-
*/
|
|
115
|
-
export class DeleteConfirmModalComponent {
|
|
116
|
-
/** Whether the modal is visible */
|
|
117
|
-
isVisible = false;
|
|
118
|
-
/** Custom title for the dialog */
|
|
119
|
-
title = 'Delete Messages';
|
|
120
|
-
/** List of messages that will be deleted */
|
|
121
|
-
messagesToDelete = [];
|
|
122
|
-
/** List of artifacts affected by the deletion */
|
|
123
|
-
artifactsAffected = [];
|
|
124
|
-
/** Whether a delete operation is in progress */
|
|
125
|
-
isDeleting = false;
|
|
126
|
-
/** Emitted when user cancels the delete */
|
|
127
|
-
cancelled = new EventEmitter();
|
|
128
|
-
/** Emitted when user confirms the delete */
|
|
129
|
-
confirmed = new EventEmitter();
|
|
130
|
-
/** Whether to keep artifacts when deleting messages */
|
|
131
|
-
keepArtifacts = false;
|
|
132
|
-
/** Computed dialog title */
|
|
133
|
-
get dialogTitle() {
|
|
134
|
-
return this.title;
|
|
135
|
-
}
|
|
136
|
-
/**
|
|
137
|
-
* Get icon class for a message based on sender type
|
|
138
|
-
*/
|
|
139
|
-
getMessageIcon(message) {
|
|
140
|
-
// Check if message is from user (Role lowercase === 'user')
|
|
141
|
-
const isUser = message.Role?.trim().toLowerCase() === 'user';
|
|
142
|
-
return isUser ? 'fa-user' : 'fa-robot';
|
|
143
|
-
}
|
|
144
|
-
/**
|
|
145
|
-
* Truncate message text for preview
|
|
146
|
-
*/
|
|
147
|
-
truncateMessage(text) {
|
|
148
|
-
if (!text)
|
|
149
|
-
return '(empty message)';
|
|
150
|
-
const maxLength = 60;
|
|
151
|
-
const cleaned = text.replace(/\n/g, ' ').trim();
|
|
152
|
-
if (cleaned.length <= maxLength) {
|
|
153
|
-
return `"${cleaned}"`;
|
|
154
|
-
}
|
|
155
|
-
return `"${cleaned.substring(0, maxLength)}..."`;
|
|
156
|
-
}
|
|
157
|
-
/**
|
|
158
|
-
* Handle cancel button click
|
|
159
|
-
*/
|
|
160
|
-
onCancel() {
|
|
161
|
-
this.keepArtifacts = false;
|
|
162
|
-
this.cancelled.emit();
|
|
163
|
-
}
|
|
164
|
-
/**
|
|
165
|
-
* Handle confirm delete button click
|
|
166
|
-
*/
|
|
167
|
-
onConfirm() {
|
|
168
|
-
this.confirmed.emit({ keepArtifacts: this.keepArtifacts });
|
|
169
|
-
}
|
|
170
|
-
static ɵfac = function DeleteConfirmModalComponent_Factory(t) { return new (t || DeleteConfirmModalComponent)(); };
|
|
171
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DeleteConfirmModalComponent, selectors: [["mj-delete-confirm-modal"]], inputs: { isVisible: "isVisible", title: "title", messagesToDelete: "messagesToDelete", artifactsAffected: "artifactsAffected", isDeleting: "isDeleting" }, outputs: { cancelled: "cancelled", confirmed: "confirmed" }, decls: 1, vars: 1, consts: [[1, "modal-overlay"], [1, "modal-overlay", 3, "click"], [1, "modal-content", "delete-confirm-modal", 3, "click"], [1, "modal-header"], [1, "fas", "fa-exclamation-triangle", "warning-icon"], [1, "modal-close-btn", 3, "click", "disabled"], [1, "fas", "fa-times"], [1, "modal-body"], [1, "delete-summary"], [1, "message-preview-list"], [1, "message-preview-item"], [1, "artifacts-warning"], [1, "warning-message"], [1, "fa-solid", "fa-info-circle"], [1, "loading-indicator"], [1, "modal-footer"], [1, "btn", "btn-secondary", 3, "click", "disabled"], [1, "btn", "btn-danger", 3, "click", "disabled"], [1, "fa-solid", "fa-trash"], [1, "fa-solid", 3, "ngClass"], [1, "message-text"], [1, "warning-header"], [1, "fa-solid", "fa-exclamation-triangle"], [1, "keep-artifacts-checkbox"], ["type", "checkbox", 3, "ngModelChange", "ngModel", "disabled"], ["text", "Deleting messages...", "size", "small"]], template: function DeleteConfirmModalComponent_Template(rf, ctx) { if (rf & 1) {
|
|
172
|
-
i0.ɵɵtemplate(0, DeleteConfirmModalComponent_Conditional_0_Template, 28, 9, "div", 0);
|
|
173
|
-
} if (rf & 2) {
|
|
174
|
-
i0.ɵɵconditional(ctx.isVisible ? 0 : -1);
|
|
175
|
-
} }, dependencies: [i1.NgClass, i2.CheckboxControlValueAccessor, i2.NgControlStatus, i2.NgModel, i3.LoadingComponent], styles: ["\n\n .modal-overlay[_ngcontent-%COMP%] {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.5);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1000;\n animation: _ngcontent-%COMP%_fadeIn 0.15s ease-out;\n }\n\n @keyframes _ngcontent-%COMP%_fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n }\n\n \n\n .modal-content.delete-confirm-modal[_ngcontent-%COMP%] {\n background: white;\n border-radius: 8px;\n box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);\n width: 500px;\n max-width: 90vw;\n max-height: 90vh;\n display: flex;\n flex-direction: column;\n animation: _ngcontent-%COMP%_slideIn 0.2s ease-out;\n }\n\n @keyframes _ngcontent-%COMP%_slideIn {\n from {\n opacity: 0;\n transform: translateY(-10px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n }\n\n \n\n .modal-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n border-bottom: 1px solid #E5E7EB;\n }\n\n .modal-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: #111827;\n display: flex;\n align-items: center;\n gap: 10px;\n }\n\n .modal-header[_ngcontent-%COMP%] .warning-icon[_ngcontent-%COMP%] {\n color: #F59E0B;\n }\n\n .modal-close-btn[_ngcontent-%COMP%] {\n background: none;\n border: none;\n padding: 8px;\n cursor: pointer;\n color: #6B7280;\n border-radius: 4px;\n transition: background 0.15s, color 0.15s;\n }\n\n .modal-close-btn[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: #F3F4F6;\n color: #111827;\n }\n\n .modal-close-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n \n\n .modal-body[_ngcontent-%COMP%] {\n padding: 20px;\n overflow-y: auto;\n }\n\n .delete-summary[_ngcontent-%COMP%] {\n margin: 0 0 16px 0;\n font-size: 14px;\n color: #374151;\n }\n\n .delete-summary[_ngcontent-%COMP%] strong[_ngcontent-%COMP%] {\n color: #DC2626;\n }\n\n \n\n .message-preview-list[_ngcontent-%COMP%] {\n max-height: 200px;\n overflow-y: auto;\n border: 1px solid #E5E7EB;\n border-radius: 6px;\n margin-bottom: 16px;\n }\n\n .message-preview-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 10px;\n padding: 10px 12px;\n border-bottom: 1px solid #F3F4F6;\n font-size: 13px;\n }\n\n .message-preview-item[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n }\n\n .message-preview-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n flex-shrink: 0;\n width: 20px;\n text-align: center;\n margin-top: 2px;\n }\n\n .message-preview-item[_ngcontent-%COMP%] i.fa-user[_ngcontent-%COMP%] {\n color: #6366F1;\n }\n\n .message-preview-item[_ngcontent-%COMP%] i.fa-robot[_ngcontent-%COMP%] {\n color: #10B981;\n }\n\n .message-text[_ngcontent-%COMP%] {\n color: #6B7280;\n line-height: 1.4;\n word-break: break-word;\n }\n\n \n\n .artifacts-warning[_ngcontent-%COMP%] {\n background: #FEF3C7;\n border: 1px solid #F59E0B;\n border-radius: 6px;\n padding: 12px;\n margin-bottom: 16px;\n }\n\n .warning-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n font-weight: 500;\n color: #92400E;\n margin-bottom: 10px;\n }\n\n .warning-header[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #F59E0B;\n }\n\n .keep-artifacts-checkbox[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n color: #78350F;\n cursor: pointer;\n padding: 6px 8px;\n margin: -6px -8px;\n border-radius: 4px;\n transition: background 0.15s;\n }\n\n .keep-artifacts-checkbox[_ngcontent-%COMP%]:hover {\n background: rgba(245, 158, 11, 0.15);\n }\n\n .keep-artifacts-checkbox[_ngcontent-%COMP%] input[type=\"checkbox\"][_ngcontent-%COMP%] {\n cursor: pointer;\n width: 16px;\n height: 16px;\n }\n\n \n\n .warning-message[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 12px;\n color: #6B7280;\n padding: 10px 12px;\n background: #F9FAFB;\n border-radius: 4px;\n }\n\n .warning-message[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #9CA3AF;\n }\n\n \n\n .loading-indicator[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n margin-top: 15px;\n padding: 12px;\n background: #f8f9fa;\n border-radius: 4px;\n color: #666;\n }\n\n \n\n .modal-footer[_ngcontent-%COMP%] {\n display: flex;\n justify-content: flex-end;\n gap: 10px;\n padding: 16px 20px;\n border-top: 1px solid #E5E7EB;\n background: #F9FAFB;\n border-radius: 0 0 8px 8px;\n }\n\n \n\n .btn[_ngcontent-%COMP%] {\n padding: 8px 16px;\n border-radius: 6px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: background 0.15s, border-color 0.15s;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n }\n\n .btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .btn-secondary[_ngcontent-%COMP%] {\n background: white;\n border: 1px solid #D1D5DB;\n color: #374151;\n }\n\n .btn-secondary[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: #F9FAFB;\n border-color: #9CA3AF;\n }\n\n .btn-danger[_ngcontent-%COMP%] {\n background: #DC2626;\n border: 1px solid #DC2626;\n color: white;\n }\n\n .btn-danger[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: #B91C1C;\n border-color: #B91C1C;\n }"] });
|
|
176
|
-
}
|
|
177
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DeleteConfirmModalComponent, [{
|
|
178
|
-
type: Component,
|
|
179
|
-
args: [{ selector: 'mj-delete-confirm-modal', template: `
|
|
180
|
-
@if (isVisible) {
|
|
181
|
-
<div class="modal-overlay" (click)="onCancel()">
|
|
182
|
-
<div class="modal-content delete-confirm-modal" (click)="$event.stopPropagation()">
|
|
183
|
-
<!-- Header -->
|
|
184
|
-
<div class="modal-header">
|
|
185
|
-
<h3>
|
|
186
|
-
<i class="fas fa-exclamation-triangle warning-icon"></i>
|
|
187
|
-
{{ dialogTitle }}
|
|
188
|
-
</h3>
|
|
189
|
-
<button class="modal-close-btn" (click)="onCancel()" [disabled]="isDeleting">
|
|
190
|
-
<i class="fas fa-times"></i>
|
|
191
|
-
</button>
|
|
192
|
-
</div>
|
|
193
|
-
|
|
194
|
-
<!-- Body -->
|
|
195
|
-
<div class="modal-body">
|
|
196
|
-
<!-- Message count -->
|
|
197
|
-
<p class="delete-summary">
|
|
198
|
-
You are about to delete <strong>{{ messagesToDelete.length }}</strong>
|
|
199
|
-
{{ messagesToDelete.length === 1 ? 'message' : 'messages' }}:
|
|
200
|
-
</p>
|
|
201
|
-
|
|
202
|
-
<!-- Message preview list -->
|
|
203
|
-
<div class="message-preview-list">
|
|
204
|
-
@for (message of messagesToDelete; track message.ID) {
|
|
205
|
-
<div class="message-preview-item">
|
|
206
|
-
<i class="fa-solid" [ngClass]="getMessageIcon(message)"></i>
|
|
207
|
-
<span class="message-text">{{ truncateMessage(message.Message) }}</span>
|
|
208
|
-
</div>
|
|
209
|
-
}
|
|
210
|
-
</div>
|
|
211
|
-
|
|
212
|
-
<!-- Artifacts warning -->
|
|
213
|
-
@if (artifactsAffected.length > 0) {
|
|
214
|
-
<div class="artifacts-warning">
|
|
215
|
-
<div class="warning-header">
|
|
216
|
-
<i class="fa-solid fa-exclamation-triangle"></i>
|
|
217
|
-
<span>This will also delete {{ artifactsAffected.length }} {{ artifactsAffected.length === 1 ? 'artifact' : 'artifacts' }}</span>
|
|
218
|
-
</div>
|
|
219
|
-
|
|
220
|
-
<label class="keep-artifacts-checkbox">
|
|
221
|
-
<input
|
|
222
|
-
type="checkbox"
|
|
223
|
-
[(ngModel)]="keepArtifacts"
|
|
224
|
-
[disabled]="isDeleting">
|
|
225
|
-
<span>Keep artifacts (unlink from conversation)</span>
|
|
226
|
-
</label>
|
|
227
|
-
</div>
|
|
228
|
-
}
|
|
229
|
-
|
|
230
|
-
<!-- Warning message -->
|
|
231
|
-
<div class="warning-message">
|
|
232
|
-
<i class="fa-solid fa-info-circle"></i>
|
|
233
|
-
This action cannot be undone.
|
|
234
|
-
</div>
|
|
235
|
-
|
|
236
|
-
<!-- Loading indicator -->
|
|
237
|
-
@if (isDeleting) {
|
|
238
|
-
<div class="loading-indicator">
|
|
239
|
-
<mj-loading text="Deleting messages..." size="small"></mj-loading>
|
|
240
|
-
</div>
|
|
241
|
-
}
|
|
242
|
-
</div>
|
|
243
|
-
|
|
244
|
-
<!-- Footer -->
|
|
245
|
-
<div class="modal-footer">
|
|
246
|
-
<button class="btn btn-secondary" [disabled]="isDeleting" (click)="onCancel()">
|
|
247
|
-
Cancel
|
|
248
|
-
</button>
|
|
249
|
-
<button class="btn btn-danger"
|
|
250
|
-
[disabled]="isDeleting"
|
|
251
|
-
(click)="onConfirm()">
|
|
252
|
-
<i class="fa-solid fa-trash"></i>
|
|
253
|
-
Delete {{ messagesToDelete.length === 1 ? 'Message' : 'Messages' }}
|
|
254
|
-
</button>
|
|
255
|
-
</div>
|
|
256
|
-
</div>
|
|
257
|
-
</div>
|
|
258
|
-
}
|
|
259
|
-
`, styles: ["\n /* Modal overlay - matches conversation-chat-area pattern */\n .modal-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.5);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1000;\n animation: fadeIn 0.15s ease-out;\n }\n\n @keyframes fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n }\n\n /* Modal content container */\n .modal-content.delete-confirm-modal {\n background: white;\n border-radius: 8px;\n box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);\n width: 500px;\n max-width: 90vw;\n max-height: 90vh;\n display: flex;\n flex-direction: column;\n animation: slideIn 0.2s ease-out;\n }\n\n @keyframes slideIn {\n from {\n opacity: 0;\n transform: translateY(-10px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n }\n\n /* Modal header */\n .modal-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n border-bottom: 1px solid #E5E7EB;\n }\n\n .modal-header h3 {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n color: #111827;\n display: flex;\n align-items: center;\n gap: 10px;\n }\n\n .modal-header .warning-icon {\n color: #F59E0B;\n }\n\n .modal-close-btn {\n background: none;\n border: none;\n padding: 8px;\n cursor: pointer;\n color: #6B7280;\n border-radius: 4px;\n transition: background 0.15s, color 0.15s;\n }\n\n .modal-close-btn:hover:not(:disabled) {\n background: #F3F4F6;\n color: #111827;\n }\n\n .modal-close-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n /* Modal body */\n .modal-body {\n padding: 20px;\n overflow-y: auto;\n }\n\n .delete-summary {\n margin: 0 0 16px 0;\n font-size: 14px;\n color: #374151;\n }\n\n .delete-summary strong {\n color: #DC2626;\n }\n\n /* Message preview list */\n .message-preview-list {\n max-height: 200px;\n overflow-y: auto;\n border: 1px solid #E5E7EB;\n border-radius: 6px;\n margin-bottom: 16px;\n }\n\n .message-preview-item {\n display: flex;\n align-items: flex-start;\n gap: 10px;\n padding: 10px 12px;\n border-bottom: 1px solid #F3F4F6;\n font-size: 13px;\n }\n\n .message-preview-item:last-child {\n border-bottom: none;\n }\n\n .message-preview-item i {\n flex-shrink: 0;\n width: 20px;\n text-align: center;\n margin-top: 2px;\n }\n\n .message-preview-item i.fa-user {\n color: #6366F1;\n }\n\n .message-preview-item i.fa-robot {\n color: #10B981;\n }\n\n .message-text {\n color: #6B7280;\n line-height: 1.4;\n word-break: break-word;\n }\n\n /* Artifacts warning section */\n .artifacts-warning {\n background: #FEF3C7;\n border: 1px solid #F59E0B;\n border-radius: 6px;\n padding: 12px;\n margin-bottom: 16px;\n }\n\n .warning-header {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n font-weight: 500;\n color: #92400E;\n margin-bottom: 10px;\n }\n\n .warning-header i {\n color: #F59E0B;\n }\n\n .keep-artifacts-checkbox {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 13px;\n color: #78350F;\n cursor: pointer;\n padding: 6px 8px;\n margin: -6px -8px;\n border-radius: 4px;\n transition: background 0.15s;\n }\n\n .keep-artifacts-checkbox:hover {\n background: rgba(245, 158, 11, 0.15);\n }\n\n .keep-artifacts-checkbox input[type=\"checkbox\"] {\n cursor: pointer;\n width: 16px;\n height: 16px;\n }\n\n /* Warning message */\n .warning-message {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 12px;\n color: #6B7280;\n padding: 10px 12px;\n background: #F9FAFB;\n border-radius: 4px;\n }\n\n .warning-message i {\n color: #9CA3AF;\n }\n\n /* Loading indicator */\n .loading-indicator {\n display: flex;\n align-items: center;\n gap: 10px;\n margin-top: 15px;\n padding: 12px;\n background: #f8f9fa;\n border-radius: 4px;\n color: #666;\n }\n\n /* Modal footer */\n .modal-footer {\n display: flex;\n justify-content: flex-end;\n gap: 10px;\n padding: 16px 20px;\n border-top: 1px solid #E5E7EB;\n background: #F9FAFB;\n border-radius: 0 0 8px 8px;\n }\n\n /* Button styles */\n .btn {\n padding: 8px 16px;\n border-radius: 6px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: background 0.15s, border-color 0.15s;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n }\n\n .btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .btn-secondary {\n background: white;\n border: 1px solid #D1D5DB;\n color: #374151;\n }\n\n .btn-secondary:hover:not(:disabled) {\n background: #F9FAFB;\n border-color: #9CA3AF;\n }\n\n .btn-danger {\n background: #DC2626;\n border: 1px solid #DC2626;\n color: white;\n }\n\n .btn-danger:hover:not(:disabled) {\n background: #B91C1C;\n border-color: #B91C1C;\n }\n "] }]
|
|
260
|
-
}], null, { isVisible: [{
|
|
261
|
-
type: Input
|
|
262
|
-
}], title: [{
|
|
263
|
-
type: Input
|
|
264
|
-
}], messagesToDelete: [{
|
|
265
|
-
type: Input
|
|
266
|
-
}], artifactsAffected: [{
|
|
267
|
-
type: Input
|
|
268
|
-
}], isDeleting: [{
|
|
269
|
-
type: Input
|
|
270
|
-
}], cancelled: [{
|
|
271
|
-
type: Output
|
|
272
|
-
}], confirmed: [{
|
|
273
|
-
type: Output
|
|
274
|
-
}] }); })();
|
|
275
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DeleteConfirmModalComponent, { className: "DeleteConfirmModalComponent" }); })();
|
|
276
|
-
//# sourceMappingURL=delete-confirm-modal.component.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"delete-confirm-modal.component.js","sourceRoot":"","sources":["../../../../src/lib/components/delete-confirm/delete-confirm-modal.component.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,160 +0,0 @@
|
|
|
1
|
-
import { ConversationEntity } from '@memberjunction/core-entities';
|
|
2
|
-
import { UserInfo } from '@memberjunction/core';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
/**
|
|
5
|
-
* Simplified state management for conversations
|
|
6
|
-
* Uses simple arrays with Angular change detection instead of complex observables
|
|
7
|
-
* This prevents synchronization issues when updating conversation properties
|
|
8
|
-
*/
|
|
9
|
-
export declare class ConversationStateService {
|
|
10
|
-
conversations: ConversationEntity[];
|
|
11
|
-
private _activeConversationId;
|
|
12
|
-
searchQuery: string;
|
|
13
|
-
isLoading: boolean;
|
|
14
|
-
activeThreadId: string | null;
|
|
15
|
-
private _activeConversationId$;
|
|
16
|
-
readonly activeConversationId$: import("rxjs").Observable<string | null>;
|
|
17
|
-
pendingMessageToSend: string | null;
|
|
18
|
-
isNewUnsavedConversation: boolean;
|
|
19
|
-
pendingArtifactId: string | null;
|
|
20
|
-
pendingArtifactVersionNumber: number | null;
|
|
21
|
-
constructor();
|
|
22
|
-
/**
|
|
23
|
-
* Gets the active conversation ID
|
|
24
|
-
*/
|
|
25
|
-
get activeConversationId(): string | null;
|
|
26
|
-
/**
|
|
27
|
-
* Sets the active conversation ID and emits change event
|
|
28
|
-
*/
|
|
29
|
-
set activeConversationId(value: string | null);
|
|
30
|
-
/**
|
|
31
|
-
* Gets the active conversation object
|
|
32
|
-
*/
|
|
33
|
-
get activeConversation(): ConversationEntity | null;
|
|
34
|
-
/**
|
|
35
|
-
* Gets filtered conversations based on search query
|
|
36
|
-
*/
|
|
37
|
-
get filteredConversations(): ConversationEntity[];
|
|
38
|
-
/**
|
|
39
|
-
* Gets pinned conversations
|
|
40
|
-
*/
|
|
41
|
-
get pinnedConversations(): ConversationEntity[];
|
|
42
|
-
/**
|
|
43
|
-
* Sets the active conversation
|
|
44
|
-
* @param id The conversation ID to activate (or null to clear)
|
|
45
|
-
*/
|
|
46
|
-
setActiveConversation(id: string | null): void;
|
|
47
|
-
/**
|
|
48
|
-
* Initiates a new unsaved conversation (doesn't create DB record yet)
|
|
49
|
-
* This shows the welcome screen and delays DB creation until first message
|
|
50
|
-
*/
|
|
51
|
-
startNewConversation(): void;
|
|
52
|
-
/**
|
|
53
|
-
* Clears the new unsaved conversation state
|
|
54
|
-
* Called when the conversation is actually created or cancelled
|
|
55
|
-
*/
|
|
56
|
-
clearNewConversationState(): void;
|
|
57
|
-
/**
|
|
58
|
-
* Gets the current active conversation ID
|
|
59
|
-
*/
|
|
60
|
-
getActiveConversationId(): string | null;
|
|
61
|
-
/**
|
|
62
|
-
* Adds a conversation to the list
|
|
63
|
-
* @param conversation The conversation to add
|
|
64
|
-
*/
|
|
65
|
-
addConversation(conversation: ConversationEntity): void;
|
|
66
|
-
/**
|
|
67
|
-
* Updates a conversation in the list by directly modifying the entity object
|
|
68
|
-
* Angular change detection will pick up the changes automatically
|
|
69
|
-
* @param id The conversation ID
|
|
70
|
-
* @param updates The fields to update
|
|
71
|
-
*/
|
|
72
|
-
updateConversationInPlace(id: string, updates: Partial<ConversationEntity>): void;
|
|
73
|
-
/**
|
|
74
|
-
* Removes a conversation from the list
|
|
75
|
-
* @param id The conversation ID to remove
|
|
76
|
-
*/
|
|
77
|
-
removeConversation(id: string): void;
|
|
78
|
-
/**
|
|
79
|
-
* Sets the search query
|
|
80
|
-
* @param query The search query string
|
|
81
|
-
*/
|
|
82
|
-
setSearchQuery(query: string): void;
|
|
83
|
-
/**
|
|
84
|
-
* Clears the search query
|
|
85
|
-
*/
|
|
86
|
-
clearSearchQuery(): void;
|
|
87
|
-
/**
|
|
88
|
-
* Loads conversations from the database
|
|
89
|
-
* @param environmentId The environment ID to filter by
|
|
90
|
-
* @param currentUser The current user context
|
|
91
|
-
*/
|
|
92
|
-
loadConversations(environmentId: string, currentUser: UserInfo): Promise<void>;
|
|
93
|
-
/**
|
|
94
|
-
* Creates a new conversation
|
|
95
|
-
* @param name The conversation name
|
|
96
|
-
* @param environmentId The environment ID
|
|
97
|
-
* @param currentUser The current user context
|
|
98
|
-
* @param description Optional description
|
|
99
|
-
* @param projectId Optional project ID
|
|
100
|
-
* @returns The created conversation entity
|
|
101
|
-
*/
|
|
102
|
-
createConversation(name: string, environmentId: string, currentUser: UserInfo, description?: string, projectId?: string): Promise<ConversationEntity>;
|
|
103
|
-
/**
|
|
104
|
-
* Deletes a conversation
|
|
105
|
-
* @param id The conversation ID
|
|
106
|
-
* @param currentUser The current user context
|
|
107
|
-
* @returns True if successful
|
|
108
|
-
*/
|
|
109
|
-
deleteConversation(id: string, currentUser: UserInfo): Promise<boolean>;
|
|
110
|
-
/**
|
|
111
|
-
* Deletes multiple conversations in a batch operation
|
|
112
|
-
* @param ids - Array of conversation IDs to delete
|
|
113
|
-
* @param currentUser - Current user info
|
|
114
|
-
* @returns Object with successful deletions and failed deletions with error info
|
|
115
|
-
*/
|
|
116
|
-
deleteMultipleConversations(ids: string[], currentUser: UserInfo): Promise<{
|
|
117
|
-
successful: string[];
|
|
118
|
-
failed: Array<{
|
|
119
|
-
id: string;
|
|
120
|
-
name: string;
|
|
121
|
-
error: string;
|
|
122
|
-
}>;
|
|
123
|
-
}>;
|
|
124
|
-
/**
|
|
125
|
-
* Updates a conversation - saves to database AND updates in-place in the array
|
|
126
|
-
* @param id The conversation ID
|
|
127
|
-
* @param updates The fields to update
|
|
128
|
-
* @param currentUser The current user context
|
|
129
|
-
* @returns True if successful
|
|
130
|
-
*/
|
|
131
|
-
saveConversation(id: string, updates: Partial<ConversationEntity>, currentUser: UserInfo): Promise<boolean>;
|
|
132
|
-
/**
|
|
133
|
-
* Toggles the pinned status of a conversation
|
|
134
|
-
* @param id The conversation ID
|
|
135
|
-
* @param currentUser The current user context
|
|
136
|
-
*/
|
|
137
|
-
togglePin(id: string, currentUser: UserInfo): Promise<void>;
|
|
138
|
-
/**
|
|
139
|
-
* Archives a conversation
|
|
140
|
-
* @param id The conversation ID
|
|
141
|
-
* @param currentUser The current user context
|
|
142
|
-
*/
|
|
143
|
-
archiveConversation(id: string, currentUser: UserInfo): Promise<void>;
|
|
144
|
-
/**
|
|
145
|
-
* Opens a thread panel for a specific message
|
|
146
|
-
* @param messageId The parent message ID
|
|
147
|
-
*/
|
|
148
|
-
openThread(messageId: string): void;
|
|
149
|
-
/**
|
|
150
|
-
* Closes the currently open thread panel
|
|
151
|
-
*/
|
|
152
|
-
closeThread(): void;
|
|
153
|
-
/**
|
|
154
|
-
* Gets the currently active thread ID
|
|
155
|
-
*/
|
|
156
|
-
getActiveThreadId(): string | null;
|
|
157
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<ConversationStateService, never>;
|
|
158
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<ConversationStateService>;
|
|
159
|
-
}
|
|
160
|
-
//# sourceMappingURL=conversation-state.service.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"conversation-state.service.d.ts","sourceRoot":"","sources":["../../../src/lib/services/conversation-state.service.ts"],"names":[],"mappings":"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"}
|