{"version":3,"file":"verben-workflow-ui-src-lib-components-form-response.mjs","sources":["../../../projects/verben-workflow-ui/src/lib/components/form-response/form-response.service.ts","../../../projects/verben-workflow-ui/src/lib/components/form-response/form-response.component.ts","../../../projects/verben-workflow-ui/src/lib/components/form-response/form-response.component.html","../../../projects/verben-workflow-ui/src/lib/components/form-response/form-response.module.ts","../../../projects/verben-workflow-ui/src/lib/components/form-response/verben-workflow-ui-src-lib-components-form-response.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { ColumnDefinition } from 'verben-ng-ui';\nimport { Form } from 'verben-workflow-ui/src/lib/models';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class FormResponseService {\n  constructor() {}\n\n  get formColumns(): ColumnDefinition<Form>[] {\n    return [\n      {\n        id: 'select',\n        header: '',\n      },\n      {\n        id: 'createdAt',\n        header: 'CREATED',\n        accessorKey: 'CreatedAt',\n      },\n      {\n        id: 'name',\n        header: 'NAME',\n        accessorKey: 'Name',\n      },\n      {\n        id: 'isValid',\n        header: 'ISVAliDATED',\n        accessorKey: 'IsValid',\n      },\n      {\n        id: 'expiryDate',\n        header: 'EXPIRY DATE',\n        accessorKey: 'ExpiryDate',\n      },\n      {\n        id: 'duration',\n        header: 'Duration',\n        accessorKey: 'Duration',\n      },\n\n      {\n        id: 'actions',\n        header: 'ACTIONS',\n        accessorFn: (row: Form) => {\n          return row;\n        },\n      },\n    ];\n  }\n}\n","import {\n  ChangeDetectorRef,\n  Component,\n  EventEmitter,\n  Input,\n  OnInit,\n  Output,\n  ViewChild,\n} from '@angular/core';\nimport {\n  FormBuilder\n} from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport {\n  CardData,\n  CardDataViewComponent,\n  ColumnDefinition,\n  ConditionalOptions,\n  DataFilterType,\n  DataTableComponent,\n  DataViewComponent,\n  DropdownChangeEvent,\n  IDataFilter,\n} from 'verben-ng-ui';\nimport { workflowBaseStyle as baseStyle } from 'verben-workflow-ui/src/lib/components/workflow';\nimport { ErrorResponse, ObjectState, PagedResult, SearchOperator, SearchPropertySign, SearchPropertyValue, SearchPropertyValueType, Status } from 'verben-workflow-ui/src/lib/models';\nimport { EnvironmentService, HttpWebRequestService, UtilService } from 'verben-workflow-ui/src/lib/services';\nimport { FormResponseService } from './form-response.service';\n\nimport { Location } from '@angular/common';\nimport { ActivatedRoute, ParamMap, Router } from '@angular/router';\nimport { DataType, Form } from 'verben-workflow-ui/src/lib/models';\n\nenum FormFieldProperty {\n  Name = 'Name',\n  Description = 'Description',\n  IsValidated = 'IsValidated',\n  WorkFlow = 'WorkFlow',\n  ServiceName = 'ServiceName',\n  CreatedAt = 'CreatedAt',\n}\n\nenum FilterTypes {\n  Before = SearchPropertySign.LT,\n  On = SearchPropertySign.EQ,\n  After = SearchPropertySign.GT,\n  NEQ = SearchPropertySign.NEQ,\n}\n\n@Component({\n  selector: 'lib-form-response',\n  templateUrl: './form-response.component.html',\n  styleUrl: './form-response.component.css',\n})\nexport class FormResponseComponent implements OnInit {\n  visibleColumnDef: ColumnDefinition<Form>[] = [];\n  styles = baseStyle;\n  data: Form[] = [];\n  @Input() path: string = '/documentation/form-group/fields';\n  cardData: CardData[] = [];\n  selectedFilterTableCount: number = 0;\n  showFilter: boolean = false;\n  currentData: CardData | null = null;\n  @ViewChild('vdcv') cardDataView!: CardDataViewComponent;\n  @ViewChild('vdv') dataView!: DataViewComponent;\n  @ViewChild('dt') tableView!: DataTableComponent<Form>;\n  @Input() application: string | null = null;\n  @Input() pageSize: number = 10;\n  @Input() taskCodeKey: string = 'taskCode';\n  skip: number = 0;\n  hasMore: boolean = true;\n  @Output() onViewProcessClicked: EventEmitter<string> = new EventEmitter();\n  searchTerm: string = '';\n  pageState: PagedResult<Form> | null = null;\n  isOpen: boolean = false;\n  openDropdownId: string | null = null;\n  currentFilters: IDataFilter[] = [];\n  currentSorts: IDataFilter[] = [];\n  dataType: DataType = DataType.Text;\n  searchTerm$ = new Subject<string>();\n  statusOptions: Status[] = Object.values(Status);\n  active: number = 0;\n  taskCode: string = '';\n  users: Form[] = [];\n\n  visibleColumns: IDataFilter[] = [];\n\n  filterArray: IDataFilter[] = [\n    {\n      name: FormFieldProperty.Name,\n      type: DataFilterType.String,\n      checked: false,\n    },\n    {\n      name: FormFieldProperty.Description,\n      type: DataFilterType.String,\n      checked: false,\n    },\n    {\n      name: FormFieldProperty.IsValidated,\n      type: DataFilterType.Bool,\n      checked: false,\n    },\n    {\n      name: FormFieldProperty.ServiceName,\n      type: DataFilterType.String,\n      checked: false,\n    },\n    {\n      name: FormFieldProperty.WorkFlow,\n      type: DataFilterType.String,\n      checked: false,\n    },\n    {\n      name: FormFieldProperty.CreatedAt,\n      type: DataFilterType.Date,\n      checked: false,\n    },\n  ];\n  closePopUp(row: Form) {\n    this.openDropdownId = row.Id;\n    this.onClose();\n  }\n  toggleTable(rowId: any) {\n    this.tableView.toggleRowEdit(rowId);\n  }\n  sortOptions: IDataFilter[] = [\n    {\n      name: FormFieldProperty.Name,\n      type: DataFilterType.String,\n      checked: false,\n    },\n    {\n      name: FormFieldProperty.Description,\n      type: DataFilterType.String,\n      checked: false,\n    },\n    {\n      name: FormFieldProperty.IsValidated,\n      type: DataFilterType.Bool,\n      checked: false,\n    },\n    {\n      name: FormFieldProperty.ServiceName,\n      type: DataFilterType.String,\n      checked: false,\n    },\n    {\n      name: FormFieldProperty.WorkFlow,\n      type: DataFilterType.String,\n      checked: false,\n    },\n    {\n      name: FormFieldProperty.CreatedAt,\n      type: DataFilterType.Date,\n      checked: false,\n    },\n  ];\n\n  private currentSearchTerm: string = '';\n\n  constructor(\n    private utilService: UtilService,\n    private server: HttpWebRequestService,\n    private cdr: ChangeDetectorRef,\n    private fb: FormBuilder,\n    private envSvc: EnvironmentService,\n    private router: Router,\n    private formResponseSvc: FormResponseService,\n    private _location: Location,\n    private route: ActivatedRoute,\n  ) {\n    this.visibleColumnDef = formResponseSvc.formColumns;\n    this.visibleColumns = formResponseSvc.formColumns.map((col) => ({\n      checked: true,\n      name: typeof col.header === 'string' ? col.header : col.id,\n      type: DataFilterType.Bool,\n    }));\n  }\n  goBack() {\n    this._location.back();\n  }\n  async ngOnInit(): Promise<void> {\n    this.active = 0;\n    this.route.paramMap.subscribe(async (params: ParamMap) => {\n      const code = params.get(this.taskCodeKey);\n      this.taskCode = code || '';\n      if (this.taskCode && this.taskCode.trim().length > 0) {\n        await this.getForms(this.taskCode);\n        if (this.cardData.length == 1) {\n          // console.log({\n          //   CardData: JSON.parse(JSON.stringify(this.cardData[0])),\n          // });\n          this.cardClicked(this.cardData[0]);\n        }\n      }\n    });\n  }\n  setActive(i: number = 0) {\n    this.active = i;\n  }\n\n  async getAllTaskUsers(): Promise<Form[] | undefined> {\n    this.utilService.sendBI(true);\n    const res = await this.server.get(\n      `GetTaskUsers/0/${this.pageSize}`,\n      this.envSvc.environment.WorkFlowAPI\n    );\n    this.utilService.sendBI(false);\n    if (res instanceof ErrorResponse) {\n      return undefined;\n    } else {\n      this.pageState = res as PagedResult<Form>;\n      var result = (res as PagedResult<Form>).Result;\n      return result;\n    }\n  }\n  clearLogs(sortValue: string = 'CreatedAt', order: string = 'asc') {\n    this.data = [];\n    this.skip = 0;\n    this.hasMore = true;\n    this.getForms(this.taskCode);\n  }\n  async getForms(taskCode: string): Promise<Form[] | undefined> {\n    this.utilService.sendBI(true);\n    const res = await this.server.get(\n      `GetCurrentFormsForTask/${taskCode}`,\n      this.envSvc.environment.WorkFlowAPI\n    );\n    this.utilService.sendBI(false);\n\n    if (res instanceof ErrorResponse) {\n      return undefined;\n    }\n\n    // this.pageState = res as Form[];\n    const result = res as Form[];\n    if (this.data && Array.isArray(this.data)) {\n      this.data = [...this.data, ...result];\n    } else {\n      this.data = result;\n    }\n    this.data.forEach((x) => (x.id = x.Id));\n\n    this.skip += this.pageSize;\n    this.hasMore = this.skip < result.length;\n    this.setUpCardData();\n    return result;\n  }\n\n  loadMore() {\n    if (this.hasMore) {\n      this.getForms(this.taskCode);\n    }\n  }\n\n  reset() {\n    this.skip = 0;\n    this.pageSize = 10;\n  }\n  onUserSelected(event: DropdownChangeEvent, item: Form) {\n    const user = this.users.find((x) => x.Name == event.value);\n    if (user) {\n      item.Name = user.Name;\n      item.Duration = user.Duration;\n      item.ExpiryDate = user.ExpiryDate;\n      item.IsValid = user.IsValid;\n      item.ServiceName = user.ServiceName;\n    }\n  }\n  onClear(event: Event, item: Form) { }\n\n  setUpCardData() {\n    const cardData: CardData[] = this.data.map((x) => {\n      return {\n        selected: false,\n        title: x.Name,\n        data: x,\n        body: [],\n        children: [],\n      };\n    });\n    this.cardData = cardData;\n    this.cdr.detectChanges();\n  }\n\n  goToCardView(data: Form) {\n    const item = this.cardData.find((x) => x.data == data);\n\n    if (item) {\n      this.cardClicked(item, true);\n      this.onClose();\n    }\n  }\n  areRequiredPropertiesFilled(data: Form): boolean {\n    const properties = data.Entities[this.active].Properties || [];\n    return properties.every((property: any) => {\n      return (\n        !property.isRequired ||\n        (property.Value !== undefined &&\n          property.Value !== null &&\n          property.Value !== '')\n      );\n    });\n  }\n\n  goToTableView() {\n    if (!this.currentData) {\n      return;\n    }\n    this.dataView.toggleView();\n    const id = this.currentData.data ? this.currentData.data.Id : '';\n    if (id.trim().length > 0 && !this.tableView.isRowEditing(id)) {\n      //  console.log(id);\n\n      this.tableView.toggleRowEdit(id);\n    }\n  }\n\n  viewProcesses(code: string) {\n    if (code.trim().length == 0) {\n      return;\n    }\n    this.onViewProcessClicked.emit(code);\n  }\n\n  cardClicked(item: CardData, toggleView: boolean = false) {\n    this.cardData.forEach((card) => (card.selected = false));\n    item.selected = true;\n    this.setActive(0);\n    // console.log({ PassedItem: JSON.parse(JSON.stringify(item)) });\n    // console.log({\n    //   ListChecked: JSON.parse(JSON.stringify(this.cardDataView.cardDataList)),\n    // });\n    this.currentData = this.cardDataView.onItemClick(item);\n    // console.log({ Item: JSON.parse(JSON.stringify(this.currentData)) });\n\n    if (toggleView) {\n      this.dataView.toggleView();\n    }\n  }\n\n  async saveItem() {\n    if (this.currentData) {\n      var form: Form = this.currentData.data as Form;\n\n      if (this.currentData.data.Name.trim().length == 0) {\n        this.utilService.showInfo('Name cannot be empty');\n        return;\n      }\n      form.DataState =\n        form.DataState == ObjectState.New\n          ? ObjectState.New\n          : ObjectState.Changed;\n      form.Id = form.DataState == ObjectState.New ? '' : form.Id;\n      this.utilService.sendBI(true);\n      const res = await this.server.post(\n        `FillForm/${this.taskCode}`,\n        form,\n        this.envSvc.environment.WorkFlowAPI,\n      );\n      this.utilService.sendBI(false);\n      if (res instanceof ErrorResponse) {\n      } else {\n        this.utilService.showSuccess('Form entity saved successfully');\n        // const result = res as Form[];\n        // if (result.length > 0) {\n        //   var userResult = result[0];\n        //   const itemIndex = this.data.findIndex(\n        //     (x) => x == this.currentData?.data\n        //   );\n        //   if (itemIndex > -1) {\n        //     this.data[itemIndex].Name = userResult.Name;\n        //     this.data[itemIndex].Id = userResult.Id;\n        //     this.data[itemIndex].id = userResult.id;\n        //     this.data[itemIndex].DataState = userResult.DataState;\n        //     this.data[itemIndex].Name = userResult.Name;\n        //     this.data[itemIndex].Duration = userResult.Duration;\n        //     this.data[itemIndex].Entities = userResult.Entities;\n        //     this.data[itemIndex].ExpiryDate = userResult.ExpiryDate;\n        //     this.data[itemIndex].IsValid = userResult.IsValid;\n        //     this.data = this.data.map((x) => x);\n        //   }\n        // }\n      }\n    }\n  }\n\n  async tableSaveItem(form: Form, callBack: () => any) {\n    form.DataState =\n      form.DataState == ObjectState.New ? ObjectState.New : ObjectState.Changed;\n    form.Id = form.DataState == ObjectState.New ? '' : form.Id;\n    this.utilService.sendBI(true);\n    const res = await this.server.post(\n      `SaveFormEntities`,\n      [form],\n      this.envSvc.environment.WorkFlowAPI,\n    );\n    this.utilService.sendBI(false);\n    if (res instanceof ErrorResponse) {\n    } else {\n      this.utilService.showSuccess('Form saved successfully');\n      const result = res as Form[];\n      if (result.length > 0) {\n        var userResult = result[0];\n        const itemIndex = this.data.findIndex((x) => x == form);\n        if (itemIndex > -1) {\n          this.data[itemIndex].Name = userResult.Name;\n          this.data[itemIndex].Id = userResult.Id;\n          this.data[itemIndex].id = userResult.id;\n          this.data[itemIndex].DataState = userResult.DataState;\n          this.data[itemIndex].Name = userResult.Name;\n          this.data[itemIndex].Duration = userResult.Duration;\n          this.data[itemIndex].Entities = userResult.Entities;\n          this.data[itemIndex].ExpiryDate = userResult.ExpiryDate;\n          this.data[itemIndex].IsValid = userResult.IsValid;\n          this.data = this.data.map((x) => x);\n        }\n        callBack();\n      }\n    }\n  }\n\n  updateTable() {\n    this.data = this.data.map((x) => x);\n    //  console.log(this.data);\n  }\n\n  navigateToFields(card: Form) {\n    const queryParams = { FormId: card.Id, Name: card.Name };\n    this.router.navigate([`${this.path}`], { queryParams });\n  }\n  onClose() {\n    this.isOpen = false;\n  }\n\n  openDropdown(item: Form): void {\n    if (this.openDropdownId === item.Id) {\n      this.openDropdownId = null;\n    } else {\n      this.openDropdownId = item.Id;\n    }\n  }\n\n  async onSearch(event: { key: string; value: string }) {\n    this.searchTerm = event.value;\n    this.reset();\n    if (!this.searchTerm) {\n      this.getForms(this.taskCode);\n      return;\n    }\n\n    this.utilService.sendBI(true);\n\n    try {\n      const res = await this.server.get(\n        `GetFormEntitiesWithParam/${this.searchTerm}/${this.skip}/${this.pageSize}/CreatedAt/asc`\n      );\n\n      this.utilService.sendBI(false);\n\n      if (res instanceof ErrorResponse) {\n        console.error('Error during search:', res);\n      } else {\n        this.pageState = res as PagedResult<Form>;\n        var result = (res as PagedResult<Form>).Result;\n        this.data = result;\n        this.setUpCardData();\n      }\n    } catch (error) {\n      console.error('Search error:', error);\n    } finally {\n    }\n  }\n  isDropdownOpen(item: any): boolean {\n    return this.openDropdownId === item.id;\n  }\n\n  onViewChange(isGridView: boolean): void { }\n\n  onStateChange(event: { key: string; value: boolean }): void {\n    switch (event.key) {\n      case 'filter':\n        this.showFilter = event.value;\n        break;\n      default:\n        break;\n    }\n  }\n\n  showTableView: boolean = false;\n  onSelectionChange(selectedRows: Form[]) { }\n  retryMessage() { }\n\n  onColumnsUpdated(updatedColumns: IDataFilter[]) {\n    const updatedColumnDef: ColumnDefinition<Form>[] = [];\n    updatedColumns.forEach((col) => {\n      const matchingCol = this.formResponseSvc.formColumns.find(\n        (column) => column.header === col.name || column.id === col.name,\n      );\n      if (matchingCol) {\n        updatedColumnDef.push(matchingCol);\n      }\n    });\n\n    this.visibleColumnDef = [...updatedColumnDef];\n  }\n\n  async updateFiltersAndSorts(isSearch: boolean = false) {\n    if (!isSearch) {\n      this.dataView.onClearSearch();\n      this.currentSearchTerm = '';\n      this.cdr.detectChanges();\n      const clickEvent = new MouseEvent('click', {\n        bubbles: true,\n        cancelable: true,\n        view: window,\n      });\n      document.dispatchEvent(clickEvent);\n    }\n    var payload: SearchPropertyValue[] = this.currentFilters.map((x) => {\n      return {\n        PropertyName:\n          FormFieldProperty[x.name as keyof typeof FormFieldProperty],\n        EntityValue: x.value,\n        Operator: SearchOperator.And,\n        Sign:\n          x.condition && Object.keys(FilterTypes).includes(x.condition)\n            ? (FilterTypes[\n              x.condition as keyof typeof FilterTypes\n            ] as unknown as SearchPropertySign)\n            : SearchPropertySign.EQ,\n        Type:\n          x.name == FormFieldProperty.CreatedAt\n            ? SearchPropertyValueType.Date\n            : SearchPropertyValueType.String,\n      };\n    });\n    // payload.push({\n    //   PropertyName: 'APIKey',\n    //   EntityValue: this.envSvc.environment.APIKey,\n    //   Operator: SearchOperator.And,\n    //   Sign: SearchPropertySign.EQ,\n    // });\n    const sortParam: { Param: string; Order: string } | null =\n      this.currentSorts.length > 0\n        ? {\n          Param:\n            FormFieldProperty[\n            this.currentSorts[0].name as keyof typeof FormFieldProperty\n            ],\n          Order: this.currentSorts[0].value,\n        }\n        : null;\n    const searchTermExists = this.currentSearchTerm.trim().length > 0;\n    this.utilService.sendBI(true);\n    const res = searchTermExists\n      ? await this.server.get(\n        `GetFormEntitiesWithParam/${this.currentSearchTerm.trim()}/0/${this.pageSize\n        }`,\n        this.envSvc.environment.WorkFlowAPI\n      )\n      : await this.server.post(\n        sortParam\n          ? `SearchFormEntities/0/${this.pageSize}/${sortParam.Param}/${sortParam.Order}`\n          : `SearchFormEntities/0/${this.pageSize}`,\n        payload,\n        this.envSvc.environment.WorkFlowAPI\n      );\n    this.utilService.sendBI(false);\n    if (res instanceof ErrorResponse) {\n      this.currentFilters = [];\n      this.currentSorts = [];\n      return undefined;\n    } else {\n      this.pageState = res as PagedResult<Form>;\n      var result = (res as PagedResult<Form>).Result;\n      this.data = result;\n      this.setUpCardData();\n    }\n  }\n\n  async postSearch(payload: any) {\n    this.utilService.sendBI(true);\n    const res = await this.server.post(\n      `SearchFormEntities/0/${this.pageSize}`,\n      payload\n    );\n\n    this.utilService.sendBI(false);\n    if (res instanceof ErrorResponse) {\n      return;\n    } else {\n      this.pageState = res as PagedResult<Form>;\n      var result = (res as PagedResult<Form>).Result;\n      this.data = result;\n\n      this.setUpCardData();\n      // this.setUpCardDataExtra(this.data)\n\n      return result;\n    }\n  }\n  async loadMoreFiltersAndSorts(): Promise<PagedResult<Form> | undefined> {\n    if (!this.pageState) {\n      return;\n    }\n    var payload: SearchPropertyValue[] = this.currentFilters.map((x) => {\n      return {\n        PropertyName:\n          FormFieldProperty[x.name as keyof typeof FormFieldProperty],\n        EntityValue: x.value,\n        Operator: SearchOperator.And,\n        Sign:\n          x.condition && Object.keys(FilterTypes).includes(x.condition)\n            ? (FilterTypes[\n              x.condition as keyof typeof FilterTypes\n            ] as unknown as SearchPropertySign)\n            : SearchPropertySign.EQ,\n        Type:\n          x.name == FormFieldProperty.CreatedAt\n            ? SearchPropertyValueType.Date\n            : SearchPropertyValueType.String,\n      };\n    });\n    const sortParam: { Param: string; Order: string } | null =\n      this.currentSorts.length > 0\n        ? {\n          Param:\n            FormFieldProperty[\n            this.currentSorts[0].name as keyof typeof FormFieldProperty\n            ],\n          Order: this.currentSorts[0].value,\n        }\n        : null;\n    const searchTermExists = this.currentSearchTerm.trim().length > 0;\n    this.utilService.sendBI(true);\n    const res = searchTermExists\n      ? await this.server.get(\n        `GetFormEntitiesWithParam/${this.currentSearchTerm.trim()}/${this.pageState.Skip\n        }/${this.pageSize}`,\n        this.envSvc.environment.WorkFlowAPI\n      )\n      : await this.server.post(\n        sortParam\n          ? `SearchFormEntities/${this.pageState.Skip}/${this.pageSize}/${sortParam.Param}/${sortParam.Order}`\n          : `SearchFormEntities/${this.pageState.Skip}/${this.pageSize}`,\n        payload,\n        this.envSvc.environment.WorkFlowAPI\n      );\n    this.utilService.sendBI(false);\n    if (res instanceof ErrorResponse) {\n      return undefined;\n    } else {\n      var result = res as PagedResult<Form>;\n      this.data = result.Result;\n      return result;\n    }\n  }\n  onFilterApplied(appliedFilter: IDataFilter[]) {\n    this.showFilter = false;\n    if (Array.isArray(appliedFilter)) {\n      this.selectedFilterTableCount = appliedFilter.length;\n      //  console.log(appliedFilter);\n\n      const queryParams = appliedFilter\n        .filter((filter) => filter.checked)\n        .map((filter) => ({\n          PropertyName: filter.name,\n          EntityValue: filter.value,\n          Type: filter.type,\n          Operator: 'And',\n          Sign: this.getCondition(filter.condition),\n        }));\n\n      this.postSearch(queryParams);\n    }\n  }\n  getCondition(value: any) {\n    switch (value) {\n      case ConditionalOptions.On:\n        return SearchPropertySign.EQ;\n      case ConditionalOptions.After:\n        return SearchPropertySign.EQ;\n      case ConditionalOptions.Before:\n        return SearchPropertySign.LT;\n      case ConditionalOptions.NotEqual:\n        return SearchPropertySign.NEQ;\n      default:\n        return value;\n    }\n  }\n\n  onSortUpdated(updatedSorts: IDataFilter[]) {\n    this.currentSorts = updatedSorts;\n    this.updateFiltersAndSorts();\n  }\n\n  handleSearch(event: { key: string; value: string }) {\n    this.searchTerm$.next(event.value);\n  }\n\n  handleExport(exportedData: Partial<any>[]) {\n    // console.log('Exported data:', exportedData);\n    this.downloadCSV(exportedData);\n  }\n  private downloadCSV(data: Partial<any>[]) {\n    const headers = Object.keys(data[0]);\n    const csvContent = [\n      headers.join(','),\n      ...data.map((row) => headers.map((header) => row[header]).join(',')),\n    ].join('\\n');\n\n    const blob = new Blob([csvContent], { type: 'text/csv;charset=utf-8;' });\n    const link = document.createElement('a');\n    if (link.download !== undefined) {\n      const url = URL.createObjectURL(blob);\n      link.setAttribute('href', url);\n      link.setAttribute('download', 'export.csv');\n      link.style.visibility = 'hidden';\n      document.body.appendChild(link);\n      link.click();\n      document.body.removeChild(link);\n    }\n  }\n}\n","<div #messageLog class=\"flex flex-col gap-4 message-log-container\">\n  <!-- <header\n    class=\"rounded-lg shadow-lg flex justify-between items-center px-6 py-2 bg-[#D4A00773]\"\n  >\n    <h4 class=\"font-semibold\">{{ \"Contact Info\" }}</h4>\n    <verben-svg\n      (click)=\"goBack()\"\n      class=\"cursor-pointer\"\n      [width]=\"17\"\n      [height]=\"17\"\n      [icon]=\"'close'\"\n    ></verben-svg>\n  </header> -->\n\n  <div>\n    <verben-card-data-view\n      borderRadius=\"12px\"\n      #vdcv\n      dataId=\"Code\"\n      border=\"5px\"\n      [cardDataList]=\"cardData\"\n      rbgColor=\"#f5f6f9\"\n      mg=\"0px\"\n    >\n      <verben-left-card-data-view class=\"space-y-7\">\n        <verben-left-card-data\n          #vlcd\n          [parent]=\"vdcv\"\n          dataId=\"Code\"\n          class=\"bg-secondary-100 rounded-xl border-primary border-[1px]\"\n          [cardDataList]=\"cardData\"\n        >\n          <ng-template #card let-item>\n            <div\n              (click)=\"cardClicked(item)\"\n              class=\"flex cursor-pointer h-[max-content]\"\n            >\n              <!-- <verben-svg [width]=\"15\" [height]=\"15\" (click)=\"toggleChildren(item); $event.stopPropagation()\"\n                    [ngClass]=\"item.children && item.children.length?'visible':'invisible'\"\n                    class=\"items-center flex  pr-1 cursor-pointer\" [icon]=\"item.isChildrenExpanded?'minus':'plus'\" /> -->\n              <div class=\"flex w-full bg-secondary rounded-xl\">\n                <div\n                  class=\"w-3 rounded-xl rounded-tr-none rounded-br-none\"\n                  [ngClass]=\"item.selected ? 'bg-primary' : 'bg-secondary-200'\"\n                ></div>\n                <div class=\"py-3 px-4 flex-1 h-[100%]\">\n                  <div\n                    class=\"flex items-start flex-1 gap-1 justify-between h-[100%]\"\n                  >\n                    <div\n                      class=\"flex flex-col flex-1 card-min-height justify-between h-[100%]\"\n                    >\n                      <div class=\"flex justify-between\">\n                        <div>\n                          <h3\n                            class=\"my-0 font-bold text-[#404040] leading-[19.5px]\"\n                          >\n                            {{ item.data.Name ?? \"Null\" }}\n                          </h3>\n                          <span class=\"flex mt-2 items-center gap-1\">\n                            <span class=\"!text-[10px] font-light text-[#404040]\"\n                              >Expiry Date:</span\n                            >\n                            <span class=\"!text-[12px] font-semibold\">{{\n                              item.data.ExpiryDate | date\n                            }}</span>\n                          </span>\n                        </div>\n\n                        <div>\n                          <span class=\"!text-[10px] text-[#404040]\"\n                            >Duration</span\n                          >\n                          <p class=\"!text-[12px]\">{{ item.data.Duration }}</p>\n                        </div>\n                      </div>\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n          </ng-template>\n        </verben-left-card-data>\n      </verben-left-card-data-view>\n      <verben-right-card-data-view>\n        <ng-template #parent>\n          <div *ngIf=\"this.currentData\">\n            <div\n              *ngIf=\"currentData.data.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\n                *ngFor=\"\n                  let group of currentData.data.Entities;\n                  let index = index\n                \"\n              >\n                <p\n                  (click)=\"setActive(index)\"\n                  [ngClass]=\"{\n                    'bg-[#fff] text-primary rounded-lg shadow-lg':\n                      active === index,\n                  }\"\n                  class=\"px-6 py-2 cursor-pointer\"\n                >\n                  {{ group.Name }}\n                </p>\n              </div>\n            </div>\n\n            <div\n              *ngIf=\"currentData.data.Entities[active]; else emptyState\"\n              class=\"mt-4\"\n            >\n              <form-control\n                [dataType]=\"dataType\"\n                [formProperties]=\"currentData.data.Entities[active].Properties\"\n              ></form-control>\n              <div\n                class=\"flex justify-between w-full bottom-8 left-0 right-0 mt-4\"\n              >\n                <!-- <verbena-button\n                    class=\"verben-delete-button\"\n                    text=\"Delete\"\n                  ></verbena-button> -->\n                <div></div>\n\n                <div class=\"flex gap-3\">\n                  <!-- <verbena-button\n                      class=\"verben-switch-button\"\n                      (click)=\"goToTableView()\"\n                      text=\"Switch To Table\"\n                    ></verbena-button> -->\n                  <verbena-button\n                    class=\"verben-primary-button\"\n                    (click)=\"saveItem()\"\n                    text=\"Save\"\n                  ></verbena-button>\n                </div>\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          </div>\n        </ng-template>\n      </verben-right-card-data-view>\n      <!-- <verben-right-card-data-view>\n            yeshhhhhh\n          </verben-right-card-data-view> -->\n\n      <verben-card-data-view-footer>\n        <!-- <div class=\"flex gap-2 justify-between\">\n            <div\n              *ngIf=\"!vdcv.hasCurrentItem()\"\n              class=\"message-log-button-container flex justify-between\"\n            >\n              <verbena-button\n                [fontWeight]=\"'bold'\"\n                [bgColor]=\"'#8E8D87'\"\n                [borderRadius]=\"'4px'\"\n                [textColor]=\"'#fff'\"\n                [text]=\"'Delete'\"\n              >\n              </verbena-button>\n            </div>\n            <div\n              class=\"flex {{\n                vdcv.hasCurrentItem() ? 'flex-1' : ''\n              }} justify-end items-center gap-5\"\n            >\n              <span class=\"paginator-text\"\n                >{{ cardData.length }} records loaded</span\n              >\n              <button (click)=\"loadMore()\" class=\"load-more view-links\">\n                Load more\n              </button>\n            </div>\n          </div> -->\n      </verben-card-data-view-footer>\n    </verben-card-data-view>\n  </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport {\n  CardDataViewModule,\n  DataExportModule,\n  DataTableModule,\n  DataViewModule,\n  DropDownModule,\n  SortTableModule,\n  SvgModule,\n  TableFilterModule,\n  VerbenaButtonModule,\n  VerbenaInputModule,\n  VerbenaSwitchModule,\n  VerbenPopUpModule,\n  VisibleColumnModule,\n} from 'verben-ng-ui';\nimport { FormResponseComponent } from './form-response.component';\nimport { FormControlerModule } from 'verben-workflow-ui/src/lib/components/form-control';\nimport { FormTimerModule } from 'verben-workflow-ui/src/lib/components/form-timer';\n\n@NgModule({\n  declarations: [FormResponseComponent],\n  imports: [\n    CommonModule,\n    FormsModule,\n    ReactiveFormsModule,\n    DataTableModule,\n    SvgModule,\n    VerbenPopUpModule,\n    DataViewModule,\n    VerbenaButtonModule,\n    CardDataViewModule,\n    DropDownModule,\n    VerbenaSwitchModule,\n    TableFilterModule,\n    VisibleColumnModule,\n    SortTableModule,\n    DataExportModule,\n    VerbenaInputModule,\n    FormControlerModule,\n    FormTimerModule,\n  ],\n  exports: [FormResponseComponent],\n})\nexport class FormResponseLibModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["baseStyle","i4.FormResponseService"],"mappings":"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"}