{"version":3,"file":"adins-ucgridview.mjs","sources":["../../../projects/ucgridview/src/lib/ucgridview.service.ts","../../../projects/ucgridview/src/lib/model/input-grid-obj.model.ts","../../../projects/ucgridview/src/lib/ucgridview.component.ts","../../../projects/ucgridview/src/lib/ucgridview.component.html","../../../projects/ucgridview/src/lib/ucgridview.module.ts","../../../projects/ucgridview/src/public-api.ts","../../../projects/ucgridview/src/adins-ucgridview.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class UcgridviewService {\r\n\r\n  constructor() { }\r\n}\r\n","import { UCSearchComponent } from \"@adins/ucsearch\";\r\n\r\nexport class InputGridObj {\r\n    isSubsection: boolean;\r\n    subsectionTitle: string;\r\n    resultData: any;\r\n    footerData: any;\r\n    searchComp: UCSearchComponent;\r\n    apiUrl: string;\r\n    deleteUrl: string;\r\n    deleteReqObj: any[];\r\n    pageStart: number;\r\n    pageEnd: number;\r\n    pageNow: number;\r\n    pageSize: number;\r\n    totalData: number;\r\n    pagingJson: string;\r\n    navigationConst: any;\r\n    switchValue: Array<SwitchValueObj>;\r\n    addGridList: Array<InputAddGridObj>;\r\n    dataInput: any;\r\n    dicts: Record<string, any>;\r\n    classPadding: string;\r\n    isFromApi: boolean;\r\n    useSafeUrl: boolean;\r\n    envi: Record<string, string>;\r\n\r\n    constructor() {\r\n        this.isSubsection = false;\r\n        this.subsectionTitle = \"\";\r\n        this.apiUrl = \"\";\r\n        this.deleteUrl = \"\";\r\n        this.deleteReqObj = [];\r\n        this.pageStart = 1;\r\n        this.pageEnd = 10;\r\n        this.pageNow = 0;\r\n        this.pageSize = 0;\r\n        this.totalData = 0;\r\n        this.pagingJson = \"\";\r\n        this.switchValue = new Array<SwitchValueObj>();\r\n        this.addGridList = new Array<InputAddGridObj>();\r\n        this.dicts = {};\r\n        this.classPadding = \"\";\r\n        this.isFromApi = false;\r\n        this.useSafeUrl = false;\r\n        this.envi = {};\r\n    }\r\n}\r\n\r\nexport class SwitchValueObj {\r\n    property: string;\r\n    value: any;\r\n\r\n    constructor() {\r\n        this.property = \"\";\r\n    }\r\n}\r\n\r\nexport class InputAddGridObj {\r\n    AddGridLabel: string;\r\n    AddGridProperty: string;\r\n\r\n    constructor() {\r\n        this.AddGridLabel = \"\";\r\n        this.AddGridProperty = \"\";\r\n    }\r\n}\r\n","import {\r\n  Component,\r\n  EventEmitter,\r\n  Input,\r\n  OnInit,\r\n  Output,\r\n  isDevMode,\r\n} from \"@angular/core\";\r\nimport { HttpClient, HttpHeaders } from \"@angular/common/http\";\r\nimport { Observable } from \"rxjs\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { InputGridObj } from \"./model/input-grid-obj.model\";\r\nimport { CookieService } from \"ngx-cookie\";\r\nimport * as CryptoJS from \"crypto-js\";\r\nimport {\r\n  base64ToBlob,\r\n  NgxRouterService,\r\n  SecureTooltipService,\r\n} from \"@adins/fe-core\";\r\nimport { CdkDragDrop, moveItemInArray } from \"@angular/cdk/drag-drop\";\r\n\r\n@Component({\r\n  selector: \"lib-ucgridview\",\r\n  templateUrl: \"./ucgridview.component.html\",\r\n  styleUrls: [\"./ucgridview.component.css\"],\r\n})\r\nexport class UcgridviewComponent implements OnInit {\r\n  @Input() gridInput: InputGridObj = new InputGridObj();\r\n  @Input() additionalObj: any;\r\n  @Input() defaultChecked: boolean = false;\r\n\r\n  @Output() output: EventEmitter<any> = new EventEmitter();\r\n  @Output() callback: EventEmitter<any> = new EventEmitter();\r\n  @Output() callbackCheckBox: EventEmitter<any> = new EventEmitter();\r\n  @Output() isRefresh: EventEmitter<any> = new EventEmitter();\r\n  @Output() isReorder: EventEmitter<any> = new EventEmitter();\r\n\r\n  pagingJson: any;\r\n  headerList: any;\r\n  bodyList: any;\r\n  footerList: any;\r\n  isSeq: any = false;\r\n  isCanReorder: boolean = false;\r\n  headerListLength: number = 0;\r\n\r\n  UserAccess: any;\r\n  pageNow: number = 1;\r\n  pageSize: number = 10;\r\n  orderByKey: any = null;\r\n  orderByValue: boolean = true;\r\n  IsOverflow: boolean = false;\r\n  IsCheckBoxOn: boolean = false;\r\n  keyProperty: string = \"\";\r\n  checkboxAll: { [id: string]: boolean } = {};\r\n\r\n  constructor(\r\n    private http: HttpClient,\r\n    public toastr: ToastrService,\r\n    private modalService: NgbModal,\r\n    private cookieService: CookieService,\r\n    private ngxRouter: NgxRouterService,\r\n    private secureTooltipService: SecureTooltipService\r\n  ) {\r\n    this.UserAccess = JSON.parse(\r\n      this.GetCookie(this.cookieService, \"UserAccess\")\r\n    );\r\n  }\r\n\r\n  ngOnInit() {\r\n    this.initiateForm();\r\n    this.checkboxAll[\"Selected\"] = this.defaultChecked;\r\n  }\r\n\r\n  SerialHeaderList: Array<any> = new Array<any>();\r\n  SerialBodyList: Array<any> = new Array<any>();\r\n  generateAddGrid() {\r\n    for (let i = 0; i < this.gridInput.addGridList.length; i++) {\r\n      // hardcode type, position\r\n      let serialHeader = {\r\n        type: \"label\",\r\n        position: \"left\",\r\n        label: this.gridInput.addGridList[i].AddGridLabel,\r\n      };\r\n      let serialBody = {\r\n        type: \"text\",\r\n        position: \"left\",\r\n        property: this.gridInput.addGridList[i].AddGridProperty,\r\n      };\r\n      this.SerialHeaderList.push(serialHeader);\r\n      this.SerialBodyList.push(serialBody);\r\n    }\r\n  }\r\n\r\n  initiateForm() {\r\n    if (\r\n      this.gridInput.dataInput !== undefined &&\r\n      Object.keys(this.gridInput.dataInput).length !== 0\r\n    ) {\r\n      this.setConfigurationData({ ...this.gridInput.dataInput });\r\n      return;\r\n    }\r\n    this.getJSON(this.gridInput.pagingJson).subscribe((data) => {\r\n      this.setConfigurationData(data);\r\n    });\r\n  }\r\n\r\n  setConfigurationData(data) {\r\n    console.log(data);\r\n    this.isSeq = data.isSeq;\r\n    this.isCanReorder = data.isCanReorder;\r\n    this.IsCheckBoxOn = data.IsCheckBoxOn;\r\n    this.keyProperty = data.keyProperty;\r\n    this.headerList = data.headerList;\r\n    this.bodyList = data.bodyList;\r\n    this.footerList = data.footerList || [];\r\n\r\n    this.headerListLength = this.headerList.length;\r\n    if (this.isSeq) {\r\n      this.headerListLength += 1;\r\n    }\r\n\r\n    if (this.isCanReorder) {\r\n      this.headerListLength += 1;\r\n    }\r\n\r\n    let lastIndex = this.bodyList.length - 1;\r\n    if (\r\n      this.gridInput.addGridList != undefined &&\r\n      this.gridInput.addGridList.length != 0\r\n    ) {\r\n      this.generateAddGrid();\r\n      if (this.bodyList[lastIndex].type == \"action\") {\r\n        this.headerList.splice(lastIndex, 0, ...this.SerialHeaderList);\r\n        this.bodyList.splice(lastIndex, 0, ...this.SerialBodyList);\r\n      } else {\r\n        this.headerList.splice(lastIndex + 1, 0, ...this.SerialHeaderList);\r\n        this.bodyList.splice(lastIndex + 1, 0, ...this.SerialBodyList);\r\n      }\r\n    }\r\n\r\n    let tempListProperty: Array<string> = new Array<string>();\r\n    for (let index = 0; index < this.bodyList.length; index++) {\r\n      const element = this.bodyList[index];\r\n      if (element.type == \"checkBox\") {\r\n        this.checkboxAll[element.property] = false;\r\n        tempListProperty.push(element.property);\r\n      }\r\n    }\r\n\r\n    // for (let index = 0; index < tempListProperty.length; index++) {\r\n    //   const element = tempListProperty[index];\r\n    //   this.CheckBoxAll(element);\r\n    // }\r\n\r\n    if (this.headerList.length >= 8) {\r\n      this.IsOverflow = true;\r\n    }\r\n  }\r\n\r\n  public getJSON(url: string): Observable<any> {\r\n    return this.http.get(url);\r\n  }\r\n\r\n  private GetCookie(cookieService: CookieService, key: string) {\r\n    var value = cookieService.get(key);\r\n    if (value == undefined || value.trim() == \"\") return null;\r\n    return this.DecryptString(value, \"AdInsFOU12345678\");\r\n  }\r\n\r\n  private DecryptString(chipperText: string, chipperKey: string) {\r\n    if (\r\n      chipperKey == undefined ||\r\n      chipperKey.trim() == \"\" ||\r\n      chipperText == undefined ||\r\n      chipperText.trim() == \"\"\r\n    )\r\n      return chipperText;\r\n    var chipperKeyArr = CryptoJS.enc.Utf8.parse(chipperKey);\r\n    var iv = CryptoJS.lib.WordArray.create([0x00, 0x00, 0x00, 0x00]);\r\n    var decrypted = CryptoJS.AES.decrypt(chipperText, chipperKeyArr, {\r\n      iv: iv,\r\n    });\r\n    var plainText = decrypted.toString(CryptoJS.enc.Utf8);\r\n    return plainText;\r\n  }\r\n\r\n  private getIndex(index: number) {\r\n    const currentPage =\r\n      this.gridInput?.pageNow === undefined\r\n        ? this.pageNow\r\n        : this.gridInput.pageNow;\r\n    const perPage =\r\n      this.gridInput?.pageSize === undefined\r\n        ? this.pageSize\r\n        : this.gridInput.pageSize;\r\n    return (currentPage - 1) * perPage + index;\r\n  }\r\n\r\n  genAction(itemX, param, index?) {\r\n    let arrList: any = {};\r\n    const idx = index !== undefined ? this.getIndex(index) : 0;\r\n    const item = { ...itemX };\r\n    Object.assign(item, { Idx: idx });\r\n\r\n    for (let i = 0; i < param.length; i++) {\r\n      if (\r\n        param[i].isAddProp != undefined &&\r\n        param[i].isAddProp == true &&\r\n        this.additionalObj[param[i].property] != undefined\r\n      ) {\r\n        arrList[param[i].type] = this.additionalObj[param[i].property];\r\n      } else if (\r\n        item[param[i].type] != undefined &&\r\n        item[param[i].property] != undefined\r\n      ) {\r\n        arrList[param[i].type] = item[param[i].property];\r\n      } else if (item[param[i].property] != undefined) {\r\n        arrList[param[i].type] = item[param[i].property];\r\n      } else {\r\n        arrList[param[i].type] = this.getValue(\r\n          this.gridInput.dicts,\r\n          param[i].property\r\n        );\r\n      }\r\n    }\r\n\r\n    // Set state of data to router service\r\n    if (!isDevMode() && (this.gridInput?.useSafeUrl ?? false)) {\r\n      return this.ngxRouter.createQueryParams(arrList);\r\n    }\r\n    return arrList;\r\n  }\r\n\r\n  genRouterLink(urlLink: string): string {\r\n    let tempLink = urlLink;\r\n    if (\r\n      this.gridInput.navigationConst != undefined &&\r\n      this.gridInput.navigationConst[urlLink] != null\r\n    ) {\r\n      tempLink = this.gridInput.navigationConst[urlLink];\r\n    }\r\n    return tempLink;\r\n  }\r\n\r\n  private getValueForSwitch(value: string, rowItem: any) {\r\n    if (value === null || value === undefined) return value;\r\n    if (value === \"null\") return null;\r\n    if (typeof value === \"string\") {\r\n      if (value.toLowerCase() === \"false\") {\r\n        return false;\r\n      } else if (value.toLowerCase() === \"true\") {\r\n        return true;\r\n      }\r\n      if (value.startsWith(\"useraccess.\")) {\r\n        const strippedValue = value.split(\".\");\r\n        const userAccessValue = strippedValue[1];\r\n\r\n        if (\r\n          this.UserAccess[userAccessValue] !== null &&\r\n          this.UserAccess[userAccessValue] !== undefined\r\n        ) {\r\n          return this.UserAccess[userAccessValue];\r\n        }\r\n      }\r\n      if (value.startsWith(\"row.\")) {\r\n        const strippedValue = value.split(\".\");\r\n        const rowValue = strippedValue[1];\r\n        if (rowItem[rowValue] !== undefined) {\r\n          return rowItem[rowValue];\r\n        }\r\n      }\r\n\r\n      if (value.startsWith(\"dicts.\")) {\r\n        const data = this.parseValue({ dicts: this.gridInput.dicts }, value);\r\n        return data;\r\n      }\r\n    }\r\n    return value;\r\n  }\r\n\r\n  // drop(event: CdkDragDrop<string[]>) {\r\n  //   moveItemInArray(this.gridInput?.resultData?.Data, event.previousIndex, event.currentIndex);\r\n  // }\r\n\r\n  isInvalidDragEvent: boolean = false;\r\n  dropTable(event: CdkDragDrop<any>) {\r\n    if (this.isInvalidDragEvent) {\r\n      this.isInvalidDragEvent = false;\r\n      return;\r\n    }\r\n    moveItemInArray(\r\n      this.gridInput?.resultData?.Data,\r\n      event.previousIndex,\r\n      event.currentIndex\r\n    );\r\n    this.isReorder.emit({ data: this.gridInput?.resultData?.Data });\r\n    // this.table.renderRows();\r\n  }\r\n\r\n  onInvalidDragEventMouseDown() {\r\n    this.isInvalidDragEvent = true;\r\n  }\r\n  dragStarted(event) {\r\n    if (this.isInvalidDragEvent) {\r\n      document.dispatchEvent(new Event(\"mouseup\"));\r\n    }\r\n  }\r\n\r\n  switchCase(item, condList, forHeader: boolean = false) {\r\n    var condition = false;\r\n\r\n    if (!forHeader) {\r\n      for (var i = 0; i < condList.conditions.length; i++) {\r\n        const _restriction = condList.conditions[i].restriction;\r\n        let _property =\r\n          item[condList.conditions[i].property] === undefined\r\n            ? condList.conditions[i].property\r\n            : item[condList.conditions[i].property];\r\n        if (typeof _property === \"string\") {\r\n          if (_property.startsWith(\"dicts.\")) {\r\n            _property = this.parseValue(\r\n              { dicts: this.gridInput.dicts },\r\n              _property\r\n            );\r\n          }\r\n        }\r\n        const _value = this.getValueForSwitch(\r\n          condList.conditions[i].value,\r\n          item\r\n        );\r\n        const _isUser = condList.conditions[i].isUser;\r\n\r\n        if (_restriction == \"EQ\") {\r\n          if (_isUser != true) {\r\n            if (_property == _value) {\r\n              condition = true;\r\n            } else {\r\n              condition = false;\r\n              break;\r\n            }\r\n          } else {\r\n            if (_property == this.UserAccess[\"UserName\"]) {\r\n              condition = true;\r\n            } else {\r\n              condition = false;\r\n              break;\r\n            }\r\n          }\r\n        } else if (_restriction == \"NEQ\") {\r\n          if (_isUser != true) {\r\n            if (_property != _value) {\r\n              condition = true;\r\n            } else {\r\n              condition = false;\r\n              break;\r\n            }\r\n          } else {\r\n            if (_property != this.UserAccess[\"UserName\"]) {\r\n              condition = true;\r\n            } else {\r\n              condition = false;\r\n              break;\r\n            }\r\n          }\r\n        } else if (_restriction == \"GT\") {\r\n          if (_isUser != true) {\r\n            if (_property > _value) {\r\n              condition = true;\r\n            } else {\r\n              condition = false;\r\n              break;\r\n            }\r\n          } else {\r\n            if (_property > this.UserAccess[\"UserName\"]) {\r\n              condition = true;\r\n            } else {\r\n              condition = false;\r\n              break;\r\n            }\r\n          }\r\n        } else if (_restriction == \"GTE\") {\r\n          if (_isUser != true) {\r\n            if (_property >= _value) {\r\n              condition = true;\r\n            } else {\r\n              condition = false;\r\n              break;\r\n            }\r\n          } else {\r\n            if (_property >= this.UserAccess[\"UserName\"]) {\r\n              condition = true;\r\n            } else {\r\n              condition = false;\r\n              break;\r\n            }\r\n          }\r\n        } else if (_restriction == \"LT\") {\r\n          if (_isUser != true) {\r\n            if (_property < _value) {\r\n              condition = true;\r\n            } else {\r\n              condition = false;\r\n              break;\r\n            }\r\n          } else {\r\n            if (_property < this.UserAccess[\"UserName\"]) {\r\n              condition = true;\r\n            } else {\r\n              condition = false;\r\n              break;\r\n            }\r\n          }\r\n        } else if (_restriction == \"LTE\") {\r\n          if (_isUser != true) {\r\n            if (_property <= _value) {\r\n              condition = true;\r\n            } else {\r\n              condition = false;\r\n              break;\r\n            }\r\n          } else {\r\n            if (_property <= this.UserAccess[\"UserName\"]) {\r\n              condition = true;\r\n            } else {\r\n              condition = false;\r\n              break;\r\n            }\r\n          }\r\n        }\r\n      }\r\n    } else {\r\n      for (var i = 0; i < condList.conditions.length; i++) {\r\n        var idx = this.gridInput.switchValue.findIndex(\r\n          (x) => x.property == condList.conditions[i].property\r\n        );\r\n        if (condList.conditions[i].restriction == \"EQ\") {\r\n          if (condList.conditions[i].isUser != true) {\r\n            if (\r\n              this.gridInput.switchValue[idx].value ==\r\n              condList.conditions[i].value\r\n            ) {\r\n              condition = true;\r\n            } else {\r\n              condition = false;\r\n              break;\r\n            }\r\n          } else {\r\n            if (\r\n              this.gridInput.switchValue[idx].value ==\r\n              this.UserAccess[\"UserName\"]\r\n            ) {\r\n              condition = true;\r\n            } else {\r\n              condition = false;\r\n              break;\r\n            }\r\n          }\r\n        } else if (condList.conditions[i].restriction == \"NEQ\") {\r\n          if (condList.conditions[i].isUser != true) {\r\n            if (\r\n              this.gridInput.switchValue[idx].value !=\r\n              condList.conditions[i].value\r\n            ) {\r\n              condition = true;\r\n            } else {\r\n              condition = false;\r\n              break;\r\n            }\r\n          } else {\r\n            if (\r\n              this.gridInput.switchValue[idx].value !=\r\n              this.UserAccess[\"UserName\"]\r\n            ) {\r\n              condition = true;\r\n            } else {\r\n              condition = false;\r\n              break;\r\n            }\r\n          }\r\n        } else if (condList.conditions[i].restriction == \"GT\") {\r\n          if (condList.conditions[i].isUser != true) {\r\n            if (\r\n              this.gridInput.switchValue[idx].value >\r\n              condList.conditions[i].value\r\n            ) {\r\n              condition = true;\r\n            } else {\r\n              condition = false;\r\n              break;\r\n            }\r\n          } else {\r\n            if (\r\n              this.gridInput.switchValue[idx].value >\r\n              this.UserAccess[\"UserName\"]\r\n            ) {\r\n              condition = true;\r\n            } else {\r\n              condition = false;\r\n              break;\r\n            }\r\n          }\r\n        } else if (condList.conditions[i].restriction == \"GTE\") {\r\n          if (condList.conditions[i].isUser != true) {\r\n            if (\r\n              this.gridInput.switchValue[idx].value >=\r\n              condList.conditions[i].value\r\n            ) {\r\n              condition = true;\r\n            } else {\r\n              condition = false;\r\n              break;\r\n            }\r\n          } else {\r\n            if (\r\n              this.gridInput.switchValue[idx].value >=\r\n              this.UserAccess[\"UserName\"]\r\n            ) {\r\n              condition = true;\r\n            } else {\r\n              condition = false;\r\n              break;\r\n            }\r\n          }\r\n        } else if (condList.conditions[i].restriction == \"LT\") {\r\n          if (condList.conditions[i].isUser != true) {\r\n            if (\r\n              this.gridInput.switchValue[idx].value <\r\n              condList.conditions[i].value\r\n            ) {\r\n              condition = true;\r\n            } else {\r\n              condition = false;\r\n              break;\r\n            }\r\n          } else {\r\n            if (\r\n              this.gridInput.switchValue[idx].value <\r\n              this.UserAccess[\"UserName\"]\r\n            ) {\r\n              condition = true;\r\n            } else {\r\n              condition = false;\r\n              break;\r\n            }\r\n          }\r\n        } else if (condList.conditions[i].restriction == \"LTE\") {\r\n          if (condList.conditions[i].isUser != true) {\r\n            if (\r\n              this.gridInput.switchValue[idx].value <=\r\n              condList.conditions[i].value\r\n            ) {\r\n              condition = true;\r\n            } else {\r\n              condition = false;\r\n              break;\r\n            }\r\n          } else {\r\n            if (\r\n              this.gridInput.switchValue[idx].value <=\r\n              this.UserAccess[\"UserName\"]\r\n            ) {\r\n              condition = true;\r\n            } else {\r\n              condition = false;\r\n              break;\r\n            }\r\n          }\r\n        }\r\n      }\r\n    }\r\n    return condition;\r\n  }\r\n\r\n  searchSort(event: any) {\r\n    if (this.orderByKey == event.target.attributes.name.nodeValue) {\r\n      this.orderByValue = !this.orderByValue;\r\n    } else {\r\n      this.orderByValue = true;\r\n    }\r\n    this.orderByKey = event.target.attributes.name.nodeValue;\r\n    var gridOutput = {\r\n      orderByKey: this.orderByKey,\r\n      orderByValue: this.orderByValue,\r\n    };\r\n    this.output.emit(gridOutput);\r\n    var order = {\r\n      key: this.orderByKey,\r\n      value: this.orderByValue,\r\n    };\r\n\r\n    if (!this.gridInput?.searchComp) {\r\n      return;\r\n    }\r\n\r\n    this.gridInput.searchComp.search(\r\n      this.gridInput.apiUrl,\r\n      this.gridInput.pageNow,\r\n      this.gridInput.pageSize,\r\n      order,\r\n      false\r\n    );\r\n  }\r\n\r\n  searchPagination(event: any, property?: string, idx?: number) {\r\n    var order = null;\r\n    if (this.orderByKey != null) {\r\n      order = {\r\n        key: this.orderByKey,\r\n        value: this.orderByValue,\r\n      };\r\n    }\r\n    if (this.gridInput.searchComp != undefined) {\r\n      this.pageNow = event;\r\n      this.gridInput.searchComp.search(\r\n        this.gridInput.apiUrl,\r\n        this.pageNow,\r\n        this.pageSize,\r\n        order,\r\n        false\r\n      );\r\n    } else if (this.gridInput.searchComp == undefined) {\r\n      this.isRefresh.emit({ key: property, value: event, idx: idx });\r\n    }\r\n  }\r\n\r\n  delete(rowObj: any, value: string, property?: string, idx?: number) {\r\n    if (confirm(\"Are you sure to delete this record?\")) {\r\n      const isFromApi =\r\n        this.gridInput.isFromApi === undefined\r\n          ? true\r\n          : this.gridInput.isFromApi;\r\n      if (isFromApi) {\r\n        let payload: Record<string, string> = { Id: value };\r\n        if (this.gridInput?.deleteReqObj?.length > 0) {\r\n          payload = {};\r\n          const _data = {\r\n            RowObj: { ...rowObj },\r\n            dicts: { ...this.gridInput.dicts },\r\n          };\r\n          this.gridInput?.deleteReqObj.forEach((item) => {\r\n            payload[item.propName] = this.parseValue(_data, item.propValue);\r\n          });\r\n        }\r\n\r\n        this.http.post(this.gridInput.deleteUrl, payload).subscribe(\r\n          (response) => {\r\n            this.toastr.success(response[\"message\"], \"Success!\");\r\n            this.searchPagination(this.pageNow);\r\n            this.callback.emit({ key: \"row_delete\" });\r\n          },\r\n          (error) => {\r\n            console.log(error);\r\n          }\r\n        );\r\n      } else {\r\n        const index = idx ? this.getIndex(idx) : 0;\r\n        this.searchPagination(value, property, index);\r\n        this.callback.emit({ key: \"row_delete\" });\r\n      }\r\n    }\r\n  }\r\n\r\n  choose(item) {\r\n    this.callback.emit(item);\r\n    // this.modalService.dismissAll();\r\n  }\r\n\r\n  callbackFunction(item, key: string = \"\", idx: number, act?: any) {\r\n    const Index = idx !== undefined ? this.getIndex(idx) : 0;\r\n    let CBObj = {\r\n      Action: act,\r\n      RowObj: item,\r\n      Key: key,\r\n      Idx: Index,\r\n    };\r\n\r\n    this.callback.emit(CBObj);\r\n  }\r\n\r\n  callbackAction(item, action) {\r\n    this.callback.emit({ RowObj: item, Action: action });\r\n  }\r\n\r\n  SelectAll(condition: boolean, KeyProperty: string) {\r\n    this.checkboxAll[KeyProperty] = condition;\r\n    for (let i = 0; i < this.gridInput.resultData.Data.length; i++) {\r\n      this.gridInput.resultData.Data[i][KeyProperty] = condition;\r\n    }\r\n    this.CallBackCheckBox();\r\n  }\r\n\r\n  Checked(condition: boolean, KeyProperty: string, idx: number) {\r\n    this.gridInput.resultData.Data[idx][KeyProperty] = condition;\r\n    this.CheckBoxAll(KeyProperty);\r\n    this.CallBackCheckBox();\r\n  }\r\n\r\n  CheckBoxAll(KeyProperty: string) {\r\n    const tempTotal: number = this.gridInput.resultData.Data.length;\r\n    let TotalChecked: number = 0;\r\n    for (let i = 0; i < tempTotal; i++) {\r\n      if (this.gridInput.resultData.Data[i][KeyProperty]) TotalChecked++;\r\n    }\r\n\r\n    if (tempTotal == TotalChecked) this.checkboxAll[KeyProperty] = true;\r\n    else this.checkboxAll[KeyProperty] = false;\r\n  }\r\n\r\n  CallBackCheckBox() {\r\n    this.callbackCheckBox.emit(this.gridInput.resultData.Data);\r\n  }\r\n\r\n  GetConditionalBodyValue(cond: any, data: any) {\r\n    if (cond == undefined || cond == null) return \"\";\r\n\r\n    const _item = data[cond.property] ?? cond.property;\r\n    if (cond.shouldMatch == _item) {\r\n      return cond.type === \"date\"\r\n        ? this.GetStringValue(cond.value, \"\", data)\r\n        : this.GetStringValue(cond.value, cond?.fallbackString, data);\r\n    }\r\n\r\n    return \"\";\r\n  }\r\n\r\n  GetStringValue(param: string, fallbackString?: any, dicts?: any) {\r\n    let value = \"\";\r\n    if (!this.isStringManipulation(param)) {\r\n      value = dicts[param];\r\n    } else {\r\n      value = this.transformStringValue(param, dicts);\r\n    }\r\n\r\n    if (\r\n      (value == \"\" || value == null) &&\r\n      fallbackString != undefined &&\r\n      fallbackString != null &&\r\n      fallbackString != \"\"\r\n    ) {\r\n      return fallbackString;\r\n    }\r\n\r\n    return value;\r\n  }\r\n\r\n  printReport(rowObj: any, act: any) {\r\n    const reportParameters = [];\r\n    for (let item of act.reportParameters) {\r\n      const param = {\r\n        ParamKey: item.paramKey,\r\n        ParamValue: rowObj[item.paramValue] ?? item.paramValue,\r\n        ParamAssignment: item.paramAssignment,\r\n        ParamDescr: \"\",\r\n        ParamLabel: \"\",\r\n      };\r\n      reportParameters.push(param);\r\n    }\r\n    const reportName = this.textManipulation(act.reportName, rowObj);\r\n\r\n    const reportInfoObj = {\r\n      ReportName: reportName,\r\n      ReportTemplateCode: act.reportTemplateCode,\r\n      ReportTemplatePath: \"\",\r\n      ExportFormat: act.exportFormat,\r\n      ReportParameters: reportParameters,\r\n      SubReports: act.subReports,\r\n    };\r\n    const requestingUsername = this.UserAccess.UserName;\r\n\r\n    const reportObj = {\r\n      ReportInfo: reportInfoObj,\r\n      RequestingUsername: requestingUsername,\r\n      ModuleCode: act.moduleCode,\r\n    };\r\n    const reportUrl =\r\n      this.gridInput.envi[act.reportEnvironmentUrl] + act.reportApiPath;\r\n\r\n    this.http\r\n      .post(reportUrl, reportObj, {\r\n        headers: new HttpHeaders({\r\n          IsLoading: \"true\",\r\n        }),\r\n      })\r\n      .subscribe(\r\n        (response) => {\r\n          let linkSource: string = \"\";\r\n          let fileName: string = \"\";\r\n          fileName = reportName;\r\n          if (act.ExportType == 0) {\r\n            linkSource =\r\n              \"data:application/pdf;base64,\" + response[\"ReportFile\"];\r\n            fileName = fileName + \".pdf\";\r\n          } else if (act.exportFormat == 1) {\r\n            linkSource =\r\n              \"data:application/xls;base64,\" + response[\"ReportFile\"];\r\n            fileName = fileName + \".xls\";\r\n          } else if (act.exportFormat == 2) {\r\n            linkSource =\r\n              \"data:application/xlsx;base64,\" + response[\"ReportFile\"];\r\n            fileName = fileName + \".xlsx\";\r\n          } else if (act.exportFormat == 3) {\r\n            linkSource =\r\n              \"data:application/doc;base64,\" + response[\"ReportFile\"];\r\n            fileName = fileName + \".doc\";\r\n          } else if (act.exportFormat == 4) {\r\n            linkSource =\r\n              \"data:application/docx;base64,\" + response[\"ReportFile\"];\r\n            fileName = fileName + \".docx\";\r\n          } else if (act.exportFormat == 5) {\r\n            linkSource =\r\n              \"data:application/pdf;base64,\" + response[\"ReportFile\"];\r\n            fileName = fileName + \".pdf\";\r\n          } else {\r\n            linkSource =\r\n              \"data:application/pdf;base64,\" + response[\"ReportFile\"];\r\n            fileName = fileName + \".pdf\";\r\n          }\r\n\r\n          if (response[\"ReportFile\"] != undefined) {\r\n            if (act.exportFormat != 0 && act.exportFormat != 5) {\r\n              const downloadLink = document.createElement(\"a\");\r\n              downloadLink.href = linkSource;\r\n              downloadLink.download = fileName;\r\n              downloadLink.click();\r\n            } else {\r\n              this.loadPdf(response[\"ReportFile\"]);\r\n            }\r\n            this.toastr.success(response[\"message\"], \"Success!\");\r\n          } else {\r\n            this.toastr.error(response[\"Message\"]);\r\n          }\r\n        },\r\n        (error) => {\r\n          console.log(error);\r\n        }\r\n      );\r\n  }\r\n\r\n  private handleError(error: any): void {\r\n    console.error(\"Error loading PDF:\", error);\r\n  }\r\n\r\n  private loadPdf(base64Data: string): void {\r\n    try {\r\n      const blob = base64ToBlob(base64Data, \"application/pdf\");\r\n      const objectUrl = URL.createObjectURL(blob);\r\n      this.openPdfInNewWindow(objectUrl);\r\n    } catch (error) {\r\n      this.handleError(error);\r\n    }\r\n  }\r\n\r\n  private openPdfInNewWindow(url: string): void {\r\n    const iframe = `<iframe width='100%' height='100%' src='${url}'></iframe>`;\r\n    const newWindow = window.open();\r\n    if (newWindow) {\r\n      newWindow.document.open();\r\n      newWindow.document.write(iframe);\r\n      newWindow.document.close();\r\n    } else {\r\n      console.error(\"Failed to open new window\");\r\n    }\r\n  }\r\n\r\n  private textManipulation(input: string, data: Record<string, any>): string {\r\n    return input.replace(/\\${(.*?)}/g, (match, placeholder) => {\r\n      const value = this.parseValue(\r\n        data,\r\n        this.cleansingParams(placeholder.trim())\r\n      );\r\n      return value !== undefined ? String(value) : match;\r\n    });\r\n  }\r\n\r\n  private transformStringValue(statement: string, dicts?: any) {\r\n    // Extract placeholder names\r\n    const s = statement.match(/\\${(.*?)}/g) || [];\r\n\r\n    let v: any[] = [];\r\n    for (let i of s) {\r\n      v.push({ anchor: i, property: i.slice(2, -1) });\r\n    }\r\n\r\n    let r = statement;\r\n    v.forEach((x) => {\r\n      r = r.replace(x.anchor, dicts[x.property]);\r\n    });\r\n\r\n    return r;\r\n  }\r\n\r\n  private isStringManipulation(statement: string): boolean {\r\n    const s = statement.match(/\\${(.*?)}/g) || [];\r\n    return s.length !== 0;\r\n  }\r\n\r\n  private getValue(object: any, property: string): any {\r\n    if (property === \"\" || property === undefined) {\r\n      return property;\r\n    }\r\n\r\n    if (typeof property === \"boolean\") {\r\n      return property;\r\n    }\r\n\r\n    const properties = property.split(\".\");\r\n    let value = object;\r\n\r\n    for (const prop of properties) {\r\n      if (value.hasOwnProperty(prop)) {\r\n        value = value[prop];\r\n      } else {\r\n        if (object[property] !== undefined) return object[property];\r\n        return property;\r\n      }\r\n    }\r\n\r\n    return value;\r\n  }\r\n\r\n  getStyleColor(\r\n    flag: string,\r\n    isFlagColor: boolean,\r\n    type: \"icon\" | \"text\"\r\n  ): string {\r\n    if (!flag || !isFlagColor) {\r\n      return type === \"icon\" ? \"#0cc27e\" : \"black\";\r\n    } else {\r\n      return `${flag.toLowerCase()} !important`;\r\n    }\r\n  }\r\n\r\n  checkVisible(condition: any[], data: any) {\r\n    if (condition.length === 0) return true;\r\n    const value = this.switchCase(data, {\r\n      conditions: condition,\r\n    });\r\n\r\n    return value;\r\n  }\r\n\r\n  private isNumber(value: string | boolean | any[]) {\r\n    if (value === null || value === undefined) return false;\r\n    if (value === true || value === false) return false;\r\n    if (value.length > 1 && value[0] === \"0\") return false;\r\n    if (Array.isArray(value)) return false;\r\n    return !isNaN(Number(value));\r\n  }\r\n\r\n  private isBoolean(value: string) {\r\n    return (\r\n      typeof value === \"string\" &&\r\n      (value.toLowerCase() === \"true\" || value.toLowerCase() === \"false\")\r\n    );\r\n  }\r\n\r\n  private cleansingParams(params: string): string {\r\n    return params.replace(/\\[(\\d+)\\]/g, \".$1\");\r\n  }\r\n\r\n  private parseValue(object: any, property: string): any {\r\n    if (property === \"\") {\r\n      return property;\r\n    }\r\n\r\n    if (property === \"[]\") {\r\n      return [];\r\n    }\r\n\r\n    if (property !== \"\" && this.isNumber(property)) {\r\n      return parseFloat(property);\r\n    }\r\n\r\n    if (this.isBoolean(property)) {\r\n      return property.toLowerCase() === \"true\";\r\n    }\r\n\r\n    if (typeof property === \"boolean\") {\r\n      return property;\r\n    }\r\n\r\n    const properties = property.split(\".\");\r\n    let value = object;\r\n\r\n    for (const prop of properties) {\r\n      if (value.hasOwnProperty(prop)) {\r\n        value = value[prop];\r\n      } else {\r\n        return property;\r\n      }\r\n    }\r\n\r\n    if (value !== \"\" && this.isNumber(value)) {\r\n      value = parseFloat(value);\r\n    }\r\n\r\n    if (this.isBoolean(value)) {\r\n      value = value.toLowerCase() === \"true\";\r\n    }\r\n\r\n    if (value === null || value === \"null\") {\r\n      value = \"\";\r\n    }\r\n\r\n    return value;\r\n  }\r\n\r\n  /**\r\n   * Sanitizes tooltip content to prevent XSS attacks\r\n   * Addresses CVE-2024-6484\r\n   *\r\n   * @param tooltipContent - Raw tooltip content\r\n   * @returns Sanitized tooltip content safe for display\r\n   */\r\n  getSafeTooltip(tooltipContent: string | null | undefined): string {\r\n    return this.secureTooltipService.sanitizeTooltipContent(tooltipContent);\r\n  }\r\n}\r\n","<span hidden attr.version=\"3.8.5-canary.0\"></span>\r\n<div class=\"table-responsive-wrapper\">\r\n  <div class=\"table-responsive\" [ngClass]=\"gridInput?.classPadding\" [hidden]=\"gridInput?.resultData?.Data == null\">\r\n    <div class=\"result-text\">Total : {{gridInput.pageStart | number:'':'en-US'}} - {{gridInput.pageEnd |\r\n      number:'':'en-US'}} of {{gridInput.totalData | number:'':'en-US'}} Result</div>\r\n\r\n    <table class=\"table table-striped text-center table-hover\" [ngClass]=\"{'table-layout-fixed': !IsOverflow}\"\r\n      cdkDropList [cdkDropListData]=\"gridInput?.resultData?.Data\" (cdkDropListDropped)=\"dropTable($event)\">\r\n      <thead>\r\n        <tr class=\"table-header\">\r\n          <th *ngIf=\"isCanReorder\"></th>\r\n          <th *ngIf=\"isSeq == true\" class=\"align-middle\" translate>No</th>\r\n          <th *ngFor=\"let head of headerList\" class=\"align-middle\"\r\n            [ngClass]=\"[head.position == 'left' ? 'text-start' : '', head.position == 'right' ? 'text-end' : '' , head.width == undefined || head.width == '' ? '' : head.width]\">\r\n            <span *ngIf=\"head.type == 'sort'\" translate class=\"thead-header\" (click)=\"searchSort($event)\"\r\n              attr.name=\"{{head.name}}\">{{head.label}}</span>\r\n            <span *ngIf=\"head.type == 'label'\" translate>{{head.label}}</span>\r\n            <span *ngIf=\"head.type == 'checkAll'\"><input type=\"checkbox\" [checked]=\"checkboxAll[head.property]\"\r\n                (change)=\"SelectAll($event.target.checked, head.property)\" name=\"CheckAll\" translate> {{head.label}}\r\n            </span>\r\n            <span *ngIf=\"head.type === 'checkBox'\">\r\n              <input type=\"checkbox\" [checked]=\"checkboxAll[head.property]\"\r\n                (change)=\"SelectAll($event.target.checked, head.property)\" id=\"checkAll\" name=\"CheckAll\">\r\n            </span>\r\n            <span *ngIf=\"head.type == 'switch'\">\r\n              <span *ngFor=\"let hcs of head?.case\">\r\n                <span *ngIf=\"switchCase(null, hcs, true)\">\r\n                  <span *ngIf=\"hcs.result.type == 'text'\" translate>{{ hcs.result.label }}</span>\r\n                </span>\r\n              </span>\r\n            </span>\r\n          </th>\r\n        </tr>\r\n      </thead>\r\n      <tbody>\r\n        <div *ngIf=\"gridInput?.resultData?.Data.length > 0; then dataBlock else noDataBlock\"></div>\r\n        <ng-template #dataBlock>\r\n          <tr *ngFor=\"let item of gridInput?.resultData?.Data; let i = index\" [ngClass]=\"{'text-break': !IsOverflow}\"\r\n            cdkDrag [cdkDragDisabled]=\"!isCanReorder\" (cdkDragStarted)=\"dragStarted($event)\" [cdkDragData]=\"item\">\r\n            <td [attr.colspan]=\"headerListLength\" class=\"example-custom-placeholder\" *cdkDragPlaceholder><span\r\n                style=\"opacity: 0;\">placeholder</span></td>\r\n            <td *ngIf=\"isCanReorder\" cdkDragHandle>\r\n              <i class=\"ft-menu\" style=\"cursor: move; cursor: grab;\"></i>\r\n            </td>\r\n            <td *ngIf=\"isSeq == true\">{{ i+1 }}</td>\r\n            <td *ngFor=\"let body of bodyList\" [ngClass]=\"{ 'text-start': body.position == 'left',\r\n                            'text-end': body.position == 'right' }\">\r\n              <ng-container *ngIf=\"item[body.property+'Icon'] !== undefined\">\r\n                <ng-container *ngIf=\"item[body.property+'Icon']; then ftCheckBlock else ftXBlock\">\r\n                </ng-container>\r\n              </ng-container>\r\n              <ng-template #ftCheckBlock>\r\n                <span>\r\n                  <i class=\"ft-check m-1\"\r\n                    style=\"color: white; background: #00F7Bf; border-radius: 100%; font-weight: bold; padding: 0.1rem;\"></i>\r\n                </span>\r\n              </ng-template>\r\n              <ng-template #ftXBlock>\r\n                <span>\r\n                  <i class=\"ft-x m-1\"\r\n                    style=\"color: white; background: #FF0022; border-radius: 100%; font-weight: bold; padding: 0.1rem\"></i>\r\n                </span>\r\n              </ng-template>\r\n              <ng-container *ngIf=\"body.isFlagColor == true; else noName\">\r\n                <span *ngIf=\"body.type == 'text'\" class=\"flag-shadow\"\r\n                  [style.color]=\"getStyleColor(item.Flag, body.isFlagColor, 'text')\">{{\r\n                  GetStringValue(body.property, body?.fallbackString, item) }}</span>\r\n              </ng-container>\r\n              <ng-template #noName>\r\n                <span *ngIf=\"body.type == 'text'\" style=\"text-transform: none !important\">{{\r\n                  GetStringValue(body.property, body?.fallbackString, item) }}</span>\r\n              </ng-template>\r\n              <span *ngIf=\"body.type == 'decimal' && item[body.property] != null\">{{ item[body.property] | number:\r\n                body?.precision ? body?.precision === '0' ? '1.0' : body?.precision : '0.2' :'en-US' }} <span\r\n                  *ngIf=\"body?.IsPrcnt\">&nbsp;%</span> </span>\r\n              <span *ngIf=\"body.type == 'decimal' && item[body.property] == null\">{{ 0 | number: body?.precision ?\r\n                body?.precision === '0' ? '1.0' : body?.precision : '0.2' :'en-US' }} <span\r\n                  *ngIf=\"body?.IsPrcnt\">&nbsp;%</span> </span>\r\n              <span *ngIf=\"body.type == 'date'\">\r\n                <span *ngIf=\"item[body.property] == null\">-</span>\r\n                <span *ngIf=\"item[body.property] != null\">{{ item[body.property] | date: (body?.dateFormat != undefined\r\n                  && body?.dateFormat != '') ? body?.dateFormat : 'dd-MMM-yyyy' }}</span>\r\n              </span>\r\n              <span *ngIf=\"body.type == 'link'\">\r\n                <a [target]=\"body.target\" [routerLink]=\"genRouterLink(body.path)\"\r\n                  [queryParams]=\"genAction(item,body.param)\">{{ GetStringValue(body.property, body?.fallbackString,\r\n                  item) }}</a>\r\n              </span>\r\n              <span *ngIf=\"body.type == 'link-decimal'\">\r\n                <a [target]=\"body.target\" [routerLink]=\"genRouterLink(body.path)\"\r\n                  [queryParams]=\"genAction(item,body.param)\">{{ item[body.property] | number: body?.precision ?\r\n                  body?.precision === '0' ? '1.0' : body?.precision : '0.2' :'en-US' }} <span\r\n                    *ngIf=\"body?.IsPrcnt\">&nbsp;%</span></a>\r\n              </span>\r\n              <span *ngIf=\"body.type == 'callback' || body.type == 'http' || body.type == 'function'\">\r\n                <a href=\"javascript:void(0);\" (click)=\"callbackFunction(item, body.key, i, body?.action)\">{{\r\n                  GetStringValue(body.property, body?.fallbackString, item) }}</a>\r\n              </span>\r\n              <span *ngIf=\"body.type == 'boolean'\">\r\n                <span *ngIf=\"item[body.property] == true\">Yes</span>\r\n                <span *ngIf=\"item[body.property] == false\">No</span>\r\n                <!-- <span *ngIf=\"item[body.property] == '' || item[body.property] == null\">-</span> -->\r\n              </span>\r\n              <span *ngIf=\"body.type == 'sla'\">\r\n                <span [ngStyle]=\"{'color': item[body.property]}\">\r\n                  <i class=\"font-medium-3 fa fa-circle\"></i>\r\n                </span>\r\n              </span>\r\n              <span *ngIf=\"body.type == 'conditional'\">\r\n                <span *ngFor=\"let cond of body.conditionalList\">\r\n                  <span *ngIf=\"cond.type == 'text'\" style=\"text-transform: none !important\">{{\r\n                    GetConditionalBodyValue(cond, item) }}</span>\r\n                  <span *ngIf=\"cond.type == 'date'\">\r\n                    <span *ngIf=\"GetConditionalBodyValue(cond, item) == null\">-</span>\r\n                    <span *ngIf=\"GetConditionalBodyValue(cond, item) != null\">{{ GetConditionalBodyValue(cond, item) |\r\n                      date: (cond?.dateFormat !=\r\n                      undefined\r\n                      && cond?.dateFormat != '') ? cond?.dateFormat : 'dd-MMM-yyyy' }}</span>\r\n                  </span>\r\n                </span>\r\n              </span>\r\n              <span *ngIf=\"body.type == 'checkBox'\">\r\n                <span>\r\n                  <input type=\"checkbox\" *ngIf=\"checkVisible(body.condition || [], item)\" name=\"itemDiff\"\r\n                    (change)=\"Checked($event.target.checked, body.property, i)\" [checked]=\"item[body.property]\">\r\n                </span>\r\n              </span>\r\n              <span *ngIf=\"body.type == 'concat'\">\r\n                <span *ngFor=\"let concatPropList of body.propertyList;\">\r\n                  {{ (concatPropList?.prefix !== undefined ? concatPropList?.prefix : '') +\r\n                  (item[concatPropList?.property]\r\n                  !== undefined ? item[concatPropList?.property] : '') + (concatPropList?.suffix !== undefined ?\r\n                  concatPropList?.suffix : '') }}\r\n                </span>\r\n              </span>\r\n              <span *ngIf=\"body.type == 'action'\">\r\n                <span *ngFor=\"let act of body?.action\" class=\"m-1\">\r\n                  <span *ngIf=\"act.type == 'edit'\">\r\n                    <a [ngClass]=\"act.tooltip != undefined && act.tooltip != '' ? 'tooltips' : ''\" class=\"success p-0\"\r\n                      [routerLink]=\"genRouterLink(act.path)\" [queryParams]=\"genAction(item,act.param, i)\"\r\n                      [style.color]=\"getStyleColor(item.Flag, act?.isFlagColor, 'icon')\">\r\n                      <i class=\"font-medium-3\"\r\n                        [ngClass]=\"act.icon == undefined || act.icon == '' ? 'ft-edit-2' : act.icon \">\r\n                      </i>\r\n                      <span *ngIf=\"act.tooltip != undefined && act.tooltip != ''\"\r\n                        [ngClass]=\" act.tooltip != undefined && act.tooltip != '' ? 'tooltipstext' : ''\">\r\n                        {{getSafeTooltip(act.tooltip)}}\r\n                      </span>\r\n                    </a>\r\n                  </span>\r\n                  <span *ngIf=\"act.type == 'link'\">\r\n                    <a [target]=\"act?.target != '' ? act.target : '_self'\"\r\n                      [ngClass]=\"act.tooltip != undefined && act.tooltip != '' ? 'tooltips' : ''\" class=\"success p-0\"\r\n                      [routerLink]=\"genRouterLink(act.path)\" [queryParams]=\"genAction(item,act.param)\"\r\n                      [style.color]=\"getStyleColor(item.Flag, act?.isFlagColor, 'icon')\">\r\n                      <i class=\"font-medium-3\"\r\n                        [ngClass]=\"act.icon == undefined || act.icon == '' ? 'ft-edit-2' : act.icon \">\r\n                      </i>\r\n                      <span *ngIf=\"act.tooltip != undefined && act.tooltip != ''\"\r\n                        [ngClass]=\" act.tooltip != undefined && act.tooltip != '' ? 'tooltipstext' : ''\">\r\n                        {{getSafeTooltip(act.tooltip)}}\r\n                      </span>\r\n                    </a>\r\n                  </span>\r\n                  <span *ngIf=\"act.type == 'delete'\">\r\n                    <a [ngClass]=\"act.tooltip != undefined && act.tooltip != '' ? 'tooltips' : ''\" class=\"danger p-0\"\r\n                      (click)=\"delete(item, item[act.property], act.property, i)\">\r\n                      <i class=\"font-medium-3\"\r\n                        [ngClass]=\" act.icon == undefined || act.icon == '' ? 'ft-trash-2 ' : act.icon \">\r\n                      </i>\r\n                      <span *ngIf=\"act.tooltip != undefined && act.tooltip != ''\"\r\n                        [ngClass]=\" act.tooltip != undefined && act.tooltip != '' ? 'tooltipstext' : ''\">\r\n                        {{getSafeTooltip(act.tooltip)}}\r\n                      </span>\r\n                    </a>\r\n                  </span>\r\n                  <span *ngIf=\"act.type == 'printReport'\">\r\n                    <a [ngClass]=\"act.tooltip != undefined && act.tooltip != '' ? 'tooltips' : ''\" class=\"danger p-0\"\r\n                      (click)=\"printReport(item, act)\">\r\n                      <i class=\"font-medium-3 ft-printer\">\r\n                      </i>\r\n                      <span *ngIf=\"act.tooltip != undefined && act.tooltip != ''\"\r\n                        [ngClass]=\" act.tooltip != undefined && act.tooltip != '' ? 'tooltipstext' : ''\">\r\n                        {{getSafeTooltip(act.tooltip)}}\r\n                      </span>\r\n                    </a>\r\n                  </span>\r\n                  <span *ngIf=\"act.type == 'select'\">\r\n                    <a class=\"primary p-0 bold\" (click)=\"choose(item)\" translate>Select</a>\r\n                  </span>\r\n                  <span *ngIf=\"act.type == 'modal' || act.type == 'http' || act.type == 'function'\">\r\n                    <span>\r\n                      <a [ngClass]=\"[act.tooltip != undefined && act.tooltip != '' ? 'tooltips' : '', act.anchor == undefined || act.anchor == '' ? 'success' : act.anchor]\"\r\n                        (click)=\"callbackAction(item, act)\"\r\n                        [style.color]=\"getStyleColor(item.Flag, act?.isFlagColor, 'icon')\">\r\n                        <i class=\"font-medium-3\"\r\n                          [ngClass]=\" act.icon == undefined || act.icon == '' ? 'ft-edit-2' : act.icon \">\r\n                        </i>\r\n                        <span *ngIf=\"act.tooltip != undefined && act.tooltip != ''\"\r\n                          [ngClass]=\" act.tooltip != undefined && act.tooltip != '' ? 'tooltipstext' : ''\">\r\n                          {{getSafeTooltip(act.tooltip)}}\r\n                        </span>\r\n                      </a>\r\n                    </span>\r\n                  </span>\r\n                  <span *ngIf=\"act.type == 'callback'\">\r\n                    <span\r\n                      *ngIf=\"act.isText != undefined && act.isText; then textCallbackAct else iconCallbackAct\"></span>\r\n                    <ng-template #textCallbackAct>\r\n                      <div\r\n                        *ngIf=\"act.textType == null || act.textType == undefined || act.textType == ''; then defaultBlock else textTypeBlock\">\r\n                      </div>\r\n                      <ng-template #defaultBlock>\r\n                        <span>\r\n                          <a href=\"javascript:void(0);\" (click)=\"callbackFunction(item, act.key, i, act)\">{{\r\n                            item[act.property] }}</a>\r\n                        </span>\r\n                      </ng-template>\r\n                      <ng-template #textTypeBlock>\r\n                        <span *ngIf=\"act.textType == 'TEXT'\">\r\n                          <a href=\"javascript:void(0);\" (click)=\"callbackFunction(item, act.key, i, act)\">{{\r\n                            item[act.property] }}</a>\r\n                        </span>\r\n                        <span *ngIf=\"act.textType == 'DECIMAL'\">\r\n                          <a href=\"javascript:void(0);\" (click)=\"callbackFunction(item, act.key, i, act)\">{{\r\n                            item[act.property] | number: act?.precision ? act?.precision : '0.2' :'en-US' }}</a>\r\n                        </span>\r\n                        <span *ngIf=\"act.textType == 'DATE'\">\r\n                          <a href=\"javascript:void(0);\" (click)=\"callbackFunction(item, act.key, i, act)\">{{\r\n                            item[act.property] | date: (act?.dateFormat != undefined && act?.dateFormat != '') ?\r\n                            act?.dateFormat : 'dd-MMM-yyyy' }}</a>\r\n                        </span>\r\n                      </ng-template>\r\n                    </ng-template>\r\n                    <ng-template #iconCallbackAct>\r\n                      <span>\r\n                        <a [ngClass]=\"[act.tooltip != undefined && act.tooltip != '' ? 'tooltips' : '', act.anchor == undefined || act.anchor == '' ? 'success' : act.anchor]\"\r\n                          (click)=\"callbackFunction(item, act.key, i, act)\"\r\n                          [style.color]=\"getStyleColor(item.Flag, act?.isFlagColor, 'icon')\">\r\n                          <i class=\"font-medium-3\"\r\n                            [ngClass]=\" act.icon == undefined || act.icon == '' ? 'ft-edit-2' : act.icon \">\r\n                          </i>\r\n                          <span *ngIf=\"act.tooltip != undefined && act.tooltip != ''\"\r\n                            [ngClass]=\" act.tooltip != undefined && act.tooltip != '' ? 'tooltipstext' : ''\">\r\n                            {{getSafeTooltip(act.tooltip)}}\r\n                          </span>\r\n                        </a>\r\n                      </span>\r\n                    </ng-template>\r\n                  </span>\r\n                  <span *ngIf=\"act.type == 'switch'\">\r\n                    <span *ngFor=\"let cs of act?.case\">\r\n                      <span *ngIf=\"switchCase(item,cs) && cs.isHide != true\">\r\n                        <span *ngIf=\"cs.result.type == 'text'\" style=\"text-transform: none !important\">{{\r\n                          item[cs.result.property] }}</span>\r\n                        <span *ngIf=\"cs.result.type == 'decimal'\">{{ item[cs.result.property] | number:\r\n                          cs.result?.precision ? cs.result?.precision === '0' ? '1.0' : cs.result?.precision :\r\n                          '.2':'en-US'\r\n                          }} <span *ngIf=\"cs.result?.IsPrcnt\">&nbsp;%</span> </span>\r\n                        <span *ngIf=\"cs.result.type == 'link-decimal'\">\r\n                          <a [target]=\"cs.result.target\" [routerLink]=\"genRouterLink(cs.result.path)\"\r\n                            [queryParams]=\"genAction(item,cs.result.param)\">{{ item[cs.result.property] | number:\r\n                            cs.result?.precision ?\r\n                            cs.result?.precision === '0' ? '1.0' : cs.result?.precision : '0.2' :'en-US' }} <span\r\n                              *ngIf=\"cs.result?.IsPrcnt\">&nbsp;%</span></a>\r\n                        </span>\r\n                        <span *ngIf=\"cs.result.type == 'date'\">{{ item[cs.result.property] | date: 'dd-MMM-yyyy'\r\n                          }}</span>\r\n                        <span *ngIf=\"cs.result.type == 'link'\">\r\n                          <a [target]=\"cs.result.target\" [routerLink]=\"genRouterLink(cs.result.path)\"\r\n                            [queryParams]=\"genAction(item,cs.result.param)\">{{ item[cs.result.property] }}</a>\r\n                        </span>\r\n                        <span *ngIf=\"cs.result.type == 'boolean'\">\r\n                          <span *ngIf=\"item[cs.result.property] == 'true'\">Yes</span>\r\n                          <span *ngIf=\"item[cs.result.property] == 'false'\">No</span>\r\n                        </span>\r\n                        <span *ngIf=\"cs.result.type == 'sla'\">\r\n                          <span [ngStyle]=\"{'color': item[cs.result.property]}\">\r\n                            <i class=\"font-medium-3 fa fa-circle\"></i>\r\n                          </span>\r\n                        </span>\r\n                        <span *ngIf=\"cs.result.type == 'url'\">\r\n                          <a [ngClass]=\"cs.result.tooltip != undefined && cs.result.tooltip != '' ? 'tooltips' : ''\"\r\n                            class=\"success p-0\" [routerLink]=\"genRouterLink(cs.result.path)\"\r\n                            [queryParams]=\"genAction(item,cs.result.param)\"\r\n                            [style.color]=\"getStyleColor(item.Flag, cs.result?.isFlagColor, 'icon')\">\r\n                            <i class=\"font-medium-3\"\r\n                              [ngClass]=\" cs.result.icon == undefined || cs.result.icon == '' ? 'ft-edit-2' : cs.result.icon \"></i>\r\n                            <span *ngIf=\"cs.result.tooltip != undefined && cs.result.tooltip != ''\"\r\n                              [ngClass]=\" cs.result.tooltip != undefined && cs.result.tooltip != '' ? 'tooltipstext' : ''\">\r\n                              {{getSafeTooltip(cs.result.tooltip)}}\r\n                            </span>\r\n                          </a>\r\n                        </span>\r\n                        <span *ngIf=\"cs.result.type == 'delete'\">\r\n                          <a [ngClass]=\" cs.result.tooltip != undefined && cs.result.tooltip != '' ? 'tooltips' : ''\"\r\n                            class=\"danger p-0\" (click)=\"delete(item, item[cs.result.property], cs.result.property, i)\">\r\n                            <i class=\"font-medium-3\"\r\n                              [ngClass]=\" cs.result.icon == undefined || cs.result.icon == '' ? 'ft-trash-2 ' : cs.result.icon \">\r\n                            </i>\r\n                            <span *ngIf=\"cs.result.tooltip != undefined && cs.result.tooltip != ''\"\r\n                              [ngClass]=\" cs.result.tooltip != undefined && cs.result.tooltip != '' ? 'tooltipstext' : ''\">\r\n                              {{getSafeTooltip(cs.result.tooltip)}}\r\n                            </span>\r\n                          </a>\r\n                        </span>\r\n                        <span *ngIf=\"cs.result.type == 'callback'\">\r\n                          <span\r\n                            *ngIf=\"cs.result.isText != undefined && cs.result.isText; then textCallback else iconCallback\"></span>\r\n                          <ng-template #textCallback>\r\n                            <div\r\n                              *ngIf=\"cs.result.textType == null || cs.result.textType == undefined || cs.result.textType == ''; then defaultSwitchTextBlock else switchTextTypeBlock\">\r\n                            </div>\r\n                            <ng-template #defaultSwitchTextBlock>\r\n                              <span>\r\n                                <a href=\"javascript:void(0);\"\r\n                                  (click)=\"callbackFunction(item, cs.result.key, i, cs.result)\">{{\r\n                                  item[cs.result.property] }}</a>\r\n                              </span>\r\n                            </ng-template>\r\n                            <ng-template #switchTextTypeBlock>\r\n                              <span *ngIf=\"cs.result.textType == 'TEXT'\">\r\n                                <a href=\"javascript:void(0);\" style=\"text-transform: none !important\"\r\n                                  (click)=\"callbackFunction(item, cs.result.key, i, cs.result)\">{{\r\n                                  item[cs.result.property] }}</a>\r\n                              </span>\r\n                              <span *ngIf=\"cs.result.textType == 'DECIMAL'\">\r\n                                <a href=\"javascript:void(0);\"\r\n                                  (click)=\"callbackFunction(item, cs.result.key, i, cs.result)\">{{\r\n                                  item[cs.result.property] | number: cs.result?.precision ? cs.result?.precision : '0.2'\r\n                                  :'en-US' }}</a>\r\n                              </span>\r\n                              <span *ngIf=\"cs.result.textType == 'DATE'\">\r\n                                <a href=\"javascript:void(0);\"\r\n                                  (click)=\"callbackFunction(item, cs.result.key, i, cs.result)\">{{\r\n                                  item[cs.result.property] | date: (cs.result?.dateFormat != undefined &&\r\n                                  cs.result?.dateFormat != '') ? cs.result?.dateFormat : 'dd-MMM-yyyy' }}</a>\r\n                              </span>\r\n                            </ng-template>\r\n                          </ng-template>\r\n                          <ng-template #iconCallback>\r\n                            <span>\r\n                              <a [ngClass]=\"[cs.result.tooltip != undefined && cs.result.tooltip != '' ? 'tooltips' : '', cs.result.anchor == undefined || cs.result.anchor == '' ? 'success p-0' : cs.result.anchor]\"\r\n                                (click)=\"callbackFunction(item, cs.result.key, i, cs.result)\"\r\n                                [style.color]=\"getStyleColor(item.Flag, cs.result?.isFlagColor, 'icon')\">\r\n                                <i class=\"font-medium-3\"\r\n                                  [ngClass]=\" cs.result.icon == undefined || cs.result.icon == '' ? 'ft-edit-2' : cs.result.icon \">\r\n                                </i>\r\n                                <span *ngIf=\"cs.result.tooltip != undefined && cs.result.tooltip != ''\"\r\n                                  [ngClass]=\"cs.result.tooltip != undefined && cs.result.tooltip != '' ? 'tooltipstext' : ''\">\r\n                                  {{getSafeTooltip(cs.result.tooltip)}}\r\n                                </span>\r\n                              </a>\r\n                            </span>\r\n                          </ng-template>\r\n                        </span>\r\n                        <span *ngIf=\"cs.result.type == 'printReport'\">\r\n                          <a [ngClass]=\"cs.result.tooltip != undefined && cs.result.tooltip != '' ? 'tooltips' : ''\"\r\n                            class=\"danger p-0\" (click)=\"printReport(item, cs.result)\">\r\n                            <i class=\"font-medium-3 ft-printer\">\r\n                            </i>\r\n                            <span *ngIf=\"cs.result.tooltip != undefined && cs.result.tooltip != ''\"\r\n                              [ngClass]=\" cs.result.tooltip != undefined && cs.result.tooltip != '' ? 'tooltipstext' : ''\">\r\n                              {{getSafeTooltip(cs.result.tooltip)}}\r\n                            </span>\r\n                          </a>\r\n                        </span>\r\n                      </span>\r\n                    </span>\r\n                  </span>\r\n                </span>\r\n              </span>\r\n            </td>\r\n          </tr>\r\n          <tr class=\"fw-bold\">\r\n            <td *ngIf=\"isSeq == true && footerList.length > 0\"></td>\r\n            <td *ngFor=\"let footer of footerList\" [ngClass]=\"{ 'text-start': footer.position == 'left',\r\n                'text-end': footer.position == 'right', 'text-center': footer.position == 'center' }\">\r\n              <span *ngIf=\"footer.type == 'LABEL'\" style=\"text-transform: none !important\">{{ footer.label }} </span>\r\n              <span *ngIf=\"footer.type == 'AGGREGATE'\">\r\n                <span *ngIf=\"footer.isCurr\">\r\n                  {{ gridInput.footerData[footer.property] | number: footer?.precision ? footer?.precision : '0.2'\r\n                  :'en-US' }}\r\n                </span>\r\n                <span *ngIf=\"!footer.isCurr\">\r\n                  {{ gridInput.footerData[footer.property] }}\r\n                </span>\r\n              </span>\r\n            </td>\r\n          </tr>\r\n        </ng-template>\r\n        <ng-template #noDataBlock>\r\n          <tr>\r\n            <td [attr.colspan]=\"headerListLength\" class=\"text-center\">\r\n              no data\r\n            </td>\r\n          </tr>\r\n        </ng-template>\r\n      </tbody>\r\n    </table>\r\n  </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { UcgridviewComponent } from './ucgridview.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RouterModule } from '@angular/router';\r\nimport { NgbModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { UcDirectiveUpperCaseModule } from '@adins/uc-directive-upper-case';\r\nimport { UCSearchModule } from '@adins/ucsearch';\r\nimport { FormsModule } from '@angular/forms';\r\nimport {DragDropModule} from '@angular/cdk/drag-drop';\r\n\r\n@NgModule({\r\n  declarations: [UcgridviewComponent],\r\n  imports: [\r\n    CommonModule,\r\n    RouterModule,\r\n    UcDirectiveUpperCaseModule,    \r\n    UCSearchModule,    \r\n    NgbModule,\r\n    FormsModule,\r\n    DragDropModule,\r\n    TranslateModule.forChild(),\r\n  ],\r\n  exports: [UcgridviewComponent, NgbModule]\r\n})\r\nexport class UcgridviewModule { }\r\n","/*\r\n * Public API Surface of ucgridview\r\n */\r\n\r\nexport * from './lib/ucgridview.service';\r\nexport * from './lib/ucgridview.component';\r\nexport * from './lib/ucgridview.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}