@memberjunction/ng-conversations 2.104.0 → 2.105.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/lib/components/collection/collection-view.component.d.ts +5 -1
- package/dist/lib/components/collection/collection-view.component.d.ts.map +1 -1
- package/dist/lib/components/collection/collection-view.component.js +53 -11
- package/dist/lib/components/collection/collection-view.component.js.map +1 -1
- package/dist/lib/components/conversation/conversation-chat-area.component.d.ts +53 -13
- package/dist/lib/components/conversation/conversation-chat-area.component.d.ts.map +1 -1
- package/dist/lib/components/conversation/conversation-chat-area.component.js +455 -289
- package/dist/lib/components/conversation/conversation-chat-area.component.js.map +1 -1
- package/dist/lib/components/conversation/conversation-list.component.d.ts +9 -1
- package/dist/lib/components/conversation/conversation-list.component.d.ts.map +1 -1
- package/dist/lib/components/conversation/conversation-list.component.js +258 -71
- package/dist/lib/components/conversation/conversation-list.component.js.map +1 -1
- package/dist/lib/components/mention/mention-dropdown.component.d.ts +6 -0
- package/dist/lib/components/mention/mention-dropdown.component.d.ts.map +1 -1
- package/dist/lib/components/mention/mention-dropdown.component.js +35 -13
- package/dist/lib/components/mention/mention-dropdown.component.js.map +1 -1
- package/dist/lib/components/message/message-input.component.d.ts +49 -12
- package/dist/lib/components/message/message-input.component.d.ts.map +1 -1
- package/dist/lib/components/message/message-input.component.js +579 -221
- package/dist/lib/components/message/message-input.component.js.map +1 -1
- package/dist/lib/components/message/message-item.component.d.ts +16 -5
- package/dist/lib/components/message/message-item.component.d.ts.map +1 -1
- package/dist/lib/components/message/message-item.component.js +136 -64
- package/dist/lib/components/message/message-item.component.js.map +1 -1
- package/dist/lib/components/message/message-list.component.d.ts +11 -5
- package/dist/lib/components/message/message-list.component.d.ts.map +1 -1
- package/dist/lib/components/message/message-list.component.js +48 -9
- package/dist/lib/components/message/message-list.component.js.map +1 -1
- package/dist/lib/components/navigation/conversation-navigation.component.d.ts.map +1 -1
- package/dist/lib/components/navigation/conversation-navigation.component.js +24 -9
- package/dist/lib/components/navigation/conversation-navigation.component.js.map +1 -1
- package/dist/lib/components/task/tasks-full-view.component.d.ts +47 -0
- package/dist/lib/components/task/tasks-full-view.component.d.ts.map +1 -0
- package/dist/lib/components/task/tasks-full-view.component.js +368 -0
- package/dist/lib/components/task/tasks-full-view.component.js.map +1 -0
- package/dist/lib/components/tasks/task-widget.component.d.ts +29 -0
- package/dist/lib/components/tasks/task-widget.component.d.ts.map +1 -0
- package/dist/lib/components/tasks/task-widget.component.js +385 -0
- package/dist/lib/components/tasks/task-widget.component.js.map +1 -0
- package/dist/lib/components/tasks/tasks-dropdown.component.d.ts +22 -8
- package/dist/lib/components/tasks/tasks-dropdown.component.d.ts.map +1 -1
- package/dist/lib/components/tasks/tasks-dropdown.component.js +195 -99
- package/dist/lib/components/tasks/tasks-dropdown.component.js.map +1 -1
- package/dist/lib/components/thread/thread-panel.component.d.ts +3 -1
- package/dist/lib/components/thread/thread-panel.component.d.ts.map +1 -1
- package/dist/lib/components/thread/thread-panel.component.js +14 -14
- package/dist/lib/components/thread/thread-panel.component.js.map +1 -1
- package/dist/lib/components/workspace/conversation-workspace.component.d.ts +43 -4
- package/dist/lib/components/workspace/conversation-workspace.component.d.ts.map +1 -1
- package/dist/lib/components/workspace/conversation-workspace.component.js +288 -46
- package/dist/lib/components/workspace/conversation-workspace.component.js.map +1 -1
- package/dist/lib/conversations.module.d.ts +40 -46
- package/dist/lib/conversations.module.d.ts.map +1 -1
- package/dist/lib/conversations.module.js +28 -42
- package/dist/lib/conversations.module.js.map +1 -1
- package/dist/lib/models/conversation-state.model.d.ts +29 -1
- package/dist/lib/models/conversation-state.model.d.ts.map +1 -1
- package/dist/lib/services/conversation-agent.service.d.ts +6 -5
- package/dist/lib/services/conversation-agent.service.d.ts.map +1 -1
- package/dist/lib/services/conversation-agent.service.js +18 -19
- package/dist/lib/services/conversation-agent.service.js.map +1 -1
- package/dist/lib/services/data-cache.service.d.ts +96 -0
- package/dist/lib/services/data-cache.service.d.ts.map +1 -0
- package/dist/lib/services/data-cache.service.js +203 -0
- package/dist/lib/services/data-cache.service.js.map +1 -0
- package/dist/public-api.d.ts +3 -6
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +3 -6
- package/dist/public-api.js.map +1 -1
- package/package.json +12 -10
- package/dist/lib/components/artifact/artifact-panel.component.d.ts +0 -22
- package/dist/lib/components/artifact/artifact-panel.component.d.ts.map +0 -1
- package/dist/lib/components/artifact/artifact-panel.component.js +0 -237
- package/dist/lib/components/artifact/artifact-panel.component.js.map +0 -1
- package/dist/lib/components/artifact/artifact-upload-modal.component.d.ts +0 -39
- package/dist/lib/components/artifact/artifact-upload-modal.component.d.ts.map +0 -1
- package/dist/lib/components/artifact/artifact-upload-modal.component.js +0 -384
- package/dist/lib/components/artifact/artifact-upload-modal.component.js.map +0 -1
- package/dist/lib/components/artifact/artifact-version-history.component.d.ts +0 -28
- package/dist/lib/components/artifact/artifact-version-history.component.d.ts.map +0 -1
- package/dist/lib/components/artifact/artifact-version-history.component.js +0 -280
- package/dist/lib/components/artifact/artifact-version-history.component.js.map +0 -1
- package/dist/lib/components/artifact/artifact-viewer-panel.component.d.ts +0 -22
- 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 -182
- package/dist/lib/components/artifact/artifact-viewer-panel.component.js.map +0 -1
- package/dist/lib/components/artifact/artifact-viewer.component.d.ts +0 -27
- package/dist/lib/components/artifact/artifact-viewer.component.d.ts.map +0 -1
- package/dist/lib/components/artifact/artifact-viewer.component.js +0 -266
- package/dist/lib/components/artifact/artifact-viewer.component.js.map +0 -1
- package/dist/lib/components/artifact/inline-artifact.component.d.ts +0 -46
- package/dist/lib/components/artifact/inline-artifact.component.d.ts.map +0 -1
- package/dist/lib/components/artifact/inline-artifact.component.js +0 -447
- package/dist/lib/components/artifact/inline-artifact.component.js.map +0 -1
- package/dist/lib/components/task/task-form-modal.component.d.ts +0 -42
- package/dist/lib/components/task/task-form-modal.component.d.ts.map +0 -1
- package/dist/lib/components/task/task-form-modal.component.js +0 -329
- package/dist/lib/components/task/task-form-modal.component.js.map +0 -1
- package/dist/lib/components/task/task-item.component.d.ts +0 -22
- package/dist/lib/components/task/task-item.component.d.ts.map +0 -1
- package/dist/lib/components/task/task-item.component.js +0 -234
- package/dist/lib/components/task/task-item.component.js.map +0 -1
- package/dist/lib/components/task/task-list.component.d.ts +0 -32
- package/dist/lib/components/task/task-list.component.d.ts.map +0 -1
- package/dist/lib/components/task/task-list.component.js +0 -290
- package/dist/lib/components/task/task-list.component.js.map +0 -1
|
@@ -1,329 +0,0 @@
|
|
|
1
|
-
import { Component, EventEmitter, Input, Output } 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
|
-
import * as i6 from "@progress/kendo-angular-inputs";
|
|
10
|
-
import * as i7 from "@progress/kendo-angular-indicators";
|
|
11
|
-
import * as i8 from "@progress/kendo-angular-dropdowns";
|
|
12
|
-
import * as i9 from "@progress/kendo-angular-dateinputs";
|
|
13
|
-
function TaskFormModalComponent_kendo_dialog_0_span_6_Template(rf, ctx) { if (rf & 1) {
|
|
14
|
-
i0.ɵɵelementStart(0, "span", 18);
|
|
15
|
-
i0.ɵɵtext(1, " Title is required ");
|
|
16
|
-
i0.ɵɵelementEnd();
|
|
17
|
-
} }
|
|
18
|
-
function TaskFormModalComponent_kendo_dialog_0_div_24_Template(rf, ctx) { if (rf & 1) {
|
|
19
|
-
i0.ɵɵelementStart(0, "div", 18);
|
|
20
|
-
i0.ɵɵtext(1);
|
|
21
|
-
i0.ɵɵelementEnd();
|
|
22
|
-
} if (rf & 2) {
|
|
23
|
-
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
24
|
-
i0.ɵɵadvance();
|
|
25
|
-
i0.ɵɵtextInterpolate1(" ", ctx_r1.errorMessage, " ");
|
|
26
|
-
} }
|
|
27
|
-
function TaskFormModalComponent_kendo_dialog_0_div_25_Template(rf, ctx) { if (rf & 1) {
|
|
28
|
-
i0.ɵɵelementStart(0, "div", 19);
|
|
29
|
-
i0.ɵɵelement(1, "kendo-loader", 20);
|
|
30
|
-
i0.ɵɵelementStart(2, "span");
|
|
31
|
-
i0.ɵɵtext(3, "Saving task...");
|
|
32
|
-
i0.ɵɵelementEnd()();
|
|
33
|
-
} }
|
|
34
|
-
function TaskFormModalComponent_kendo_dialog_0_Template(rf, ctx) { if (rf & 1) {
|
|
35
|
-
const _r1 = i0.ɵɵgetCurrentView();
|
|
36
|
-
i0.ɵɵelementStart(0, "kendo-dialog", 1);
|
|
37
|
-
i0.ɵɵlistener("close", function TaskFormModalComponent_kendo_dialog_0_Template_kendo_dialog_close_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onCancel()); });
|
|
38
|
-
i0.ɵɵelementStart(1, "div", 2)(2, "div", 3)(3, "label", 4);
|
|
39
|
-
i0.ɵɵtext(4, "Title");
|
|
40
|
-
i0.ɵɵelementEnd();
|
|
41
|
-
i0.ɵɵelementStart(5, "input", 5);
|
|
42
|
-
i0.ɵɵtwoWayListener("ngModelChange", function TaskFormModalComponent_kendo_dialog_0_Template_input_ngModelChange_5_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.formData.title, $event) || (ctx_r1.formData.title = $event); return i0.ɵɵresetView($event); });
|
|
43
|
-
i0.ɵɵlistener("keydown.enter", function TaskFormModalComponent_kendo_dialog_0_Template_input_keydown_enter_5_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onSave()); });
|
|
44
|
-
i0.ɵɵelementEnd();
|
|
45
|
-
i0.ɵɵtemplate(6, TaskFormModalComponent_kendo_dialog_0_span_6_Template, 2, 0, "span", 6);
|
|
46
|
-
i0.ɵɵelementEnd();
|
|
47
|
-
i0.ɵɵelementStart(7, "div", 3)(8, "label", 7);
|
|
48
|
-
i0.ɵɵtext(9, "Description");
|
|
49
|
-
i0.ɵɵelementEnd();
|
|
50
|
-
i0.ɵɵelementStart(10, "textarea", 8);
|
|
51
|
-
i0.ɵɵtwoWayListener("ngModelChange", function TaskFormModalComponent_kendo_dialog_0_Template_textarea_ngModelChange_10_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); });
|
|
52
|
-
i0.ɵɵtext(11, " ");
|
|
53
|
-
i0.ɵɵelementEnd()();
|
|
54
|
-
i0.ɵɵelementStart(12, "div", 3)(13, "label", 9);
|
|
55
|
-
i0.ɵɵtext(14, "Priority");
|
|
56
|
-
i0.ɵɵelementEnd();
|
|
57
|
-
i0.ɵɵelementStart(15, "kendo-dropdownlist", 10);
|
|
58
|
-
i0.ɵɵtwoWayListener("ngModelChange", function TaskFormModalComponent_kendo_dialog_0_Template_kendo_dropdownlist_ngModelChange_15_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.formData.priority, $event) || (ctx_r1.formData.priority = $event); return i0.ɵɵresetView($event); });
|
|
59
|
-
i0.ɵɵelementEnd()();
|
|
60
|
-
i0.ɵɵelementStart(16, "div", 3)(17, "label", 11);
|
|
61
|
-
i0.ɵɵtext(18, "Status");
|
|
62
|
-
i0.ɵɵelementEnd();
|
|
63
|
-
i0.ɵɵelementStart(19, "kendo-dropdownlist", 12);
|
|
64
|
-
i0.ɵɵtwoWayListener("ngModelChange", function TaskFormModalComponent_kendo_dialog_0_Template_kendo_dropdownlist_ngModelChange_19_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.formData.status, $event) || (ctx_r1.formData.status = $event); return i0.ɵɵresetView($event); });
|
|
65
|
-
i0.ɵɵelementEnd()();
|
|
66
|
-
i0.ɵɵelementStart(20, "div", 3)(21, "label", 13);
|
|
67
|
-
i0.ɵɵtext(22, "Due Date");
|
|
68
|
-
i0.ɵɵelementEnd();
|
|
69
|
-
i0.ɵɵelementStart(23, "kendo-datepicker", 14);
|
|
70
|
-
i0.ɵɵtwoWayListener("ngModelChange", function TaskFormModalComponent_kendo_dialog_0_Template_kendo_datepicker_ngModelChange_23_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.formData.dueDate, $event) || (ctx_r1.formData.dueDate = $event); return i0.ɵɵresetView($event); });
|
|
71
|
-
i0.ɵɵelementEnd()();
|
|
72
|
-
i0.ɵɵtemplate(24, TaskFormModalComponent_kendo_dialog_0_div_24_Template, 2, 1, "div", 6)(25, TaskFormModalComponent_kendo_dialog_0_div_25_Template, 4, 0, "div", 15);
|
|
73
|
-
i0.ɵɵelementEnd();
|
|
74
|
-
i0.ɵɵelementStart(26, "kendo-dialog-actions")(27, "button", 16);
|
|
75
|
-
i0.ɵɵlistener("click", function TaskFormModalComponent_kendo_dialog_0_Template_button_click_27_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onCancel()); });
|
|
76
|
-
i0.ɵɵtext(28, "Cancel");
|
|
77
|
-
i0.ɵɵelementEnd();
|
|
78
|
-
i0.ɵɵelementStart(29, "button", 17);
|
|
79
|
-
i0.ɵɵlistener("click", function TaskFormModalComponent_kendo_dialog_0_Template_button_click_29_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onSave()); });
|
|
80
|
-
i0.ɵɵtext(30);
|
|
81
|
-
i0.ɵɵelementEnd()()();
|
|
82
|
-
} if (rf & 2) {
|
|
83
|
-
const ctx_r1 = i0.ɵɵnextContext();
|
|
84
|
-
i0.ɵɵproperty("title", ctx_r1.task ? "Edit Task" : "New Task")("width", 500)("height", 450);
|
|
85
|
-
i0.ɵɵadvance(5);
|
|
86
|
-
i0.ɵɵclassProp("error", ctx_r1.showValidation && !ctx_r1.formData.title);
|
|
87
|
-
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.formData.title);
|
|
88
|
-
i0.ɵɵadvance();
|
|
89
|
-
i0.ɵɵproperty("ngIf", ctx_r1.showValidation && !ctx_r1.formData.title);
|
|
90
|
-
i0.ɵɵadvance(4);
|
|
91
|
-
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.formData.description);
|
|
92
|
-
i0.ɵɵadvance(5);
|
|
93
|
-
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.formData.priority);
|
|
94
|
-
i0.ɵɵproperty("data", ctx_r1.priorities)("textField", "label")("valueField", "value");
|
|
95
|
-
i0.ɵɵadvance(4);
|
|
96
|
-
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.formData.status);
|
|
97
|
-
i0.ɵɵproperty("data", ctx_r1.statuses)("textField", "label")("valueField", "value");
|
|
98
|
-
i0.ɵɵadvance(4);
|
|
99
|
-
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.formData.dueDate);
|
|
100
|
-
i0.ɵɵadvance();
|
|
101
|
-
i0.ɵɵproperty("ngIf", ctx_r1.errorMessage);
|
|
102
|
-
i0.ɵɵadvance();
|
|
103
|
-
i0.ɵɵproperty("ngIf", ctx_r1.isSaving);
|
|
104
|
-
i0.ɵɵadvance(2);
|
|
105
|
-
i0.ɵɵproperty("disabled", ctx_r1.isSaving);
|
|
106
|
-
i0.ɵɵadvance(2);
|
|
107
|
-
i0.ɵɵproperty("primary", true)("disabled", ctx_r1.isSaving);
|
|
108
|
-
i0.ɵɵadvance();
|
|
109
|
-
i0.ɵɵtextInterpolate1(" ", ctx_r1.task ? "Update" : "Create", " ");
|
|
110
|
-
} }
|
|
111
|
-
export class TaskFormModalComponent {
|
|
112
|
-
toastService;
|
|
113
|
-
isVisible = false;
|
|
114
|
-
task;
|
|
115
|
-
conversationId;
|
|
116
|
-
currentUser;
|
|
117
|
-
saved = new EventEmitter();
|
|
118
|
-
cancelled = new EventEmitter();
|
|
119
|
-
formData = {
|
|
120
|
-
title: '',
|
|
121
|
-
description: '',
|
|
122
|
-
priority: 'medium',
|
|
123
|
-
status: 'pending',
|
|
124
|
-
dueDate: null
|
|
125
|
-
};
|
|
126
|
-
priorities = [
|
|
127
|
-
{ value: 'low', label: 'Low' },
|
|
128
|
-
{ value: 'medium', label: 'Medium' },
|
|
129
|
-
{ value: 'high', label: 'High' },
|
|
130
|
-
{ value: 'urgent', label: 'Urgent' }
|
|
131
|
-
];
|
|
132
|
-
statuses = [
|
|
133
|
-
{ value: 'pending', label: 'Pending' },
|
|
134
|
-
{ value: 'in_progress', label: 'In Progress' },
|
|
135
|
-
{ value: 'completed', label: 'Completed' },
|
|
136
|
-
{ value: 'cancelled', label: 'Cancelled' }
|
|
137
|
-
];
|
|
138
|
-
showValidation = false;
|
|
139
|
-
errorMessage = '';
|
|
140
|
-
isSaving = false;
|
|
141
|
-
constructor(toastService) {
|
|
142
|
-
this.toastService = toastService;
|
|
143
|
-
}
|
|
144
|
-
ngOnChanges() {
|
|
145
|
-
if (this.isVisible) {
|
|
146
|
-
this.loadFormData();
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
loadFormData() {
|
|
150
|
-
if (this.task) {
|
|
151
|
-
this.formData = {
|
|
152
|
-
title: this.task.Name || '',
|
|
153
|
-
description: this.task.Description || '',
|
|
154
|
-
priority: 'medium', // Priority not used in Tasks entity
|
|
155
|
-
status: (this.task.Status || 'Pending').toLowerCase().replace(' ', '_'),
|
|
156
|
-
dueDate: this.task.DueAt ? new Date(this.task.DueAt) : null
|
|
157
|
-
};
|
|
158
|
-
}
|
|
159
|
-
else {
|
|
160
|
-
this.resetForm();
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
async onSave() {
|
|
164
|
-
this.showValidation = true;
|
|
165
|
-
this.errorMessage = '';
|
|
166
|
-
if (!this.formData.title.trim()) {
|
|
167
|
-
return;
|
|
168
|
-
}
|
|
169
|
-
this.isSaving = true;
|
|
170
|
-
try {
|
|
171
|
-
const md = new Metadata();
|
|
172
|
-
const taskEntity = this.task ||
|
|
173
|
-
await md.GetEntityObject('MJ: Tasks', this.currentUser);
|
|
174
|
-
taskEntity.Name = this.formData.title;
|
|
175
|
-
taskEntity.Description = this.formData.description || '';
|
|
176
|
-
// Priority field not available in Tasks entity
|
|
177
|
-
const statusValue = this.capitalizeFirst(this.formData.status.replace('_', ' '));
|
|
178
|
-
taskEntity.Status = statusValue;
|
|
179
|
-
taskEntity.DueAt = this.formData.dueDate || null;
|
|
180
|
-
if (!this.task) {
|
|
181
|
-
taskEntity.ConversationDetailID = this.conversationId;
|
|
182
|
-
taskEntity.PercentComplete = 0;
|
|
183
|
-
}
|
|
184
|
-
const saved = await taskEntity.Save();
|
|
185
|
-
if (saved) {
|
|
186
|
-
this.toastService.success(this.task ? 'Task updated successfully' : 'Task created successfully');
|
|
187
|
-
this.saved.emit(taskEntity);
|
|
188
|
-
this.resetForm();
|
|
189
|
-
}
|
|
190
|
-
else {
|
|
191
|
-
this.errorMessage = 'Failed to save task';
|
|
192
|
-
this.toastService.error(this.errorMessage);
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
catch (error) {
|
|
196
|
-
console.error('Error saving task:', error);
|
|
197
|
-
this.errorMessage = error instanceof Error ? error.message : 'Failed to save task';
|
|
198
|
-
this.toastService.error(this.errorMessage);
|
|
199
|
-
}
|
|
200
|
-
finally {
|
|
201
|
-
this.isSaving = false;
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
onCancel() {
|
|
205
|
-
this.cancelled.emit();
|
|
206
|
-
this.resetForm();
|
|
207
|
-
}
|
|
208
|
-
resetForm() {
|
|
209
|
-
this.formData = {
|
|
210
|
-
title: '',
|
|
211
|
-
description: '',
|
|
212
|
-
priority: 'medium',
|
|
213
|
-
status: 'pending',
|
|
214
|
-
dueDate: null
|
|
215
|
-
};
|
|
216
|
-
this.showValidation = false;
|
|
217
|
-
this.errorMessage = '';
|
|
218
|
-
this.isVisible = false;
|
|
219
|
-
}
|
|
220
|
-
capitalizeFirst(str) {
|
|
221
|
-
return str.charAt(0).toUpperCase() + str.slice(1);
|
|
222
|
-
}
|
|
223
|
-
static ɵfac = function TaskFormModalComponent_Factory(t) { return new (t || TaskFormModalComponent)(i0.ɵɵdirectiveInject(i1.ToastService)); };
|
|
224
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TaskFormModalComponent, selectors: [["mj-task-form-modal"]], inputs: { isVisible: "isVisible", task: "task", conversationId: "conversationId", currentUser: "currentUser" }, outputs: { saved: "saved", cancelled: "cancelled" }, features: [i0.ɵɵNgOnChangesFeature], decls: 1, vars: 1, consts: [[3, "title", "width", "height", "close", 4, "ngIf"], [3, "close", "title", "width", "height"], [1, "task-form-content"], [1, "form-group"], ["for", "task-title", 1, "required"], ["id", "task-title", "kendoTextBox", "", "placeholder", "Enter task title", 3, "ngModelChange", "keydown.enter", "ngModel"], ["class", "error-message", 4, "ngIf"], ["for", "task-description"], ["id", "task-description", "kendoTextArea", "", "placeholder", "Enter task description (optional)", "rows", "4", 3, "ngModelChange", "ngModel"], ["for", "task-priority"], ["id", "task-priority", 3, "ngModelChange", "ngModel", "data", "textField", "valueField"], ["for", "task-status"], ["id", "task-status", 3, "ngModelChange", "ngModel", "data", "textField", "valueField"], ["for", "task-due-date"], ["id", "task-due-date", 3, "ngModelChange", "ngModel"], ["class", "loading-indicator", 4, "ngIf"], ["kendoButton", "", 3, "click", "disabled"], ["kendoButton", "", 3, "click", "primary", "disabled"], [1, "error-message"], [1, "loading-indicator"], ["type", "infinite-spinner", "size", "medium"]], template: function TaskFormModalComponent_Template(rf, ctx) { if (rf & 1) {
|
|
225
|
-
i0.ɵɵtemplate(0, TaskFormModalComponent_kendo_dialog_0_Template, 31, 23, "kendo-dialog", 0);
|
|
226
|
-
} if (rf & 2) {
|
|
227
|
-
i0.ɵɵproperty("ngIf", ctx.isVisible);
|
|
228
|
-
} }, dependencies: [i2.NgIf, i3.DefaultValueAccessor, i3.NgControlStatus, i3.NgModel, i4.DialogComponent, i4.DialogActionsComponent, i5.ButtonComponent, i6.TextAreaDirective, i6.TextBoxDirective, i7.LoaderComponent, i8.DropDownListComponent, i9.DatePickerComponent], styles: [".task-form-content[_ngcontent-%COMP%] {\n padding: 20px;\n }\n\n .form-group[_ngcontent-%COMP%] {\n margin-bottom: 20px;\n }\n\n .form-group[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n display: block;\n margin-bottom: 5px;\n font-weight: 500;\n }\n\n .form-group[_ngcontent-%COMP%] label.required[_ngcontent-%COMP%]::after {\n content: '*';\n color: #d32f2f;\n margin-left: 4px;\n }\n\n input[kendoTextBox][_ngcontent-%COMP%], \n textarea[kendoTextArea][_ngcontent-%COMP%], \n kendo-dropdownlist[_ngcontent-%COMP%], \n kendo-datepicker[_ngcontent-%COMP%] {\n width: 100%;\n }\n\n .error[_ngcontent-%COMP%] {\n border-color: #d32f2f;\n }\n\n .error-message[_ngcontent-%COMP%] {\n display: block;\n color: #d32f2f;\n font-size: 12px;\n margin-top: 5px;\n }\n\n .loading-indicator[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n margin-top: 15px;\n color: #666;\n }\n\n kendo-dialog-actions[_ngcontent-%COMP%] {\n display: flex;\n justify-content: flex-end;\n gap: 10px;\n padding: 15px 20px;\n border-top: 1px solid #e0e0e0;\n }"] });
|
|
229
|
-
}
|
|
230
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TaskFormModalComponent, [{
|
|
231
|
-
type: Component,
|
|
232
|
-
args: [{ selector: 'mj-task-form-modal', template: `
|
|
233
|
-
<kendo-dialog
|
|
234
|
-
*ngIf="isVisible"
|
|
235
|
-
[title]="task ? 'Edit Task' : 'New Task'"
|
|
236
|
-
[width]="500"
|
|
237
|
-
[height]="450"
|
|
238
|
-
(close)="onCancel()">
|
|
239
|
-
|
|
240
|
-
<div class="task-form-content">
|
|
241
|
-
<div class="form-group">
|
|
242
|
-
<label for="task-title" class="required">Title</label>
|
|
243
|
-
<input
|
|
244
|
-
id="task-title"
|
|
245
|
-
kendoTextBox
|
|
246
|
-
[(ngModel)]="formData.title"
|
|
247
|
-
placeholder="Enter task title"
|
|
248
|
-
[class.error]="showValidation && !formData.title"
|
|
249
|
-
(keydown.enter)="onSave()"
|
|
250
|
-
/>
|
|
251
|
-
<span class="error-message" *ngIf="showValidation && !formData.title">
|
|
252
|
-
Title is required
|
|
253
|
-
</span>
|
|
254
|
-
</div>
|
|
255
|
-
|
|
256
|
-
<div class="form-group">
|
|
257
|
-
<label for="task-description">Description</label>
|
|
258
|
-
<textarea
|
|
259
|
-
id="task-description"
|
|
260
|
-
kendoTextArea
|
|
261
|
-
[(ngModel)]="formData.description"
|
|
262
|
-
placeholder="Enter task description (optional)"
|
|
263
|
-
rows="4">
|
|
264
|
-
</textarea>
|
|
265
|
-
</div>
|
|
266
|
-
|
|
267
|
-
<div class="form-group">
|
|
268
|
-
<label for="task-priority">Priority</label>
|
|
269
|
-
<kendo-dropdownlist
|
|
270
|
-
id="task-priority"
|
|
271
|
-
[(ngModel)]="formData.priority"
|
|
272
|
-
[data]="priorities"
|
|
273
|
-
[textField]="'label'"
|
|
274
|
-
[valueField]="'value'">
|
|
275
|
-
</kendo-dropdownlist>
|
|
276
|
-
</div>
|
|
277
|
-
|
|
278
|
-
<div class="form-group">
|
|
279
|
-
<label for="task-status">Status</label>
|
|
280
|
-
<kendo-dropdownlist
|
|
281
|
-
id="task-status"
|
|
282
|
-
[(ngModel)]="formData.status"
|
|
283
|
-
[data]="statuses"
|
|
284
|
-
[textField]="'label'"
|
|
285
|
-
[valueField]="'value'">
|
|
286
|
-
</kendo-dropdownlist>
|
|
287
|
-
</div>
|
|
288
|
-
|
|
289
|
-
<div class="form-group">
|
|
290
|
-
<label for="task-due-date">Due Date</label>
|
|
291
|
-
<kendo-datepicker
|
|
292
|
-
id="task-due-date"
|
|
293
|
-
[(ngModel)]="formData.dueDate">
|
|
294
|
-
</kendo-datepicker>
|
|
295
|
-
</div>
|
|
296
|
-
|
|
297
|
-
<div class="error-message" *ngIf="errorMessage">
|
|
298
|
-
{{ errorMessage }}
|
|
299
|
-
</div>
|
|
300
|
-
|
|
301
|
-
<div class="loading-indicator" *ngIf="isSaving">
|
|
302
|
-
<kendo-loader type="infinite-spinner" size="medium"></kendo-loader>
|
|
303
|
-
<span>Saving task...</span>
|
|
304
|
-
</div>
|
|
305
|
-
</div>
|
|
306
|
-
|
|
307
|
-
<kendo-dialog-actions>
|
|
308
|
-
<button kendoButton [disabled]="isSaving" (click)="onCancel()">Cancel</button>
|
|
309
|
-
<button kendoButton [primary]="true" [disabled]="isSaving" (click)="onSave()">
|
|
310
|
-
{{ task ? 'Update' : 'Create' }}
|
|
311
|
-
</button>
|
|
312
|
-
</kendo-dialog-actions>
|
|
313
|
-
</kendo-dialog>
|
|
314
|
-
`, styles: ["\n .task-form-content {\n padding: 20px;\n }\n\n .form-group {\n margin-bottom: 20px;\n }\n\n .form-group label {\n display: block;\n margin-bottom: 5px;\n font-weight: 500;\n }\n\n .form-group label.required::after {\n content: '*';\n color: #d32f2f;\n margin-left: 4px;\n }\n\n input[kendoTextBox],\n textarea[kendoTextArea],\n kendo-dropdownlist,\n kendo-datepicker {\n width: 100%;\n }\n\n .error {\n border-color: #d32f2f;\n }\n\n .error-message {\n display: block;\n color: #d32f2f;\n font-size: 12px;\n margin-top: 5px;\n }\n\n .loading-indicator {\n display: flex;\n align-items: center;\n gap: 10px;\n margin-top: 15px;\n color: #666;\n }\n\n kendo-dialog-actions {\n display: flex;\n justify-content: flex-end;\n gap: 10px;\n padding: 15px 20px;\n border-top: 1px solid #e0e0e0;\n }\n "] }]
|
|
315
|
-
}], () => [{ type: i1.ToastService }], { isVisible: [{
|
|
316
|
-
type: Input
|
|
317
|
-
}], task: [{
|
|
318
|
-
type: Input
|
|
319
|
-
}], conversationId: [{
|
|
320
|
-
type: Input
|
|
321
|
-
}], currentUser: [{
|
|
322
|
-
type: Input
|
|
323
|
-
}], saved: [{
|
|
324
|
-
type: Output
|
|
325
|
-
}], cancelled: [{
|
|
326
|
-
type: Output
|
|
327
|
-
}] }); })();
|
|
328
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TaskFormModalComponent, { className: "TaskFormModalComponent", filePath: "src/lib/components/task/task-form-modal.component.ts", lineNumber: 147 }); })();
|
|
329
|
-
//# sourceMappingURL=task-form-modal.component.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"task-form-modal.component.js","sourceRoot":"","sources":["../../../../src/lib/components/task/task-form-modal.component.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { EventEmitter } from '@angular/core';
|
|
2
|
-
import { TaskEntity } from '@memberjunction/core-entities';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
type DueDateStatus = 'overdue' | 'due-soon' | 'future' | 'completed' | 'none';
|
|
5
|
-
export declare class TaskItemComponent {
|
|
6
|
-
task: TaskEntity;
|
|
7
|
-
disabled: boolean;
|
|
8
|
-
statusToggled: EventEmitter<TaskEntity>;
|
|
9
|
-
editRequested: EventEmitter<TaskEntity>;
|
|
10
|
-
deleteRequested: EventEmitter<TaskEntity>;
|
|
11
|
-
onToggleStatus(): void;
|
|
12
|
-
onEdit(): void;
|
|
13
|
-
onDelete(): void;
|
|
14
|
-
getDueDateStatus(): DueDateStatus;
|
|
15
|
-
getDueDateIcon(): string;
|
|
16
|
-
getRelativeDueDate(): string;
|
|
17
|
-
getDueDateTooltip(): string;
|
|
18
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<TaskItemComponent, never>;
|
|
19
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<TaskItemComponent, "mj-task-item", never, { "task": { "alias": "task"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, { "statusToggled": "statusToggled"; "editRequested": "editRequested"; "deleteRequested": "deleteRequested"; }, never, never, false, never>;
|
|
20
|
-
}
|
|
21
|
-
export {};
|
|
22
|
-
//# sourceMappingURL=task-item.component.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"task-item.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/task/task-item.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;;AAE3D,KAAK,aAAa,GAAG,SAAS,GAAG,UAAU,GAAG,QAAQ,GAAG,WAAW,GAAG,MAAM,CAAC;AAE9E,qBA6Ea,iBAAiB;IACnB,IAAI,EAAG,UAAU,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAS;IAEzB,aAAa,2BAAkC;IAC/C,aAAa,2BAAkC;IAC/C,eAAe,2BAAkC;IAE3D,cAAc,IAAI,IAAI;IAItB,MAAM,IAAI,IAAI;IAId,QAAQ,IAAI,IAAI;IAIhB,gBAAgB,IAAI,aAAa;IAuBjC,cAAc,IAAI,MAAM;IAiBxB,kBAAkB,IAAI,MAAM;IA6C5B,iBAAiB,IAAI,MAAM;yCAzGhB,iBAAiB;2CAAjB,iBAAiB;CAwH7B"}
|
|
@@ -1,234 +0,0 @@
|
|
|
1
|
-
import { Component, Input, Output, EventEmitter } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
function TaskItemComponent_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
4
|
-
i0.ɵɵelementStart(0, "span", 14);
|
|
5
|
-
i0.ɵɵelement(1, "i");
|
|
6
|
-
i0.ɵɵelementStart(2, "span", 15);
|
|
7
|
-
i0.ɵɵtext(3);
|
|
8
|
-
i0.ɵɵelementEnd()();
|
|
9
|
-
} if (rf & 2) {
|
|
10
|
-
const ctx_r0 = i0.ɵɵnextContext();
|
|
11
|
-
i0.ɵɵclassMap("due-" + ctx_r0.getDueDateStatus());
|
|
12
|
-
i0.ɵɵproperty("title", ctx_r0.getDueDateTooltip());
|
|
13
|
-
i0.ɵɵadvance();
|
|
14
|
-
i0.ɵɵclassMap(ctx_r0.getDueDateIcon());
|
|
15
|
-
i0.ɵɵadvance(2);
|
|
16
|
-
i0.ɵɵtextInterpolate(ctx_r0.getRelativeDueDate());
|
|
17
|
-
} }
|
|
18
|
-
function TaskItemComponent_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
19
|
-
i0.ɵɵelementStart(0, "span", 8);
|
|
20
|
-
i0.ɵɵtext(1);
|
|
21
|
-
i0.ɵɵelementEnd();
|
|
22
|
-
} if (rf & 2) {
|
|
23
|
-
const ctx_r0 = i0.ɵɵnextContext();
|
|
24
|
-
i0.ɵɵadvance();
|
|
25
|
-
i0.ɵɵtextInterpolate1(" ", ctx_r0.task.PercentComplete, "% ");
|
|
26
|
-
} }
|
|
27
|
-
export class TaskItemComponent {
|
|
28
|
-
task;
|
|
29
|
-
disabled = false;
|
|
30
|
-
statusToggled = new EventEmitter();
|
|
31
|
-
editRequested = new EventEmitter();
|
|
32
|
-
deleteRequested = new EventEmitter();
|
|
33
|
-
onToggleStatus() {
|
|
34
|
-
this.statusToggled.emit(this.task);
|
|
35
|
-
}
|
|
36
|
-
onEdit() {
|
|
37
|
-
this.editRequested.emit(this.task);
|
|
38
|
-
}
|
|
39
|
-
onDelete() {
|
|
40
|
-
this.deleteRequested.emit(this.task);
|
|
41
|
-
}
|
|
42
|
-
getDueDateStatus() {
|
|
43
|
-
if (!this.task.DueAt) {
|
|
44
|
-
return 'none';
|
|
45
|
-
}
|
|
46
|
-
if (this.task.Status === 'Complete') {
|
|
47
|
-
return 'completed';
|
|
48
|
-
}
|
|
49
|
-
const now = new Date();
|
|
50
|
-
const dueDate = new Date(this.task.DueAt);
|
|
51
|
-
const diffMs = dueDate.getTime() - now.getTime();
|
|
52
|
-
const diffHours = diffMs / (1000 * 60 * 60);
|
|
53
|
-
if (diffMs < 0) {
|
|
54
|
-
return 'overdue';
|
|
55
|
-
}
|
|
56
|
-
else if (diffHours < 24) {
|
|
57
|
-
return 'due-soon';
|
|
58
|
-
}
|
|
59
|
-
else {
|
|
60
|
-
return 'future';
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
getDueDateIcon() {
|
|
64
|
-
const status = this.getDueDateStatus();
|
|
65
|
-
switch (status) {
|
|
66
|
-
case 'overdue':
|
|
67
|
-
return 'fa-solid fa-exclamation-circle';
|
|
68
|
-
case 'due-soon':
|
|
69
|
-
return 'fa-solid fa-clock';
|
|
70
|
-
case 'future':
|
|
71
|
-
return 'fa-solid fa-calendar-check';
|
|
72
|
-
case 'completed':
|
|
73
|
-
return 'fa-solid fa-check-circle';
|
|
74
|
-
default:
|
|
75
|
-
return 'fa-solid fa-calendar';
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
getRelativeDueDate() {
|
|
79
|
-
if (!this.task.DueAt) {
|
|
80
|
-
return '';
|
|
81
|
-
}
|
|
82
|
-
const now = new Date();
|
|
83
|
-
const dueDate = new Date(this.task.DueAt);
|
|
84
|
-
const diffMs = dueDate.getTime() - now.getTime();
|
|
85
|
-
const diffDays = Math.floor(diffMs / (1000 * 60 * 60 * 24));
|
|
86
|
-
const diffHours = Math.floor(diffMs / (1000 * 60 * 60));
|
|
87
|
-
if (this.task.Status === 'Complete') {
|
|
88
|
-
return 'Completed';
|
|
89
|
-
}
|
|
90
|
-
if (diffMs < 0) {
|
|
91
|
-
const absDays = Math.abs(diffDays);
|
|
92
|
-
if (absDays === 0) {
|
|
93
|
-
return 'Overdue (today)';
|
|
94
|
-
}
|
|
95
|
-
else if (absDays === 1) {
|
|
96
|
-
return 'Overdue by 1 day';
|
|
97
|
-
}
|
|
98
|
-
else {
|
|
99
|
-
return `Overdue by ${absDays} days`;
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
else if (diffHours < 1) {
|
|
103
|
-
const diffMinutes = Math.floor(diffMs / (1000 * 60));
|
|
104
|
-
return `Due in ${diffMinutes} min`;
|
|
105
|
-
}
|
|
106
|
-
else if (diffHours < 24) {
|
|
107
|
-
return `Due in ${diffHours} hours`;
|
|
108
|
-
}
|
|
109
|
-
else if (diffDays === 0) {
|
|
110
|
-
return 'Due today';
|
|
111
|
-
}
|
|
112
|
-
else if (diffDays === 1) {
|
|
113
|
-
return 'Due tomorrow';
|
|
114
|
-
}
|
|
115
|
-
else if (diffDays < 7) {
|
|
116
|
-
return `Due in ${diffDays} days`;
|
|
117
|
-
}
|
|
118
|
-
else {
|
|
119
|
-
const weeks = Math.floor(diffDays / 7);
|
|
120
|
-
if (weeks === 1) {
|
|
121
|
-
return 'Due in 1 week';
|
|
122
|
-
}
|
|
123
|
-
else {
|
|
124
|
-
return `Due in ${weeks} weeks`;
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
getDueDateTooltip() {
|
|
129
|
-
if (!this.task.DueAt) {
|
|
130
|
-
return '';
|
|
131
|
-
}
|
|
132
|
-
const dueDate = new Date(this.task.DueAt);
|
|
133
|
-
return dueDate.toLocaleString('en-US', {
|
|
134
|
-
weekday: 'long',
|
|
135
|
-
year: 'numeric',
|
|
136
|
-
month: 'long',
|
|
137
|
-
day: 'numeric',
|
|
138
|
-
hour: '2-digit',
|
|
139
|
-
minute: '2-digit'
|
|
140
|
-
});
|
|
141
|
-
}
|
|
142
|
-
static ɵfac = function TaskItemComponent_Factory(t) { return new (t || TaskItemComponent)(); };
|
|
143
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TaskItemComponent, selectors: [["mj-task-item"]], inputs: { task: "task", disabled: "disabled" }, outputs: { statusToggled: "statusToggled", editRequested: "editRequested", deleteRequested: "deleteRequested" }, decls: 16, vars: 10, consts: [[1, "task-item"], [1, "task-checkbox"], ["type", "checkbox", 3, "change", "checked", "disabled"], [1, "task-content"], [1, "task-title"], [1, "task-meta"], [1, "task-status-badge"], [1, "task-due", 3, "class", "title"], [1, "task-percent"], [1, "task-actions"], ["title", "Edit Task", 1, "task-action-btn", 3, "click"], [1, "fa-solid", "fa-edit"], ["title", "Delete Task", 1, "task-action-btn", 3, "click"], [1, "fa-solid", "fa-trash"], [1, "task-due", 3, "title"], [1, "due-date-text"]], template: function TaskItemComponent_Template(rf, ctx) { if (rf & 1) {
|
|
144
|
-
i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "input", 2);
|
|
145
|
-
i0.ɵɵlistener("change", function TaskItemComponent_Template_input_change_2_listener() { return ctx.onToggleStatus(); });
|
|
146
|
-
i0.ɵɵelementEnd()();
|
|
147
|
-
i0.ɵɵelementStart(3, "div", 3)(4, "div", 4);
|
|
148
|
-
i0.ɵɵtext(5);
|
|
149
|
-
i0.ɵɵelementEnd();
|
|
150
|
-
i0.ɵɵelementStart(6, "div", 5)(7, "span", 6);
|
|
151
|
-
i0.ɵɵtext(8);
|
|
152
|
-
i0.ɵɵelementEnd();
|
|
153
|
-
i0.ɵɵtemplate(9, TaskItemComponent_Conditional_9_Template, 4, 6, "span", 7)(10, TaskItemComponent_Conditional_10_Template, 2, 1, "span", 8);
|
|
154
|
-
i0.ɵɵelementEnd()();
|
|
155
|
-
i0.ɵɵelementStart(11, "div", 9)(12, "button", 10);
|
|
156
|
-
i0.ɵɵlistener("click", function TaskItemComponent_Template_button_click_12_listener() { return ctx.onEdit(); });
|
|
157
|
-
i0.ɵɵelement(13, "i", 11);
|
|
158
|
-
i0.ɵɵelementEnd();
|
|
159
|
-
i0.ɵɵelementStart(14, "button", 12);
|
|
160
|
-
i0.ɵɵlistener("click", function TaskItemComponent_Template_button_click_14_listener() { return ctx.onDelete(); });
|
|
161
|
-
i0.ɵɵelement(15, "i", 13);
|
|
162
|
-
i0.ɵɵelementEnd()()();
|
|
163
|
-
} if (rf & 2) {
|
|
164
|
-
i0.ɵɵclassProp("completed", ctx.task.Status === "Complete");
|
|
165
|
-
i0.ɵɵadvance(2);
|
|
166
|
-
i0.ɵɵproperty("checked", ctx.task.Status === "Complete")("disabled", ctx.disabled);
|
|
167
|
-
i0.ɵɵadvance(3);
|
|
168
|
-
i0.ɵɵtextInterpolate(ctx.task.Name);
|
|
169
|
-
i0.ɵɵadvance(2);
|
|
170
|
-
i0.ɵɵclassMap("status-" + ctx.task.Status.toLowerCase().replace(" ", "-"));
|
|
171
|
-
i0.ɵɵadvance();
|
|
172
|
-
i0.ɵɵtextInterpolate1(" ", ctx.task.Status, " ");
|
|
173
|
-
i0.ɵɵadvance();
|
|
174
|
-
i0.ɵɵconditional(ctx.task.DueAt ? 9 : -1);
|
|
175
|
-
i0.ɵɵadvance();
|
|
176
|
-
i0.ɵɵconditional(ctx.task.PercentComplete != null ? 10 : -1);
|
|
177
|
-
} }, styles: [".task-item[_ngcontent-%COMP%] { display: flex; align-items: center; gap: 12px; padding: 12px; border-bottom: 1px solid #E8E8E8; transition: background 150ms ease; }\n .task-item[_ngcontent-%COMP%]:hover { background: #F9F9F9; }\n .task-item.completed[_ngcontent-%COMP%] { opacity: 0.6; }\n .task-item.completed[_ngcontent-%COMP%] .task-title[_ngcontent-%COMP%] { text-decoration: line-through; }\n .task-status-badge[_ngcontent-%COMP%] { padding: 2px 8px; border-radius: 3px; font-weight: 500; font-size: 11px; }\n .status-pending[_ngcontent-%COMP%] { background: #FFF3E0; color: #E65100; }\n .status-in-progress[_ngcontent-%COMP%] { background: #E3F2FD; color: #1976D2; }\n .status-complete[_ngcontent-%COMP%] { background: #E8F5E9; color: #388E3C; }\n .status-cancelled[_ngcontent-%COMP%] { background: #F5F5F5; color: #666; }\n .status-failed[_ngcontent-%COMP%] { background: #FFEBEE; color: #C62828; }\n .status-blocked[_ngcontent-%COMP%] { background: #FFEBEE; color: #D84315; }\n .status-deferred[_ngcontent-%COMP%] { background: #F5F5F5; color: #999; }\n .task-percent[_ngcontent-%COMP%] { color: #0076B6; font-weight: 500; }\n .task-checkbox[_ngcontent-%COMP%] input[_ngcontent-%COMP%] { width: 18px; height: 18px; cursor: pointer; }\n .task-content[_ngcontent-%COMP%] { flex: 1; }\n .task-title[_ngcontent-%COMP%] { font-size: 14px; margin-bottom: 4px; }\n .task-meta[_ngcontent-%COMP%] { display: flex; gap: 12px; font-size: 12px; color: #666; align-items: center; }\n .task-due[_ngcontent-%COMP%] { display: flex; align-items: center; gap: 4px; padding: 2px 8px; border-radius: 3px; font-weight: 500; }\n .task-due[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { font-size: 11px; }\n .due-date-text[_ngcontent-%COMP%] { font-size: 11px; }\n\n \n\n .due-overdue[_ngcontent-%COMP%] { background: #FFEBEE; color: #C62828; }\n .due-due-soon[_ngcontent-%COMP%] { background: #FFF3E0; color: #E65100; }\n .due-future[_ngcontent-%COMP%] { background: #E8F5E9; color: #388E3C; }\n .due-completed[_ngcontent-%COMP%] { background: #F5F5F5; color: #757575; }\n\n .task-actions[_ngcontent-%COMP%] { display: none; gap: 4px; }\n .task-item[_ngcontent-%COMP%]:hover .task-actions[_ngcontent-%COMP%] { display: flex; }\n .task-action-btn[_ngcontent-%COMP%] { padding: 6px; background: transparent; border: none; cursor: pointer; border-radius: 3px; color: #666; }\n .task-action-btn[_ngcontent-%COMP%]:hover { background: rgba(0,0,0,0.1); }"] });
|
|
178
|
-
}
|
|
179
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TaskItemComponent, [{
|
|
180
|
-
type: Component,
|
|
181
|
-
args: [{ selector: 'mj-task-item', template: `
|
|
182
|
-
<div class="task-item" [class.completed]="task.Status === 'Complete'">
|
|
183
|
-
<div class="task-checkbox">
|
|
184
|
-
<input
|
|
185
|
-
type="checkbox"
|
|
186
|
-
[checked]="task.Status === 'Complete'"
|
|
187
|
-
(change)="onToggleStatus()"
|
|
188
|
-
[disabled]="disabled">
|
|
189
|
-
</div>
|
|
190
|
-
<div class="task-content">
|
|
191
|
-
<div class="task-title">{{ task.Name }}</div>
|
|
192
|
-
<div class="task-meta">
|
|
193
|
-
<span class="task-status-badge" [class]="'status-' + task.Status.toLowerCase().replace(' ', '-')">
|
|
194
|
-
{{ task.Status }}
|
|
195
|
-
</span>
|
|
196
|
-
@if (task.DueAt) {
|
|
197
|
-
<span
|
|
198
|
-
class="task-due"
|
|
199
|
-
[class]="'due-' + getDueDateStatus()"
|
|
200
|
-
[title]="getDueDateTooltip()">
|
|
201
|
-
<i [class]="getDueDateIcon()"></i>
|
|
202
|
-
<span class="due-date-text">{{ getRelativeDueDate() }}</span>
|
|
203
|
-
</span>
|
|
204
|
-
}
|
|
205
|
-
@if (task.PercentComplete != null) {
|
|
206
|
-
<span class="task-percent">
|
|
207
|
-
{{ task.PercentComplete }}%
|
|
208
|
-
</span>
|
|
209
|
-
}
|
|
210
|
-
</div>
|
|
211
|
-
</div>
|
|
212
|
-
<div class="task-actions">
|
|
213
|
-
<button class="task-action-btn" (click)="onEdit()" title="Edit Task">
|
|
214
|
-
<i class="fa-solid fa-edit"></i>
|
|
215
|
-
</button>
|
|
216
|
-
<button class="task-action-btn" (click)="onDelete()" title="Delete Task">
|
|
217
|
-
<i class="fa-solid fa-trash"></i>
|
|
218
|
-
</button>
|
|
219
|
-
</div>
|
|
220
|
-
</div>
|
|
221
|
-
`, styles: ["\n .task-item { display: flex; align-items: center; gap: 12px; padding: 12px; border-bottom: 1px solid #E8E8E8; transition: background 150ms ease; }\n .task-item:hover { background: #F9F9F9; }\n .task-item.completed { opacity: 0.6; }\n .task-item.completed .task-title { text-decoration: line-through; }\n .task-status-badge { padding: 2px 8px; border-radius: 3px; font-weight: 500; font-size: 11px; }\n .status-pending { background: #FFF3E0; color: #E65100; }\n .status-in-progress { background: #E3F2FD; color: #1976D2; }\n .status-complete { background: #E8F5E9; color: #388E3C; }\n .status-cancelled { background: #F5F5F5; color: #666; }\n .status-failed { background: #FFEBEE; color: #C62828; }\n .status-blocked { background: #FFEBEE; color: #D84315; }\n .status-deferred { background: #F5F5F5; color: #999; }\n .task-percent { color: #0076B6; font-weight: 500; }\n .task-checkbox input { width: 18px; height: 18px; cursor: pointer; }\n .task-content { flex: 1; }\n .task-title { font-size: 14px; margin-bottom: 4px; }\n .task-meta { display: flex; gap: 12px; font-size: 12px; color: #666; align-items: center; }\n .task-due { display: flex; align-items: center; gap: 4px; padding: 2px 8px; border-radius: 3px; font-weight: 500; }\n .task-due i { font-size: 11px; }\n .due-date-text { font-size: 11px; }\n\n /* Due date status colors */\n .due-overdue { background: #FFEBEE; color: #C62828; }\n .due-due-soon { background: #FFF3E0; color: #E65100; }\n .due-future { background: #E8F5E9; color: #388E3C; }\n .due-completed { background: #F5F5F5; color: #757575; }\n\n .task-actions { display: none; gap: 4px; }\n .task-item:hover .task-actions { display: flex; }\n .task-action-btn { padding: 6px; background: transparent; border: none; cursor: pointer; border-radius: 3px; color: #666; }\n .task-action-btn:hover { background: rgba(0,0,0,0.1); }\n "] }]
|
|
222
|
-
}], null, { task: [{
|
|
223
|
-
type: Input
|
|
224
|
-
}], disabled: [{
|
|
225
|
-
type: Input
|
|
226
|
-
}], statusToggled: [{
|
|
227
|
-
type: Output
|
|
228
|
-
}], editRequested: [{
|
|
229
|
-
type: Output
|
|
230
|
-
}], deleteRequested: [{
|
|
231
|
-
type: Output
|
|
232
|
-
}] }); })();
|
|
233
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TaskItemComponent, { className: "TaskItemComponent", filePath: "src/lib/components/task/task-item.component.ts", lineNumber: 83 }); })();
|
|
234
|
-
//# sourceMappingURL=task-item.component.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"task-item.component.js","sourceRoot":"","sources":["../../../../src/lib/components/task/task-item.component.ts"],"names":[],"mappings":"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"}
|