verben-workflow-ui 0.5.75 → 0.5.77

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,22 +1,23 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Injectable, EventEmitter, Component, Input, Output, input, viewChildren, NgModule } from '@angular/core';
3
- import { BehaviorSubject, lastValueFrom } from 'rxjs';
2
+ import { Injectable, EventEmitter, Component, Input, Output, input, NgModule } from '@angular/core';
4
3
  import { SortDirection, ErrorResponse, ResourceModel, DataType, Status, TaskStatus, ObjectState } from 'verben-workflow-ui/src/lib/models';
5
4
  import { BaseDataViewComponent, SharedModule } from 'verben-workflow-ui/src/lib/shared';
5
+ import { BehaviorSubject, Subject, debounceTime, distinctUntilChanged, takeUntil, lastValueFrom } from 'rxjs';
6
6
  import * as i1 from 'verben-workflow-ui/src/lib/services';
7
7
  import * as i3 from '@angular/common';
8
8
  import { CommonModule } from '@angular/common';
9
9
  import * as i3$1 from 'verben-ng-ui';
10
10
  import { TooltipModule } from 'verben-ng-ui';
11
+ import * as i4 from '@angular/router';
12
+ import { RouterLink } from '@angular/router';
13
+ import * as i5$1 from 'verben-workflow-ui/src/lib/components/operation-popup';
14
+ import { OperationPopupComponent } from 'verben-workflow-ui/src/lib/components/operation-popup';
11
15
  import * as i1$1 from '@angular/forms';
12
16
  import { Validators } from '@angular/forms';
13
- import * as i5$1 from '@angular/router';
14
- import { RouterLink } from '@angular/router';
15
17
  import * as i5 from 'verben-workflow-ui/src/lib/components/form-control';
16
18
  import { FormControlerModule } from 'verben-workflow-ui/src/lib/components/form-control';
17
19
  import * as i6 from 'verben-workflow-ui/src/lib/components/form-timer';
18
20
  import { FormTimerModule } from 'verben-workflow-ui/src/lib/components/form-timer';
19
- import { OperationPopupComponent } from 'verben-workflow-ui/src/lib/components/operation-popup';
20
21
  import { TaskFormModule } from 'verben-workflow-ui/src/lib/components/task-form';
21
22
 
22
23
  const columns = [
@@ -80,7 +81,7 @@ class TasksService {
80
81
  * @returns Promise containing the filtered tasks
81
82
  */
82
83
  getTaskWithParam(param, skip, limit, sortParam, sortOrder) {
83
- const url = `GetTaskWithParam/${param}/${skip}/${limit}/${sortParam}/${sortOrder}`;
84
+ const url = `GetTasksWithParam/${param}/${skip}/${limit}/${sortParam}/${sortOrder}`;
84
85
  return this.httpService.get(url);
85
86
  }
86
87
  /**
@@ -159,6 +160,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
159
160
  class TaskState {
160
161
  updating$ = new BehaviorSubject(false);
161
162
  tasks$ = new BehaviorSubject([]);
163
+ searchTerm$ = new BehaviorSubject('');
162
164
  queryParams$ = new BehaviorSubject({
163
165
  skip: 0,
164
166
  limit: 20,
@@ -198,6 +200,15 @@ class TaskState {
198
200
  setForms(forms) {
199
201
  this.forms$.next(forms);
200
202
  }
203
+ getSearchTerm$() {
204
+ return this.searchTerm$.asObservable();
205
+ }
206
+ getSearchTermValue() {
207
+ return this.searchTerm$.getValue();
208
+ }
209
+ setSearchTerm(term) {
210
+ this.searchTerm$.next(term);
211
+ }
201
212
  getQueryParams$() {
202
213
  return this.queryParams$.asObservable();
203
214
  }
@@ -242,14 +253,50 @@ class TaskFacade {
242
253
  taskService;
243
254
  taskState;
244
255
  utilService;
256
+ searchSubject = new Subject();
257
+ destroy$ = new Subject();
245
258
  constructor(taskService, taskState, utilService) {
246
259
  this.taskService = taskService;
247
260
  this.taskState = taskState;
248
261
  this.utilService = utilService;
262
+ // Set up debounced search handling
263
+ this.searchSubject
264
+ .pipe(debounceTime(1000), distinctUntilChanged((a, b) => a.term === b.term), takeUntil(this.destroy$))
265
+ .subscribe(({ term, user }) => {
266
+ this.handleSearch(term, user);
267
+ });
249
268
  this.isUpdating$().subscribe((loading) => {
250
269
  this.utilService.sendBI(loading);
251
270
  });
252
271
  }
272
+ ngOnDestroy() {
273
+ this.destroy$.next();
274
+ this.destroy$.complete();
275
+ }
276
+ // Search handling
277
+ search(term, user) {
278
+ this.searchSubject.next({ term, user });
279
+ }
280
+ async handleSearch(searchTerm, user) {
281
+ this.taskState.setSearchTerm(searchTerm);
282
+ this.taskState.resetPagination();
283
+ try {
284
+ this.taskState.setUpdating(true);
285
+ if (searchTerm.trim()) {
286
+ await this.loadRequestsWithParam(searchTerm);
287
+ }
288
+ else {
289
+ await this.loadRequests(user);
290
+ }
291
+ }
292
+ catch (error) {
293
+ console.error('Search failed:', error);
294
+ throw error;
295
+ }
296
+ finally {
297
+ this.taskState.setUpdating(false);
298
+ }
299
+ }
253
300
  isUpdating$() {
254
301
  return this.taskState.isUpdating$();
255
302
  }
@@ -487,12 +534,14 @@ class TaskFacade {
487
534
  try {
488
535
  this.taskState.setUpdating(true);
489
536
  const currentParams = this.taskState.getQueryParamsValue();
490
- // const searchTerm = this.taskState.getSearchTermValue();
491
- const searchTerm = false;
492
- // Update skip value
537
+ const searchTerm = this.taskState.getSearchTermValue();
538
+ // The first page is already loaded at skip=0 without advancing the
539
+ // pointer, so fetch the *next* page starting at newSkip.
493
540
  const newSkip = currentParams.skip + currentParams.limit;
494
- // Load and append data
495
- const response = await this.taskService.getTasks(currentParams.skip, currentParams.limit, currentParams.sortParam || 'createdDate', currentParams.sortOrder);
541
+ // Load and append data, honouring any active search term
542
+ const response = searchTerm
543
+ ? await this.taskService.getTaskWithParam(searchTerm, newSkip, currentParams.limit, currentParams.sortParam || 'createdDate', currentParams.sortOrder)
544
+ : await this.taskService.getTasks(newSkip, currentParams.limit, currentParams.sortParam || 'createdDate', currentParams.sortOrder);
496
545
  if (response instanceof ErrorResponse) {
497
546
  this.utilService.showError(response.ErrorMsg);
498
547
  return;
@@ -690,7 +739,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
690
739
  class TasksComponent extends BaseDataViewComponent {
691
740
  cdr;
692
741
  taskFacade;
693
- user = input();
742
+ user = input('');
694
743
  config = {
695
744
  dataSource: [], // Populate from service
696
745
  columns: columns, // Your existing column definitions
@@ -708,41 +757,6 @@ class TasksComponent extends BaseDataViewComponent {
708
757
  // Custom detail view logic
709
758
  },
710
759
  };
711
- popups = viewChildren('popup');
712
- selectedTaskCode = null;
713
- activeActionType = null;
714
- comment = '';
715
- isModalVisible = false;
716
- tableRowActions = [
717
- // { label: 'Pick Task', action: (data: Task) => {}, divider: false },
718
- // { label: 'Release Task', action: (data: Task) => {}, divider: false },
719
- { label: 'Follow Task', action: (data) => { }, divider: true },
720
- // { label: 'Pass On', action: (data: Task) => {}, divider: false },
721
- // { label: 'Pass Back', action: (data: Task) => {}, divider: false },
722
- {
723
- label: 'Re-Assign',
724
- action: (data) => {
725
- this.activeActionType = ActionType.ReAssign;
726
- this.selectedTaskCode = data.Code;
727
- console.log(this.selectedTaskCode, this.activeActionType);
728
- this.comment = '';
729
- this.nextActors = [];
730
- this.taskFacade.loadNextActors(data.Code, undefined, true).then(() => {
731
- // if (this.popup() && !this.popup()?.dropdownOpen) {
732
- // this.popup()?.toggleDropdown();
733
- // }
734
- });
735
- },
736
- divider: true,
737
- },
738
- { label: 'View Operation', action: (data) => { }, divider: false },
739
- ];
740
- nextActions = [];
741
- nextActors = [];
742
- recipientCode = null;
743
- selectedAction = new BehaviorSubject(null);
744
- currentTask = null;
745
- selectedStageCode = null;
746
760
  constructor(cdr, taskFacade) {
747
761
  super();
748
762
  this.cdr = cdr;
@@ -750,16 +764,6 @@ class TasksComponent extends BaseDataViewComponent {
750
764
  this.taskFacade.getRequests$().subscribe((data) => {
751
765
  this.data.set(data);
752
766
  });
753
- // this.taskFacade.getNextActions$().subscribe((data) => {
754
- // this.nextActions = data;
755
- // });
756
- this.taskFacade.getNextActors$().subscribe((data) => {
757
- this.nextActors = data;
758
- const activeUser = this.user();
759
- if (activeUser && data.map(({ Identifier }) => Identifier).includes(activeUser)) {
760
- this.recipientCode = activeUser;
761
- }
762
- });
763
767
  }
764
768
  loadInitialData() {
765
769
  try {
@@ -769,80 +773,16 @@ class TasksComponent extends BaseDataViewComponent {
769
773
  // Handle error
770
774
  }
771
775
  }
772
- handlePopupClose(event) {
773
- console.log('Closing...', event);
774
- if (event) {
775
- this.selectedTaskCode = null;
776
- }
776
+ handleSearch(event) {
777
+ this.taskFacade.search(event.value, this.user());
777
778
  }
778
- onPopupToggled(isOpen, currentPopup) {
779
- if (isOpen) {
780
- this.popups().forEach((popup) => {
781
- if (popup !== currentPopup && popup.dropdownOpen) {
782
- popup.toggleDropdown();
783
- }
784
- });
785
- }
786
- this.handlePopupClose(!isOpen);
787
- }
788
- handleAction(task, popup) {
789
- const action = this.activeActionType;
790
- switch (action) {
791
- case ActionType.ReAssign:
792
- this.taskFacade
793
- .reAssign(task, this.comment, this.recipientCode ?? undefined)
794
- .then(() => {
795
- this.comment = '';
796
- this.nextActors = [];
797
- this.recipientCode = null;
798
- this.selectedAction.next(null);
799
- popup.toggleDropdown();
800
- });
801
- break;
802
- case ActionType.PickTask:
803
- this.taskFacade
804
- .pickTask(task, this.comment, this.recipientCode ?? undefined, this.selectedStageCode ?? undefined)
805
- .then(() => {
806
- this.comment = '';
807
- this.nextActors = [];
808
- this.recipientCode = null;
809
- this.selectedAction.next(null);
810
- this.selectedStageCode = null;
811
- popup.toggleDropdown();
812
- });
813
- break;
814
- case ActionType.SkipTo:
815
- // const selectedAction = this.selectedAction.getValue();
816
- // console.log('Selected Action for Skip:', selectedAction);
817
- // console.log('Task for Skip:', task);
818
- // console.log('Comment for Skip:', this.comment);
819
- // console.log('Recipient Code for Skip:', this.recipientCode);
820
- // if (selectedAction) {
821
- // this.facade
822
- // .skipTo(
823
- // task.CurrentStages[0],
824
- // selectedAction.ToStage,
825
- // task,
826
- // this.comment,
827
- // this.recipientCode
828
- // )
829
- // .then(() => {
830
- // this.comment = '';
831
- // this.nextActions = [];
832
- // this.recipientCode = null;
833
- // this.selectedAction.next(null);
834
- // popup.toggleDropdown();
835
- // });
836
- // }
837
- break;
838
- default:
839
- break;
840
- }
779
+ getActionNamesForTask(task) {
780
+ return ['followtask', 'reassign'];
841
781
  }
842
782
  onStateChange(event) {
843
783
  switch (event.key) {
844
- case 'create':
845
- var newItem = new TaskModel({
784
+ case 'create': {
785
+ const newItem = new TaskModel({
846
786
  WorkflowCode: '',
847
787
  Status: TaskStatus.Active,
848
788
  Flowable: '',
@@ -852,27 +792,18 @@ class TasksComponent extends BaseDataViewComponent {
852
792
  DataState: ObjectState.New,
853
793
  });
854
794
  this.taskFacade.addNewRequest(newItem);
855
- // const cardData: CardData = {
856
- // selected: false,
857
- // title: ,
858
- // data: newGroup,
859
- // body: [],
860
- // children: [],
861
- // };
862
- // this.data = this.data.concat([newGroup]);
863
- // this.cardData.push(cardData);
864
- // this.userCardClicked(cardData);
865
795
  this.dataView.isTableView = false;
796
+ // CardDataViewComponent matches clicks against its cardDataList input,
797
+ // which only receives the new card after a change-detection pass. Force
798
+ // one so the freshly added card is resolvable before we open it.
799
+ this.cdr.detectChanges();
800
+ const card = this.cardData().find((c) => c.data === newItem);
801
+ if (card) {
802
+ this.currentData = this.cardDataView.onItemClick(card);
803
+ this.cdr.detectChanges();
804
+ }
866
805
  break;
867
- // case 'filter':
868
- // this.showFilter = event.value;
869
- // break;
870
- // case 'sort':
871
- // this.showSort = event.value;
872
- // break;
873
- // case 'column':
874
- // this.showColumn = event.value;
875
- // break;
806
+ }
876
807
  default:
877
808
  break;
878
809
  }
@@ -896,23 +827,12 @@ class TasksComponent extends BaseDataViewComponent {
896
827
  await this.taskFacade.addRequest(payload);
897
828
  }
898
829
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TasksComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: TaskFacade }], target: i0.ɵɵFactoryTarget.Component });
899
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: TasksComponent, selector: "lib-tasks", inputs: { user: { classPropertyName: "user", publicName: "user", isSignal: true, isRequired: false, transformFunction: null } }, providers: [TasksService, TaskFacade, TaskState], viewQueries: [{ propertyName: "popups", predicate: ["popup"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"space-y-8\">\n <verben-data-view #vdv [viewState]=\"{\n isSearch: true,\n isColumn: true,\n isFilter: true,\n isSort: true,\n isExport: true,\n isSelect: true,\n isCreate: true,\n isToggle: true,\n }\" [buttonClass]=\"'my-custom-button-class'\" [iconClass]=\"'my-icon-class'\"\n [activeIconClass]=\"'my-active-icon-class'\" [selectedColumnCount]=\"0\" [selectedSortCount]=\"0\"\n [selectedFilterTableCount]=\"0\" (viewChange)=\"onViewChange($event)\" (stateChange)=\"onStateChange($event)\">\n <div table-content>\n <lib-data-table [data]=\"data()\" [columns]=\"config.columns\" [styleConfig]=\"styles\"\n (selectionChange)=\"onSelectionChange($event)\">\n <ng-container libColumn=\"history\">\n <ng-template #cell let-value>\n <a [routerLink]=\"['/workflow/task-history', value]\" routerLinkActive=\"router-link-active\"\n class=\"underline text-[#0000FF]\">view history</a>\n </ng-template>\n </ng-container>\n\n <ng-container libColumn=\"workflow\">\n <ng-template #cell let-value>\n <a [routerLink]=\"['/workflow/workflows', value]\" routerLinkActive=\"router-link-active\"\n class=\"underline text-[#0000FF]\">view Workflow</a>\n </ng-template>\n </ng-container>\n\n <ng-container libColumn=\"actions\">\n <ng-template #cell let-row=\"row\">\n <verben-pop-Up #popup [customStyles]=\"{ 'z-index': '99' }\" [enableMouseLeave]=\"false\" [customStyles]=\"{\n border: '1px solid #d4a10780',\n borderRadius: '5px',\n backgroundColor: 'white'\n }\" (dropdownOpenChange)=\"onPopupToggled($event, popup)\">\n <div dropdown-trigger class=\"cursor-pointer p-2 -m-2 inline-flex items-center justify-center\">\n <verben-svg icon=\"dots\" [width]=\"3\" [height]=\"18\" class=\"w-auto\"></verben-svg>\n </div>\n <div class=\"bg-white rounded-sm\" dropdown-content>\n @for (item of tableRowActions; track item.label) {\n\n <verben-pop-Up #popup2 [customStyles]=\"{ 'z-index': '99' }\" [enableMouseLeave]=\"false\" [customStyles]=\"{\n border: '1px solid #d4a10780',\n borderRadius: '5px',\n backgroundColor: 'white'\n }\" (dropdownOpenChange)=\"handlePopupClose($event)\">\n <div (click)=\"item.action(row)\" dropdown-trigger class=\"cursor-pointer py-2 px-3 hover:bg-primary\">\n {{ item.label }}\n </div>\n <div class=\"bg-white rounded-sm\" dropdown-content>\n <div style=\"width: 16rem\">\n <div class=\"flex items-center gap-4 justify-between h-12 px-2 pt-4\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g opacity=\"0.6\">\n <path\n d=\"M6.74649 8.00338C6.91483 8.1347 7.0252 8.20455 7.11531 8.29396C7.98846 9.16222 8.85742 10.0347 9.72917 10.905C9.87167 11.0475 9.99391 11.1921 9.99321 11.4129C9.99251 11.6462 9.89472 11.8152 9.69564 11.9256C9.49307 12.038 9.2926 12.0206 9.10469 11.8899C9.03833 11.8438 8.98175 11.7845 8.92378 11.7272C7.85574 10.6592 6.79678 9.58203 5.71477 8.52867C5.3711 8.19407 5.38437 7.79173 5.70779 7.47599C6.7884 6.42123 7.84875 5.34551 8.91539 4.27607C9.11377 4.07769 9.32054 3.92262 9.623 4.04137C9.97924 4.18107 10.112 4.58901 9.89472 4.90335C9.82976 4.99765 9.74174 5.07728 9.66002 5.1597C8.80642 6.01469 7.95283 6.86968 7.09645 7.72257C7.01472 7.8043 6.91553 7.86856 6.74579 8.00408L6.74649 8.00338Z\"\n fill=\"black\" />\n </g>\n </svg>\n\n <h3 class=\"text-sm font-medium\">Select Assignee</h3>\n </div>\n\n <div class=\"grid gap-2 max-h-96 overflow-y-auto p-2\">\n <!-- <verben-drop-down\n label=\"Action\"\n styleClass=\"w-full\"\n width=\"100%\"\n [multiselect]=\"false\"\n [filter]=\"true\"\n [showClear]=\"true\"\n placeholder=\"Select Action\"\n [options]=\"nextActions\"\n id=\"actions\"\n optionLabel=\"Name\"\n [ngModel]=\"selectedAction | async\"\n (ngModelChange)=\"selectedAction.next($event)\"\n class=\"form-control\"\n >\n </verben-drop-down> -->\n @if (\n item.label === 'Pick Task'\n ) {\n <verben-drop-down label=\"Stages\" styleClass=\"w-full\" width=\"100%\" [multiselect]=\"false\"\n [filter]=\"true\" filterBy=\"Name\" [showClear]=\"true\" placeholder=\"Select Stage\"\n [options]=\"currentTask?.FullStages || []\" id=\"stages\" optionLabel=\"Name\"\n [(ngModel)]=\"selectedStageCode\" class=\"form-control\">\n </verben-drop-down>\n } @else {\n <verben-drop-down label=\"Actors\" styleClass=\"w-full\" width=\"100%\" [multiselect]=\"false\"\n [filter]=\"true\" filterBy=\"Name\" [showClear]=\"true\" placeholder=\"Select Actor\" [options]=\"nextActors\"\n id=\"actors\" optionLabel=\"Name\" optionValue=\"Identifier\" [(ngModel)]=\"recipientCode\"\n class=\"form-control\">\n </verben-drop-down>\n }\n\n <textarea [(ngModel)]=\"comment\" placeholder=\"Enter Comment\"\n class=\"w-full p-1 text-xs border border-primary rounded-md\" style=\"height: 8rem\"\n [cols]=\"8\"></textarea>\n\n <verbena-button [disable]=\"!comment\" [text]=\"activeActionType ?? ''\"\n (click)=\"handleAction(row, popup)\" class=\"text-xs w-full\" bgColor=\"#FFE681\"\n textColor=\"#404040\" borderRadius=\"10px\" fontSize=\"14px\" pd=\"10px 20px\" width=\"100%\"\n height=\"32px\">\n {{ activeActionType }}\n </verbena-button>\n </div>\n </div>\n </div>\n </verben-pop-Up>\n\n @if (item.divider) {\n <hr class=\"bg-[#FFE681] h-1 rounded-xl border-0\" />\n } }\n </div>\n </verben-pop-Up>\n </ng-template>\n <ng-template #header>\n <strong>Actions</strong>\n </ng-template>\n </ng-container>\n </lib-data-table>\n </div>\n\n <div card-content>\n <verben-card-data-view borderRadius=\"12px\" (loadMoreClick)=\"loadMore()\" #vdcv dataId=\"Id\" border=\"5px\"\n [cardDataList]=\"cardData()\" rbgColor=\"#f5f6f9\" mg=\"20px\">\n <verben-left-card-data-view class=\"space-y-7\">\n <verben-left-card-data #vlcd [parent]=\"vdcv\" dataId=\"Code\"\n class=\"bg-secondary-100 rounded-xl border-primary border-[1px]\" [cardDataList]=\"cardData()\">\n <ng-template #card let-cardItem>\n <div (click)=\"currentData = vdcv.onItemClick(cardItem)\" class=\"flex\">\n <div (click)=\"currentData = vdcv.onItemClick(cardItem)\"\n class=\"flex cursor-pointer w-full bg-secondary rounded-xl\">\n <div class=\"w-3 rounded-xl rounded-tr-none rounded-br-none\" [ngClass]=\"\n cardItem.selected ? 'bg-primary' : 'bg-secondary-200'\n \"></div>\n <div class=\"flex flex-col py-2 px-4 w-full\">\n <div class=\"flex items-center gap-4 justify-between\">\n <div class=\"grid gap-y-2\">\n <span class=\"font-semibold text-[#404040]\">{{\n cardItem.title\n }}</span>\n <p class=\"flex items-center\">\n <!-- <label for=\"phone\" class=\"text-[10px] font-light\">Current Actors:</label> -->\n @if (cardItem.data.CurrentActors && cardItem.data.CurrentActors.length > 0) {\n @if (cardItem.data.CurrentActors.length === 1) {\n <span id=\"phone\" class=\"text-sm\">{{ cardItem.data.CurrentActors[0].Identifier }}</span>\n } @else {\n <verben-tooltip [top]=\"'0px'\" [textColor]=\"'#000'\" [backgroundColor]=\"'#D3D3D3'\" [left]=\"'0'\"\n [tooltipContent]=\"actorsTooltipTemplate\" #actorsTooltip>\n <span id=\"phone\" class=\"text-sm cursor-pointer\">\n {{ cardItem.data.CurrentActors[0].Identifier }} and {{ cardItem.data.CurrentActors.length\n - 1 }} others\n </span>\n </verben-tooltip>\n\n <ng-template #actorsTooltipTemplate>\n <div class=\"p-2\">\n <p class=\"text-xs font-semibold mb-1\">Current Actors:</p>\n <ul class=\"list-disc list-inside\">\n @for (actor of cardItem.data.CurrentActors; track actor.Identifier) {\n <li class=\"text-xs\">{{ actor.Identifier }}</li>\n }\n </ul>\n </div>\n </ng-template>\n }\n } @else {\n <span id=\"phone\" class=\"text-sm text-gray-400\">No actors assigned</span>\n }\n </p>\n </div>\n\n <div class=\"grid gap-y-2\">\n <span for=\"role\" class=\"font-light\">{{\n cardItem.data.Code\n }}</span>\n\n <div (click)=\"$event.stopPropagation();\" class=\"flex items-end gap-4\">\n <a [routerLink]=\"[\n '/workflow/task-history',\n cardItem.data.Code\n ]\" routerLinkActive=\"router-link-active\"\n class=\"underline text-[#0000FF] text-xs relative z-10\">view\n history</a>\n\n <verben-pop-Up #popup [customStyles]=\"{ 'z-index': '99' }\" [enableMouseLeave]=\"false\"\n [customStyles]=\"{\n border: '1px solid #d4a10780',\n borderRadius: '5px',\n backgroundColor: 'white'\n }\" (dropdownOpenChange)=\"onPopupToggled($event, popup)\">\n <div dropdown-trigger\n class=\"cursor-pointer p-2 -m-2 inline-flex items-center justify-center\">\n <verben-svg icon=\"dots\" [width]=\"3\" [height]=\"18\" class=\"w-auto\"></verben-svg>\n </div>\n <div class=\"bg-white rounded-sm\" dropdown-content>\n @for (item of tableRowActions; track item.label) {\n\n <verben-pop-Up #popup2 [customStyles]=\"{ 'z-index': '99' }\" [enableMouseLeave]=\"false\"\n [customStyles]=\"{\n border: '1px solid #d4a10780',\n borderRadius: '5px',\n backgroundColor: 'white'\n }\" (dropdownOpenChange)=\"handlePopupClose($event)\">\n <div (click)=\"item.action(cardItem.data)\" dropdown-trigger\n class=\"cursor-pointer py-2 px-3 hover:bg-primary\">\n {{ item.label }}\n </div>\n <div class=\"bg-white rounded-sm\" dropdown-content>\n <div style=\"width: 16rem\">\n <div class=\"flex items-center gap-4 justify-between h-12 px-2 pt-4\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g opacity=\"0.6\">\n <path\n d=\"M6.74649 8.00338C6.91483 8.1347 7.0252 8.20455 7.11531 8.29396C7.98846 9.16222 8.85742 10.0347 9.72917 10.905C9.87167 11.0475 9.99391 11.1921 9.99321 11.4129C9.99251 11.6462 9.89472 11.8152 9.69564 11.9256C9.49307 12.038 9.2926 12.0206 9.10469 11.8899C9.03833 11.8438 8.98175 11.7845 8.92378 11.7272C7.85574 10.6592 6.79678 9.58203 5.71477 8.52867C5.3711 8.19407 5.38437 7.79173 5.70779 7.47599C6.7884 6.42123 7.84875 5.34551 8.91539 4.27607C9.11377 4.07769 9.32054 3.92262 9.623 4.04137C9.97924 4.18107 10.112 4.58901 9.89472 4.90335C9.82976 4.99765 9.74174 5.07728 9.66002 5.1597C8.80642 6.01469 7.95283 6.86968 7.09645 7.72257C7.01472 7.8043 6.91553 7.86856 6.74579 8.00408L6.74649 8.00338Z\"\n fill=\"black\" />\n </g>\n </svg>\n\n <h3 class=\"text-sm font-medium\">Select Assignee</h3>\n </div>\n\n <div class=\"grid gap-2 max-h-96 overflow-y-auto p-2\">\n <!-- <verben-drop-down\n label=\"Action\"\n styleClass=\"w-full\"\n width=\"100%\"\n [multiselect]=\"false\"\n [filter]=\"true\"\n [showClear]=\"true\"\n placeholder=\"Select Action\"\n [options]=\"nextActions\"\n id=\"actions\"\n optionLabel=\"Name\"\n [ngModel]=\"selectedAction | async\"\n (ngModelChange)=\"selectedAction.next($event)\"\n class=\"form-control\"\n >\n </verben-drop-down> -->\n\n <verben-drop-down label=\"Actors\" styleClass=\"w-full\" width=\"100%\"\n [multiselect]=\"false\" [filter]=\"true\" filterBy=\"Name\" [showClear]=\"true\"\n placeholder=\"Select Actor\" [options]=\"nextActors\" id=\"actors\"\n optionLabel=\"Name\" optionValue=\"Identifier\" [(ngModel)]=\"recipientCode\"\n class=\"form-control\">\n </verben-drop-down>\n\n <textarea [(ngModel)]=\"comment\" placeholder=\"Enter Comment\"\n class=\"w-full p-1 text-xs border border-primary rounded-md\" style=\"height: 8rem\"\n [cols]=\"8\"></textarea>\n\n <verbena-button [disable]=\"!comment\" [text]=\"activeActionType ?? ''\"\n (click)=\"handleAction(cardItem.data, popup)\" class=\"text-xs w-full\"\n bgColor=\"#FFE681\" textColor=\"#404040\" borderRadius=\"10px\" fontSize=\"14px\"\n pd=\"10px 20px\" width=\"100%\" height=\"32px\">\n {{ activeActionType }}\n </verbena-button>\n </div>\n </div>\n </div>\n </verben-pop-Up>\n\n @if (item.divider) {\n <hr class=\"bg-[#FFE681] h-1 rounded-xl border-0\" />\n } }\n </div>\n </verben-pop-Up>\n </div>\n </div>\n </div>\n\n <!-- <div class=\"flex\">\n <span class=\"font-normal text-sm\">{{ item.title }}</span>\n </div>\n @for (ciItem of item.body; track ciItem.value) {\n <div class=\"\">\n <span class=\"text-muted font-light text-xs\"\n >{{ ciItem.title }}:</span\n >\n <span class=\"text-black\">{{ ciItem.value }}</span>\n </div>\n } -->\n </div>\n </div>\n </div>\n </ng-template>\n </verben-left-card-data>\n </verben-left-card-data-view>\n\n <verben-right-card-data-view>\n <ng-template #parent>\n <!-- <lib-user-request-form\n [currentData]=\"currentData\"\n (switchView)=\"vdv.toggleView()\"\n (onApproval)=\"onApprove($event)\"\n ></lib-user-request-form> -->\n <tasks-form [currentData]=\"currentData\" (switchView)=\"vdv.toggleView()\"\n (onSave)=\"onSave($event)\"></tasks-form>\n </ng-template>\n </verben-right-card-data-view>\n\n <verben-card-data-view-footer class=\"w-full\">\n <div [ngClass]=\"{\n 'flex gap-2 items-center': true,\n 'justify-end': true\n }\">\n <!-- <verbena-button\n *ngIf=\"!vdcv.hasCurrentItem()\"\n [fontWeight]=\"'bold'\"\n [bgColor]=\"'#8E8D87'\"\n [borderRadius]=\"'4px'\"\n [textColor]=\"'#fff'\"\n [pd]=\"'9.79px 37.28px'\"\n [text]=\"'Delete'\"\n >\n </verbena-button> -->\n <div class=\"flex {{\n vdcv.hasCurrentItem() ? 'flex-1' : ''\n }} justify-end items-center gap-5\">\n <span class=\"paginator-text\">{{ cardData().length }} records loaded</span>\n <button (click)=\"loadMore()\" class=\"load-more view-links text-[#3479E9] underline\">\n Load more\n </button>\n </div>\n </div>\n </verben-card-data-view-footer>\n </verben-card-data-view>\n </div>\n <div column-content>\n <lib-data-columns [columns]=\"config.columns\" (columnsUpdated)=\"onColumnsUpdated($event)\"></lib-data-columns>\n </div>\n <div filter-content>\n <verben-table-filter [border]=\"'1px solid rgba(212, 160, 7, 1)'\" borderRadius=\"10px\"\n boxShadow=\"2px 2px 2px 0px silver\" bgColor=\"white\" width=\"420px\" textColor=\"black\" pd=\"1rem\"\n primaryColor=\"#FFE681\" secondaryColor=\"#3479E9\" tertiaryColor=\"#404040\" [filterOptions]=\"filterArray\"\n [maxFilterLength]=\"3\"></verben-table-filter>\n </div>\n <div sort-content>\n <lib-data-sort [columns]=\"config.columns\" [data]=\"data()\" (sortApplied)=\"onSortUpdated($event)\"></lib-data-sort>\n </div>\n <div export-content>\n <lib-data-export [data]=\"data()\" (exportDataEvent)=\"handleExport($event)\">\n </lib-data-export>\n </div>\n </verben-data-view>\n\n <div *ngIf=\"vdv.isTableView\" class=\"flex gap-2 justify-between\">\n <div class=\"message-log-button-container flex justify-between\">\n <!-- <verbena-button\n [fontWeight]=\"'bold'\"\n [bgColor]=\"'#8E8D87'\"\n [borderRadius]=\"'4px'\"\n [textColor]=\"'#fff'\"\n [pd]=\"'9.79px 37.28px'\"\n [text]=\"'Delete'\"\n >\n </verbena-button> -->\n </div>\n <div class=\"flex justify-end items-center gap-5\">\n <span class=\"paginator-text\">{{ cardData().length }} records loaded</span>\n <button (click)=\"loadMore()\" class=\"load-more view-links text-[#3479E9] underline\">\n Load more\n </button>\n </div>\n </div>\n</div>\n", styles: [".view-links{color:#3479e9;cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3$1.DataTableComponent, selector: "lib-data-table", inputs: ["data", "columns", "dataKey", "formGroupConfig", "groupBy", "useVirtualScroll", "virtualScrollItemSize", "styleConfig"], outputs: ["rowEdit", "rowSave", "rowRevert", "rowDelete", "selectionChange"] }, { kind: "directive", type: i3$1.ColumnDirective, selector: "[libColumn]", inputs: ["libColumn"] }, { kind: "component", type: i3$1.SvgComponent, selector: "verben-svg", inputs: ["icon", "width", "height", "fill", "stroke", "type", "size"] }, { kind: "component", type: i3$1.DataViewComponent, selector: "verben-data-view", inputs: ["buttonClass", "iconClass", "activeIconClass", "columnCustomClass", "filterCustomClass", "sortCustomClass", "extendCustomClass", "exportCustomClass", "selectCustomClass", "importCustomClass", "zIndex", "createCustomClass", "tableIcon", "cardIcon", "cardClass", "tableClass", "searchKey", "searchValue", "viewState", "searchTemplate", "importTemplate", "columnTemplate", "extendTemplate", "filterTemplate", "sortTemplate", "children", "exportTemplate", "createTemplate", "selectedColumnCount", "selectedSortCount", "selectedFilterTableCount", "inputWidth", "milliseconds", "showColumnChild", "showSortChild", "showFilterChild", "showImportChild", "showExportChild", "showExtendChild", "create", "showSelected", "isTableView"], outputs: ["viewChange", "stateChange", "onSearchChange"] }, { kind: "component", type: i3$1.CardDataViewComponent, selector: "verben-card-data-view", inputs: ["pd", "mg", "lHeight", "rHeight", "rWidth", "lWidth", "textColor", "lbgColor", "rbgColor", "border", "display", "borderRadius", "activeCss", "inActiveCss", "displayAsRow", "cardDataList", "dataId", "totalRecords", "footer", "noOfVisibleChildren", "showEditIcon", "onItemClick", "onCardChildClick"], outputs: ["editClicked", "loadMoreClick"] }, { kind: "component", type: i3$1.LeftCardDataComponent, selector: "verben-left-card-data", inputs: ["pd", "mg", "height", "weight", "activeCss", "inActiveCss", "cardDataList", "iconCollapse", "iconExpanded", "parent", "dataId"] }, { kind: "component", type: i3$1.LeftCardDataViewComponent, selector: "verben-left-card-data-view", inputs: ["cardDataList"] }, { kind: "component", type: i3$1.RightCardDataViewComponent, selector: "verben-right-card-data-view", inputs: ["parentData", "chilData", "meth"] }, { kind: "component", type: i3$1.CardDataViewFooterComponent, selector: "verben-card-data-view-footer" }, { kind: "component", type: i3$1.TableFilterComponent, selector: "verben-table-filter", inputs: ["filterOptions", "pd", "mg", "height", "width", "bgColor", "boxShadow", "textColor", "primaryColor", "secondaryColor", "tertiaryColor", "border", "borderRadius", "selectWidth", "maxFilterLength", "tooltip"], outputs: ["filtersApplied", "resetSortData"] }, { kind: "component", type: i3$1.DataExportComponent, selector: "lib-data-export", inputs: ["columns", "data", "dataFetchUrl", "dataQueryParameters"], outputs: ["exportDataEvent"] }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3$1.VerbenaButtonComponent, selector: "verbena-button", inputs: ["text", "icon", "useIcon", "svgPosition", "iconPosition", "bgColor", "textColor", "border", "borderRadius", "pd", "width", "height", "fontSize", "fontWeight", "disable", "svgSize", "weight", "variant", "styleType", "svg", "svgWidth", "svgHeight", "iconColor", "svgColor", "buttonClass", "buttonTextClass", "isLoading", "spinnerSize", "spinnerColor"] }, { kind: "component", type: i3$1.DropDownComponent, selector: "verben-drop-down", inputs: ["options", "width", "showHorizontalLine", "horizontalLineColor", "optionLabel", "optionSubLabel", "optionValue", "placeholder", "invalidMessage", "errorPosition", "loadMoreCaption", "display", "showClear", "lazyLoad", "selectKey", "styleClass", "group", "multiselect", "filter", "avoidDuplication", "filterBy", "debounceTime", "minChar", "disabled", "required", "load", "asyncLabel", "search"], outputs: ["optionsChange", "onChange", "onClick", "onClear"] }, { kind: "component", type: i3$1.VerbenPopUpComponent, selector: "verben-pop-Up", inputs: ["dropdownOpen", "dropdownWidth", "color", "customStyles", "popUpClass", "border", "borderRadius", "enableMouseLeave", "cdkPosition"], outputs: ["dropdownOpenChange", "close"] }, { kind: "component", type: i3$1.DataColumnsComponent, selector: "lib-data-columns", inputs: ["columns", "enableDragAndDrop", "maxVisibleItems"], outputs: ["columnsUpdated"] }, { kind: "component", type: i3$1.DataSortComponent, selector: "lib-data-sort", inputs: ["columns", "data", "enableDragAndDrop"], outputs: ["sortApplied", "resetFilter"] }, { kind: "directive", type: i5$1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i3$1.TooltipComponent, selector: "verben-tooltip", inputs: ["tooltipContent", "customClass", "backgroundColor", "textColor", "padding", "borderRadius", "zIndex", "border", "width", "top", "bottom", "left", "right"] }, { kind: "component", type: TasksFormComponent, selector: "tasks-form", inputs: ["currentData"], outputs: ["onTaskFormSave", "onSave"] }] });
830
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: TasksComponent, selector: "lib-tasks", inputs: { user: { classPropertyName: "user", publicName: "user", isSignal: true, isRequired: false, transformFunction: null } }, providers: [TasksService, TaskFacade, TaskState], usesInheritance: true, ngImport: i0, template: "<div class=\"space-y-8\">\n <verben-data-view #vdv [viewState]=\"{\n isSearch: true,\n isColumn: true,\n isFilter: true,\n isSort: true,\n isExport: true,\n isSelect: true,\n isCreate: true,\n isToggle: true,\n }\" [buttonClass]=\"'my-custom-button-class'\" [iconClass]=\"'my-icon-class'\"\n [activeIconClass]=\"'my-active-icon-class'\" [selectedColumnCount]=\"0\" [selectedSortCount]=\"0\"\n [selectedFilterTableCount]=\"0\" (viewChange)=\"onViewChange($event)\" (stateChange)=\"onStateChange($event)\"\n (onSearchChange)=\"handleSearch($event)\">\n <div table-content>\n <lib-data-table [data]=\"data()\" [columns]=\"config.columns\" [styleConfig]=\"styles\"\n (selectionChange)=\"onSelectionChange($event)\">\n <ng-container libColumn=\"history\">\n <ng-template #cell let-value>\n <a [routerLink]=\"['/workflow/task-history', value]\" routerLinkActive=\"router-link-active\"\n class=\"underline text-[#0000FF]\">view history</a>\n </ng-template>\n </ng-container>\n\n <ng-container libColumn=\"workflow\">\n <ng-template #cell let-value>\n <a [routerLink]=\"['/workflow/workflows', value]\" routerLinkActive=\"router-link-active\"\n class=\"underline text-[#0000FF]\">view Workflow</a>\n </ng-template>\n </ng-container>\n\n <ng-container libColumn=\"actions\">\n <ng-template #cell let-row=\"row\">\n <lib-operation-popup [user]=\"user()\" [task]=\"row\" [allowedActions]=\"getActionNamesForTask(row)\"\n (actionComplete)=\"loadInitialData()\">\n <div trigger class=\"cursor-pointer p-2 -m-2 inline-flex items-center justify-center\">\n <verben-svg icon=\"dots\" [width]=\"3\" [height]=\"18\" class=\"w-auto\"></verben-svg>\n </div>\n </lib-operation-popup>\n </ng-template>\n <ng-template #header>\n <strong>Actions</strong>\n </ng-template>\n </ng-container>\n </lib-data-table>\n </div>\n\n <div card-content>\n <verben-card-data-view borderRadius=\"12px\" (loadMoreClick)=\"loadMore()\" #vdcv dataId=\"Id\" border=\"5px\"\n [cardDataList]=\"cardData()\" rbgColor=\"#f5f6f9\" mg=\"20px\">\n <verben-left-card-data-view class=\"space-y-7\">\n <verben-left-card-data #vlcd [parent]=\"vdcv\" dataId=\"Code\"\n class=\"bg-secondary-100 rounded-xl border-primary border-[1px]\" [cardDataList]=\"cardData()\">\n <ng-template #card let-cardItem>\n <div (click)=\"currentData = vdcv.onItemClick(cardItem)\" class=\"flex\">\n <div (click)=\"currentData = vdcv.onItemClick(cardItem)\"\n class=\"flex cursor-pointer w-full bg-secondary rounded-xl\">\n <div class=\"w-3 rounded-xl rounded-tr-none rounded-br-none\" [ngClass]=\"\n cardItem.selected ? 'bg-primary' : 'bg-secondary-200'\n \"></div>\n <div class=\"flex flex-col py-2 px-4 w-full\">\n <div class=\"flex items-center gap-4 justify-between\">\n <div class=\"grid gap-y-2\">\n <span class=\"font-semibold text-[#404040]\">{{\n cardItem.title\n }}</span>\n <p class=\"flex items-center\">\n <!-- <label for=\"phone\" class=\"text-[10px] font-light\">Current Actors:</label> -->\n @if (cardItem.data.CurrentActors && cardItem.data.CurrentActors.length > 0) {\n @if (cardItem.data.CurrentActors.length === 1) {\n <span id=\"phone\" class=\"text-sm\">{{ cardItem.data.CurrentActors[0].Identifier }}</span>\n } @else {\n <verben-tooltip [top]=\"'0px'\" [textColor]=\"'#000'\" [backgroundColor]=\"'#D3D3D3'\" [left]=\"'0'\"\n [tooltipContent]=\"actorsTooltipTemplate\" #actorsTooltip>\n <span id=\"phone\" class=\"text-sm cursor-pointer\">\n {{ cardItem.data.CurrentActors[0].Identifier }} and {{ cardItem.data.CurrentActors.length\n - 1 }} others\n </span>\n </verben-tooltip>\n\n <ng-template #actorsTooltipTemplate>\n <div class=\"p-2\">\n <p class=\"text-xs font-semibold mb-1\">Current Actors:</p>\n <ul class=\"list-disc list-inside\">\n @for (actor of cardItem.data.CurrentActors; track actor.Identifier) {\n <li class=\"text-xs\">{{ actor.Identifier }}</li>\n }\n </ul>\n </div>\n </ng-template>\n }\n } @else {\n <span id=\"phone\" class=\"text-sm text-gray-400\">No actors assigned</span>\n }\n </p>\n </div>\n\n <div class=\"grid gap-y-2\">\n <span for=\"role\" class=\"font-light\">{{\n cardItem.data.Code\n }}</span>\n\n <div (click)=\"$event.stopPropagation();\" class=\"flex items-end gap-4\">\n <a [routerLink]=\"[\n '/workflow/task-history',\n cardItem.data.Code\n ]\" routerLinkActive=\"router-link-active\"\n class=\"underline text-[#0000FF] text-xs relative z-10\">view\n history</a>\n\n <lib-operation-popup [user]=\"user()\" [task]=\"cardItem.data\"\n [allowedActions]=\"getActionNamesForTask(cardItem.data)\" (actionComplete)=\"loadInitialData()\">\n <div trigger class=\"cursor-pointer p-2 -m-2 inline-flex items-center justify-center\">\n <verben-svg icon=\"dots\" [width]=\"3\" [height]=\"18\" class=\"w-auto\"></verben-svg>\n </div>\n </lib-operation-popup>\n </div>\n </div>\n </div>\n\n <!-- <div class=\"flex\">\n <span class=\"font-normal text-sm\">{{ item.title }}</span>\n </div>\n @for (ciItem of item.body; track ciItem.value) {\n <div class=\"\">\n <span class=\"text-muted font-light text-xs\"\n >{{ ciItem.title }}:</span\n >\n <span class=\"text-black\">{{ ciItem.value }}</span>\n </div>\n } -->\n </div>\n </div>\n </div>\n </ng-template>\n </verben-left-card-data>\n </verben-left-card-data-view>\n\n <verben-right-card-data-view>\n <ng-template #parent>\n <!-- <lib-user-request-form\n [currentData]=\"currentData\"\n (switchView)=\"vdv.toggleView()\"\n (onApproval)=\"onApprove($event)\"\n ></lib-user-request-form> -->\n <tasks-form [currentData]=\"currentData\" (switchView)=\"vdv.toggleView()\"\n (onSave)=\"onSave($event)\"></tasks-form>\n </ng-template>\n </verben-right-card-data-view>\n\n <verben-card-data-view-footer class=\"w-full\">\n <div [ngClass]=\"{\n 'flex gap-2 items-center': true,\n 'justify-end': true\n }\">\n <!-- <verbena-button\n *ngIf=\"!vdcv.hasCurrentItem()\"\n [fontWeight]=\"'bold'\"\n [bgColor]=\"'#8E8D87'\"\n [borderRadius]=\"'4px'\"\n [textColor]=\"'#fff'\"\n [pd]=\"'9.79px 37.28px'\"\n [text]=\"'Delete'\"\n >\n </verbena-button> -->\n <div class=\"flex {{\n vdcv.hasCurrentItem() ? 'flex-1' : ''\n }} justify-end items-center gap-5\">\n <span class=\"paginator-text\">{{ cardData().length }} records loaded</span>\n <button (click)=\"loadMore()\" class=\"load-more view-links text-[#3479E9] underline\">\n Load more\n </button>\n </div>\n </div>\n </verben-card-data-view-footer>\n </verben-card-data-view>\n </div>\n <div column-content>\n <lib-data-columns [columns]=\"config.columns\" (columnsUpdated)=\"onColumnsUpdated($event)\"></lib-data-columns>\n </div>\n <div filter-content>\n <verben-table-filter [border]=\"'1px solid rgba(212, 160, 7, 1)'\" borderRadius=\"10px\"\n boxShadow=\"2px 2px 2px 0px silver\" bgColor=\"white\" width=\"420px\" textColor=\"black\" pd=\"1rem\"\n primaryColor=\"#FFE681\" secondaryColor=\"#3479E9\" tertiaryColor=\"#404040\" [filterOptions]=\"filterArray\"\n [maxFilterLength]=\"3\"></verben-table-filter>\n </div>\n <div sort-content>\n <lib-data-sort [columns]=\"config.columns\" [data]=\"data()\" (sortApplied)=\"onSortUpdated($event)\"></lib-data-sort>\n </div>\n <div export-content>\n <lib-data-export [data]=\"data()\" (exportDataEvent)=\"handleExport($event)\">\n </lib-data-export>\n </div>\n </verben-data-view>\n\n <div *ngIf=\"vdv.isTableView\" class=\"flex gap-2 justify-between\">\n <div class=\"message-log-button-container flex justify-between\">\n <!-- <verbena-button\n [fontWeight]=\"'bold'\"\n [bgColor]=\"'#8E8D87'\"\n [borderRadius]=\"'4px'\"\n [textColor]=\"'#fff'\"\n [pd]=\"'9.79px 37.28px'\"\n [text]=\"'Delete'\"\n >\n </verbena-button> -->\n </div>\n <div class=\"flex justify-end items-center gap-5\">\n <span class=\"paginator-text\">{{ cardData().length }} records loaded</span>\n <button (click)=\"loadMore()\" class=\"load-more view-links text-[#3479E9] underline\">\n Load more\n </button>\n </div>\n </div>\n</div>\n", styles: [".view-links{color:#3479e9;cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3$1.DataTableComponent, selector: "lib-data-table", inputs: ["data", "columns", "dataKey", "formGroupConfig", "groupBy", "useVirtualScroll", "virtualScrollItemSize", "styleConfig"], outputs: ["rowEdit", "rowSave", "rowRevert", "rowDelete", "selectionChange"] }, { kind: "directive", type: i3$1.ColumnDirective, selector: "[libColumn]", inputs: ["libColumn"] }, { kind: "component", type: i3$1.SvgComponent, selector: "verben-svg", inputs: ["icon", "width", "height", "fill", "stroke", "type", "size"] }, { kind: "component", type: i3$1.DataViewComponent, selector: "verben-data-view", inputs: ["buttonClass", "iconClass", "activeIconClass", "columnCustomClass", "filterCustomClass", "sortCustomClass", "extendCustomClass", "exportCustomClass", "selectCustomClass", "importCustomClass", "zIndex", "createCustomClass", "tableIcon", "cardIcon", "cardClass", "tableClass", "searchKey", "searchValue", "viewState", "searchTemplate", "importTemplate", "columnTemplate", "extendTemplate", "filterTemplate", "sortTemplate", "children", "exportTemplate", "createTemplate", "selectedColumnCount", "selectedSortCount", "selectedFilterTableCount", "inputWidth", "milliseconds", "showColumnChild", "showSortChild", "showFilterChild", "showImportChild", "showExportChild", "showExtendChild", "create", "showSelected", "isTableView"], outputs: ["viewChange", "stateChange", "onSearchChange"] }, { kind: "component", type: i3$1.CardDataViewComponent, selector: "verben-card-data-view", inputs: ["pd", "mg", "lHeight", "rHeight", "rWidth", "lWidth", "textColor", "lbgColor", "rbgColor", "border", "display", "borderRadius", "activeCss", "inActiveCss", "displayAsRow", "cardDataList", "dataId", "totalRecords", "footer", "noOfVisibleChildren", "showEditIcon", "onItemClick", "onCardChildClick"], outputs: ["editClicked", "loadMoreClick"] }, { kind: "component", type: i3$1.LeftCardDataComponent, selector: "verben-left-card-data", inputs: ["pd", "mg", "height", "weight", "activeCss", "inActiveCss", "cardDataList", "iconCollapse", "iconExpanded", "parent", "dataId"] }, { kind: "component", type: i3$1.LeftCardDataViewComponent, selector: "verben-left-card-data-view", inputs: ["cardDataList"] }, { kind: "component", type: i3$1.RightCardDataViewComponent, selector: "verben-right-card-data-view", inputs: ["parentData", "chilData", "meth"] }, { kind: "component", type: i3$1.CardDataViewFooterComponent, selector: "verben-card-data-view-footer" }, { kind: "component", type: i3$1.TableFilterComponent, selector: "verben-table-filter", inputs: ["filterOptions", "pd", "mg", "height", "width", "bgColor", "boxShadow", "textColor", "primaryColor", "secondaryColor", "tertiaryColor", "border", "borderRadius", "selectWidth", "maxFilterLength", "tooltip"], outputs: ["filtersApplied", "resetSortData"] }, { kind: "component", type: i3$1.DataExportComponent, selector: "lib-data-export", inputs: ["columns", "data", "dataFetchUrl", "dataQueryParameters"], outputs: ["exportDataEvent"] }, { kind: "component", type: i3$1.DataColumnsComponent, selector: "lib-data-columns", inputs: ["columns", "enableDragAndDrop", "maxVisibleItems"], outputs: ["columnsUpdated"] }, { kind: "component", type: i3$1.DataSortComponent, selector: "lib-data-sort", inputs: ["columns", "data", "enableDragAndDrop"], outputs: ["sortApplied", "resetFilter"] }, { kind: "directive", type: i4.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i3$1.TooltipComponent, selector: "verben-tooltip", inputs: ["tooltipContent", "customClass", "backgroundColor", "textColor", "padding", "borderRadius", "zIndex", "border", "width", "top", "bottom", "left", "right"] }, { kind: "component", type: i5$1.OperationPopupComponent, selector: "lib-operation-popup", inputs: ["user", "task", "allowedActions"], outputs: ["actionComplete"] }, { kind: "component", type: TasksFormComponent, selector: "tasks-form", inputs: ["currentData"], outputs: ["onTaskFormSave", "onSave"] }] });
900
831
  }
901
832
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TasksComponent, decorators: [{
902
833
  type: Component,
903
- args: [{ selector: 'lib-tasks', providers: [TasksService, TaskFacade, TaskState], template: "<div class=\"space-y-8\">\n <verben-data-view #vdv [viewState]=\"{\n isSearch: true,\n isColumn: true,\n isFilter: true,\n isSort: true,\n isExport: true,\n isSelect: true,\n isCreate: true,\n isToggle: true,\n }\" [buttonClass]=\"'my-custom-button-class'\" [iconClass]=\"'my-icon-class'\"\n [activeIconClass]=\"'my-active-icon-class'\" [selectedColumnCount]=\"0\" [selectedSortCount]=\"0\"\n [selectedFilterTableCount]=\"0\" (viewChange)=\"onViewChange($event)\" (stateChange)=\"onStateChange($event)\">\n <div table-content>\n <lib-data-table [data]=\"data()\" [columns]=\"config.columns\" [styleConfig]=\"styles\"\n (selectionChange)=\"onSelectionChange($event)\">\n <ng-container libColumn=\"history\">\n <ng-template #cell let-value>\n <a [routerLink]=\"['/workflow/task-history', value]\" routerLinkActive=\"router-link-active\"\n class=\"underline text-[#0000FF]\">view history</a>\n </ng-template>\n </ng-container>\n\n <ng-container libColumn=\"workflow\">\n <ng-template #cell let-value>\n <a [routerLink]=\"['/workflow/workflows', value]\" routerLinkActive=\"router-link-active\"\n class=\"underline text-[#0000FF]\">view Workflow</a>\n </ng-template>\n </ng-container>\n\n <ng-container libColumn=\"actions\">\n <ng-template #cell let-row=\"row\">\n <verben-pop-Up #popup [customStyles]=\"{ 'z-index': '99' }\" [enableMouseLeave]=\"false\" [customStyles]=\"{\n border: '1px solid #d4a10780',\n borderRadius: '5px',\n backgroundColor: 'white'\n }\" (dropdownOpenChange)=\"onPopupToggled($event, popup)\">\n <div dropdown-trigger class=\"cursor-pointer p-2 -m-2 inline-flex items-center justify-center\">\n <verben-svg icon=\"dots\" [width]=\"3\" [height]=\"18\" class=\"w-auto\"></verben-svg>\n </div>\n <div class=\"bg-white rounded-sm\" dropdown-content>\n @for (item of tableRowActions; track item.label) {\n\n <verben-pop-Up #popup2 [customStyles]=\"{ 'z-index': '99' }\" [enableMouseLeave]=\"false\" [customStyles]=\"{\n border: '1px solid #d4a10780',\n borderRadius: '5px',\n backgroundColor: 'white'\n }\" (dropdownOpenChange)=\"handlePopupClose($event)\">\n <div (click)=\"item.action(row)\" dropdown-trigger class=\"cursor-pointer py-2 px-3 hover:bg-primary\">\n {{ item.label }}\n </div>\n <div class=\"bg-white rounded-sm\" dropdown-content>\n <div style=\"width: 16rem\">\n <div class=\"flex items-center gap-4 justify-between h-12 px-2 pt-4\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g opacity=\"0.6\">\n <path\n d=\"M6.74649 8.00338C6.91483 8.1347 7.0252 8.20455 7.11531 8.29396C7.98846 9.16222 8.85742 10.0347 9.72917 10.905C9.87167 11.0475 9.99391 11.1921 9.99321 11.4129C9.99251 11.6462 9.89472 11.8152 9.69564 11.9256C9.49307 12.038 9.2926 12.0206 9.10469 11.8899C9.03833 11.8438 8.98175 11.7845 8.92378 11.7272C7.85574 10.6592 6.79678 9.58203 5.71477 8.52867C5.3711 8.19407 5.38437 7.79173 5.70779 7.47599C6.7884 6.42123 7.84875 5.34551 8.91539 4.27607C9.11377 4.07769 9.32054 3.92262 9.623 4.04137C9.97924 4.18107 10.112 4.58901 9.89472 4.90335C9.82976 4.99765 9.74174 5.07728 9.66002 5.1597C8.80642 6.01469 7.95283 6.86968 7.09645 7.72257C7.01472 7.8043 6.91553 7.86856 6.74579 8.00408L6.74649 8.00338Z\"\n fill=\"black\" />\n </g>\n </svg>\n\n <h3 class=\"text-sm font-medium\">Select Assignee</h3>\n </div>\n\n <div class=\"grid gap-2 max-h-96 overflow-y-auto p-2\">\n <!-- <verben-drop-down\n label=\"Action\"\n styleClass=\"w-full\"\n width=\"100%\"\n [multiselect]=\"false\"\n [filter]=\"true\"\n [showClear]=\"true\"\n placeholder=\"Select Action\"\n [options]=\"nextActions\"\n id=\"actions\"\n optionLabel=\"Name\"\n [ngModel]=\"selectedAction | async\"\n (ngModelChange)=\"selectedAction.next($event)\"\n class=\"form-control\"\n >\n </verben-drop-down> -->\n @if (\n item.label === 'Pick Task'\n ) {\n <verben-drop-down label=\"Stages\" styleClass=\"w-full\" width=\"100%\" [multiselect]=\"false\"\n [filter]=\"true\" filterBy=\"Name\" [showClear]=\"true\" placeholder=\"Select Stage\"\n [options]=\"currentTask?.FullStages || []\" id=\"stages\" optionLabel=\"Name\"\n [(ngModel)]=\"selectedStageCode\" class=\"form-control\">\n </verben-drop-down>\n } @else {\n <verben-drop-down label=\"Actors\" styleClass=\"w-full\" width=\"100%\" [multiselect]=\"false\"\n [filter]=\"true\" filterBy=\"Name\" [showClear]=\"true\" placeholder=\"Select Actor\" [options]=\"nextActors\"\n id=\"actors\" optionLabel=\"Name\" optionValue=\"Identifier\" [(ngModel)]=\"recipientCode\"\n class=\"form-control\">\n </verben-drop-down>\n }\n\n <textarea [(ngModel)]=\"comment\" placeholder=\"Enter Comment\"\n class=\"w-full p-1 text-xs border border-primary rounded-md\" style=\"height: 8rem\"\n [cols]=\"8\"></textarea>\n\n <verbena-button [disable]=\"!comment\" [text]=\"activeActionType ?? ''\"\n (click)=\"handleAction(row, popup)\" class=\"text-xs w-full\" bgColor=\"#FFE681\"\n textColor=\"#404040\" borderRadius=\"10px\" fontSize=\"14px\" pd=\"10px 20px\" width=\"100%\"\n height=\"32px\">\n {{ activeActionType }}\n </verbena-button>\n </div>\n </div>\n </div>\n </verben-pop-Up>\n\n @if (item.divider) {\n <hr class=\"bg-[#FFE681] h-1 rounded-xl border-0\" />\n } }\n </div>\n </verben-pop-Up>\n </ng-template>\n <ng-template #header>\n <strong>Actions</strong>\n </ng-template>\n </ng-container>\n </lib-data-table>\n </div>\n\n <div card-content>\n <verben-card-data-view borderRadius=\"12px\" (loadMoreClick)=\"loadMore()\" #vdcv dataId=\"Id\" border=\"5px\"\n [cardDataList]=\"cardData()\" rbgColor=\"#f5f6f9\" mg=\"20px\">\n <verben-left-card-data-view class=\"space-y-7\">\n <verben-left-card-data #vlcd [parent]=\"vdcv\" dataId=\"Code\"\n class=\"bg-secondary-100 rounded-xl border-primary border-[1px]\" [cardDataList]=\"cardData()\">\n <ng-template #card let-cardItem>\n <div (click)=\"currentData = vdcv.onItemClick(cardItem)\" class=\"flex\">\n <div (click)=\"currentData = vdcv.onItemClick(cardItem)\"\n class=\"flex cursor-pointer w-full bg-secondary rounded-xl\">\n <div class=\"w-3 rounded-xl rounded-tr-none rounded-br-none\" [ngClass]=\"\n cardItem.selected ? 'bg-primary' : 'bg-secondary-200'\n \"></div>\n <div class=\"flex flex-col py-2 px-4 w-full\">\n <div class=\"flex items-center gap-4 justify-between\">\n <div class=\"grid gap-y-2\">\n <span class=\"font-semibold text-[#404040]\">{{\n cardItem.title\n }}</span>\n <p class=\"flex items-center\">\n <!-- <label for=\"phone\" class=\"text-[10px] font-light\">Current Actors:</label> -->\n @if (cardItem.data.CurrentActors && cardItem.data.CurrentActors.length > 0) {\n @if (cardItem.data.CurrentActors.length === 1) {\n <span id=\"phone\" class=\"text-sm\">{{ cardItem.data.CurrentActors[0].Identifier }}</span>\n } @else {\n <verben-tooltip [top]=\"'0px'\" [textColor]=\"'#000'\" [backgroundColor]=\"'#D3D3D3'\" [left]=\"'0'\"\n [tooltipContent]=\"actorsTooltipTemplate\" #actorsTooltip>\n <span id=\"phone\" class=\"text-sm cursor-pointer\">\n {{ cardItem.data.CurrentActors[0].Identifier }} and {{ cardItem.data.CurrentActors.length\n - 1 }} others\n </span>\n </verben-tooltip>\n\n <ng-template #actorsTooltipTemplate>\n <div class=\"p-2\">\n <p class=\"text-xs font-semibold mb-1\">Current Actors:</p>\n <ul class=\"list-disc list-inside\">\n @for (actor of cardItem.data.CurrentActors; track actor.Identifier) {\n <li class=\"text-xs\">{{ actor.Identifier }}</li>\n }\n </ul>\n </div>\n </ng-template>\n }\n } @else {\n <span id=\"phone\" class=\"text-sm text-gray-400\">No actors assigned</span>\n }\n </p>\n </div>\n\n <div class=\"grid gap-y-2\">\n <span for=\"role\" class=\"font-light\">{{\n cardItem.data.Code\n }}</span>\n\n <div (click)=\"$event.stopPropagation();\" class=\"flex items-end gap-4\">\n <a [routerLink]=\"[\n '/workflow/task-history',\n cardItem.data.Code\n ]\" routerLinkActive=\"router-link-active\"\n class=\"underline text-[#0000FF] text-xs relative z-10\">view\n history</a>\n\n <verben-pop-Up #popup [customStyles]=\"{ 'z-index': '99' }\" [enableMouseLeave]=\"false\"\n [customStyles]=\"{\n border: '1px solid #d4a10780',\n borderRadius: '5px',\n backgroundColor: 'white'\n }\" (dropdownOpenChange)=\"onPopupToggled($event, popup)\">\n <div dropdown-trigger\n class=\"cursor-pointer p-2 -m-2 inline-flex items-center justify-center\">\n <verben-svg icon=\"dots\" [width]=\"3\" [height]=\"18\" class=\"w-auto\"></verben-svg>\n </div>\n <div class=\"bg-white rounded-sm\" dropdown-content>\n @for (item of tableRowActions; track item.label) {\n\n <verben-pop-Up #popup2 [customStyles]=\"{ 'z-index': '99' }\" [enableMouseLeave]=\"false\"\n [customStyles]=\"{\n border: '1px solid #d4a10780',\n borderRadius: '5px',\n backgroundColor: 'white'\n }\" (dropdownOpenChange)=\"handlePopupClose($event)\">\n <div (click)=\"item.action(cardItem.data)\" dropdown-trigger\n class=\"cursor-pointer py-2 px-3 hover:bg-primary\">\n {{ item.label }}\n </div>\n <div class=\"bg-white rounded-sm\" dropdown-content>\n <div style=\"width: 16rem\">\n <div class=\"flex items-center gap-4 justify-between h-12 px-2 pt-4\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <g opacity=\"0.6\">\n <path\n d=\"M6.74649 8.00338C6.91483 8.1347 7.0252 8.20455 7.11531 8.29396C7.98846 9.16222 8.85742 10.0347 9.72917 10.905C9.87167 11.0475 9.99391 11.1921 9.99321 11.4129C9.99251 11.6462 9.89472 11.8152 9.69564 11.9256C9.49307 12.038 9.2926 12.0206 9.10469 11.8899C9.03833 11.8438 8.98175 11.7845 8.92378 11.7272C7.85574 10.6592 6.79678 9.58203 5.71477 8.52867C5.3711 8.19407 5.38437 7.79173 5.70779 7.47599C6.7884 6.42123 7.84875 5.34551 8.91539 4.27607C9.11377 4.07769 9.32054 3.92262 9.623 4.04137C9.97924 4.18107 10.112 4.58901 9.89472 4.90335C9.82976 4.99765 9.74174 5.07728 9.66002 5.1597C8.80642 6.01469 7.95283 6.86968 7.09645 7.72257C7.01472 7.8043 6.91553 7.86856 6.74579 8.00408L6.74649 8.00338Z\"\n fill=\"black\" />\n </g>\n </svg>\n\n <h3 class=\"text-sm font-medium\">Select Assignee</h3>\n </div>\n\n <div class=\"grid gap-2 max-h-96 overflow-y-auto p-2\">\n <!-- <verben-drop-down\n label=\"Action\"\n styleClass=\"w-full\"\n width=\"100%\"\n [multiselect]=\"false\"\n [filter]=\"true\"\n [showClear]=\"true\"\n placeholder=\"Select Action\"\n [options]=\"nextActions\"\n id=\"actions\"\n optionLabel=\"Name\"\n [ngModel]=\"selectedAction | async\"\n (ngModelChange)=\"selectedAction.next($event)\"\n class=\"form-control\"\n >\n </verben-drop-down> -->\n\n <verben-drop-down label=\"Actors\" styleClass=\"w-full\" width=\"100%\"\n [multiselect]=\"false\" [filter]=\"true\" filterBy=\"Name\" [showClear]=\"true\"\n placeholder=\"Select Actor\" [options]=\"nextActors\" id=\"actors\"\n optionLabel=\"Name\" optionValue=\"Identifier\" [(ngModel)]=\"recipientCode\"\n class=\"form-control\">\n </verben-drop-down>\n\n <textarea [(ngModel)]=\"comment\" placeholder=\"Enter Comment\"\n class=\"w-full p-1 text-xs border border-primary rounded-md\" style=\"height: 8rem\"\n [cols]=\"8\"></textarea>\n\n <verbena-button [disable]=\"!comment\" [text]=\"activeActionType ?? ''\"\n (click)=\"handleAction(cardItem.data, popup)\" class=\"text-xs w-full\"\n bgColor=\"#FFE681\" textColor=\"#404040\" borderRadius=\"10px\" fontSize=\"14px\"\n pd=\"10px 20px\" width=\"100%\" height=\"32px\">\n {{ activeActionType }}\n </verbena-button>\n </div>\n </div>\n </div>\n </verben-pop-Up>\n\n @if (item.divider) {\n <hr class=\"bg-[#FFE681] h-1 rounded-xl border-0\" />\n } }\n </div>\n </verben-pop-Up>\n </div>\n </div>\n </div>\n\n <!-- <div class=\"flex\">\n <span class=\"font-normal text-sm\">{{ item.title }}</span>\n </div>\n @for (ciItem of item.body; track ciItem.value) {\n <div class=\"\">\n <span class=\"text-muted font-light text-xs\"\n >{{ ciItem.title }}:</span\n >\n <span class=\"text-black\">{{ ciItem.value }}</span>\n </div>\n } -->\n </div>\n </div>\n </div>\n </ng-template>\n </verben-left-card-data>\n </verben-left-card-data-view>\n\n <verben-right-card-data-view>\n <ng-template #parent>\n <!-- <lib-user-request-form\n [currentData]=\"currentData\"\n (switchView)=\"vdv.toggleView()\"\n (onApproval)=\"onApprove($event)\"\n ></lib-user-request-form> -->\n <tasks-form [currentData]=\"currentData\" (switchView)=\"vdv.toggleView()\"\n (onSave)=\"onSave($event)\"></tasks-form>\n </ng-template>\n </verben-right-card-data-view>\n\n <verben-card-data-view-footer class=\"w-full\">\n <div [ngClass]=\"{\n 'flex gap-2 items-center': true,\n 'justify-end': true\n }\">\n <!-- <verbena-button\n *ngIf=\"!vdcv.hasCurrentItem()\"\n [fontWeight]=\"'bold'\"\n [bgColor]=\"'#8E8D87'\"\n [borderRadius]=\"'4px'\"\n [textColor]=\"'#fff'\"\n [pd]=\"'9.79px 37.28px'\"\n [text]=\"'Delete'\"\n >\n </verbena-button> -->\n <div class=\"flex {{\n vdcv.hasCurrentItem() ? 'flex-1' : ''\n }} justify-end items-center gap-5\">\n <span class=\"paginator-text\">{{ cardData().length }} records loaded</span>\n <button (click)=\"loadMore()\" class=\"load-more view-links text-[#3479E9] underline\">\n Load more\n </button>\n </div>\n </div>\n </verben-card-data-view-footer>\n </verben-card-data-view>\n </div>\n <div column-content>\n <lib-data-columns [columns]=\"config.columns\" (columnsUpdated)=\"onColumnsUpdated($event)\"></lib-data-columns>\n </div>\n <div filter-content>\n <verben-table-filter [border]=\"'1px solid rgba(212, 160, 7, 1)'\" borderRadius=\"10px\"\n boxShadow=\"2px 2px 2px 0px silver\" bgColor=\"white\" width=\"420px\" textColor=\"black\" pd=\"1rem\"\n primaryColor=\"#FFE681\" secondaryColor=\"#3479E9\" tertiaryColor=\"#404040\" [filterOptions]=\"filterArray\"\n [maxFilterLength]=\"3\"></verben-table-filter>\n </div>\n <div sort-content>\n <lib-data-sort [columns]=\"config.columns\" [data]=\"data()\" (sortApplied)=\"onSortUpdated($event)\"></lib-data-sort>\n </div>\n <div export-content>\n <lib-data-export [data]=\"data()\" (exportDataEvent)=\"handleExport($event)\">\n </lib-data-export>\n </div>\n </verben-data-view>\n\n <div *ngIf=\"vdv.isTableView\" class=\"flex gap-2 justify-between\">\n <div class=\"message-log-button-container flex justify-between\">\n <!-- <verbena-button\n [fontWeight]=\"'bold'\"\n [bgColor]=\"'#8E8D87'\"\n [borderRadius]=\"'4px'\"\n [textColor]=\"'#fff'\"\n [pd]=\"'9.79px 37.28px'\"\n [text]=\"'Delete'\"\n >\n </verbena-button> -->\n </div>\n <div class=\"flex justify-end items-center gap-5\">\n <span class=\"paginator-text\">{{ cardData().length }} records loaded</span>\n <button (click)=\"loadMore()\" class=\"load-more view-links text-[#3479E9] underline\">\n Load more\n </button>\n </div>\n </div>\n</div>\n", styles: [".view-links{color:#3479e9;cursor:pointer}\n"] }]
834
+ args: [{ selector: 'lib-tasks', providers: [TasksService, TaskFacade, TaskState], template: "<div class=\"space-y-8\">\n <verben-data-view #vdv [viewState]=\"{\n isSearch: true,\n isColumn: true,\n isFilter: true,\n isSort: true,\n isExport: true,\n isSelect: true,\n isCreate: true,\n isToggle: true,\n }\" [buttonClass]=\"'my-custom-button-class'\" [iconClass]=\"'my-icon-class'\"\n [activeIconClass]=\"'my-active-icon-class'\" [selectedColumnCount]=\"0\" [selectedSortCount]=\"0\"\n [selectedFilterTableCount]=\"0\" (viewChange)=\"onViewChange($event)\" (stateChange)=\"onStateChange($event)\"\n (onSearchChange)=\"handleSearch($event)\">\n <div table-content>\n <lib-data-table [data]=\"data()\" [columns]=\"config.columns\" [styleConfig]=\"styles\"\n (selectionChange)=\"onSelectionChange($event)\">\n <ng-container libColumn=\"history\">\n <ng-template #cell let-value>\n <a [routerLink]=\"['/workflow/task-history', value]\" routerLinkActive=\"router-link-active\"\n class=\"underline text-[#0000FF]\">view history</a>\n </ng-template>\n </ng-container>\n\n <ng-container libColumn=\"workflow\">\n <ng-template #cell let-value>\n <a [routerLink]=\"['/workflow/workflows', value]\" routerLinkActive=\"router-link-active\"\n class=\"underline text-[#0000FF]\">view Workflow</a>\n </ng-template>\n </ng-container>\n\n <ng-container libColumn=\"actions\">\n <ng-template #cell let-row=\"row\">\n <lib-operation-popup [user]=\"user()\" [task]=\"row\" [allowedActions]=\"getActionNamesForTask(row)\"\n (actionComplete)=\"loadInitialData()\">\n <div trigger class=\"cursor-pointer p-2 -m-2 inline-flex items-center justify-center\">\n <verben-svg icon=\"dots\" [width]=\"3\" [height]=\"18\" class=\"w-auto\"></verben-svg>\n </div>\n </lib-operation-popup>\n </ng-template>\n <ng-template #header>\n <strong>Actions</strong>\n </ng-template>\n </ng-container>\n </lib-data-table>\n </div>\n\n <div card-content>\n <verben-card-data-view borderRadius=\"12px\" (loadMoreClick)=\"loadMore()\" #vdcv dataId=\"Id\" border=\"5px\"\n [cardDataList]=\"cardData()\" rbgColor=\"#f5f6f9\" mg=\"20px\">\n <verben-left-card-data-view class=\"space-y-7\">\n <verben-left-card-data #vlcd [parent]=\"vdcv\" dataId=\"Code\"\n class=\"bg-secondary-100 rounded-xl border-primary border-[1px]\" [cardDataList]=\"cardData()\">\n <ng-template #card let-cardItem>\n <div (click)=\"currentData = vdcv.onItemClick(cardItem)\" class=\"flex\">\n <div (click)=\"currentData = vdcv.onItemClick(cardItem)\"\n class=\"flex cursor-pointer w-full bg-secondary rounded-xl\">\n <div class=\"w-3 rounded-xl rounded-tr-none rounded-br-none\" [ngClass]=\"\n cardItem.selected ? 'bg-primary' : 'bg-secondary-200'\n \"></div>\n <div class=\"flex flex-col py-2 px-4 w-full\">\n <div class=\"flex items-center gap-4 justify-between\">\n <div class=\"grid gap-y-2\">\n <span class=\"font-semibold text-[#404040]\">{{\n cardItem.title\n }}</span>\n <p class=\"flex items-center\">\n <!-- <label for=\"phone\" class=\"text-[10px] font-light\">Current Actors:</label> -->\n @if (cardItem.data.CurrentActors && cardItem.data.CurrentActors.length > 0) {\n @if (cardItem.data.CurrentActors.length === 1) {\n <span id=\"phone\" class=\"text-sm\">{{ cardItem.data.CurrentActors[0].Identifier }}</span>\n } @else {\n <verben-tooltip [top]=\"'0px'\" [textColor]=\"'#000'\" [backgroundColor]=\"'#D3D3D3'\" [left]=\"'0'\"\n [tooltipContent]=\"actorsTooltipTemplate\" #actorsTooltip>\n <span id=\"phone\" class=\"text-sm cursor-pointer\">\n {{ cardItem.data.CurrentActors[0].Identifier }} and {{ cardItem.data.CurrentActors.length\n - 1 }} others\n </span>\n </verben-tooltip>\n\n <ng-template #actorsTooltipTemplate>\n <div class=\"p-2\">\n <p class=\"text-xs font-semibold mb-1\">Current Actors:</p>\n <ul class=\"list-disc list-inside\">\n @for (actor of cardItem.data.CurrentActors; track actor.Identifier) {\n <li class=\"text-xs\">{{ actor.Identifier }}</li>\n }\n </ul>\n </div>\n </ng-template>\n }\n } @else {\n <span id=\"phone\" class=\"text-sm text-gray-400\">No actors assigned</span>\n }\n </p>\n </div>\n\n <div class=\"grid gap-y-2\">\n <span for=\"role\" class=\"font-light\">{{\n cardItem.data.Code\n }}</span>\n\n <div (click)=\"$event.stopPropagation();\" class=\"flex items-end gap-4\">\n <a [routerLink]=\"[\n '/workflow/task-history',\n cardItem.data.Code\n ]\" routerLinkActive=\"router-link-active\"\n class=\"underline text-[#0000FF] text-xs relative z-10\">view\n history</a>\n\n <lib-operation-popup [user]=\"user()\" [task]=\"cardItem.data\"\n [allowedActions]=\"getActionNamesForTask(cardItem.data)\" (actionComplete)=\"loadInitialData()\">\n <div trigger class=\"cursor-pointer p-2 -m-2 inline-flex items-center justify-center\">\n <verben-svg icon=\"dots\" [width]=\"3\" [height]=\"18\" class=\"w-auto\"></verben-svg>\n </div>\n </lib-operation-popup>\n </div>\n </div>\n </div>\n\n <!-- <div class=\"flex\">\n <span class=\"font-normal text-sm\">{{ item.title }}</span>\n </div>\n @for (ciItem of item.body; track ciItem.value) {\n <div class=\"\">\n <span class=\"text-muted font-light text-xs\"\n >{{ ciItem.title }}:</span\n >\n <span class=\"text-black\">{{ ciItem.value }}</span>\n </div>\n } -->\n </div>\n </div>\n </div>\n </ng-template>\n </verben-left-card-data>\n </verben-left-card-data-view>\n\n <verben-right-card-data-view>\n <ng-template #parent>\n <!-- <lib-user-request-form\n [currentData]=\"currentData\"\n (switchView)=\"vdv.toggleView()\"\n (onApproval)=\"onApprove($event)\"\n ></lib-user-request-form> -->\n <tasks-form [currentData]=\"currentData\" (switchView)=\"vdv.toggleView()\"\n (onSave)=\"onSave($event)\"></tasks-form>\n </ng-template>\n </verben-right-card-data-view>\n\n <verben-card-data-view-footer class=\"w-full\">\n <div [ngClass]=\"{\n 'flex gap-2 items-center': true,\n 'justify-end': true\n }\">\n <!-- <verbena-button\n *ngIf=\"!vdcv.hasCurrentItem()\"\n [fontWeight]=\"'bold'\"\n [bgColor]=\"'#8E8D87'\"\n [borderRadius]=\"'4px'\"\n [textColor]=\"'#fff'\"\n [pd]=\"'9.79px 37.28px'\"\n [text]=\"'Delete'\"\n >\n </verbena-button> -->\n <div class=\"flex {{\n vdcv.hasCurrentItem() ? 'flex-1' : ''\n }} justify-end items-center gap-5\">\n <span class=\"paginator-text\">{{ cardData().length }} records loaded</span>\n <button (click)=\"loadMore()\" class=\"load-more view-links text-[#3479E9] underline\">\n Load more\n </button>\n </div>\n </div>\n </verben-card-data-view-footer>\n </verben-card-data-view>\n </div>\n <div column-content>\n <lib-data-columns [columns]=\"config.columns\" (columnsUpdated)=\"onColumnsUpdated($event)\"></lib-data-columns>\n </div>\n <div filter-content>\n <verben-table-filter [border]=\"'1px solid rgba(212, 160, 7, 1)'\" borderRadius=\"10px\"\n boxShadow=\"2px 2px 2px 0px silver\" bgColor=\"white\" width=\"420px\" textColor=\"black\" pd=\"1rem\"\n primaryColor=\"#FFE681\" secondaryColor=\"#3479E9\" tertiaryColor=\"#404040\" [filterOptions]=\"filterArray\"\n [maxFilterLength]=\"3\"></verben-table-filter>\n </div>\n <div sort-content>\n <lib-data-sort [columns]=\"config.columns\" [data]=\"data()\" (sortApplied)=\"onSortUpdated($event)\"></lib-data-sort>\n </div>\n <div export-content>\n <lib-data-export [data]=\"data()\" (exportDataEvent)=\"handleExport($event)\">\n </lib-data-export>\n </div>\n </verben-data-view>\n\n <div *ngIf=\"vdv.isTableView\" class=\"flex gap-2 justify-between\">\n <div class=\"message-log-button-container flex justify-between\">\n <!-- <verbena-button\n [fontWeight]=\"'bold'\"\n [bgColor]=\"'#8E8D87'\"\n [borderRadius]=\"'4px'\"\n [textColor]=\"'#fff'\"\n [pd]=\"'9.79px 37.28px'\"\n [text]=\"'Delete'\"\n >\n </verbena-button> -->\n </div>\n <div class=\"flex justify-end items-center gap-5\">\n <span class=\"paginator-text\">{{ cardData().length }} records loaded</span>\n <button (click)=\"loadMore()\" class=\"load-more view-links text-[#3479E9] underline\">\n Load more\n </button>\n </div>\n </div>\n</div>\n", styles: [".view-links{color:#3479e9;cursor:pointer}\n"] }]
904
835
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: TaskFacade }] });
905
- var ActionType;
906
- (function (ActionType) {
907
- ActionType["PickTask"] = "PickTask";
908
- ActionType["UnPickTask"] = "UnPickTask";
909
- ActionType["ReAssign"] = "ReAssign";
910
- ActionType["PassOn"] = "PassOn";
911
- ActionType["PassBack"] = "PassBack";
912
- ActionType["FollowTask"] = "FollowTask";
913
- ActionType["UnfollowTask"] = "UnfollowTask";
914
- ActionType["SkipTo"] = "SkipTo";
915
- })(ActionType || (ActionType = {}));
916
836
 
917
837
  class TasksModule {
918
838
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TasksModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });