@valtimo/task 4.15.3-next-main.15 → 4.15.3-next-main.16

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.
@@ -1,8 +1,8 @@
1
1
  (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/common/http'), require('@valtimo/config'), require('@angular/common'), require('@angular/forms'), require('@angular/platform-browser/animations'), require('@ng-bootstrap/ng-bootstrap'), require('@ngx-translate/core'), require('@valtimo/components'), require('@valtimo/contract'), require('ngx-toastr'), require('@angular/router'), require('@valtimo/form-link'), require('moment'), require('ngx-logger'), require('rxjs'), require('@valtimo/security'), require('rxjs/operators')) :
3
- typeof define === 'function' && define.amd ? define('@valtimo/task', ['exports', '@angular/core', '@angular/common/http', '@valtimo/config', '@angular/common', '@angular/forms', '@angular/platform-browser/animations', '@ng-bootstrap/ng-bootstrap', '@ngx-translate/core', '@valtimo/components', '@valtimo/contract', 'ngx-toastr', '@angular/router', '@valtimo/form-link', 'moment', 'ngx-logger', 'rxjs', '@valtimo/security', 'rxjs/operators'], factory) :
4
- (global = global || self, factory((global.valtimo = global.valtimo || {}, global.valtimo.task = {}), global.ng.core, global.ng.common.http, global.config, global.ng.common, global.ng.forms, global.ng.platformBrowser.animations, global.ngBootstrap, global.core$1, global.components, global.contract, global.ngxToastr, global.ng.router, global.formLink, global.moment, global.ngxLogger, global.rxjs, global.security, global.rxjs.operators));
5
- }(this, (function (exports, i0, i1, i2, common, forms, animations, ngBootstrap, core, components, contract, ngxToastr, router, formLink, momentImported, ngxLogger, rxjs, security, operators) { 'use strict';
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/common/http'), require('@valtimo/config'), require('@angular/common'), require('@angular/forms'), require('@angular/platform-browser/animations'), require('@ng-bootstrap/ng-bootstrap'), require('@ngx-translate/core'), require('@valtimo/components'), require('@valtimo/contract'), require('ngx-toastr'), require('@angular/router'), require('@valtimo/form-link'), require('moment'), require('ngx-logger'), require('rxjs/operators'), require('rxjs'), require('@valtimo/security')) :
3
+ typeof define === 'function' && define.amd ? define('@valtimo/task', ['exports', '@angular/core', '@angular/common/http', '@valtimo/config', '@angular/common', '@angular/forms', '@angular/platform-browser/animations', '@ng-bootstrap/ng-bootstrap', '@ngx-translate/core', '@valtimo/components', '@valtimo/contract', 'ngx-toastr', '@angular/router', '@valtimo/form-link', 'moment', 'ngx-logger', 'rxjs/operators', 'rxjs', '@valtimo/security'], factory) :
4
+ (global = global || self, factory((global.valtimo = global.valtimo || {}, global.valtimo.task = {}), global.ng.core, global.ng.common.http, global.config, global.ng.common, global.ng.forms, global.ng.platformBrowser.animations, global.ngBootstrap, global.core$1, global.components, global.contract, global.ngxToastr, global.ng.router, global.formLink, global.moment, global.ngxLogger, global.rxjs.operators, global.rxjs, global.security));
5
+ }(this, (function (exports, i0, i1, i2, common, forms, animations, ngBootstrap, core, components, contract, ngxToastr, router, formLink, momentImported, ngxLogger, operators, rxjs, security) { 'use strict';
6
6
 
7
7
  /*
8
8
  * Copyright 2015-2020 Ritense BV, the Netherlands.
@@ -45,7 +45,7 @@
45
45
  TaskService.prototype.completeTask = function (id, variables) {
46
46
  return this.http.post(this.valtimoEndpointUri + 'task/' + id + '/complete', {
47
47
  variables: variables,
48
- filesToDelete: []
48
+ filesToDelete: [],
49
49
  });
50
50
  };
51
51
  return TaskService;
@@ -77,11 +77,12 @@
77
77
  var moment = momentImported;
78
78
  moment.locale(localStorage.getItem('langKey') || '');
79
79
  var TaskDetailModalComponent = /** @class */ (function () {
80
- function TaskDetailModalComponent(toastr, formLinkService, router, logger) {
80
+ function TaskDetailModalComponent(toastr, formLinkService, router, logger, route) {
81
81
  this.toastr = toastr;
82
82
  this.formLinkService = formLinkService;
83
83
  this.router = router;
84
84
  this.logger = logger;
85
+ this.route = route;
85
86
  this.task = null;
86
87
  this.page = null;
87
88
  this.formSubmit = new i0.EventEmitter();
@@ -100,7 +101,7 @@
100
101
  this.task = task;
101
102
  this.page = {
102
103
  title: task.name,
103
- subtitle: "Created " + moment(task.created).fromNow()
104
+ subtitle: "Created " + moment(task.created).fromNow(),
104
105
  };
105
106
  this.formLinkService
106
107
  .getPreFilledFormDefinitionByFormLinkId(task.processDefinitionKey, task.businessKey, task.taskDefinitionKey, task.id // taskInstanceId
@@ -119,7 +120,13 @@
119
120
  window.open(url, '_blank');
120
121
  break;
121
122
  case 'BpmnElementAngularStateUrlLink':
122
- _this.router.navigate([formDefinition.formAssociation.formLink.url]);
123
+ _this.route.params.pipe(operators.take(1)).subscribe(function (params) {
124
+ var taskId = task === null || task === void 0 ? void 0 : task.id;
125
+ var documentId = params === null || params === void 0 ? void 0 : params.documentId;
126
+ _this.router.navigate([formDefinition.formAssociation.formLink.url], {
127
+ state: Object.assign(Object.assign({}, (taskId && { taskId: taskId })), (documentId && { documentId: documentId })),
128
+ });
129
+ });
123
130
  break;
124
131
  default:
125
132
  _this.logger.fatal('Unsupported class name');
@@ -154,7 +161,7 @@
154
161
  TaskDetailModalComponent.decorators = [
155
162
  { type: i0.Component, args: [{
156
163
  selector: 'valtimo-task-detail-modal',
157
- template: "<!--\n ~ Copyright 2015-2020 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-modal\n #taskDetailModal\n elementId=\"taskDetailModal\"\n [title]=\"page?.title\"\n [subtitle]=\"page?.subtitle\"\n [templateBelowSubtitle]=\"assignUserToTask\"\n>\n <div body *ngIf=\"formDefinition\">\n <valtimo-form-io\n #form\n [form]=\"formDefinition\"\n (submit)=\"onSubmit($event)\"\n [options]=\"formioOptions\"\n ></valtimo-form-io>\n </div>\n <div body *ngIf=\"!formDefinition && !errorMessage\">\n <div class=\"bg-warning text-black mb-0 p-3 text-center\" [translate]=\"'formManagement.noFormDefinitionFound'\"></div>\n </div>\n <div body *ngIf=\"errorMessage\">\n <div class=\"bg-danger text-black mb-0 p-3 text-center\">\n {{ errorMessage }}\n </div>\n </div>\n <div footer>\n <div class=\"mb-0 p-3 text-center\" *ngIf=\"!formDefinition\">\n <button class=\"btn btn-secondary btn-space\" type=\"button\" (click)=\"gotoFormLinkScreen()\" id=\"form-link-button\">\n {{ 'formManagement.gotoFormLinksButton' | translate }}\n </button>\n </div>\n </div>\n</valtimo-modal>\n\n<ng-template #assignUserToTask>\n <valtimo-assign-user-to-task\n *ngIf=\"task && assignmentOfTaskChanged\"\n [taskId]=\"task.id\"\n [assigneeEmail]=\"task.assignee\"\n (assignmentOfTaskChanged)=\"assignmentOfTaskChanged.emit()\"\n ></valtimo-assign-user-to-task>\n</ng-template>\n",
164
+ template: "<!--\n ~ Copyright 2015-2020 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-modal\n #taskDetailModal\n elementId=\"taskDetailModal\"\n [title]=\"page?.title\"\n [subtitle]=\"page?.subtitle\"\n [templateBelowSubtitle]=\"assignUserToTask\"\n>\n <div body *ngIf=\"formDefinition\">\n <valtimo-form-io\n #form\n [form]=\"formDefinition\"\n (submit)=\"onSubmit($event)\"\n [options]=\"formioOptions\"\n ></valtimo-form-io>\n </div>\n <div body *ngIf=\"!formDefinition && !errorMessage\">\n <div\n class=\"bg-warning text-black mb-0 p-3 text-center\"\n [translate]=\"'formManagement.noFormDefinitionFound'\"\n ></div>\n </div>\n <div body *ngIf=\"errorMessage\">\n <div class=\"bg-danger text-black mb-0 p-3 text-center\">\n {{ errorMessage }}\n </div>\n </div>\n <div footer>\n <div class=\"mb-0 p-3 text-center\" *ngIf=\"!formDefinition\">\n <button\n class=\"btn btn-secondary btn-space\"\n type=\"button\"\n (click)=\"gotoFormLinkScreen()\"\n id=\"form-link-button\"\n >\n {{ 'formManagement.gotoFormLinksButton' | translate }}\n </button>\n </div>\n </div>\n</valtimo-modal>\n\n<ng-template #assignUserToTask>\n <valtimo-assign-user-to-task\n *ngIf=\"task && assignmentOfTaskChanged\"\n [taskId]=\"task.id\"\n [assigneeEmail]=\"task.assignee\"\n (assignmentOfTaskChanged)=\"assignmentOfTaskChanged.emit()\"\n ></valtimo-assign-user-to-task>\n</ng-template>\n",
158
165
  encapsulation: i0.ViewEncapsulation.None,
159
166
  styles: ["/*!\n * Copyright 2015-2020 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */#taskDetailModal .formio-component-submit{text-align:right}"]
160
167
  },] }
@@ -163,7 +170,8 @@
163
170
  { type: ngxToastr.ToastrService },
164
171
  { type: formLink.FormLinkService },
165
172
  { type: router.Router },
166
- { type: ngxLogger.NGXLogger }
173
+ { type: ngxLogger.NGXLogger },
174
+ { type: router.ActivatedRoute }
167
175
  ]; };
168
176
  TaskDetailModalComponent.propDecorators = {
169
177
  form: [{ type: i0.ViewChild, args: ['form',] }],
@@ -196,6 +204,8 @@
196
204
  return extendStatics(d, b);
197
205
  };
198
206
  function __extends(d, b) {
207
+ if (typeof b !== "function" && b !== null)
208
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
199
209
  extendStatics(d, b);
200
210
  function __() { this.constructor = d; }
201
211
  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
@@ -381,11 +391,13 @@
381
391
  }
382
392
  return ar;
383
393
  }
394
+ /** @deprecated */
384
395
  function __spread() {
385
396
  for (var ar = [], i = 0; i < arguments.length; i++)
386
397
  ar = ar.concat(__read(arguments[i]));
387
398
  return ar;
388
399
  }
400
+ /** @deprecated */
389
401
  function __spreadArrays() {
390
402
  for (var s = 0, i = 0, il = arguments.length; i < il; i++)
391
403
  s += arguments[i].length;
@@ -394,7 +406,17 @@
394
406
  r[k] = a[j];
395
407
  return r;
396
408
  }
397
- ;
409
+ function __spreadArray(to, from, pack) {
410
+ if (pack || arguments.length === 2)
411
+ for (var i = 0, l = from.length, ar; i < l; i++) {
412
+ if (ar || !(i in from)) {
413
+ if (!ar)
414
+ ar = Array.prototype.slice.call(from, 0, i);
415
+ ar[i] = from[i];
416
+ }
417
+ }
418
+ return to.concat(ar || Array.prototype.slice.call(from));
419
+ }
398
420
  function __await(v) {
399
421
  return this instanceof __await ? (this.v = v, this) : new __await(v);
400
422
  }
@@ -459,18 +481,21 @@
459
481
  function __importDefault(mod) {
460
482
  return (mod && mod.__esModule) ? mod : { default: mod };
461
483
  }
462
- function __classPrivateFieldGet(receiver, privateMap) {
463
- if (!privateMap.has(receiver)) {
464
- throw new TypeError("attempted to get private field on non-instance");
465
- }
466
- return privateMap.get(receiver);
484
+ function __classPrivateFieldGet(receiver, state, kind, f) {
485
+ if (kind === "a" && !f)
486
+ throw new TypeError("Private accessor was defined without a getter");
487
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver))
488
+ throw new TypeError("Cannot read private member from an object whose class did not declare it");
489
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
467
490
  }
468
- function __classPrivateFieldSet(receiver, privateMap, value) {
469
- if (!privateMap.has(receiver)) {
470
- throw new TypeError("attempted to set private field on non-instance");
471
- }
472
- privateMap.set(receiver, value);
473
- return value;
491
+ function __classPrivateFieldSet(receiver, state, value, kind, f) {
492
+ if (kind === "m")
493
+ throw new TypeError("Private method is not writable");
494
+ if (kind === "a" && !f)
495
+ throw new TypeError("Private accessor was defined without a setter");
496
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver))
497
+ throw new TypeError("Cannot write private member to an object whose class did not declare it");
498
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
474
499
  }
475
500
 
476
501
  var moment$1 = momentImported;
@@ -484,7 +509,7 @@
484
509
  this.tasks = {
485
510
  mine: new contract.TaskList(),
486
511
  open: new contract.TaskList(),
487
- all: new contract.TaskList()
512
+ all: new contract.TaskList(),
488
513
  };
489
514
  this.currentTaskType = 'mine';
490
515
  this.listTitle = null;
@@ -495,7 +520,10 @@
495
520
  this.getTasks(type);
496
521
  };
497
522
  TaskListComponent.prototype.paginationSet = function () {
498
- this.tasks.mine.pagination.size = this.tasks.all.pagination.size = this.tasks.open.pagination.size = this.tasks[this.currentTaskType].pagination.size;
523
+ this.tasks.mine.pagination.size =
524
+ this.tasks.all.pagination.size =
525
+ this.tasks.open.pagination.size =
526
+ this.tasks[this.currentTaskType].pagination.size;
499
527
  this.getTasks(this.currentTaskType);
500
528
  };
501
529
  TaskListComponent.prototype.clearPagination = function (type) {
@@ -525,7 +553,7 @@
525
553
  var params;
526
554
  this.translationSubscription = rxjs.combineLatest([
527
555
  this.translateService.stream("task-list." + type + ".title"),
528
- this.translateService.stream("task-list." + type + ".description")
556
+ this.translateService.stream("task-list." + type + ".description"),
529
557
  ]).subscribe(function (_a) {
530
558
  var _b = __read(_a, 2), title = _b[0], description = _b[1];
531
559
  _this.listTitle = title;
@@ -533,11 +561,19 @@
533
561
  });
534
562
  switch (type) {
535
563
  case 'mine':
536
- params = { page: this.tasks.mine.page, size: this.tasks.mine.pagination.size, filter: 'mine' };
564
+ params = {
565
+ page: this.tasks.mine.page,
566
+ size: this.tasks.mine.pagination.size,
567
+ filter: 'mine',
568
+ };
537
569
  this.currentTaskType = 'mine';
538
570
  break;
539
571
  case 'open':
540
- params = { page: this.tasks.open.page, size: this.tasks.open.pagination.size, filter: 'open' };
572
+ params = {
573
+ page: this.tasks.open.page,
574
+ size: this.tasks.open.pagination.size,
575
+ filter: 'open',
576
+ };
541
577
  this.currentTaskType = 'open';
542
578
  break;
543
579
  case 'all':
@@ -559,20 +595,20 @@
559
595
  _this.tasks[type].fields = [
560
596
  {
561
597
  key: 'created',
562
- label: 'Created on'
598
+ label: 'Created on',
563
599
  },
564
600
  {
565
601
  key: 'name',
566
- label: 'Name'
602
+ label: 'Name',
567
603
  },
568
604
  {
569
605
  key: 'valtimoAssignee.fullName',
570
- label: 'Assignee'
606
+ label: 'Assignee',
571
607
  },
572
608
  {
573
609
  key: 'due',
574
- label: 'Due date'
575
- }
610
+ label: 'Due date',
611
+ },
576
612
  ];
577
613
  });
578
614
  };
@@ -628,8 +664,8 @@
628
664
  path: 'tasks',
629
665
  component: TaskListComponent,
630
666
  canActivate: [security.AuthGuardService],
631
- data: ɵ0
632
- }
667
+ data: ɵ0,
668
+ },
633
669
  ];
634
670
  var TaskRoutingModule = /** @class */ (function () {
635
671
  function TaskRoutingModule() {
@@ -639,11 +675,8 @@
639
675
  TaskRoutingModule.decorators = [
640
676
  { type: i0.NgModule, args: [{
641
677
  declarations: [],
642
- imports: [
643
- common.CommonModule,
644
- router.RouterModule.forChild(routes),
645
- ],
646
- exports: [router.RouterModule]
678
+ imports: [common.CommonModule, router.RouterModule.forChild(routes)],
679
+ exports: [router.RouterModule],
647
680
  },] }
648
681
  ];
649
682
 
@@ -687,7 +720,10 @@
687
720
  AssignUserToTaskComponent.prototype.assignTask = function (userEmail) {
688
721
  var _this = this;
689
722
  this.disable();
690
- rxjs.combineLatest([this.candidateUsersForTask$, this.taskService.assignTask(this.taskId, { assignee: userEmail })])
723
+ rxjs.combineLatest([
724
+ this.candidateUsersForTask$,
725
+ this.taskService.assignTask(this.taskId, { assignee: userEmail }),
726
+ ])
691
727
  .pipe(operators.take(1), operators.tap(function (_b) {
692
728
  var _c = __read(_b, 1), candidateUsers = _c[0];
693
729
  _this.userEmailToAssign = userEmail;
@@ -742,7 +778,7 @@
742
778
  AssignUserToTaskComponent.decorators = [
743
779
  { type: i0.Component, args: [{
744
780
  selector: 'valtimo-assign-user-to-task',
745
- template: "<ng-container\n *ngIf=\"{\n candidateUsers: candidateUsersForTask$ | async,\n disabled: disabled$ | async,\n emailOnServer: assignedEmailOnServer$ | async\n } as obs\"\n>\n <div class=\"container-fluid\">\n <div class=\"row mt-2 mb-2\">\n <div class=\"col-12 pl-0 d-flex flex-row align-items-center\">\n <ng-container *ngIf=\"obs.candidateUsers; else loading\">\n <valtimo-searchable-dropdown-select\n [style]=\"'underlinedText'\"\n [items]=\"mapUsersForDropdown(obs.candidateUsers)\"\n [buttonText]=\"'assignTask.header' | translate\"\n [searchText]=\"'interface.typeToSearch' | translate\"\n [noResultsText]=\"'interface.noSearchResults' | translate\"\n [disabled]=\"obs.disabled\"\n [selectedText]=\"'assignTask.assignedTo' | translate\"\n [selectedTextValue]=\"assignedUserFullName$ | async\"\n [clearSelectionButtonTitle]=\"'assignTask.remove' | translate\"\n [hasSelection]=\"userEmailToAssign === obs.emailOnServer && obs.emailOnServer !== null\"\n [width]=\"250\"\n (itemSelected)=\"assignTask($event)\"\n (clearSelection)=\"unassignTask()\"\n >\n </valtimo-searchable-dropdown-select>\n </ng-container>\n </div>\n </div>\n </div>\n</ng-container>\n\n<ng-template #loading>\n <h5><b>{{'assignTask.fetchingUsers' | translate}}</b></h5>\n</ng-template>\n\n",
781
+ template: "<ng-container\n *ngIf=\"{\n candidateUsers: candidateUsersForTask$ | async,\n disabled: disabled$ | async,\n emailOnServer: assignedEmailOnServer$ | async\n } as obs\"\n>\n <div class=\"container-fluid\">\n <div class=\"row mt-2 mb-2\">\n <div class=\"col-12 pl-0 d-flex flex-row align-items-center\">\n <ng-container *ngIf=\"obs.candidateUsers; else loading\">\n <valtimo-searchable-dropdown-select\n [style]=\"'underlinedText'\"\n [items]=\"mapUsersForDropdown(obs.candidateUsers)\"\n [buttonText]=\"'assignTask.header' | translate\"\n [searchText]=\"'interface.typeToSearch' | translate\"\n [noResultsText]=\"'interface.noSearchResults' | translate\"\n [disabled]=\"obs.disabled\"\n [selectedText]=\"'assignTask.assignedTo' | translate\"\n [selectedTextValue]=\"assignedUserFullName$ | async\"\n [clearSelectionButtonTitle]=\"'assignTask.remove' | translate\"\n [hasSelection]=\"userEmailToAssign === obs.emailOnServer && obs.emailOnServer !== null\"\n [width]=\"250\"\n (itemSelected)=\"assignTask($event)\"\n (clearSelection)=\"unassignTask()\"\n >\n </valtimo-searchable-dropdown-select>\n </ng-container>\n </div>\n </div>\n </div>\n</ng-container>\n\n<ng-template #loading>\n <h5>\n <b>{{ 'assignTask.fetchingUsers' | translate }}</b>\n </h5>\n</ng-template>\n",
746
782
  styles: [".container-fluid{color:#959595}i{font-size:13px}"]
747
783
  },] }
748
784
  ];
@@ -792,20 +828,20 @@
792
828
  forms.FormsModule,
793
829
  ngxToastr.ToastrModule.forRoot({
794
830
  positionClass: 'toast-bottom-full-width',
795
- preventDuplicates: true
831
+ preventDuplicates: true,
796
832
  }),
797
833
  core.TranslateModule.forRoot({
798
834
  loader: {
799
835
  provide: core.TranslateLoader,
800
836
  useFactory: ɵ0$1,
801
- deps: [i1.HttpClient]
802
- }
837
+ deps: [i1.HttpClient],
838
+ },
803
839
  }),
804
840
  ngBootstrap.NgbModule,
805
841
  components.FormIoModule,
806
- components.ModalModule
842
+ components.ModalModule,
807
843
  ],
808
- exports: [TaskListComponent, TaskDetailModalComponent, AssignUserToTaskComponent]
844
+ exports: [TaskListComponent, TaskDetailModalComponent, AssignUserToTaskComponent],
809
845
  },] }
810
846
  ];
811
847