{"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 = `GetTasksWithParam/${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 searchTerm$ = new BehaviorSubject<string>('');\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  getSearchTerm$(): Observable<string> {\n    return this.searchTerm$.asObservable();\n  }\n\n  getSearchTermValue(): string {\n    return this.searchTerm$.getValue();\n  }\n\n  setSearchTerm(term: string): void {\n    this.searchTerm$.next(term);\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, OnDestroy } from '@angular/core';\nimport {\n  Observable,\n  Subject,\n  debounceTime,\n  distinctUntilChanged,\n  lastValueFrom,\n  takeUntil,\n} 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 implements OnDestroy {\n  private searchSubject = new Subject<{ term: string; user?: string }>();\n  private destroy$ = new Subject<void>();\n\n  constructor(\n    private taskService: TasksService,\n    private taskState: TaskState,\n    private utilService: UtilService\n  ) {\n    // Set up debounced search handling\n    this.searchSubject\n      .pipe(\n        debounceTime(1000),\n        distinctUntilChanged((a, b) => a.term === b.term),\n        takeUntil(this.destroy$)\n      )\n      .subscribe(({ term, user }) => {\n        this.handleSearch(term, user);\n      });\n\n    this.isUpdating$().subscribe((loading) => {\n      this.utilService.sendBI(loading);\n    });\n  }\n\n  ngOnDestroy(): void {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  // Search handling\n  search(term: string, user?: string): void {\n    this.searchSubject.next({ term, user });\n  }\n\n  private async handleSearch(searchTerm: string, user?: string): Promise<void> {\n    this.taskState.setSearchTerm(searchTerm);\n    this.taskState.resetPagination();\n\n    try {\n      this.taskState.setUpdating(true);\n      if (searchTerm.trim()) {\n        await this.loadRequestsWithParam(searchTerm);\n      } else {\n        await this.loadRequests(user);\n      }\n    } catch (error) {\n      console.error('Search failed:', error);\n      throw error;\n    } finally {\n      this.taskState.setUpdating(false);\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\n      // The first page is already loaded at skip=0 without advancing the\n      // pointer, so fetch the *next* page starting at newSkip.\n      const newSkip = currentParams.skip + currentParams.limit;\n\n      // Load and append data, honouring any active search term\n      const response = searchTerm\n        ? await this.taskService.getTaskWithParam(\n            searchTerm,\n            newSkip,\n            currentParams.limit,\n            currentParams.sortParam || 'createdDate',\n            currentParams.sortOrder\n          )\n        : await this.taskService.getTasks(\n            newSkip,\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-[var(--vbn-color-surface)] 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=\"var(--vbn-color-text-muted)\"\n      textColor=\"var(--vbn-color-on-primary)\"\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=\"var(--vbn-color-primary)\"\n      textColor=\"var(--vbn-color-on-primary)\"\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 } from '@angular/core';\nimport { CardData } from 'verben-ng-ui';\nimport { ObjectState, Task, TaskStatus } 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  constructor(private cdr: ChangeDetectorRef, private taskFacade: TaskFacade) {\n    super();\n\n    this.taskFacade.getRequests$().subscribe((data) => {\n      this.data.set(data);\n    });\n  }\n\n  override loadInitialData() {\n    try {\n      this.taskFacade.loadRequests(this.user());\n    } catch (error) {\n      // Handle error\n    }\n  }\n\n  handleSearch(event: { key: string; value: string }) {\n    this.taskFacade.search(event.value, this.user());\n  }\n\n  getActionNamesForTask(task: Task): string[] {\n    return ['followtask', 'reassign'];\n  }\n\n  override onStateChange(event: { key: string; value: boolean }): void {\n    switch (event.key) {\n      case 'create': {\n        const 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        this.dataView.isTableView = false;\n\n        // CardDataViewComponent matches clicks against its cardDataList input,\n        // which only receives the new card after a change-detection pass. Force\n        // one so the freshly added card is resolvable before we open it.\n        this.cdr.detectChanges();\n\n        const card = this.cardData().find((c) => c.data === newItem);\n        if (card) {\n          this.currentData = this.cardDataView.onItemClick(card);\n          this.cdr.detectChanges();\n        }\n        break;\n      }\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","<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-[var(--vbn-color-border-focus)]\">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-[var(--vbn-color-border-focus)]\">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=\"var(--vbn-color-surface-alt)\" 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-[var(--vbn-color-on-primary)]\">{{\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]=\"'var(--vbn-color-text)'\" [backgroundColor]=\"'var(--vbn-color-border)'\" [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-[var(--vbn-color-border-focus)] 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]=\"'var(--vbn-color-text-muted)'\"\n              [borderRadius]=\"'4px'\"\n              [textColor]=\"'var(--vbn-color-surface)'\"\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-[var(--vbn-color-border-focus)] 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 var(--vbn-color-primary)'\" borderRadius=\"10px\"\n        boxShadow=\"2px 2px 2px 0px silver\" bgColor=\"white\" width=\"420px\" textColor=\"black\" pd=\"1rem\"\n        primaryColor=\"var(--vbn-color-primary)\" secondaryColor=\"var(--vbn-color-border-focus)\" tertiaryColor=\"var(--vbn-color-on-primary)\" [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]=\"'var(--vbn-color-text-muted)'\"\n        [borderRadius]=\"'4px'\"\n        [textColor]=\"'var(--vbn-color-surface)'\"\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-[var(--vbn-color-border-focus)] 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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"}