{"version":3,"file":"adins-ucsearch.mjs","sources":["../../../projects/ucsearch/src/lib/ucsearch.service.ts","../../../projects/ucsearch/src/lib/model/adins-constant.ts","../../../projects/ucsearch/src/lib/model/integration-obj.model.ts","../../../projects/ucsearch/src/lib/model/input-search-obj.model.ts","../../../projects/ucsearch/src/lib/model/criteria-obj.model.ts","../../../projects/ucsearch/src/lib/model/request-criteria-obj.model.ts","../../../projects/ucsearch/src/lib/model/key-value-report.model.ts","../../../projects/ucsearch/src/lib/model/key-value-uc-search.model.ts","../../../projects/ucsearch/src/lib/services/export-file.service.ts","../../../projects/ucsearch/src/lib/services/ucsearch-datetime.service.ts","../../../projects/ucsearch/src/lib/constants/month.ts","../../../projects/ucsearch/src/lib/services/ucsearch-form.service.ts","../../../projects/ucsearch/src/lib/pipe/text-search.pipe.ts","../../../projects/ucsearch/src/lib/ucsearch.component.ts","../../../projects/ucsearch/src/lib/ucsearch.component.html","../../../projects/ucsearch/src/lib/ucsearch.module.ts","../../../projects/ucsearch/src/lib/test-minimal.module.ts","../../../projects/ucsearch/src/public-api.ts","../../../projects/ucsearch/src/adins-ucsearch.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class UCSearchService {\r\n\r\n  constructor() { }\r\n}\r\n","import { formatDate } from \"@angular/common\";\r\n\r\nexport class AdInsConstant {\r\n    public static RestrictionBetween = \"Between\"\r\n    public static RestrictionLike = \"Like\";\r\n    public static RestrictionEq = \"Eq\";\r\n    public static RestrictionNeq = \"NEQ\";\r\n    public static RestrictionGt = \"GT\";\r\n    public static RestrictionGte = \"GTE\";\r\n    public static RestrictionLt = \"LT\";\r\n    public static RestrictionLte = \"LTE\";\r\n    public static RestrictionIn = \"IN\";\r\n    public static RestrictionNotIn = \"NotIn\";\r\n    public static RestrictionOr = \"Or\"; //pastikan ada 1 criteria sebelumnya\r\n    public static RestrictionOrNeq = \"OrNeq\"; //pastikan ada 1 criteria sebelumnya\r\n    public static RestrictionIsNull = \"ISNULL\";\r\n    public static RestrictionIsNotNull = \"ISNOTNULL\";\r\n    public static RestrictionGTE = \"GTE\";\r\n    public static RestrictionLTE = \"LTE\";\r\n    public static showData = \"10,50,100\";\r\n    public static JoinTypeInner = \"INNER\";\r\n    public static JoinTypeLeft = \"LEFT\";\r\n}\r\n\r\nexport const MIME_TYPES = {\r\n    csv: 'text/csv;charset=UTF-8',\r\n    excel: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8',\r\n    json: 'text/json;charset=UTF-8',\r\n} as const;\r\n\r\nexport const EXPORT_DATA_TYPES = {\r\n    csv: 'csv',\r\n    excel: 'excel',\r\n    json: 'json',\r\n} as const;\r\n\r\nexport const EXTENSION_TYPE = {\r\n    csv: '.csv',\r\n    excel: '.xlsx',\r\n    json: '.json',\r\n} as const;\r\n\r\nexport const ALLOWED_MIME_TYPES = [\r\n    MIME_TYPES.csv,\r\n    MIME_TYPES.excel,\r\n    MIME_TYPES.json,\r\n] as const;\r\n\r\nexport const ALLOWED_EXPORT_DATA_TYPES = [\r\n    EXPORT_DATA_TYPES.csv,\r\n    EXPORT_DATA_TYPES.excel,\r\n    EXPORT_DATA_TYPES.json,\r\n] as const;\r\n\r\nexport const ALLOWED_EXTENSION_TYPE = [\r\n    EXTENSION_TYPE.csv, \r\n    EXTENSION_TYPE.excel,\r\n    EXTENSION_TYPE.json,\r\n] as const;\r\n\r\nexport type FileMimeType = typeof ALLOWED_MIME_TYPES[number];\r\nexport type FileExportDataType = typeof ALLOWED_EXPORT_DATA_TYPES[number];\r\nexport type FileExtensionType = typeof ALLOWED_EXTENSION_TYPE[number];","import { AdInsConstant } from \"./adins-constant\";\r\nexport class IntegrationObj {\r\n    baseUrl: string;\r\n    apiPath: string;\r\n    requestObj: Object;\r\n    leftColumnToJoin: string;\r\n    rightColumnToJoin: string;\r\n    joinType: string;\r\n    \r\n    constructor() {\r\n        this.baseUrl = \"\";\r\n        this.apiPath = \"\";\r\n        this.requestObj = new Object();\r\n        this.leftColumnToJoin = \"\";\r\n        this.rightColumnToJoin = \"\";\r\n        this.joinType = AdInsConstant.JoinTypeInner;\r\n    }\r\n}","import { CriteriaObj } from \"./criteria-obj.model\";\r\nimport { IntegrationObj } from \"./integration-obj.model\";\r\n\r\nexport class InputSearchObj {\r\n    _url: string;\r\n    enviromentUrl: string;\r\n    searchId: string;\r\n    title: string;\r\n    apiQryPaging: string;\r\n    arrCritObj: any;\r\n    addCritInput: Array<CriteriaObj>;\r\n    listEnvironments: Array<EnvisObj>;\r\n    whereValue: Array<WhereValueObj>;\r\n    fromValue: Array<FromValueObj>;\r\n    switchValue: Array<SwitchValueObj>;\r\n    integrationObj: IntegrationObj;\r\n    isJoinExAPI: boolean;\r\n    dataInput: any;\r\n    IsSubsection: boolean;\r\n    dicts: Record<string, any>;\r\n    dictLookupObj: any;\r\n    environment: any;\r\n\r\n    constructor() {\r\n        this._url = \"\";\r\n        this.enviromentUrl = \"\";\r\n        this.title = \"\";\r\n        this.apiQryPaging = \"\";\r\n        this.arrCritObj = null;\r\n        this.addCritInput = new Array<CriteriaObj>();\r\n        this.listEnvironments = new Array<EnvisObj>();\r\n        this.whereValue = new Array<WhereValueObj>();\r\n        this.fromValue = new Array<FromValueObj>();\r\n        this.switchValue = new Array<SwitchValueObj>();\r\n        this.integrationObj = new IntegrationObj();\r\n        this.isJoinExAPI = false;\r\n        this.IsSubsection = true;\r\n        this.searchId = 'UcSearch';\r\n        this.dicts = {};\r\n        this.dictLookupObj = {};\r\n        this.environment = {};\r\n    }\r\n}\r\n\r\nexport class EnviObj {\r\n    name: string;\r\n    environment: string;\r\n\r\n    constructor() {\r\n        this.name = \"\";\r\n        this.environment = \"\";\r\n    }\r\n}\r\n\r\nexport class WhereValueObj {\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 FromValueObj {\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 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 EnvisObj {\r\n    environment: string;\r\n    url: string;\r\n\r\n    constructor() {\r\n        this.environment = \"\";\r\n        this.url = \"\";\r\n    }\r\n}","export class CriteriaObj { \r\n    propName: string;\r\n    restriction: string;\r\n    value: string;\r\n    low: number;\r\n    high: number;\r\n    DataType: string;\r\n    listValue: Array<any>;\r\n    isCriteriaDataTable: boolean;\r\n\r\n    constructor() {\r\n        this.low = 0;\r\n        this.high = 0;\r\n        this.DataType = 'Text';\r\n        this.isCriteriaDataTable = false;\r\n    }\r\n\r\n}","import { AdInsConstant } from \"./adins-constant\";\r\nimport { CriteriaObj } from \"./criteria-obj.model\";\r\nimport { IntegrationObj } from \"./integration-obj.model\";\r\n \r\nexport class RequestCriteriaObj{\r\n    includeCount:boolean;\r\n    includeData:boolean;\r\n    pageNo:number;\r\n    rowPerPage:number;\r\n    orderBy:any;\r\n    criteria:CriteriaObj[];\r\n    isLoading : boolean;\r\n    queryString: any;\r\n    rowVersion: any;\r\n    integrationObj: IntegrationObj;\r\n    joinType: string;\r\n\r\n    constructor()\r\n    {\r\n        this.includeCount=true;\r\n        this.includeData=true;\r\n        this.isLoading = true;\r\n        this.queryString = '';\r\n        this.rowVersion = '';\r\n        this.integrationObj = new IntegrationObj();\r\n        this.joinType = AdInsConstant.JoinTypeInner;\r\n    }\r\n}","export class KeyValueReportObj {\r\n    key: number;\r\n    value: string;\r\n\r\n    constructor() {\r\n        this.key = 0;\r\n        this.value = \"\";\r\n    }\r\n}\r\n\r\nexport class ExportTypeConstant {\r\n    public static EXP_TYPE_PDF = 0;\r\n    public static EXP_TYPE_XLS = 1;\r\n    public static EXP_TYPE_XLSX = 2;\r\n    public static EXP_TYPE_DOC = 3;\r\n    public static EXP_TYPE_DOCX = 4;\r\n    public static EXP_TYPE_JPDF = 5;\r\n}\r\n\r\nexport class ReportExecTypeConstant {\r\n    public static EXE_TYPE_SYNC = 0;\r\n    public static EXE_TYPE_ASYNC = 1;\r\n}","export class KeyValueUCSearchObj {\r\n    key: number;\r\n    value: string;\r\n\r\n    constructor() {\r\n        this.key = 0;\r\n        this.value = \"\";\r\n    }\r\n}\r\n\r\nexport class ListKeyValueMonth {\r\n    ListOfMonth: Array<KeyValueUCSearchObj>;\r\n    DictOfMonth: { [month: number]: string } = {};\r\n    constructor() {\r\n        this.ListOfMonth = new Array<KeyValueUCSearchObj>();\r\n        this.DictOfMonth = {}\r\n        this.ListOfMonth.push({ key: 1, value: \"January\" });\r\n        this.DictOfMonth[1]= \"January\";\r\n        this.ListOfMonth.push({ key: 2, value: \"February\" });\r\n        this.DictOfMonth[2]= \"February\";\r\n        this.ListOfMonth.push({ key: 3, value: \"March\" });\r\n        this.DictOfMonth[3]= \"March\";\r\n        this.ListOfMonth.push({ key: 4, value: \"April\" });\r\n        this.DictOfMonth[4]= \"April\";\r\n        this.ListOfMonth.push({ key: 5, value: \"May\" });\r\n        this.DictOfMonth[5]= \"May\";\r\n        this.ListOfMonth.push({ key: 6, value: \"June\" });\r\n        this.DictOfMonth[6]= \"June\";\r\n        this.ListOfMonth.push({ key: 7, value: \"July\" });\r\n        this.DictOfMonth[7]= \"July\";\r\n        this.ListOfMonth.push({ key: 8, value: \"August\" });\r\n        this.DictOfMonth[8]= \"August\";\r\n        this.ListOfMonth.push({ key: 9, value: \"September\" });\r\n        this.DictOfMonth[9]= \"September\";\r\n        this.ListOfMonth.push({ key: 10, value: \"October\" });\r\n        this.DictOfMonth[10]= \"October\";\r\n        this.ListOfMonth.push({ key: 11, value: \"November\" });\r\n        this.DictOfMonth[11]= \"November\";\r\n        this.ListOfMonth.push({ key: 12, value: \"December\" });\r\n        this.DictOfMonth[12]= \"December\";\r\n    }\r\n}","import { Injectable } from \"@angular/core\";\r\nimport { EXTENSION_TYPE, FileExtensionType, FileMimeType, MIME_TYPES } from \"../model/adins-constant\";\r\nimport * as FileSaver from 'file-saver';\r\nimport * as XLSX from 'xlsx';\r\n\r\n@Injectable()\r\nexport class ExportFileService {\r\n  public exportFileAsExcel(json: any[], fileName: string) {\r\n    const buffer: any = this.genExcelBuffer(json);\r\n    const mimeType: FileMimeType = MIME_TYPES.excel;\r\n    const extType: FileExtensionType = EXTENSION_TYPE.excel;\r\n    this.saveAsFile(buffer, fileName, mimeType, extType);\r\n  }\r\n\r\n  public exportFileAsJson(json: any[], fileName: string) {\r\n    const buffer: any = this.genJsonBuffer(json);\r\n    const mimeType: FileMimeType = MIME_TYPES.json;\r\n    const extType: FileExtensionType = EXTENSION_TYPE.json;\r\n    this.saveAsFile(buffer, fileName, mimeType, extType);\r\n  }\r\n\r\n  public exportFileAsCsv(json: any[], fileName: string) {\r\n    const buffer: any = this.genCsvBuffer(json);\r\n    const mimeType: FileMimeType = MIME_TYPES.csv;\r\n    const extType: FileExtensionType = EXTENSION_TYPE.csv;\r\n    this.saveAsFile(buffer, fileName, mimeType, extType);\r\n  }\r\n\r\n  private genExcelBuffer(json: any[]) {\r\n    const worksheet: XLSX.WorkSheet = XLSX.utils.json_to_sheet(json);\r\n    const workbook: XLSX.WorkBook = { Sheets: { 'data': worksheet }, SheetNames: ['data'] };\r\n    const excelBuffer: any = XLSX.write(workbook, { bookType: 'xlsx', type: 'array' });\r\n    return excelBuffer;\r\n  }\r\n\r\n  private genJsonBuffer(json: any[]) {\r\n    return JSON.stringify(json, null, 2);\r\n  }\r\n\r\n  private genCsvBuffer(json: any[]) {\r\n    const titleKeys = Object.keys(json[0])\r\n    const refinedData = []\r\n    refinedData.push(titleKeys)\r\n    json.forEach(item => {\r\n      refinedData.push(Object.values(item))\r\n    })\r\n    let csvContent = ''\r\n    refinedData.forEach(row => {\r\n      csvContent += row.join(',') + '\\n'\r\n    })\r\n    return csvContent;\r\n  }\r\n\r\n  private saveAsFile(buffer: any, fileName: string, mimeType: FileMimeType, extType: FileExtensionType): void {\r\n    const data: Blob = new Blob([buffer], {\r\n      type: mimeType\r\n    });\r\n    const _id = new Date().getTime();\r\n    const _filename: string = `${fileName}_export_${_id}${extType}`;\r\n    FileSaver.saveAs(data, _filename);\r\n  }\r\n}","import { DatePipe } from \"@angular/common\";\r\nimport { Injectable } from \"@angular/core\";\r\n\r\n@Injectable()\r\nexport class UcsearchDatetimeService {\r\n\r\n  // public SetDateValue(type: DictDateType, Key: string, Code: string, Config: {BusinessDate: Date}) {\r\n  //   const flag = this.CheckDateType(Code);\r\n  //   const NewDate: Date = this.GetNewDate(flag, Code, Config.BusinessDate);\r\n\r\n  //   // let NewDate: Date = null;\r\n  //   // if (flag === 4) {\r\n  //   //     NewDate = new Date(Code);\r\n  //   // } \r\n  //   // else {\r\n  //   //     NewDate = this.GetNewDate(flag, Code);\r\n  //   // }\r\n\r\n  //   this.SetDictMinMaxDate(type, Key, NewDate);\r\n  // }\r\n\r\n  public CheckDateType(code: string): number {\r\n    if (!code) return 0;\r\n    if (code.toLowerCase() === \"bd\" || code.toLowerCase() === \"businessdate\") return 1;\r\n\r\n    const DateCode = code[0].toUpperCase();\r\n\r\n    const idxFoundYear = DateCode == \"Y\";\r\n    if (idxFoundYear) return 2;\r\n\r\n    const idxFoundMonth = DateCode == \"M\";\r\n    if (idxFoundMonth) return 2;\r\n    \r\n    const idxFoundDate = DateCode == \"D\";\r\n    if (idxFoundDate) return 2;\r\n\r\n    if(this.transformDate(code)) return 4;\r\n\r\n    return 0;\r\n  }\r\n\r\n  public transformDate(value: string, format: string = \"yyyy-MM-dd\") {\r\n    const datePipe = new DatePipe('en-US');\r\n    return datePipe.transform(value, format);\r\n  }\r\n\r\n  public GetNewDate(flag: number, code: string, initDate: Date): Date {\r\n    switch (flag) {\r\n        case 0:\r\n            return null;\r\n        case 1:\r\n            return new Date(initDate);\r\n        case 2:\r\n            return this.CheckValidatorDate(code, initDate);\r\n        case 4:\r\n            return new Date(this.transformDate(code));\r\n    }\r\n\r\n    return new Date(initDate);\r\n  }\r\n\r\n  public CheckValidatorDate(code: string, initDate: Date): Date {\r\n    let NewDate: Date = new Date(initDate);\r\n\r\n    const DateCode = code[0].toUpperCase();\r\n    const Operator = code[1];\r\n\r\n    let newValue: number = 0;\r\n    let valueDate: number = +code.substring(2);\r\n    if (!valueDate) valueDate = 1;\r\n\r\n    switch (DateCode) {\r\n        // Year\r\n        case \"Y\":\r\n            const getYear = NewDate.getFullYear();\r\n            newValue = this.SetNewDate(Operator, getYear, valueDate);\r\n            NewDate.setFullYear(newValue);\r\n            break;\r\n        // Month\r\n        case \"M\":\r\n            const getMonth = NewDate.getMonth();\r\n            newValue = this.SetNewDate(Operator, getMonth, valueDate);\r\n            NewDate.setMonth(newValue);\r\n            break;\r\n        // Date\r\n        case \"D\":\r\n            const getDate = NewDate.getDate();\r\n            newValue = this.SetNewDate(Operator, getDate, valueDate);\r\n            NewDate.setDate(newValue);\r\n            break;\r\n    }\r\n    return NewDate;\r\n  }\r\n\r\n  public SetNewDate(Operator: string, ValueDt: number, ValueToAdd: number): number {\r\n    if (Operator == \"+\") return ValueDt + ValueToAdd;\r\n    return ValueDt - ValueToAdd;\r\n  }\r\n}","export const monthsKeyValue = [\r\n  {\r\n    key: 1,\r\n    value: \"January\"\r\n  },\r\n  {\r\n    key: 2,\r\n    value: \"February\"\r\n  },\r\n  {\r\n    key: 3,\r\n    value: \"March\"\r\n  },\r\n  {\r\n    key: 4,\r\n    value: \"April\"\r\n  },\r\n  {\r\n    key: 5,\r\n    value: \"May\"\r\n  },\r\n  {\r\n    key: 6,\r\n    value: \"June\"\r\n  },\r\n  {\r\n    key: 7,\r\n    value: \"July\"\r\n  },\r\n  {\r\n    key: 8,\r\n    value: \"August\"\r\n  },\r\n  {\r\n    key: 9,\r\n    value: \"September\"\r\n  },\r\n  {\r\n    key: 10,\r\n    value: \"October\"\r\n  },\r\n  {\r\n    key: 11,\r\n    value: \"November\"\r\n  },\r\n  {\r\n    key: 12,\r\n    value: \"December\"\r\n  }\r\n]","import { DatePipe } from \"@angular/common\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { FormGroup } from \"@angular/forms\";\r\n\r\n@Injectable()\r\nexport class UcsearchFormService {\r\n    private form: FormGroup;\r\n  \r\n    constructor() {}\r\n\r\n    setForm(formGroup: FormGroup) {\r\n      this.form = formGroup;\r\n    }\r\n  \r\n    getForm() {\r\n      return this.form;\r\n    }\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n  name: 'textSearch'\r\n})\r\nexport class TextSearchPipe implements PipeTransform {\r\n\r\n  transform(items: any[], text?: any): any {\r\n    if(!text){\r\n      return items;\r\n    }\r\n    return items.filter((item)=>{\r\n      if(item.Value && typeof item.Value === 'string'){\r\n        return item.Value.toLowerCase().indexOf(text.toLowerCase())> -1;\r\n      } \r\n      return false;\r\n    })\r\n  }\r\n\r\n}","import {\r\n  Component,\r\n  OnInit,\r\n  Input,\r\n  ViewChild,\r\n  ElementRef,\r\n  EventEmitter,\r\n  Output,\r\n  HostListener,\r\n} from \"@angular/core\";\r\nimport { Observable } from \"rxjs\";\r\nimport { HttpClient } from \"@angular/common/http\";\r\nimport {\r\n  AbstractControl,\r\n  ControlContainer,\r\n  FormBuilder,\r\n  FormControl,\r\n  FormGroup,\r\n  FormGroupDirective,\r\n  NgForm,\r\n  ValidatorFn,\r\n  Validators,\r\n} from \"@angular/forms\";\r\nimport { DatePipe, formatDate } from \"@angular/common\";\r\nimport { InputSearchObj } from \"./model/input-search-obj.model\";\r\nimport { CriteriaObj } from \"./model/criteria-obj.model\";\r\nimport { RequestCriteriaObj } from \"./model/request-criteria-obj.model\";\r\nimport { AdInsConstant, EXPORT_DATA_TYPES } from \"./model/adins-constant\";\r\nimport {\r\n  trigger,\r\n  transition,\r\n  style,\r\n  animate,\r\n  state,\r\n} from \"@angular/animations\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\nimport {\r\n  ExportTypeConstant,\r\n  KeyValueReportObj,\r\n  ReportExecTypeConstant,\r\n} from \"./model/key-value-report.model\";\r\nimport { CookieService } from \"ngx-cookie\";\r\nimport * as CryptoJS from \"crypto-js\";\r\nimport {\r\n  KeyValueUCSearchObj,\r\n  ListKeyValueMonth,\r\n} from \"./model/key-value-uc-search.model\";\r\nimport { ExportFileService } from \"./services/export-file.service\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { NgxRouterService } from \"@adins/fe-core\";\r\nimport { UcsearchDatetimeService } from \"./services/ucsearch-datetime.service\";\r\nimport { monthsKeyValue } from \"./constants/month\";\r\nimport { UcsearchFormService } from \"./services/ucsearch-form.service\";\r\n\r\n@Component({\r\n  selector: \"lib-UCSearch\",\r\n  templateUrl: \"./ucsearch.component.html\",\r\n  styleUrls: [\"./ucsearch.component.css\"],\r\n  providers: [DatePipe, ExportFileService],\r\n  animations: [\r\n    trigger(\"changeDivSize\", [\r\n      state(\r\n        \"initial\",\r\n        style({\r\n          height: \"*\",\r\n          opacity: \"1\",\r\n        })\r\n      ),\r\n      state(\r\n        \"final\",\r\n        style({\r\n          height: \"0px\",\r\n          opacity: \"0\",\r\n          overflow: \"hidden\",\r\n        })\r\n      ),\r\n      transition(\"initial=>final\", animate(\"300ms\")),\r\n      transition(\"final=>initial\", animate(\"300ms\")),\r\n    ]),\r\n  ],\r\n})\r\nexport class UCSearchComponent implements OnInit {\r\n  // isListHide: boolean = true;\r\n  // @HostListener('document:click', ['$event'])\r\n  // onClick(ev: MouseEvent) {\r\n  //   const clickInside = this.elemRef.nativeElement.contains(ev.target);\r\n  //   if (!clickInside) {\r\n  //     this.isListHide = true;\r\n  //   }\r\n  // }\r\n\r\n  @ViewChild(\"enjiForm\") set content(content: NgForm) {\r\n    if (content) {\r\n      // initially setter gets called with undefined\r\n      this.searchForm = content;\r\n    }\r\n  }\r\n\r\n  @ViewChild(\"formIdSearch\") myForm: ElementRef;\r\n  @Input() searchInput: InputSearchObj = new InputSearchObj();\r\n  @Input() pageSize: number = 10;\r\n  @Input() isReport: boolean = false;\r\n  @Input() showRptExecType: boolean = false;\r\n  @Output() result: EventEmitter<any> = new EventEmitter();\r\n  @Output() genRpt: EventEmitter<{\r\n    ExportType: number;\r\n    RptExecType: number;\r\n    ElRef: ElementRef;\r\n    formRaw: any;\r\n  }> = new EventEmitter<{\r\n    ExportType: number;\r\n    RptExecType: number;\r\n    ElRef: ElementRef;\r\n    formRaw: any;\r\n  }>();\r\n  @Output() reqGetAllData: EventEmitter<any> = new EventEmitter();\r\n  ExportTypeList: Array<KeyValueReportObj> = [\r\n    {\r\n      key: ExportTypeConstant.EXP_TYPE_PDF,\r\n      value: \"PDF\",\r\n    },\r\n    {\r\n      key: ExportTypeConstant.EXP_TYPE_XLSX,\r\n      value: \"Excel 2007\",\r\n    },\r\n    {\r\n      key: ExportTypeConstant.EXP_TYPE_DOCX,\r\n      value: \"Document XML\",\r\n    },\r\n    {\r\n      key: ExportTypeConstant.EXP_TYPE_JPDF,\r\n      value: \"Justify PDF\",\r\n    },\r\n  ];\r\n\r\n  ReportExecTypeList: Array<KeyValueReportObj> = [\r\n    {\r\n      key: ReportExecTypeConstant.EXE_TYPE_SYNC,\r\n      value: \"Sync\",\r\n    },\r\n    {\r\n      key: ReportExecTypeConstant.EXE_TYPE_ASYNC,\r\n      value: \"Async\",\r\n    },\r\n  ];\r\n\r\n  exportAsFileList = [\r\n    {\r\n      key: \"csv\",\r\n      value: \"as CSV\",\r\n    },\r\n    {\r\n      key: \"excel\",\r\n      value: \"as EXCEL\",\r\n    },\r\n    {\r\n      key: \"json\",\r\n      value: \"as JSON\",\r\n    },\r\n  ];\r\n\r\n  ListOfMonth: ListKeyValueMonth = new ListKeyValueMonth();\r\n  ListOfYear: Array<KeyValueUCSearchObj> = new Array<KeyValueUCSearchObj>();\r\n  ClaimList: Array<any> = [\r\n    {\r\n      Key: AdInsConstant.RestrictionIsNotNull,\r\n      Value: \"CLAIMED\",\r\n    },\r\n    {\r\n      Key: AdInsConstant.RestrictionIsNull,\r\n      Value: \"UNCLAIMED\",\r\n    },\r\n  ];\r\n\r\n  ExportType: number = 0;\r\n  RptExecType: number = 0;\r\n\r\n  pageNow: any = 1;\r\n  configuration: any;\r\n  exportData: any;\r\n  ExcelData: any;\r\n  isDataLoaded: boolean = false;\r\n  isHidden: boolean = false;\r\n  BisDt: string;\r\n  BusinessDt: Date = new Date();\r\n  readonly: boolean = false;\r\n  isSearch: boolean = false;\r\n  valueDict = {}; // hold temporary value from selected dropdown, used as a payload for another search component\r\n  lookupDict = {}; // hold temporary value from selected lookup, used as a payload for another search component\r\n\r\n  currentState = \"initial\";\r\n\r\n  form: FormGroup;\r\n  countForm = 0;\r\n  formattedAmount = \"\";\r\n  amount = 0;\r\n  apiUrl: string;\r\n  arrCrit: any;\r\n  searchForm: NgForm;\r\n  queryParam: Record<string, string> = {};\r\n  persistCrit: CriteriaObj[] = [];\r\n  persistAddToTempCrit: CriteriaObj[];\r\n  lookupKeyValDict: Record<string, string> = {};\r\n  notifyUpdateKeyValDict: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n  months = monthsKeyValue;\r\n  years = [];\r\n  yearNow = new Date().getFullYear();\r\n  private baseYear = 1900;\r\n  private minMaxYear = 200;\r\n  useNewDatepicker: boolean = false;\r\n\r\n  searchBtnReady: boolean = false;\r\n\r\n  constructor(\r\n    private http: HttpClient,\r\n    public toastr: ToastrService,\r\n    private cookieService: CookieService,\r\n    private datePipe: DatePipe,\r\n    private elemRef: ElementRef,\r\n    private exportFileService: ExportFileService,\r\n    private route: ActivatedRoute,\r\n    private ngxRouter: NgxRouterService,\r\n    private fb: FormBuilder,\r\n    private datetimeService: UcsearchDatetimeService,\r\n    private ucSearchFormService: UcsearchFormService\r\n  ) {\r\n    this.form = this.fb.group({});\r\n    this.route.queryParams.subscribe((params) => {\r\n      this.queryParam = this.ngxRouter.getQueryParams(params) as Record<\r\n        string,\r\n        any\r\n      >;\r\n    });\r\n    if (this.years.length === 0) {\r\n      for (let i = this.baseYear; i < this.baseYear + this.minMaxYear; i++) {\r\n        this.years.push(i);\r\n      }\r\n    }\r\n  }\r\n\r\n  changeState() {\r\n    this.currentState = this.currentState == \"initial\" ? \"final\" : \"initial\";\r\n    this.isHidden = !this.isHidden ? true : false;\r\n  }\r\n\r\n  async ngOnInit() {\r\n    if (this.searchInput?.environment?.experimental?.useNewDatepicker) {\r\n      this.useNewDatepicker =\r\n        this.searchInput.environment.experimental.useNewDatepicker;\r\n    }\r\n\r\n    this.apiUrl =\r\n      this.searchInput.enviromentUrl + this.searchInput.apiQryPaging;\r\n    this.arrCrit = this.searchInput.arrCritObj;\r\n\r\n    // Toggle functionality handled by Angular's built-in mechanisms\r\n    // All interactive features use Angular reactive forms and native DOM manipulation\r\n\r\n    let value = this.cookieService.get(\"BusinessDateRaw\");\r\n    this.BisDt = this.DecryptString(value, \"AdInsFOU12345678\");\r\n    this.BusinessDt = new Date(this.BisDt);\r\n\r\n    if (this.isValidDate(this.BusinessDt)) {\r\n      this.yearNow = this.BusinessDt.getFullYear();\r\n    }\r\n    await this.initiateForm(true);\r\n  }\r\n\r\n  async initiateForm(isInit: boolean) {\r\n    if (\r\n      this.searchInput.dataInput !== undefined &&\r\n      Object.keys(this.searchInput.dataInput).length !== 0\r\n    ) {\r\n      this.setConfigurationData(\r\n        JSON.parse(JSON.stringify(this.searchInput.dataInput)),\r\n        isInit\r\n      );\r\n      return;\r\n    }\r\n    await this.http\r\n      .get(this.searchInput._url)\r\n      .toPromise()\r\n      .then((data) => {\r\n        this.setConfigurationData(data, isInit);\r\n      });\r\n  }\r\n\r\n  setConfigurationData(data: any, isInit: boolean) {\r\n    this.configuration = data;\r\n    this.exportData = data.exportExcel;\r\n    if (data.exportTypeList != undefined && data.exportTypeList.length != 0) {\r\n      this.ExportTypeList = data.exportTypeList;\r\n      this.ExportType = this.ExportTypeList[0].key;\r\n    } else {\r\n      this.ExportType = this.ExportTypeList[0].key;\r\n    }\r\n\r\n    if (isInit) {\r\n      this.form.addControl(\"ExportType\", this.fb.control(\"\"));\r\n      this.form.addControl(\"RptExecType\", this.fb.control(\"\"));\r\n    }\r\n    this.form.controls[\"ExportType\"].setValue(this.ExportType);\r\n    this.form.controls[\"RptExecType\"].setValue(this.RptExecType);\r\n\r\n    if (\r\n      data.exportAsFileList != undefined &&\r\n      data.exportAsFileList.length != 0\r\n    ) {\r\n      this.exportAsFileList = data.exportAsFileList;\r\n    }\r\n\r\n    this.countForm = data.component.length;\r\n    this.isDataLoaded = true;\r\n\r\n    if (this.searchInput.title != undefined && this.searchInput.title != \"\") {\r\n      this.configuration.title = this.searchInput.title;\r\n    }\r\n\r\n    const userAccess = this.getUserAccess();\r\n    const inputEffect = [];\r\n    for (let i = 0; i < this.countForm; i++) {\r\n      //ini kalau datanya di load dari URL\r\n      if (data.component[i].isFromURL) {\r\n        let request = new RequestCriteriaObj();\r\n        let arrayCrit = new Array();\r\n        let criteriaObject = new CriteriaObj();\r\n        criteriaObject.DataType = \"text\";\r\n        criteriaObject.propName = data.component[i].criteriaPropName;\r\n        criteriaObject.value =\r\n          this.queryParam[data.component[i].criteriaPropValue] ||\r\n          data.component[i].criteriaPropValue;\r\n        criteriaObject.restriction = \"eq\";\r\n        arrayCrit.push(criteriaObject);\r\n        request.criteria = arrayCrit;\r\n        if (\r\n          data.component[i].criteriaPropName !== null &&\r\n          data.component[i].criteriaPropName !== undefined\r\n        ) {\r\n          const _critPropNameArr = (\r\n            data.component[i].criteriaPropName as string\r\n          ).split(\";\");\r\n          const _critPropValueArr = (\r\n            data.component[i].criteriaPropValue as string\r\n          ).split(\";\");\r\n\r\n          for (let i = 0; i < _critPropNameArr.length; i++) {\r\n            request[_critPropNameArr[i]] =\r\n              this.queryParam[_critPropValueArr[i]] ||\r\n              userAccess[_critPropValueArr[i]] ||\r\n              _critPropValueArr[i];\r\n          }\r\n        }\r\n\r\n        // Pengecekan penggunaan url atau path\r\n        if (\r\n          data.component[i].path != undefined &&\r\n          data.component[i].path != \"\"\r\n        ) {\r\n          if (\r\n            this.searchInput.listEnvironments != undefined &&\r\n            this.searchInput.listEnvironments.length != 0\r\n          ) {\r\n            for (let y = 0; y < this.searchInput.listEnvironments.length; y++) {\r\n              if (\r\n                data.component[i].environment ==\r\n                this.searchInput.listEnvironments[y].environment\r\n              ) {\r\n                data.component[i].fullpath =\r\n                  this.searchInput.listEnvironments[y].url +\r\n                  data.component[i].path;\r\n                break;\r\n              }\r\n            }\r\n          } else {\r\n            data.component[i].fullpath = data.component[i].url;\r\n          }\r\n        } else {\r\n          data.component[i].fullpath = data.component[i].url;\r\n        }\r\n        //lempar objectnya sekalian sama urlnya, nnti di bind di dalem karena masalah di asyncnya\r\n        //biar tiap function ada state2nya sendiri\r\n        this.resolveObject(\r\n          data.component[i],\r\n          data.component[i].fullpath,\r\n          request\r\n        );\r\n      } else if (\r\n        !data.component[i].isFromUrl &&\r\n        data.component[i].type === \"dropdown\"\r\n      ) {\r\n        if (\r\n          data.component[i]?.items?.length === 1 &&\r\n          !data.component[i]?.keepDdl\r\n        ) {\r\n          this.lookupKeyValDict[data.component[i].name] =\r\n            data.component[i].items[0].key;\r\n        }\r\n\r\n        if (\r\n          data.component[i]?.items?.length > 1 &&\r\n          data.component[i]?.useFirstValue\r\n        ) {\r\n          data.component[i].value = data.component[i].items[0].key;\r\n        }\r\n      }\r\n\r\n      if (data.component[i].type == \"numeric\") {\r\n        if (data.component[i].value && !isNaN(data.component[i].value)) {\r\n          data.component[i].value = parseFloat(\r\n            data.component[i].value\r\n          ).toLocaleString(\"en\");\r\n        }\r\n      }\r\n\r\n      //pengecekan ddl\r\n      if (data.component[i].type == \"dropdown\") {\r\n        if (data.component[i].dtmType != undefined) {\r\n          if (data.component[i].dtmType.includes(\"month\")) {\r\n            if (\r\n              data.component[i].value != undefined &&\r\n              data.component[i].value.includes(\"BD\")\r\n            ) {\r\n              data.component[i].value = this.setDefaultValueMonth(\r\n                data.component[i].value\r\n              );\r\n            }\r\n            data.component[i].items = this.setMonthDDL(\r\n              data.component[i].dtmType\r\n            );\r\n          }\r\n          if (data.component[i].dtmType.includes(\"year\")) {\r\n            if (\r\n              data.component[i].value != undefined &&\r\n              data.component[i].value.includes(\"BD\")\r\n            ) {\r\n              data.component[i].value = this.setDefaultValueYear(\r\n                data.component[i].value\r\n              );\r\n            }\r\n            data.component[i].items = this.setYearDDL(\r\n              data.component[i].dtmType\r\n            );\r\n          }\r\n        }\r\n      }\r\n      // if (data.component[i].type == \"dropdownSearch\" && !data.component[i].isFromURL && data.component[i].items?.length != 1) {\r\n      //   if (data.component[i].ddsType == undefined || data.component[i].ddsType == \"all\") {\r\n      //     data.component[i].value = \"all\";\r\n      //     data.component[i].descr = \"All\";\r\n      //   } else if (data.component[i].ddsType == \"one\") {\r\n      //     data.component[i].value = \"one\";\r\n      //     data.component[i].descr = \"Select One\";\r\n      //   }\r\n      // }\r\n      if (\r\n        data.component[i].type == \"dropdownSearch\" &&\r\n        !data.component[i].isFromURL &&\r\n        data.component[i].items.length == 1\r\n      ) {\r\n        data.component[i].value = data.component[i].items[0].Key;\r\n        data.component[i].descr = data.component[i].items[0].Value;\r\n      }\r\n      if (\r\n        data.component[i].type != \"dropdownSearch\" &&\r\n        !data.component[i].value\r\n      ) {\r\n        data.component[i].value = \"\";\r\n        if (data.component[i].ddlType == \"all\") data.component[i].value = \"all\";\r\n        if (data.component[i].ddlType == \"one\") data.component[i].value = \"one\";\r\n      }\r\n      //pengecekan tanggal\r\n      if (data.component[i].type == \"datepicker\") {\r\n        this.readonly = data.component[i].readonly;\r\n\r\n        // Handle dynamic date values: BD, firstDayOfMonth, lastDayOfMonth with +/- operators\r\n        if (\r\n          data.component[i].value === \"firstDayOfMonth\" ||\r\n          data.component[i].value === \"lastDayOfMonth\" ||\r\n          data.component[i].value.includes(\"BD\") ||\r\n          data.component[i].value.includes(\"firstDayOfMonth\") ||\r\n          data.component[i].value.includes(\"lastDayOfMonth\")\r\n        ) {\r\n          let baseDate = this.getBusinessDate(this.BisDt);\r\n\r\n          // Set base date based on type\r\n          if (data.component[i].value.includes(\"firstDayOfMonth\")) {\r\n            baseDate = this.getFirstDayOfMonth(baseDate);\r\n          } else if (data.component[i].value.includes(\"lastDayOfMonth\")) {\r\n            baseDate = this.getLastDayOfMonth(baseDate);\r\n          }\r\n\r\n          // Find operator position based on date type\r\n          let operator = data.component[i].value.charAt(\r\n            data.component[i].value.includes(\"BD\")\r\n              ? 2\r\n              : data.component[i].value.includes(\"firstDayOfMonth\")\r\n              ? 15\r\n              : 14\r\n          );\r\n\r\n          // Apply date arithmetic\r\n          if (operator == \"-\") {\r\n            let numDay = parseInt(data.component[i].value.split(\"-\", 2)[1]);\r\n            baseDate.setDate(baseDate.getDate() - numDay);\r\n          } else if (operator == \"+\") {\r\n            let numDay = parseInt(data.component[i].value.split(\"+\", 2)[1]);\r\n            baseDate.setDate(baseDate.getDate() + numDay);\r\n          }\r\n\r\n          data.component[i].value = formatDate(baseDate, \"yyyy-MM-dd\", \"en-US\");\r\n          inputEffect.push({ key: \"datepicker\", value: data.component[i] });\r\n        }\r\n\r\n        if (!this.readonly) {\r\n          // set min date and max date\r\n          const _restriction = data.component[i].restriction?.toUpperCase();\r\n          let _minDate = data.component[i].minDate?.toLowerCase();\r\n          if (_minDate != undefined && _minDate != null && _minDate != \"\") {\r\n            data.component[i].confMinDate = data.component[i].minDate;\r\n            if (\r\n              _minDate == \"bd\" ||\r\n              _minDate == \"businessdate\" ||\r\n              _minDate == \"businessdt\"\r\n            ) {\r\n              _minDate = this.BusinessDt;\r\n            }\r\n            if (this.isValidDate(_minDate)) {\r\n              const _flag = this.datetimeService.CheckDateType(\r\n                data.component[i]?.additionMinDateConf ?? \"bd\"\r\n              );\r\n              let minDate = this.datetimeService.GetNewDate(\r\n                _flag,\r\n                data.component[i]?.additionMinDateConf,\r\n                _minDate\r\n              );\r\n              if (_restriction == \"GT\" || _restriction == \"LT\") {\r\n                minDate.setDate(minDate.getDate() + 1);\r\n              } else {\r\n                minDate.setDate(minDate.getDate());\r\n              }\r\n              data.component[i].minDate = minDate;\r\n            }\r\n          }\r\n          let _maxDate = data.component[i].maxDate?.toLowerCase();\r\n          if (_maxDate != undefined && _maxDate != null && _maxDate != \"\") {\r\n            data.component[i].confMaxDate = data.component[i].maxDate;\r\n            if (\r\n              _maxDate == \"bd\" ||\r\n              _maxDate == \"businessdate\" ||\r\n              _maxDate == \"businessdt\"\r\n            ) {\r\n              _maxDate = this.BusinessDt;\r\n            }\r\n            if (this.isValidDate(_maxDate)) {\r\n              const _flag = this.datetimeService.CheckDateType(\r\n                data.component[i]?.additionMaxDateConf ?? \"bd\"\r\n              );\r\n              let maxDate = this.datetimeService.GetNewDate(\r\n                _flag,\r\n                data.component[i]?.additionMaxDateConf,\r\n                _maxDate\r\n              );\r\n              if (_restriction == \"LT\" || _restriction == \"GT\") {\r\n                maxDate.setDate(maxDate.getDate() - 1);\r\n              } else {\r\n                maxDate.setDate(maxDate.getDate());\r\n              }\r\n              data.component[i].maxDate = maxDate;\r\n            }\r\n          }\r\n        }\r\n      }\r\n\r\n      if (data.component[i].type == \"textbox\") {\r\n        const isUppercase =\r\n          data.component[i].isUppercase === undefined\r\n            ? true\r\n            : data.component[i].isUppercase;\r\n        const _value = this.autofill(data.component[i]);\r\n        this.configuration.component[i].value = isUppercase\r\n          ? _value.toUpperCase()\r\n          : _value;\r\n      }\r\n\r\n      if (data.component[i].type == \"dropdown\") {\r\n        const _value = this.autofill(data.component[i], false);\r\n        this.configuration.component[i].value = _value;\r\n      }\r\n\r\n      if (data.component[i].type === \"lookup\") {\r\n        if (!isInit) {\r\n          this.form.controls[data.component[i].name].get(\"value\").setValue(\"\");\r\n          this.searchInput.dictLookupObj[data.component[i].name].nameSelect =\r\n            \"\";\r\n          this.searchInput.dictLookupObj[data.component[i].name].idSelect = \"\";\r\n          this.form.controls[\"lookup_id_\" + data.component[i].name].setValue(\r\n            \"\"\r\n          );\r\n        } else {\r\n          this.form.addControl(\r\n            \"lookup_id_\" + data.component[i].name,\r\n            this.fb.control(\"\")\r\n          );\r\n        }\r\n        continue;\r\n      }\r\n      let controlName = data.component[i].name;\r\n      let _value = data.component[i]?.value ?? \"\";\r\n      if (\r\n        data.component[i].type === \"datepicker\" ||\r\n        data.component[i].type === \"numeric\" ||\r\n        data.component[i].type === \"currency\"\r\n      )\r\n        controlName += i;\r\n      if (data.component[i].type === \"dropdown\" && _value === \"\") {\r\n        if (data.component[i].ddlType === \"one\") _value = \"one\";\r\n        else if (\r\n          data.component[i].ddlType === \"all\" ||\r\n          data.component[i].ddlType === undefined\r\n        )\r\n          _value = \"all\";\r\n      }\r\n      if (data.component[i].type === \"year\") {\r\n        _value = this.yearNow;\r\n      }\r\n      if (isInit) {\r\n        this.form.addControl(controlName, this.fb.control(\"\"));\r\n      }\r\n      this.form.controls[controlName].setValue(_value);\r\n      if (data.component[i].isRequired) {\r\n        const formControl = this.form.controls[controlName];\r\n        const listValidators: ValidatorFn[] = [Validators.required];\r\n        formControl.setValidators(listValidators);\r\n        formControl.updateValueAndValidity();\r\n      }\r\n\r\n      if (\r\n        data.component[i].type === \"numeric\" ||\r\n        data.component[i].type === \"currency\"\r\n      ) {\r\n        if (\r\n          data.component[i].min !== null &&\r\n          data.component[i].min !== undefined &&\r\n          data.component[i].min !== \"\"\r\n        ) {\r\n          this.setValidatorNumber(\r\n            \"MIN\",\r\n            data.component[i].min,\r\n            this.form.controls[controlName]\r\n          );\r\n        }\r\n\r\n        if (\r\n          data.component[i].max !== null &&\r\n          data.component[i].max !== undefined &&\r\n          data.component[i].max !== \"\"\r\n        ) {\r\n          this.setValidatorNumber(\r\n            \"MAX\",\r\n            data.component[i].max,\r\n            this.form.controls[controlName]\r\n          );\r\n        }\r\n      }\r\n    }\r\n\r\n    setTimeout(() => {\r\n      // enable search button to click and interact\r\n      this.searchBtnReady = true;\r\n\r\n      for (let j = 0; j < this.countForm; j++) {\r\n        if (\r\n          data.component[j].isEvent &&\r\n          this.configuration.component[j].itemsUrl.length == 1\r\n        ) {\r\n          this.onChangeEvent(\r\n            data.component[j].itemsUrl[0].Key,\r\n            data.component[j]\r\n          );\r\n        }\r\n        if (\r\n          data.component[j].type == \"officeRoleCodes\" &&\r\n          this.configuration.component[j].itemsUrl.length > 0\r\n        ) {\r\n          this.SetRoleOfficeCodes(j);\r\n        }\r\n      }\r\n      for (const [index, item] of inputEffect.entries()) {\r\n        if (item.key === \"datepicker\") {\r\n          this.checkInputDate(item.value, index);\r\n        }\r\n      }\r\n    }, 1000);\r\n\r\n    this.setInitialLookupKeyValDict();\r\n    this.ucSearchFormService.setForm(this.form);\r\n  }\r\n\r\n  getBusinessDate(bisDt: any): Date {\r\n    return bisDt != null ? new Date(bisDt) : new Date();\r\n  }\r\n\r\n  getFirstDayOfMonth(date: Date): Date {\r\n    return new Date(date.getFullYear(), date.getMonth(), 1);\r\n  }\r\n\r\n  getLastDayOfMonth(date: Date): Date {\r\n    return new Date(date.getFullYear(), date.getMonth() + 1, 0);\r\n  }\r\n\r\n  setInitialLookupKeyValDict() {\r\n    const arrData: any[] = this.configuration?.component ?? [];\r\n    for (let item of arrData) {\r\n      if (!this.lookupKeyValDict[item.name]) {\r\n        this.lookupKeyValDict[item.name] = item.value;\r\n      }\r\n    }\r\n  }\r\n\r\n  private getUserAccess() {\r\n    const _userAccess: string = this.cookieService.get(\"UserAccess\");\r\n    const userAccess = JSON.parse(\r\n      this.DecryptString(_userAccess, \"AdInsFOU12345678\")\r\n    );\r\n    return userAccess;\r\n  }\r\n\r\n  private autofill(data: any, checkValue: boolean = true) {\r\n    if (checkValue) {\r\n      if (data.value != \"\") return data.value;\r\n    }\r\n    const autofill: Record<string, string> = data.autofill;\r\n    if (autofill == undefined) return data.value;\r\n    if (autofill.source == \"param\") {\r\n      return this.queryParam[autofill.key];\r\n    }\r\n    if (autofill.source == \"useraccess\") {\r\n      const userAccess = this.getUserAccess();\r\n      return userAccess[autofill.key];\r\n    }\r\n    if (autofill.source == \"dicts\") {\r\n      if (!this.searchInput.dicts) {\r\n        console.log(\"dicts undefined...\");\r\n        return autofill.key;\r\n      }\r\n      return this.searchInput?.dicts[autofill.key] ?? autofill.key;\r\n    }\r\n    return data.value;\r\n  }\r\n\r\n  isValidDate(d: any) {\r\n    return !isNaN(new Date(d) as any);\r\n  }\r\n\r\n  SetRoleOfficeCodes(i: number) {\r\n    let userAccess: string = this.getUserAccess();\r\n    let roleCode: string = userAccess[\"RoleCode\"];\r\n    let listOfficeRoleCodes: Array<string> = new Array();\r\n    listOfficeRoleCodes.push(roleCode);\r\n    let component = this.myForm.nativeElement[i];\r\n    let ddl = component.options;\r\n    let text = ddl[ddl.selectedIndex].value.trim();\r\n    if (\r\n      this.configuration.component[i].itemsUrl.length == 1 ||\r\n      (this.configuration.component[i].ddlType == \"all\" && text == \"all\")\r\n    ) {\r\n      for (\r\n        let index = 0;\r\n        index < this.configuration.component[i].itemsUrl.length;\r\n        index++\r\n      ) {\r\n        const element = this.configuration.component[i].itemsUrl[index];\r\n        listOfficeRoleCodes.push(element.Key);\r\n        listOfficeRoleCodes.push(roleCode + \"-\" + element.Key);\r\n      }\r\n    } else {\r\n      listOfficeRoleCodes.push(text);\r\n      listOfficeRoleCodes.push(roleCode + \"-\" + text);\r\n    }\r\n\r\n    this.searchInput.integrationObj.requestObj[\"OfficeRoleCodes\"] =\r\n      listOfficeRoleCodes;\r\n    this.updateKeyValDict({\r\n      key: this.configuration.component[i].name,\r\n      value: text,\r\n    });\r\n  }\r\n\r\n  setDefaultValueMonth(value) {\r\n    let businessDate = new Date(this.BusinessDt);\r\n    let operator = value.charAt(2);\r\n    let tempValue = value.split(operator, 2);\r\n    let numMonth = parseInt(tempValue[1]);\r\n    if (!numMonth) numMonth = 1;\r\n    if (operator == \"-\") {\r\n      businessDate.setMonth(businessDate.getMonth() - numMonth);\r\n    } else if (operator == \"+\") {\r\n      businessDate.setMonth(businessDate.getMonth() + numMonth);\r\n    }\r\n    return businessDate.getMonth();\r\n  }\r\n  setMonthDDL(month) {\r\n    if (month == \"month\") return this.ListOfMonth.ListOfMonth;\r\n    let ListOfMonth: Array<KeyValueUCSearchObj> = new Array();\r\n    let equation = month.match(\"[\\\\+][-]|[-][\\\\+]|\\\\+|-\");\r\n    let toMin: number = this.BusinessDt.getMonth();\r\n    let toMax: number = this.BusinessDt.getMonth();\r\n    let minMax: number = parseInt(\r\n      month.substring(equation.index + equation[0].length)\r\n    );\r\n    if (minMax >= 12) return this.ListOfMonth.ListOfMonth;\r\n    if ((equation[0] == \"+-\" || equation[0] == \"-+\") && minMax >= 6)\r\n      return this.ListOfMonth.ListOfMonth;\r\n    let dictOfMonth: { [month: number]: string } = this.ListOfMonth.DictOfMonth;\r\n    ListOfMonth.push({ key: toMin, value: dictOfMonth[toMin] });\r\n\r\n    for (let q = 0; q < minMax; q++) {\r\n      if (equation[0].includes(\"-\")) {\r\n        toMin--;\r\n        if (toMin == 0) toMin = 12;\r\n        ListOfMonth.push({ key: toMin, value: dictOfMonth[toMin] });\r\n      }\r\n      if (equation[0].includes(\"+\")) {\r\n        toMax++;\r\n        if (toMax == 13) toMax = 1;\r\n        ListOfMonth.push({ key: toMax, value: dictOfMonth[toMax] });\r\n      }\r\n    }\r\n    ListOfMonth.sort((a, b) => {\r\n      return a.key - b.key;\r\n    });\r\n    return ListOfMonth;\r\n  }\r\n\r\n  setDefaultValueYear(value) {\r\n    let businessDate = new Date(this.BusinessDt);\r\n    let operator = value.charAt(2);\r\n    let tempValue = value.split(operator, 2);\r\n    let numYear = parseInt(tempValue[1]);\r\n    if (!numYear) numYear = 1;\r\n    if (operator == \"-\") {\r\n      businessDate.setFullYear(businessDate.getFullYear() - numYear);\r\n    } else if (operator == \"+\") {\r\n      businessDate.setFullYear(businessDate.getFullYear() + numYear);\r\n    }\r\n    return businessDate.getFullYear();\r\n  }\r\n  setYearDDL(year) {\r\n    this.ListOfYear = new Array<KeyValueUCSearchObj>();\r\n    let equation = year.match(\"[\\\\+][-]|[-][\\\\+]|\\\\+|-\");\r\n    let toMin: number = this.BusinessDt.getFullYear();\r\n    let toMax: number = this.BusinessDt.getFullYear();\r\n    let minMax: number = parseInt(\r\n      year.substring(equation.index + equation[0].length)\r\n    );\r\n    this.ListOfYear.push({\r\n      key: this.BusinessDt.getFullYear(),\r\n      value: this.BusinessDt.getFullYear().toString(),\r\n    });\r\n\r\n    for (let q = 0; q < minMax; q++) {\r\n      if (equation[0] == \"-+\" || equation[0] == \"+-\") {\r\n        toMin--;\r\n        toMax++;\r\n        this.ListOfYear.push(\r\n          { key: toMin, value: toMin.toString() },\r\n          { key: toMax, value: toMax.toString() }\r\n        );\r\n      } else if (equation[0] == \"-\") {\r\n        toMin--;\r\n        this.ListOfYear.push({ key: toMin, value: toMin.toString() });\r\n      } else if (equation[0] == \"+\") {\r\n        toMax++;\r\n        this.ListOfYear.push({ key: toMax, value: toMax.toString() });\r\n      }\r\n    }\r\n    this.ListOfYear.sort((a, b) => {\r\n      return a.key - b.key;\r\n    });\r\n    return this.ListOfYear;\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  public postJSON(url: string, criteria: any = null): Observable<any> {\r\n    return this.http.post(url, criteria);\r\n  }\r\n\r\n  searchClick(IsExportExcel: boolean = false, ExtFile: string = \"\") {\r\n    // check if criteria to send is ready\r\n    if (!this.searchBtnReady) return;\r\n\r\n    console.log(\"search click enter.........\");\r\n    if (this.isReport != undefined && this.isReport) {\r\n      this.GenerateReport(this.searchForm);\r\n      return;\r\n    }\r\n    let filtered = this.configuration.component.filter(\r\n      (item, i, arr) => arr.findIndex((x) => x.name === item.name) === i\r\n    );\r\n\r\n    for (let i = 0; i < filtered.length; i++) {\r\n      if (filtered[i].type == \"numeric\") {\r\n        if (!this.checkValueGteLte(filtered[i])) return;\r\n      }\r\n    }\r\n\r\n    let order = null;\r\n    if (this.configuration.orderby != null) {\r\n      if (\r\n        this.configuration.orderby.key !== \"\" &&\r\n        this.configuration.orderby.value !== \"\"\r\n      ) {\r\n        order = {\r\n          key: this.configuration.orderby.key,\r\n          value: this.configuration.orderby.value,\r\n        };\r\n      }\r\n    }\r\n    this.pageNow = 1;\r\n    let rowPerPage = this.pageSize;\r\n    if (IsExportExcel) rowPerPage = 9999;\r\n    this.search(\r\n      this.apiUrl,\r\n      this.pageNow,\r\n      rowPerPage,\r\n      order,\r\n      true,\r\n      this.arrCrit,\r\n      IsExportExcel,\r\n      ExtFile\r\n    );\r\n  }\r\n\r\n  async reset() {\r\n    // disable button search to make sure that all criteria ready first.\r\n    this.searchBtnReady = false;\r\n    await this.initiateForm(false);\r\n  }\r\n\r\n  checkSubmitDate(component) {\r\n    const _comp = this.configuration.component;\r\n    const MinComponentIdx =\r\n      this.configuration.component.findIndex(\r\n        (x) =>\r\n          x.datepickerPair == component.datepickerPair &&\r\n          x.restriction.toUpperCase() == \"GTE\"\r\n      ) === -1\r\n        ? this.configuration.component.findIndex(\r\n            (x) =>\r\n              x.datepickerPair == component.datepickerPair &&\r\n              x.restriction.toUpperCase() == \"GT\"\r\n          )\r\n        : this.configuration.component.findIndex(\r\n            (x) =>\r\n              x.datepickerPair == component.datepickerPair &&\r\n              x.restriction.toUpperCase() == \"GTE\"\r\n          );\r\n    const MaxComponentIdx =\r\n      this.configuration.component.findIndex(\r\n        (x) =>\r\n          x.datepickerPair == component.datepickerPair &&\r\n          x.restriction.toUpperCase() == \"LTE\"\r\n      ) === -1\r\n        ? this.configuration.component.findIndex(\r\n            (x) =>\r\n              x.datepickerPair == component.datepickerPair &&\r\n              x.restriction.toUpperCase() == \"LT\"\r\n          )\r\n        : this.configuration.component.findIndex(\r\n            (x) =>\r\n              x.datepickerPair == component.datepickerPair &&\r\n              x.restriction.toUpperCase() == \"LTE\"\r\n          );\r\n\r\n    if (MinComponentIdx === -1 || MaxComponentIdx === -1) return true;\r\n\r\n    if (\r\n      this.form.controls[_comp[MinComponentIdx].name + MinComponentIdx].value >\r\n      this.form.controls[_comp[MaxComponentIdx].name + MaxComponentIdx].value\r\n    ) {\r\n      this.toastr.warning(\r\n        _comp[MinComponentIdx].label +\r\n          \" must be less than \" +\r\n          _comp[MaxComponentIdx].label\r\n      );\r\n      return false;\r\n    }\r\n\r\n    return true;\r\n  }\r\n\r\n  checkNumericPair(component, myform) {\r\n    // const _comp = this.configuration.component;\r\n    // let MinComponentIdx = this.configuration.component.findIndex(x => x.numericPair == component.numericPair && (x.restriction.toUpperCase() == \"GTE\")) == undefined ? this.configuration.component.find(x => x.numericPair == component.numericPair && (x.restriction.toUpperCase() == \"GT\")) : this.configuration.component.find(x => x.numericPair == component.numericPair && (x.restriction.toUpperCase() == \"GTE\"));\r\n    // let MaxComponentIdx = this.configuration.component.findIndex(x => x.numericPair == component.numericPair && (x.restriction.toUpperCase() == \"LTE\")) == undefined ? this.configuration.component.find(x => x.numericPair == component.numericPair && (x.restriction.toUpperCase() == \"LT\")) : this.configuration.component.find(x => x.numericPair == component.numericPair && (x.restriction.toUpperCase() == \"LTE\"));\r\n    // const _min = parseFloat(this.form.controls[_comp[MinComponentIdx].name].value.replace(/,/g, ''));\r\n    // const _max = parseFloat(this.form.controls[_comp[MaxComponentIdx].name].value.replace(/,/g, ''));\r\n\r\n    // if (_min > _max) {\r\n    //   this.toastr.warning(_comp[MinComponentIdx].label + \" must be less than \" + _comp[MaxComponentIdx].label);\r\n    //   return false;\r\n    // }\r\n\r\n    let MinComponent =\r\n      this.configuration.component.find(\r\n        (x) =>\r\n          x.numericPair == component.numericPair &&\r\n          x.restriction.toUpperCase() == \"GTE\"\r\n      ) == undefined\r\n        ? this.configuration.component.find(\r\n            (x) =>\r\n              x.numericPair == component.numericPair &&\r\n              x.restriction.toUpperCase() == \"GT\"\r\n          )\r\n        : this.configuration.component.find(\r\n            (x) =>\r\n              x.numericPair == component.numericPair &&\r\n              x.restriction.toUpperCase() == \"GTE\"\r\n          );\r\n    let MaxComponent =\r\n      this.configuration.component.find(\r\n        (x) =>\r\n          x.numericPair == component.numericPair &&\r\n          x.restriction.toUpperCase() == \"LTE\"\r\n      ) == undefined\r\n        ? this.configuration.component.find(\r\n            (x) =>\r\n              x.numericPair == component.numericPair &&\r\n              x.restriction.toUpperCase() == \"LT\"\r\n          )\r\n        : this.configuration.component.find(\r\n            (x) =>\r\n              x.numericPair == component.numericPair &&\r\n              x.restriction.toUpperCase() == \"LTE\"\r\n          );\r\n    const _min = parseFloat(\r\n      myform.nativeElement[MinComponent.id].value.replace(/,/g, \"\")\r\n    );\r\n    const _max = parseFloat(\r\n      myform.nativeElement[MaxComponent.id].value.replace(/,/g, \"\")\r\n    );\r\n\r\n    if (_min > _max) {\r\n      this.toastr.warning(\r\n        MinComponent.label + \" must be less than \" + MaxComponent.label\r\n      );\r\n      return false;\r\n    }\r\n\r\n    return true;\r\n  }\r\n\r\n  async search(\r\n    apiUrl: string,\r\n    pageNo: number,\r\n    rowPerPage: number,\r\n    orderBy: any,\r\n    isClickSearch: boolean,\r\n    addCrit: CriteriaObj[] = new Array(),\r\n    IsExportExcel: boolean = false,\r\n    extFile: string = \"\",\r\n    isAddToTemp: boolean = false,\r\n    addToTempCrit: CriteriaObj[] = new Array()\r\n  ) {\r\n    let request = new RequestCriteriaObj();\r\n    let arrCrit = new Array();\r\n    let IsQueryIn = false;\r\n    let IsBreak = false;\r\n    let bodyList = new Array();\r\n    let headerList = new Array();\r\n    let fileName: string;\r\n    let bodyData = new Array();\r\n    let dataFile = new Array();\r\n    let additionalExportList = new Array();\r\n    let excludeExportList = new Array();\r\n\r\n    const mappedConfNameValue = {};\r\n    for (let [index, val] of this.configuration.component.entries()) {\r\n      let _name = val.name;\r\n      if (\r\n        val.type === \"datepicker\" ||\r\n        val.type === \"numeric\" ||\r\n        val.type === \"currency\"\r\n      )\r\n        _name += index;\r\n      mappedConfNameValue[_name] = {\r\n        value: this.form.controls[_name].value,\r\n      };\r\n    }\r\n\r\n    // Inject whereQuery for where criteria\r\n    if (\r\n      this.searchInput.whereValue != undefined &&\r\n      this.searchInput.whereValue.length != 0\r\n    ) {\r\n      this.configuration.querystring.whereQuery = new Array<any>();\r\n      for (let x = 0; x < this.searchInput.whereValue.length; x++) {\r\n        // read value based on search component value - if not found, will hardcoded\r\n        const _val = mappedConfNameValue[this.searchInput.whereValue[x].value]\r\n          ? mappedConfNameValue[this.searchInput.whereValue[x].value].value\r\n          : this.searchInput.whereValue[x].value;\r\n        // this.configuration.querystring.whereQuery.push(this.searchInput.whereValue[x].value);\r\n        this.configuration.querystring.whereQuery.push(_val);\r\n      }\r\n    }\r\n    if (\r\n      this.searchInput.fromValue != undefined &&\r\n      this.searchInput.fromValue.length != 0\r\n    ) {\r\n      this.configuration.querystring.fromQuery = new Array<any>();\r\n      for (let x = 0; x < this.searchInput.fromValue.length; x++) {\r\n        // read value based on search component value - if not found, will hardcoded\r\n        const _val = mappedConfNameValue[this.searchInput.fromValue[x].value]\r\n          ? mappedConfNameValue[this.searchInput.fromValue[x].value].value\r\n          : this.searchInput.fromValue[x].value;\r\n        // this.configuration.querystring.fromQuery.push(this.searchInput.fromValue[x].value);\r\n        this.configuration.querystring.fromQuery.push(_val);\r\n      }\r\n    }\r\n    request.pageNo = pageNo;\r\n    request.rowPerPage = rowPerPage;\r\n    request.orderBy = orderBy;\r\n    request.queryString = this.configuration.querystring;\r\n\r\n    let filtered = this.configuration.component.filter((item, i, arr) => {\r\n      if (item.datepickerPair === undefined || item.datepickerPair === \"\")\r\n        return;\r\n      return (\r\n        arr.findIndex((x) => x.datepickerPair === item.datepickerPair) === i\r\n      );\r\n    });\r\n    for (let i = 0; i < filtered.length; i++) {\r\n      if (filtered[i].type == \"datepicker\") {\r\n        if (!this.checkSubmitDate(filtered[i])) return;\r\n      }\r\n    }\r\n\r\n    let filteredNumeric = this.configuration.component.filter(\r\n      (item, i, arr) => {\r\n        if (item.numericPair === undefined || item.numericPair === \"\") return;\r\n        return arr.findIndex((x) => x.numericPair === item.numericPair) === i;\r\n      }\r\n    );\r\n    for (let i = 0; i < filteredNumeric.length; i++) {\r\n      0;\r\n      if (\r\n        filteredNumeric[i].type == \"numeric\" ||\r\n        filteredNumeric[i].type == \"currency\"\r\n      ) {\r\n        if (!this.checkNumericPair(filteredNumeric[i], this.myForm)) return;\r\n      }\r\n    }\r\n\r\n    let formSeq: number = -1;\r\n    for (let i = 0; i < this.countForm; i++) {\r\n      let critObj = new CriteriaObj();\r\n      if (this.configuration.component[i].type == \"blank\") continue;\r\n      if (this.configuration.component[i].type == \"dropdownSearch\") {\r\n        formSeq += 3;\r\n      } else {\r\n        formSeq++;\r\n      }\r\n      if (this.configuration.component[i].excludeFromCrit) continue;\r\n      let component = this.myForm.nativeElement[formSeq];\r\n      let _componentValue = `${\r\n        this.form.controls[this.configuration.component[i].name]?.value ?? \"\"\r\n      }`;\r\n      if (this.configuration.component[i].type === \"lookup\") {\r\n        _componentValue = `${\r\n          this.form.controls[\r\n            \"lookup_id_\" + this.configuration.component[i].name\r\n          ].value ?? \"\"\r\n        }`;\r\n      } else if (\r\n        this.configuration.component[i].type === \"datepicker\" ||\r\n        this.configuration.component[i].type === \"numeric\" ||\r\n        this.configuration.component[i].type === \"currency\"\r\n      ) {\r\n        _componentValue = `${\r\n          this.form.controls[this.configuration.component[i].name + i].value ??\r\n          \"\"\r\n        }`;\r\n      }\r\n\r\n      critObj.DataType = component.getAttribute(\"data-type\");\r\n      if (!critObj.DataType) critObj.DataType = \"\";\r\n      //Ini khusus kalau dari Drop Down\r\n      if (\r\n        component.getAttribute(\"query-in\") != null &&\r\n        component.getAttribute(\"query-in\") == \"true\"\r\n      ) {\r\n        IsQueryIn = true;\r\n      } else {\r\n        IsQueryIn = false;\r\n      }\r\n\r\n      if (component.nodeName == \"SELECT\") {\r\n        let ddl = component.options;\r\n        if (\r\n          ddl.selectedIndex === -1 &&\r\n          ddl.length === 1 &&\r\n          _componentValue == \"\"\r\n        ) {\r\n          _componentValue = \"SELECT_TEMP\";\r\n        }\r\n      }\r\n\r\n      if (_componentValue != \"\") {\r\n        if (component.nodeName == \"SELECT\") {\r\n          let ddl = component.options;\r\n          if (ddl.selectedIndex === -1 && ddl.length === 1) {\r\n            ddl.selectedIndex = 0;\r\n          }\r\n          let text = ddl[ddl.selectedIndex].value.trim();\r\n          if (text == \"one\") {\r\n            IsBreak = true;\r\n            let label = component.getAttribute(\"label\");\r\n            this.toastr.warning(\"Please select \" + label);\r\n            break;\r\n          }\r\n\r\n          if (\r\n            component.getAttribute(\"data-crit-datatable\") != \"\" &&\r\n            component.getAttribute(\"data-crit-datatable\") != null\r\n          ) {\r\n            critObj.isCriteriaDataTable = component.getAttribute(\r\n              \"data-crit-datatable\"\r\n            );\r\n          }\r\n\r\n          if (\r\n            this.configuration.component[i].type == \"taskDefinitionKey\" ||\r\n            this.configuration.component[i].type == \"processKey\"\r\n          ) {\r\n            if (ddl.length === 1) {\r\n              this.SetProcessKey(\r\n                i,\r\n                this.configuration.component[i].wfKeyFilter\r\n              );\r\n            }\r\n            continue;\r\n          }\r\n\r\n          if (this.configuration.component[i].type == \"claim\") {\r\n            critObj.propName = component.getAttribute(\"data-name\");\r\n            critObj.restriction = text;\r\n            critObj.value = null;\r\n            if (!isAddToTemp) {\r\n              arrCrit.push(critObj);\r\n            }\r\n          } else {\r\n            if (text != \"all\" && text != \"one\" && text != \"others\") {\r\n              //Kalau Dari Dropdown udah pasti pake Eq\r\n              critObj.restriction = AdInsConstant.RestrictionEq;\r\n              if (component.name != \"\") {\r\n                critObj.propName = component.name;\r\n              } else {\r\n                critObj.propName = component.getAttribute(\"data-name\");\r\n              }\r\n              critObj.value = text;\r\n\r\n              const restriction = component.getAttribute(\"data-restriction\");\r\n              if (restriction != \"\" && restriction != null) {\r\n                // override restriction\r\n                critObj.restriction = restriction;\r\n\r\n                if (restriction == AdInsConstant.RestrictionLike) {\r\n                  critObj.value = `%${text}%`;\r\n                }\r\n              }\r\n\r\n              if (!isAddToTemp) {\r\n                arrCrit.push(critObj);\r\n              }\r\n            } else if (\r\n              text == \"all\" &&\r\n              IsQueryIn &&\r\n              component.options.length != 0\r\n            ) {\r\n              let ddlList = new Array();\r\n              for (let x = 0; x < component.options.length; x++) {\r\n                if (x != 0) {\r\n                  ddlList.push(component.options[x].value);\r\n                }\r\n              }\r\n              if (ddlList.length != 0) {\r\n                critObj.restriction = AdInsConstant.RestrictionIn;\r\n                if (component.name != \"\") {\r\n                  critObj.propName = component.name;\r\n                } else {\r\n                  critObj.propName = component.getAttribute(\"data-name\");\r\n                }\r\n                critObj.listValue = ddlList;\r\n                if (!isAddToTemp) {\r\n                  arrCrit.push(critObj);\r\n                }\r\n              }\r\n            } else if (text == \"others\" && component.options.length != 0) {\r\n              let ddlList = new Array();\r\n              for (let x = 0; x < component.options.length; x++) {\r\n                if (x != 0 && x != component.options.length - 1) {\r\n                  ddlList.push(component.options[x].value);\r\n                }\r\n              }\r\n              if (ddlList.length != 0) {\r\n                critObj.restriction = AdInsConstant.RestrictionNotIn;\r\n                if (component.name != \"\") {\r\n                  critObj.propName = component.name;\r\n                } else {\r\n                  critObj.propName = component.getAttribute(\"data-name\");\r\n                }\r\n                critObj.listValue = ddlList;\r\n                if (!isAddToTemp) {\r\n                  arrCrit.push(critObj);\r\n                }\r\n              }\r\n            }\r\n          }\r\n        } else {\r\n          const compDataType = component.getAttribute(\"data-type\");\r\n          if (\r\n            compDataType === \"lookup\" ||\r\n            (compDataType === \"date\" && this.useNewDatepicker)\r\n          ) {\r\n            formSeq++;\r\n          }\r\n          //Kalau ada Percent maka yang dipake nnti adalah Restrictions Like\r\n          if (component.name != \"\") {\r\n            critObj.propName = component.name;\r\n          } else {\r\n            critObj.propName = component.getAttribute(\"data-name\");\r\n          }\r\n\r\n          if (\r\n            this.configuration.component[i].type === \"datepicker\" ||\r\n            this.configuration.component[i].type === \"numeric\" ||\r\n            this.configuration.component[i].type === \"currency\"\r\n          ) {\r\n            critObj.propName = component.getAttribute(\"data-name\");\r\n          }\r\n\r\n          critObj.value = _componentValue;\r\n\r\n          // normalize data type from lookup to text;\r\n          if (compDataType === \"lookup\") critObj.DataType = \"text\";\r\n\r\n          if (_componentValue.includes(\"%\")) {\r\n            critObj.restriction = AdInsConstant.RestrictionLike;\r\n            _componentValue =\r\n              this.removeTrailingBackslashesAfterPercent(_componentValue);\r\n            critObj.value = _componentValue;\r\n          }\r\n          //kalau componentnya Date, restrictionsnya lgsg ambil dari property JSONnya\r\n          else if (\r\n            component.getAttribute(\"data-restriction\") != \"\" &&\r\n            component.getAttribute(\"data-restriction\") != null\r\n          ) {\r\n            critObj.restriction = component.getAttribute(\"data-restriction\");\r\n            if (component.getAttribute(\"data-type\") == \"numeric\") {\r\n              critObj.value = parseFloat(\r\n                _componentValue.replace(/,/g, \"\")\r\n              ).toString();\r\n            }\r\n            if (critObj.restriction.toUpperCase() == \"LIKE\") {\r\n              critObj.value = \"%\" + _componentValue.trim() + \"%\";\r\n              critObj.restriction = AdInsConstant.RestrictionLike;\r\n            }\r\n          } else {\r\n            critObj.restriction = AdInsConstant.RestrictionEq;\r\n          }\r\n          if (\r\n            component.getAttribute(\"data-crit-datatable\") != \"\" &&\r\n            component.getAttribute(\"data-crit-datatable\") != null\r\n          ) {\r\n            critObj.isCriteriaDataTable = component.getAttribute(\r\n              \"data-crit-datatable\"\r\n            );\r\n          }\r\n\r\n          let skipPushToCrit = false;\r\n          if (this.configuration.component[i].type === \"time\") {\r\n            // check is standalone or not\r\n            const useTimePair = this.configuration.component[i].useTimePair;\r\n            if (useTimePair) {\r\n              skipPushToCrit = true;\r\n              const indexPair = arrCrit.findIndex(\r\n                (x) =>\r\n                  x.propName === this.configuration.component[i].timePair &&\r\n                  x.restriction === this.configuration.component[i].restriction\r\n              );\r\n              if (indexPair > -1) {\r\n                const _value = new Date(arrCrit[indexPair].value);\r\n\r\n                // Extract the date components\r\n                const year = _value.getUTCFullYear();\r\n                const month = _value.getUTCMonth();\r\n                const day = _value.getUTCDate();\r\n\r\n                // Extract time components\r\n                const [hours, minutes] = _componentValue.split(\":\").map(Number);\r\n\r\n                const result = new Date(\r\n                  Date.UTC(year, month, day, hours, minutes, 0)\r\n                )\r\n                  .toISOString()\r\n                  .replace(\"T\", \" \")\r\n                  .replace(\"Z\", \"\");\r\n                arrCrit[indexPair].value = result;\r\n              }\r\n            }\r\n          }\r\n\r\n          if (!isAddToTemp && !skipPushToCrit) {\r\n            arrCrit.push(critObj);\r\n          }\r\n        }\r\n      } else {\r\n        const compDataType = component.getAttribute(\"data-type\");\r\n        if (\r\n          compDataType === \"lookup\" ||\r\n          (compDataType === \"date\" && this.useNewDatepicker)\r\n        ) {\r\n          formSeq++;\r\n        }\r\n      }\r\n    }\r\n\r\n    if (IsBreak) {\r\n      return;\r\n    }\r\n\r\n    if (addCrit != null && addCrit != undefined) {\r\n      if (addCrit.length != 0) {\r\n        for (let i = 0; i < addCrit.length; i++) {\r\n          arrCrit.push(addCrit[i]);\r\n        }\r\n      } else if (\r\n        this.searchInput.addCritInput != null ||\r\n        this.searchInput.addCritInput != undefined\r\n      ) {\r\n        for (let i = 0; i < this.searchInput.addCritInput.length; i++) {\r\n          arrCrit.push(this.searchInput.addCritInput[i]);\r\n        }\r\n      }\r\n    } else if (\r\n      this.searchInput.addCritInput != null ||\r\n      this.searchInput.addCritInput != undefined\r\n    ) {\r\n      for (let i = 0; i < this.searchInput.addCritInput.length; i++) {\r\n        arrCrit.push(this.searchInput.addCritInput[i]);\r\n      }\r\n    }\r\n\r\n    if (isClickSearch) {\r\n      this.persistCrit = arrCrit;\r\n    }\r\n    request.criteria = this.persistCrit;\r\n\r\n    if (isAddToTemp) {\r\n      this.persistAddToTempCrit = addToTempCrit;\r\n    }\r\n\r\n    if (this.persistAddToTempCrit !== undefined) {\r\n      request.criteria = request.criteria.concat(this.persistAddToTempCrit);\r\n    }\r\n\r\n    // filter duplicate data in array\r\n    request.criteria = this.filterDuplicateData(request.criteria);\r\n\r\n    // filter empty value in listValue\r\n    request.criteria = this.filterListValueEmpty(request.criteria);\r\n\r\n    request.integrationObj = null;\r\n    if (this.searchInput.isJoinExAPI) {\r\n      request.integrationObj = this.searchInput.integrationObj;\r\n    }\r\n\r\n    this.isSearch = true;\r\n\r\n    if (\r\n      this.searchInput.dataInput !== undefined &&\r\n      Object.keys(this.searchInput.dataInput).length !== 0\r\n    ) {\r\n      bodyList = this.searchInput.dataInput.bodyList;\r\n      fileName = this.searchInput.dataInput.title;\r\n      headerList = this.searchInput.dataInput.headerList;\r\n      additionalExportList = this.searchInput.dataInput.additionalExportList;\r\n      excludeExportList = this.searchInput.dataInput.excludeExportList;\r\n    } else {\r\n      await this.http\r\n        .get(this.searchInput._url)\r\n        .toPromise()\r\n        .then((data: any) => {\r\n          bodyList = data.bodyList;\r\n          fileName = data.title;\r\n          headerList = data.headerList;\r\n          additionalExportList = data.additionalExportList;\r\n          excludeExportList = data.excludeExportList;\r\n        });\r\n    }\r\n\r\n    this.http.post(apiUrl, request).subscribe((response) => {\r\n      if (IsExportExcel) {\r\n        bodyData = response[\"Data\"];\r\n        [headerList, bodyList] = this.checkAdditionalExportList(\r\n          headerList,\r\n          bodyList,\r\n          additionalExportList\r\n        );\r\n        [headerList, bodyList] = this.checkExcludeExportList(\r\n          headerList,\r\n          bodyList,\r\n          excludeExportList\r\n        );\r\n        dataFile = this.mapDataFile(bodyList, bodyData, headerList);\r\n        if (extFile === EXPORT_DATA_TYPES.excel) {\r\n          this.exportFileService.exportFileAsExcel(dataFile, fileName);\r\n        }\r\n        if (extFile === EXPORT_DATA_TYPES.json) {\r\n          this.exportFileService.exportFileAsJson(dataFile, fileName);\r\n        }\r\n        if (extFile === EXPORT_DATA_TYPES.csv) {\r\n          this.exportFileService.exportFileAsCsv(dataFile, fileName);\r\n        }\r\n\r\n        const $sequence = Math.round(response[\"Count\"] / rowPerPage);\r\n        if ($sequence > 1 && $sequence > pageNo) {\r\n          pageNo = pageNo + 1;\r\n          setTimeout(\r\n            () =>\r\n              this.search(\r\n                apiUrl,\r\n                pageNo,\r\n                rowPerPage,\r\n                orderBy,\r\n                true,\r\n                addCrit,\r\n                IsExportExcel,\r\n                extFile\r\n              ),\r\n            50\r\n          );\r\n        }\r\n        return;\r\n      }\r\n\r\n      //handle if response data is null\r\n      if (response[\"Data\"] === null) {\r\n        response[\"Data\"] = [];\r\n      }\r\n      let qryPaging = {\r\n        response: response,\r\n        pageNow: pageNo,\r\n      };\r\n      console.log(qryPaging);\r\n      this.result.emit(qryPaging);\r\n      this.reqGetAllData.emit(request);\r\n      return response;\r\n    });\r\n  }\r\n\r\n  private filterDuplicateData(data) {\r\n    return data.filter((value, index) => {\r\n      const _value = JSON.stringify(value);\r\n      return (\r\n        index ===\r\n        data.findIndex((obj) => {\r\n          return JSON.stringify(obj) === _value;\r\n        })\r\n      );\r\n    });\r\n  }\r\n\r\n  private filterListValueEmpty(data) {\r\n    return data.filter((value) => {\r\n      if (value.listValue === undefined) return value;\r\n      if (value.listValue.length === 0) return;\r\n      return value;\r\n    });\r\n  }\r\n\r\n  removeTrailingBackslashesAfterPercent(str) {\r\n    if (typeof str !== \"string\" || str?.length === 0) {\r\n      return str;\r\n    }\r\n    return str.replace(/%(\\\\+)$/, \"%\");\r\n  }\r\n\r\n  checkValueGteLte(component) {\r\n    //cek yg pakai restriction gte/lte/gt/lt\r\n    let MinComponent = this.configuration.component.find(\r\n      (x) => x.name == component.name && x.restriction.toUpperCase() == \"GTE\"\r\n    );\r\n    if (!MinComponent) {\r\n      MinComponent = this.configuration.component.find(\r\n        (x) => x.name == component.name && x.restriction.toUpperCase() == \"GT\"\r\n      );\r\n    }\r\n\r\n    let MaxComponent = this.configuration.component.find(\r\n      (x) => x.name == component.name && x.restriction.toUpperCase() == \"LTE\"\r\n    );\r\n    if (!MaxComponent) {\r\n      MaxComponent = this.configuration.component.find(\r\n        (x) => x.name == component.name && x.restriction.toUpperCase() == \"LT\"\r\n      );\r\n    }\r\n\r\n    if (MinComponent && MaxComponent) {\r\n      let minValue = this.myForm.nativeElement[MinComponent.id].valueAsNumber;\r\n      let maxValue = this.myForm.nativeElement[MaxComponent.id].valueAsNumber;\r\n      if (minValue > maxValue) {\r\n        this.toastr.warning(\r\n          MinComponent.label + \" must be less than \" + MaxComponent.label\r\n        );\r\n        return false;\r\n      }\r\n    }\r\n\r\n    return true;\r\n  }\r\n\r\n  mapDataFile(bodyListData, bodyDataArr, headerListData) {\r\n    let dataExcel = new Array();\r\n    let bodyDataTemp = new Array();\r\n    let headerDataTemp = new Array();\r\n\r\n    for (let i = 0; i < bodyListData.length; i++) {\r\n      const [isNeedToPush, bodyData, headerData] = this.checkNeedDataToExport(\r\n        bodyListData,\r\n        headerListData,\r\n        i\r\n      );\r\n      if (isNeedToPush) {\r\n        bodyDataTemp.push(bodyData);\r\n        headerDataTemp.push(headerData);\r\n      }\r\n    }\r\n\r\n    for (let i = 0; i < bodyDataArr.length; i++) {\r\n      let finalData = {};\r\n      for (let j = 0; j < bodyDataTemp.length; j++) {\r\n        const value = bodyDataArr[i][bodyDataTemp[j]];\r\n        if (value !== null && value !== undefined) {\r\n          if (typeof value === \"boolean\") {\r\n            finalData[headerDataTemp[j]] = value ? \"YES\" : \"NO\";\r\n          } else {\r\n            finalData[headerDataTemp[j]] = value;\r\n          }\r\n        }\r\n      }\r\n      dataExcel.push(finalData);\r\n    }\r\n    return dataExcel;\r\n  }\r\n\r\n  checkAdditionalExportList(\r\n    headerListData,\r\n    bodyListData,\r\n    additionalExportList\r\n  ) {\r\n    if (additionalExportList == undefined)\r\n      return [headerListData, bodyListData];\r\n    if (additionalExportList.length == 0) return [headerListData, bodyListData];\r\n\r\n    const _headerList = [...headerListData];\r\n    const _bodyList = [...bodyListData];\r\n\r\n    for (let i = 0; i < additionalExportList.length; i++) {\r\n      _headerList.push({ label: additionalExportList[i].label });\r\n      _bodyList.push({ property: additionalExportList[i].property });\r\n    }\r\n\r\n    return [_headerList, _bodyList];\r\n  }\r\n\r\n  checkExcludeExportList(headerListData, bodyListData, excludeExportList) {\r\n    if (excludeExportList == undefined) return [headerListData, bodyListData];\r\n    if (excludeExportList.length == 0) return [headerListData, bodyListData];\r\n\r\n    const _headerList = [...headerListData];\r\n    const _bodyList = [...bodyListData];\r\n\r\n    for (let i = 0; i < excludeExportList.length; i++) {\r\n      let index = _bodyList.findIndex(\r\n        (element) => element.property == excludeExportList[i].property\r\n      );\r\n      if (index != -1) {\r\n        _headerList.splice(index, 1);\r\n        _bodyList.splice(index, 1);\r\n      }\r\n    }\r\n\r\n    return [_headerList, _bodyList];\r\n  }\r\n\r\n  private checkNeedDataToExport(\r\n    bodyListData: Array<any>,\r\n    headerListData: Array<any>,\r\n    idx: number\r\n  ) {\r\n    // add json checker for data to export here\r\n    if (bodyListData[idx][\"type\"] != \"action\") {\r\n      return [\r\n        true,\r\n        bodyListData[idx][\"property\"],\r\n        headerListData[idx][\"label\"],\r\n      ];\r\n    }\r\n\r\n    const actions: any[] = bodyListData[idx][\"action\"];\r\n    if (\r\n      bodyListData[idx][\"type\"] == \"action\" &&\r\n      actions[0][\"type\"] == \"switch\" &&\r\n      Boolean(actions[0][\"case\"][0][\"result\"][\"property\"])\r\n    ) {\r\n      return [\r\n        true,\r\n        bodyListData[idx][\"action\"][0][\"case\"][0][\"result\"][\"property\"],\r\n        headerListData[idx][\"label\"],\r\n      ];\r\n    }\r\n    return [false, [], []];\r\n  }\r\n\r\n  GenerateReport(enjiForm: any) {\r\n    this.form.markAllAsTouched();\r\n    if (!this.form.valid) return;\r\n    const _exportType = this.form.get(\"ExportType\").value;\r\n    const _rptExecType = this.form.get(\"RptExecType\").value;\r\n    this.genRpt.emit({\r\n      ExportType: _exportType,\r\n      RptExecType: _rptExecType,\r\n      ElRef: this.myForm,\r\n      formRaw: this.form.getRawValue(),\r\n    });\r\n  }\r\n\r\n  lessThanFour(): boolean {\r\n    if (this.countForm > 3) {\r\n      return false;\r\n    } else {\r\n      return true;\r\n    }\r\n  }\r\n\r\n  resolveObject(obj: any, url: string, crit: RequestCriteriaObj = null) {\r\n    const val = this.postJSON(url, crit);\r\n    val.subscribe((tempData) => {\r\n      if (\r\n        obj.customObjName == null ||\r\n        obj.customObjName == undefined ||\r\n        obj.customObjName == \"\"\r\n      ) {\r\n        obj.customObjName = \"ReturnObject\";\r\n      }\r\n\r\n      if (\r\n        obj.customKeyName == null ||\r\n        obj.customKeyName == undefined ||\r\n        obj.customKeyName == \"\"\r\n      ) {\r\n        obj.customKeyName = \"Key\";\r\n      }\r\n\r\n      if (\r\n        obj.customValueName == null ||\r\n        obj.customValueName == undefined ||\r\n        obj.customValueName == \"\"\r\n      ) {\r\n        obj.customValueName = \"Value\";\r\n      }\r\n      const _data = [];\r\n      for (let i = 0; i < tempData[obj.customObjName].length; i++) {\r\n        _data.push({\r\n          Key: tempData[obj.customObjName][i][obj.customKeyName],\r\n          Value: tempData[obj.customObjName][i][obj.customValueName],\r\n        });\r\n      }\r\n\r\n      obj.itemsUrl = new Array();\r\n      const userAccess = this.getUserAccess();\r\n\r\n      if (\r\n        obj.type == \"officeRoleCodes\" &&\r\n        obj.isLockHo &&\r\n        userAccess[\"MrOfficeTypeCode\"] == \"HO\"\r\n      ) {\r\n        let keyValueObj = {\r\n          Key: userAccess[\"OfficeCode\"],\r\n          Value: userAccess[\"OfficeName\"],\r\n        };\r\n        obj.itemsUrl.push(keyValueObj);\r\n      } else {\r\n        obj.itemsUrl = _data;\r\n      }\r\n\r\n      if (obj.exclude != undefined && obj.exclude != \"\") {\r\n        obj.itemsUrl = obj.itemsUrl.filter(\r\n          (value) => !obj.exclude.includes(value.Key)\r\n        );\r\n      }\r\n\r\n      if (obj.itemsUrl.length == 1) {\r\n        obj.value = obj.itemsUrl[0].Key;\r\n      }\r\n\r\n      if (obj.type == \"dropdownSearch\" && obj.itemsUrl.length == 1) {\r\n        obj.value = obj.itemsUrl[0].Key;\r\n        obj.descr = obj.itemsUrl[0].Value;\r\n      }\r\n      if (obj.affectedFilter && obj.itemsUrl.length == 1) {\r\n        this.onChangeEvent(obj.itemsUrl[0].Key, obj);\r\n      }\r\n      this.updateKeyValDict({\r\n        key: obj.name,\r\n        value: obj.value,\r\n      });\r\n\r\n      if (obj.useFirstValue && obj.itemsUrl.length > 1) {\r\n        this.form.controls[obj.name].setValue(obj.itemsUrl[0].Key);\r\n      }\r\n    });\r\n  }\r\n\r\n  transformToDecimal(element: any) {\r\n    element.target.value = parseFloat(\r\n      element.target.value.toString().replace(/,/g, \"\")\r\n    );\r\n  }\r\n\r\n  exportAsFile(extFile: string): void {\r\n    this.searchClick(true, extFile);\r\n  }\r\n\r\n  onChangeEvent(optValue, afFilter) {\r\n    let jsonComp = this.configuration.component;\r\n    this.updateKeyValDict({ key: afFilter.name, value: afFilter.value });\r\n\r\n    for (let i = 0; i < afFilter.affectedFilter.length; i++) {\r\n      for (let j = 0; j < jsonComp.length; j++) {\r\n        if (jsonComp[j].name == afFilter.affectedFilter[i]) {\r\n          let request = new RequestCriteriaObj();\r\n          let arrayCrit = new Array();\r\n\r\n          if (optValue != \"all\" && optValue != \"one\") {\r\n            const _critPropNameArr = jsonComp[j].criteriaPropName.split(\";\");\r\n            if (_critPropNameArr.length > 1) {\r\n              const _critPropValueArr =\r\n                jsonComp[j].criteriaPropValue.split(\";\");\r\n              for (let [index, item] of _critPropNameArr.entries()) {\r\n                const critObj = new CriteriaObj();\r\n                critObj.DataType = afFilter.datatype;\r\n                if (item === afFilter.filterPropName) {\r\n                  request[item] = optValue;\r\n                  critObj.value = optValue;\r\n                  this.valueDict[item] = optValue;\r\n                } else if (item.includes(\"dicts.\")) {\r\n                  this.getObjData(\r\n                    \"dicts\",\r\n                    item,\r\n                    afFilter,\r\n                    request,\r\n                    optValue,\r\n                    critObj,\r\n                    _critPropValueArr,\r\n                    index\r\n                  );\r\n                } else if (item.includes(\"lookup.\")) {\r\n                  this.getObjData(\r\n                    \"lookup\",\r\n                    item,\r\n                    afFilter,\r\n                    request,\r\n                    optValue,\r\n                    critObj,\r\n                    _critPropValueArr,\r\n                    index\r\n                  );\r\n                } else if (this.valueDict[item]) {\r\n                  request[item] = this.valueDict[item];\r\n                  critObj.value = this.valueDict[item];\r\n                } else {\r\n                  request[item] = _critPropValueArr[index];\r\n                  critObj.value = _critPropValueArr[index];\r\n                }\r\n                critObj.propName = item;\r\n                critObj.restriction = AdInsConstant.RestrictionEq;\r\n                arrayCrit.push(critObj);\r\n              }\r\n            } else {\r\n              const critObj = new CriteriaObj();\r\n              critObj.DataType = afFilter.datatype;\r\n              if (\r\n                afFilter.filterPropName != undefined ||\r\n                afFilter.filterPropName != \"\"\r\n              ) {\r\n                request[afFilter.filterPropName] = optValue;\r\n                critObj.propName = afFilter.filterPropName;\r\n                this.valueDict[afFilter.filterPropName] = optValue;\r\n              } else {\r\n                critObj.propName = afFilter.name;\r\n                request[afFilter.name] = optValue;\r\n              }\r\n              critObj.value = optValue;\r\n              critObj.restriction = AdInsConstant.RestrictionEq;\r\n              arrayCrit.push(critObj);\r\n            }\r\n          }\r\n          if (optValue == \"all\" || optValue == \"others\") {\r\n            let critObj = new CriteriaObj();\r\n            arrayCrit.push(critObj);\r\n            jsonComp[j].value = optValue;\r\n          }\r\n          request.criteria = arrayCrit;\r\n          if (jsonComp[j].path != undefined && jsonComp[j].path != \"\") {\r\n            if (\r\n              this.searchInput.listEnvironments != undefined &&\r\n              this.searchInput.listEnvironments.length != 0\r\n            ) {\r\n              for (\r\n                let y = 0;\r\n                y < this.searchInput.listEnvironments.length;\r\n                y++\r\n              ) {\r\n                if (\r\n                  jsonComp[j].environment ==\r\n                  this.searchInput.listEnvironments[y].environment\r\n                ) {\r\n                  jsonComp[j].fullpath =\r\n                    this.searchInput.listEnvironments[y].url + jsonComp[j].path;\r\n                  break;\r\n                }\r\n              }\r\n            } else {\r\n              jsonComp[j].fullpath = jsonComp[j].url;\r\n            }\r\n          } else {\r\n            jsonComp[j].fullpath = jsonComp[j].url;\r\n          }\r\n          this.resolveObject(jsonComp[j], jsonComp[j].fullpath, request);\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n  private getObjData(\r\n    type: \"lookup\" | \"dicts\",\r\n    item: any,\r\n    afFilter: any,\r\n    request: RequestCriteriaObj,\r\n    optValue: any,\r\n    critObj: CriteriaObj,\r\n    _critPropValueArr: any,\r\n    index: any\r\n  ) {\r\n    let _objDicts = this.valueDict;\r\n    if (type === \"lookup\") {\r\n      _objDicts = this.lookupDict;\r\n    }\r\n    const _item = item.split(\".\");\r\n    if (_item[1] === afFilter.filterPropName) {\r\n      request[_item[1]] = optValue;\r\n      critObj.value = optValue;\r\n      _objDicts[_item[1]] = optValue;\r\n    } else if (_objDicts[_item[1]]) {\r\n      request[_item[1]] = _objDicts[_item[1]];\r\n      critObj.value = _objDicts[_item[1]];\r\n    } else {\r\n      request[_item[1]] = _critPropValueArr[index];\r\n      critObj.value = _critPropValueArr[index];\r\n    }\r\n  }\r\n\r\n  SetProcessKey(idx: number, wfKeyFilter: string) {\r\n    let component = this.myForm.nativeElement[idx];\r\n    let ddl = component.options;\r\n    let text: string = ddl[ddl.selectedIndex].value.trim();\r\n    let listValue = text.split(\";\");\r\n    let listWfKey = wfKeyFilter.split(\";\");\r\n\r\n    for (let i = 0; i < listValue.length; i++) {\r\n      this.searchInput.integrationObj.requestObj[listWfKey[i]] = listValue[i];\r\n    }\r\n  }\r\n\r\n  switchCase(condList) {\r\n    let condition = false;\r\n\r\n    for (let i = 0; i < condList.conditions.length; i++) {\r\n      let idx = this.searchInput.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) {\r\n          if (\r\n            this.searchInput.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          let username = localStorage.getItem(\"Username\");\r\n          if (this.searchInput.switchValue[idx].value == username) {\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.searchInput.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          let username = localStorage.getItem(\"Username\");\r\n          if (this.searchInput.switchValue[idx].value != username) {\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) {\r\n          if (\r\n            this.searchInput.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          let username = localStorage.getItem(\"Username\");\r\n          if (this.searchInput.switchValue[idx].value > username) {\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) {\r\n          if (\r\n            this.searchInput.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          let username = localStorage.getItem(\"Username\");\r\n          if (this.searchInput.switchValue[idx].value >= username) {\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) {\r\n          if (\r\n            this.searchInput.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          let username = localStorage.getItem(\"Username\");\r\n          if (this.searchInput.switchValue[idx].value < username) {\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) {\r\n          if (\r\n            this.searchInput.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          let username = localStorage.getItem(\"Username\");\r\n          if (this.searchInput.switchValue[idx].value <= 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    return condition;\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    let chipperKeyArr = CryptoJS.enc.Utf8.parse(chipperKey);\r\n    let iv = CryptoJS.lib.WordArray.create([0x00, 0x00, 0x00, 0x00]);\r\n    let decrypted = CryptoJS.AES.decrypt(chipperText, chipperKeyArr, {\r\n      iv: iv,\r\n    });\r\n    let plainText = decrypted.toString(CryptoJS.enc.Utf8);\r\n    return plainText;\r\n  }\r\n\r\n  checkInputDate(component: any, index: number) {\r\n    let dateWrong = false;\r\n    const _componentValue = this.form.controls[component.name + index].value;\r\n    dateWrong = this.checkMinMaxValidation(component);\r\n    let udpatedValue = null;\r\n    if (this.isValidDate(_componentValue)) {\r\n      udpatedValue = formatDate(\r\n        new Date(_componentValue),\r\n        \"yyyy-MM-dd\",\r\n        \"en-US\"\r\n      );\r\n    }\r\n    this.updateKeyValDict({\r\n      key: component.name,\r\n      value: udpatedValue,\r\n    });\r\n\r\n    if (!dateWrong) {\r\n      this.updateMinMaxDateValue({\r\n        value: _componentValue,\r\n        datepickerPair: component.datepickerPair,\r\n        restriction: component.restriction,\r\n      });\r\n    }\r\n  }\r\n\r\n  private checkMinMaxValidation(component: any) {\r\n    let minDateVal;\r\n    let maxDateVal;\r\n    let label;\r\n    let errorMessage = new Array<string>();\r\n    let dateWrong = false;\r\n    const nativeEl = this.myForm.nativeElement.elements;\r\n    const _comp = this.configuration.component;\r\n\r\n    let minComponentIdx =\r\n      _comp.findIndex(\r\n        (x) => x.name == component.name && x.restriction.toUpperCase() == \"GTE\"\r\n      ) === -1\r\n        ? _comp.findIndex(\r\n            (x) =>\r\n              x.name == component.name && x.restriction.toUpperCase() == \"GT\"\r\n          )\r\n        : _comp.findIndex(\r\n            (x) =>\r\n              x.name == component.name && x.restriction.toUpperCase() == \"GTE\"\r\n          );\r\n    if (minComponentIdx !== -1) {\r\n      const _minComponentName = _comp[minComponentIdx].name + minComponentIdx;\r\n      minDateVal = this.isValidDate(nativeEl[_minComponentName].min)\r\n        ? new Date(nativeEl[_minComponentName].min)\r\n        : null;\r\n      label = _comp[minComponentIdx].label.split(\">\", 2);\r\n      if (minDateVal != null) {\r\n        if (_comp[minComponentIdx].restriction.toUpperCase() == \"GT\") {\r\n          minDateVal.setDate(minDateVal.getDate() - 1);\r\n          errorMessage.push(\" must be greater than \");\r\n        } else if (_comp[minComponentIdx].restriction.toUpperCase() == \"GTE\") {\r\n          errorMessage.push(\" must be greater than or equals to \");\r\n        }\r\n      }\r\n    }\r\n\r\n    let maxComponentIdx =\r\n      _comp.findIndex(\r\n        (x) => x.name == component.name && x.restriction.toUpperCase() == \"LTE\"\r\n      ) === -1\r\n        ? _comp.findIndex(\r\n            (x) =>\r\n              x.name == component.name && x.restriction.toUpperCase() == \"LT\"\r\n          )\r\n        : _comp.findIndex(\r\n            (x) =>\r\n              x.name == component.name && x.restriction.toUpperCase() == \"LTE\"\r\n          );\r\n    if (maxComponentIdx !== -1) {\r\n      const _maxComponentName = _comp[maxComponentIdx].name + maxComponentIdx;\r\n      maxDateVal = this.isValidDate(nativeEl[_maxComponentName].max)\r\n        ? new Date(nativeEl[_maxComponentName].max)\r\n        : null;\r\n      label = _comp[maxComponentIdx].label.split(\"<\", 2);\r\n      if (maxDateVal != null) {\r\n        if (_comp[maxComponentIdx].restriction.toUpperCase() == \"LT\") {\r\n          maxDateVal.setDate(maxDateVal.getDate() + 1);\r\n          errorMessage.push(\" must be less than \");\r\n        } else if (_comp[maxComponentIdx].restriction.toUpperCase() == \"LTE\") {\r\n          errorMessage.push(\" must be less than or equals to \");\r\n        }\r\n      }\r\n    }\r\n\r\n    if (\r\n      minDateVal != null &&\r\n      maxDateVal == null &&\r\n      new Date(\r\n        this.form.controls[_comp[minComponentIdx].name + minComponentIdx].value\r\n      ) < minDateVal\r\n    ) {\r\n      this.toastr.warning(\r\n        label[0] +\r\n          errorMessage[0] +\r\n          formatDate(minDateVal, \"dd MMMM yyyy\", \"en-US\") +\r\n          \".\"\r\n      );\r\n      dateWrong = true;\r\n    } else if (\r\n      maxDateVal != null &&\r\n      minDateVal == null &&\r\n      new Date(\r\n        this.form.controls[_comp[maxComponentIdx].name + maxComponentIdx].value\r\n      ) > maxDateVal\r\n    ) {\r\n      this.toastr.warning(\r\n        label[0] +\r\n          errorMessage[0] +\r\n          formatDate(maxDateVal, \"dd MMMM yyyy\", \"en-US\") +\r\n          \".\"\r\n      );\r\n      dateWrong = true;\r\n    } else if (minDateVal != null && maxDateVal != null) {\r\n      if (\r\n        new Date(\r\n          this.form.controls[\r\n            _comp[maxComponentIdx].name + maxComponentIdx\r\n          ].value\r\n        ) > maxDateVal ||\r\n        new Date(\r\n          this.form.controls[\r\n            _comp[minComponentIdx].name + minComponentIdx\r\n          ].value\r\n        ) < minDateVal\r\n      ) {\r\n        this.toastr.warning(\r\n          label[0] +\r\n            errorMessage[0] +\r\n            formatDate(minDateVal, \"dd MMMM yyyy\", \"en-US\") +\r\n            \" and\" +\r\n            errorMessage[1] +\r\n            formatDate(maxDateVal, \"dd MMMM yyyy\", \"en-US\") +\r\n            \".\"\r\n        );\r\n        dateWrong = true;\r\n      } else {\r\n        dateWrong = false;\r\n      }\r\n    } else {\r\n      dateWrong = false;\r\n    }\r\n    return dateWrong;\r\n  }\r\n\r\n  private updateMinMaxDateValue(opts: any) {\r\n    const { value, datepickerPair, restriction } = opts;\r\n\r\n    const _minComps = [];\r\n    const _maxComps = [];\r\n    for (const [index, item] of this.configuration.component.entries()) {\r\n      if (item.confMinDate === datepickerPair) {\r\n        _minComps.push({\r\n          comp: item,\r\n          index,\r\n        });\r\n      }\r\n\r\n      if (item.confMaxDate === datepickerPair) {\r\n        _maxComps.push({\r\n          comp: item,\r\n          index,\r\n        });\r\n      }\r\n    }\r\n\r\n    if (!datepickerPair) return;\r\n    for (const minComponent of _minComps) {\r\n      const _value = value;\r\n      const _restriction =\r\n        minComponent.comp.datepickerPair === datepickerPair ? restriction : \"\";\r\n      if (_value !== null && _value !== undefined) {\r\n        this.updateComponentDate(\r\n          minComponent,\r\n          \"confMaxDate\",\r\n          _value,\r\n          \"maxDate\",\r\n          datepickerPair\r\n        );\r\n        if (\r\n          _restriction.toLowerCase() !== \"gte\" &&\r\n          _restriction.toLowerCase() !== \"gt\"\r\n        ) {\r\n          this.updateComponentDate(\r\n            minComponent,\r\n            \"confMinDate\",\r\n            _value,\r\n            \"minDate\",\r\n            datepickerPair\r\n          );\r\n        }\r\n      }\r\n    }\r\n\r\n    for (const maxComponent of _maxComps) {\r\n      const _value = value;\r\n      const _restriction =\r\n        maxComponent.comp.datepickerPair === datepickerPair ? restriction : \"\";\r\n      if (_value !== null && _value !== undefined) {\r\n        this.updateComponentDate(\r\n          maxComponent,\r\n          \"confMinDate\",\r\n          _value,\r\n          \"minDate\",\r\n          datepickerPair\r\n        );\r\n        if (\r\n          _restriction.toLowerCase() !== \"lte\" &&\r\n          _restriction.toLowerCase() !== \"lt\"\r\n        ) {\r\n          this.updateComponentDate(\r\n            maxComponent,\r\n            \"confMaxDate\",\r\n            _value,\r\n            \"maxDate\",\r\n            datepickerPair\r\n          );\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n  // Helper function to update the min/max date and component value\r\n  updateComponentDate(\r\n    compObj: any,\r\n    confDateKey: string,\r\n    value: any,\r\n    flagKey: string,\r\n    datepickerPair: string\r\n  ) {\r\n    const { comp: component, index } = compObj;\r\n    if (component[confDateKey] === datepickerPair) {\r\n      if (value === \"\") {\r\n        component[flagKey] = \"\";\r\n      } else {\r\n        const _componentValue =\r\n          this.form.controls[component.name + index].value;\r\n        const _flag = this.datetimeService.CheckDateType(\r\n          component[\r\n            `addition${flagKey[0].toUpperCase()}${flagKey.slice(1)}Conf`\r\n          ] ?? \"bd\"\r\n        );\r\n        component[flagKey] = this.datetimeService.GetNewDate(\r\n          _flag,\r\n          component[\r\n            `addition${flagKey[0].toUpperCase()}${flagKey.slice(1)}Conf`\r\n          ],\r\n          value\r\n        );\r\n        if (\r\n          (flagKey === \"minDate\" && _componentValue < component.minDate) ||\r\n          (flagKey === \"maxDate\" && _componentValue > component.maxDate)\r\n        ) {\r\n          this.form.controls[component.name].setValue(\"\");\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n  selectedOption(item: { Key: string; Value: string }, crit: any) {\r\n    crit.descr = item.Value;\r\n    crit.isListHide = true;\r\n  }\r\n\r\n  OnFocusCurr(ev: any, value: any) {\r\n    if (value !== \"\" && value !== 0 && value !== \"0\") return;\r\n    ev.target.value = \"\";\r\n  }\r\n\r\n  ValidateDefaultValue(item: any) {\r\n    const itemValue = item.value;\r\n    if (itemValue !== \"\" && itemValue !== 0 && itemValue !== \"0\") return;\r\n    const _el = document.querySelector(`input[ng-reflect-name=\"${item.name}\"]`);\r\n    if (_el === null) return;\r\n\r\n    let val = this.generateCurrFocElValue(item);\r\n    _el[\"value\"] = val;\r\n  }\r\n\r\n  getLookup(event, component) {\r\n    const _eventObj = {\r\n      lookup: { ...event },\r\n    };\r\n    this.lookupDict = { ...event };\r\n    const _lookupObj = this.searchInput.dictLookupObj[component.name];\r\n    this.form.controls[\"lookup_id_\" + component.name].setValue(\r\n      _lookupObj.idSelect\r\n    );\r\n    if (!_lookupObj.isEvent) return;\r\n\r\n    const affectedCriteria = _lookupObj.affectedCriteria;\r\n    for (let item of affectedCriteria) {\r\n      const _updateLookupObj = this.searchInput.dictLookupObj[item.key];\r\n      _updateLookupObj.isReady = false;\r\n\r\n      let _value = _lookupObj.idSelect;\r\n      if (item.value != null && item.value != \"\") {\r\n        if (item.value.includes(\"lookup.\")) {\r\n          const _tempValue = item.value.split(\".\")[1];\r\n          _value = _eventObj.lookup[_tempValue] ?? _value;\r\n        }\r\n      }\r\n\r\n      if (!_updateLookupObj.originalAddCrit) {\r\n        _updateLookupObj.originalAddCrit = [..._updateLookupObj.addCritInput];\r\n      }\r\n      _updateLookupObj.addedAddCrit = [];\r\n      const _addedCrit = {\r\n        propName: item.propName,\r\n        restriction: item.restriction,\r\n        value: _value,\r\n        DataType: \"text\",\r\n        high: 0,\r\n        isCriteriaDataTable: false,\r\n        low: 0,\r\n      };\r\n      _updateLookupObj.addedAddCrit.push(_addedCrit);\r\n      _updateLookupObj.addCritInput = [\r\n        ..._updateLookupObj.originalAddCrit,\r\n        ..._updateLookupObj.addedAddCrit,\r\n      ];\r\n      this.searchInput.dictLookupObj[item.key] = JSON.parse(\r\n        JSON.stringify(_updateLookupObj)\r\n      );\r\n      setTimeout(\r\n        () => (this.searchInput.dictLookupObj[item.key].isReady = true),\r\n        10\r\n      );\r\n    }\r\n\r\n    const affectedFilter = _lookupObj?.affectedFilter ?? [];\r\n    if (affectedFilter.length > 0) {\r\n      let _value = _lookupObj.idSelect;\r\n      if (\r\n        _lookupObj.filterPropValue != null &&\r\n        _lookupObj.filterPropValue != \"\"\r\n      ) {\r\n        if (_lookupObj.filterPropValue.includes(\"lookup.\")) {\r\n          const _tempValue = _lookupObj.filterPropValue.split(\".\")[1];\r\n          _value = _eventObj.lookup[_tempValue] ?? _value;\r\n        }\r\n      }\r\n      this.onChangeEvent(_value, _lookupObj);\r\n    }\r\n  }\r\n\r\n  getInputtedValue(ev, component) {\r\n    this.form.controls[\"lookup_id_\" + component.name].setValue(ev);\r\n  }\r\n\r\n  isCollapsed: boolean = false;\r\n  onCollapse(ev) {\r\n    console.log(\"collapse\", ev);\r\n    this.isCollapsed = !!ev?.isCollapsed;\r\n  }\r\n\r\n  updateKeyValDict(ev) {\r\n    this.lookupKeyValDict[ev.key] = ev.value;\r\n    this.notifyUpdateKeyValDict.emit(this.lookupKeyValDict);\r\n    this.ucSearchFormService.setForm(this.form);\r\n  }\r\n\r\n  private generateCurrFocElValue(item: any) {\r\n    let val = \"0\";\r\n    const precision = item?.precision || 2;\r\n    for (let i = 0; i < precision; i++) {\r\n      if (i === 0) val += \".\";\r\n      val += \"0\";\r\n    }\r\n    return val;\r\n  }\r\n\r\n  private setValidatorNumber(\r\n    typeValidator: \"MIN\" | \"MAX\",\r\n    value: number | string,\r\n    control: AbstractControl\r\n  ) {\r\n    if (value === undefined || value === \"\" || value === null) return;\r\n    if (typeValidator === \"MIN\")\r\n      control.addValidators(Validators.min(value as number));\r\n    else if (typeValidator === \"MAX\")\r\n      control.addValidators(Validators.max(value as number));\r\n  }\r\n}\r\n","<span hidden attr.version=\"3.8.18-canary.0\"></span>\r\n<div>\r\n  <!-- Basic form layout section start -->\r\n  <lib-ucSubsection [hidden]=\"!searchInput.IsSubsection\" [id]=\"searchInput.searchId+'id'\"\r\n    [title]=\"configuration?.sectionTitle || 'Paging'\" [card]=\"searchInput.searchId\" [legacy]=\"false\"\r\n    (collapse)=\"onCollapse($event)\">\r\n  </lib-ucSubsection>\r\n\r\n  <!-- <div [id]=\"searchInput.searchId\"> -->\r\n  <!-- <div class=\"row text-start\">\r\n    <div class=\"col-md-12\">\r\n      <div > -->\r\n  <!-- <div class=\"ps-3 mb-2 mt-2\" *ngIf=\"configuration?.title != undefined && configuration?.title != ''\">\r\n          <h4 class=\"card-title ucSearch-title\" translate>{{configuration.title}}</h4>\r\n        </div> -->\r\n  <div class=\"card-body\" [id]=\"searchInput.searchId\" [(ngbCollapse)]=\"isCollapsed\">\r\n    <div class=\"px-3\">\r\n      <form class=\"form \" id=\"formSearch\" #formIdSearch [formGroup]=\"form\" #enjiForm=\"ngForm\"\r\n        (ngSubmit)=\"enjiForm.valid && searchClick()\">\r\n        <div class=\"form-body\">\r\n          <!-- <h4 class=\"form-section fw-bold\">\r\n                  <div (click)=\"changeState()\" class=\"btn no-padding cursor-pointer flip\">\r\n                    <i class=\"fa\" style=\"font-size: 15px; margin: 0px 0px 5px -15px;\"\r\n                      [ngClass]=\"isHidden ? 'fa-chevron-right' : 'fa-chevron-down'\"></i>\r\n                  </div>\r\n                  <span\r\n                    *ngIf=\"configuration?.sectionTitle != undefined && configuration?.sectionTitle != ''; then inputSectionTitle else defaultSectionTitle\"></span>\r\n                  <ng-template #inputSectionTitle>\r\n                    {{configuration?.sectionTitle}}\r\n                  </ng-template>\r\n                  <ng-template #defaultSectionTitle>\r\n                    Paging\r\n                  </ng-template>\r\n                </h4> -->\r\n          <!-- Ini Digunakan untuk Generate Dynamic Component -->\r\n          <!-- [hidden]=\"isHidden\" -->\r\n          <!-- <div class=\"card-active\" [@changeDivSize]=currentState> -->\r\n          <div class=\"row\">\r\n            <div class=\"col-md-3 form-group\" *ngFor=\"let question of configuration?.component; let i = index\">\r\n              <div class=\"col-md-12\">\r\n                <div class=\"row\">\r\n                  <label class=\"col-md-12 no-padding search-label\" for=\"{{question.id}}\"\r\n                    [ngClass]=\"{'adins-required-label': (question.isRequired || (question?.ddlType != undefined && question.ddlType == 'one'))}\"\r\n                    translate>{{question.label}}</label>\r\n                  <div class=\"col-md-12 no-padding\">\r\n                    <div *ngIf=\"question.type=='textbox'\">\r\n                      <input type=\"text\" id=\"{{question.id}}\" class=\"form-control search-input\"\r\n                        [IsUpperCase]=\"question.isUppercase === undefined ? true : question.isUppercase\"\r\n                        [required]=\"question.isRequired\" name=\"{{question.name}}\" [formControlName]=\"question.name\"\r\n                        attr.data-crit-datatable=\"{{question.isCriteriaDataTable}}\"\r\n                        [placeholder]=\"question.placeholder != undefined ? question.placeholder : ''\"\r\n                        attr.data-required=\"{{question.isRequired}}\" value=\"{{question.value}}\"\r\n                        attr.data-type=\"{{question.datatype}}\" attr.data-name=\"{{question.name}}\"\r\n                        attr.data-restriction=\"{{question.restriction}}\" attr.label=\"{{question.label}}\"\r\n                        [readonly]=\"question.isReadonly\"\r\n                        (focusout)=\"updateKeyValDict({key: question.name, value: question.value})\"\r\n                        [ngClass]=\"{ 'is-invalid':(enjiForm.submitted || enjiForm.form.controls[question.name]?.touched || enjiForm.form.controls[question.name]?.dirty) && enjiForm.form.controls[question.name]?.invalid }\">\r\n                    </div>\r\n                    <div *ngIf=\"question.type=='textarea'\">\r\n                      <textarea type=\"text\" id=\"{{question.id}}\" class=\"form-control search-input\"\r\n                        [required]=\"question.isRequired\" name=\"{{question.name}}\" [formControlName]=\"question.name\"\r\n                        attr.data-required=\"{{question.isRequired}}\" attr.data-type=\"{{question.datatype}}\"\r\n                        attr.data-name=\"{{question.name}}\" value=\"{{question.value}}\" attr.label=\"{{question.label}}\"\r\n                        [readonly]=\"question.isReadonly\"\r\n                        (focusout)=\"updateKeyValDict({key: question.name, value: question.value})\"\r\n                        [ngClass]=\"{ 'is-invalid':(enjiForm.submitted || enjiForm.form.controls[question.name]?.touched || enjiForm.form.controls[question.name]?.dirty) && enjiForm.form.controls[question.name]?.invalid }\"></textarea>\r\n                    </div>\r\n                    <div *ngIf=\"question.type=='numeric'\">\r\n                      <input type=\"number\" id=\"{{question.id}}\" (focus)=\"transformToDecimal($event)\"\r\n                        (blur)=\"transformToDecimal($event)\" class=\"form-control search-input\" [placeholder]=\"'0'\"\r\n                        [required]=\"question.isRequired\" name=\"{{question.name+[i]}}\"\r\n                        [formControlName]=\"question.name+[i]\" attr.data-required=\"{{question.isRequired}}\"\r\n                        value=\"{{question.value}}\" attr.data-restriction=\"{{question.restriction}}\"\r\n                        attr.data-type=\"{{question.datatype}}\" attr.data-name=\"{{question.name}}\"\r\n                        attr.data-numericpair=\"{{question.numericPair}}\"\r\n                        attr.data-crit-datatable=\"{{question.isCriteriaDataTable}}\" attr.label=\"{{question.label}}\"\r\n                        (focusout)=\"updateKeyValDict({key: question.name, value: question.value})\"\r\n                        [readonly]=\"question.isReadonly\"\r\n                        [ngClass]=\"{ 'is-invalid':(enjiForm.submitted || enjiForm.form.controls[question.name+[i]]?.touched || enjiForm.form.controls[question.name+[i]]?.dirty) && enjiForm.form.controls[question.name+[i]]?.invalid }\">\r\n                    </div>\r\n                    <div *ngIf=\"question.type=='currency'\">\r\n                      <div *ngIf=\"question?.isCustom != undefined && question?.isCustom\">\r\n                        <input type=\"\" id=\"{{question.id}}\" class=\"form-control search-input\"\r\n                          [required]=\"question.isRequired\" name=\"{{question.name+[i]}}\" autocomplete=\"off\"\r\n                          attr.data-restriction=\"{{question.restriction}}\" attr.data-type=\"{{question.datatype}}\"\r\n                          attr.data-name=\"{{question.name}}\" attr.data-required=\"{{question.isRequired}}\" currencyMask\r\n                          [formControlName]=\"question.name+[i]\" attr.label=\"{{question.label}}\"\r\n                          [readonly]=\"question.isReadonly\" (focus)=\"OnFocusCurr($event, question.value)\"\r\n                          (blur)=\"ValidateDefaultValue(question)\"\r\n                          (focusout)=\"updateKeyValDict({key: question.name, value: question.value})\"\r\n                          [options]=\"{ thousands: question.thousands, decimal: question.decimal, align: question.align, allowNegative: question.allowNegative, allowZero: question.allowZero, precision: question.precision, nullable: question.nullable }\"\r\n                          [ngClass]=\"{ 'is-invalid':(enjiForm.submitted || enjiForm.form.controls[question.name+[i]]?.touched || enjiForm.form.controls[question.name]?.dirty) && enjiForm.form.controls[question.name]?.invalid }\">\r\n                      </div>\r\n                      <div *ngIf=\"question?.isCustom == undefined || !question?.isCustom\">\r\n                        <input type=\"text\" id=\"{{question.id}}\" class=\"form-control search-input\"\r\n                          [required]=\"question.isRequired\" name=\"{{question.name+[i]}}\" autocomplete=\"off\"\r\n                          attr.data-restriction=\"{{question.restriction}}\" attr.data-type=\"{{question.datatype}}\"\r\n                          attr.data-name=\"{{question.name}}\" attr.data-required=\"{{question.isRequired}}\" currencyMask\r\n                          [formControlName]=\"question.name+[i]\" attr.label=\"{{question.label}}\"\r\n                          (focus)=\"OnFocusCurr($event, question.value)\" (blur)=\"ValidateDefaultValue(question)\"\r\n                          (focusout)=\"updateKeyValDict({key: question.name, value: question.value})\"\r\n                          [options]=\"{ thousands: ',', decimal: '.', align: 'right', allowNegative: false, allowZero:true, precision: 2, nullable: false }\"\r\n                          [ngClass]=\"{ 'is-invalid':(enjiForm.submitted || enjiForm.form.controls[question.name+[i]]?.touched || enjiForm.form.controls[question.name]?.dirty) && enjiForm.form.controls[question.name]?.invalid }\">\r\n                      </div>\r\n                    </div>\r\n\r\n                    <!-- End Hardcode Lookup didalem-->\r\n                    <span *ngIf=\"!useNewDatepicker\">\r\n                      <div *ngIf=\"question.type=='datepicker' && !question.isTime\">\r\n                        <input type=\"date\" id=\"{{question.id}}\" class=\"form-control search-input btn-lookup\"\r\n                          name=\"{{question.name+[i]}}\" [formControlName]=\"question.name+[i]\"\r\n                          [required]=\"question.isRequired\" attr.data-required=\"{{question.isRequired}}\"\r\n                          value=\"{{question.value}}\" [readonly]=\"question.readonly\"\r\n                          attr.data-type=\"{{question.datatype}}\" attr.data-name=\"{{question.name}}\"\r\n                          attr.data-datepickerpair=\"{{question.datepickerPair}}\"\r\n                          attr.data-crit-datatable=\"{{question.isCriteriaDataTable}}\"\r\n                          attr.data-restriction=\"{{question.restriction}}\" attr.label=\"{{question.label}}\"\r\n                          [min]=\"question.minDate | date:'yyyy-MM-dd'\" [max]=\"question.maxDate | date:'yyyy-MM-dd'\"\r\n                          (focusout)=\"question.restriction != undefined && checkInputDate(question,i)\"\r\n                          [ngClass]=\"{ 'is-invalid':(enjiForm.submitted || enjiForm.form.controls[question.name+[i]]?.touched || enjiForm.form.controls[question.name+[i]]?.dirty) && enjiForm.form.controls[question.name+[i]]?.invalid }\">\r\n                      </div>\r\n                      <div *ngIf=\"question.type=='datepicker' && question.isTime\">\r\n                        <input type=\"datetime-local\" id=\"{{question.id}}\" class=\"form-control search-input btn-lookup\"\r\n                          name=\"{{question.name+[i]}}\" [required]=\"question.isRequired\"\r\n                          [formControlName]=\"question.name\" attr.data-required=\"{{question.isRequired}}\"\r\n                          value=\"{{question.value}}\" [readonly]=\"question.readonly\"\r\n                          attr.data-type=\"{{question.datatype}}\" attr.data-name=\"{{question.name}}\"\r\n                          attr.data-datepickerpair=\"{{question.datepickerPair}}\"\r\n                          attr.data-crit-datatable=\"{{question.isCriteriaDataTable}}\"\r\n                          attr.data-restriction=\"{{question.restriction}}\" attr.label=\"{{question.label}}\"\r\n                          min=\"{{question.minDate | date:'yyyy-MM-dd'}}\" max=\"{{question.maxDate | date:'yyyy-MM-dd'}}\"\r\n                          (focusout)=\"question.restriction != undefined && checkInputDate(question,i)\"\r\n                          [ngClass]=\"{ 'is-invalid':(enjiForm.submitted || enjiForm.form.controls[question.name+[i]]?.touched || enjiForm.form.controls[question.name+[i]]?.dirty) && enjiForm.form.controls[question.name+[i]]?.invalid }\">\r\n                      </div>\r\n                    </span>\r\n                    <span *ngIf=\"useNewDatepicker\">\r\n                      <div *ngIf=\"question.type=='datepicker'\">\r\n                        <lib-ucdatepicker [parentForm]=\"form\" [enjiForm]=\"enjiForm\" [identifier]=\"question.name+i\"\r\n                          [min]=\"question.minDate | date: 'yyyy-MM-dd'\" [max]=\"question.maxDate | date: 'yyyy-MM-dd'\"\r\n                          [defaultStartDate]=\"BisDt\" [attr]=\"question\"\r\n                          (change)=\"question.restriction != undefined && checkInputDate(question,i)\">\r\n                        </lib-ucdatepicker>\r\n                      </div>\r\n                    </span>\r\n\r\n                    <div\r\n                      *ngIf=\"question.type == 'taskDefinitionKey' || question.type == 'processKey' || question.type == 'officeRoleCodes'\">\r\n                      <select name=\"{{question.name}}\" attr.data-required=\"{{question.isRequired}}\"\r\n                        [required]=\"question.isRequired\" class=\"form-control search-input\"\r\n                        attr.query-in=\"{{question.isQueryIn}}\" attr.data-type=\"{{question.datatype}}\"\r\n                        attr.label=\"{{question.label}}\" [hidden]=\"question?.itemsUrl?.length == 1\"\r\n                        (change)=\"(question.type == 'taskDefinitionKey' || question.type == 'processKey') ? SetProcessKey(i,question.wfKeyFilter) : SetRoleOfficeCodes(i)\"\r\n                        [ngClass]=\"{ 'is-invalid':(enjiForm.submitted || enjiForm.form.controls[question.name]?.touched || enjiForm.form.controls[question.name]?.dirty) && enjiForm.form.controls[question.name]?.invalid }\">\r\n                        <option *ngIf=\"question.ddlType == 'one' && question?.itemsUrl?.length != 1\" value=\"one\">Select\r\n                          One</option>\r\n                        <option\r\n                          *ngIf=\"(question?.ddlType == undefined || question.ddlType == 'all') && question?.itemsUrl?.length != 1\"\r\n                          value=\"all\">All</option>\r\n                        <option *ngFor=\"let item of question?.itemsUrl\" value=\"{{item.Key}}\">\r\n                          {{item.Value}}\r\n                        </option>\r\n                      </select>\r\n                      <label *ngIf=\"question?.itemsUrl?.length == 1\">{{question.itemsUrl[0].Value}}</label>\r\n                    </div>\r\n                    <div *ngIf=\"question.type=='dropdown'\">\r\n                      <select name=\"{{question.name}}\" attr.data-required=\"{{question.isRequired}}\"\r\n                        [required]=\"question.isRequired\" class=\"form-control search-input\"\r\n                        [formControlName]=\"question.name\" attr.query-in=\"{{question.isQueryIn}}\"\r\n                        attr.data-type=\"{{question.datatype}}\" attr.data-name=\"{{question.name}}\"\r\n                        attr.label=\"{{question.label}}\" attr.data-crit-datatable=\"{{question.isCriteriaDataTable}}\"\r\n                        attr.data-restriction=\"{{ question?.restriction ?? ''}}\"\r\n                        [hidden]=\"!question.isFromURL ? (question?.items?.length == 1 && !question?.keepDdl) : (question?.itemsUrl?.length == 1 && !question?.keepDdl)\"\r\n                        (change)=\"question.isEvent ? onChangeEvent($event.target.value, question) : updateKeyValDict({key: question.name, value: $event.target.value})\"\r\n                        [ngClass]=\"{ 'is-invalid':(enjiForm.submitted || enjiForm.form.controls[question.name]?.touched || enjiForm.form.controls[question.name]?.dirty) && enjiForm.form.controls[question.name]?.invalid }\">\r\n                        <option\r\n                          *ngIf=\"question.ddlType == 'one' && (!question.isFromURL ? (question?.items?.length != 1 || question?.keepDdl) : (question?.itemsUrl?.length != 1 || question?.keepDdl))\"\r\n                          value=\"one\">\r\n                          Select One</option>\r\n                        <option\r\n                          *ngIf=\"(question?.ddlType == undefined || question.ddlType == 'all') && (!question.isFromURL ? (question?.items?.length != 1 || question?.keepDdl) : (question?.itemsUrl?.length != 1 || question?.keepDdl))\"\r\n                          value=\"all\">All</option>\r\n                        <option *ngFor=\"let item of !question.isFromURL ? question?.items : question?.itemsUrl\"\r\n                          value=\"{{!question.isFromURL ? item.key : item.Key}}\">\r\n                          {{!question.isFromURL ? item.value : item.Value}}\r\n                        </option>\r\n                        <option\r\n                          *ngIf=\"(question?.ddlType == undefined || question.ddlType == 'all') && (!question.isFromURL ? (question?.items?.length != 1 || question?.keepDdl) : (question?.itemsUrl?.length != 1 || question?.keepDdl)) && question.useOthersSelection\"\r\n                          value=\"others\">Others</option>\r\n                      </select>\r\n                      <label\r\n                        *ngIf=\"!question.isFromURL ? (question?.items?.length == 1 && !question?.keepDdl) : (question?.itemsUrl?.length == 1 && !question?.keepDdl)\">{{!question.isFromURL\r\n                        ? question.items[0].value :\r\n                        question.itemsUrl[0].Value}}\r\n                      </label>\r\n                    </div>\r\n                    <div *ngIf=\"question.type=='dropdownSearch'\">\r\n                      <div class=\"dds-display-item\"\r\n                        [hidden]=\"!question.isFromURL ? question?.items?.length == 1 : question?.itemsUrl?.length == 1\">\r\n                        <input type=\"text\" class=\"form-control dds-input\" name=\"{{'ddsValue'+question.name}}\"\r\n                          [(ngModel)]=\"question.descr\" readonly\r\n                          (click)=\"question.isListHide = !question.isListHide; question.searchText=''\">\r\n                      </div>\r\n                      <label\r\n                        *ngIf=\"!question.isFromURL ? question?.items?.length == 1 : question?.itemsUrl?.length == 1\">{{question.descr}}</label>\r\n                      <div class=\"dds-list-container\" [hidden]=\"question.isListHide\">\r\n                        <input type=\"text\" class=\"form-control search-input\" name=\"{{'searchText'+question.name}}\"\r\n                          [(ngModel)]=\"question.searchText\" [placeholder]=\"question.placeholder\">\r\n                        <div class=\"dds-items-container\">\r\n                          <select class=\"full-width\" name=\"{{question.name}}\"\r\n                            attr.data-required=\"{{question.isRequired}}\" [(ngModel)]=\"question.value\"\r\n                            [required]=\"question.isRequired\" attr.query-in=\"{{question.isQueryIn}}\"\r\n                            attr.data-type=\"{{question.datatype}}\" attr.data-name=\"{{question.name}}\"\r\n                            attr.label=\"{{question.label}}\" attr.data-crit-datatable=\"{{question.isCriteriaDataTable}}\"\r\n                            (change)=\"question.isEvent ? onChangeEvent($event.target.value, question) : ''\"\r\n                            [ngClass]=\"{ 'is-invalid':(enjiForm.submitted || enjiForm.form.controls[question.name]?.touched || enjiForm.form.controls[question.name]?.dirty) && enjiForm.form.controls[question.name]?.invalid }\"\r\n                            size=\"{{question?.size == undefined ? question?.size : 10}}\">\r\n                            <option (click)=\"selectedOption({Key:'one',Value:'Select One'},question)\"\r\n                              *ngIf=\"question.ddsType == 'one' && (!question.isFromURL ? question?.items?.length != 1 : question?.itemsUrl?.length != 1)\"\r\n                              value=\"one\">\r\n                              Select One</option>\r\n                            <option (click)=\"selectedOption({Key:'all',Value:'All'},question)\"\r\n                              *ngIf=\"(question?.ddsType == undefined || question.ddsType == 'all') && (!question.isFromURL ? question?.items?.length != 1 : question?.itemsUrl?.length != 1)\"\r\n                              value=\"all\">All</option>\r\n                            <!-- <option *ngFor=\"let item of question?.items | textSearch : question.searchText; let i=index\" [value]=\"item?.key\" (click)=\"selectedOption(item,question)\">\r\n                                        {{item?.value}}\r\n                                      </option> -->\r\n                            <option\r\n                              *ngFor=\"let item of !question.isFromURL ? (question?.items | textSearch : question.searchText) : question?.itemsUrl | textSearch : question.searchText\"\r\n                              (click)=\"selectedOption(item,question)\" value=\"{{item.Key}}\">\r\n                              {{item.Value}}\r\n                            </option>\r\n                          </select>\r\n                        </div>\r\n                      </div>\r\n                    </div>\r\n                    <div *ngIf=\"question.type=='claim'\">\r\n                      <select name=\"{{'claim'+[i]}}\" class=\"form-control search-input\" attr.data-type=\"{{'text'}}\"\r\n                        attr.data-crit-datatable=\"{{question.isCriteriaDataTable}}\" attr.data-name=\"{{'Assignee'}}\"\r\n                        [hidden]=\"ClaimList?.length == 1\"\r\n                        [ngClass]=\"{ 'is-invalid':(enjiForm.submitted || enjiForm.form.controls['claim'+[i]]?.touched || enjiForm.form.controls['claim'+[i]]?.dirty) && enjiForm.form.controls['claim'+[i]]?.invalid }\">\r\n                        <option *ngIf=\"question.ddlType == 'one' && ClaimList?.length != 1\" value=\"one\">Select\r\n                          One</option>\r\n                        <option\r\n                          *ngIf=\"(question?.ddlType == undefined || question.ddlType == 'all') && ClaimList?.length != 1\"\r\n                          value=\"all\">All</option>\r\n                        <option *ngFor=\"let item of ClaimList\" value=\"{{item.Key}}\">\r\n                          {{item.Value}}\r\n                        </option>\r\n                      </select>\r\n                    </div>\r\n                    <div *ngIf=\"question.type=='lookup'\">\r\n                      <lib-cl-uclookupgeneric *ngIf=\"searchInput.dictLookupObj[question.name].isReady\"\r\n                        [lookupInput]=\"searchInput.dictLookupObj[question.name]\" [parentForm]='form'\r\n                        [enjiForm]='enjiForm' [identifier]=\"question.name\"\r\n                        [notifyUpdateKeyValDict]=\"notifyUpdateKeyValDict\" [lookupKeyValDict]=\"lookupKeyValDict\"\r\n                        (lookup)=\"getLookup($event, question)\"\r\n                        (inputtedValue)=\"getInputtedValue($event, question)\"></lib-cl-uclookupgeneric>\r\n                    </div>\r\n\r\n                    <div *ngIf=\"question.type === 'time'\">\r\n                      <input type=\"time\" id=\"{{question.id}}\" class=\"form-control search-input\"\r\n                        [IsUpperCase]=\"question.isUppercase === undefined ? true : question.isUppercase\"\r\n                        [required]=\"question.isRequired\" name=\"{{question.name}}\" [formControlName]=\"question.name\"\r\n                        attr.data-crit-datatable=\"{{question.isCriteriaDataTable}}\"\r\n                        [placeholder]=\"question.placeholder != undefined ? question.placeholder : ''\"\r\n                        attr.data-required=\"{{question.isRequired}}\" value=\"{{question.value}}\"\r\n                        attr.data-type=\"{{question.datatype}}\" attr.data-name=\"{{question.name}}\"\r\n                        attr.data-restriction=\"{{question.restriction}}\" attr.label=\"{{question.label}}\"\r\n                        [readonly]=\"question.isReadonly\"\r\n                        (focusout)=\"updateKeyValDict({key: question.name, value: question.value})\"\r\n                        [ngClass]=\"{ 'is-invalid':(enjiForm.submitted || enjiForm.form.controls[question.name]?.touched || enjiForm.form.controls[question.name]?.dirty) && enjiForm.form.controls[question.name]?.invalid }\">\r\n                    </div>\r\n\r\n                    <div *ngIf=\"question.type === 'month'\">\r\n                      <select name=\"{{question.name}}\" attr.data-required=\"{{question.isRequired}}\"\r\n                        [required]=\"question.isRequired\" class=\"form-control search-input\"\r\n                        [formControlName]=\"question.name\" attr.query-in=\"{{question.isQueryIn}}\"\r\n                        attr.data-type=\"{{question.datatype}}\" attr.data-name=\"{{question.name}}\"\r\n                        attr.label=\"{{question.label}}\" attr.data-crit-datatable=\"{{question.isCriteriaDataTable}}\"\r\n                        (change)=\"question.isEvent ? onChangeEvent($event.target.value, question) : ''\"\r\n                        [ngClass]=\"{ 'is-invalid':(enjiForm.submitted || enjiForm.form.controls[question.name]?.touched || enjiForm.form.controls[question.name]?.dirty) && enjiForm.form.controls[question.name]?.invalid }\">\r\n                        <option *ngIf=\"question.ddlType == 'one'\" value=\"one\">\r\n                          Select One</option>\r\n                        <option *ngIf=\"question?.ddlType == undefined || question.ddlType == 'all'\" value=\"all\">All\r\n                        </option>\r\n                        <option *ngFor=\"let m of months\" [value]=\"m.key\">\r\n                          {{m.value}}\r\n                        </option>\r\n                      </select>\r\n                    </div>\r\n\r\n                    <div *ngIf=\"question.type === 'year'\">\r\n                      <select name=\"{{question.name}}\" attr.data-required=\"{{question.isRequired}}\"\r\n                        [required]=\"question.isRequired\" class=\"form-control search-input\"\r\n                        [formControlName]=\"question.name\" attr.query-in=\"{{question.isQueryIn}}\"\r\n                        attr.data-type=\"{{question.datatype}}\" attr.data-name=\"{{question.name}}\"\r\n                        attr.label=\"{{question.label}}\" attr.data-crit-datatable=\"{{question.isCriteriaDataTable}}\"\r\n                        (change)=\"question.isEvent ? onChangeEvent($event.target.value, question) : ''\"\r\n                        [ngClass]=\"{ 'is-invalid':(enjiForm.submitted || enjiForm.form.controls[question.name]?.touched || enjiForm.form.controls[question.name]?.dirty) && enjiForm.form.controls[question.name]?.invalid }\">\r\n                        <option *ngIf=\"question.ddlType == 'one'\" value=\"one\">\r\n                          Select One</option>\r\n                        <option *ngIf=\"question?.ddlType == undefined || question.ddlType == 'all'\" value=\"all\">All\r\n                        </option>\r\n                        <option *ngFor=\"let y of years\" [value]=\"y\">\r\n                          {{y}}\r\n                        </option>\r\n                      </select>\r\n                    </div>\r\n\r\n                    <lib-uc-show-errors *ngIf=\"question.type !== 'datepicker'\" [control]=\"form.controls[question.name]\"\r\n                      [submit]=\"enjiForm.submitted\">\r\n                    </lib-uc-show-errors>\r\n                    <lib-uc-show-errors *ngIf=\"question.type === 'datepicker' || question.type === 'numeric'\"\r\n                      [control]=\"form.controls[question.name+[i]]\" [submit]=\"enjiForm.submitted\">\r\n                    </lib-uc-show-errors>\r\n                  </div>\r\n                </div>\r\n              </div>\r\n            </div>\r\n            <div class=\"col-md-3 form-group\" *ngIf=\"(isReport != undefined && isReport)\">\r\n              <div class=\"col-md-12\">\r\n                <div class=\"row\">\r\n                  <label class=\"col-md-12 no-padding search-label\" translate>Report Type</label>\r\n                  <div class=\"col-md-12 no-padding\">\r\n                    <select name=\"ExportType\" class=\"form-control search-input\" attr.data-type=\"text\"\r\n                      [formControlName]=\"'ExportType'\">\r\n                      <option *ngFor=\"let item of ExportTypeList\" [value]=\"item.key\">{{item.value}}</option>\r\n                    </select>\r\n                  </div>\r\n                </div>\r\n              </div>\r\n            </div>\r\n            <div class=\"col-md-3 form-group\"\r\n              *ngIf=\"(isReport != undefined && isReport) && (showRptExecType != undefined && showRptExecType)\">\r\n              <div class=\"col-md-12\">\r\n                <div class=\"row\">\r\n                  <label class=\"col-md-12 no-padding search-label\" translate>Execution Type</label>\r\n                  <div class=\"col-md-12 no-padding\">\r\n                    <select name=\"RptExecType\" class=\"form-control search-input\" attr.data-type=\"text\"\r\n                      [formControlName]=\"'RptExecType'\">\r\n                      <option *ngFor=\"let item of ReportExecTypeList\" [value]=\"item.key\">{{item.value}}</option>\r\n                    </select>\r\n                  </div>\r\n                </div>\r\n              </div>\r\n            </div>\r\n          </div>\r\n          <div class=\"col-md-12 no-padding\">\r\n            <div class=\"form-actions right\">\r\n              <ng-container class=\"btn-group\" *ngIf=\"exportData == true && isSearch\">\r\n                <div ngbDropdown class=\"d-inline-block\">\r\n                  <button type=\"button\" class=\"btn btn-raised btn-outline-2 me-1 dropdown-toggle\" ngbDropdownToggle\r\n                    id=\"exportList\" translate>\r\n                    <i class=\"fa ft-download button-icon-search\"></i>&nbsp;<span class=\"button-text-search\"\r\n                      translate>Export File</span>\r\n                  </button>\r\n                  <div class=\"dropdown-menu\" ngbDropdownMenu aria-labelledby=\"exportList\">\r\n                    <ng-container *ngFor=\"let item of exportAsFileList\">\r\n                      <a class=\"dropdown-item\" ngbDropdownItem (click)=\"exportAsFile(item.key)\">{{item.value}}</a>\r\n                    </ng-container>\r\n                  </div>\r\n                </div>\r\n              </ng-container>\r\n              <button type=\"button\" (click)=\"reset()\" class=\"btn btn-raised me-1 btn-link-2\" translate>\r\n                <!-- <i class=\"fa fa-times\"></i>&nbsp; -->\r\n                <span translate>Reset</span>\r\n              </button>\r\n              <button *ngIf=\"(isReport == undefined || !isReport)\" type=\"submit\" class=\"btn btn-raised btn-outline-2\"\r\n                #UCSearchClick [disabled]=\"!searchBtnReady\">\r\n                <i class=\"fa fa-search button-icon-search\"></i>&nbsp;<span class=\"button-text-search\"\r\n                  translate>Search</span>\r\n              </button>\r\n              <button *ngIf=\"(isReport != undefined && isReport)\" type=\"submit\" class=\"btn btn-raised btn-outline-2\">\r\n                <i class=\"fa ft-download button-icon-search\"></i>&nbsp;<span class=\"button-text-search\"\r\n                  translate>Generate\r\n                  Report</span>\r\n              </button>\r\n            </div>\r\n          </div>\r\n          <!-- </div> -->\r\n        </div>\r\n      </form>\r\n    </div>\r\n  </div>\r\n  <!-- </div>\r\n    </div>\r\n  </div> -->\r\n  <!-- </div> -->\r\n</div>\r\n<!-- // Basic form layout section end -->","import { NgModule } from \"@angular/core\";\r\nimport { UCSearchComponent } from \"./ucsearch.component\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { CurrencyMaskInputMode, NgxCurrencyModule } from \"ngx-currency\";\r\nimport { TranslateModule } from \"@ngx-translate/core\";\r\nimport { UcShowErrorsModule } from \"@adins/uc-show-errors\";\r\nimport { UcDirectiveUpperCaseModule } from \"@adins/uc-directive-upper-case\";\r\nimport { TextSearchPipe } from \"./pipe/text-search.pipe\";\r\nimport { UcSubsectionModule } from \"@adins/uc-subsection\";\r\nimport { UcDirectiveValidateDateModule } from \"@adins/uc-directive-validate-date\";\r\nimport {\r\n  NgbDropdown,\r\n  NgbDropdownModule,\r\n  NgbModule,\r\n} from \"@ng-bootstrap/ng-bootstrap\";\r\n// import { ClUclookupgenericModule } from \"@adins/cl-uclookupgeneric\";\r\nimport { UcsearchDatetimeService } from \"./services/ucsearch-datetime.service\";\r\nimport { UcdatepickerModule } from \"@adins/ucdatepicker\";\r\nimport { UcsearchFormService } from \"./services/ucsearch-form.service\";\r\n\r\nexport const customCurrencyMaskConfig = {\r\n  align: \"right\",\r\n  allowNegative: false,\r\n  allowZero: true,\r\n  decimal: \".\",\r\n  precision: 2,\r\n  prefix: \"\",\r\n  suffix: \"\",\r\n  thousands: \",\",\r\n  nullable: false,\r\n  inputMode: CurrencyMaskInputMode.NATURAL,\r\n};\r\n\r\n@NgModule({\r\n  declarations: [UCSearchComponent, TextSearchPipe],\r\n  imports: [\r\n    CommonModule,\r\n    NgbModule,\r\n    FormsModule,\r\n    ReactiveFormsModule,\r\n    UcShowErrorsModule,\r\n    UcDirectiveUpperCaseModule,\r\n    UcDirectiveValidateDateModule,\r\n    // ClUclookupgenericModule,\r\n    UcSubsectionModule,\r\n    NgbDropdownModule,\r\n    UcdatepickerModule,\r\n    // NgxCurrencyModule.forRoot(customCurrencyMaskConfig),\r\n    TranslateModule.forChild(),\r\n  ],\r\n  providers: [NgbDropdown, UcsearchDatetimeService, UcsearchFormService],\r\n  exports: [UCSearchComponent],\r\n})\r\nexport class UCSearchModule {}\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@NgModule({\n  imports: [CommonModule],\n  declarations: [],\n  exports: []\n})\nexport class TestMinimalModule { }\n","/*\r\n * Public API Surface of ucsearch\r\n */\r\n\r\nexport * from './lib/ucsearch.service';\r\nexport * from './lib/ucsearch.component';\r\nexport * from './lib/ucsearch.module';\r\nexport * from './lib/test-minimal.module';\r\nexport * from './lib/services/ucsearch-form.service';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i5.ExportFileService","i9.UcsearchDatetimeService","i10.UcsearchFormService","i18.TextSearchPipe"],"mappings":"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"}