@flusys/ng-task-manager 9.1.0-rc.1 → 9.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/fesm2022/flusys-ng-task-manager-board-list-page.component-Dmay3IyF.mjs +784 -0
- package/fesm2022/flusys-ng-task-manager-board-list-page.component-Dmay3IyF.mjs.map +1 -0
- package/fesm2022/flusys-ng-task-manager-board-view-page.component-CkC8-UKF.mjs +2345 -0
- package/fesm2022/flusys-ng-task-manager-board-view-page.component-CkC8-UKF.mjs.map +1 -0
- package/fesm2022/flusys-ng-task-manager.mjs +1693 -3338
- package/fesm2022/flusys-ng-task-manager.mjs.map +1 -1
- package/package.json +4 -4
- package/types/flusys-ng-task-manager.d.ts +516 -580
|
@@ -1,42 +1,231 @@
|
|
|
1
|
-
import { ApiResourceService, IListResponse,
|
|
2
|
-
import * as
|
|
3
|
-
import
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
1
|
+
import { ApiResourceService, IListResponse, IMessageResponse, ISingleResponse } from "@flusys/ng-shared";
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import { Routes } from "@angular/router";
|
|
4
|
+
export type BoardMemberRole = 'OWNER' | 'ADMIN' | 'MEMBER' | 'VIEWER';
|
|
5
|
+
export type TaskPriority = 'LOW' | 'MEDIUM' | 'HIGH' | 'URGENT';
|
|
6
|
+
export interface ITaskAssignee {
|
|
7
|
+
userId: string;
|
|
8
|
+
userName: string | null;
|
|
9
|
+
}
|
|
10
|
+
export interface ITaskBoard {
|
|
11
|
+
id: string;
|
|
12
|
+
name: string;
|
|
13
|
+
description: string | null;
|
|
14
|
+
color: string;
|
|
15
|
+
isActive: boolean;
|
|
16
|
+
settings: Record<string, unknown> | null;
|
|
17
|
+
companyId?: string | null;
|
|
18
|
+
createdById: string | null;
|
|
19
|
+
createdAt: Date;
|
|
20
|
+
updatedAt: Date;
|
|
21
|
+
totalMembers?: number;
|
|
22
|
+
totalLists?: number;
|
|
23
|
+
totalTasks?: number;
|
|
24
|
+
}
|
|
25
|
+
export interface ITaskBoardMember {
|
|
26
|
+
id: string;
|
|
27
|
+
boardId: string;
|
|
28
|
+
userId: string;
|
|
29
|
+
role: BoardMemberRole;
|
|
30
|
+
userName?: string | null;
|
|
31
|
+
userEmail?: string | null;
|
|
32
|
+
createdAt: Date;
|
|
33
|
+
}
|
|
34
|
+
export interface ITaskList {
|
|
35
|
+
id: string;
|
|
36
|
+
boardId: string;
|
|
37
|
+
name: string;
|
|
38
|
+
color: string;
|
|
39
|
+
position: number;
|
|
40
|
+
isActive: boolean;
|
|
41
|
+
isDoneList: boolean;
|
|
42
|
+
createdAt: Date;
|
|
43
|
+
updatedAt: Date;
|
|
44
|
+
tasks?: ITask[];
|
|
45
|
+
}
|
|
46
|
+
export interface ITaskLabel {
|
|
47
|
+
id: string;
|
|
48
|
+
boardId: string;
|
|
49
|
+
name: string;
|
|
50
|
+
color: string;
|
|
51
|
+
createdAt: Date;
|
|
52
|
+
}
|
|
53
|
+
export interface ITask {
|
|
54
|
+
id: string;
|
|
55
|
+
boardId: string;
|
|
56
|
+
listId: string;
|
|
57
|
+
title: string;
|
|
58
|
+
description: string | null;
|
|
59
|
+
priority: TaskPriority;
|
|
60
|
+
dueDate: string | null;
|
|
61
|
+
position: number;
|
|
62
|
+
assignees?: ITaskAssignee[];
|
|
63
|
+
reporterId: string | null;
|
|
64
|
+
parentTaskId: string | null;
|
|
65
|
+
estimatedHours: number | null;
|
|
66
|
+
createdById: string | null;
|
|
67
|
+
createdAt: Date;
|
|
68
|
+
updatedAt: Date;
|
|
69
|
+
labelIds?: string[];
|
|
70
|
+
labels?: ITaskLabel[];
|
|
71
|
+
}
|
|
72
|
+
export interface ITaskComment {
|
|
73
|
+
id: string;
|
|
74
|
+
taskId: string;
|
|
75
|
+
userId: string;
|
|
76
|
+
content: string;
|
|
77
|
+
parentCommentId: string | null;
|
|
78
|
+
createdAt: Date;
|
|
79
|
+
updatedAt: Date;
|
|
80
|
+
}
|
|
81
|
+
export interface ITaskActivity {
|
|
82
|
+
id: string;
|
|
83
|
+
taskId: string;
|
|
84
|
+
userId: string | null;
|
|
85
|
+
boardId: string;
|
|
86
|
+
action: string;
|
|
87
|
+
oldValue: Record<string, unknown> | null;
|
|
88
|
+
newValue: Record<string, unknown> | null;
|
|
89
|
+
createdAt: Date;
|
|
90
|
+
}
|
|
91
|
+
export interface IBoardSocketEvent {
|
|
92
|
+
type: 'task:created' | 'task:updated' | 'task:deleted' | 'task:moved' | 'list:created' | 'list:updated' | 'list:deleted' | 'list:reordered';
|
|
93
|
+
boardId: string;
|
|
94
|
+
payload: unknown;
|
|
95
|
+
}
|
|
96
|
+
export interface ICreateTaskBoardDto {
|
|
97
|
+
name: string;
|
|
98
|
+
description?: string;
|
|
99
|
+
color?: string;
|
|
100
|
+
memberIds?: string[];
|
|
101
|
+
}
|
|
102
|
+
export interface IUpdateTaskBoardDto extends Partial<ICreateTaskBoardDto> {
|
|
103
|
+
id?: string;
|
|
104
|
+
isActive?: boolean;
|
|
105
|
+
}
|
|
106
|
+
export interface ICreateTaskListDto {
|
|
107
|
+
boardId: string;
|
|
108
|
+
name: string;
|
|
109
|
+
color?: string;
|
|
110
|
+
position?: number;
|
|
111
|
+
isDoneList?: boolean;
|
|
112
|
+
}
|
|
113
|
+
export interface IUpdateTaskListDto extends Partial<ICreateTaskListDto> {
|
|
114
|
+
id: string;
|
|
115
|
+
isActive?: boolean;
|
|
116
|
+
}
|
|
117
|
+
export interface ICreateTaskDto {
|
|
118
|
+
boardId: string;
|
|
119
|
+
listId: string;
|
|
120
|
+
title: string;
|
|
121
|
+
description?: string;
|
|
122
|
+
priority?: TaskPriority;
|
|
123
|
+
dueDate?: string | null;
|
|
124
|
+
assigneeIds?: string[];
|
|
125
|
+
parentTaskId?: string | null;
|
|
126
|
+
estimatedHours?: number | null;
|
|
127
|
+
labelIds?: string[];
|
|
128
|
+
}
|
|
129
|
+
export interface IUpdateTaskDto extends Partial<ICreateTaskDto> {
|
|
130
|
+
id?: string;
|
|
131
|
+
}
|
|
132
|
+
export interface IMoveTaskDto {
|
|
133
|
+
taskId: string;
|
|
134
|
+
targetListId: string;
|
|
135
|
+
position?: number;
|
|
136
|
+
}
|
|
137
|
+
export interface IAssignTaskDto {
|
|
138
|
+
taskId: string;
|
|
139
|
+
assigneeIds: string[];
|
|
140
|
+
}
|
|
141
|
+
export interface ICreateTaskLabelDto {
|
|
142
|
+
boardId: string;
|
|
143
|
+
name: string;
|
|
144
|
+
color?: string;
|
|
145
|
+
}
|
|
146
|
+
export interface IReorderTaskListsDto {
|
|
147
|
+
boardId: string;
|
|
148
|
+
orderedIds: string[];
|
|
149
|
+
}
|
|
150
|
+
export interface ICreateTaskCommentDto {
|
|
151
|
+
taskId: string;
|
|
152
|
+
content: string;
|
|
153
|
+
parentCommentId?: string;
|
|
154
|
+
}
|
|
155
|
+
export declare class TaskBoardApiService extends ApiResourceService<IUpdateTaskBoardDto, ITaskBoard> {
|
|
156
|
+
constructor();
|
|
157
|
+
getMembers(boardId: string): Promise<IListResponse<ITaskBoardMember>>;
|
|
158
|
+
addMember(boardId: string, userId: string, role?: string): Promise<ISingleResponse<ITaskBoardMember>>;
|
|
159
|
+
removeMember(boardId: string, userId: string): Promise<IMessageResponse>;
|
|
160
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TaskBoardApiService, never>;
|
|
161
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<any>;
|
|
162
|
+
}
|
|
163
|
+
export declare class TaskApiService extends ApiResourceService<IUpdateTaskDto, ITask> {
|
|
164
|
+
constructor();
|
|
165
|
+
moveTask(dto: IMoveTaskDto): Promise<ISingleResponse<ITask>>;
|
|
166
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TaskApiService, never>;
|
|
167
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<any>;
|
|
168
|
+
}
|
|
169
|
+
export declare class TaskListApiService extends ApiResourceService<ICreateTaskListDto, ITaskList> {
|
|
170
|
+
constructor();
|
|
171
|
+
updateList(dto: IUpdateTaskListDto): Promise<ISingleResponse<ITaskList>>;
|
|
172
|
+
reorderLists(dto: IReorderTaskListsDto): Promise<IMessageResponse>;
|
|
173
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TaskListApiService, never>;
|
|
174
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<any>;
|
|
175
|
+
}
|
|
176
|
+
export declare class TaskLabelApiService extends ApiResourceService<ICreateTaskLabelDto, ITaskLabel> {
|
|
177
|
+
constructor();
|
|
178
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TaskLabelApiService, never>;
|
|
179
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<any>;
|
|
180
|
+
}
|
|
181
|
+
export declare class TaskCommentApiService extends ApiResourceService<ICreateTaskCommentDto, ITaskComment> {
|
|
182
|
+
constructor();
|
|
183
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TaskCommentApiService, never>;
|
|
184
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<any>;
|
|
185
|
+
}
|
|
186
|
+
export declare class TaskBoardSocketService {
|
|
187
|
+
private socket;
|
|
188
|
+
private readonly appConfig;
|
|
189
|
+
private readonly _isConnected;
|
|
190
|
+
readonly isConnected: import("@angular/core").Signal<boolean>;
|
|
191
|
+
private readonly boardEvent$;
|
|
192
|
+
readonly onBoardEvent: import("rxjs").Observable<IBoardSocketEvent>;
|
|
193
|
+
connect(accessToken: string): void;
|
|
194
|
+
joinBoard(boardId: string): void;
|
|
195
|
+
leaveBoard(boardId: string): void;
|
|
196
|
+
disconnect(): void;
|
|
197
|
+
private getBaseUrl;
|
|
198
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TaskBoardSocketService, never>;
|
|
199
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<any>;
|
|
200
|
+
}
|
|
201
|
+
export declare class TaskBoardStateService {
|
|
202
|
+
private readonly boardApi;
|
|
203
|
+
private readonly taskApi;
|
|
204
|
+
private readonly listApi;
|
|
205
|
+
private readonly labelApi;
|
|
206
|
+
private readonly socketService;
|
|
207
|
+
private readonly destroyRef;
|
|
208
|
+
private readonly _boards;
|
|
209
|
+
private readonly _activeBoard;
|
|
210
|
+
private readonly _lists;
|
|
211
|
+
private readonly _tasks;
|
|
212
|
+
private readonly _labels;
|
|
213
|
+
private readonly _members;
|
|
214
|
+
private readonly _selectedTask;
|
|
215
|
+
private readonly _isLoading;
|
|
216
|
+
private readonly _isBoardLoading;
|
|
217
|
+
readonly boards: import("@angular/core").Signal<ITaskBoard[]>;
|
|
218
|
+
readonly activeBoard: import("@angular/core").Signal<ITaskBoard | null>;
|
|
219
|
+
readonly lists: import("@angular/core").Signal<ITaskList[]>;
|
|
220
|
+
readonly tasks: import("@angular/core").Signal<ITask[]>;
|
|
221
|
+
readonly labels: import("@angular/core").Signal<ITaskLabel[]>;
|
|
222
|
+
readonly members: import("@angular/core").Signal<ITaskBoardMember[]>;
|
|
223
|
+
readonly selectedTask: import("@angular/core").Signal<ITask | null>;
|
|
224
|
+
readonly isLoading: import("@angular/core").Signal<boolean>;
|
|
225
|
+
readonly isBoardLoading: import("@angular/core").Signal<boolean>;
|
|
226
|
+
readonly tasksByList: import("@angular/core").Signal<Map<string, ITask[]>>;
|
|
227
|
+
readonly listsWithTasks: import("@angular/core").Signal<{
|
|
228
|
+
tasks: ITask[];
|
|
40
229
|
id: string;
|
|
41
230
|
boardId: string;
|
|
42
231
|
name: string;
|
|
@@ -46,547 +235,294 @@ interface ITaskList {
|
|
|
46
235
|
isDoneList: boolean;
|
|
47
236
|
createdAt: Date;
|
|
48
237
|
updatedAt: Date;
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
238
|
+
}[]>;
|
|
239
|
+
readonly hasActiveBoard: import("@angular/core").Signal<boolean>;
|
|
240
|
+
readonly isSocketConnected: import("@angular/core").Signal<boolean>;
|
|
241
|
+
constructor();
|
|
242
|
+
loadBoards(): Promise<void>;
|
|
243
|
+
openBoard(boardId: string): Promise<void>;
|
|
244
|
+
closeBoard(): void;
|
|
245
|
+
selectTask(task: ITask | null): void;
|
|
246
|
+
addLabel(boardId: string, name: string, color: string): Promise<void>;
|
|
247
|
+
deleteLabel(labelId: string): Promise<void>;
|
|
248
|
+
addMember(userId: string, role?: string): Promise<void>;
|
|
249
|
+
removeMember(userId: string): Promise<void>;
|
|
250
|
+
reorderLists(boardId: string, orderedIds: string[]): Promise<void>;
|
|
251
|
+
renameList(listId: string, name: string): Promise<void>;
|
|
252
|
+
updateBoard(dto: IUpdateTaskBoardDto): Promise<void>;
|
|
253
|
+
addTaskOptimistic(task: ITask): void;
|
|
254
|
+
deleteTask(taskId: string): Promise<void>;
|
|
255
|
+
private handleBoardEvent;
|
|
256
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TaskBoardStateService, never>;
|
|
257
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<any>;
|
|
258
|
+
}
|
|
259
|
+
export declare const MEMBER_COLOR_PALETTE: string[];
|
|
260
|
+
export declare const BOARD_COLOR_PALETTE: string[];
|
|
261
|
+
export declare function taskPrioritySeverity(priority: string): 'success' | 'info' | 'warn' | 'danger' | 'secondary';
|
|
262
|
+
export declare function memberInitials(name: string | null | undefined): string;
|
|
263
|
+
export declare function isTaskOverdue(dueDate: string): boolean;
|
|
264
|
+
export declare function memberColorFromId(userId: string): string;
|
|
265
|
+
export declare class TaskCardComponent {
|
|
266
|
+
readonly task: import("@angular/core").InputSignal<ITask>;
|
|
267
|
+
readonly cardClick: import("@angular/core").OutputEmitterRef<ITask>;
|
|
268
|
+
readonly editClick: import("@angular/core").OutputEmitterRef<ITask>;
|
|
269
|
+
readonly deleteClick: import("@angular/core").OutputEmitterRef<ITask>;
|
|
270
|
+
private readonly MAX_VISIBLE;
|
|
271
|
+
readonly visibleAssignees: import("@angular/core").Signal<import("@flusys/ng-task-manager").ITaskAssignee[]>;
|
|
272
|
+
readonly overflowCount: import("@angular/core").Signal<number>;
|
|
273
|
+
protected readonly prioritySeverity: typeof taskPrioritySeverity;
|
|
274
|
+
protected readonly initials: typeof memberInitials;
|
|
275
|
+
protected readonly isOverdue: typeof isTaskOverdue;
|
|
276
|
+
protected readonly memberColor: typeof memberColorFromId;
|
|
277
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TaskCardComponent, never>;
|
|
278
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<TaskCardComponent, "tm-task-card", never, {
|
|
279
|
+
"task": {
|
|
280
|
+
"alias": "task";
|
|
281
|
+
"required": true;
|
|
282
|
+
"isSignal": true;
|
|
283
|
+
};
|
|
284
|
+
}, {
|
|
285
|
+
"cardClick": "cardClick";
|
|
286
|
+
"editClick": "editClick";
|
|
287
|
+
"deleteClick": "deleteClick";
|
|
288
|
+
}, never, never, true, never>;
|
|
289
|
+
}
|
|
290
|
+
export declare class TaskFormDialogComponent {
|
|
291
|
+
private readonly taskApi;
|
|
292
|
+
readonly visible: import("@angular/core").ModelSignal<boolean>;
|
|
293
|
+
readonly task: import("@angular/core").InputSignal<ITask | null>;
|
|
294
|
+
readonly boardId: import("@angular/core").InputSignal<string>;
|
|
295
|
+
readonly listId: import("@angular/core").InputSignal<string>;
|
|
296
|
+
readonly members: import("@angular/core").InputSignal<ITaskBoardMember[]>;
|
|
297
|
+
readonly labels: import("@angular/core").InputSignal<ITaskLabel[]>;
|
|
298
|
+
readonly saved: import("@angular/core").OutputEmitterRef<ITask>;
|
|
299
|
+
readonly isSaving: import("@angular/core").WritableSignal<boolean>;
|
|
300
|
+
readonly priorityOptions: {
|
|
301
|
+
labelKey: string;
|
|
302
|
+
value: string;
|
|
303
|
+
}[];
|
|
304
|
+
readonly formModel: import("@angular/core").WritableSignal<{
|
|
62
305
|
title: string;
|
|
63
|
-
description: string
|
|
306
|
+
description: string;
|
|
64
307
|
priority: TaskPriority;
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
assignees?: ITaskAssignee[];
|
|
68
|
-
reporterId: string | null;
|
|
69
|
-
parentTaskId: string | null;
|
|
70
|
-
estimatedHours: number | null;
|
|
71
|
-
createdById: string | null;
|
|
72
|
-
createdAt: Date;
|
|
73
|
-
updatedAt: Date;
|
|
74
|
-
labelIds?: string[];
|
|
75
|
-
labels?: ITaskLabel[];
|
|
76
|
-
}
|
|
77
|
-
interface ITaskComment {
|
|
78
|
-
id: string;
|
|
79
|
-
taskId: string;
|
|
80
|
-
userId: string;
|
|
81
|
-
content: string;
|
|
82
|
-
parentCommentId: string | null;
|
|
83
|
-
createdAt: Date;
|
|
84
|
-
updatedAt: Date;
|
|
85
|
-
}
|
|
86
|
-
interface ITaskActivity {
|
|
87
|
-
id: string;
|
|
88
|
-
taskId: string;
|
|
89
|
-
userId: string | null;
|
|
90
|
-
boardId: string;
|
|
91
|
-
action: string;
|
|
92
|
-
oldValue: Record<string, unknown> | null;
|
|
93
|
-
newValue: Record<string, unknown> | null;
|
|
94
|
-
createdAt: Date;
|
|
95
|
-
}
|
|
96
|
-
interface IBoardSocketEvent {
|
|
97
|
-
type: 'task:created' | 'task:updated' | 'task:deleted' | 'task:moved' | 'list:created' | 'list:updated' | 'list:deleted' | 'list:reordered';
|
|
98
|
-
boardId: string;
|
|
99
|
-
payload: unknown;
|
|
100
|
-
}
|
|
101
|
-
interface ICreateTaskBoardDto {
|
|
102
|
-
name: string;
|
|
103
|
-
description?: string;
|
|
104
|
-
color?: string;
|
|
105
|
-
memberIds?: string[];
|
|
106
|
-
}
|
|
107
|
-
interface IUpdateTaskBoardDto extends Partial<ICreateTaskBoardDto> {
|
|
108
|
-
id?: string;
|
|
109
|
-
isActive?: boolean;
|
|
110
|
-
}
|
|
111
|
-
interface ICreateTaskListDto {
|
|
112
|
-
boardId: string;
|
|
113
|
-
name: string;
|
|
114
|
-
color?: string;
|
|
115
|
-
position?: number;
|
|
116
|
-
isDoneList?: boolean;
|
|
117
|
-
}
|
|
118
|
-
interface IUpdateTaskListDto extends Partial<ICreateTaskListDto> {
|
|
119
|
-
id: string;
|
|
120
|
-
isActive?: boolean;
|
|
121
|
-
}
|
|
122
|
-
interface ICreateTaskDto {
|
|
123
|
-
boardId: string;
|
|
124
|
-
listId: string;
|
|
308
|
+
}>;
|
|
309
|
+
readonly taskForm: import("@angular/forms/signals").FieldTree<{
|
|
125
310
|
title: string;
|
|
126
|
-
description
|
|
127
|
-
priority
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
declare
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
toggleReply(commentId: string): void;
|
|
345
|
-
cancelReply(): void;
|
|
346
|
-
deleteTask(taskId: string): Promise<void>;
|
|
347
|
-
protected readonly prioritySeverity: typeof taskPrioritySeverity;
|
|
348
|
-
protected readonly initials: typeof memberInitials;
|
|
349
|
-
private loadComments;
|
|
350
|
-
addComment(taskId: string): Promise<void>;
|
|
351
|
-
submitReply(taskId: string, parentCommentId: string): Promise<void>;
|
|
352
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TaskDetailPanelComponent, never>;
|
|
353
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TaskDetailPanelComponent, "tm-task-detail-panel", never, { "task": { "alias": "task"; "required": false; "isSignal": true; }; }, { "closePanel": "closePanel"; "editTask": "editTask"; }, never, never, true, never>;
|
|
354
|
-
}
|
|
355
|
-
|
|
356
|
-
declare class BoardListPageComponent {
|
|
357
|
-
protected readonly state: TaskBoardStateService;
|
|
358
|
-
private readonly boardApi;
|
|
359
|
-
private readonly router;
|
|
360
|
-
readonly showCreateDialog: _angular_core.WritableSignal<boolean>;
|
|
361
|
-
readonly isCreating: _angular_core.WritableSignal<boolean>;
|
|
362
|
-
newBoardName: string;
|
|
363
|
-
newBoardDescription: string;
|
|
364
|
-
newBoardColor: string;
|
|
365
|
-
readonly boardColors: string[];
|
|
366
|
-
private readonly _searchTerm;
|
|
367
|
-
readonly searchTerm: _angular_core.Signal<string>;
|
|
368
|
-
readonly filteredBoards: _angular_core.Signal<_flusys_ng_task_manager.ITaskBoard[]>;
|
|
369
|
-
constructor();
|
|
370
|
-
onSearchChange(term: string): void;
|
|
371
|
-
openBoard(boardId: string): void;
|
|
372
|
-
closeCreateDialog(): void;
|
|
373
|
-
createBoard(): Promise<void>;
|
|
374
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<BoardListPageComponent, never>;
|
|
375
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<BoardListPageComponent, "tm-board-list-page", never, {}, {}, never, never, true, never>;
|
|
376
|
-
}
|
|
377
|
-
|
|
378
|
-
type ViewMode = 'board' | 'list';
|
|
379
|
-
type ITaskListWithTasks = ITaskList & {
|
|
380
|
-
tasks: ITask[];
|
|
381
|
-
};
|
|
382
|
-
interface ITaskRow extends ITask {
|
|
383
|
-
listName: string;
|
|
384
|
-
listColor: string;
|
|
385
|
-
}
|
|
386
|
-
declare class BoardViewPageComponent {
|
|
387
|
-
protected readonly state: TaskBoardStateService;
|
|
388
|
-
private readonly taskApi;
|
|
389
|
-
private readonly listApi;
|
|
390
|
-
private readonly confirmationService;
|
|
391
|
-
private readonly messageService;
|
|
392
|
-
private readonly translateAdapter;
|
|
393
|
-
private readonly destroyRef;
|
|
394
|
-
private translate;
|
|
395
|
-
readonly boardId: _angular_core.InputSignal<string>;
|
|
396
|
-
readonly viewMode: _angular_core.WritableSignal<ViewMode>;
|
|
397
|
-
readonly showTaskForm: _angular_core.WritableSignal<boolean>;
|
|
398
|
-
readonly editingTask: _angular_core.WritableSignal<ITask | null>;
|
|
399
|
-
readonly activeListId: _angular_core.WritableSignal<string>;
|
|
400
|
-
readonly showAddListDialog: _angular_core.WritableSignal<boolean>;
|
|
401
|
-
readonly isAddingList: _angular_core.WritableSignal<boolean>;
|
|
402
|
-
readonly showLabelsDialog: _angular_core.WritableSignal<boolean>;
|
|
403
|
-
readonly isAddingLabel: _angular_core.WritableSignal<boolean>;
|
|
404
|
-
readonly showMembersDialog: _angular_core.WritableSignal<boolean>;
|
|
405
|
-
readonly isAddingMember: _angular_core.WritableSignal<boolean>;
|
|
406
|
-
readonly editingListId: _angular_core.WritableSignal<string | null>;
|
|
407
|
-
readonly editingListNameValue: _angular_core.WritableSignal<string>;
|
|
408
|
-
readonly showEditBoardDialog: _angular_core.WritableSignal<boolean>;
|
|
409
|
-
readonly isSavingBoard: _angular_core.WritableSignal<boolean>;
|
|
410
|
-
newListName: string;
|
|
411
|
-
newLabelName: string;
|
|
412
|
-
newLabelColor: string;
|
|
413
|
-
selectedMemberUser: string | null;
|
|
414
|
-
newMemberRole: string;
|
|
415
|
-
editBoardName: string;
|
|
416
|
-
editBoardDescription: string;
|
|
417
|
-
editBoardColor: string;
|
|
418
|
-
readonly boardColorPalette: string[];
|
|
419
|
-
readonly memberRoleOptions: {
|
|
420
|
-
labelKey: string;
|
|
421
|
-
value: string;
|
|
422
|
-
}[];
|
|
423
|
-
readonly allTasksFlat: _angular_core.Signal<ITaskRow[]>;
|
|
424
|
-
readonly listDropIds: _angular_core.Signal<string[]>;
|
|
425
|
-
constructor();
|
|
426
|
-
openAddTask(list: ITaskList): void;
|
|
427
|
-
onTaskSaved(task: ITask): void;
|
|
428
|
-
onDeleteTask(task: ITask): void;
|
|
429
|
-
onEditTask(task: ITask): void;
|
|
430
|
-
getMemberName(assigneeId: string): string | null;
|
|
431
|
-
getMemberInitials(assigneeId: string): string;
|
|
432
|
-
memberInitials(member: ITaskBoardMember): string;
|
|
433
|
-
memberColor(member: ITaskBoardMember): string;
|
|
434
|
-
memberColorById(userId: string): string;
|
|
435
|
-
roleBadgeClass(role: string): string;
|
|
436
|
-
protected readonly prioritySeverity: typeof taskPrioritySeverity;
|
|
437
|
-
protected readonly isOverdue: typeof isTaskOverdue;
|
|
438
|
-
onTaskDrop(event: CdkDragDrop<ITask[]>): Promise<void>;
|
|
439
|
-
onListDrop(event: CdkDragDrop<ITaskListWithTasks[]>): Promise<void>;
|
|
440
|
-
startRenameList(list: ITaskList): void;
|
|
441
|
-
cancelRenameList(): void;
|
|
442
|
-
saveRenameList(): Promise<void>;
|
|
443
|
-
openEditBoardDialog(board: ITaskBoard): void;
|
|
444
|
-
saveBoard(): Promise<void>;
|
|
445
|
-
addLabel(): Promise<void>;
|
|
446
|
-
removeLabel(labelId: string): Promise<void>;
|
|
447
|
-
addMember(): Promise<void>;
|
|
448
|
-
resetMemberForm(): void;
|
|
449
|
-
removeMember(userId: string): Promise<void>;
|
|
450
|
-
addList(): Promise<void>;
|
|
451
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<BoardViewPageComponent, never>;
|
|
452
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<BoardViewPageComponent, "tm-board-view-page", never, { "boardId": { "alias": "boardId"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
453
|
-
}
|
|
454
|
-
|
|
455
|
-
declare const TASK_MANAGER_ROUTES: Routes;
|
|
456
|
-
|
|
457
|
-
declare const TASK_MANAGER_MESSAGES: {
|
|
458
|
-
readonly 'task.board.not.found': "Board not found";
|
|
459
|
-
readonly 'task.board.create.success': "Board created successfully";
|
|
460
|
-
readonly 'task.board.create.many.success': "Boards created successfully";
|
|
461
|
-
readonly 'task.board.get.success': "Board retrieved successfully";
|
|
462
|
-
readonly 'task.board.get.all.success': "Boards retrieved successfully";
|
|
463
|
-
readonly 'task.board.update.success': "Board updated successfully";
|
|
464
|
-
readonly 'task.board.update.many.success': "Boards updated successfully";
|
|
465
|
-
readonly 'task.board.delete.success': "Board deleted successfully";
|
|
466
|
-
readonly 'task.board.restore.success': "Board restored successfully";
|
|
467
|
-
readonly 'task.board.member.added': "Member added to board";
|
|
468
|
-
readonly 'task.board.member.removed': "Member removed from board";
|
|
469
|
-
readonly 'task.board.member.not.found': "Board member not found";
|
|
470
|
-
readonly 'task.board.member.already.exists': "User is already a board member";
|
|
471
|
-
readonly 'task.board.member.get.all.success': "Board members retrieved successfully";
|
|
472
|
-
readonly 'task.list.not.found': "List not found";
|
|
473
|
-
readonly 'task.list.create.success': "List created successfully";
|
|
474
|
-
readonly 'task.list.create.many.success': "Lists created successfully";
|
|
475
|
-
readonly 'task.list.get.success': "List retrieved successfully";
|
|
476
|
-
readonly 'task.list.get.all.success': "Lists retrieved successfully";
|
|
477
|
-
readonly 'task.list.update.success': "List updated successfully";
|
|
478
|
-
readonly 'task.list.update.many.success': "Lists updated successfully";
|
|
479
|
-
readonly 'task.list.delete.success': "List deleted successfully";
|
|
480
|
-
readonly 'task.list.restore.success': "List restored successfully";
|
|
481
|
-
readonly 'task.list.reorder.success': "Lists reordered successfully";
|
|
482
|
-
readonly 'task.not.found': "Task not found";
|
|
483
|
-
readonly 'task.create.success': "Task created successfully";
|
|
484
|
-
readonly 'task.create.many.success': "Tasks created successfully";
|
|
485
|
-
readonly 'task.get.success': "Task retrieved successfully";
|
|
486
|
-
readonly 'task.get.all.success': "Tasks retrieved successfully";
|
|
487
|
-
readonly 'task.update.success': "Task updated successfully";
|
|
488
|
-
readonly 'task.update.many.success': "Tasks updated successfully";
|
|
489
|
-
readonly 'task.delete.success': "Task deleted successfully";
|
|
490
|
-
readonly 'task.restore.success': "Task restored successfully";
|
|
491
|
-
readonly 'task.move.success': "Task moved successfully";
|
|
492
|
-
readonly 'task.assign.success': "Task assigned successfully";
|
|
493
|
-
readonly 'task.assignee.not.board.member': "Assignee is not a board member";
|
|
494
|
-
readonly 'task.label.not.found': "Label not found";
|
|
495
|
-
readonly 'task.label.create.success': "Label created successfully";
|
|
496
|
-
readonly 'task.label.create.many.success': "Labels created successfully";
|
|
497
|
-
readonly 'task.label.get.success': "Label retrieved successfully";
|
|
498
|
-
readonly 'task.label.get.all.success': "Labels retrieved successfully";
|
|
499
|
-
readonly 'task.label.update.success': "Label updated successfully";
|
|
500
|
-
readonly 'task.label.update.many.success': "Labels updated successfully";
|
|
501
|
-
readonly 'task.label.delete.success': "Label deleted successfully";
|
|
502
|
-
readonly 'task.label.restore.success': "Label restored successfully";
|
|
503
|
-
readonly 'task.comment.not.found': "Comment not found";
|
|
504
|
-
readonly 'task.comment.create.success': "Comment added successfully";
|
|
505
|
-
readonly 'task.comment.create.many.success': "Comments added successfully";
|
|
506
|
-
readonly 'task.comment.get.success': "Comment retrieved successfully";
|
|
507
|
-
readonly 'task.comment.get.all.success': "Comments retrieved successfully";
|
|
508
|
-
readonly 'task.comment.update.success': "Comment updated successfully";
|
|
509
|
-
readonly 'task.comment.update.many.success': "Comments updated successfully";
|
|
510
|
-
readonly 'task.comment.delete.success': "Comment deleted successfully";
|
|
511
|
-
readonly 'task.comment.restore.success': "Comment restored successfully";
|
|
512
|
-
readonly 'task.comment.forbidden': "Cannot edit another user's comment";
|
|
513
|
-
readonly 'task.manager.boards.title': "Task Boards";
|
|
514
|
-
readonly 'task.manager.boards.subtitle': "Manage and organize your project boards";
|
|
515
|
-
readonly 'task.manager.board.new': "New Board";
|
|
516
|
-
readonly 'task.manager.board.name.placeholder': "e.g. Product Backlog";
|
|
517
|
-
readonly 'task.manager.board.description.placeholder': "Optional description";
|
|
518
|
-
readonly 'task.manager.board.color.label': "Board Color";
|
|
519
|
-
readonly 'task.manager.board.empty': "No boards yet";
|
|
520
|
-
readonly 'task.manager.board.empty.hint': "Create your first board to get started";
|
|
521
|
-
readonly 'task.manager.board.members': "Members";
|
|
522
|
-
readonly 'task.manager.board.lists': "Lists";
|
|
523
|
-
readonly 'task.manager.board.tasks': "Tasks";
|
|
524
|
-
readonly 'task.manager.board.add.list': "Add List";
|
|
525
|
-
readonly 'task.manager.board.add.task': "Add task";
|
|
526
|
-
readonly 'task.manager.board.drop.tasks.here': "Drop tasks here";
|
|
527
|
-
readonly 'task.manager.board.list.empty': "No lists yet. Click \"Add List\" to create one.";
|
|
528
|
-
readonly 'task.manager.list.new': "New List";
|
|
529
|
-
readonly 'task.manager.list.name.label': "List Name";
|
|
530
|
-
readonly 'task.manager.list.name.placeholder': "e.g. In Progress";
|
|
531
|
-
readonly 'task.manager.list.rename': "Rename List";
|
|
532
|
-
readonly 'task.manager.board.manage.members': "Members";
|
|
533
|
-
readonly 'task.manager.member.manage.title': "Manage Members";
|
|
534
|
-
readonly 'task.manager.member.add': "Add Member";
|
|
535
|
-
readonly 'task.manager.member.no.members': "No members yet.";
|
|
536
|
-
readonly 'task.manager.member.user.label': "User";
|
|
537
|
-
readonly 'task.manager.member.user.placeholder': "Search by name or email";
|
|
538
|
-
readonly 'task.manager.member.role.label': "Role";
|
|
539
|
-
readonly 'task.manager.member.role.placeholder': "Select role";
|
|
540
|
-
readonly 'task.manager.member.role.owner': "Owner";
|
|
541
|
-
readonly 'task.manager.member.role.admin': "Admin";
|
|
542
|
-
readonly 'task.manager.member.role.member': "Member";
|
|
543
|
-
readonly 'task.manager.member.role.viewer': "Viewer";
|
|
544
|
-
readonly 'task.manager.board.manage.labels': "Labels";
|
|
545
|
-
readonly 'task.manager.label.manage.title': "Manage Labels";
|
|
546
|
-
readonly 'task.manager.label.name.label': "Label Name";
|
|
547
|
-
readonly 'task.manager.label.name.placeholder': "e.g. Bug, Feature";
|
|
548
|
-
readonly 'task.manager.label.color.label': "Color";
|
|
549
|
-
readonly 'task.manager.label.add': "Add Label";
|
|
550
|
-
readonly 'task.manager.label.no.labels': "No labels yet.";
|
|
551
|
-
readonly 'task.manager.board.edit': "Edit Board";
|
|
552
|
-
readonly 'task.manager.board.name.label': "Board Name";
|
|
553
|
-
readonly 'task.manager.board.description.label': "Description";
|
|
554
|
-
readonly 'task.manager.view.board': "Board";
|
|
555
|
-
readonly 'task.manager.view.list': "List";
|
|
556
|
-
readonly 'task.manager.table.title': "Title";
|
|
557
|
-
readonly 'task.manager.table.list': "List";
|
|
558
|
-
readonly 'task.manager.table.priority': "Priority";
|
|
559
|
-
readonly 'task.manager.table.assignee': "Assignee";
|
|
560
|
-
readonly 'task.manager.table.due.date': "Due Date";
|
|
561
|
-
readonly 'task.manager.table.empty': "No tasks yet.";
|
|
562
|
-
readonly 'task.form.title.create': "New Task";
|
|
563
|
-
readonly 'task.form.title.edit': "Edit Task";
|
|
564
|
-
readonly 'task.form.title.label': "Title";
|
|
565
|
-
readonly 'task.form.title.placeholder': "Task title";
|
|
566
|
-
readonly 'task.form.description.placeholder': "Add a description...";
|
|
567
|
-
readonly 'task.form.priority.label': "Priority";
|
|
568
|
-
readonly 'task.form.priority.placeholder': "Select priority";
|
|
569
|
-
readonly 'task.form.due.date.label': "Due Date";
|
|
570
|
-
readonly 'task.form.due.date.placeholder': "Pick a date";
|
|
571
|
-
readonly 'task.form.assignee.label': "Assignee";
|
|
572
|
-
readonly 'task.form.assignee.placeholder': "Assign to board member";
|
|
573
|
-
readonly 'task.form.labels.label': "Labels";
|
|
574
|
-
readonly 'task.form.labels.placeholder': "Select labels";
|
|
575
|
-
readonly 'task.priority.LOW': "Low";
|
|
576
|
-
readonly 'task.priority.MEDIUM': "Medium";
|
|
577
|
-
readonly 'task.priority.HIGH': "High";
|
|
578
|
-
readonly 'task.priority.URGENT': "Urgent";
|
|
579
|
-
readonly 'task.detail.description.empty': "No description";
|
|
580
|
-
readonly 'task.detail.comments.label': "Comments";
|
|
581
|
-
readonly 'task.detail.comments.empty': "No comments yet";
|
|
582
|
-
readonly 'task.detail.comment.placeholder': "Add a comment...";
|
|
583
|
-
readonly 'task.detail.due.label': "Due";
|
|
584
|
-
readonly 'task.detail.assignees.label': "Assignees";
|
|
585
|
-
readonly 'task.detail.edit': "Edit task";
|
|
586
|
-
readonly 'task.detail.delete': "Delete task";
|
|
587
|
-
readonly 'task.comment.reply': "Reply";
|
|
588
|
-
readonly 'task.comment.reply.placeholder': "Write a reply...";
|
|
589
|
-
};
|
|
590
|
-
|
|
591
|
-
export { BOARD_COLOR_PALETTE, BoardListPageComponent, BoardViewPageComponent, MEMBER_COLOR_PALETTE, TASK_MANAGER_MESSAGES, TASK_MANAGER_ROUTES, TaskApiService, TaskBoardApiService, TaskBoardSocketService, TaskBoardStateService, TaskCardComponent, TaskCommentApiService, TaskDetailPanelComponent, TaskFormDialogComponent, TaskLabelApiService, TaskListApiService, isTaskOverdue, memberColorFromId, memberInitials, taskPrioritySeverity };
|
|
592
|
-
export type { BoardMemberRole, IAssignTaskDto, IBoardSocketEvent, ICreateTaskBoardDto, ICreateTaskCommentDto, ICreateTaskDto, ICreateTaskLabelDto, ICreateTaskListDto, IMoveTaskDto, IReorderTaskListsDto, ITask, ITaskActivity, ITaskAssignee, ITaskBoard, ITaskBoardMember, ITaskComment, ITaskLabel, ITaskList, IUpdateTaskBoardDto, IUpdateTaskDto, IUpdateTaskListDto, TaskPriority };
|
|
311
|
+
description: string;
|
|
312
|
+
priority: TaskPriority;
|
|
313
|
+
}, string | number, "writable">;
|
|
314
|
+
readonly dueDate: import("@angular/core").WritableSignal<Date | null>;
|
|
315
|
+
readonly selectedAssigneeIds: import("@angular/core").WritableSignal<string[]>;
|
|
316
|
+
readonly selectedLabelIds: import("@angular/core").WritableSignal<string[]>;
|
|
317
|
+
constructor();
|
|
318
|
+
onSave(): Promise<void>;
|
|
319
|
+
onClose(): void;
|
|
320
|
+
private reset;
|
|
321
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TaskFormDialogComponent, never>;
|
|
322
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<TaskFormDialogComponent, "tm-task-form-dialog", never, {
|
|
323
|
+
"visible": {
|
|
324
|
+
"alias": "visible";
|
|
325
|
+
"required": false;
|
|
326
|
+
"isSignal": true;
|
|
327
|
+
};
|
|
328
|
+
"task": {
|
|
329
|
+
"alias": "task";
|
|
330
|
+
"required": false;
|
|
331
|
+
"isSignal": true;
|
|
332
|
+
};
|
|
333
|
+
"boardId": {
|
|
334
|
+
"alias": "boardId";
|
|
335
|
+
"required": true;
|
|
336
|
+
"isSignal": true;
|
|
337
|
+
};
|
|
338
|
+
"listId": {
|
|
339
|
+
"alias": "listId";
|
|
340
|
+
"required": true;
|
|
341
|
+
"isSignal": true;
|
|
342
|
+
};
|
|
343
|
+
"members": {
|
|
344
|
+
"alias": "members";
|
|
345
|
+
"required": false;
|
|
346
|
+
"isSignal": true;
|
|
347
|
+
};
|
|
348
|
+
"labels": {
|
|
349
|
+
"alias": "labels";
|
|
350
|
+
"required": false;
|
|
351
|
+
"isSignal": true;
|
|
352
|
+
};
|
|
353
|
+
}, {
|
|
354
|
+
"visible": "visibleChange";
|
|
355
|
+
"saved": "saved";
|
|
356
|
+
}, never, never, true, never>;
|
|
357
|
+
}
|
|
358
|
+
export declare class TaskDetailPanelComponent {
|
|
359
|
+
private readonly commentApi;
|
|
360
|
+
private readonly state;
|
|
361
|
+
readonly task: import("@angular/core").InputSignal<ITask | null>;
|
|
362
|
+
readonly closePanel: import("@angular/core").OutputEmitterRef<void>;
|
|
363
|
+
readonly editTask: import("@angular/core").OutputEmitterRef<ITask>;
|
|
364
|
+
readonly comments: import("@angular/core").WritableSignal<ITaskComment[]>;
|
|
365
|
+
readonly isSendingComment: import("@angular/core").WritableSignal<boolean>;
|
|
366
|
+
readonly isSendingReply: import("@angular/core").WritableSignal<boolean>;
|
|
367
|
+
readonly replyingToId: import("@angular/core").WritableSignal<string | null>;
|
|
368
|
+
readonly isDeleting: import("@angular/core").WritableSignal<boolean>;
|
|
369
|
+
readonly newComment: import("@angular/core").WritableSignal<string>;
|
|
370
|
+
readonly replyText: import("@angular/core").WritableSignal<string>;
|
|
371
|
+
readonly assigneeMembers: import("@angular/core").Signal<import("@flusys/ng-task-manager").ITaskAssignee[]>;
|
|
372
|
+
readonly rootComments: import("@angular/core").Signal<ITaskComment[]>;
|
|
373
|
+
repliesFor(parentId: string): ITaskComment[];
|
|
374
|
+
constructor();
|
|
375
|
+
toggleReply(commentId: string): void;
|
|
376
|
+
cancelReply(): void;
|
|
377
|
+
deleteTask(taskId: string): Promise<void>;
|
|
378
|
+
protected readonly prioritySeverity: typeof taskPrioritySeverity;
|
|
379
|
+
protected readonly initials: typeof memberInitials;
|
|
380
|
+
private loadComments;
|
|
381
|
+
addComment(taskId: string): Promise<void>;
|
|
382
|
+
submitReply(taskId: string, parentCommentId: string): Promise<void>;
|
|
383
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TaskDetailPanelComponent, never>;
|
|
384
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<TaskDetailPanelComponent, "tm-task-detail-panel", never, {
|
|
385
|
+
"task": {
|
|
386
|
+
"alias": "task";
|
|
387
|
+
"required": false;
|
|
388
|
+
"isSignal": true;
|
|
389
|
+
};
|
|
390
|
+
}, {
|
|
391
|
+
"closePanel": "closePanel";
|
|
392
|
+
"editTask": "editTask";
|
|
393
|
+
}, never, never, true, never>;
|
|
394
|
+
}
|
|
395
|
+
export declare const TASK_MANAGER_ROUTES: Routes;
|
|
396
|
+
export declare const TASK_MANAGER_MESSAGES: {
|
|
397
|
+
readonly 'task.board.not.found': "Board not found";
|
|
398
|
+
readonly 'task.board.create.success': "Board created successfully";
|
|
399
|
+
readonly 'task.board.create.many.success': "Boards created successfully";
|
|
400
|
+
readonly 'task.board.get.success': "Board retrieved successfully";
|
|
401
|
+
readonly 'task.board.get.all.success': "Boards retrieved successfully";
|
|
402
|
+
readonly 'task.board.update.success': "Board updated successfully";
|
|
403
|
+
readonly 'task.board.update.many.success': "Boards updated successfully";
|
|
404
|
+
readonly 'task.board.delete.success': "Board deleted successfully";
|
|
405
|
+
readonly 'task.board.restore.success': "Board restored successfully";
|
|
406
|
+
readonly 'task.board.member.added': "Member added to board";
|
|
407
|
+
readonly 'task.board.member.removed': "Member removed from board";
|
|
408
|
+
readonly 'task.board.member.not.found': "Board member not found";
|
|
409
|
+
readonly 'task.board.member.already.exists': "User is already a board member";
|
|
410
|
+
readonly 'task.board.member.get.all.success': "Board members retrieved successfully";
|
|
411
|
+
readonly 'task.list.not.found': "List not found";
|
|
412
|
+
readonly 'task.list.create.success': "List created successfully";
|
|
413
|
+
readonly 'task.list.create.many.success': "Lists created successfully";
|
|
414
|
+
readonly 'task.list.get.success': "List retrieved successfully";
|
|
415
|
+
readonly 'task.list.get.all.success': "Lists retrieved successfully";
|
|
416
|
+
readonly 'task.list.update.success': "List updated successfully";
|
|
417
|
+
readonly 'task.list.update.many.success': "Lists updated successfully";
|
|
418
|
+
readonly 'task.list.delete.success': "List deleted successfully";
|
|
419
|
+
readonly 'task.list.restore.success': "List restored successfully";
|
|
420
|
+
readonly 'task.list.reorder.success': "Lists reordered successfully";
|
|
421
|
+
readonly 'task.not.found': "Task not found";
|
|
422
|
+
readonly 'task.create.success': "Task created successfully";
|
|
423
|
+
readonly 'task.create.many.success': "Tasks created successfully";
|
|
424
|
+
readonly 'task.get.success': "Task retrieved successfully";
|
|
425
|
+
readonly 'task.get.all.success': "Tasks retrieved successfully";
|
|
426
|
+
readonly 'task.update.success': "Task updated successfully";
|
|
427
|
+
readonly 'task.update.many.success': "Tasks updated successfully";
|
|
428
|
+
readonly 'task.delete.success': "Task deleted successfully";
|
|
429
|
+
readonly 'task.restore.success': "Task restored successfully";
|
|
430
|
+
readonly 'task.move.success': "Task moved successfully";
|
|
431
|
+
readonly 'task.assign.success': "Task assigned successfully";
|
|
432
|
+
readonly 'task.assignee.not.board.member': "Assignee is not a board member";
|
|
433
|
+
readonly 'task.label.not.found': "Label not found";
|
|
434
|
+
readonly 'task.label.create.success': "Label created successfully";
|
|
435
|
+
readonly 'task.label.create.many.success': "Labels created successfully";
|
|
436
|
+
readonly 'task.label.get.success': "Label retrieved successfully";
|
|
437
|
+
readonly 'task.label.get.all.success': "Labels retrieved successfully";
|
|
438
|
+
readonly 'task.label.update.success': "Label updated successfully";
|
|
439
|
+
readonly 'task.label.update.many.success': "Labels updated successfully";
|
|
440
|
+
readonly 'task.label.delete.success': "Label deleted successfully";
|
|
441
|
+
readonly 'task.label.restore.success': "Label restored successfully";
|
|
442
|
+
readonly 'task.comment.not.found': "Comment not found";
|
|
443
|
+
readonly 'task.comment.create.success': "Comment added successfully";
|
|
444
|
+
readonly 'task.comment.create.many.success': "Comments added successfully";
|
|
445
|
+
readonly 'task.comment.get.success': "Comment retrieved successfully";
|
|
446
|
+
readonly 'task.comment.get.all.success': "Comments retrieved successfully";
|
|
447
|
+
readonly 'task.comment.update.success': "Comment updated successfully";
|
|
448
|
+
readonly 'task.comment.update.many.success': "Comments updated successfully";
|
|
449
|
+
readonly 'task.comment.delete.success': "Comment deleted successfully";
|
|
450
|
+
readonly 'task.comment.restore.success': "Comment restored successfully";
|
|
451
|
+
readonly 'task.comment.forbidden': "Cannot edit another user's comment";
|
|
452
|
+
readonly 'task.manager.boards.title': "Task Boards";
|
|
453
|
+
readonly 'task.manager.boards.subtitle': "Manage and organize your project boards";
|
|
454
|
+
readonly 'task.manager.board.new': "New Board";
|
|
455
|
+
readonly 'task.manager.board.name.placeholder': "e.g. Product Backlog";
|
|
456
|
+
readonly 'task.manager.board.description.placeholder': "Optional description";
|
|
457
|
+
readonly 'task.manager.board.color.label': "Board Color";
|
|
458
|
+
readonly 'task.manager.board.empty': "No boards yet";
|
|
459
|
+
readonly 'task.manager.board.empty.hint': "Create your first board to get started";
|
|
460
|
+
readonly 'task.manager.board.members': "Members";
|
|
461
|
+
readonly 'task.manager.board.lists': "Lists";
|
|
462
|
+
readonly 'task.manager.board.tasks': "Tasks";
|
|
463
|
+
readonly 'task.manager.board.add.list': "Add List";
|
|
464
|
+
readonly 'task.manager.board.add.task': "Add task";
|
|
465
|
+
readonly 'task.manager.board.drop.tasks.here': "Drop tasks here";
|
|
466
|
+
readonly 'task.manager.board.list.empty': "No lists yet. Click \"Add List\" to create one.";
|
|
467
|
+
readonly 'task.manager.list.new': "New List";
|
|
468
|
+
readonly 'task.manager.list.name.label': "List Name";
|
|
469
|
+
readonly 'task.manager.list.name.placeholder': "e.g. In Progress";
|
|
470
|
+
readonly 'task.manager.list.rename': "Rename List";
|
|
471
|
+
readonly 'task.manager.board.manage.members': "Members";
|
|
472
|
+
readonly 'task.manager.member.manage.title': "Manage Members";
|
|
473
|
+
readonly 'task.manager.member.add': "Add Member";
|
|
474
|
+
readonly 'task.manager.member.no.members': "No members yet.";
|
|
475
|
+
readonly 'task.manager.member.user.label': "User";
|
|
476
|
+
readonly 'task.manager.member.user.placeholder': "Search by name or email";
|
|
477
|
+
readonly 'task.manager.member.role.label': "Role";
|
|
478
|
+
readonly 'task.manager.member.role.placeholder': "Select role";
|
|
479
|
+
readonly 'task.manager.member.role.owner': "Owner";
|
|
480
|
+
readonly 'task.manager.member.role.admin': "Admin";
|
|
481
|
+
readonly 'task.manager.member.role.member': "Member";
|
|
482
|
+
readonly 'task.manager.member.role.viewer': "Viewer";
|
|
483
|
+
readonly 'task.manager.board.manage.labels': "Labels";
|
|
484
|
+
readonly 'task.manager.label.manage.title': "Manage Labels";
|
|
485
|
+
readonly 'task.manager.label.name.label': "Label Name";
|
|
486
|
+
readonly 'task.manager.label.name.placeholder': "e.g. Bug, Feature";
|
|
487
|
+
readonly 'task.manager.label.color.label': "Color";
|
|
488
|
+
readonly 'task.manager.label.add': "Add Label";
|
|
489
|
+
readonly 'task.manager.label.no.labels': "No labels yet.";
|
|
490
|
+
readonly 'task.manager.board.edit': "Edit Board";
|
|
491
|
+
readonly 'task.manager.board.name.label': "Board Name";
|
|
492
|
+
readonly 'task.manager.board.description.label': "Description";
|
|
493
|
+
readonly 'task.manager.view.board': "Board";
|
|
494
|
+
readonly 'task.manager.view.list': "List";
|
|
495
|
+
readonly 'task.manager.table.title': "Title";
|
|
496
|
+
readonly 'task.manager.table.list': "List";
|
|
497
|
+
readonly 'task.manager.table.priority': "Priority";
|
|
498
|
+
readonly 'task.manager.table.assignee': "Assignee";
|
|
499
|
+
readonly 'task.manager.table.due.date': "Due Date";
|
|
500
|
+
readonly 'task.manager.table.empty': "No tasks yet.";
|
|
501
|
+
readonly 'task.form.title.create': "New Task";
|
|
502
|
+
readonly 'task.form.title.edit': "Edit Task";
|
|
503
|
+
readonly 'task.form.title.label': "Title";
|
|
504
|
+
readonly 'task.form.title.placeholder': "Task title";
|
|
505
|
+
readonly 'task.form.description.placeholder': "Add a description...";
|
|
506
|
+
readonly 'task.form.priority.label': "Priority";
|
|
507
|
+
readonly 'task.form.priority.placeholder': "Select priority";
|
|
508
|
+
readonly 'task.form.due.date.label': "Due Date";
|
|
509
|
+
readonly 'task.form.due.date.placeholder': "Pick a date";
|
|
510
|
+
readonly 'task.form.assignee.label': "Assignee";
|
|
511
|
+
readonly 'task.form.assignee.placeholder': "Assign to board member";
|
|
512
|
+
readonly 'task.form.labels.label': "Labels";
|
|
513
|
+
readonly 'task.form.labels.placeholder': "Select labels";
|
|
514
|
+
readonly 'task.priority.LOW': "Low";
|
|
515
|
+
readonly 'task.priority.MEDIUM': "Medium";
|
|
516
|
+
readonly 'task.priority.HIGH': "High";
|
|
517
|
+
readonly 'task.priority.URGENT': "Urgent";
|
|
518
|
+
readonly 'task.detail.description.empty': "No description";
|
|
519
|
+
readonly 'task.detail.comments.label': "Comments";
|
|
520
|
+
readonly 'task.detail.comments.empty': "No comments yet";
|
|
521
|
+
readonly 'task.detail.comment.placeholder': "Add a comment...";
|
|
522
|
+
readonly 'task.detail.due.label': "Due";
|
|
523
|
+
readonly 'task.detail.assignees.label': "Assignees";
|
|
524
|
+
readonly 'task.detail.edit': "Edit task";
|
|
525
|
+
readonly 'task.detail.delete': "Delete task";
|
|
526
|
+
readonly 'task.comment.reply': "Reply";
|
|
527
|
+
readonly 'task.comment.reply.placeholder': "Write a reply...";
|
|
528
|
+
};
|