{"version":3,"file":"verben-workflow-ui-src-lib-components-tasks.mjs","sources":["../../../projects/verben-workflow-ui/src/lib/components/tasks/tasks.columns.ts","../../../projects/verben-workflow-ui/src/lib/components/tasks/tasks.service.ts","../../../projects/verben-workflow-ui/src/lib/components/tasks/tasks.state.ts","../../../projects/verben-workflow-ui/src/lib/components/tasks/tasks.facade.ts","../../../projects/verben-workflow-ui/src/lib/components/tasks/tasks.models.ts","../../../projects/verben-workflow-ui/src/lib/components/tasks/tasks.form.component.ts","../../../projects/verben-workflow-ui/src/lib/components/tasks/tasks.form.component.html","../../../projects/verben-workflow-ui/src/lib/components/tasks/tasks.component.ts","../../../projects/verben-workflow-ui/src/lib/components/tasks/tasks.component.html","../../../projects/verben-workflow-ui/src/lib/components/tasks/tasks.module.ts","../../../projects/verben-workflow-ui/src/lib/components/tasks/verben-workflow-ui-src-lib-components-tasks.ts"],"sourcesContent":["import { ColumnDefinition } from 'verben-ng-ui';\nimport { Task } from 'verben-workflow-ui/src/lib/models';\n\nexport const columns: ColumnDefinition<Task>[] = [\n  {\n    id: 'task',\n    header: 'TASK',\n    accessorKey: 'Name',\n  },\n  {\n    id: 'stage',\n    header: 'STAGE',\n    accessorFn: (row) => row.CurrentStages?.join(', '),\n  },\n  // {\n  //   id: 'status',\n  //   header: 'STATUS',\n  //   accessorKey: 'Status',\n  // },\n  {\n    id: 'currentActor',\n    header: 'ASSIGNED TO',\n    accessorFn: (row) => row.CurrentActors?.map((flwr) => flwr.Name).join(', '),\n  },\n  {\n    id: 'history',\n    header: 'HISTORY',\n    accessorKey: 'Code',\n  },\n  {\n    id: 'workflow',\n    header: 'WORKFLOW',\n    accessorKey: 'WorkflowCode',\n  },\n  { id: 'actions', header: 'Actions' },\n];\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { Actor, ErrorResponse, Form, Paged, Task, Workflow } from 'verben-workflow-ui/src/lib/models';\nimport { HttpWebRequestService } from 'verben-workflow-ui/src/lib/services';\n\n@Injectable()\nexport class TasksService {\n\n\n  constructor(private httpService: HttpWebRequestService) { }\n\n  /**\n   * Get tasks with pagination and sorting\n   * @param skip Number of records to skip\n   * @param limit Number of records to take\n   * @param sortParam Sort parameter\n   * @param sortOrder Sort order ('asc' or 'desc')\n   * @returns Promise containing the tasks\n   */\n  getTasks(\n    skip: number,\n    limit: number,\n    sortParam: string,\n    sortOrder: string\n  ): Promise<Paged<Task> | ErrorResponse> {\n    const url = `GetTasks/${skip}/${limit}/${sortParam}/${sortOrder}`;\n    return this.httpService.get(url) as Promise<Paged<Task> | ErrorResponse>;\n  }\n\n  /**\n   * Get tasks with additional parameter, pagination and sorting\n   * @param param Search parameter\n   * @param skip Number of records to skip\n   * @param limit Number of records to take\n   * @param sortParam Sort parameter\n   * @param sortOrder Sort order ('asc' or 'desc')\n   * @returns Promise containing the filtered tasks\n   */\n  getTaskWithParam(\n    param: string,\n    skip: number,\n    limit: number,\n    sortParam: string,\n    sortOrder: string\n  ): Promise<Paged<Task> | ErrorResponse> {\n    const url = `GetTaskWithParam/${param}/${skip}/${limit}/${sortParam}/${sortOrder}`;\n    return this.httpService.get(url) as Promise<Paged<Task> | ErrorResponse>;\n  }\n\n  /**\n   * Save multiple tasks\n   * @param requests Array of tasks to save\n   * @returns Promise containing the save operation result\n   */\n  saveTasks(requests: Task[]): Promise<any | ErrorResponse> {\n    const url = `SaveTasks`;\n    return this.httpService.post(url, requests);\n  }\n\n  /**\n   * Approve or reject multiple tasks\n   * @param requests Array of tasks to save\n   * @param isApproval True for approval, false for decline\n   * @returns Promise containing the save operation result\n   */\n  processTasks(requests: Task[], isApproval: boolean): Promise<any | ErrorResponse> {\n    const url = `TaskAction/${isApproval}`;\n    return this.httpService.post(url, requests);\n  }\n\n  /**\n   * Delete multiple tasks\n   * @param requestIds Array of request IDs to delete\n   * @returns Observable containing the delete operation result\n   */\n  deleteTasks(requestIds: string[]): Observable<any | ErrorResponse> {\n    const url = `DeleteTasks`;\n    return this.httpService.delete(`${url}?data=${requestIds.join(',')}`);\n  }\n\n  getWorkflows(): Promise<Paged<Workflow> | ErrorResponse> {\n    const url = `GetWorkflows/0/0`;\n    return this.httpService.get(url) as Promise<Paged<Workflow> | ErrorResponse>;\n  }\n\n  getFormWithParam(param: string): Promise<Paged<Form> | ErrorResponse> {\n    const url = `GetFormsWithParam/${param}/0/1`;\n    return this.httpService.get(url) as Promise<Paged<Form> | ErrorResponse>;\n  }\n\n  followTask(actorId: string, task: Task): Promise<Task | ErrorResponse> {\n    const url = `FollowTask/${actorId}`;\n    return this.httpService.post(url, task);\n  }\n\n  unFollowTask(\n    taskId: string,\n    actorId: string\n    // task: Task,\n  ): Promise<void | ErrorResponse> {\n    const url = `UnFollowTask/${taskId}/${actorId}`;\n    return this.httpService.post(url, {});\n  }\n\n  reAssign(\n    task: Task,\n    comment: string,\n    toUser?: string,\n    fromUser?: string\n  ): Promise<Task | ErrorResponse> {\n    const url = `Reassign/${comment}/${toUser}/${fromUser}`;\n    return this.httpService.post(url, task);\n  }\n\n  getNextActors(\n    taskCode: string,\n    stageCode?: string,\n    forCurrentStage?: boolean\n  ): Promise<Actor[] | ErrorResponse> {\n    const url = `GetNextActors/${taskCode}/${forCurrentStage}${stageCode ? `/${stageCode}` : ''\n      }`;\n    return this.httpService.get(url) as Promise<Actor[] | ErrorResponse>;\n  }\n\n  pickTask(\n    task: Task,\n    comment: string,\n    recipient?: string,\n    targetStage?: string,\n  ): Promise<Task | ErrorResponse> {\n    const url = `PickTask/${comment}/${targetStage}${recipient ? '/' + recipient : ''\n      }`;\n    return this.httpService.post(url, task);\n  }\n\n  unPickTask(\n    targetStage: string,\n    task: Task,\n    comment: string,\n    recipient?: string\n  ): Promise<Task | ErrorResponse> {\n    const url = `UnPickTask/${comment}/${targetStage}${recipient ? '/' + recipient : ''\n      }`;\n    return this.httpService.post(url, task);\n  }\n\n  getPossibleTasksForUser(\n    user: string,\n    skip: number,\n    limit: number,\n    sortParam: string,\n    sortOrder: string\n  ): Promise<Paged<Task> | ErrorResponse> {\n    const url = `GetPossibleTasksForUser/${skip}/${limit}/${sortParam}/${sortOrder}/${user}`;\n    return this.httpService.get(url) as Promise<Paged<Task> | ErrorResponse>;\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { Actor, Form, QueryParams, SortDirection, Task, Workflow } from 'verben-workflow-ui/src/lib/models';\n\n@Injectable()\nexport class TaskState {\n  private updating$ = new BehaviorSubject<boolean>(false);\n  private tasks$ = new BehaviorSubject<Task[]>([]);\n  private queryParams$ = new BehaviorSubject<QueryParams<Task>>({\n    skip: 0,\n    limit: 20,\n    sortParam: 'CreatedAt',\n    sortOrder: SortDirection.Desc,\n  });\n\n  private workflows$ = new BehaviorSubject<Workflow[]>([]);\n  private forms$ = new BehaviorSubject<Form[]>([]);\n  private nextActors$ = new BehaviorSubject<Actor[]>([]);\n\n  isUpdating$(): Observable<boolean> {\n    return this.updating$.asObservable();\n  }\n\n  setUpdating(isUpdating: boolean): void {\n    this.updating$.next(isUpdating);\n  }\n\n  getRequests$(): Observable<Task[]> {\n    return this.tasks$.asObservable();\n  }\n\n  setRequests(tasks: Task[]): void {\n    this.tasks$.next(tasks);\n  }\n\n  getNextActors$(): Observable<Actor[]> {\n    return this.nextActors$.asObservable();\n  }\n\n  setNextActors(nextActors: Actor[]): void {\n    this.nextActors$.next(nextActors);\n  }\n\n  getWorkflows$(): Observable<Workflow[]> {\n    return this.workflows$.asObservable();\n  }\n\n  setWorkflows(workflows: Workflow[]): void {\n    this.workflows$.next(workflows);\n  }\n\n  getForms$(): Observable<Form[]> {\n    return this.forms$.asObservable();\n  }\n\n  setForms(forms: Form[]): void {\n    this.forms$.next(forms);\n  }\n\n  getQueryParams$(): Observable<QueryParams<Task>> {\n    return this.queryParams$.asObservable();\n  }\n\n  getQueryParamsValue(): QueryParams<Task> {\n    return this.queryParams$.getValue();\n  }\n\n  updateQueryParams(params: Partial<QueryParams<Task>>): void {\n    this.queryParams$.next({ ...this.queryParams$.getValue(), ...params });\n  }\n\n  addRequest(task: Task): void {\n    const currentValue = this.tasks$.getValue();\n    this.tasks$.next([task, ...currentValue]);\n  }\n\n  resetPagination(): void {\n    const currentParams = this.queryParams$.getValue();\n    this.queryParams$.next({ ...currentParams, skip: 0 });\n  }\n\n  updateRequest(updatedRequest: Task): void {\n    const tasks = this.tasks$.getValue();\n    const index = tasks.findIndex((r) => r.Code === updatedRequest.Code);\n    if (index !== -1) {\n      tasks[index] = updatedRequest;\n      this.tasks$.next([...tasks]);\n    }\n  }\n\n  removeRequest(taskId: string): void {\n    const currentValue = this.tasks$.getValue();\n    this.tasks$.next(currentValue.filter((r) => r.Code !== taskId));\n  }\n\n  appendRequests(newRequests: Task[]): void {\n    const currentRequests = this.tasks$.getValue();\n    this.tasks$.next([...currentRequests, ...newRequests]);\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, lastValueFrom } from 'rxjs';\nimport { Actor, ErrorResponse, Form, QueryParams, Task, Workflow } from 'verben-workflow-ui/src/lib/models';\nimport { UtilService } from 'verben-workflow-ui/src/lib/services';\nimport { TasksService } from './tasks.service';\nimport { TaskState } from './tasks.state';\n\n@Injectable()\nexport class TaskFacade {\n  constructor(\n    private taskService: TasksService,\n    private taskState: TaskState,\n    private utilService: UtilService\n  ) {\n    this.isUpdating$().subscribe((loading) => {\n      this.utilService.sendBI(loading);\n    });\n  }\n\n  isUpdating$(): Observable<boolean> {\n    return this.taskState.isUpdating$();\n  }\n\n  getRequests$(): Observable<Task[]> {\n    return this.taskState.getRequests$();\n  }\n\n  getWorkflow$(): Observable<Workflow[]> {\n    return this.taskState.getWorkflows$();\n  }\n\n  getForms$(): Observable<Form[]> {\n    return this.taskState.getForms$();\n  }\n\n  getNextActors$(): Observable<Actor[]> {\n    return this.taskState.getNextActors$();\n  }\n\n  getQueryParams$(): Observable<QueryParams<Task>> {\n    return this.taskState.getQueryParams$();\n  }\n\n  addNewRequest(task: Task) {\n    this.taskState.addRequest(task);\n  }\n\n  async loadRequests(user?: string): Promise<void> {\n    try {\n      this.taskState.setUpdating(true);\n      const params = this.taskState.getQueryParamsValue();\n\n      const requests = user ? await this.taskService.getPossibleTasksForUser(\n        user,\n        params.skip,\n        params.limit,\n        params.sortParam || 'createdDate',\n        params.sortOrder\n      ) : await this.taskService.getTasks(\n        params.skip,\n        params.limit,\n        params.sortParam || 'createdDate',\n        params.sortOrder\n      );\n\n      if (requests instanceof ErrorResponse) {\n        this.utilService.showError(requests.ErrorMsg);\n        return;\n      }\n\n      if (requests?.Result) {\n        this.taskState.setRequests(requests.Result);\n        this.taskState.updateQueryParams({ skip: requests.Skip });\n      }\n    } catch (error) {\n      console.error('Failed to load requests:', error);\n      throw error;\n    } finally {\n      this.taskState.setUpdating(false);\n    }\n  }\n\n  async loadRequestsWithParam(param: string): Promise<void> {\n    try {\n      this.taskState.setUpdating(true);\n      const params = this.taskState.getQueryParamsValue();\n\n      const requests = await this.taskService.getTaskWithParam(\n        param,\n        params.skip,\n        params.limit,\n        params.sortParam || 'CreatedDate',\n        params.sortOrder\n      );\n\n      if (requests instanceof ErrorResponse) {\n        this.utilService.showError(requests.ErrorMsg);\n        return;\n      }\n\n      this.taskState.setRequests(requests.Result);\n      this.taskState.updateQueryParams({ skip: requests.Skip });\n    } catch (error) {\n      console.error('Failed to load requests with param:', error);\n      throw error;\n    } finally {\n      this.taskState.setUpdating(false);\n    }\n  }\n\n  updateQueryParams(params: Partial<QueryParams<Task>>): void {\n    this.taskState.updateQueryParams(params);\n    // this.loadRequests();\n  }\n\n  async addRequest(request: Partial<Task>): Promise<void> {\n    try {\n      this.taskState.setUpdating(true);\n      const newRequest = { ...request, TaskForms: [] } as Task;\n      // this.taskState.addRequest(newRequest);\n\n      const response = await this.taskService.saveTasks([newRequest]);\n\n      if (response instanceof ErrorResponse) {\n        this.utilService.showError(response.ErrorMsg);\n        return;\n      }\n\n      this.utilService.showSuccess('Task added successfully');\n      this.taskState.resetPagination();\n      await this.loadRequests(); // Reload to get server-side changes\n    } catch (error) {\n      console.error('Failed to add request:', error);\n      this.taskState.removeRequest(request.Code!);\n      throw error;\n    } finally {\n      this.taskState.setUpdating(false);\n    }\n  }\n\n  async updateRequest(request: Task): Promise<void> {\n    try {\n      this.taskState.setUpdating(true);\n      const response = await this.taskService.saveTasks([request]);\n\n      if (response instanceof ErrorResponse) {\n        this.utilService.showError(response.ErrorMsg);\n        return;\n      }\n\n      this.utilService.showSuccess('Task updated successfully');\n      this.taskState.updateRequest(request);\n    } catch (error) {\n      console.error('Failed to update request:', error);\n      throw error;\n    } finally {\n      this.taskState.setUpdating(false);\n    }\n  }\n\n  async deleteRequest(requestId: string): Promise<void> {\n    try {\n      this.taskState.setUpdating(true);\n      await lastValueFrom(this.taskService.deleteTasks([requestId]));\n      this.taskState.removeRequest(requestId);\n    } catch (error) {\n      console.error('Failed to delete request:', error);\n      throw error;\n    } finally {\n      this.taskState.setUpdating(false);\n    }\n  }\n\n  async approveRequest(request: Task): Promise<void> {\n    try {\n      this.taskState.setUpdating(true);\n      const response = await this.taskService.processTasks([request], true);\n\n      if (response instanceof ErrorResponse) {\n        this.utilService.showError(response.ErrorMsg);\n        return;\n      }\n\n      // console.log(response);\n      const data = (response as Task[])?.[0];\n      if (data) {\n        this.taskState.updateRequest(data);\n        this.utilService.showSuccess('Task approved successfully');\n      }\n    } catch (error) {\n      console.error('Failed to update request:', error);\n      throw error;\n    } finally {\n      this.taskState.setUpdating(false);\n    }\n  }\n\n  async loadWorkflows(): Promise<void> {\n    try {\n      const requests = await this.taskService.getWorkflows();\n\n      if (requests instanceof ErrorResponse) {\n        this.utilService.showError(requests.ErrorMsg);\n        return;\n      }\n\n      this.taskState.setWorkflows(requests.Result);\n    } catch (error) {\n      console.error('Failed to load requests:', error);\n      throw error;\n    } finally {\n    }\n  }\n\n  async loadFormsWithParam(param: string): Promise<Form | void> {\n    try {\n      this.taskState.setUpdating(true);\n\n      const requests = await this.taskService.getFormWithParam(param);\n\n      if (requests instanceof ErrorResponse) {\n        this.utilService.showError(requests.ErrorMsg);\n        return;\n      }\n\n      const form = requests.Result[0];\n      if (form) return form;\n    } catch (error) {\n      console.error('Failed to load requests with param:', error);\n      throw error;\n    } finally {\n      this.taskState.setUpdating(false);\n    }\n  }\n\n  async reAssign(\n    request: Task,\n    comment: string,\n    toUser?: string,\n    fromUser?: string\n  ): Promise<void> {\n    try {\n      this.taskState.setUpdating(true);\n      const response = await this.taskService.reAssign(\n        {\n          ...request,\n          FullStages: [],\n          CurrentActors: request.CurrentActors.map((c) => ({\n            ...c,\n            ActorTags: [],\n          })),\n        },\n        comment,\n        toUser,\n        fromUser\n      );\n\n      if (response instanceof ErrorResponse) {\n        this.utilService.showError(response.ErrorMsg);\n        return;\n      }\n\n      // console.log(response);\n      this.utilService.showSuccess('Task re-assigned successfully');\n      const data = response as Task;\n      if (data) {\n        this.taskState.updateRequest(data);\n      }\n    } catch (error) {\n      console.error('Failed to update request:', error);\n      throw error;\n    } finally {\n      this.taskState.setUpdating(false);\n    }\n  }\n\n  async loadNextActors(\n    taskCode: string,\n    stageCode?: string,\n    forCurrentStage?: boolean\n  ): Promise<Actor[]> {\n    try {\n      this.taskState.setUpdating(true);\n      const params = this.taskState.getQueryParamsValue();\n\n      const requests = await this.taskService.getNextActors(\n        taskCode,\n        stageCode,\n        forCurrentStage\n      );\n\n      if (requests instanceof ErrorResponse) {\n        this.utilService.showError(requests.ErrorMsg);\n        return [];\n      }\n\n      this.taskState.setNextActors(requests);\n\n      return requests;\n    } catch (error) {\n      console.error('Failed to load requests with param:', error);\n      return [];\n    } finally {\n      this.taskState.setUpdating(false);\n    }\n  }\n\n  // Load more handling\n  async loadMore(queue: boolean = false): Promise<void> {\n    try {\n      this.taskState.setUpdating(true);\n      const currentParams = this.taskState.getQueryParamsValue();\n      // const searchTerm = this.taskState.getSearchTermValue();\n      const searchTerm = false;\n\n      // Update skip value\n      const newSkip = currentParams.skip + currentParams.limit;\n\n      // Load and append data\n      const response = await this.taskService.getTasks(\n        currentParams.skip,\n        currentParams.limit,\n        currentParams.sortParam || 'createdDate',\n        currentParams.sortOrder\n      );\n\n      if (response instanceof ErrorResponse) {\n        this.utilService.showError(response.ErrorMsg);\n        return;\n      }\n\n      this.taskState.appendRequests(response.Result);\n      this.taskState.updateQueryParams({\n        skip: newSkip,\n        limit: currentParams.limit,\n      });\n    } catch (error) {\n      console.error('Load more failed:', error);\n      throw error;\n    } finally {\n      this.taskState.setUpdating(false);\n    }\n  }\n\n  async pickTask(\n    request: Task,\n    comment: string,\n    toUser?: string,\n    targetStageCode?: string\n  ): Promise<void> {\n    try {\n      this.taskState.setUpdating(true);\n      const response = await this.taskService.pickTask(\n        {\n          ...request,\n          FullStages: [],\n          CurrentActors: request.CurrentActors.map((c) => ({\n            ...c,\n            ActorTags: [],\n          })),\n        },\n        comment,\n        toUser,\n        targetStageCode,\n      );\n\n      if (response instanceof ErrorResponse) {\n        this.utilService.showError(response.ErrorMsg);\n        return;\n      }\n\n      // console.log(response);\n      this.utilService.showSuccess('Task picked successfully');\n      const data = response as Task;\n      if (data) {\n        this.taskState.updateRequest(data);\n      }\n    } catch (error) {\n      console.error('Failed to pick task', error);\n      throw error;\n    } finally {\n      this.taskState.setUpdating(false);\n    }\n  }\n}\n","import { ResourceModel } from 'verben-workflow-ui/src/lib/models';\nimport { Task } from 'verben-workflow-ui/src/lib/models';\n\nexport class TaskModel extends ResourceModel<Task> {}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { CardData } from 'verben-ng-ui';\nimport { Task } from 'verben-workflow-ui/src/lib/models';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { Status } from 'verben-workflow-ui/src/lib/models';\nimport { Workflow } from 'verben-workflow-ui/src/lib/models';\nimport { TaskFacade } from './tasks.facade';\nimport { Form } from 'verben-workflow-ui/src/lib/models';\nimport { DataType } from 'verben-workflow-ui/src/lib/models';\n\n@Component({\n  selector: 'tasks-form',\n  templateUrl: './tasks.form.component.html',\n})\nexport class TasksFormComponent {\n  @Input()\n  get currentData(): CardData | null {\n    return this._currentData;\n  }\n  set currentData(value: CardData | null) {\n    this._currentData = value;\n    console.log(value?.data);\n    if (value?.data) {\n      this.form.patchValue({\n        Name: value.data.Name || '',\n        Description: value.data.Description || '',\n        WorkflowCode: value.data.WorkflowCode || '',\n        Status: value.data.Status || '',\n      });\n    } else {\n      this.form.reset();\n    }\n  }\n\n  private _currentData: CardData | null = null;\n\n  taskForm: Form | null = null;\n  active: number = 0;\n  dataType: DataType = DataType.Text;\n\n  @Output() onTaskFormSave = new EventEmitter<Form>();\n  @Output() onSave = new EventEmitter<Partial<Task>>();\n\n  form: FormGroup;\n  statuses = Object.values(Status);\n  workflows: Workflow[] = [];\n  loadingTaskForm: boolean = false;\n  taskFormView: boolean = false;\n\n  // active: boolean = false;\n\n  constructor(private fb: FormBuilder, private taskFacade: TaskFacade) {\n    this.taskFacade.getWorkflow$().subscribe((workflows) => {\n      this.workflows = workflows;\n    });\n    this.form = this.fb.group({\n      Name: ['', { validators: [Validators.required] }],\n      Description: ['', { validators: [Validators.required] }],\n      WorkflowCode: ['', { validators: [Validators.required] }],\n      Status: ['', { validators: [Validators.required] }],\n      TaskForms: [],\n    });\n  }\n\n  ngOnInit() {\n    try {\n      this.taskFacade.loadWorkflows().then(() => {});\n    } catch (error) {\n      // Handle error\n    }\n\n    this.form.get('WorkflowCode')?.valueChanges.subscribe((value) => {\n      if (value) {\n        const selectedWorkflow = this.workflows.find(\n          ({ Code }) => Code === value\n        );\n        if (selectedWorkflow?.Form) {\n          this.loadingTaskForm = true;\n          this.taskFacade\n            .loadFormsWithParam(selectedWorkflow.Form)\n            .then((form) => {\n              if (form) {\n                this.taskForm = form;\n              }\n            })\n            .finally(() => {\n              this.loadingTaskForm = false;\n            });\n        } else {\n          this.taskForm = null;\n        }\n      }\n    });\n  }\n\n  handleSubmit(): void {\n    if (this.form.valid) {\n      // Emit save event with form value\n      console.log('Form saved:', this.form.value);\n      if (\n        !this.taskForm ||\n        (this.form.get('TaskForms')?.value as Form[])?.length > 0\n      ) {\n        this.onSave.emit(this.form.value);\n      }\n    }\n  }\n\n  onDelete(): void {\n    // Emit delete event\n    console.log('Delete requested');\n  }\n\n  sendTaskForm() {\n    if (this.taskForm) {\n      this.form\n        .get('TaskForms')\n        ?.setValue([{ ...this.taskForm, Swimlane: '' }]);\n      this.taskFormView = false;\n      this.onTaskFormSave.emit(this.taskForm);\n    }\n  }\n\n  areRequiredPropertiesFilled(): boolean {\n    const properties = this.taskForm?.Entities[this.active].Properties || [];\n\n    // Check if all required properties have valid values\n    // return properties.every((property: any) => {\n    //   console.log(property);\n    //   return (\n    //     !property.isRequired ||\n    //     (property.Value !== undefined &&\n    //       property.Value !== null &&\n    //       property.Value !== '')\n    //   );\n    // });\n    return true;\n  }\n\n  disableProcessing() {\n    const selectedWorkflow = this.workflows.find(\n      ({ Code }) => Code === this.form.get('WorkflowCode')?.value\n    );\n\n    if (\n      selectedWorkflow?.Form &&\n      (this.currentData?.data as Task)?.TaskForms?.length === 0\n    ) {\n      return true;\n    } else return this.form.invalid;\n  }\n}\n","@if (taskFormView && taskForm) {\n<div\n  *ngIf=\"taskForm.Entities[active]\"\n  class=\"flex flex-wrap bg-[#9A9FBF80] rounded-xl px-3 py-2 w-full relative gap-6\"\n>\n  <app-form-timer></app-form-timer>\n  <div *ngFor=\"let group of taskForm.Entities; let index = index\">\n    <p\n      (click)=\"active = index\"\n      [ngClass]=\"{\n        'bg-[#fff] text-primary rounded-lg shadow-lg': active === index\n      }\"\n      class=\"px-6 py-2 cursor-pointer\"\n    >\n      {{ group.Name }}group\n    </p>\n  </div>\n</div>\n\n<div *ngIf=\"taskForm.Entities[active]; else emptyState\" class=\"mt-4\">\n  <form-control\n    [dataType]=\"dataType\"\n    [formProperties]=\"taskForm.Entities[active].Properties\"\n  ></form-control>\n\n  <div class=\"flex gap-3 justify-end\">\n    <verbena-button\n      (click)=\"areRequiredPropertiesFilled()\"\n      text=\"CHECK\"\n      styleType=\"ylw-outline\"\n      class=\"ml-auto\"\n    ></verbena-button>\n\n    <verbena-button\n      (click)=\"taskFormView = false\"\n      text=\"Close task form\"\n      styleType=\"ylw-outline\"\n      class=\"ml-auto\"\n    ></verbena-button>\n\n    <verbena-button\n      class=\"verben-primary-button\"\n      (click)=\"sendTaskForm()\"\n      [disable]=\"!areRequiredPropertiesFilled()\"\n      text=\"Save\"\n    ></verbena-button>\n  </div>\n</div>\n\n<!-- Empty state template -->\n<ng-template #emptyState>\n  <p class=\"mt-4 p-4 text-gray-600 text-center\">\n    No entries available for the selected form group.\n  </p>\n</ng-template>\n\n} @else {\n<form\n  [formGroup]=\"form\"\n  class=\"flex flex-col px-3 pb-3 rounded-xl h-full w-full relative space-y-4\"\n  (ngSubmit)=\"handleSubmit()\"\n>\n  <verbena-input\n    name=\"Name\"\n    label=\"Name\"\n    formControlName=\"Name\"\n    placeHolder=\"Enter Name\"\n  />\n  <verbena-input\n    name=\"Description\"\n    label=\"Description\"\n    formControlName=\"Description\"\n    placeHolder=\"Enter Description\"\n  />\n\n  <div class=\"space-y-1\">\n    <label for=\"workflow\">Workflow</label>\n\n    <verben-drop-down\n      label=\"Workflow\"\n      styleClass=\"w-full\"\n      width=\"100%\"\n      [multiselect]=\"false\"\n      placeholder=\"Select\"\n      [options]=\"workflows\"\n      optionLabel=\"Name\"\n      optionValue=\"Code\"\n      id=\"workflow\"\n      formControlName=\"WorkflowCode\"\n      class=\"form-control\"\n    >\n    </verben-drop-down>\n  </div>\n\n  <div class=\"space-y-1\">\n    <label for=\"status\">Status</label>\n\n    <verben-drop-down\n      label=\"Status\"\n      styleClass=\"w-full\"\n      width=\"100%\"\n      [multiselect]=\"false\"\n      [showClear]=\"true\"\n      placeholder=\"Null\"\n      [(options)]=\"statuses\"\n      id=\"status\"\n      formControlName=\"Status\"\n      class=\"form-control\"\n    >\n    </verben-drop-down>\n  </div>\n\n  <!-- buttons -->\n  <div class=\"flex justify-between gap-4 my-2\">\n    <verbena-button\n      width=\"114px\"\n      height=\"39px\"\n      text=\"Delete\"\n      bgColor=\"#999999\"\n      textColor=\"#404040\"\n      borderRadius=\"10px\"\n      [disable]=\"disableProcessing()\"\n    ></verbena-button>\n    <verbena-button\n      [disable]=\"!taskForm || loadingTaskForm\"\n      (click)=\"taskFormView = true\"\n      [text]=\"loadingTaskForm ? 'Checking for form' : 'Fill task form'\"\n      styleType=\"ylw-outline\"\n      class=\"ml-auto\"\n    ></verbena-button>\n    <verbena-button\n      type=\"submit\"\n      text=\"Save\"\n      bgColor=\"#FFE681\"\n      textColor=\"#404040\"\n      borderRadius=\"10px\"\n      pd=\"10px 20px\"\n      width=\"114px\"\n      height=\"39px\"\n      [disable]=\"disableProcessing()\"\n    ></verbena-button>\n  </div>\n</form>\n}\n","import { ChangeDetectorRef, Component, input, viewChildren } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { CardData, VerbenPopUpComponent } from 'verben-ng-ui';\nimport { Actor, ObjectState, Task, TaskStatus, WorkflowAction } from 'verben-workflow-ui/src/lib/models';\nimport { BaseDataViewComponent, DataViewConfig } from 'verben-workflow-ui/src/lib/shared';\nimport { columns } from './tasks.columns';\nimport { TaskFacade } from './tasks.facade';\nimport { TaskModel } from './tasks.models';\nimport { TasksService } from './tasks.service';\nimport { TaskState } from './tasks.state';\n\n@Component({\n  selector: 'lib-tasks',\n  templateUrl: './tasks.component.html',\n  styleUrl: './tasks.component.css',\n  providers: [TasksService, TaskFacade, TaskState],\n})\nexport class TasksComponent extends BaseDataViewComponent<Task> {\n  user = input<string>();\n  config: DataViewConfig<Task> = {\n    dataSource: [], // Populate from service\n    columns: columns, // Your existing column definitions\n    cardDataMapper: (task) => ({\n      selected: false,\n      title: task.Name,\n      data: task,\n      body: [\n        { title: 'Name', value: task.Name },\n        { title: 'Status', value: task.Status },\n      ],\n      children: [],\n    }),\n    onDetailView: (task) => {\n      // Custom detail view logic\n    },\n  };\n  popups = viewChildren<VerbenPopUpComponent>('popup');\n\n  selectedTaskCode: string | null = null;\n  activeActionType: ActionType | null = null;\n  comment: string = '';\n  isModalVisible: boolean = false;\n\n  tableRowActions = [\n    // { label: 'Pick Task', action: (data: Task) => {}, divider: false },\n    // { label: 'Release Task', action: (data: Task) => {}, divider: false },\n    { label: 'Follow Task', action: (data: Task) => { }, divider: true },\n    // { label: 'Pass On', action: (data: Task) => {}, divider: false },\n    // { label: 'Pass Back', action: (data: Task) => {}, divider: false },\n    {\n      label: 'Re-Assign',\n      action: (data: Task) => {\n        this.activeActionType = ActionType.ReAssign;\n        this.selectedTaskCode = data.Code;\n        console.log(this.selectedTaskCode, this.activeActionType);\n        this.comment = '';\n        this.nextActors = [];\n        this.taskFacade.loadNextActors(data.Code, undefined, true).then(() => {\n          // if (this.popup() && !this.popup()?.dropdownOpen) {\n          //   this.popup()?.toggleDropdown();\n          // }\n        });\n      },\n      divider: true,\n    },\n    { label: 'View Operation', action: (data: Task) => { }, divider: false },\n  ];\n\n  nextActions: WorkflowAction[] = [];\n  nextActors: Actor[] = [];\n\n  recipientCode: string | null = null;\n  selectedAction: BehaviorSubject<WorkflowAction | null> =\n    new BehaviorSubject<WorkflowAction | null>(null);\n  currentTask: Task | null = null;\n\n  selectedStageCode: string | null = null;\n\n  constructor(private cdr: ChangeDetectorRef, private taskFacade: TaskFacade) {\n    super();\n\n    this.taskFacade.getRequests$().subscribe((data) => {\n      this.data.set(data);\n    });\n\n    // this.taskFacade.getNextActions$().subscribe((data) => {\n    //   this.nextActions = data;\n    // });\n\n    this.taskFacade.getNextActors$().subscribe((data) => {\n      this.nextActors = data;\n      const activeUser = this.user();\n      if (activeUser && data.map(({ Identifier }) => Identifier).includes(activeUser)) {\n        this.recipientCode = activeUser;\n      }\n    });\n  }\n\n  override loadInitialData() {\n    try {\n      this.taskFacade.loadRequests(this.user());\n    } catch (error) {\n      // Handle error\n    }\n  }\n\n  handlePopupClose(event: boolean) {\n    console.log('Closing...', event);\n    if (event) {\n      this.selectedTaskCode = null;\n    }\n  }\n\n  onPopupToggled(isOpen: boolean, currentPopup: VerbenPopUpComponent) {\n    if (isOpen) {\n      this.popups().forEach((popup) => {\n        if (popup !== currentPopup && popup.dropdownOpen) {\n          popup.toggleDropdown();\n        }\n      });\n    }\n    this.handlePopupClose(!isOpen);\n  }\n\n  handleAction(task: Task, popup: VerbenPopUpComponent) {\n    const action = this.activeActionType;\n\n    switch (action) {\n      case ActionType.ReAssign:\n        this.taskFacade\n          .reAssign(task, this.comment, this.recipientCode ?? undefined)\n          .then(() => {\n            this.comment = '';\n            this.nextActors = [];\n            this.recipientCode = null;\n            this.selectedAction.next(null);\n            popup.toggleDropdown();\n          });\n        break;\n      case ActionType.PickTask:\n        this.taskFacade\n          .pickTask(task, this.comment, this.recipientCode ?? undefined, this.selectedStageCode ?? undefined)\n          .then(() => {\n            this.comment = '';\n            this.nextActors = [];\n            this.recipientCode = null;\n            this.selectedAction.next(null);\n            this.selectedStageCode = null;\n            popup.toggleDropdown();\n          });\n        break;\n      case ActionType.SkipTo:\n        // const selectedAction = this.selectedAction.getValue();\n        // console.log('Selected Action for Skip:', selectedAction);\n        // console.log('Task for Skip:', task);\n        // console.log('Comment for Skip:', this.comment);\n        // console.log('Recipient Code for Skip:', this.recipientCode);\n        // if (selectedAction) {\n        //   this.facade\n        //     .skipTo(\n        //       task.CurrentStages[0],\n        //       selectedAction.ToStage,\n        //       task,\n        //       this.comment,\n        //       this.recipientCode\n        //     )\n        //     .then(() => {\n        //       this.comment = '';\n        //       this.nextActions = [];\n        //       this.recipientCode = null;\n        //       this.selectedAction.next(null);\n        //       popup.toggleDropdown();\n        //     });\n        // }\n        break;\n      default:\n        break;\n    }\n  }\n\n  override onStateChange(event: { key: string; value: boolean }): void {\n    switch (event.key) {\n      case 'create':\n        var newItem: Task = new TaskModel({\n          WorkflowCode: '',\n          Status: TaskStatus.Active,\n          Flowable: '',\n          FlowableData: null,\n          FlowablePath: '',\n          CurrentActors: [],\n          DataState: ObjectState.New,\n        }) as unknown as Task;\n        this.taskFacade.addNewRequest(newItem);\n        // const cardData: CardData = {\n        //   selected: false,\n        //   title: ,\n        //   data: newGroup,\n        //   body: [],\n        //   children: [],\n        // };\n        // this.data = this.data.concat([newGroup]);\n        // this.cardData.push(cardData);\n        // this.userCardClicked(cardData);\n        this.dataView.isTableView = false;\n        break;\n      // case 'filter':\n      //   this.showFilter = event.value;\n      //   break;\n      // case 'sort':\n      //   this.showSort = event.value;\n      //   break;\n      // case 'column':\n      //   this.showColumn = event.value;\n      //   break;\n      default:\n        break;\n    }\n  }\n\n  protected getCardDataByIdentifier(code: string): CardData | undefined {\n    return this.cardData()?.find(({ data }) => data.data.Code === code);\n  }\n\n  async loadMore() {\n    try {\n      await this.taskFacade.loadMore();\n    } catch (error) {\n      // Handle error\n    }\n  }\n\n  async onSave(data: Partial<Task>) {\n    const payload = {\n      ...this.currentData?.data,\n      ...data,\n    } as Task;\n    await this.taskFacade.addRequest(payload);\n  }\n}\n\nenum ActionType {\n  PickTask = 'PickTask',\n  UnPickTask = 'UnPickTask',\n  ReAssign = 'ReAssign',\n  PassOn = 'PassOn',\n  PassBack = 'PassBack',\n  FollowTask = 'FollowTask',\n  UnfollowTask = 'UnfollowTask',\n  SkipTo = 'SkipTo',\n}\n","<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","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { TooltipModule } from 'verben-ng-ui';\nimport { FormControlerModule } from 'verben-workflow-ui/src/lib/components/form-control';\nimport { FormTimerModule } from 'verben-workflow-ui/src/lib/components/form-timer';\nimport { OperationPopupComponent } from 'verben-workflow-ui/src/lib/components/operation-popup';\nimport { TaskFormModule } from 'verben-workflow-ui/src/lib/components/task-form';\nimport { SharedModule } from 'verben-workflow-ui/src/lib/shared';\nimport { TasksComponent } from './tasks.component';\nimport { TasksFormComponent } from './tasks.form.component';\n\n@NgModule({\n  declarations: [TasksComponent, TasksFormComponent],\n  imports: [\n    CommonModule,\n    SharedModule,\n    TaskFormModule,\n    FormControlerModule,\n    FormTimerModule,\n    RouterLink,\n    TooltipModule,\n    OperationPopupComponent,\n  ],\n  exports: [TasksComponent],\n})\nexport class TasksModule { }\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.TasksService","i2.TaskState","i3","i1","i2.TaskFacade","i4","i1.TaskFacade","i2","i5","i6.TasksFormComponent"],"mappings":"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"}