{"version":3,"file":"mmhglobal-dynamicform.mjs","sources":["../../../projects/mmhglobal-dynamicform/src/lib/services/zcomponent.debug.service.ts","../../../projects/mmhglobal-dynamicform/src/lib/services/main.service.ts","../../../projects/mmhglobal-dynamicform/src/lib/services/zcomponent.service.ts","../../../projects/mmhglobal-dynamicform/src/lib/directives/scrollbar.theme.directive.ts","../../../projects/mmhglobal-dynamicform/src/lib/directives/fieldelement.directive.ts","../../../projects/mmhglobal-dynamicform/src/lib/zgrid/zgrid.service.ts","../../../projects/mmhglobal-dynamicform/src/lib/zgrid/zgrid.binding.directive.ts","../../../projects/mmhglobal-dynamicform/src/lib/zselectmultiple/zselectmultiple.directive.ts","../../../projects/mmhglobal-dynamicform/src/lib/directives/elementcontainer.directive.ts","../../../projects/mmhglobal-dynamicform/src/lib/zgrid/zgrid.popup.anchor-target.directive.ts","../../../projects/mmhglobal-dynamicform/src/lib/zdatetime/dateParser.pipe.ts","../../../projects/mmhglobal-dynamicform/src/lib/zcodeeditor/zcodeeditor.pipe.ts","../../../projects/mmhglobal-dynamicform/src/lib/zdiv/zdiv.pipe.ts","../../../projects/mmhglobal-dynamicform/src/lib/ztab/ztab.pipe.ts","../../../projects/mmhglobal-dynamicform/src/lib/pipe/panel-area.pipe.ts","../../../projects/mmhglobal-dynamicform/src/lib/zinput-container/zinput-container.pipe.ts","../../../projects/mmhglobal-dynamicform/src/lib/pipe/htmlSanitize.pipe.ts","../../../projects/mmhglobal-dynamicform/src/lib/constants/constant.ts","../../../projects/mmhglobal-dynamicform/src/lib/zgrid/date-range-cell-filter.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zscheduler/zscheduler.toolbar.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zselectmultiple/zselectmultiple.pipe.ts","../../../projects/mmhglobal-dynamicform/src/lib/znumeric/znumeric.component.pipe.ts","../../../projects/mmhglobal-dynamicform/src/lib/zdatetime/dateKendoFormatParser.pipe.ts","../../../projects/mmhglobal-dynamicform/src/lib/zdatetime/dateIonicFormatParser.pipe.ts","../../../projects/mmhglobal-dynamicform/src/lib/uipage/uipage.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/uiheader/uiheader.service.ts","../../../projects/mmhglobal-dynamicform/src/lib/uimenubutton/uimenubutton.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/uimenubutton/uimenubutton.component.html","../../../projects/mmhglobal-dynamicform/src/lib/uibulletin/uibulletin.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/uibulletin/uibulletin.component.html","../../../projects/mmhglobal-dynamicform/src/lib/components/fieldbase.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/components/buttonfieldbase.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/uiactionbutton/uiactionbutton.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/uiactionbutton/uiactionbutton.component.html","../../../projects/mmhglobal-dynamicform/src/lib/uiheader/uiheader.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/uiheader/uiheader.component.html","../../../projects/mmhglobal-dynamicform/src/lib/embed-components/processing-record-loader/processing-record-loader.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/embed-components/processing-record-loader/processing-record-loader.component.html","../../../projects/mmhglobal-dynamicform/src/lib/embed-components/page-loader/page-loader.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/embed-components/page-loader/page-loader.component.html","../../../projects/mmhglobal-dynamicform/src/lib/zformcontrol/zformcontrol.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zformcontrol/zformcontrol.component.html","../../../projects/mmhglobal-dynamicform/src/lib/zform/zform.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zform/zform.component.html","../../../projects/mmhglobal-dynamicform/src/lib/uicontent/uicontent.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/uicontent/uicontent.component.html","../../../projects/mmhglobal-dynamicform/src/lib/uicontainer/uicontainer.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/uicontainer/uicontainer.component.html","../../../projects/mmhglobal-dynamicform/src/lib/uimenucontent/uimenucontent.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/uimenucontent/uimenucontent.component.html","../../../projects/mmhglobal-dynamicform/src/lib/uiappmenucontent/uiappmenucontent.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/uiappmenucontent/uiappmenucontent.component.html","../../../projects/mmhglobal-dynamicform/src/lib/uivalidationmessage/uivalidationmessage.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/uivalidationmessage/uivalidationmessage.component.html","../../../projects/mmhglobal-dynamicform/src/lib/zbullet/zbullet.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zbullet/zbullet.component.html","../../../projects/mmhglobal-dynamicform/src/lib/zbuttons/zbuttons.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zbuttons/zbuttons.component.html","../../../projects/mmhglobal-dynamicform/src/lib/components/containerfieldbase.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zbreadcrumb/zbreadcrumb.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zbreadcrumb/zbreadcrumb.component.html","../../../projects/mmhglobal-dynamicform/src/lib/embed-components/context-menu/context-menu.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/embed-components/context-menu/context-menu.component.html","../../../projects/mmhglobal-dynamicform/src/lib/zdiv/zdiv.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zdiv/zdiv.component.html","../../../projects/mmhglobal-dynamicform/src/lib/zcard/zcard.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zcard/zcard.component.html","../../../projects/mmhglobal-dynamicform/src/lib/components/datalistingfieldbase.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zchart/zchart.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zchart/zchart.component.html","../../../projects/mmhglobal-dynamicform/src/lib/components/inputfieldbase.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zcheckbox/zcheckbox.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zcheckbox/zcheckbox.component.html","../../../projects/mmhglobal-dynamicform/src/lib/zchip/zchip.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zchip/zchip.component.html","../../../projects/mmhglobal-dynamicform/src/lib/zcodeeditor/zcodeeditor.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zcodeeditor/zcodeeditor.component.html","../../../projects/mmhglobal-dynamicform/src/lib/zdaterange/zdaterange.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zdaterange/zdaterange.component.html","../../../projects/mmhglobal-dynamicform/src/lib/zdatetime/dateIonicMinMaxDate.pipe.ts","../../../projects/mmhglobal-dynamicform/src/lib/zdatetime/zdatetime.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zdatetime/zdatetime.component.html","../../../projects/mmhglobal-dynamicform/src/lib/zgauge/zgauge.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zgauge/zgauge.component.html","../../../projects/mmhglobal-dynamicform/src/lib/animations/component-animations.ts","../../../projects/mmhglobal-dynamicform/src/lib/zworkflowbuttons/zworkflowbuttons.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zworkflowbuttons/zworkflowbuttons.component.html","../../../projects/mmhglobal-dynamicform/src/lib/ztext/ztext.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/ztext/ztext.component.html","../../../projects/mmhglobal-dynamicform/src/lib/zselectmultiple/zselectmultiple.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zselectmultiple/zselectmultiple.component.html","../../../projects/mmhglobal-dynamicform/src/lib/sfdatetimepicker/sfdatetimepicker.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/sfdatetimepicker/sfdatetimepicker.component.html","../../../projects/mmhglobal-dynamicform/src/lib/zpostselectinput/zpostselectinput.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zpostselectinput/zpostselectinput.component.html","../../../projects/mmhglobal-dynamicform/src/lib/znumeric/znumeric.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/znumeric/znumeric.component.html","../../../projects/mmhglobal-dynamicform/src/lib/ztextarea/ztextarea.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/ztextarea/ztextarea.component.html","../../../projects/mmhglobal-dynamicform/src/lib/zupload/zupload.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zupload/zupload.component.html","../../../projects/mmhglobal-dynamicform/src/lib/zimg/zimg.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zimg/zimg.component.html","../../../projects/mmhglobal-dynamicform/src/lib/ztexteditor/ztexteditor.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/ztexteditor/ztexteditor.component.html","../../../projects/mmhglobal-dynamicform/src/lib/zcolorpicker/zcolorpicker.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zcolorpicker/zcolorpicker.component.html","../../../projects/mmhglobal-dynamicform/src/lib/zradiobutton/zradiobutton.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zradiobutton/zradiobutton.component.html","../../../projects/mmhglobal-dynamicform/src/lib/zslider/zslider.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zslider/zslider.component.html","../../../projects/mmhglobal-dynamicform/src/lib/input-error-message/input-error-message.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/input-error-message/input-error-message.component.html","../../../projects/mmhglobal-dynamicform/src/lib/embed-components/input-field-addons/input-field-addons.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/embed-components/input-field-addons/input-field-addons.component.html","../../../projects/mmhglobal-dynamicform/src/lib/zinput-container/zinput-container.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zinput-container/zinput-container.component.html","../../../projects/mmhglobal-dynamicform/src/lib/zgrid/zgrid.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zgrid/zgrid.component.html","../../../projects/mmhglobal-dynamicform/src/lib/zgrid/container/zgrid-container.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zgrid/container/zgrid-container.component.html","../../../projects/mmhglobal-dynamicform/src/lib/zlabel/zlabel.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zlabel/zlabel.component.html","../../../projects/mmhglobal-dynamicform/src/lib/zmfb/zmfb.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zmfb/zmfb.component.html","../../../projects/mmhglobal-dynamicform/src/lib/zmodal/zmodal.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zmodal/zmodal.component.html","../../../projects/mmhglobal-dynamicform/src/lib/zmodal/zmodal-mobile.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zreport/zreport.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zreport/zreport.component.html","../../../projects/mmhglobal-dynamicform/src/lib/zscheduler/zscheduler.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zscheduler/zscheduler.component.html","../../../projects/mmhglobal-dynamicform/src/lib/ztab/ztab.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/ztab/ztab.component.html","../../../projects/mmhglobal-dynamicform/src/lib/ztree/ztree.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/ztree/ztree.component.html","../../../projects/mmhglobal-dynamicform/src/lib/ztreelist/ztreelist.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/ztreelist/ztreelist.component.html","../../../projects/mmhglobal-dynamicform/src/lib/ztrendcard/ztrendcard.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/ztrendcard/ztrendcard.component.html","../../../projects/mmhglobal-dynamicform/src/lib/zunknown/zunknown.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zunknown/zunknown.component.html","../../../projects/mmhglobal-dynamicform/src/lib/zudf/zudf.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zudf/zudf.component.html","../../../projects/mmhglobal-dynamicform/src/lib/kcard/kcard.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/kcard/kcard.component.html","../../../projects/mmhglobal-dynamicform/src/lib/zprogressbar/zprogressbar.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zprogressbar/zprogressbar.component.html","../../../projects/mmhglobal-dynamicform/src/lib/sfquerybuilder/sfquerybuilder.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/sfquerybuilder/sfquerybuilder.component.html","../../../projects/mmhglobal-dynamicform/src/lib/zloop/zloop.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zloop/zloop.component.html","../../../projects/mmhglobal-dynamicform/src/lib/ksplitter/ksplitter.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/ksplitter/ksplitter.component.html","../../../projects/mmhglobal-dynamicform/src/lib/virtual-scroll/virtual-scroll.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/virtual-scroll/virtual-scroll.component.html","../../../projects/mmhglobal-dynamicform/src/lib/embed-components/spinner/spinner.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/embed-components/spinner/spinner.component.html","../../../projects/mmhglobal-dynamicform/src/lib/kmenu/kmenu.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/kmenu/kmenu.component.html","../../../projects/mmhglobal-dynamicform/src/lib/kscrollview/kscrollview.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/kscrollview/kscrollview.component.html","../../../projects/mmhglobal-dynamicform/src/lib/ficon/ficon.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/ficon/ficon.component.html","../../../projects/mmhglobal-dynamicform/src/lib/zganttchart/zganttchart.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/zganttchart/zganttchart.component.html","../../../projects/mmhglobal-dynamicform/src/lib/dropdown_buttons/dropdown_buttons.component.ts","../../../projects/mmhglobal-dynamicform/src/lib/dropdown_buttons/dropdown_buttons.component.html","../../../projects/mmhglobal-dynamicform/src/lib/mmhglobal-dynamicform.module.ts","../../../projects/mmhglobal-dynamicform/src/public-api.ts","../../../projects/mmhglobal-dynamicform/src/mmhglobal-dynamicform.ts"],"sourcesContent":["/********** Angular **********/\r\nimport { Injectable } from \"@angular/core\";\r\nimport { FormGroup } from '@angular/forms';\r\nimport { Router } from '@angular/router';\r\nimport { HttpParams } from '@angular/common/http';\r\n\r\n/********** Ionic **********/\r\nimport { IonicSelectableComponent } from 'ionic-selectable';\r\n\r\n/********** Plugin **********/\r\nimport { BehaviorSubject, of, forkJoin, Observable } from 'rxjs';\r\nimport { tap, switchMap, map } from 'rxjs/operators';\r\n\r\n/********** Component & Service **********/\r\nimport {\r\n  AlertButton, AlertService, AssetsAllowedExtension, AssetsFolder, AssetsNodeParam, AssetsRoutes, AuthService, ComponentErrorHandlerService, DebuggerFieldElementName, FieldService, FormType, MESSAGETYPE,\r\n  ModalPageParams,\r\n  ResourceApiService, SignalrService, ToastService, WebApiService, ZComponentHelper, ZComponentOutputEvent,\r\n  ZCoreService, ZField, ZGroup, ZTreeTemplateParams\r\n} from \"mmhglobal-zcore\";\r\nimport { ModalResponse, ModalService } from 'mmhglobal-zmodal';\r\nimport { FormBuilderDirectAccessQueryParamKey, FormBuilderDirectAccessQueryParamValue, FormBuilderQueryParamData } from \"mmhglobal-zcore\";\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class ZComponentDebugService {\r\n  public readonly groupsToSend = ['oauth'];\r\n  public readonly eventName = 'FieldElement';\r\n  private environment = null;\r\n\r\n  constructor(\r\n    private router: Router,\r\n    private alertService: AlertService,\r\n    private authService: AuthService,\r\n    private fieldService: FieldService,\r\n    private resourceApiService: ResourceApiService,\r\n    private componentErrorHandlerService: ComponentErrorHandlerService,\r\n    private toastService: ToastService,\r\n    private modalService: ModalService,\r\n    private webApiService: WebApiService,\r\n    private signalrService: SignalrService,\r\n    private zcoreService: ZCoreService\r\n  ) {\r\n    this.environment = this.zcoreService.getEnvironment();\r\n  }\r\n\r\n  private scope: any;\r\n\r\n  get debug(): any {\r\n    return this.scope.group._debug;\r\n  }\r\n\r\n  get group(): ZGroup {\r\n    return this.scope.group;\r\n  }\r\n\r\n  public onInitDebugger(group: ZGroup) {\r\n    group._debug = new ZGroup(true);\r\n    group._isDebugging = true;\r\n    group._debug.zData = {\r\n      collectedActivities: [],\r\n      activityCount: 0,\r\n      collectedWorkflowButtons: [],\r\n      workflowButtonCount: 0\r\n    };\r\n    group._debug.zComponents = {};\r\n    group.isListForm = false;\r\n  }\r\n\r\n\r\n  public onStartDebugger(fieldElements: Array<ZField>, me: any) {\r\n    this.scope = me;\r\n    if (!me.group._debug) {\r\n      me.group._debug = {};\r\n    }\r\n\r\n    const debuggerGroup: ZGroup = me.group._debug;\r\n    me.form = me.toFormGroup(fieldElements);\r\n    debuggerGroup.form = me.form;\r\n    if (me.subscription) {\r\n      me.subscription.unsubscribe();\r\n    }\r\n\r\n    Object.assign(debuggerGroup, {\r\n      // zData: { collectedActivities: [], activityCount: 0 },\r\n      zModel: {},\r\n      subject: new BehaviorSubject<ZComponentOutputEvent>(null),\r\n      isEdit: true,\r\n      isNew: false,\r\n      _debug: me.group._debug,\r\n      _group: me.group,\r\n      resourceURL: this.resourceApiService.getURL('field'),\r\n      treeItemTemplate: this.treeItemTemplate,\r\n      onItemClick: this.onItemClick,\r\n      onTreeNodeChange: this.onTreeNodeChange,\r\n      onAddNode: this.onAddNode,\r\n      onRemoveNode: this.onRemoveNode,\r\n      treeNodesExpandAll: this.treeNodesExpandAll,\r\n      treeNodesCollapseAll: this.treeNodesCollapseAll,\r\n      refreshTreeModel: this.refreshTreeModel,\r\n      editInFormBuilder: this.editInFormBuilder.bind(this),\r\n      addNode: this.addNode,\r\n      refreshActivityLogData: this.loadGridData.bind(this),\r\n      GoToFieldElement: this.gotoFieldElement.bind(this),\r\n      ListWatchName: this.listWatchName.bind(this),\r\n      onChangeWatchName: this.onChangeWatchName.bind(this),\r\n      getWatchName: this.getWatchName.bind(this),\r\n      fieldElementonEditorCodeChange: this.fieldElementonEditorCodeChange.bind(this),\r\n      gridActivityLogColumnFields: this.fieldService.getFormFieldCode(\r\n        DebuggerFieldElementName.ActivityLog.toString(),\r\n        FormType.formField,\r\n        this.group,\r\n        \"debugActivityLogField\"\r\n      ),\r\n      gridActivityLogOnItemClick: this.gridActivityLogOnItemClick.bind(this),\r\n      updateModel: this.updateModel.bind(this),\r\n      isAllowUpdateFieldElement: true,\r\n      isFieldElementReadOnly: false,\r\n      isLoadViaAsset: false,\r\n      isLoadViaOauthDB: true\r\n    });\r\n    if (!debuggerGroup.zData) {\r\n      debuggerGroup.zData = { collectedActivities: [], activityCount: 0 };\r\n    }\r\n\r\n    if (this.environment.loadViaAsset) {\r\n      if (!this.zcoreService.isAppRunningInLocalhost()) {\r\n        debuggerGroup['isAllowUpdateFieldElement'] = false;\r\n        debuggerGroup['isFieldElementReadOnly'] = true;\r\n      }\r\n      debuggerGroup['isLoadViaAsset'] = true;\r\n      debuggerGroup['isLoadViaOauthDB'] = false;\r\n    }\r\n\r\n    me.subscription = debuggerGroup.subject.subscribe((event: ZComponentOutputEvent) =>\r\n      this.subjectEvent(event, debuggerGroup, this)\r\n    );\r\n\r\n    this.patchFieldsProperty(fieldElements);\r\n\r\n    return this.loadDebugZModel(me);\r\n  }\r\n\r\n  private patchFieldsProperty(fieldElements: Array<ZField>) {\r\n    fieldElements.forEach(fieldElement => {\r\n      this.fieldService.patchFieldProperty(fieldElement);\r\n      if (Array.isArray(fieldElement.Value)) {\r\n        this.patchFieldsProperty(fieldElement.Value);\r\n      }\r\n    });\r\n  }\r\n\r\n  private loadDebugZModel(me: any) {\r\n    const projectId$ = this.getProjectId();\r\n    const formType = me.group.isListForm ? FormType.listField : FormType.formField;\r\n    const fieldElementFormName = me.group.fieldName;\r\n    const fieldzModel$ = this.getFieldzModel(formType, fieldElementFormName);\r\n\r\n    return forkJoin([projectId$, fieldzModel$]);  // Emits when all observables complete\r\n  }\r\n\r\n  private getProjectId() {\r\n    const debuggerGroup: ZGroup = this.debug;\r\n    const url = this.resourceApiService.getURL('projectsURL');\r\n\r\n    return this.webApiService.getApi(url, {}, debuggerGroup.zData, 'ProjectOptions', null, debuggerGroup, false);\r\n  }\r\n\r\n  private getFieldzModel(type: string, fieldElementFormName: string) {\r\n    const isFormField = type === 'FormField';\r\n\r\n    if (this.environment.loadViaAsset && !this.fieldService.centralisedFields.has(fieldElementFormName)) {\r\n      return isFormField ? this.getAssetFormFieldzModel(fieldElementFormName) : this.getAssetListFieldzModel(fieldElementFormName);\r\n    }\r\n\r\n    return isFormField ? this.getFormFieldzModel(fieldElementFormName) : this.getListFieldzModel(fieldElementFormName);\r\n  }\r\n\r\n  private editInFormBuilder(buttonEvent: any, group: ZGroup) {\r\n    const zModel = group && group.zModel ? group.zModel : this.debug.zModel;\r\n    if (zModel) {\r\n      const isAllowToAccessFormBuilderObs = this.environment.loadViaAsset ? this.webApiService.isAssetHttpNodeActive() : of(true);\r\n      isAllowToAccessFormBuilderObs.pipe(\r\n        tap(isActive => {\r\n          if (!isActive) {\r\n            this.toastService.show(`Please start your node server and try again.`, 'top', false, 2000, 'danger', `Local Node Server (Port: ${this.environment.nodeServerPort}) is unreachable`);\r\n            return;\r\n          }\r\n\r\n          const data = {\r\n            nodeServerPort: this.environment.nodeServerPort,\r\n            isLoadViaAsset: this.environment.loadViaAsset,\r\n            fieldElementName: zModel.Name,\r\n            formType: zModel.Type ?? FormType.formField\r\n          } as FormBuilderQueryParamData;\r\n\r\n          const dataStr = window.btoa(JSON.stringify(data));\r\n\r\n          let oauthAdminPortalURL = 'https://e1sit.musimmas.com/OAuthAdminWeb';\r\n\r\n          if (this.environment && this.environment.customResource && this.environment.customResource.length > 0 && this.environment.customResource[0]['oauthAdminPortalUrl']) {\r\n            oauthAdminPortalURL = this.environment.customResource[0]['oauthAdminPortalUrl'];\r\n          }\r\n\r\n          console.log(`Route to:  ${oauthAdminPortalURL}/oauthadmin/direct-access?${FormBuilderDirectAccessQueryParamKey.Module}=${FormBuilderDirectAccessQueryParamValue.FormBuilder}&${FormBuilderDirectAccessQueryParamKey.Data}=${dataStr}`);\r\n          window.open(`${oauthAdminPortalURL}/oauthadmin/direct-access?${FormBuilderDirectAccessQueryParamKey.Module}=${FormBuilderDirectAccessQueryParamValue.FormBuilder}&${FormBuilderDirectAccessQueryParamKey.Data}=${dataStr}`, \"_blank\");\r\n        })\r\n      ).subscribe();\r\n    }\r\n  }\r\n\r\n  private getFormFieldzModel(fieldElementFormName: string) {\r\n    const debuggerGroup: ZGroup = this.debug;\r\n    const fieldUrl = this.resourceApiService.getURL('field');\r\n\r\n    return this.webApiService.httpGet$(fieldUrl, { name: fieldElementFormName, type: FormType.formField }).pipe(\r\n      tap((respData: any) => {\r\n        // console.log('respData: ', respData);\r\n        Object.assign(debuggerGroup.zModel, respData);\r\n        debuggerGroup.form.patchValue(debuggerGroup.zModel);\r\n        debuggerGroup.form.markAsPristine();\r\n        const fields = JSON.parse(debuggerGroup.zModel.Code);\r\n        Object.assign(debuggerGroup, {\r\n          treeModel: ZComponentHelper.convertTreeModel(fields)\r\n        });\r\n      })\r\n    );\r\n  }\r\n\r\n  private getListFieldzModel(fieldElementFormName: string) {\r\n    const debuggerGroup = this.debug;\r\n    const fieldsMappingUrl = this.resourceApiService.getURL('fieldsMapping');\r\n    const fieldUrl = this.resourceApiService.getURL('field');\r\n\r\n    return this.webApiService.httpGet$(fieldsMappingUrl, { name: fieldElementFormName }).pipe(\r\n      switchMap((fieldMapping: any) => {\r\n        // Fetch field data based on FieldElementMasterId\r\n        return this.webApiService.httpGet$(fieldUrl, { id: fieldMapping.FieldElementMasterId });\r\n      }),\r\n      tap((respData: any) => {\r\n        // Update debuggerGroup with field data\r\n        Object.assign(debuggerGroup.zModel, respData);\r\n\r\n        debuggerGroup.form.patchValue(debuggerGroup.zModel);\r\n        debuggerGroup.form.markAsPristine();\r\n\r\n        // Parse and convert Code to treeModel\r\n        try {\r\n          const fields = JSON.parse(debuggerGroup.zModel.Code);\r\n          Object.assign(debuggerGroup, {\r\n            treeModel: ZComponentHelper.convertTreeModel(fields)\r\n          });\r\n        } catch (error) {\r\n          console.error('Error parsing JSON:', error);\r\n        }\r\n      })\r\n    )\r\n  }\r\n\r\n  private getAssetFormFieldzModel(fieldElementFormName: string) {\r\n    const debuggerGroup: ZGroup = this.debug;\r\n    const param: AssetsNodeParam = {\r\n      assetsFolder: AssetsFolder.fieldelement,\r\n      name: fieldElementFormName,\r\n      extension: AssetsAllowedExtension.json\r\n    };\r\n\r\n    return this.webApiService.assetsHttpLocalGet(param).pipe(\r\n      tap((respData: any) => {\r\n        try {\r\n          Object.assign(debuggerGroup.zModel, respData);\r\n          debuggerGroup.form.patchValue(debuggerGroup.zModel);\r\n          debuggerGroup.form.markAsPristine();\r\n\r\n          if (!ZComponentHelper.isJson(debuggerGroup.zModel.Code)) {\r\n            Object.assign(debuggerGroup, {\r\n              treeModel: ZComponentHelper.convertTreeModel(JSON.parse(debuggerGroup.zModel.Code))\r\n            });\r\n          }\r\n          else {\r\n            Object.assign(debuggerGroup, {\r\n              treeModel: ZComponentHelper.convertTreeModel(debuggerGroup.zModel.Code)\r\n            });\r\n          }\r\n        }\r\n        catch (error) {\r\n          console.error('Error parsing JSON:', error);\r\n        }\r\n      })\r\n    );\r\n  }\r\n\r\n  private getAssetListFieldzModel(fieldElementFormName: string) {\r\n    const listParam: AssetsNodeParam = {\r\n      assetsFolder: AssetsFolder.listfieldmapping,\r\n      name: fieldElementFormName,\r\n      extension: AssetsAllowedExtension.json\r\n    }\r\n\r\n    return this.webApiService.assetsHttpLocalGet(listParam).pipe(\r\n      switchMap((fieldMapping: any) => {\r\n        return this.getAssetFormFieldzModel(fieldMapping.FieldElementMasterName)\r\n      })\r\n    )\r\n  }\r\n\r\n  private subjectEvent(event: ZComponentOutputEvent, group: ZGroup, me: any) {\r\n    if (!event || !event.target || event.target.startsWith(\"modalGroup.\")) {\r\n      return;\r\n    }\r\n    // console.log(\"** Debug - SubjectEvent\", event);\r\n    let callFunc;\r\n\r\n    try {\r\n      callFunc = ZComponentHelper.getGroupEvalValue.call(\r\n        me,\r\n        event.target\r\n      );\r\n      // ZComponentHelper.getGroupValue(event.Target, group);\r\n    } catch (error) {\r\n      console.warn(`Error in getGroupValue. Event target: ${event.target}. Error: ${error}`);\r\n    }\r\n\r\n    // callFunc(event);\r\n    if (typeof callFunc === \"function\") {\r\n      const newFunc = callFunc.bind(me);\r\n      newFunc(event, group, me);\r\n    }\r\n    else if (typeof callFunc === \"string\") {\r\n      if (event.type.endsWith(\"onNavigateTo\")) {\r\n        const nUrl = event.target.replace(\"/:id\", \"/\" + event.data);\r\n        this.router.navigate([nUrl]);\r\n        return;\r\n      }\r\n\r\n      if (event.type === \"zgrid-cellClick\") {\r\n        const cName = callFunc.slice(4);\r\n        this.showzModal(\r\n          {\r\n            fieldElementName: cName,\r\n            fieldElementObservable$: event.columnFields$,\r\n            parentGroup: group,\r\n            zModel: {},\r\n            formHeader: '',\r\n            referId: event.data.Id\r\n          }\r\n        ).subscribe();\r\n      }\r\n    }\r\n    else if (typeof callFunc === \"object\") {\r\n      if (event.type === \"zgrid-cellClick\") {\r\n        if (callFunc.navigateUrl) {\r\n          const url = callFunc.navigateUrl.replace(\":id\", event.data.Id);\r\n          this.router.navigate([url]);\r\n          return;\r\n        }\r\n\r\n        if (callFunc.formHeader) {\r\n          this.showzModal(\r\n            {\r\n              fieldElementName: callFunc.ctrlName,\r\n              fieldElementObservable$: event.columnFields$,\r\n              parentGroup: group,\r\n              zModel: {},\r\n              formHeader: callFunc.formHeader,\r\n              referId: event.data.Id\r\n            }\r\n          ).subscribe();\r\n\r\n          return;\r\n        }\r\n\r\n        console.warn(`Invalid callFunc type: ${callFunc}. Event target: ${event.target}`);\r\n      }\r\n    }\r\n    else {\r\n      console.warn(`Function not defined in group. Target: ${event.target}. Event details: `, event);\r\n    }\r\n  }\r\n\r\n  private gridActivityLogOnItemClick(event: any) {\r\n    // console.log('gridActivityLogOnItemClick: ', event);\r\n    const rec = event.dataItem;\r\n    switch (rec.type) {\r\n      case 'ListField':\r\n      case 'FormField':\r\n        this.getFieldzModel(rec.type, rec.activityName).subscribe(() => {\r\n          this.selectTab(0);\r\n        });\r\n        break;\r\n      case 'ResourceServerAPI':\r\n        const watchNameValue = '_debug.zData.collectedActivities[' + (rec.index - 1) + '].reference';\r\n        this.setWatchNameValue(watchNameValue);\r\n        this.selectTab(1);\r\n        break;\r\n      case 'HttpGet$':\r\n      case 'HttpPost$':\r\n      case 'HttpPut$':\r\n      case 'HttpDelete$':\r\n        this.setWatchNameValue('_debug.zData.collectedActivities[' + (rec.index - 1) + ']');\r\n        this.selectTab(1);\r\n        break;\r\n      default:\r\n        break;\r\n    }\r\n  }\r\n\r\n  private selectTab(index: number) {\r\n    // debugger;\r\n    // this.debug.zComponents[\"ztab_debuggerTabs\"].state.lastSelectedTabIndex = index;\r\n    // ZComponentHelper.getComponent(this.debug, 'ztab_debuggerTabs').state.lastSelectedTabIndex = index;\r\n    ZComponentHelper.getComponent(this.debug, 'ztab_debuggerTabs').selectTab(index);\r\n  }\r\n\r\n  private setWatchNameValue(newValue: string) {\r\n    this.debug.zModel['DebugWatchName'] = newValue;\r\n    ZComponentHelper.setModelValue('WatchName', newValue, this.debug, true);\r\n  }\r\n\r\n  public loadGridData() {\r\n    const activityLogGrid = ZComponentHelper.getComponent(this.debug, 'zgrid_ActivityLogGrid');\r\n    if (activityLogGrid) {\r\n      activityLogGrid.setData(this.debug.zData.collectedActivities);\r\n    }\r\n  }\r\n\r\n  private listWatchName(component: IonicSelectableComponent, searchText: string, pageNo: number,\r\n    me: any, dataItem: any, recordId?: string) {\r\n\r\n    const watchList = [\r\n      { Name: 'group.zModel' },\r\n      { Name: 'group.zData' },\r\n      { Name: 'group.fields' },\r\n      { Name: 'group.form.value' },\r\n      { Name: 'group.backNavigationPage' },\r\n      { Name: 'group.parentReferenceField' },\r\n      { Name: 'group.parentReferenceId' },\r\n      { Name: 'Object.keys(group.zComponents)' },\r\n      { Name: 'group.gridOptions.zgrid.grid.data' }\r\n      // { Name: 'Object.keys(_debug.zComponents)' },\r\n      // { Name: '_debug.zModel' },\r\n      // { Name: '_debug.zData' },\r\n      // { Name: '_debug.zData.collectedActivities' },\r\n    ];\r\n\r\n    const additionalWatchList = this.scope?.group?.additionalWatchList;\r\n    if (additionalWatchList) {\r\n      additionalWatchList.forEach(item => {\r\n        watchList.push({ Name: item });\r\n      })\r\n    }\r\n\r\n    let results;\r\n    if (searchText) {\r\n      results = watchList.filter((s) => s.Name.toLowerCase().indexOf(searchText.toLowerCase()) !== -1);\r\n    }\r\n\r\n    if (pageNo === 0 && searchText) {\r\n      return of({ dataSet: results });\r\n    } else if (pageNo === 0) {\r\n      return of({ dataSet: watchList });\r\n    } else {\r\n      return of({ dataSet: [] });\r\n    }\r\n  }\r\n\r\n  private getWatchName() {\r\n    return this.debug.zModel.DebugWatchName;\r\n  }\r\n\r\n  private onChangeWatchName(event: any, group: ZGroup, me: any) {\r\n    // console.log('onChangeWatchName: ', event.data.value);\r\n    const newValue = event.data.value;\r\n    if (newValue) {\r\n      this.debug.zModel['DebugWatchName'] = newValue.replace('group', '_group');\r\n    }\r\n  }\r\n\r\n  private fieldElementonEditorCodeChange(el: ZComponentOutputEvent) {\r\n    this.refreshTreeModel();\r\n  }\r\n\r\n\r\n  private treeNodesExpandAll() {\r\n    this.debug.zComponents['ztree_debugZTree'].expandAll();\r\n  }\r\n\r\n  private treeNodesCollapseAll() {\r\n    this.debug.zComponents['ztree_debugZTree'].collapseAll();\r\n  }\r\n\r\n  private refreshTreeModel() {\r\n    try {\r\n      const d = JSON.parse(this.debug.zModel.Code);\r\n      // this._addNodesToTree(d);\r\n      // group['treeModel'] = this.convertTreeModel(d);\r\n      this.debug['treeModel'] = ZComponentHelper.convertTreeModel(d);\r\n    } catch {\r\n      debugger;\r\n    }\r\n  }\r\n\r\n  private treeItemTemplate(el: ZTreeTemplateParams) {\r\n    const getFieldValue = (item: any) => {\r\n      if (typeof item._DataValue === \"string\") {\r\n        return item._DataValue;\r\n      }\r\n      return \"...\";\r\n    };\r\n    return (\r\n      el.dataItem.Name +\r\n      \" - [\" +\r\n      el.dataItem.Type +\r\n      \"] = \" +\r\n      getFieldValue(el.dataItem)\r\n    );\r\n  }\r\n\r\n  async onItemClick(event: ZComponentOutputEvent) {\r\n    // debugger;\r\n    console.log(\"onItemClick data received: \", event);\r\n    const dataItem = Object.assign({}, event.data);\r\n    dataItem.Value = dataItem._DataValue;\r\n    delete dataItem._DataValue;\r\n    const zmodel = {\r\n      nodeModel: JSON.stringify(dataItem, null, 2)\r\n    };\r\n\r\n    this.showzModal(\r\n      {\r\n        fieldElementName: 'ionmvEditFieldNodeForm',\r\n        parentGroup: this.debug._group,\r\n        zModel: zmodel,\r\n        formHeader: 'Field Element Info'\r\n      }\r\n    ).subscribe((modalData: ModalResponse) => {\r\n      if (modalData.responseType === \"cancel\") {\r\n        return;\r\n      }\r\n      const newData = JSON.parse(modalData.data.nodeModel);\r\n      if (newData.Value) {\r\n        newData._DataValue = newData.Value;\r\n        newData.Value = null;\r\n      }\r\n      this.updateTreeNode(newData, this.debug['treeModel'], event.event);\r\n      const newTreeModel = JSON.parse(JSON.stringify(this.debug['treeModel']));\r\n      const revertedModel = ZComponentHelper.revertTreeModel(newTreeModel);\r\n      const newCode = JSON.stringify(revertedModel, null, 2);\r\n      ZComponentHelper.setModelValue(\"Code\", newCode, this.debug);\r\n      this.updateModel();\r\n      // this.mainService.updateModel(null, this.debug);\r\n    });\r\n  }\r\n\r\n  private updateTreeNode(newNode: any, treeModel: any, index: string) {\r\n    const treeIndex = index.split(\"_\");\r\n    if (treeIndex.length > 1) {\r\n      const newIndex = treeIndex.slice(1).join(\"_\");\r\n      this.updateTreeNode(newNode, treeModel[+treeIndex[0]].Value, newIndex);\r\n    }\r\n    else {\r\n      if (treeModel[+treeIndex[0]].Value) {\r\n        newNode.Value = treeModel[+treeIndex[0]].Value;\r\n      }\r\n      treeModel[+treeIndex[0]] = newNode;\r\n    }\r\n  }\r\n\r\n  private insertTreeNode(newNode: any, treeModel: any, index: string) {\r\n    const treeIndex = index.split(\"_\");\r\n    if (treeIndex.length > 1) {\r\n      const newIndex = treeIndex.slice(1).join(\"_\");\r\n      this.insertTreeNode(newNode, treeModel[+treeIndex[0]].Value, newIndex);\r\n    } else {\r\n      if (treeIndex[0]) {\r\n        if (!Array.isArray(treeModel[+treeIndex[0]].Value)) {\r\n          treeModel[+treeIndex[0]].Value = [];\r\n        }\r\n        treeModel[+treeIndex[0]].Value.push(newNode);\r\n      } else {\r\n        treeModel.push(newNode);\r\n      }\r\n    }\r\n  }\r\n\r\n  private removeTreeNode(treeModel: any, index: string) {\r\n    const treeIndex = index.split(\"_\");\r\n    if (treeIndex.length > 1) {\r\n      const newIndex = treeIndex.slice(1).join(\"_\");\r\n      this.removeTreeNode(treeModel[+treeIndex[0]].Value, newIndex);\r\n    } else {\r\n      treeModel.splice(+treeIndex[0], 1);\r\n    }\r\n  }\r\n\r\n  private onTreeNodeChange(el: ZComponentOutputEvent) {\r\n    console.log(\"onTreeNodeChange: \", el);\r\n    const codeData = JSON.stringify(el.data);\r\n    ZComponentHelper.setModelValue(\"Code\", codeData, this.debug);\r\n  }\r\n\r\n  private addNode() {\r\n    const el: ZComponentOutputEvent = {\r\n      data: {},\r\n      rowData: {},\r\n      event: \"\",\r\n      target: \"\",\r\n      type: \"\",\r\n      columnFields$: null\r\n    };\r\n    this.onAddNode(el);\r\n  }\r\n\r\n  private async onAddNode(el: ZComponentOutputEvent) {\r\n    console.log('onAddNode is called', el);\r\n    // const dataItem = Object.assign({}, el.data);\r\n    // dataItem.Value = dataItem._DataValue;\r\n    // delete dataItem._DataValue;\r\n    const initialModel = {\r\n      Name: 'Name', DisplayName: 'Name', Value: 'Name', Type: 'text',\r\n      gridColVisible: true,\r\n      width: 150,\r\n      minWidth: 100,\r\n      enableFiltering: true,\r\n      enableSorting: true,\r\n      pinnedLeft: false,\r\n      PlaceHolder: \"Name\",\r\n      IsRequired: false,\r\n      MinLength: 2,\r\n      MaxLength: 50,\r\n      Label: \"Name:\",\r\n      DivClass: \"col-xs-12 col-sm-6 col-md-6 col-lg-3\",\r\n      ReadOnly: false,\r\n      ShowLabel: true,\r\n      Visible: true,\r\n      EnableHiding: false,\r\n      //cellFilter: \"\",\r\n      //filterCellFiltered: false,\r\n      //enablePinning: true,\r\n      //pinnedRight: false,\r\n      //UpdateOnBlur: true,\r\n      //AppendDivClearFix: false,\r\n    };\r\n    const zmodel = {\r\n      nodeModel: JSON.stringify(initialModel, null, 2)\r\n    };\r\n\r\n    this.showzModal(\r\n      {\r\n        fieldElementName: 'ionmvEditFieldNodeForm',\r\n        parentGroup: this.debug._group,\r\n        zModel: zmodel,\r\n        formHeader: 'Add Field Element Item'\r\n      }\r\n    ).subscribe((modalData: ModalResponse) => {\r\n      if (modalData.responseType === \"cancel\") {\r\n        return;\r\n      }\r\n      const newData = JSON.parse(modalData.data.nodeModel);\r\n      if (newData.Value) {\r\n        newData._DataValue = newData.Value;\r\n        newData.Value = null;\r\n      }\r\n      this.insertTreeNode(newData, this.debug[\"treeModel\"], el.event);\r\n      const newTreeModel = JSON.parse(JSON.stringify(this.debug['treeModel']));\r\n      const revertedModel = ZComponentHelper.revertTreeModel(newTreeModel);\r\n      const newCode = JSON.stringify(revertedModel, null, 2);\r\n      ZComponentHelper.setModelValue(\"Code\", newCode, this.debug);\r\n      this.updateModel();\r\n      // this.mainService.updateModel(null, this.debug);\r\n    });\r\n  }\r\n\r\n  private onRemoveNode(el: ZComponentOutputEvent) {\r\n    this.alertService.show('Remove Node', 'Are you sure?',\r\n      [\r\n        { text: \"No\", cssClass: \"secondary\" } as AlertButton,\r\n        { text: \"Yes\", cssClass: \"primary\" } as AlertButton\r\n      ])\r\n      .subscribe(reply => {\r\n        if (reply === 'Yes') {\r\n          console.log('Remove Node', el);\r\n          this.removeTreeNode(this.debug[\"treeModel\"], el.event);\r\n          const newTreeModel = JSON.parse(JSON.stringify(this.debug['treeModel']));\r\n          const revertedModel = ZComponentHelper.revertTreeModel(newTreeModel);\r\n          const newCode = JSON.stringify(revertedModel, null, 2);\r\n          ZComponentHelper.setModelValue(\"Code\", newCode, this.debug);\r\n        }\r\n      });\r\n  }\r\n\r\n  private gotoFieldElement() {\r\n    this.router.navigate(['admin/field']);\r\n  }\r\n\r\n  private updateModel() {\r\n    const debug = this.debug;\r\n    const fg = this.debug.form as FormGroup;\r\n    if (!fg.dirty) {\r\n      console.warn(\"The debug form is not dirty, so the record is not saved.\");\r\n      return;\r\n    }\r\n\r\n    if (!fg.valid) {\r\n      this.componentErrorHandlerService.showFormGroupErrorMessage(this.group, fg);\r\n      return;\r\n    }\r\n\r\n    of(debug.zModel)\r\n      .pipe(\r\n        // switchMap(zmodel => {\r\n        //   console.log(\"Before update, zModel:\", zmodel);\r\n        //   return this.beforeUpdateModel(group);\r\n        // }),\r\n        tap(() => {\r\n          Object.assign(debug.zModel, fg.value);\r\n        }),\r\n        switchMap(() => {\r\n          if (this.environment.loadViaAsset) {\r\n            const payload = typeof debug.zModel === 'string' ? JSON.parse(debug.zModel) : debug.zModel;\r\n            const param: AssetsNodeParam = {\r\n              id: debug.zModel.Id,\r\n              assetsRoute: AssetsRoutes.fields,\r\n              assetsFolder: AssetsFolder.fieldelement,\r\n              params: payload\r\n            }\r\n            return this.webApiService.assetsHttpNodePut(param).pipe(\r\n              map(res => this.handleSuccess(res, \"Record is updated successfully.\")),\r\n              map(res => this.signalrService.sendToClientGroup(this.groupsToSend, this.eventName, debug.zModel))\r\n            );\r\n          }\r\n\r\n          return this.webApiService.httpPut$(`${debug.resourceURL}/${debug.zModel.Id}`, debug.zModel).pipe(\r\n            map(res => this.handleSuccess(res, \"Record is updated successfully.\")),\r\n            map(res => this.signalrService.sendToClientGroup(this.groupsToSend, this.eventName, debug.zModel))\r\n          );\r\n        }),\r\n        switchMap((zmodel: any) => {\r\n          console.log(\"After updating Debug Form, zModel:\", zmodel);\r\n          if (zmodel && zmodel.Data) {\r\n            Object.assign(debug.zModel, zmodel.Data);\r\n            fg.patchValue(zmodel.Data);\r\n          }\r\n          fg.markAsPristine();\r\n          //   this.afterUpdateModel(group);\r\n          return of([]);\r\n        }))\r\n      .subscribe();\r\n  }\r\n\r\n\r\n  // ******************** Workflow Button ********************\r\n  // not in use, plan to enhance for the usage for future.\r\n  public loadWorkflowData() {\r\n    const zgrid_WorkflowButtonGrid = ZComponentHelper.getComponent(this.debug, 'zgrid_WorkflowButtonGrid');\r\n    if (zgrid_WorkflowButtonGrid) {\r\n      zgrid_WorkflowButtonGrid.setData(this.debug.zData.collectedWorkflowButtons);\r\n    }\r\n  }\r\n\r\n  private gridWorkflowButtonOnItemClick(event: any) {\r\n    const dataItem = Object.assign({}, event.dataItem);\r\n    const field = dataItem.refField;\r\n    const attribute = dataItem.refAttribute;\r\n\r\n    // Get Mapped Info\r\n    const params = new HttpParams()\r\n      .set(\"ButtonId\", field.Id);\r\n    this.webApiService.httpPost$(this.resourceApiService.getURL(\"e1wfs_wfc_getmappedButtonInfoURL\"), params).pipe(\r\n      map(async res => {\r\n        let roleInfo = [];\r\n        let statusInfo = [];\r\n        let parentStatusInfo = [];\r\n\r\n        if (res.MappedRoleList) {\r\n          roleInfo = res.MappedRoleList;\r\n        }\r\n\r\n        if (res.MappedStatusList) {\r\n          res.MappedStatusList.forEach((_status: any) => {\r\n            statusInfo.push(_status.Name + ' (' + _status.Code + ')');\r\n          });\r\n        }\r\n\r\n        if (res.MappedParentStatusList) {\r\n          res.MappedParentStatusList.forEach((_parentStatus: any) => {\r\n            parentStatusInfo.push(_parentStatus.Name + ' (' + _parentStatus.Code + ')');\r\n          });\r\n        }\r\n\r\n        const _mappedInfo = {\r\n          'mappedRoleInfo': roleInfo.length > 0 ? roleInfo : 'N.A.',\r\n          'mappedStatusInfo': statusInfo.length > 0 ? statusInfo : 'N.A.',\r\n          'mappedParentStatusInfo': parentStatusInfo.length > 0 ? parentStatusInfo : 'N.A.'\r\n        };\r\n\r\n        // retreive all important info\r\n        const _buttonInfo = {\r\n          'WorkflowId': field.WorkflowId,\r\n          'ButtonId': field.Id,\r\n          'ButtonName': field.Name,\r\n          'ButtonCode': field.Code,\r\n          'ButtonTypeId': field.Type.Id,\r\n          'ButtonTypeName': field.Type.Name,\r\n          'ButtonTypeCode': field.Type.Code,\r\n          'ButtonVisible': attribute.Visible,\r\n          'ButtonClickEvent': attribute.ClickEvent,\r\n          'ButtonURL': attribute.URL,\r\n          'ButtonIcon': attribute.Icon\r\n        };\r\n\r\n        let _gotoStatusInfo = {\r\n          'GotoStatusId': 'N.A.',\r\n          'GotoStatusName': 'N.A.',\r\n          'GotoStatusCode': 'N.A.'\r\n        };\r\n\r\n        if (field.Status) {\r\n          const _gotoStatus = field.Status\r\n          _gotoStatusInfo = {\r\n            'GotoStatusId': _gotoStatus.Id,\r\n            'GotoStatusName': _gotoStatus.Name,\r\n            'GotoStatusCode': _gotoStatus.Code\r\n          }\r\n        }\r\n\r\n        const propertiesModel = Object.assign(_buttonInfo, _gotoStatusInfo, _mappedInfo);\r\n        this.showzModal(\r\n          {\r\n            fieldElementName: 'mvWorkflowButtonDebugForm',\r\n            parentGroup: this.debug._group,\r\n            zModel: propertiesModel,\r\n            formHeader: 'Workflow Button Info'\r\n          }\r\n        ).subscribe((modalData: ModalResponse) => {\r\n          if (modalData.responseType === \"cancel\") {\r\n            return;\r\n          }\r\n        });\r\n      })\r\n    ).subscribe();\r\n  }\r\n\r\n  handleSuccess(res: Response | any, successMsg: string): Response {\r\n    if (res == null) {\r\n      this.toastService.show(successMsg);\r\n    } else if (res.Data !== undefined && res.ProcessingStatus !== undefined) {\r\n      if (res.ProcessingStatus === true) {\r\n        if (Array.isArray(res.Data)) {\r\n          res.Data.map(s => this.webApiService.showHttpResponseMessage(MESSAGETYPE.Success,\r\n            `${successMsg} : ${s.CostCode}`, null));\r\n        } else {\r\n          this.webApiService.showHttpResponseMessage(MESSAGETYPE.Success, successMsg, null);\r\n        }\r\n      }\r\n    } else {\r\n      this.toastService.show(successMsg);\r\n    }\r\n    return res;\r\n  }\r\n\r\n  handleError(res: any): Observable<any> {\r\n    return this.webApiService.handleError(res);\r\n  }\r\n\r\n  // Clone the method from mainservice: To prevent circular dependency when inject main service\r\n  public showzModal(modalPageParams: ModalPageParams): Observable<ModalResponse> {\r\n    if (modalPageParams.parentGroup) {\r\n      // disable isTriggered before display the popup.\r\n      modalPageParams.parentGroup.isTriggered = false;\r\n    }\r\n    return this.modalService.show(modalPageParams);\r\n  }\r\n}\r\n","/********** Angular **********/\r\nimport { ComponentRef, Injectable } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { HttpParams } from '@angular/common/http';\r\nimport { NavigationStart, NavigationEnd, NavigationError, Router, Event, ActivatedRoute } from '@angular/router';\r\n\r\n/********** Ionic **********/\r\nimport { ModalController, NavController } from '@ionic/angular';\r\n\r\n/********** Plugin **********/\r\nimport { Observable, BehaviorSubject, Subscription, of, forkJoin, from } from 'rxjs';\r\nimport { tap, switchMap, map, mergeAll } from 'rxjs/operators';\r\nimport { DialogRef, DialogService, DialogSettings } from '@progress/kendo-angular-dialog';\r\n\r\n/********** Component & Service **********/\r\nimport { ZComponentDebugService } from './zcomponent.debug.service';\r\nimport { ZGrid } from '../zgrid/zgrid.component';\r\nimport { ModalService, ModalResponse } from 'mmhglobal-zmodal';\r\nimport {\r\n  AlertButton, MESSAGETYPE, AlertService, ZComponentHelper, ModalPageParams,\r\n  CacheService, FieldService, ResourceApiService, TranslationService, WebApiService, StorageSessionService, OAuth2Service, SignalrService, ComponentErrorHandlerService,\r\n  ZComponentOutputEvent, ZCoreService, ZField, ZGroup, DefaultMessage, DefaultDialogTitle, ActionType, ToastService, AuthService, FormType, TriggerFromType,\r\n  WebApiAdditionalDetail, MenuService, OAuthMenuItem\r\n} from 'mmhglobal-zcore';\r\n\r\n@Injectable({\r\n  providedIn: 'root',\r\n})\r\n\r\nexport class MainService {\r\n  private group: ZGroup;\r\n  private oauthEnvironmentUrl: string;\r\n  private environment;\r\n  private backNavigationPath: string[] = [];\r\n  private routeParam: string[] = [];\r\n  private previousRouteParam: string;\r\n  public currentUrl: string = '';\r\n\r\n  private NAVIGATION_PARAMS_STORAGE_KEY = 'routeParam';\r\n  private PREVIOUS_PAGE_ROUTE_PARAM_STORAGE_KEY = 'previousPageRouteParam';\r\n  private BACK_NAVIGATION_PATH_STORAGE_KEY = 'backNavigationPath';\r\n  private NAVIGATED_RELOAD_GRID_STORAGE_KEY = 'navigatedReloadGrid';\r\n  private CLONE_NEW_MODEL_CACHE_KEY = 'cloneNewModel';\r\n\r\n  private readonly secretKey = 'my-secret-key';\r\n  private previousUrl: string;\r\n  private navigationStartTime: number;\r\n\r\n  constructor(\r\n    private router: Router,\r\n    private activatedRoute: ActivatedRoute,\r\n    private modalCtrl: ModalController,\r\n    private navController: NavController,\r\n    private alertService: AlertService,\r\n    private cacheService: CacheService,\r\n    private fieldService: FieldService,\r\n    private resourceApiService: ResourceApiService,\r\n    private componentErrorHandlerService: ComponentErrorHandlerService,\r\n    private webApiService: WebApiService,\r\n    private zcoreService: ZCoreService,\r\n    private modalService: ModalService,\r\n    private storageService: StorageSessionService,\r\n    private debugService: ZComponentDebugService,\r\n    private translationService: TranslationService,\r\n    private signalrService: SignalrService,\r\n    private dialogService: DialogService,\r\n    private oauth2Service: OAuth2Service,\r\n    private toastService: ToastService,\r\n    private authService: AuthService,\r\n    private menuService: MenuService\r\n  ) {\r\n    console.log('MainService constructor');\r\n    this.environment = this.zcoreService.getEnvironment();\r\n    this.oauthEnvironmentUrl = this.zcoreService.getOauthUrl();\r\n    this.router.events.subscribe((event: Event) => {\r\n      if (event instanceof NavigationStart) {\r\n        this.handleNavigationStart(event);\r\n      }\r\n\r\n      if (event instanceof NavigationEnd) {\r\n        this.handleNavigationEnd(event);\r\n      }\r\n\r\n      if (event instanceof NavigationError) {\r\n        this.handleNavigationError(event);\r\n      }\r\n    });\r\n  }\r\n\r\n\r\n  private dismissAllOverlays(): void {\r\n    this.toastService?.dismissAll();\r\n    this.alertService?.dismissAll();\r\n    this.modalService?.dismissAll();\r\n  }\r\n\r\n  private handleNavigationStart(event: NavigationStart): void {\r\n    console.log(event);\r\n\r\n    this.navigationStartTime = performance.now();\r\n    this.previousUrl = this.currentUrl || window.location.pathname;\r\n    this.currentUrl = event.url;\r\n\r\n    const triggerType = this.previousUrl === this.currentUrl ? TriggerFromType.refreshStart : TriggerFromType.navigateStart;\r\n    this.updateAppMonPerformance(triggerType, this.previousUrl, true).subscribe();\r\n\r\n    this.dismissAllOverlays();\r\n\r\n    if (this.getStartupPage() === event.url) {\r\n      this.resetRouteParam();\r\n    }\r\n  }\r\n\r\n  private handleNavigationEnd(event: NavigationEnd): void {\r\n    const duration = performance.now() - this.navigationStartTime;\r\n    const triggerType = this.previousUrl === this.currentUrl ? TriggerFromType.refreshEnd : TriggerFromType.navigateEnd;\r\n\r\n    this.updateAppMonPerformance(triggerType, event.urlAfterRedirects, true, duration).subscribe();\r\n    this.currentUrl = event.urlAfterRedirects;\r\n\r\n    console.log(event);\r\n  }\r\n\r\n  private handleNavigationError(event: NavigationError): void {\r\n    const duration = performance.now() - this.navigationStartTime;\r\n    this.updateAppMonPerformance(TriggerFromType.navigateError, this.previousUrl, false, duration).subscribe();\r\n\r\n    console.log(event.error);\r\n    this.removeLastNavigateRecord();\r\n  }\r\n\r\n  private updateAppMonPerformance(\r\n    triggerType: TriggerFromType,\r\n    url: string,\r\n    isSuccess: boolean,\r\n    duration?: number\r\n  ): Observable<any> {\r\n    if (this.environment.skipAppmon)\r\n    {\r\n      return of({});\r\n    }\r\n\r\n    // Initialize appmonDomainUrl if missing\r\n    if (!this.resourceApiService.appmonDomainUrl) {\r\n      this.resourceApiService.appmonDomainUrl = sessionStorage.getItem('AppmonDomainUrl') || '';\r\n    }\r\n\r\n    // Check for required dependencies\r\n    if (!this.authService.e1Token || !this.resourceApiService.appmonDomainUrl) {\r\n      return of({});\r\n    }\r\n\r\n    const getCurrentTimestamp = (): string => {\r\n      const date = new Date();\r\n      const pad = (n: number) => n.toString().padStart(2, '0');\r\n      return `${date.getFullYear()}-${pad(date.getMonth() + 1)}-${pad(date.getDate())} ${pad(date.getHours())}:${pad(date.getMinutes())}:${pad(date.getSeconds())}.${date.getMilliseconds().toString().padStart(7, '0')}`;\r\n    };\r\n\r\n    const timestamp = getCurrentTimestamp();\r\n    const currentDomain = window.location.origin;\r\n\r\n    // Determine menu name\r\n    const LOGIN_PAGE = 'LoginPage';\r\n    const HOME_PAGE = 'HomePage';\r\n    const AUTH_PATH = '/auth';\r\n\r\n    let menuName = sessionStorage.getItem('menuName') || null;\r\n    if (window.location.pathname === AUTH_PATH) {\r\n      menuName = LOGIN_PAGE;\r\n    } else if (window.location.pathname === this.environment.startUpPage) {\r\n      menuName = HOME_PAGE;\r\n    }\r\n\r\n    // Build the request payload\r\n    const params = {\r\n      Url: `${currentDomain}${url}`,\r\n      IsAuthenticated: true,\r\n      Timestamp: timestamp,\r\n      Duration: duration ?? null,\r\n      RequestMethod: 'POST',\r\n      UserName: this.authService.userId,\r\n      UserId: this.authService.e1Token?.userName || '',\r\n      Success: isSuccess,\r\n      Environment: 'UI',\r\n      ProjectCode: this.environment.projectCodes[0],\r\n      SourceName: this.environment.projectCodes[0],\r\n      ComponentCode: null,\r\n      EventId: null,\r\n      EventType: triggerType,\r\n      SessionId: sessionStorage.getItem('sessionTabId'),\r\n      MenuName: menuName,\r\n    };\r\n\r\n    // API Endpoint\r\n    const apiEndpoint = `${this.resourceApiService.appmonDomainUrl}api/ApiSummaryInfos/`;\r\n\r\n    // Call the web API and handle errors\r\n    return this.webApiService.httpPost$(apiEndpoint, params);\r\n  }\r\n\r\n  //#region for signalR alert\r\n  public getListFieldName = (fieldName: string): Observable<string> => {\r\n    const params = new HttpParams().set(\"name\", fieldName);\r\n    return this.oauth2Service.httpGet$(this.fieldService.listFieldApiRoute, params).pipe(\r\n      map(res => (res as any).FieldElementMasterId),\r\n      switchMap(id => this.oauth2Service.httpGet$(this.fieldService.formFieldApiRoute, { id })),\r\n      map(res => (res as any).Name as string)\r\n    );\r\n  }\r\n\r\n  public clearFormListFields = () => {\r\n    this.fieldService.dataFormFields = {};\r\n    this.fieldService.dataListFields = {};\r\n    this.fieldService.dataListFieldItems = {};\r\n  }\r\n\r\n  dialogOpen(options: DialogSettings): DialogRef {\r\n    return this.dialogService.open(options);\r\n  }\r\n  //#endregion\r\n\r\n  startUp() {\r\n    console.log('At main.service (StartUp) ...');\r\n  }\r\n\r\n  setGroup(group: ZGroup) {\r\n    this.group = group;\r\n    this.fieldService.setGroup(group);\r\n    this.resourceApiService.setGroup(group);\r\n    this.webApiService.setGroup(group);\r\n    this.setGroupForDebugger(group);\r\n  }\r\n\r\n  getResourceServerData() {\r\n    return this.resourceApiService.loadData();\r\n  }\r\n\r\n  getGroupFields(\r\n    fieldElementName: string,\r\n    formType: FormType | 'ListField' | 'FormField',\r\n    triggerFrom: TriggerFromType,\r\n    group: ZGroup,\r\n    propertyName: string\r\n  ) {\r\n    return this.fieldService.getFormFieldCode(\r\n      fieldElementName,\r\n      formType,\r\n      group,\r\n      propertyName,\r\n      triggerFrom\r\n    );\r\n  }\r\n\r\n  initializeGroup(\r\n    group: ZGroup,\r\n    ctrlName: string,\r\n    pageName: string,\r\n    me: any\r\n  ): Subscription {\r\n    if (me.subscription) {\r\n      me.subscription.unsubscribe();\r\n    }\r\n    const resourceName = group.resourceURLName || ctrlName;\r\n    group.resourceURLName = resourceName;\r\n\r\n    Object.assign(group, {\r\n      resourceURL: this.resourceApiService.getURL(resourceName),\r\n      gridColumnFields: this.fieldService.getFormFieldCode(\r\n        ctrlName,\r\n        \"FormField\"\r\n      ),\r\n      ctrlScope: me,\r\n      pageName,\r\n      ctrlName,\r\n      // createModelURL: \"/create\" + ctrlName.toLowerCase(),\r\n      editModelURL: ctrlName.toLowerCase(),\r\n      // listModelURL: \"/list\" + ctrlName.toLowerCase(),\r\n      // formHeader: \"...\",\r\n      isLoading: true,\r\n      fields: [],\r\n      zModel: {},\r\n      zComponents: {},\r\n      zData: {},\r\n      subject: new BehaviorSubject<ZComponentOutputEvent>(null),\r\n      // form: null as FormGroup, // removed for bug fix.\r\n      cancelButtonName: \"Close\",\r\n      zButtonsCount: 0,\r\n      // topRightActionButton: [],\r\n      // onAction: this.onAction.bind(this),\r\n      backNavigation: this.backNavigation.bind(this),\r\n      historyBack: this.historyBack.bind(this),\r\n      refreshPage: this.refreshPage.bind(this),\r\n      refreshGrid: this.refreshGrid.bind(this),\r\n      updateModel: this.updateModel.bind(this),\r\n      createModel: this.createModel.bind(this),\r\n      cloneNewModel: this.cloneNewModel.bind(this),\r\n      deleteModel: this.deleteModel.bind(this),\r\n      newModel: this.newModel.bind(this),\r\n      // updateEditMode: this.updateEditMode.bind(this),\r\n      // _isDebugging: environment.debugSession || false,\r\n      // _debug: {\r\n      //   zData:  { collectedActivities: [], activityCount: 0 }\r\n      // }\r\n      // afterGetModelSuccess: null,\r\n      // beforeUpdateModel: null,\r\n      // isEdit: false\r\n    });\r\n\r\n    me.subscription = group.subject.subscribe((event: ZComponentOutputEvent) =>\r\n      this.subjectEvent(event, group, me)\r\n    );\r\n\r\n    return me.subscription;\r\n  }\r\n\r\n  getModel$(group: ZGroup, id: string, triggerFrom?: TriggerFromType): Observable<any> {\r\n    const recId = id || group.referenceId;\r\n    return this.webApiService\r\n      .httpGet$(`${group.resourceURL}/${recId}`, null, { triggerFrom: triggerFrom })\r\n      .pipe(\r\n        tap((zmodel) => {\r\n          group.zModel = zmodel;\r\n        }),\r\n        switchMap(() => {\r\n          if (group.afterGetModelSuccess) {\r\n            return this.afterGetModelSuccess(group);\r\n          }\r\n          return of([]);\r\n        })\r\n      );\r\n  }\r\n\r\n  canExit(form: FormGroup): boolean | Observable<boolean> {\r\n    if (!form || !form.dirty) {\r\n      return true;\r\n    }\r\n\r\n    if (form['skipDirtyCheck']) {\r\n      return true;\r\n    }\r\n\r\n    return this.alertService\r\n      .show(\"Data not save yet\", \"Are you sure want to discard the changes?\", [\r\n        \"Cancel\",\r\n        \"Discard Changes\",\r\n      ])\r\n      .pipe(\r\n        switchMap((reply) => {\r\n          if (reply === \"Discard Changes\") {\r\n            return of(true);\r\n          }\r\n          return of(false);\r\n        })\r\n      );\r\n  }\r\n\r\n  closeModalForm(group?: ZGroup) {\r\n    if (group && group.subject) {\r\n      group.subject.next({\r\n        type: \"ModalService.close\",\r\n        target: \"modalGroup.modalCancel()\"\r\n      } as ZComponentOutputEvent);\r\n    }\r\n    else {\r\n      this.modalCtrl.dismiss();\r\n    }\r\n  }\r\n\r\n  subjectEvent(event: ZComponentOutputEvent, group: ZGroup, me: any) {\r\n    if (!event || !event.target || event.target.startsWith(\"modalGroup.\")) {\r\n      return;\r\n    }\r\n    console.log(\">> SubjectEvent\", event);\r\n    let callFunc;\r\n\r\n    try {\r\n      callFunc = ZComponentHelper.getGroupEvalValue.call(\r\n        group.ctrlScope,\r\n        event.target,\r\n        group\r\n      );\r\n      // ZComponentHelper.getGroupValue(event.Target, group);\r\n    } catch (error) {\r\n      console.warn(\r\n        \"Error when getGroupValue: \",\r\n        event.target,\r\n        \" > Error: \",\r\n        error\r\n      );\r\n    }\r\n\r\n    // callFunc(event);\r\n    if (typeof callFunc === \"function\") {\r\n      const newFunc = callFunc.bind(me);\r\n      newFunc(event, group, me);\r\n    } else if (typeof callFunc === \"string\") {\r\n      if (event.type.endsWith(\"onNavigateTo\")) {\r\n        const nUrl = event.target.replace(\"/:id\", \"/\" + event.data);\r\n        this.router.navigate([nUrl]);\r\n        return;\r\n      }\r\n\r\n      if (event.type === \"zgrid-cellClick\") {\r\n        // (callFunc.startsWith('edit')) {  zgrid-cellClick\r\n        const cName = callFunc.slice(4);\r\n        // // debugger;\r\n        // const modalGroupParam: ModalPageParams = {};\r\n        // modalGroupParam.controllerName = cName;\r\n        // modalGroupParam.referId = event.data.Id;\r\n        // modalGroupParam.colFields$ = event.columnFields$;\r\n        // modalGroupParam.parentGroup = me.group;\r\n\r\n        // this.openModalForm(modalGroupParam);\r\n        this.showzModal(\r\n          {\r\n            fieldElementName: cName,\r\n            fieldElementObservable$: event.columnFields$,\r\n            parentGroup: group,\r\n            zModel: {},\r\n            formHeader: '',\r\n            referId: event.data.Id\r\n          }\r\n        ).subscribe();\r\n      }\r\n    } else if (typeof callFunc === \"object\") {\r\n      if (event.type === \"zgrid-cellClick\") {\r\n        if (callFunc.navigateUrl) {\r\n          const url = callFunc.navigateUrl.replace(\":id\", event.data.Id);\r\n          this.router.navigate([url]);\r\n          return;\r\n        }\r\n\r\n        if (callFunc.formHeader) {\r\n          this.showzModal(\r\n            {\r\n              fieldElementName: callFunc.ctrlName,\r\n              fieldElementObservable$: event.columnFields$,\r\n              parentGroup: me.group,\r\n              zModel: {},\r\n              formHeader: callFunc.formHeader,\r\n              referId: event.data.Id\r\n            }\r\n          ).subscribe();\r\n          return;\r\n        }\r\n        console.warn(\r\n          \"Invalid callFunc type: \",\r\n          callFunc,\r\n          \" event.Target: \",\r\n          event.target\r\n        );\r\n      }\r\n      // this.openModalFormByComponent(callFunc.type, event.Data.Id);\r\n    } else {\r\n      console.warn(\r\n        \"Function not defined in group for: \",\r\n        event.target,\r\n        \", Event: \",\r\n        event\r\n      );\r\n    }\r\n  }\r\n\r\n  handleSuccess(res: Response | any, successMsg: string): Response {\r\n    if (this.group) {\r\n      this.tryUpdateGroupTrigger(false);\r\n    }\r\n\r\n    if (res && res.ProcessingStatus) {\r\n      if (this.group?.disableSuccessCreateMsg || this.group?.disableSuccessUpdateMsg || this.group?.disableSuccessDeleteMsg) {\r\n        return res;\r\n      }\r\n\r\n      // set sessionstorage to trigger update upon created\r\n\r\n      // Alert user update/save success\r\n      this.webApiService.showHttpResponseMessage(MESSAGETYPE.Success, successMsg, null);\r\n    }\r\n    return res;\r\n  }\r\n\r\n  private tryUpdateGroupTrigger(value: boolean) {\r\n    if (this.group) {\r\n      this.group.isTriggered = value;\r\n    }\r\n  }\r\n\r\n  handleError(res: any): Observable<any> {\r\n    this.tryUpdateGroupTrigger(false);\r\n    return this.webApiService.handleError(res);\r\n  }\r\n\r\n  public routeNavigate(pageName: string, pageParams: string[], routeRelative: boolean = true) {\r\n    this.setNavigationParams(pageParams);\r\n    const snapshotUrl = this.activatedRoute['_routerState'].snapshot.url.split('?')[0];\r\n    const pageUrl = routeRelative ? snapshotUrl + '/' + pageName : pageName;\r\n\r\n    this.router.navigate([pageUrl], { replaceUrl: true });\r\n  }\r\n\r\n  public setNavigationParams(urlParams: string[]) {\r\n    // If it is null or undefined\r\n    if (!this.backNavigationPath) {\r\n      this.backNavigationPath = [];\r\n    }\r\n\r\n    if (!this.isValueInLastElement(this.backNavigationPath, this.router.url)) {\r\n      this.backNavigationPath.push(this.router.url);\r\n      this.storageService.set(this.BACK_NAVIGATION_PATH_STORAGE_KEY, JSON.stringify(this.backNavigationPath));\r\n    }\r\n\r\n    this.setRouteParam(urlParams);\r\n  }\r\n\r\n  public setRouteParam(routeParams: string[]) {\r\n    // If it is null or undefined\r\n    if (!this.routeParam) {\r\n      this.routeParam = [];\r\n    }\r\n\r\n    // Filter out any empty string route params and join them into a single string\r\n    const newRouteParam = '/' + Object.values(routeParams).filter(el => el !== '').join('/');\r\n\r\n    if (!this.isValueInLastElement(this.routeParam, newRouteParam)) {\r\n      if (routeParams) {\r\n        // Capture the previous page's route param to be used for backnavigation checking\r\n        this.previousRouteParam = this.routeParam[this.routeParam.length - 1];\r\n\r\n        // If the previous route param exists, check if the last segment is 'new' or 'update'\r\n        if (this.previousRouteParam) {\r\n          const paramSegment = this.previousRouteParam.split(\"/\");\r\n          const actionSegment = paramSegment[paramSegment.length - 1];\r\n          // If the last segment is 'new' or 'update', store the previous route param in session storage\r\n          const validActionTypes = [ActionType.New.toString(), ActionType.Edit.toString(), ActionType.Update.toString()];\r\n\r\n          if (validActionTypes.includes(actionSegment)) {\r\n            this.storageService.set(this.PREVIOUS_PAGE_ROUTE_PARAM_STORAGE_KEY, JSON.stringify(this.previousRouteParam));\r\n          }\r\n        }\r\n\r\n        // Add the new route param to the routeParam array and store it in session storage\r\n        this.routeParam.push(newRouteParam);\r\n        this.storageService.set(this.NAVIGATION_PARAMS_STORAGE_KEY, JSON.stringify(this.routeParam));\r\n      }\r\n    }\r\n  }\r\n\r\n  private isValueInLastElement(array: any[], targetValue: any) {\r\n    if (array[array.length - 1] === targetValue) {\r\n      return true;\r\n    }\r\n    return false;\r\n  }\r\n\r\n  public menuOnClick(item: OAuthMenuItem): boolean {\r\n    const { AppClientPath: appClientPath, URL: pathName, Name: name } = item;\r\n    const startupPage = this.zcoreService.getEnvironment().startUpPage.toLowerCase();\r\n    const LAUNCHER = 'launcher';\r\n\r\n    // Save menu name to sessionStorage\r\n    this.menuService.setMenuName(name);\r\n\r\n    // Handle app client path navigation\r\n    if (appClientPath && startupPage === LAUNCHER) {\r\n      return this.handleAppClientNavigation(pathName, appClientPath);\r\n    }\r\n\r\n    // Determine navigation path\r\n    const navigationPath = this.getNavigationPath(startupPage, pathName);\r\n\r\n    // Navigate to the determined path\r\n    return this.navigateToPath(navigationPath, pathName);\r\n  }\r\n\r\n  private handleAppClientNavigation(pathName: string, appClientPath: string): boolean {\r\n    try {\r\n      ZComponentHelper.openAppClientPath(pathName, appClientPath, this.authService);\r\n      return false;\r\n    } catch (error) {\r\n      console.warn(`Failed to open App Client Path for ${pathName}:`, error);\r\n      return false;\r\n    }\r\n  }\r\n\r\n  private getNavigationPath(startupPage: string, pathName: string): string[] {\r\n    const MENU_PAGE_PREFIX = '_';\r\n    return startupPage.startsWith(MENU_PAGE_PREFIX) ? [startupPage] : [pathName];\r\n  }\r\n\r\n  private navigateToPath(navigationPath: string[], pathName: string): boolean {\r\n    try {\r\n      this.setNavigationParams(navigationPath);\r\n      this.router.navigate([pathName]);\r\n      return true;\r\n    } catch (error) {\r\n      console.warn(`Navigation to ${pathName} failed:`, error);\r\n      return false;\r\n    }\r\n  }\r\n\r\n  public navigateFromMenu(pageName: string) {\r\n    const { startUpPage } = this.environment;\r\n    this.setRouteParam([`${startUpPage}`]);\r\n    this.backNavigationPath.push(this.getStartupPage());\r\n    this.storageService.set(this.BACK_NAVIGATION_PATH_STORAGE_KEY, JSON.stringify([this.getStartupPage()]));\r\n\r\n    this.router.navigate([pageName], { replaceUrl: true });\r\n  }\r\n\r\n  public resetRouteParam(): void {\r\n    this.routeParam = [];\r\n    this.backNavigationPath = [];\r\n    this.storageService.set(this.NAVIGATION_PARAMS_STORAGE_KEY, JSON.stringify(this.routeParam));\r\n    this.storageService.set(this.BACK_NAVIGATION_PATH_STORAGE_KEY, JSON.stringify(this.backNavigationPath));\r\n  }\r\n\r\n  private getNavigationParams(): any[] {\r\n    this.routeParam = this.routeParam || [];\r\n\r\n    if (this.routeParam.length === 0) {\r\n      const storedParams = sessionStorage.getItem(this.NAVIGATION_PARAMS_STORAGE_KEY);\r\n      if (storedParams) {\r\n        try {\r\n          this.routeParam = JSON.parse(storedParams);\r\n        } catch (error) {\r\n          console.error('Error parsing stored routeParam:', error);\r\n        }\r\n      }\r\n    }\r\n    else {\r\n      console.log('No stored navigation params found.');\r\n    }\r\n\r\n    return this.routeParam;\r\n  }\r\n\r\n  public getNavigationParentParam(): any {\r\n    const navigationParentParams = this.getNavigationParams();\r\n\r\n    if (navigationParentParams.length > 0) {\r\n      return navigationParentParams[navigationParentParams.length - 2];\r\n    }\r\n\r\n    console.warn('Navigation parent params not found.');\r\n    return null;\r\n  }\r\n\r\n  public getNavigationCurrentParam(): any {\r\n    const navigationCurrentParams = this.getNavigationParams();\r\n\r\n    if (navigationCurrentParams.length > 0) {\r\n      return navigationCurrentParams[navigationCurrentParams.length - 1];\r\n    }\r\n\r\n    console.warn('Navigation current params not found.');\r\n    return null;\r\n  }\r\n\r\n  private getPreviousPageRouteParam(): any {\r\n    if (this.previousRouteParam !== undefined) {\r\n      // Return the cached value if it exists\r\n      return this.previousRouteParam;\r\n    }\r\n\r\n    const previousRouteParamStr = sessionStorage.getItem(this.PREVIOUS_PAGE_ROUTE_PARAM_STORAGE_KEY);\r\n    if (previousRouteParamStr) {\r\n      try {\r\n        const previousRouteParam = JSON.parse(previousRouteParamStr);\r\n        this.previousRouteParam = previousRouteParam;\r\n        return previousRouteParam;\r\n      } catch (error) {\r\n        console.warn(`Unable to parse previous route param from session storage: ${error}`);\r\n      }\r\n    } else {\r\n      console.warn('No previous page route param found in session storage.');\r\n    }\r\n\r\n    return null;\r\n  }\r\n\r\n  public removePreviousPageRouteParam(): void {\r\n    this.storageService.remove(this.PREVIOUS_PAGE_ROUTE_PARAM_STORAGE_KEY);\r\n  }\r\n\r\n  public removeLastNavigateRecord(): void {\r\n    this.removeLastNavigationPath();\r\n    this.removeLastRouteParam();\r\n  }\r\n\r\n  public removeLastNavigationPath(): void {\r\n    this.backNavigationPath = JSON.parse(sessionStorage.getItem(this.BACK_NAVIGATION_PATH_STORAGE_KEY) || \"null\");\r\n    if (this.backNavigationPath) {\r\n      this.backNavigationPath.pop();\r\n      this.storageService.set(this.BACK_NAVIGATION_PATH_STORAGE_KEY, JSON.stringify(this.backNavigationPath));\r\n    } else {\r\n      console.warn(\"No back navigation path found in session.\");\r\n    }\r\n  }\r\n\r\n  public removeLastRouteParam(): void {\r\n    this.routeParam = JSON.parse(sessionStorage.getItem(this.NAVIGATION_PARAMS_STORAGE_KEY) || \"null\");\r\n    if (this.routeParam) {\r\n      this.routeParam.pop();\r\n      this.storageService.set(this.NAVIGATION_PARAMS_STORAGE_KEY, JSON.stringify(this.routeParam));\r\n    } else {\r\n      console.warn(\"routeParam session is null.\");\r\n    }\r\n  }\r\n\r\n  public backNavigation(event: ZComponentOutputEvent, group: ZGroup, me: any): void {\r\n    if (group['isEmbeddedPage']) {\r\n      group['isTriggered'] = false;\r\n      this.closeContainerView(group);\r\n      return;\r\n    }\r\n\r\n    if (group.beforeBackNavigationPage) {\r\n      group.beforeBackNavigationPage(group).subscribe(() => {\r\n        this.navigateBackToPreviousPage(group);\r\n      })\r\n    }\r\n    else {\r\n      this.navigateBackToPreviousPage(group);\r\n    }\r\n  }\r\n\r\n  private async navigateBackToPreviousPage(group: ZGroup): Promise<void> {\r\n    this.tryUpdateGroupTrigger(false);\r\n\r\n    const backNavigationPath: string[] = JSON.parse(sessionStorage.getItem(this.BACK_NAVIGATION_PATH_STORAGE_KEY));\r\n    const backNavigationURL = group.backNavigationPage || backNavigationPath[backNavigationPath.length - 1];\r\n\r\n    if (!backNavigationURL) {\r\n      console.error(\"Error navigating back to previous page: backNavigationURL is not set.\");\r\n      //throw new Error(\"BackNavigationPath not set.\");\r\n      await this.router.navigateByUrl(this.getStartupPage(), { replaceUrl: true });\r\n    }\r\n\r\n    if (!group.backNavigationPage) {\r\n      const previousRouteParam = this.getPreviousPageRouteParam();\r\n      const previousCurrentRouteParam = this.getNavigationCurrentParam();\r\n      if (this.routeParam.length === 0 && this.routeNavigate.length === 0) {\r\n        await this.router.navigateByUrl(this.getStartupPage(), { replaceUrl: true });\r\n      }\r\n      else {\r\n        if (previousRouteParam && previousRouteParam === previousCurrentRouteParam) {\r\n          this.removePreviousPageRouteParam();\r\n        }\r\n        this.removeLastRouteParam();\r\n        this.removeLastNavigationPath();\r\n      }\r\n    }\r\n\r\n    this.storageService.set(this.NAVIGATED_RELOAD_GRID_STORAGE_KEY, JSON.stringify(true));\r\n\r\n    if (this.cacheService.getCache(this.CLONE_NEW_MODEL_CACHE_KEY)) {\r\n      this.cacheService.clearCache(this.CLONE_NEW_MODEL_CACHE_KEY);\r\n    }\r\n\r\n    try {\r\n      await this.router.navigateByUrl(backNavigationURL, { replaceUrl: true });\r\n    } catch (error) {\r\n      console.error(`Error navigating back to previous page: ${error.message}`);\r\n      //throw error;\r\n    }\r\n  }\r\n\r\n  public getStartupPage() {\r\n    const { startUpPage } = this.environment;\r\n\r\n    // Check if the startup page starts with a underscore.\r\n    if (startUpPage.startsWith('_')) {\r\n      return `/${startUpPage.slice(1)}`;\r\n    }\r\n\r\n    // If not, prepend a forward slash and return.\r\n    return `/${startUpPage}`;\r\n  }\r\n\r\n  private historyBack() {\r\n    this.tryUpdateGroupTrigger(false);\r\n\r\n    if (this.group['isEmbeddedPage']) {\r\n      this.closeContainerView(this.group);\r\n      return;\r\n    }\r\n\r\n    this.navController.pop();\r\n  }\r\n\r\n  public refreshGrid(\r\n    event: ZComponentOutputEvent,\r\n    group: ZGroup,\r\n    me: any,\r\n    gridOptionName?: string\r\n  ) {\r\n    gridOptionName = gridOptionName || \"gridOptions\";\r\n    if (event && event.target) {\r\n      const gridOption = event.target\r\n        .trim()\r\n        .replace(\"(\", \"\")\r\n        .replace(\")\", \"\")\r\n        .replace(\"group.refreshGrid\", \"\");\r\n      if (gridOption.length > 0) {\r\n        gridOptionName = gridOption;\r\n      }\r\n    }\r\n\r\n    const zgridControl = group[gridOptionName] as ZGrid;\r\n    if (zgridControl) {\r\n      zgridControl.getData();\r\n    }\r\n    group['isTriggered'] = false;\r\n  }\r\n\r\n  private refreshPage() {\r\n    if (this.group) {\r\n      this.tryUpdateGroupTrigger(false);\r\n    }\r\n    location.reload();\r\n    // this.router.routeReuseStrategy.shouldReuseRoute = () => false;\r\n    // this.router.onSameUrlNavigation = 'reload';\r\n    // console.log('Path: ', this.activatedRoute['_routerState'].snapshot.url);\r\n    // this.router.navigate(['/crm/customer']);\r\n  }\r\n\r\n  getCloneNewCacheZModel(group: ZGroup) {\r\n    const cacheZModel = this.cacheService.getCache(this.CLONE_NEW_MODEL_CACHE_KEY);\r\n    if (cacheZModel) {\r\n      this.cacheService.clearCache(this.CLONE_NEW_MODEL_CACHE_KEY);\r\n      group.zModel = cacheZModel;\r\n      group.zModel.Id = 0;\r\n    }\r\n    group.isTriggered = false;\r\n  }\r\n\r\n  private newModel(event: ZComponentOutputEvent, group: ZGroup) {\r\n    of([]).pipe(\r\n      switchMap((zmodel) => {\r\n        console.log(\"Before new, zModel:\", zmodel);\r\n        return this.beforeNewModel(group);\r\n      }),\r\n      tap(() => {\r\n        console.log(\"current url: \", this.router.url);\r\n\r\n        const referenceId = group.parentReferenceId || \"0\";\r\n        //const pathSegment = this.router.url.split(\"/\");\r\n        //const lastSegment = pathSegment[pathSegment.length - 1];\r\n        const currentNavigationParam = this.getNavigationCurrentParam();\r\n        const navigationSegments = currentNavigationParam ? currentNavigationParam.split('/') : null;\r\n        const defaultAction = group.isCloneNew ? ActionType.New : ActionType.Edit;\r\n        const actionSegment = group.isCloneNew ? (navigationSegments ? navigationSegments[navigationSegments.length - 1] : ActionType.New) : defaultAction;\r\n\r\n        if (group.isListForm) {\r\n          this.tryUpdateGroupTrigger(false);\r\n\r\n          this.setNavigationParams([referenceId, ActionType.New.toString()]);\r\n          this.router.navigate([group.editModelURL], {\r\n            relativeTo: group.ctrlScope.activatedRoute,\r\n          });\r\n        }\r\n        else {\r\n          // Scenario 1: From List New(action: new) ==> Clear form\r\n          // Scenario 2: From Form New(action: new) ==> Clear form\r\n          // Scenario 3: From Form New(action: new), isCloneNew ==> DONT Clear form\r\n          // Scenario 4: From Form New(action: new), isCloneNew, Save, Click New ==> Clear form (When CreateModel, need change isCloneNew = false)\r\n          // Scenario 5: From List open record(action: edit), isCloneNew ==> DONT Clear form\r\n          // Scenario 6: From List open record(action: edit), isCloneNew, Save, Click New ==> Clear form (When UpdateModel, need change isCloneNew = false)\r\n          // Scenario 7: From List open record(action: edit), Click New ==> Clear form\r\n          // Scenario 8: From List open record(action: edit), Click New, Save, isCloneNew ==> DONT Clear form\r\n\r\n          if (actionSegment === ActionType.Edit || actionSegment === ActionType.New) {\r\n            if (!group.isCloneNew) {\r\n              group.zModel = {};\r\n              group.form.reset();\r\n\r\n              // Reload the workflow button if the TypeCode is 'FUNCTION'\r\n              if (this.isTypeCodeFunction(event)) {\r\n                this.reloadWorkflowButton(group, event.data);\r\n              }\r\n            }\r\n            if (actionSegment === ActionType.Edit) {\r\n              // clear cloneNewModel cache(if have)\r\n              if (this.cacheService.getCache(this.CLONE_NEW_MODEL_CACHE_KEY)) {\r\n                this.cacheService.clearCache(this.CLONE_NEW_MODEL_CACHE_KEY);\r\n              }\r\n\r\n              //this.setNavigationParams([referenceId, 'new']);\r\n              this.removeLastRouteParam();\r\n              this.setRouteParam([referenceId, ActionType.New.toString()]);\r\n\r\n              group.zModel[group.parentReferenceField] = referenceId;\r\n            }\r\n            group.isEdit = false;\r\n            group.isNew = true;\r\n            group.isTriggered = false;\r\n          }\r\n          else {\r\n            this.tryUpdateGroupTrigger(false);\r\n            this.setNavigationParams([referenceId, ActionType.New.toString()]);\r\n\r\n            this.router.navigate([group.editModelURL], {\r\n              relativeTo: group.ctrlScope.activatedRoute,\r\n            });\r\n          }\r\n\r\n          if (group.isCloneNew) {\r\n            this.afterCloneNewModel(group, group.zModel);\r\n          }\r\n          else {\r\n            this.afterNewModel(group);\r\n          }\r\n        }\r\n      })\r\n    ).subscribe();\r\n  }\r\n\r\n  public createModel(event: ZComponentOutputEvent, group: ZGroup) {\r\n    const fg: FormGroup = group.form as FormGroup;\r\n    const resMessage = group.SuccessCreatedMessage || DefaultMessage.recordCreated;\r\n    let createModelres = null;\r\n\r\n    if (!fg.dirty) {\r\n      console.warn(DefaultMessage.notDirtyMessage);\r\n      this.tryUpdateGroupTrigger(false);\r\n      return;\r\n    }\r\n\r\n    if (!fg.valid) {\r\n      this.componentErrorHandlerService.showFormGroupErrorMessage(group, fg);\r\n      this.tryUpdateGroupTrigger(false);\r\n      return;\r\n    }\r\n\r\n    of(group.zModel).pipe(\r\n      switchMap((zmodel) => {\r\n        console.log(\"Before create, zModel:\", zmodel);\r\n        return this.beforeCreateModel(group);\r\n      }),\r\n      tap(() => {\r\n        if (!this.group.skipCreateUsingFormValue) {\r\n          Object.assign(group.zModel, fg.value);\r\n        }\r\n      }),\r\n      switchMap(() => {\r\n        const newModel = Object.assign({}, group.zModel);\r\n        ZComponentHelper.removeNullFields(newModel);\r\n\r\n        const webApiAdditionalDetail: WebApiAdditionalDetail = {\r\n          buttonDetail: event,\r\n          group: group,\r\n          triggerFrom: event ? event.triggerFrom : undefined\r\n        };\r\n\r\n        return this.webApiService.httpPost$(group.resourceURL, newModel, webApiAdditionalDetail).pipe(\r\n          tap((resp) => {\r\n            createModelres = resp;\r\n            return resp;\r\n          }),\r\n          tap((res) => {\r\n            return this.handleSuccess(res, resMessage);\r\n          })\r\n        );\r\n      }),\r\n      switchMap((zmodel: any) => {\r\n        console.log(\"After created, zModel:\", zmodel);\r\n        this.patchUpdatedzModel(fg, zmodel, group);\r\n        return this.afterCreateModel(group, zmodel);\r\n      }),\r\n      tap((resp) => {\r\n        if (createModelres.ProcessingStatus == null || createModelres.ProcessingStatus == true) {\r\n          if (resp && group.zModel.Id !== 0) {\r\n            group.isNew = false;\r\n            group.isEdit = true;\r\n            group.isCloneNew = false;\r\n            group.isTriggered = false;\r\n            group.cancelButtonName = \"Close\";\r\n            // Object.assign(group.zModel, resp);\r\n            // fg.patchValue(resp);\r\n          }\r\n          // fg.markAsPristine();\r\n\r\n          if ((group.isCloseAfterSuccess || group.isCloseAfterCreated) && !group.isCloneNew) {\r\n            this.backNavigation(null, group, this);\r\n          }\r\n        }\r\n        else {\r\n          fg.markAsDirty();\r\n        }\r\n        // console.log(\"Done updateModel updated zModel:\", fg.value);\r\n        // this.toastService.show(\"Record is created successfully.\");\r\n      })\r\n    ).subscribe();\r\n  }\r\n\r\n  public updateModel(event: ZComponentOutputEvent, group: ZGroup) {\r\n    this.updateModelObservable(event, group).subscribe();\r\n  }\r\n\r\n  public updateModelObservable(event: ZComponentOutputEvent, group: ZGroup, form: FormGroup = null, updateAPIObservable: Observable<any> = null, isSkipDirty = false): Observable<any> {\r\n    const fg = form || group.form as FormGroup;\r\n    const resMessage = group.SuccessUpdatedMessage || DefaultMessage.recordUpdated;\r\n    let updateModelres = null;\r\n\r\n    if (!this.isFormDirtyAndValid(fg, group, isSkipDirty, event)) {\r\n      if (isSkipDirty) {\r\n        fg.markAllAsTouched();\r\n      }\r\n      this.tryUpdateGroupTrigger(false);\r\n      return of(false);\r\n    }\r\n\r\n    const webApiAdditionalDetail: WebApiAdditionalDetail = {\r\n      buttonDetail: event,\r\n      group: group,\r\n      triggerFrom: event ? event.triggerFrom : undefined\r\n    };\r\n\r\n    updateAPIObservable = updateAPIObservable || this.webApiService.httpPut$(`${group.resourceURL}/${group.zModel.Id}`, group.zModel, webApiAdditionalDetail).pipe(\r\n      tap((res) => {\r\n        this.handleSuccess(res, resMessage);\r\n      }\r\n        //this.handleSuccess(res, \"Record is updated successfully.\")\r\n      ));\r\n\r\n    return of(group.zModel).pipe(\r\n      switchMap((zmodel) => {\r\n        console.log(\"Before update, zModel:\", zmodel);\r\n        return this.beforeUpdateModel(group);\r\n      }),\r\n      tap(() => {\r\n        if (!group.skipUpdateUsingFormValue) {\r\n          Object.assign(group.zModel, fg.value);\r\n        }\r\n      }),\r\n      switchMap(() => {\r\n        return updateAPIObservable;\r\n      }),\r\n      switchMap((resp: any) => {\r\n        console.log(\"After updated, response:\", resp);\r\n        updateModelres = resp;\r\n        group.isCloneNew = false;\r\n        this.patchUpdatedzModel(fg, resp, group);\r\n        fg.markAsPristine();\r\n        return this.afterUpdateModel(group, resp);\r\n      }),\r\n      tap((resp) => {\r\n        if (updateModelres && updateModelres.ProcessingStatus) {\r\n          if (group.isCloseAfterSuccess || group.isCloseAfterUpdated) {\r\n            this.backNavigation(null, group, this);\r\n          }\r\n        }\r\n      })\r\n    );\r\n  }\r\n\r\n  /**\r\n   * Clones a new model for a ZGroup based on the provided ZComponentOutputEvent.\r\n   *\r\n   * @param {ZComponentOutputEvent} event - The ZComponentOutputEvent triggering the clone.\r\n   * @param {ZGroup} group - The ZGroup to clone the new model for.\r\n   */\r\n  private cloneNewModel(event: ZComponentOutputEvent, group: ZGroup) {\r\n    // Set flag indicating that the model is being cloned\r\n    group.isCloneNew = true;\r\n\r\n    // Extract the function value from the target of the event\r\n    const { target } = event;\r\n    const functionValue = target?.match(/\\(([^)]+)\\)/)?.[1];\r\n\r\n    // If the function value is 'true', reset the form and model\r\n    if (functionValue === 'true') {\r\n      group.zModel = {};\r\n      group.form.reset();\r\n    }\r\n\r\n    // Define the values for the WFS model\r\n    const newModelValues = {\r\n      Id: 0,\r\n      WFS_DocumentId: null,\r\n      WFS_StatusCode: null,\r\n      WFS_StatusId: null,\r\n      WFS_StatusName: null,\r\n    };\r\n\r\n    // Assign the WFS model values to the form value and ZModel\r\n    Object.assign(group.form.value, newModelValues);\r\n    Object.assign(group.zModel, group.form.value);\r\n\r\n    // Patch the form with the ZModel, mark it as dirty, and cache the ZModel\r\n    const fg = group.form as FormGroup;\r\n    const resultData = ZComponentHelper.removeTextEditorValueFromFormPatching(group.zModel, group);\r\n    fg.patchValue(resultData);\r\n    fg.markAsDirty();\r\n    this.cacheService.setCache(this.CLONE_NEW_MODEL_CACHE_KEY, group.zModel);\r\n\r\n    // Call the newModel function for the group\r\n    this.newModel(null, group);\r\n\r\n    // Reload the workflow button if the TypeCode is 'FUNCTION'\r\n    if (this.isTypeCodeFunction(event)) {\r\n      this.reloadWorkflowButton(group, event.data);\r\n    }\r\n\r\n    // Clear the trigger flag\r\n    group.isTriggered = false;\r\n  }\r\n\r\n  private deleteModel(event: ZComponentOutputEvent, group: ZGroup) {\r\n    const fg: FormGroup = group.form as FormGroup;\r\n    const resMessage = group.SuccessDeletedMessage || DefaultMessage.recordDeleted;\r\n\r\n    of(group.zModel)\r\n      .pipe(\r\n        switchMap((zmodel) => {\r\n          console.log(\"Before delete, zModel:\", zmodel);\r\n          return this.beforeDeleteModel(group);\r\n        }),\r\n        switchMap(() => {\r\n          this.tryUpdateGroupTrigger(false);\r\n          return this.alertService.show(\"Delete Record\", DefaultMessage.confirmation,\r\n            [\r\n              { text: \"No\", cssClass: \"secondary\" } as AlertButton,\r\n              { text: \"Yes\", cssClass: \"primary\" } as AlertButton\r\n            ]);\r\n        }),\r\n        switchMap((reply: string) => {\r\n          if (reply === \"Yes\") {\r\n            this.tryUpdateGroupTrigger(true);\r\n            Object.assign(group.zModel, fg.value);\r\n            group.zModel.Disabled = true;\r\n\r\n            let tempResponse = {};\r\n            const webApiAdditionalDetail: WebApiAdditionalDetail = {\r\n              buttonDetail: event,\r\n              group: group,\r\n              triggerFrom: event ? event.triggerFrom : undefined\r\n            };\r\n            return this.webApiService\r\n              .httpPut$(`${group.resourceURL}/${group.zModel.Id}`, group.zModel, webApiAdditionalDetail)\r\n              .pipe(\r\n                tap((res) => {\r\n                  tempResponse = Object.assign({}, res);\r\n                  this.handleSuccess(res, resMessage)\r\n                }),\r\n                switchMap((zmodel) => {\r\n                  console.log(\"After deleted, zModel:\", zmodel);\r\n                  return this.afterDeleteModel(group, zmodel);\r\n                }),\r\n                tap((resp) => {\r\n                  //this.historyBack();\r\n                  if (tempResponse) {\r\n                    if (tempResponse['ProcessingStatus']) {\r\n                      fg.reset();\r\n                      this.backNavigation(null, group, this);\r\n                    }\r\n                  }\r\n                  group.zModel.Disabled = false;\r\n                })\r\n              );\r\n          } else {\r\n            return of([]);\r\n          }\r\n        })\r\n      )\r\n      .subscribe();\r\n  }\r\n\r\n  private patchUpdatedzModel(fg: FormGroup, resp: any, group: ZGroup) {\r\n    if (resp) {\r\n      if (resp.Data) {\r\n        Object.assign(group.zModel, resp.Data);\r\n        const resultData = ZComponentHelper.removeTextEditorValueFromFormPatching(resp.Data, group);\r\n        fg.patchValue(resultData);\r\n      }\r\n      else if (resp[\"Id\"]) {\r\n        Object.assign(group.zModel, resp);\r\n        const resultData = ZComponentHelper.removeTextEditorValueFromFormPatching(resp, group);\r\n        fg.patchValue(resultData);\r\n      }\r\n      else {\r\n        console.log(\"Failed to patchUpdatedzModel to the formgroup\");\r\n      }\r\n    }\r\n\r\n    group.referenceId = group.zModel.Id;\r\n    this.tryUpdateGroupTrigger(false);\r\n    group.isTriggered = false;\r\n\r\n    fg.markAsPristine();\r\n  }\r\n\r\n  private isTypeCodeFunction(event: ZComponentOutputEvent) {\r\n    return event?.data?.TypeCode === 'FUNCTION';\r\n  }\r\n\r\n  private reloadWorkflowButton(group: ZGroup, data: any) {\r\n    // Changed to should reload all workflow button if it trigger new/clonenew via the form page.\r\n\r\n    //if (data.reloadAllWorkflowButton) {\r\n    const workflowButtonList = Object.keys(group.zComponents)\r\n      .filter(key => key.startsWith('zworkflowbuttons_'))\r\n      .reduce((obj, key) => {\r\n        obj[key] = group.zComponents[key];\r\n        return obj;\r\n      }, {});\r\n\r\n    Object.values(workflowButtonList).forEach(value => {\r\n      value?.['loadButton']?.();\r\n    });\r\n    //}\r\n    //else {\r\n    //  const workflowButtons = ZComponentHelper.getComponent(group, `zworkflowbuttons_${data.zButtonName}`);\r\n    //  workflowButtons?.['loadButton']?.();\r\n    //}\r\n  }\r\n\r\n  public isFormDirtyAndValid(fg: FormGroup, group: ZGroup, isSkipDirty = false, event: ZComponentOutputEvent): boolean {\r\n    if (!isSkipDirty && !fg.dirty) {\r\n      console.warn(DefaultMessage.notDirtyMessage);\r\n      const message = event && event.data && event.data[`FormNotDirtyMessage`] ? event.data[`FormNotDirtyMessage`] : DefaultMessage.notDirtyMessage;\r\n      this.alertService.showOkay(DefaultDialogTitle.nothingToUpdate, message, [\"col-5\"]);\r\n      return false;\r\n    }\r\n\r\n    if (!fg.valid) {\r\n      this.componentErrorHandlerService.showFormGroupErrorMessage(group, fg);\r\n      fg.markAsTouched();\r\n      fg.markAllAsTouched();\r\n      return false;\r\n    }\r\n\r\n    return true;\r\n  }\r\n\r\n  private beforeUpdateModel(group: ZGroup) {\r\n    if (!group.beforeUpdateModel) {\r\n      console.warn(\"group.beforeUpdateModel is undefined\");\r\n      return of({});\r\n    }\r\n    return group.beforeUpdateModel(group);\r\n  }\r\n\r\n  private beforeDeleteModel(group: ZGroup) {\r\n    if (!group.beforeDeleteModel) {\r\n      console.warn(\"group.beforeDeleteModel is undefined\");\r\n      return of({});\r\n    }\r\n    return group.beforeDeleteModel(group);\r\n  }\r\n\r\n  private beforeNewModel(group: ZGroup) {\r\n    if (!group.beforeNewModel) {\r\n      console.warn(\"group.beforeNewodel is undefined\");\r\n      return of({});\r\n    }\r\n    return group.beforeNewModel(group);\r\n  }\r\n\r\n  private beforeCreateModel(group: ZGroup) {\r\n    if (!group.beforeCreateModel) {\r\n      console.warn(\"group.beforeCreateModel is undefined\");\r\n      return of({});\r\n    }\r\n    return group.beforeCreateModel(group);\r\n  }\r\n\r\n  beforePageInitialise(group: ZGroup) {\r\n    if (!group.beforePageInitialise) {\r\n      console.warn(\"group.beforePageInitialise is undefined\");\r\n      return of({});\r\n    }\r\n    return group.beforePageInitialise(group);\r\n  }\r\n\r\n  private afterGetModelSuccess(group: ZGroup): Observable<any> {\r\n    if (!group.zModel.Id) {\r\n      console.warn(\"zModel.Id is not defined\", group.zModel);\r\n      return of({});\r\n    }\r\n    if (!group.afterGetModelSuccess) {\r\n      console.warn(\"group.afterGetModelSuccess is not defined\");\r\n      return of({});\r\n    }\r\n    return group.afterGetModelSuccess(group);\r\n  }\r\n\r\n  afterNewModel(group: ZGroup): Observable<any> {\r\n    if (!group.afterNewModel) {\r\n      console.warn(\"group.afterNewModel is not defined\");\r\n      return of({});\r\n    }\r\n    return group.afterNewModel(group);\r\n  }\r\n\r\n  private afterCreateModel(group: ZGroup, zmodel: any): Observable<any> {\r\n    if (!group.afterCreateModel) {\r\n      console.warn(\"group.afterCreateModel is not defined\");\r\n      return of({});\r\n    }\r\n    return group.afterCreateModel(group, zmodel);\r\n  }\r\n\r\n  private afterUpdateModel(group: ZGroup, zmodel: any): Observable<any> {\r\n    if (!group.afterUpdateModel) {\r\n      console.warn(\"group.afterUpdateModel is not defined\");\r\n      return of({});\r\n    }\r\n    return group.afterUpdateModel(group, zmodel);\r\n  }\r\n\r\n  private afterDeleteModel(group: ZGroup, zmodel: any): Observable<any> {\r\n    if (!group.afterDeleteModel) {\r\n      console.warn(\"group.afterDeleteModel is not defined\");\r\n      return of({});\r\n    }\r\n    return group.afterDeleteModel(group, zmodel);\r\n  }\r\n\r\n  afterCloneNewModel(group: ZGroup, zmodel: any): Observable<any> {\r\n    if (!group.afterCloneNewModel) {\r\n      console.warn(\"group.afterCloneNewModel is not defined\");\r\n      return of({});\r\n    }\r\n    return group.afterCloneNewModel(group, zmodel);\r\n  }\r\n\r\n  afterPageInitialise(group: ZGroup) {\r\n    if (!group.afterPageInitialise) {\r\n      console.warn(\"group.afterPageInitialise is undefined\");\r\n      return of({});\r\n    }\r\n    return group.afterPageInitialise(group);\r\n  }\r\n\r\n  // private onAction(group: ZGroup) {\r\n  //   this.actionSheetCtrl\r\n  //     .create({\r\n  //       header: \"Choose an Action\",\r\n  //       buttons: group.topRightActionButton\r\n  //     })\r\n  //     .then(actionSheetEl => {\r\n  //       actionSheetEl.present();\r\n  //     });\r\n  // }\r\n\r\n  // setModelValue(propertyName: string, value: any, group: ZGroup) {\r\n  //   group.zModel[propertyName] = value;\r\n  //   if (group.isLoading) {\r\n  //     return;\r\n  //   }\r\n  //   const fg = group.form as FormGroup;\r\n  //   if (!fg) {\r\n  // eslint-disable-next-line , no-debugger\r\n  //     debugger;\r\n  //   }\r\n  //   const fc = fg.controls[propertyName];\r\n  //   if (!fc) {\r\n  // eslint-disable-next-line no-debugger\r\n  //     debugger;\r\n  //   }\r\n  //   fc.setValue(value);\r\n  //   fc.markAsDirty();\r\n  // }\r\n\r\n  public showzModal(modalPageParams: ModalPageParams): Observable<ModalResponse> {\r\n    if (modalPageParams.parentGroup) {\r\n      // disable isTriggered before display the popup.\r\n      modalPageParams.parentGroup.isTriggered = false;\r\n    }\r\n    return this.modalService.show(modalPageParams);\r\n  }\r\n\r\n  public cookieStorePost(name: string, value: any): Observable<any> {\r\n    // for Post to CookieStore\r\n    const cookieStoreURL = this.oauthEnvironmentUrl + \"api/CookieStores\";\r\n    const cookieStoreValue = {\r\n      'Name': name,\r\n      'Value': JSON.stringify(value)\r\n    };\r\n\r\n    return this.webApiService.httpPost$(cookieStoreURL, cookieStoreValue).pipe(map(res => {\r\n      if (res) {\r\n        console.log(\"grid config saved(\" + res.status + \"): \", res);\r\n        return res;\r\n      }\r\n    }));\r\n  }\r\n\r\n  public cookieStoreGet(name: string, accessToken: string): Observable<any> {\r\n    const cookieStoreURL = this.oauthEnvironmentUrl + \"api/CookieStores/?name=\" + name;\r\n\r\n    return this.webApiService.httpGet$(cookieStoreURL, { headers: accessToken }).pipe(map(res => {\r\n      if (res) {\r\n        return res;\r\n      }\r\n    }));\r\n  }\r\n\r\n  public cookieStoreDeleteMultiple(name: string): Observable<any> {\r\n    // for Post to CookieStore\r\n    const cookieStoreURL = this.oauthEnvironmentUrl + \"Admin/DeleteMultipleCookies\";\r\n    const cookieStoreValue = {\r\n      'containName': name\r\n    };\r\n\r\n    return this.webApiService.httpPost$(cookieStoreURL, cookieStoreValue).pipe(map(res => {\r\n      if (res) {\r\n        return res;\r\n      }\r\n    }));\r\n  }\r\n\r\n  public scrollToElementById(id: string, behavior: 'smooth' | 'auto' = 'smooth') {\r\n    const el = document.getElementById(id);\r\n    el.scrollIntoView({ behavior });\r\n  }\r\n\r\n  public translationPageElement(group: ZGroup): Observable<any> {\r\n    const obsList = new Array<Observable<any>>();\r\n    if (group.formHeader) {\r\n      obsList.push(this.translationService.$translateSingleItem(group, \"formHeader\"));\r\n    }\r\n\r\n    if (group.navItems && group.navItems.length > 0) {\r\n      obsList.push(this.translationService.$translateItemList(group.navItems, \"text\"));\r\n    }\r\n\r\n    if (obsList.length === 0) {\r\n      return of({});\r\n    }\r\n\r\n    return forkJoin(obsList);\r\n  }\r\n\r\n\r\n  //#region signalR service\r\n  public joinProjectSignalR(projectCode?: string) {\r\n    if (this.signalrService.signalREnabled()) {\r\n      if (projectCode) {\r\n        this.signalrService.joinGroup(projectCode);\r\n      }\r\n      else {\r\n        // We default first project code in environment as group\r\n        const environment = this.zcoreService.getEnvironment();\r\n        const firstProjectCode = environment.projectCodes[0];\r\n        this.signalrService.joinGroup(firstProjectCode);\r\n      }\r\n    }\r\n  }\r\n\r\n  public handleSignalRModificationAlert(formId: string) {\r\n    if (this.signalrService.signalREnabled() && this.environment.enableFormPageModificationAlert) {\r\n      const eventName = `${window.location.href}`.replace(/([^:]\\/)\\/+/g, \"$1\");\r\n      if (!this.group.signalRCallbackHandler) {\r\n        this.group.signalRCallbackHandler = {};\r\n      }\r\n      this.group.signalRCallbackHandler['alertFormModified'] = this.alertFormModified.bind(this, formId);\r\n\r\n      this.signalrService.unsubscribeFromEvent(`${eventName}`); // unsubscribe the event before subscribe to event again.\r\n      this.signalrService.subscribeToEvent(this.group, `${eventName}`, `group.signalRCallbackHandler.alertFormModified`);\r\n    }\r\n    else {\r\n      console.warn('enableFormPageModificationAlert not enabled.');\r\n    }\r\n  }\r\n\r\n  private alertFormModified(formId: string, group: ZGroup, resp: any, eventName: string) {\r\n    if (!resp) {\r\n      return false;\r\n    }\r\n\r\n    const respResult = JSON.parse(resp);\r\n\r\n    if (!respResult.UserName) {\r\n      return false;\r\n    }\r\n\r\n    if (formId === respResult.Id?.toString() && eventName === window.location.href) {\r\n      if (respResult.UserName === this.authService.e1Token.myProfile.UserName) {\r\n        if (respResult.Action === ActionType.Update) {\r\n          this.webApiService.httpGet$(`${this.group.resourceURL}/${formId}`, null, { triggerFrom: TriggerFromType.signalRAlert }).subscribe(resp => {\r\n            this.reloadDataAndWorkflowButton(resp);\r\n          });\r\n        }\r\n      }\r\n      else {\r\n        if (respResult.Action === ActionType.Delete) {\r\n          this.alertService.show(\"Record Deleted by Another User\", \"The current record has been deleted by another user.\", [\r\n            { text: \"OK\", cssClass: \"primary\" } as AlertButton\r\n          ], [\"col-6\"], undefined, true).pipe(switchMap((reply) => {\r\n            if (reply === \"OK\") {\r\n              this.navigateBackToPreviousPage(group);\r\n              return of(true);\r\n            }\r\n          })\r\n          ).subscribe();\r\n        }\r\n        else if (respResult.Action === ActionType.Update) {\r\n          this.webApiService.httpGet$(`${this.group.resourceURL}/${formId}`, null).subscribe(resp => {\r\n            if (resp && resp.RowVersion) {\r\n              if (resp.RowVersion !== this.group.zModel?.RowVersion) {\r\n                this.alertService.show(\"The current page has been modified by other users.\", \"Would you like to refresh the page data?\", [\r\n                  { text: \"No\", cssClass: \"secondary\" } as AlertButton,\r\n                  { text: \"Yes\", cssClass: \"primary\" } as AlertButton\r\n                ], [\"col-6\"], undefined, true).pipe(switchMap((reply) => {\r\n                  if (reply === \"Yes\") {\r\n                    this.reloadDataAndWorkflowButton(resp);\r\n\r\n                    return of(true);\r\n                  }\r\n\r\n                  this.toastService.showPermanently('The data on the current page is not up to date, as it has been saved and overwritten by another user. Please refresh the page.', 'top', 'warning');\r\n                  return of(false);\r\n                })\r\n                ).subscribe();\r\n              }\r\n              else {\r\n                console.log(`Alert received regarding form modification, RowVersion remains unaltered. No further action has been taken.`)\r\n              }\r\n            }\r\n          });\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n  private reloadDataAndWorkflowButton(zModel: any) {\r\n    this.group.zModel = zModel;\r\n    const fg: FormGroup = this.group.form as FormGroup;\r\n    const resultData = ZComponentHelper.removeTextEditorValueFromFormPatching(this.group.zModel, this.group);\r\n    fg.patchValue(resultData);\r\n    fg.markAsPristine();\r\n\r\n    // Capture all workflow buttons\r\n    const workflowButtons = Object.keys(this.group.zComponents)\r\n      .filter(key => key.startsWith(\"zworkflowbuttons_\"))\r\n      .map(key => this.group.zComponents[key]);\r\n\r\n    // Reload workflow buttons\r\n    workflowButtons.forEach(button => {\r\n      button.loadButton();\r\n    });\r\n  }\r\n  //#endregion\r\n\r\n  // #region DEC\r\n  public async loadContainerView(elementContainer: any, containerPage: any, data: ZField, group?: ZGroup) {\r\n    if (!elementContainer) {\r\n      console.log(\"ElementContainer is null.\");\r\n      return;\r\n    }\r\n\r\n    if (!containerPage) {\r\n      console.log(\"ContainerPage is null.\");\r\n      return;\r\n    }\r\n\r\n    const viewContainerRef = elementContainer.viewContainerRef;\r\n    viewContainerRef.clear();\r\n\r\n    const embeddedgroup = new ZGroup();\r\n    this.setGroupForDebugger(embeddedgroup);\r\n    const componentRef: ComponentRef<any> = viewContainerRef.createComponent(containerPage);\r\n\r\n    embeddedgroup.isTriggered = false; // enable back the button for triggering.\r\n\r\n    // Object.assign(componentRef.instance[\"group\"], group);\r\n    Object.assign(componentRef.instance[\"group\"], embeddedgroup);\r\n\r\n    Object.assign(componentRef.instance[\"group\"], { parentGroup: group, isEmbeddedPage: true, elementContainer: elementContainer, ContainerFormAutoScroll: data.ContainerFormAutoScroll });\r\n\r\n    // todo: add in prop\r\n    if (data && data.ContainerFormAutoScroll) {\r\n      this.scrollToEmbbedComponentPage();\r\n    }\r\n  }\r\n\r\n  public scrollToEmbbedComponentPage(milliSeconds: number = 1500): Promise<void> {\r\n    const endOfGridDiv = document.getElementById(\"end-of-grid\");\r\n    const endOfGridPositionInfo = endOfGridDiv.getBoundingClientRect();\r\n    const yCoor = (endOfGridPositionInfo?.y || 630) - 10;\r\n\r\n    const mainIonContent: any = document.getElementById(\"ion-content-main-page\");\r\n    return mainIonContent.scrollByPoint(0, yCoor, milliSeconds);\r\n  }\r\n\r\n  public scrollToTopOfPage(milliSeconds: number = 1500): Promise<void> {\r\n    const mainIonContent: any = document.getElementById(\"ion-content-main-page\");\r\n    return mainIonContent.scrollToPoint(0, 0, milliSeconds) as Promise<void>;\r\n  }\r\n\r\n  public async closeContainerView(group: ZGroup) {\r\n    if (group[`parentGroup`] && group[`parentGroup`][`e1CloseGridContainer`] && typeof group[`parentGroup`][`e1CloseGridContainer`] === \"function\") {\r\n      group[`parentGroup`][`e1CloseGridContainer`](false);\r\n    }\r\n  }\r\n  //#endregion\r\n\r\n  private setGroupForDebugger(group: ZGroup) {\r\n    const isDebugging = this.zcoreService.isDebugSession() || false;\r\n    if (isDebugging) {\r\n      this.debugService.onInitDebugger(group);\r\n    }\r\n  }\r\n}\r\n\r\nexport function refreshGrid(group: ZGroup) {\r\n  const zgridControl = group[\"gridOptions\"] as ZGrid;\r\n  if (zgridControl) {\r\n    zgridControl.getData();\r\n  }\r\n  group.isTriggered = false;\r\n}\r\n","/********** Angular **********/\r\nimport { Injectable, ComponentFactoryResolver, EmbeddedViewRef, ChangeDetectorRef } from \"@angular/core\";\r\nimport { FormGroup } from '@angular/forms';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { forkJoin, Observable, of, Subject, tap } from \"rxjs\";\r\n\r\n/********** Component & Service **********/\r\nimport { FieldElementDirective } from '../directives/fieldelement.directive';\r\nimport { ComponentObjectService } from 'mmhglobal-middleware';\r\n// import { ComponentObjectService } from 'projects/mmhglobal-middleware/src/public-api';\r\nimport {\r\n  ZCoreService, TranslationService, FieldService,\r\n  ZComponent, ZComponentHelper, ZComponentProperties, ZField, ZGroup,\r\n  UISignalService\r\n} from 'mmhglobal-zcore';\r\n\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class ZComponentService {\r\n  public environment;\r\n\r\n  constructor(\r\n    public uiSignalService: UISignalService,\r\n    private componentObjectService: ComponentObjectService,\r\n    private translateService: TranslationService,\r\n    private zcoreService: ZCoreService,\r\n    private fieldService: FieldService,\r\n  ) {\r\n    this.environment = this.zcoreService.getEnvironment();\r\n  }\r\n\r\n  public isSkipComponentType(componentType: string): boolean {\r\n    return ZComponentHelper.isSkipComponentType(componentType);\r\n  }\r\n\r\n  public loadComponent(\r\n    componentFactoryResolver: ComponentFactoryResolver,\r\n    fieldElement: FieldElementDirective,\r\n    field: any,\r\n    group: any,\r\n    form: FormGroup,\r\n    containerField: any\r\n  ) {\r\n    // if(field.Name === 'FormDetailContactGrid') {\r\n    //   debugger;\r\n    // }\r\n\r\n    if (this.isSkipComponentType(field.Type)) {\r\n      return;\r\n    }\r\n\r\n    let componentFactory;\r\n    const componentName = this.componentObjectService.getObject(field.Type);\r\n    if (componentName) {\r\n      componentFactory = componentFactoryResolver.resolveComponentFactory(\r\n        componentName\r\n      );\r\n    } else {\r\n      componentFactory = componentFactoryResolver.resolveComponentFactory(\r\n        this.componentObjectService.getObject(\"unknown\")\r\n      );\r\n    }\r\n\r\n    const viewContainerRef = fieldElement.viewContainerRef;\r\n    viewContainerRef.clear();\r\n    if (!form) {\r\n      console.warn('FormGroup is empty!');\r\n      debugger;\r\n    }\r\n    const componentRef = viewContainerRef.createComponent(componentFactory);\r\n    (componentRef.instance as ZComponent).data = field;\r\n    (componentRef.instance as ZComponent).group = group;\r\n    (componentRef.instance as ZComponent).form = form;\r\n    (componentRef.instance as ZComponent).containerField = containerField;\r\n    // (componentRef.instance as ZComponent).outputEvent.subscribe((event: any) => group.outputEvent(event));\r\n\r\n    //#region for component load in zudf container\r\n    if (field.Value && field.SubType) {\r\n      if (!Array.isArray(field.Value)) {\r\n        if (field.Value.includes('zudf')) {\r\n          const componentValue = field.Value;\r\n          const formControl = form.controls[componentValue];\r\n          if (formControl) {\r\n            const [firstSegment, secondSegment] = componentValue.split('_');\r\n            const zudfScopeName = `${firstSegment}_${secondSegment}`;\r\n            const value = group[zudfScopeName].zModel[componentValue];\r\n\r\n            if (value) {\r\n              formControl.setValue(group[zudfScopeName].zModel[componentValue]);\r\n              formControl.markAsTouched();\r\n            }\r\n          }\r\n        }\r\n      }\r\n    }\r\n    //#endregion\r\n  }\r\n\r\n  appendComponentToDynamicForm(\r\n    componentFactoryResolver: ComponentFactoryResolver,\r\n    injector: any,\r\n    appRef: any,\r\n    field: any,\r\n    group: any,\r\n    containerId: string\r\n  ) {\r\n    if (this.isSkipComponentType(field.Type)) {\r\n      return;\r\n    }\r\n\r\n    let componentRef;\r\n    const componentName = this.componentObjectService.getObject(field.Type);\r\n    // 1. Create a component reference from the component\r\n    if (componentName) {\r\n      componentRef = componentFactoryResolver\r\n        .resolveComponentFactory(componentName)\r\n        .create(injector);\r\n    } else {\r\n      componentRef = componentFactoryResolver\r\n        .resolveComponentFactory(this.componentObjectService.getObject(\"unknown\"))\r\n        .create(injector);\r\n    }\r\n\r\n    // 2. Attach component to the appRef so that it's inside the ng component tree\r\n    appRef.attachView(componentRef.hostView);\r\n\r\n    // 3. Get DOM element from component\r\n    const domElem = (componentRef.hostView as EmbeddedViewRef<any>)\r\n      .rootNodes[0] as HTMLElement;\r\n\r\n    // 4. Append DOM element to the body\r\n    const dynamicFormHost: any = document.querySelector(\"#\" + containerId);\r\n    dynamicFormHost.appendChild(domElem);\r\n\r\n    (componentRef.instance as ZComponent).data = field;\r\n    (componentRef.instance as ZComponent).group = group;\r\n    return componentRef;\r\n  }\r\n\r\n  private readonly DEFAULT_ISEDIT = true;\r\n  public setEditMode(me: any) {\r\n    let editMode = { value: this.DEFAULT_ISEDIT, initValue: this.DEFAULT_ISEDIT };\r\n\r\n    if (me && me.data && me.data.EditMode != undefined) {\r\n      if (typeof me.data.EditMode != \"object\") {\r\n        const grpEditModeValue = ZComponentHelper.getGroupValue(me.data.EditMode, me.group);\r\n        editMode = { value: grpEditModeValue, initValue: grpEditModeValue };\r\n      }\r\n      else {\r\n        editMode = me.data.EditMode;\r\n      }\r\n    }\r\n    else if (me && me.containerField && me.containerField[`_EditMode`] != undefined) {\r\n      editMode = me.containerField[`_EditMode`];\r\n    }\r\n    me.data[`_EditMode`] = editMode;\r\n    me.data[`_EditMode`].value = editMode.initValue;\r\n  }\r\n\r\n  public setComponentAdditionalProperties(me: any) {\r\n    me.componentProperties.title = me.data && me.data.Title && typeof me.data.Title === 'string' && me.data.Title.startsWith(\"group.\") ? ZComponentHelper.getGroupEvalValue.call(me, me.data.Title) : me.data.Title;\r\n    me.componentProperties.icon = me.data && me.data.Icon && typeof me.data.Icon === 'string' && me.data.Icon.startsWith(\"group.\") ? ZComponentHelper.getGroupEvalValue.call(me, me.data.Icon) : me.data.Icon;\r\n    me.componentProperties.label = me.data && me.data.Label && typeof me.data.Label === 'string' && me.data.Label.startsWith(\"group.\") ? ZComponentHelper.getGroupEvalValue.call(me, me.data.Label) : me.data.Label;\r\n    if (me.group.fields && me.group.fields.length > 0) {\r\n      const field = ZComponentHelper.getFieldFromFieldsByValue(me.group.fields, me.data.Value);\r\n      if (field) {\r\n        field[`componentProperties`] = me.componentProperties;\r\n      }\r\n    }\r\n  }\r\n\r\n  public setCompStylesByIndex(me: any) {\r\n    for (const key of Object.keys(me.componentProperties.style)) {\r\n      const ind = key.replace('style', '');\r\n\r\n      let style = me.data[`Style${ind}`];\r\n      if (me.data && me.data[`Style${ind}`] && typeof me.data[`Style${ind}`] === 'string' && me.data[`Style${ind}`].startsWith('group')) {\r\n        style = ZComponentHelper.getGroupValue(me.data[`Style${ind}`], me.group);\r\n      }\r\n      this.setStyleByIndex(me, ind, style || \"\");\r\n    }\r\n\r\n    for (const key of Object.keys(me.componentProperties.containerStyle)) {\r\n      const ind = key.replace('style', '');\r\n      let style = me.data[`ContainerStyle${ind}`];\r\n      if (me.data && me.data[`ContainerStyle${ind}`] && typeof me.data[`ContainerStyle${ind}`] === 'string' && me.data[`ContainerStyle${ind}`].startsWith('group')) {\r\n        style = ZComponentHelper.getGroupValue(me.data[`ContainerStyle${ind}`], me.group);\r\n      }\r\n      this.setContainerStyleByIndex(me, ind, style || \"\");\r\n    }\r\n  }\r\n\r\n  public setStyleByIndex(me: any, ind: string, style: string) {\r\n    me.componentProperties.style[`style${ind}`] = style;\r\n  }\r\n\r\n  public setContainerStyleByIndex(me: any, ind: string, style: string) {\r\n    me.componentProperties.containerStyle[`style${ind}`] = style;\r\n  }\r\n\r\n  public convertStyleStringToObject(styleString: string): any {\r\n    try {\r\n      const styleArr = styleString.split(\";\").filter(x => x);\r\n      const styleObj = {};\r\n      for (const style of styleArr) {\r\n        const kvp = style.split(\":\");\r\n        styleObj[kvp[0].trim()] = kvp[1].trim();\r\n      }\r\n\r\n      return styleObj;\r\n    }\r\n    catch (err) {\r\n      return null;\r\n    }\r\n  }\r\n\r\n  public translateToolBarItems(items: Array<any>, group: ZGroup): Observable<any> {\r\n    const obsList = new Array<Observable<any>>();\r\n    obsList.push(this.translateService.$translateItemList(items, \"text\", { elementName: 'general', group }));\r\n\r\n    if (obsList.length <= 0) {\r\n      return of({});\r\n    }\r\n    return forkJoin(obsList);\r\n  }\r\n\r\n  public translateGridColumnHeader(columns: Array<any>, group: ZGroup): Observable<any> {\r\n    const obsList = new Array<Observable<any>>();\r\n    obsList.push(this.translateService.$translateItemList(columns, \"title\", { elementName: 'menu', group }));\r\n\r\n    if (obsList.length <= 0) {\r\n      return of({});\r\n    }\r\n    return forkJoin(obsList);\r\n  }\r\n\r\n  public translateButtonComponent(buttons: Array<any>, group: ZGroup): Observable<any> {\r\n    let obsList = new Array<Observable<any>>();\r\n    obsList.push(this.translateService.$translateItemList(buttons, \"text\", { elementName: group.fieldName, group }));\r\n\r\n    if (obsList.length <= 0) {\r\n      return of({});\r\n    }\r\n    return forkJoin(obsList);\r\n  }\r\n\r\n  public translateComponentField(data: ZField, group: ZGroup): Observable<any> {\r\n    let obsList = new Array<Observable<any>>();\r\n\r\n    const propList = [\"Label\", \"PlaceHolder\", \"Title\"]; // ToolTip\r\n    for (const prop of propList) {\r\n      if (data[prop] != undefined) {\r\n        const obs = this.translateCompByProperty(data, prop, group.fieldName, group);\r\n        if (obs) {\r\n          obsList = obsList.concat(obs);\r\n        }\r\n      }\r\n    }\r\n\r\n    if (obsList.length <= 0) {\r\n      return of({});\r\n    }\r\n    return forkJoin(obsList);\r\n  }\r\n\r\n  public translateComponentProperties(componentProperties: ZComponentProperties, group: ZGroup): Observable<any> {\r\n    let obsList = new Array<Observable<any>>();\r\n\r\n    const propList = [\"label\", \"title\"];\r\n    for (const prop of propList) {\r\n      if (componentProperties[prop] != undefined) {\r\n        const obs = this.translateCompByProperty(componentProperties, prop, group.fieldName, group);\r\n        if (obs) {\r\n          obsList = obsList.concat(obs);\r\n        }\r\n      }\r\n    }\r\n\r\n    if (obsList.length <= 0) {\r\n      return of({});\r\n    }\r\n    return forkJoin(obsList);\r\n  }\r\n\r\n  private translateCompByProperty(data: any, propName: string, fieldName: string, group: ZGroup): Array<Observable<any>> {\r\n    if (data[propName] == undefined || data[propName] == \"\") {\r\n      return;\r\n    }\r\n\r\n    const obsList = new Array<Observable<any>>();\r\n    if (Array.isArray(data[propName]) && data[propName].length > 0) {\r\n      obsList.push(this.translateService.$translateItemList(data[propName], null, { elementName: fieldName, group }).pipe(\r\n        tap(resp => {\r\n          data[propName] = resp;\r\n        }))\r\n      );\r\n    }\r\n    else {\r\n      obsList.push(this.translateService.$translateSingleItem(data, propName, { elementName: fieldName, group }).pipe(\r\n        tap(resp => {\r\n          data[propName] = resp;\r\n        }))\r\n      )\r\n    }\r\n\r\n    return obsList;\r\n  }\r\n\r\n  //#region DateTime Conversion\r\n  private readonly timePickerDateType = ['zuidatetime', 'ztime', 'zuitime', 'sfdatetimepicker'];\r\n  public localizeDateTimeByIgnoringTimeZone(value: any, field: ZField): Date {\r\n    // Support both string and Date inputs\r\n    const originalDate =\r\n      value instanceof Date ? new Date(value.getTime()) : new Date(value);\r\n\r\n    // Case 1: time / datetime fields → keep wall-clock time stable\r\n    if (this.timePickerDateType.includes(field.Type)) {\r\n      const adjusted = new Date(originalDate);\r\n      const offsetMinutes = originalDate.getTimezoneOffset();\r\n      adjusted.setMinutes(originalDate.getMinutes() - offsetMinutes);\r\n      return adjusted;\r\n    }\r\n\r\n    // Case 2: month-only (zshortdate) → year+month, day fixed to 1\r\n    if (field.Type === 'zshortdate') {\r\n      return new Date(\r\n        originalDate.getFullYear(),\r\n        originalDate.getMonth(),\r\n        1,   // day\r\n        0, 0, 0, 0\r\n      );\r\n    }\r\n\r\n    // Case 3: normal date-only → keep calendar date stable, ignore time\r\n    const dateOnly = new Date(\r\n      originalDate.getFullYear(),\r\n      originalDate.getMonth(),\r\n      originalDate.getDate(),\r\n      0, 0, 0, 0\r\n    );\r\n\r\n    const normalizedDate = new Date(dateOnly);\r\n    const localOffsetMinutes = dateOnly.getTimezoneOffset();\r\n    normalizedDate.setMinutes(dateOnly.getMinutes() - localOffsetMinutes);\r\n\r\n    return normalizedDate;\r\n  }\r\n\r\n  //#endregion\r\n\r\n  public decrementComponentCounterForField(field: ZField) {\r\n    if (field.SubType === 'zudf') {\r\n      this.fieldService.decrementComponentCounter('zudf');\r\n    }\r\n    else if (field.FieldElementName) {\r\n      this.fieldService.decrementComponentCounter(field.FieldElementName);\r\n    }\r\n    else {\r\n      this.fieldService.decrementComponentCounter('main');\r\n    }\r\n  }\r\n\r\n  public isMobileScreen() {\r\n    if (this.environment.mobileMode && !!this.environment.mobileMode.isEnabled && window.innerWidth < 768) {\r\n      return true;\r\n    }\r\n    return false;\r\n  }\r\n}\r\n","import { NgModule, Directive, ElementRef, OnInit } from '@angular/core';\r\n\r\n@Directive({\r\n  selector: '[appScrollbarTheme]'\r\n})\r\n\r\n// Not used anymore, scrollbar styled global.scss\r\nexport class ScrollbarThemeDirective implements OnInit {\r\n\r\n  constructor(private el: ElementRef) {\r\n  }\r\n\r\n  private stylesheet = `\r\n      ::-webkit-scrollbar {\r\n        width: 15px;\r\n      }\r\n      ::-webkit-scrollbar-track {\r\n        background: var(--ion-color-light);\r\n      }\r\n      ::-webkit-scrollbar-thumb {\r\n        border-radius: 2px;\r\n        background: var(--ion-color-light-shade);\r\n        border: 0 solid #020202;\r\n      }\r\n      ::-webkit-scrollbar-thumb:hover {\r\n      }\r\n    `;\r\n\r\n  // background: linear-gradient(var(--ion-color-medium-tint), var(--ion-color-light));\r\n\r\n  ngOnInit(): void {\r\n    // disable this scrollbar styling\r\n    return;\r\n    // const styleElmt = this.el.nativeElement.shadowRoot.querySelector('style');\r\n    // if (styleElmt) {\r\n    //   styleElmt.append(this.stylesheet);\r\n    // } else {\r\n    //   const barStyle = document.createElement('style');\r\n    //   barStyle.append(this.stylesheet);\r\n    //   this.el.nativeElement.shadowRoot.appendChild(barStyle);\r\n    // }\r\n  }\r\n}\r\n\r\n\r\n\r\n","import { Directive, ViewContainerRef } from '@angular/core';\r\n\r\n@Directive({\r\n  selector: '[fieldelement]'\r\n})\r\nexport class FieldElementDirective {\r\n  constructor(public viewContainerRef: ViewContainerRef) { }\r\n}\r\n","/********** Angular **********/\r\nimport { Injectable } from \"@angular/core\";\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { State } from \"@progress/kendo-data-query\";\r\n\r\n/********** Component & Service **********/\r\nimport {\r\n  ZField, ZGridSettings, StateType, StateSettingService, StateSettingInfo\r\n} from 'mmhglobal-zcore';\r\nimport { defer, Observable, of, switchMap } from \"rxjs\";\r\n\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class ZGridService {\r\n  private gridState: State;\r\n  private gridDefaultState: State = { skip: 0, take: 20 };\r\n\r\n  constructor(\r\n    private stateSettingService: StateSettingService\r\n  ) {\r\n  }\r\n\r\n  /**\r\n   * Configure grid settings based on the provided ZField object.\r\n   * @param field The ZField object containing configuration information.\r\n   * @returns The configured grid state.\r\n   */\r\n  public setupGridSetting(field: ZField): State {\r\n    // Set the default number of items to display (take) based on the provided field's PageSize or a default of 20.\r\n    this.gridDefaultState.take = field.PageSize || 20;\r\n\r\n    // Set the default grouping field.\r\n    this.gridDefaultState.group = field.GroupSetting ? this.convertStringToFieldArray(field.GroupSetting?.DefaultGrouping) : [];\r\n\r\n    // Create a copy of the default state and assign it to this.gridState.\r\n    this.gridState = Object.assign({}, this.gridDefaultState);\r\n\r\n    if (field.CacheInfo) {\r\n      let stateType = this.getGridStateLogic(field);\r\n\r\n      // Determine whether to use SavedSetting cache type based on configuration.\r\n      if (stateType === StateType.cachedDataSetting || stateType === StateType.savedAndCachedDataSetting) {\r\n        let cacheName = this.stateSettingService.getStorageCacheKey(stateType, field);\r\n        const cacheData = sessionStorage.getItem(cacheName);\r\n\r\n        if (cacheData) {\r\n          this.gridState = (JSON.parse(cacheData) as ZGridSettings).gridState;\r\n        }\r\n      }\r\n    }\r\n\r\n    return this.gridState;\r\n  }\r\n\r\n  public getStateCacheByName(cacheName: string) {\r\n    try {\r\n      if (!cacheName) {\r\n        console.warn('Invalid cache name provided');\r\n        return null;\r\n      }\r\n\r\n      return JSON.parse(localStorage.getItem(cacheName));\r\n    } catch (error) {\r\n      console.warn('Error accessing localStorage:', error);\r\n      return null; // Fallback in case of an error\r\n    }\r\n  }\r\n\r\n  public getStateCache(stateType: StateType, field: ZField): Observable<any> {\r\n    const cacheName = this.stateSettingService.getStorageCacheKey(stateType, field);\r\n    const cachedState = this.getStateCacheByName(cacheName);\r\n  \r\n    if (cachedState !== null) {\r\n      // Return the cached state immediately if it's not null\r\n      return of(cachedState);\r\n    }\r\n  \r\n    const stateSettingInfo = this.stateSettingService.initGetStateSettingInfo(field);\r\n    stateSettingInfo.stateType = stateType;\r\n   \r\n    return defer(() => \r\n      this.stateSettingService.getStateSetting(stateSettingInfo).pipe(\r\n        switchMap((retrievedState) => {\r\n          if (retrievedState) {\r\n            // Parse and set state if available\r\n            const stateSettingInfo = retrievedState as StateSettingInfo;\r\n            if(stateSettingInfo.stateData) {\r\n              const gridStateData = JSON.parse(stateSettingInfo.stateData) as ZGridSettings;\r\n    \r\n              if (gridStateData) {\r\n                gridStateData.id = stateSettingInfo.id.toString();\r\n                this.setStateToCache(cacheName, gridStateData);\r\n                return of(gridStateData); // Emit the retrieved state\r\n              }\r\n            }\r\n          }\r\n          return of(null); // Complete without emitting anything\r\n        }) \r\n      )\r\n    );\r\n  }\r\n    \r\n  public setStateToCache(cacheName: string, gridSetting: ZGridSettings) {\r\n    const cacheData = JSON.stringify(gridSetting);\r\n    localStorage.setItem(cacheName, cacheData);\r\n  }\r\n\r\n  public deleteStateCacheByName(cacheName: string) {\r\n    localStorage.removeItem(cacheName);\r\n  }\r\n\r\n  public deleteStateCache(stateType: StateType, field: ZField) {\r\n    const cacheName = this.stateSettingService.getStorageCacheKey(stateType, field);\r\n    localStorage.removeItem(cacheName);\r\n  }\r\n\r\n  public getGridStateLogic(field: ZField) {\r\n    if (field.CacheInfo) {\r\n      const enableSaveState = field.CacheInfo.EnableSaveState;\r\n      const disableCacheData = field.CacheInfo.DisableCacheData;\r\n\r\n      if (enableSaveState && !disableCacheData) {\r\n        return StateType.savedAndCachedDataSetting;\r\n      }\r\n      else if (enableSaveState && disableCacheData) {\r\n        return StateType.savedSetting;\r\n      }\r\n      else if (!enableSaveState && !disableCacheData) {\r\n        return StateType.cachedDataSetting;\r\n      }\r\n    }\r\n    else {\r\n      console.log('CacheInfo is undefined.');\r\n    }\r\n\r\n    return null;\r\n  }\r\n\r\n  public convertStringToFieldArray(input: string): { field: string }[] {\r\n    if (!input) return [];\r\n    return input.split(',').map(field => ({ field: field.trim() }));\r\n  }\r\n}\r\n","/********** Angular **********/\r\nimport { Directive, OnInit, OnDestroy, Input, Inject } from \"@angular/core\";\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { Observable, Subject, of } from \"rxjs\";\r\nimport { map, switchMap, tap } from \"rxjs/operators\";\r\nimport { DataBindingDirective, GridComponent, DataStateChangeEvent, PageChangeEvent } from \"@progress/kendo-angular-grid\";\r\nimport { SortDescriptor, FilterDescriptor, process } from \"@progress/kendo-data-query\";\r\n\r\n/********** Component & Service **********/\r\nimport { ZGridService } from \"./zgrid.service\";\r\n//import { MainService } from \"../services/main.service\";\r\nimport {\r\n  ZComponentHelper, ZField, ZGridPostApiParams,\r\n  WebApiService, ZGroup, ToastService, SignalrService, ActionType, ZGridColumnConfigs, ZGridSettings, LoggingService, ZGridFilterParams,\r\n  StateType, StateSettingService,\r\n  StorageSessionService\r\n} from \"mmhglobal-zcore\";\r\nimport { ZComponentService } from \"../services/zcomponent.service\";\r\n\r\n\r\n@Directive({\r\n  selector: \"[zgridbinding]\",\r\n})\r\nexport class ZGridBindingDirective extends DataBindingDirective implements OnInit, OnDestroy {\r\n  private changeEvent = {\r\n    pageChanged: false,\r\n    filterChanged: false,\r\n    sortChanged: false\r\n  }\r\n\r\n  @Input() zgridbinding: {\r\n    data: ZField;\r\n    group: ZGroup;\r\n    params: ZGridPostApiParams;\r\n    gridSubject: Subject<any>;\r\n    gridSetting: ZGridSettings;\r\n  };\r\n\r\n  //state: State = {\r\n  //  skip: 0,\r\n  //  take: 10,\r\n  //};\r\n\r\n  //gridColumns: any[] = [];\r\n\r\n  //usableColumns: any[] = [];\r\n\r\n  resourceURL = null;\r\n\r\n  paginationApiPostUrl = null;\r\n\r\n  dataSource = null;\r\n\r\n  get gridSetting() {\r\n    return this.zgridbinding.gridSetting;\r\n  }\r\n  set gridSetting(value) {\r\n    this.zgridbinding.gridSetting = value;\r\n  }\r\n  get field() {\r\n    return this.zgridbinding.data;\r\n  }\r\n\r\n  get grp() {\r\n    return this.zgridbinding.group;\r\n  }\r\n\r\n  get gridSubject() {\r\n    return this.zgridbinding.gridSubject;\r\n  }\r\n\r\n  get params(): ZGridPostApiParams {\r\n    return this.zgridbinding.params;\r\n  }\r\n\r\n  get getData() {\r\n    return this.grid.data;\r\n  }\r\n\r\n  constructor(\r\n    @Inject(GridComponent) grid, // Injecting GridComponent provides access to the scope and context of the GridComponent.\r\n    private webapiService: WebApiService,\r\n    private toastService: ToastService,\r\n    //private mainService: MainService,\r\n    //private offlineDatabaseService: OfflineDatabaseService,\r\n    private signalrService: SignalrService,\r\n    private gridService: ZGridService,\r\n    private loggingService: LoggingService,\r\n    private stateSettingService: StateSettingService,\r\n    private componentService: ZComponentService,\r\n    private readonly storageService: StorageSessionService,\r\n  ) {\r\n    super(grid);\r\n  }\r\n\r\n  public ngOnInit(): void {\r\n    super.ngOnInit();\r\n\r\n    this.grid.loading = true;\r\n    this.pageSize = this.field.PageSize || 20;\r\n    this.dataSource = this.field.DataSource ?? null;\r\n\r\n    if (!this.dataSource) {\r\n      this.resourceURL = ZComponentHelper.getGroupValue(\r\n        this.field.ResourceURL,\r\n        this.grp\r\n      );\r\n\r\n      if (!this.resourceURL) {\r\n        this.grid.loading = false;\r\n        if (this.zgridbinding.data.Name !== \"ActivityLogGrid\") {\r\n          console.warn(\r\n            \"No initialise for Field.ResourceURL: \",\r\n            this.field.ResourceURL\r\n          );\r\n        }\r\n        return;\r\n      }\r\n\r\n      this.setResourceUrl(this.resourceURL);\r\n\r\n      this.setFilterParamsByParentRefId();\r\n    }\r\n\r\n    if (this.field.DisableGenerateColumnByForm) {\r\n      const columnFields = ZComponentHelper.getGroupValue(this.field.ColumnFields, this.grp);\r\n\r\n      if (Array.isArray(columnFields)) {\r\n        this.setColumns(columnFields);\r\n      }\r\n\r\n      if (this.field['SkipLoadResourceURLData']) {\r\n        this.grid.loading = false;\r\n        this.gridSubject.next(this);\r\n      }\r\n      else {\r\n        this.getDataBinding();\r\n      }\r\n    }\r\n    else {\r\n      this.generateGridColumns();\r\n    }\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n  }\r\n\r\n  public ngOnDestroy(): void {\r\n    super.ngOnDestroy();\r\n  }\r\n\r\n  private retrieveGridStateCache(stateType: StateType, field: ZField): Observable<any> {\r\n    return this.gridService.getStateCache(stateType, field).pipe(\r\n      map((settingCacheValue) => {\r\n        // If settingCacheValue is null or undefined, continue with a fallback value\r\n        return settingCacheValue;\r\n      }),\r\n      tap((settingCacheValue) => {\r\n        if (settingCacheValue) {\r\n          const parsedJsonData = settingCacheValue as ZGridSettings;\r\n          if (parsedJsonData) {\r\n            this.gridSetting.gridState = parsedJsonData.gridState ?? this.gridSetting.gridState;\r\n            this.gridSetting.columnConfigurations = parsedJsonData.columnConfigurations ?? null;\r\n          }\r\n        }\r\n      })\r\n    );\r\n  }\r\n\r\n  public setResourceUrl(resourceUrl: string) {\r\n    const array = resourceUrl.split(\"/api/\");\r\n    if (!!array[1]) {\r\n      array[1] = \"Page\" + array[1];\r\n      this.paginationApiPostUrl = array.join(\"/api/\");\r\n    } else {\r\n      const arr = this.resourceURL.split(\"/\");\r\n      arr[arr.length - 2] = \"Page\" + arr[arr.length - 2];\r\n      this.paginationApiPostUrl = arr.join(\"/\");\r\n    }\r\n  }\r\n\r\n  private setFilterParamsByParentRefId() {\r\n    // Use field own referenceId if available\r\n    const refId = this.getFieldReferenceId() || this.grp.referenceId;\r\n    const refField = this.field.ReferenceField || this.grp.parentReferenceField;\r\n    if (refId && refField) {\r\n      const filterValue = {\r\n        key: refField,\r\n        ops: \"=\",\r\n        value: refId,\r\n      };\r\n\r\n      this.params.filterParams.push(filterValue);\r\n    }\r\n  }\r\n\r\n  private getFieldReferenceId() {\r\n    let fieldReferenceId = null;\r\n    if (this.field.ReferenceId) {\r\n      fieldReferenceId = ZComponentHelper.getGroupValue(\r\n        this.field.ReferenceId,\r\n        this.grp\r\n      );\r\n    }\r\n    return fieldReferenceId;\r\n  }\r\n\r\n  public generateGridColumns() {\r\n    const columnFields$: Observable<any> = ZComponentHelper.getGroupValue(\r\n      this.field.ColumnFields,\r\n      this.grp\r\n    );\r\n\r\n    if (columnFields$) {\r\n      columnFields$.pipe(\r\n        switchMap((data) => {\r\n          const gridStateLogic = this.gridService.getGridStateLogic(this.field);\r\n\r\n          if (gridStateLogic && gridStateLogic !== StateType.cachedDataSetting) {\r\n            return this.retrieveGridStateCache(StateType.savedSetting, this.field).pipe(\r\n              map((state) => {\r\n                return data;\r\n              })\r\n            );\r\n          }\r\n\r\n          return of(data);\r\n        }),\r\n        tap((data) => {\r\n          this.gridSetting = {\r\n            ...this.gridSetting, // Preserve existing properties\r\n            columnField: data,\r\n            group: this.zgridbinding.group\r\n          }\r\n\r\n          ZComponentHelper.getGridColumns(this.gridSetting);\r\n          this.loggingService.debugLog('generated grid columns', this.gridSetting);\r\n\r\n          this.getFilterParamsColumns();\r\n          this.getFilter();\r\n          this.getFilterParams();\r\n          this.getSorting();\r\n          this.getGrantType();\r\n          this.setHiddenColumn(this.gridSetting.columnConfigurations);\r\n\r\n          this.params.referId = this.getFieldReferenceId() || this.grp.referenceId || null;\r\n        })\r\n      ).subscribe(() => {\r\n        if (this.field['SkipLoadResourceURLData']) {\r\n          this.grid.loading = false;\r\n          this.gridSubject.next(this);\r\n        }\r\n        else {\r\n          this.getDataBinding();\r\n        }\r\n      });\r\n    }\r\n    else {\r\n      console.warn('Fail to generate grid column fields.');\r\n      console.log(this.field.ColumnFields);\r\n      console.log(this.grp);\r\n    }\r\n  }\r\n\r\n  public setSkipLoadResourceURLData(settingValue: boolean) {\r\n    this.field['SkipLoadResourceURLData'] = !settingValue;\r\n  }\r\n\r\n  /**\r\n   * Update the title of a column in the grid setting based on its value.\r\n   *\r\n   * @param {string} colValue - The value of the column to update.\r\n   * @param {string} colName - The new title for the column.\r\n   * @returns {void}\r\n   */\r\n  public setColumnName(colValue: string, colName: string): void {\r\n    // Find the column with the matching colValue.\r\n    const columnToUpdate = this.gridSetting.columns.find(field => field.Value === colValue);\r\n\r\n    // If the column is found, update its title property with colName.\r\n    if (columnToUpdate) {\r\n      columnToUpdate.title = colName;\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Set the visibility of a column in the grid based on its value.\r\n   *\r\n   * @param {string} colValue - The value of the column to set visibility for.\r\n   * @param {boolean} isVisible - Whether the column should be visible (true) or hidden (false).\r\n   * @returns {void}\r\n   */\r\n  public setColumnVisible(colValue: string, isVisible: boolean) {\r\n    // Find the column with the matching colValue.\r\n    const columnToUpdate = this.gridSetting.columns.find(field => field.Value === colValue);\r\n\r\n    // If the column is found, update its 'hidden' property based on 'isVisible'.\r\n    if (columnToUpdate) {\r\n      columnToUpdate.hidden = !isVisible;\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Generate filter parameters for columns and set them in the 'params' object.\r\n   *\r\n   * @returns {void}\r\n   */\r\n  private getFilterParamsColumns() {\r\n    // Create an array to store column fields.\r\n    const colFields: Array<string> = [];\r\n\r\n    // Iterate through the grid columns to build column field strings.\r\n    this.gridSetting.columns.forEach((column) => {\r\n      if (column.valueExpr) {\r\n        // If 'valueExpr' exists, use it as an alias for the field.\r\n        colFields.push(column.valueExpr + \" as \" + column.field);\r\n      } else {\r\n        colFields.push(column.field);\r\n      }\r\n    });\r\n\r\n    // Check if 'Id' is in the column fields; if not, add it.\r\n    if (colFields.length > 0) {\r\n      if (colFields.indexOf(\"Id\") === -1) {\r\n        colFields.push(\"Id\");\r\n      }\r\n    }\r\n\r\n    // Create an array to temporarily store the generated column fields.\r\n    const tmpGridColumn: any[] = [];\r\n    tmpGridColumn.push(colFields.join(\",\"));\r\n\r\n    // If there are generateHiddenColumns in the setting, add them to the array.\r\n    if (this.gridSetting.generateHiddenColumns?.length > 0) {\r\n      tmpGridColumn.push(this.gridSetting.generateHiddenColumns.join(\",\"));\r\n    }\r\n\r\n    // Set the 'params.columns' property with the concatenated column fields.\r\n    this.params.columns = tmpGridColumn.join(\",\");\r\n  }\r\n\r\n  /**\r\n   * Update the 'params.filters' property based on the 'field.Filters' property.\r\n   *\r\n   * @returns {void}\r\n   */\r\n  private getFilter() {\r\n    if (this.params.filters && this.field.Filters) {\r\n      // Combine 'params.filters' and 'field.Filters' using '&&' if both exist.\r\n      this.params.filters = `${this.params.filters} && ${this.field.Filters}`;\r\n    }\r\n    else if (!this.params.filters && this.field.Filters) {\r\n      // Use 'field.Filters' directly if 'params.filters' doesn't exist.\r\n      this.params.filters = this.field.Filters;\r\n    }\r\n\r\n    // Check if 'field.Filters' contains references to 'group.' and replace them with actual values.\r\n    if (this.field.Filters && this.field.Filters.split(\" \").some((element) => element.trim().startsWith(\"group.\"))) {\r\n      const filterKeyValPairs = this.field.Filters.split(\" \");\r\n      const grpValues = filterKeyValPairs.filter((element) => element.trim().startsWith(\"group.\"));\r\n\r\n      grpValues.forEach((val) => {\r\n        const actualVal = ZComponentHelper.getGroupValue(val, this.grp);\r\n        this.params.filters = this.params.filters.replace(val, actualVal);\r\n      });\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Set the filter parameters in the 'params.filterParams' property based on 'field['FilterParams']'. filterParams === used for the input in the column filter at the UI.\r\n   *\r\n   * @returns {void}\r\n   */\r\n  private getFilterParams() {\r\n    const filterParams = this.field['FilterParams'];\r\n\r\n    // Initialize filter parameters if undefined.\r\n    if (!this.params.filterParams) {\r\n      this.params.filterParams = [];\r\n    }\r\n\r\n    if (filterParams) {\r\n      if (filterParams.startsWith(\"group.\")) {\r\n        // If 'filterParams' starts with \"group.\", extend the existing array.\r\n        this.params.filterParams = [\r\n          ...this.params.filterParams,\r\n          ...ZComponentHelper.getGroupValue(filterParams, this.grp)\r\n        ];\r\n      }\r\n      else {\r\n        // If 'filterParams' does not start with \"group.\", use it directly.\r\n        this.params.filterParams = [\r\n          ...this.params.filterParams,\r\n          filterParams\r\n        ];\r\n      }\r\n    }\r\n\r\n    // Check if there are column filters in the grid state and append to filterparam\r\n    if (this.gridSetting.gridState?.filter?.filters) {\r\n      this.gridSetting.gridState.filter?.filters?.forEach((filter: FilterDescriptor) => {\r\n        const filterParam = {\r\n          key: filter.field as string,\r\n          ops: this.mapFilterOperator(filter.operator),\r\n          value: filter.value === null ? \"\" : filter.value,\r\n        };\r\n        // Check if a filter parameter with the same key already exists.\r\n        const existingParam = this.params.filterParams.find((param) => param.key === filterParam.key);\r\n        if (existingParam) {\r\n          // If a filter parameter with the same key exists, update its value.\r\n          existingParam.value = filterParam.value;\r\n        } else {\r\n          // If no filter parameter with the same key, add it to the filter parameters.\r\n          this.params.filterParams.push(filterParam);\r\n        }\r\n      });\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Set the sorting order in the 'params.sortOrder' property based on 'field.SortOrder'.\r\n   *\r\n   * @returns {void}\r\n   */\r\n  private getSorting() {\r\n    const sortOrder = this.field.SortOrder;\r\n\r\n    // Check if 'sortOrder' is defined and starts with \"group.\".\r\n    if (sortOrder && sortOrder.startsWith(\"group.\")) {\r\n      this.params.sortOrder = ZComponentHelper.getGroupValue(sortOrder, this.grp);\r\n    }\r\n    else {\r\n      // If 'sortOrder' is not defined or doesn't start with \"group.\", use it directly.\r\n      this.params.sortOrder = sortOrder;\r\n    }\r\n\r\n\r\n    // Initialize sort parameters if undefined.\r\n    if (!this.params.sortOrders) {\r\n      this.params.sortOrders = [];\r\n    }\r\n    if (!this.params.sortColumnNames) {\r\n      this.params.sortColumnNames = [];\r\n    }\r\n\r\n    if (this.gridSetting.gridState.sort) {\r\n      this.gridSetting.gridState.sort.forEach((descriptor) => {\r\n        if (descriptor.dir) {\r\n          const field = this.gridSetting.columns.find((col) => col.field === descriptor.field);\r\n          const sortColumnName = field.valueExpr !== undefined ? field.valueExpr : descriptor.field;\r\n\r\n          // Check if a sort column with the same name already exists.\r\n          const existingSortColumnIndex = this.params.sortColumnNames.findIndex((name) => name === sortColumnName);\r\n\r\n          if (existingSortColumnIndex !== -1) {\r\n            // If a sort column with the same name exists, update its sort order.\r\n            this.params.sortOrders[existingSortColumnIndex] = descriptor.dir;\r\n          } else {\r\n            // If no sort column with the same name, add it to the sort columns and sort orders.\r\n            this.params.sortColumnNames.push(sortColumnName);\r\n            this.params.sortOrders.push(descriptor.dir);\r\n          }\r\n        }\r\n      });\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Set the grant type in the 'params.grantType' property based on 'field.GrantType'.\r\n   *\r\n   * @returns {void}\r\n   */\r\n  private getGrantType() {\r\n    const grantType = this.field.GrantType;\r\n\r\n    // Check if 'grantType' is defined.\r\n    if (grantType != undefined) {\r\n      this.params.grantType = ZComponentHelper.getGroupValue(grantType.toString(), this.grp);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Set the 'hidden' property for columns in 'gridSetting' based on 'columnConfigs'.\r\n   *\r\n   * @param {ZGridColumnConfigs[]} columnConfigs - The column configuration settings.\r\n   * @returns {void}\r\n   */\r\n  private setHiddenColumn(columnConfigs?: ZGridColumnConfigs[]) {\r\n    if (!this.gridSetting?.columns) return;\r\n\r\n    // Store reference to columns that can be hidden\r\n    const columns = this.gridSetting.columns.filter(column => column.enableHiding);\r\n\r\n    // Preserve original visibility state\r\n    columns.forEach(column => column.originalHiddenValue = !column.gridColVisible);\r\n\r\n    // Determine which columns should be hidden\r\n    const hiddenColumns = columnConfigs\r\n      ? columnConfigs.filter(column => column.hidden === true)\r\n      : columns.filter(col => !col.gridColVisible);\r\n\r\n    // Hide columns based on field matching\r\n    hiddenColumns.forEach(hiddenColumn => {\r\n      const column = this.gridSetting.columns.find(c => c.field === hiddenColumn.field);\r\n      if (column) {\r\n        column.hidden = true;\r\n      }\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Retrieve data for data binding.\r\n   *\r\n   * @param {boolean} skipUseCache - Whether to skip using cache for data retrieval.\r\n   * @returns {Promise<void>}\r\n   */\r\n  public getDataBinding(skipUseCache?: boolean) {\r\n    this.grid.loading = true;\r\n    this.getGridData();\r\n\r\n    // const cacheInfo = this.zgridbinding.data.CacheInfo;\r\n\r\n    // if (!cacheInfo || skipUseCache) {\r\n    //   this.getGridData();\r\n    //   return;\r\n    // }\r\n\r\n    // if (cacheInfo) {\r\n    //   const gridStateLogic = this.gridService.getGridStateLogic(this.field);\r\n    //   if (gridStateLogic === GridStateLogicType.SettingOnly) {\r\n    //     this.getGridData();\r\n    //     return;\r\n    //   }\r\n    // }\r\n\r\n    // comment out on 20241001. default to fetch the data from api instead of loading fromt he cache.\r\n    // if (!this.changeEvent.pageChanged && !this.changeEvent.sortChanged && !this.changeEvent.filterChanged) {\r\n    //   const currentDataCacheInfo = this.gridService.generateCacheInfo(this.zgridbinding.data);\r\n    //   const result = this.offlineDatabaseService.getItemByKey(currentDataCacheInfo, currentDataCacheInfo.offlineDatabaseKey);\r\n    //   if (result) {\r\n    //     this.handleGetDataBindingComplete(result.data, true);\r\n    //   } else {\r\n    //     this.getGridData();\r\n    //   }\r\n    // }\r\n    // else {\r\n    // this.getGridData();\r\n    // }\r\n  }\r\n\r\n  /**\r\n   * Retrieve grid data.\r\n   *\r\n   * @returns {void}\r\n   */\r\n  private getGridData() {\r\n    if (!this.dataSource) {\r\n      if (!this.paginationApiPostUrl) {\r\n        console.warn('Grid pagination API URL is undefined.');\r\n        return;\r\n      }\r\n\r\n      const stateSkip = this.gridSetting.gridState ? this.gridSetting.gridState.skip : this.state.skip;\r\n      const stateTake = this.gridSetting.gridState ? this.gridSetting.gridState.take : this.state.take;\r\n\r\n      this.params.pageNo = this.getPageNo(stateSkip, stateTake);\r\n      this.params.pageSize = stateTake;\r\n\r\n      if (this.field.ExternalPagination) {\r\n        const sessionData = this.tryGetDataFromSession();\r\n        if (sessionData) {\r\n          this.handleGetDataBindingComplete(sessionData);\r\n          return;\r\n        }\r\n\r\n        // For POST method Page WebAPI\r\n        const detailGridSessionKey = sessionStorage.getItem('detailGridSessionKey');\r\n        this.webapiService\r\n          .postApi(this.paginationApiPostUrl, this.params, null, null, null, null, true)\r\n          .subscribe({\r\n           next: (resp) => {\r\n              this.setDetailDataIntoSession(detailGridSessionKey, resp);\r\n              this.handleGetDataBindingComplete(resp);\r\n            },\r\n            error: (err) => {\r\n              this.toastService.show(\"Error occur in loading the data\", \"middle\", false, 1500, \"danger\");\r\n              this.grid.loading = false;\r\n            }\r\n          });\r\n      }\r\n      else {\r\n        // For GET method\r\n        this.webapiService\r\n          .getApi(this.resourceURL, null, null, null, null, null, true)\r\n          .subscribe((resp) => {\r\n            let data = null;\r\n            let totalCount = 0;\r\n\r\n            if (resp.dataSet) {\r\n              data = resp.dataSet;\r\n              totalCount = resp.totalCount;\r\n            } else {\r\n              data = resp;\r\n              totalCount = resp.length;\r\n            }\r\n\r\n            this.handleGetDataBindingComplete({ dataSet: data, totalCount: totalCount });\r\n          });\r\n      }\r\n    }\r\n    else {\r\n      const dataSet = ZComponentHelper.getGroupValue(\r\n        this.field.DataSource,\r\n        this.grp\r\n      );\r\n\r\n      this.data = dataSet;\r\n      this.grid.loading = false;\r\n      this.gridSubject.next(this);\r\n      this.notifyDataChange();\r\n      this.collapseAllDetailGrid();\r\n    }\r\n  }\r\n\r\n  private handleGetDataBindingComplete(data: any, skipCacheData?: boolean) {\r\n    this.aggregateHandling(data.dataSet);\r\n    this.handleDateTimeIgnoringTimeZone(data.dataSet);\r\n    this.grid.data = { data: data.dataSet, total: data.totalCount };\r\n    this.collapseAllDetailGrid();\r\n    if (!skipCacheData) {\r\n      const stateLogic = this.gridService.getGridStateLogic(this.field);\r\n      if (stateLogic === StateType.cachedDataSetting || stateLogic === StateType.savedAndCachedDataSetting) {\r\n        this.cacheGridData(stateLogic);\r\n      }\r\n    }\r\n\r\n    const { gridState } = this.zgridbinding.gridSetting;\r\n    const enableGrouping = this.field.GroupSetting?.EnableGrouping;\r\n\r\n    if (enableGrouping && gridState) {\r\n      const { data } = this.grid;\r\n\r\n      if (data?.data) {\r\n        try {\r\n          // Clone gridState and set skip to 0, to avoid direct mutation\r\n          const newGridState = { ...gridState, skip: 0 };\r\n          const { data: groupedData } = process(data.data, newGridState);\r\n\r\n          data.data = groupedData;\r\n        } catch (error) {\r\n          console.error('Error grouping data:', error);\r\n        }\r\n      }\r\n    }\r\n\r\n    this.grid.loading = false;\r\n    this.afterDataBinded(data);\r\n    this.gridSubject.next(this);\r\n    this.notifyDataChange();\r\n  }\r\n\r\n  private resetChangeEventFlag() {\r\n    this.changeEvent = {\r\n      pageChanged: false,\r\n      filterChanged: false,\r\n      sortChanged: false\r\n    }\r\n  }\r\n\r\n  private cacheGridData(stateLogic: StateType) {\r\n    const cacheName = this.stateSettingService.getStorageCacheKey(stateLogic, this.field);\r\n    const gridState = this.gridSetting.gridState;\r\n    const gridData = this.grid?.data || null;\r\n\r\n    if (!gridData['data']) {\r\n      return;\r\n    }\r\n\r\n    const cacheInfo = this.zgridbinding.data.CacheInfo;\r\n\r\n    if (cacheInfo && !cacheInfo.DisableCacheData) {\r\n      const columnConfigurations = ZComponentHelper.getGridColumnsConfig(this.zgridbinding.gridSetting.columns);\r\n      let updatedData = [...gridData['data']];\r\n      let skipList = [gridState.skip];\r\n      let currentGridSkip = gridState.skip;\r\n\r\n      const cacheGridData = {\r\n        data: {\r\n          dataSet: updatedData,\r\n          totalCount: gridData['total']\r\n        },\r\n        gridState: gridState,\r\n        skipList: skipList,\r\n        cacheDuration: cacheInfo.CacheDuration,\r\n        columnConfigurations: columnConfigurations\r\n      }\r\n\r\n      sessionStorage.setItem(cacheName, JSON.stringify(cacheGridData));\r\n    }\r\n  }\r\n\r\n  //\"FeatureDevelopment|Competency\"\r\n  // commented out for future reference and re-develop.\r\n  // private async subscribeCacheDataChanges() {\r\n  //   const cacheInfo = this.zgridbinding.data.CacheInfo;\r\n\r\n  //   if (cacheInfo && !cacheInfo.DisableCacheData) {\r\n  //     // cannot use main service here. will get circular error when build lib\r\n  //     //this.mainService.joinProjectSignalR();\r\n\r\n  //     const callBackFunction = `${cacheInfo.Name}_handleReceivedMessage`;\r\n\r\n  //     // create and bind a function to be called back for the grid in the group trigger by signalR.\r\n  //     if (!this.grp.signalRCallbackHandler) {\r\n  //       this.grp.signalRCallbackHandler = {};\r\n  //     }\r\n  //     this.grp.signalRCallbackHandler[callBackFunction] = this.handleReceivedMessage.bind(this);\r\n\r\n  //     const generatedCacheInfo = this.gridService.generateCacheInfo(this.zgridbinding.data);\r\n  //     if (generatedCacheInfo.definedDatabase && generatedCacheInfo.definedTable) {\r\n  //       generatedCacheInfo.definedDatabase.forEach(db => {\r\n  //         generatedCacheInfo.definedTable.forEach(table => {\r\n  //           const eventName = `${db}|${table}`;\r\n  //           console.log(`Listening to event name: ${eventName}`);\r\n  //           this.signalrService.subscribeToEvent(this.grp, `${eventName}`, `group.signalRCallbackHandler.${callBackFunction}`);\r\n  //         });\r\n  //       });\r\n  //     }\r\n  //   }\r\n  // }\r\n\r\n  // async handleReceivedMessage(group: ZGroup, result: any, eventName: string) {\r\n  //   console.log(`The Signalr trigger has been detected. Now, proceed to update the cache and grid data.`);\r\n\r\n  //   const responsedResult = JSON.parse(result);\r\n  //   const actionType = responsedResult.Action;\r\n  //   const responsedResultId = responsedResult['Id'];\r\n  //   const tempParams = ZComponentHelper.deepClone(this.params);\r\n  //   const currentDataCacheInfo = this.gridService.generateCacheInfo(this.zgridbinding.data);\r\n  //   const currentData = await this.offlineDatabaseService.getItemByKey(currentDataCacheInfo, currentDataCacheInfo.offlineDatabaseKey);\r\n\r\n  //   if (currentData) {\r\n  //     tempParams.filters = `Id=${responsedResultId}`;\r\n\r\n  //     if (actionType === ActionType.Delete) {\r\n  //       currentData.data.dataSet = currentData.data.dataSet.filter(item => item.Id !== parseInt(responsedResultId));\r\n\r\n  //       this.handleGetDataBindingComplete(currentData.data, true);\r\n  //       await this.offlineDatabaseService.updateItem(currentDataCacheInfo, currentData);\r\n\r\n  //       this.handleGetDataBindingComplete(currentData.data, true);\r\n\r\n  //       console.log(`Item updated: ${currentData}`);\r\n  //     }\r\n  //     else {\r\n  //       this.webapiService.postApi(this.paginationApiPostUrl, tempParams, null, null, null, null, true).subscribe(async resp => {\r\n\r\n  //         const databaseRecord = resp.dataSet[0];\r\n\r\n  //         if (databaseRecord) {\r\n  //           if (actionType === ActionType.Update) {\r\n  //             const indexToUpdate = currentData.data.dataSet.findIndex(item => item.Id === databaseRecord.Id);\r\n  //             if (indexToUpdate !== -1) {\r\n  //               // Create a new object with the updated name\r\n  //               const updatedItem = { ...currentData.data.dataSet[indexToUpdate], ...databaseRecord };\r\n\r\n  //               // Replace the old item with the updated one\r\n  //               currentData.data.dataSet[indexToUpdate] = updatedItem;\r\n\r\n  //               this.handleGetDataBindingComplete(currentData.data, true);\r\n\r\n  //               await this.offlineDatabaseService.updateItem(currentDataCacheInfo, currentData);\r\n\r\n  //               console.log(`Item updated: ${currentData}`);\r\n  //             } else {\r\n  //               console.log(\"Item not found with ID:\", databaseRecord.Id);\r\n  //             }\r\n  //           }\r\n  //           else if (actionType === ActionType.Add && currentData.gridState.skip < 20) {\r\n  //             currentData.data.dataSet.unshift(databaseRecord);\r\n  //             this.handleGetDataBindingComplete(currentData.data, true);\r\n  //             await this.offlineDatabaseService.updateItem(currentDataCacheInfo, currentData);\r\n\r\n  //             this.handleGetDataBindingComplete(currentData.data, true);\r\n\r\n  //             console.log(`Item updated: ${currentData}`);\r\n  //           }\r\n  //         }\r\n  //         else {\r\n  //           // Unable to get data, refresh the whole grid data from API\r\n  //           this.getGridData();\r\n  //         }\r\n  //       });\r\n  //     }\r\n  //   }\r\n  //   else {\r\n  //     // Unable to get from indexedDB straight get from API\r\n  //     this.getGridData();\r\n  //   }\r\n  // }\r\n\r\n  private afterDataBinded(data) {\r\n    // allow to call back project page after data binded.\r\n    let bindedValue = this.zgridbinding.data['AfterDataBinded'];\r\n    if (bindedValue) {\r\n      const me = Object.assign({}, this);\r\n      let callFunc;\r\n\r\n      try {\r\n        const params = bindedValue.match(/\\b\\(.*/gi);\r\n        if (params) {\r\n          bindedValue = bindedValue.replace(params[0], \"\");\r\n        }\r\n        bindedValue = bindedValue.replace('modalGroup.', 'group.');\r\n        callFunc = eval('me.zgridbinding.' + bindedValue);\r\n      }\r\n      catch (error) {\r\n        console.warn(\r\n          \"Error when getGroupValue: \",\r\n          event.target,\r\n          \" > Error: \",\r\n          error\r\n        );\r\n      }\r\n\r\n      if (typeof callFunc === \"function\") {\r\n        const newFunc = callFunc.bind(me);\r\n        newFunc(event, me.zgridbinding.data, data);\r\n      }\r\n    }\r\n  }\r\n\r\n  public clearData(): void {\r\n    this.grid.data = { data: [], total: 0 };\r\n  }\r\n\r\n  /**\r\n   * Handle column aggregation for the given data.\r\n   *\r\n   * @param {any[]} data - The data to aggregate.\r\n   * @returns {void}\r\n   */\r\n  private aggregateHandling(data: any) {\r\n    const aggregateColumns = this.gridSetting.columns.filter(col => col.aggregateType);\r\n\r\n    aggregateColumns.forEach(col => {\r\n      const field = col.field;\r\n      const aggregateType = col.aggregateType.toLowerCase().replace(':', '');\r\n\r\n      let aggregateValue = null;\r\n      switch (aggregateType) {\r\n        case \"total\":\r\n        case \"sum\":\r\n          aggregateValue = data.reduce((total, next) => total + next[field], 0);\r\n          break;\r\n        case \"average\":\r\n          aggregateValue = data.reduce((total, next) => total + next[field], 0) / data.length;\r\n          break;\r\n        case \"count\":\r\n          aggregateValue = data.length;\r\n          break;\r\n        case \"max\":\r\n          aggregateValue = data.reduce((p, c) => p[field] > c[field] ? p : c)[field];\r\n          break;\r\n        case \"min\":\r\n          aggregateValue = data.reduce((p, c) => p[field] < c[field] ? p : c)[field];\r\n          break;\r\n      }\r\n\r\n      col.aggregateValue = aggregateValue;\r\n    });\r\n  }\r\n\r\n  private handleDateTimeIgnoringTimeZone(dataSet: any) {\r\n    // Column types related to date and time handling\r\n    const dateColumnTypes = ['zdate', 'ztime', 'zdatetime', 'zshortdate', 'zuidatetime', 'zuitime'];\r\n\r\n    // Filter columns that have date-related types\r\n    const dateTimeColumns = this.gridSetting.columns.filter(col => dateColumnTypes.includes(col.Type));\r\n\r\n    // Filter columns where the timezone should be ignored\r\n    const ignoreTimeZoneColumns = dateTimeColumns.filter(col => col.IsIgnoreTimeZone);\r\n\r\n    // If there are columns that should ignore the timezone\r\n    if (ignoreTimeZoneColumns.length > 0) {\r\n      dataSet.forEach(data => {\r\n        ignoreTimeZoneColumns.forEach(col => {\r\n          // Adjust datetime based on the timezone ignoring setting\r\n          if (data[col.Value]) {\r\n            data[col.Value] = this.componentService.localizeDateTimeByIgnoringTimeZone(data[col.Value], col);\r\n          }\r\n        });\r\n      });\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Reset aggregate values for columns with aggregate types.\r\n   *\r\n   * @returns {void}\r\n   */\r\n  private aggregateResetValue(): void {\r\n    const aggregateColumns = this.gridSetting.columns.filter(col => col.aggregateType);\r\n    aggregateColumns.forEach(col => {\r\n      col.aggregateValue = 0;\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Handle page change event.\r\n   *\r\n   * @param {PageChangeEvent} event - The page change event.\r\n   * @returns {void}\r\n   */\r\n  public pageChange(event: PageChangeEvent): void {\r\n    this.params.pageNo = this.getPageNo(event.skip, this.params.pageSize);\r\n    this.state.skip = event.skip;\r\n    this.changeEvent.pageChanged = true;\r\n    this.getDataBinding();\r\n  }\r\n\r\n  /**\r\n   * Handle sort change event.\r\n   *\r\n   * @param {SortDescriptor[]} sort - The sort descriptor array.\r\n   * @returns {void}\r\n   */\r\n  public sortChange(sort: SortDescriptor[]): void {\r\n    this.sort = sort;\r\n    this.params.sortColumnNames = [];\r\n    this.params.sortOrders = [];\r\n\r\n    sort.forEach((descriptor: SortDescriptor) => {\r\n      if (descriptor.dir) {\r\n        this.params.sortOrders.push(descriptor.dir);\r\n\r\n        const field = this.gridSetting.columns.find((col) => col.field === descriptor.field);\r\n        const sortColumnName = field.valueExpr !== undefined ? field.valueExpr : descriptor.field;\r\n\r\n        this.params.sortColumnNames.push(sortColumnName);\r\n      }\r\n    });\r\n    this.changeEvent.sortChanged = true;\r\n    this.getDataBinding();\r\n  }\r\n\r\n  /**\r\n   * Handle filter change event.\r\n   *\r\n   * @param {any} event - The filter change event.\r\n   * @returns {void}\r\n   */\r\n  public filterChange(event: any): void {\r\n    this.params.pageNo = 0;\r\n    this.params.filterParams = [];\r\n    this.setFilterParamsByParentRefId();\r\n\r\n    console.log(event);\r\n    if (event && event.filters.length > 0) {\r\n      event.filters.forEach((item) => {\r\n        const field = this.gridSetting.columns.find(col => col.field === item.field);\r\n        const value = item.value === null ? \"\" : item.value;\r\n\r\n        if (item.filters) {\r\n          item.filters.forEach((filter: FilterDescriptor) => {\r\n            const filterParam: ZGridFilterParams = {\r\n              key: filter.field as string,\r\n              ops: this.mapFilterOperator(filter.operator),\r\n              value: filter.value === null ? \"\" : filter.value,\r\n            };\r\n            this.params.filterParams.push(filterParam);\r\n          });\r\n        }\r\n        else {\r\n          const filterParam: ZGridFilterParams = {\r\n            key: item.field,\r\n            ops: this.mapFilterOperator(item.operator),\r\n            value: value\r\n          };\r\n\r\n          if (field && field.valueExpr) {\r\n            filterParam.key = this.zgridbinding.data['FilterWithoutBracket'] ? `${field.valueExpr}` : `(${field.valueExpr})`;\r\n          }\r\n\r\n          this.params.filterParams.push(filterParam);\r\n        }\r\n      });\r\n    }\r\n\r\n    if (this.field.GridFilterConfiguration?.OnChange) {\r\n      console.log(\"GridFilterConfiguration.OnChange triggered\");\r\n      // Use switchMap to handle the asynchronous operation\r\n      of(this.params.filterParams).pipe(\r\n        switchMap((filterParams) => {\r\n          // Get the function expression from the configuration\r\n          let expression = this.field.GridFilterConfiguration.OnChange;\r\n\r\n          // Replace 'modalGroup.' with 'group.' and 'group.' with 'grp.'\r\n          expression = expression.replace(/modalGroup\\./g, 'group.').replace(/group\\./g, 'grp.');\r\n\r\n          // Ensure the expression starts with 'this.' to avoid accessing global scope\r\n          if (!expression.startsWith('this.')) {\r\n            expression = `this.${expression}`;\r\n          }\r\n\r\n          const func = eval(expression);\r\n          if (!func) {\r\n            this.loggingService.log(`${expression} not found in this scope for ${this.field.Name} grid.`);\r\n\r\n            // Since function not found, we return the original params.\r\n            return of(this.params.filterParams);\r\n          }\r\n\r\n          const callFunc = func.bind(this.grp);\r\n\r\n          return callFunc(filterParams);\r\n        })\r\n      ).subscribe((updatedFilterParams: any[]) => {\r\n        console.log(updatedFilterParams);\r\n\r\n        // update filterParams\r\n        if (updatedFilterParams) {\r\n          this.params.filterParams = updatedFilterParams;\r\n        }\r\n\r\n        this.changeEvent.filterChanged = true;\r\n        this.getDataBinding();\r\n      });\r\n    }\r\n    else {\r\n      // If there is no GridFilterConfiguration.OnChange\r\n      this.changeEvent.filterChanged = true;\r\n      this.getDataBinding();\r\n    }\r\n  }\r\n\r\n  public dataStateChange(state: DataStateChangeEvent): void {\r\n    this.grid.loading = true;\r\n    this.gridSetting.gridState = state;\r\n    this.aggregateResetValue();\r\n  }\r\n\r\n  /**\r\n   * Map filter operator to its corresponding value.\r\n   *\r\n   * @param {string} operator - The filter operator.\r\n   * @returns {string} - The mapped filter operator value.\r\n   */\r\n  private mapFilterOperator(operator: any) {\r\n    const operatorMappings: { [key: string]: string } = {\r\n      \"eq\": \"eq\",\r\n      \"neq\": \"neq\",\r\n      \"lt\": \"lt\",\r\n      \"lte\": \"lte\",\r\n      \"gt\": \"gt\",\r\n      \"gte\": \"gte\",\r\n      \"startswith\": \"startswith\",\r\n      \"endswith\": \"endswith\",\r\n      \"isnull\": \"isnull\",\r\n      \"isnotnull\": \"isnotnull\",\r\n    };\r\n    // Handle special case for \"contains\"\r\n    if (operator === \"contains\" && !this.field['FilterContainsUsingEqual']) {\r\n      return \"contains\";\r\n    }\r\n\r\n    // Return the mapped operator or default to \"==\"\r\n    return operatorMappings[operator] || \"==\";\r\n  }\r\n\r\n  private getPageNo(stateSkip: number, stateTake: number) {\r\n    return stateSkip / stateTake;\r\n  }\r\n\r\n  // columnField = data: Array<ZField>,\r\n  // columns = gridColumns: any[],\r\n  // group = group: ZGroup,\r\n  // columnConfigurations = gridSettings?: ZGridColumnSettings[],\r\n  // generateHiddenColumns = usableColumns?: any[],\r\n  // gridAttributes = gridField?: ZField\r\n\r\n  public setColumns(columns: any[]) {\r\n    this.gridSetting.columnField = columns;\r\n    ZComponentHelper.getGridColumns(this.gridSetting);\r\n\r\n    this.loggingService.debugLog('generated grid columns', this.gridSetting);\r\n  }\r\n\r\n   private collapseAllDetailGrid() {\r\n    if (this.zgridbinding.data?.DetailGrid) {\r\n      // Collapse all expanded rows before fetching new data\r\n      if (this.grid.data && ('data' in this.grid.data) && this.grid.data.data?.length > 0) {\r\n        for (let i = 0; i < this.grid.data.data.length; i++) {\r\n          this.grid.collapseRow(i);\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n  private tryGetDataFromSession(): any {\r\n    const detailGridSessionKey = sessionStorage.getItem('detailGridSessionKey');\r\n    if (!this.isValidSessionKey(detailGridSessionKey)) {\r\n      return null;\r\n    }\r\n\r\n    const sessionData = this.getAndValidateSessionData(detailGridSessionKey);\r\n    if (sessionData && this.isSessionDataFresh(sessionData)) {\r\n      this.storageService.set('detailGridSessionKey', '');\r\n      return sessionData;\r\n    }\r\n\r\n    return null;\r\n  }\r\n\r\n  private isValidSessionKey(key: string): boolean {\r\n    return !ZComponentHelper.isNullUndefinedEmpty(key);\r\n  }\r\n\r\n  private getAndValidateSessionData(key: string): any {\r\n    const data = JSON.parse(sessionStorage.getItem(key));\r\n    return ZComponentHelper.isNullUndefinedEmpty(data) ? null : data;\r\n  }\r\n\r\n  private isSessionDataFresh(data: any): boolean {\r\n    const now = new Date();\r\n    const previousDate = new Date(data.currentDate);\r\n    const diffInMinutes = this.getTimeDifferenceInMinutes(now, previousDate);\r\n    return diffInMinutes <= 10;\r\n  }\r\n\r\n  private getTimeDifferenceInMinutes(currentDate: Date, previousDate: Date): number {\r\n    const diffInMs = currentDate.getTime() - previousDate.getTime();\r\n    return diffInMs / (1000 * 60);\r\n  }\r\n\r\n  private setDetailDataIntoSession(detailGridSessionKey: string, data: any) {\r\n    if (ZComponentHelper.isNullUndefinedEmpty(detailGridSessionKey)) {\r\n      return;\r\n    }\r\n    data.currentDate = new Date();\r\n    this.storageService.set('detailGridSessionKey', '');\r\n    this.storageService.set(detailGridSessionKey, JSON.stringify(data));\r\n  }\r\n}\r\n","/********** Angular **********/\r\nimport { Directive, HostListener, Input } from '@angular/core';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { ComboBoxComponent } from '@progress/kendo-angular-dropdowns';\r\n\r\n/********** Component & Service **********/\r\n\r\n\r\n@Directive({\r\n  selector: 'kendo-combobox[openOnFocus]'\r\n})\r\nexport class OpenOnFocusDirective {\r\n\r\n  @Input() openOnFocus: ComboBoxComponent;\r\n\r\n  @HostListener('focus') onFocus() {\r\n    if (this.openOnFocus) {\r\n      if (!this.openOnFocus.readonly) {\r\n        this.openOnFocus.toggle(true);\r\n      }\r\n    }\r\n  }\r\n\r\n  @HostListener('blur') onBlur() {\r\n    if (this.openOnFocus) {\r\n      this.openOnFocus.toggle(false);\r\n    }\r\n  }\r\n}","import { Directive, ViewContainerRef } from '@angular/core';\r\n\r\n@Directive({\r\n  selector: '[elementcontainer]'\r\n})\r\nexport class ElementContainerDirective {\r\n  constructor(public viewContainerRef: ViewContainerRef) { }\r\n}\r\n","import { Directive, ElementRef, ViewContainerRef } from '@angular/core';\r\n\r\n@Directive({\r\n  selector: '[popupAnchor]',\r\n  exportAs: 'popupAnchor'\r\n})\r\nexport class ZGridPopupAnchorDirective {\r\n  constructor(public element: ElementRef\r\n  ) {\r\n  }\r\n}\r\n","import { Pipe, PipeTransform } from \"@angular/core\";\r\nimport { ZField } from \"mmhglobal-zcore\";\r\nimport { ZComponentService } from \"../services/zcomponent.service\";\r\n\r\n@Pipe({\r\n  name: \"dateParser\",\r\n  pure: true,\r\n})\r\nexport class DateParserFilter implements PipeTransform {\r\n\r\n  constructor(\r\n    public componentService: ZComponentService\r\n  ) {\r\n  }\r\n   \r\n  transform(rawValue: any, field: ZField): Date | null {\r\n    if (!rawValue) {\r\n      return null;\r\n    }\r\n\r\n    try {\r\n      // For \"ignore timezone\" fields, normalize via service\r\n      if (field.IsIgnoreTimeZone) {\r\n        return this.componentService.localizeDateTimeByIgnoringTimeZone(rawValue, field);\r\n      }\r\n\r\n      // Otherwise, just convert to Date\r\n      const inputDate = new Date(rawValue);\r\n      return inputDate;\r\n    } catch (error) {\r\n      console.log('DateParserFilter error:', error);\r\n      return null;\r\n    }\r\n  }\r\n\r\n}\r\n","/********** Angular **********/\r\nimport { Pipe, PipeTransform } from '@angular/core';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\n\r\n/********** Component & Service **********/\r\n\r\n\r\n@Pipe({\r\n    name: 'editorfilter',\r\n    pure: false\r\n})\r\nexport class EditorFilter implements PipeTransform {\r\n    transform(source: any): any {\r\n        if (!source) {\r\n            return;\r\n        }\r\n        if (typeof source === \"string\") {\r\n            try {\r\n                const jsonValue = JSON.parse(source);\r\n                return JSON.stringify(jsonValue, null, 2);\r\n                // return this.safeStringify(jsonValue);\r\n            } catch {\r\n                return source;\r\n            }\r\n        }\r\n        if (typeof source === \"object\" || Array.isArray(source)) {\r\n            try {\r\n                return JSON.stringify(source, null, 2);\r\n                // return this.safeStringify(source);\r\n            } catch {\r\n                return \"problem - [Circular structure to JSON]\";\r\n            }\r\n        }\r\n\r\n    }\r\n\r\n    private safeStringify(jsonValue: any) {\r\n        // Note: cache should not be re-used by repeated calls to JSON.stringify.\r\n        const cache: Array<any> = [];\r\n        return JSON.stringify(jsonValue, (key, value) => {\r\n            if (typeof value === 'object' && value !== null) {\r\n                // Duplicate reference found, discard key\r\n                if (cache.includes(value)) {\r\n                    // debugger;\r\n                    // return \"problem - [Circular structure to JSON]\";\r\n                    return;\r\n                }\r\n                // Store value in our collection\r\n                cache.push(value);\r\n            }\r\n            return value;\r\n        }, 2);\r\n        // cache = null; // Enable garbage collection\r\n    }\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n  name: 'divzlayout',\r\n  pure: true\r\n})\r\nexport class DivzLayout implements PipeTransform {\r\n  transform(items: any, zlayout: string): any {\r\n    if (!items || !zlayout) {\r\n      return items;\r\n    }\r\n\r\n    // if got zlayout, in div: 2 = 2 col per row; 3 = 1 col per row;\r\n    if (zlayout == \"2\") {\r\n      Object.values(items).forEach(value => {\r\n        value['DivClass'] = \"col-sm-6\";\r\n      });\r\n    }\r\n    else if (zlayout == '3') {\r\n      Object.values(items).forEach(value => {\r\n        value['DivClass'] = \"col-sm-12\";\r\n      });\r\n    }\r\n\r\n    return items;\r\n  }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n  name: 'tabfilter',\r\n  pure: true\r\n})\r\nexport class TabFilter implements PipeTransform {\r\n  transform(items: any, filter: string): any {\r\n    if (!items || !filter || !items.Value || !Array.isArray(items.Value)) {\r\n      return items;\r\n    }\r\n    // filter items array, items which match and return true will be\r\n    // kept, false will be filtered out\r\n    const value = items.Value.filter(item => {\r\n      const target = item.TabArea + '';\r\n      return target.indexOf(filter) !== -1;\r\n    });\r\n    const newTabItem = Object.assign({}, items);\r\n    newTabItem.Value = value;\r\n    return newTabItem;\r\n  }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n  name: 'panelAreaFilter',\r\n  pure: true\r\n})\r\nexport class PanelAreaFilter implements PipeTransform {\r\n  transform(items: any, filter: string): any {\r\n    if (!items || !filter || !items.Value || !Array.isArray(items.Value)) {\r\n      return items;\r\n    }\r\n    // filter items array, items which match and return true will be\r\n    // kept, false will be filtered out\r\n    const value = items.Value.filter(item => {\r\n      const target = item.PanelArea + '';\r\n      return target.indexOf(filter) !== -1;\r\n    });\r\n    const newTabItem = Object.assign({}, items);\r\n    newTabItem.Value = value;\r\n    return newTabItem;\r\n  }\r\n}\r\n","import { formatDate } from \"@angular/common\";\r\nimport { Pipe, PipeTransform } from \"@angular/core\";\r\nimport { CacheService, ResourceApiService, WebApiService, ZComponentHelper, ZField, ZGroup, ZSelectMultipleTemplateParams, ZSelectPostApiParams } from \"mmhglobal-zcore\";\r\nimport { Observable, of } from \"rxjs\";\r\nimport { map } from \"rxjs/operators\";\r\nimport { ZComponentService } from \"../services/zcomponent.service\";\r\n\r\n@Pipe({\r\n  name: \"inputText\",\r\n  pure: true,\r\n})\r\nexport class ZInputParser implements PipeTransform {\r\n  private readonly zdate_type = ['zdate', 'ztime', 'zdatetime', 'zshortdate', 'zuidatetime', 'zuitime'];\r\n  public readonly sfdatetimepicker_type = ['sfdatetimepicker'];\r\n  private readonly zcheckbox_type = ['checkbox'];\r\n  private readonly zselect_type = ['zuiselectmultiple', 'zuiselectmultiple_button', 'select'];\r\n  private nullValueDefaultDisplayText = \"-\";\r\n\r\n  constructor(\r\n    private resourceApiService: ResourceApiService,\r\n    private cacheService: CacheService,\r\n    private webApiService: WebApiService,\r\n    private componentService: ZComponentService\r\n  ) {\r\n  }\r\n\r\n  transform(value: any, data: ZField, group: ZGroup): Observable<string> {\r\n    this.nullValueDefaultDisplayText = data.NullValueDisplayText != undefined ? data.NullValueDisplayText : '-';\r\n    if (!value) {\r\n      return of(this.nullValueDefaultDisplayText);\r\n    }\r\n\r\n    if (this.zdate_type.includes(data.Type) || this.sfdatetimepicker_type.includes(data.Type)) {\r\n      return of(this.transformTimeValue(value, data));\r\n    }\r\n    else if (this.zcheckbox_type.includes(data.Type)) {\r\n      return of(value ? \"Yes\" : \"No\");\r\n    }\r\n    else if (this.zselect_type.includes(data.Type)) {\r\n      const selectField = { data: {}, itemDataField: '', itemTextField: '', itemValueField: '' };\r\n      ZComponentHelper.setSelectMultipleTextValue(data.SelectOptions, selectField);\r\n      group._debug = group._debug || new ZGroup();\r\n      return this.loadZData(data, group, selectField).pipe(\r\n        map(res => {\r\n          const optionData = res.dataSet || res || [];\r\n          const optionValue = optionData ? optionData.find(o => o[selectField.itemValueField] == value) : null;\r\n          if (optionValue) {\r\n            return this.getItemTemplate(optionValue, data, group, selectField.itemValueField, selectField.itemTextField) || this.nullValueDefaultDisplayText;\r\n          }\r\n          else {\r\n            return this.nullValueDefaultDisplayText;\r\n          }\r\n        }));\r\n    }\r\n\r\n    return of(value);\r\n  }\r\n\r\n  private transformTimeValue(value: any, data: ZField): string {\r\n    let val = value;\r\n    if (data.IsIgnoreTimeZone) {\r\n      val = this.componentService.localizeDateTimeByIgnoringTimeZone(value, data);\r\n    }\r\n    return formatDate(val, this.getDateTimeFormat(data.Type), 'en_US') || this.nullValueDefaultDisplayText;\r\n  }\r\n\r\n  // To refactor\r\n  private getDateTimeFormat(dateType: string): string {\r\n    if (dateType === \"ztime\") {\r\n      return \"hh:mm\";\r\n    }\r\n    else if (dateType === \"zuidatetime\" || dateType === \"sfdatetimepicker\") {\r\n      return \"dd-MMM-yyyy h:mm a\";\r\n    }\r\n    else if (dateType === \"zuitime\") {\r\n      return \"hh:mm:ss\";\r\n    }\r\n    else if (dateType === \"zshortdate\") {\r\n      return \"MMM-yyyy\";\r\n    }\r\n    return \"dd-MMM-yyyy\";\r\n  }\r\n\r\n  private loadZData(data: ZField, group: ZGroup, selectField: any): Observable<any> {\r\n    if (data.OptionResourceURL) {\r\n      const resourceUrl = this.resourceApiService.getURL(\r\n        data.OptionResourceURL\r\n      );\r\n\r\n      const filterParam = new ZSelectPostApiParams();\r\n      filterParam.sorts = data.OptionSort;\r\n      filterParam.columns = data.OptionColumns;\r\n      filterParam.filters = data.OptionFilter;\r\n\r\n      return ZComponentHelper.getDataOptions(\r\n        data.OptionName,\r\n        filterParam,\r\n        group,\r\n        resourceUrl,\r\n        this.cacheService,\r\n        this.webApiService,\r\n        false\r\n      );\r\n    }\r\n    else {\r\n      return of(this.getItemsData(data, group, selectField.itemDataField));\r\n    }\r\n  }\r\n\r\n  private getItemsData(data, group, itemDataField) {\r\n    const optionName = data.OptionName || itemDataField || 'group.zData.' + data.Name;\r\n    if (Array.isArray(data.SelectOptions) && !group.zData[optionName.slice(12)]) {\r\n      group.zData[optionName.slice(12)] = data.SelectOptions;\r\n      itemDataField = optionName;\r\n    }\r\n\r\n    if (optionName.startsWith('zData.')) {\r\n      return group.zData[optionName.slice(6)] || [];\r\n    }\r\n    if (optionName.startsWith('group.zData.')) {\r\n      return group.zData[optionName.slice(12)] || [];\r\n    }\r\n    if (optionName.startsWith('group.')) {\r\n      return group[optionName.slice(6)] || [];\r\n    }\r\n    if (optionName) {\r\n      return group[optionName] || [];\r\n    }\r\n  }\r\n\r\n  private getItemTemplate(\r\n    item: any,\r\n    data: any,\r\n    group: any,\r\n    itemValueField: string,\r\n    itemTextField: string\r\n  ) {\r\n    if (data.ItemTemplate) {\r\n      const getTemplateFunc = ZComponentHelper.getGroupEvalValue.call({ group: group }, data.ItemTemplate);\r\n\r\n      return getTemplateFunc({\r\n        item,\r\n        data,\r\n        group,\r\n        itemValueField,\r\n        itemTextField\r\n      } as ZSelectMultipleTemplateParams);\r\n    } else if (itemTextField) {\r\n      return item[itemTextField];\r\n    } else {\r\n      return Object.values(item).join(\", \");\r\n    }\r\n  }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\n\r\n@Pipe({ name: 'htmlSanitize' })\r\nexport class HtmlSanitizePipe implements PipeTransform {\r\n   constructor(private domSanitizer: DomSanitizer) {\r\n\r\n   }\r\n   transform(html: string): SafeHtml {\r\n      return this.domSanitizer.bypassSecurityTrustHtml(html);\r\n   }\r\n}\r\n","\r\nexport  class ComponentConstant {\r\n  public static GridColDateFilterSuffix = \"_GridFilter\";\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { BaseFilterCellComponent, FilterService } from '@progress/kendo-angular-grid';\r\nimport { FilterDescriptor } from '@progress/kendo-data-query/dist/es/main';\r\nimport { ZComponentHelper, ZField } from 'mmhglobal-zcore';\r\nimport { ComponentConstant } from '../constants/constant';\r\n\r\n@Component({\r\n  selector: 'date-range-filter-cell',\r\n  styles: [`\r\n        kendo-daterange > kendo-dateinput.range-filter {\r\n            display: inline-block;\r\n        }\r\n        .k-button {\r\n            margin-left: 4px;\r\n        }\r\n    ` ],\r\n  template: `\r\n        <kendo-daterange >\r\n           <kendo-dateinput\r\n                class=\"range-filter\"\r\n                kendoDateRangeStartInput\r\n                [format]=\"'dd-MM-yyyy'\"\r\n                placeholder=\"dd-MM-yyyy\"\r\n                [value]=\"start\"\r\n                (valueChange)=\"filterRange($event, end)\"\r\n                style=\"width:84px\">\r\n            </kendo-dateinput>\r\n            -\r\n            <kendo-dateinput\r\n                class=\"range-filter\"\r\n                kendoDateRangeEndInput\r\n                [format]=\"'dd-MM-yyyy'\"\r\n                placeholder=\"dd-MM-yyyy\"\r\n                [value]=\"end\"\r\n                (valueChange)=\"filterRange(start, $event)\"\r\n                style=\"width:85px\">\r\n            </kendo-dateinput>\r\n        </kendo-daterange>\r\n        <button\r\n            *ngIf=\"hasFilter\"\r\n            class=\"k-button k-button-icon\"\r\n            title=\"Clear\"\r\n            (click)=\"clearFilter()\">\r\n            <span class=\"k-icon k-i-filter-clear\" style=\"width:15px\"></span>\r\n        </button>\r\n    `\r\n})\r\nexport class DateRangeFilterCellComponent extends BaseFilterCellComponent {\r\n  @Input()\r\n  public filter: any;\r\n\r\n  @Input()\r\n  public field: string;\r\n\r\n  @Input()\r\n  public data: ZField;\r\n\r\n  constructor(filterService: FilterService) {\r\n    super(filterService);\r\n  }\r\n\r\n  public get start(): Date {\r\n    const first = this.findByOperator('gte');\r\n\r\n    return (first || <FilterDescriptor>{}).value;\r\n  }\r\n\r\n  public get end(): Date {\r\n    const end = this.findByOperator('lte');\r\n    return (end || <FilterDescriptor>{}).value;\r\n  }\r\n\r\n  public get hasFilter(): boolean {\r\n    return this.filtersByField(this.getFieldName()).length > 0;\r\n  }\r\n\r\n  public clearFilter(): void {\r\n    this.filterService.filter(\r\n      this.removeFilter(this.getFieldName())\r\n    );\r\n  }\r\n\r\n  public filterRange(start: Date, end: Date): void {\r\n    this.filter = this.removeFilter(this.getFieldName());\r\n\r\n    const filters = [];\r\n\r\n    if (start) {\r\n      filters.push({\r\n        field: this.getFieldName(),\r\n        operator: 'gte',\r\n        value: start\r\n      });\r\n    }\r\n\r\n    if (end) {\r\n      end.setHours(23, 59, 59, 999);\r\n      filters.push({\r\n        field: this.getFieldName(),\r\n        operator: 'lte',\r\n        value: end\r\n      });\r\n    }\r\n\r\n    const root = this.filter || {\r\n      logic: 'and',\r\n      filters: []\r\n    };\r\n\r\n    if (filters.length) {\r\n      root.filters.push(...filters);\r\n    }\r\n\r\n    this.filterService.filter(root);\r\n  }\r\n\r\n  private findByOperator(op: string): FilterDescriptor {\r\n    return this.filtersByField(this.getFieldName())\r\n      .filter(({ operator }) => operator === op)[0];\r\n  }\r\n\r\n  private getFieldName(): string {\r\n    return this.isUseLocalData() ? `${this.field}${ComponentConstant.GridColDateFilterSuffix}` : this.field;\r\n  }\r\n\r\n  private isUseLocalData(): boolean {\r\n    return ZComponentHelper.isNullUndefinedEmpty(this.data.ResourceURL);\r\n  }\r\n}\r\n","/********** Angular **********/\r\nimport { Component, Input, HostListener } from \"@angular/core\";\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { of } from \"rxjs\";\r\nimport { delay, take } from \"rxjs/operators\";\r\nimport { ToolbarService } from \"@progress/kendo-angular-scheduler\";\r\n\r\n/********** Component & Service **********/\r\n\r\n\r\n@Component({\r\n  selector: \"zschedulertoolbar\",\r\n  template: `\r\n    <div class=\"k-scheduler-navigation\">\r\n      <button class=\"k-nav-today\" (click)=\"today()\">\r\n        Today\r\n      </button>\r\n      <button class=\"k-nav-prev\" (click)=\"prev($event)\">\r\n        <span class=\"k-icon k-i-arrow-60-left\"></span>\r\n      </button> &nbsp;\r\n      <span>\r\n        <a class=\"k-nav-current\" #anchor\r\n          >\r\n          <!-- <span class=\"k-icon k-i-calendar\"></span> -->\r\n          {{ selectedDate | kendoDate: \"dd-MMM-yyyy\" }}\r\n        </a>\r\n      </span> &nbsp;\r\n      <button class=\"k-nav-next\" (click)=\"next($event)\">\r\n        <span class=\"k-icon k-i-arrow-60-right\"></span>\r\n      </button>\r\n    </div>\r\n    <kendo-popup\r\n        style=\"margin:15px 0px 0px 0px;\"\r\n      [anchor]=\"anchor\"\r\n      (anchorViewportLeave)=\"showCalendar = false\"\r\n      *ngIf=\"showCalendar\"\r\n    >\r\n        <kendo-calendar\r\n          [focusedDate]=\"selectedDate\"\r\n          (blur)=\"onBlur_Calendar()\"\r\n          (valueChange)=\"onChange_Calendar($event)\"\r\n        ></kendo-calendar>\r\n    </kendo-popup>\r\n  `,\r\n  styleUrls: [\"./zscheduler.toolbar.component.css\"]\r\n})\r\nexport class ZSchedulerToolBarComponent {\r\n  @Input() local: any = {};\r\n  @Input() public selectedDate: Date;\r\n  showCalendar = false;\r\n\r\n  constructor(public toolbarService: ToolbarService) {}\r\n\r\n  public today(): void {\r\n    this.toolbarService.navigate({\r\n      type: \"today\"\r\n    });\r\n  }\r\n\r\n  public next(event: any): void {\r\n    this.toolbarService.navigate({\r\n      type: \"next\"\r\n    });\r\n  }\r\n\r\n  public prev(event: any): void {\r\n    this.toolbarService.navigate({\r\n      type: \"prev\"\r\n    });\r\n  }\r\n\r\n  onChange_Calendar(value: any): void {\r\n    this.local.inProgress = true;\r\n    this.toolbarService.navigate({\r\n      type: 'select-date',\r\n      date: value\r\n    });\r\n    this.toggleCalendar();\r\n    of([])\r\n      .pipe(take(1), delay(1000))\r\n      .subscribe(() => (this.local.inProgress = false));\r\n  }\r\n\r\n  onBlur_Calendar(): void {\r\n    this.toggleCalendar();\r\n  }\r\n\r\n  toggleCalendar(status?: boolean) {\r\n    if (status === false) {\r\n      this.showCalendar = false;\r\n      return;\r\n    }\r\n    this.showCalendar = !this.showCalendar;\r\n  }\r\n\r\n  @HostListener(\"keydown\", [\"$event\"])\r\n  public keydown(event: any): void {\r\n    if (event.keyCode === 27 && this.showCalendar === true) {\r\n      this.toggleCalendar(false);\r\n    }\r\n  }\r\n\r\n  @HostListener(\"document:click\", [\"$event\"])\r\n  public documentClick(event: any): void {\r\n    if (event.target.className === \"k-nav-current\") {\r\n      this.toggleCalendar();\r\n    } else {\r\n      if (this.showCalendar === true) {\r\n        this.toggleCalendar(false);\r\n      }\r\n    }\r\n  }\r\n}\r\n","import { Pipe, PipeTransform } from \"@angular/core\";\r\nimport { TranslationService, ZField, ZGroup } from \"mmhglobal-zcore\";\r\nimport { Observable, of, map, switchMap } from \"rxjs\";\r\n\r\n@Pipe({\r\n  name: \"zselectTranslationParser\",\r\n  pure: true,\r\n})\r\nexport class ZSelectTranslationParser implements PipeTransform {\r\n  constructor(private translationService: TranslationService) { }\r\n\r\n  transform(value: any, itemTextField: string, data: ZField, group: ZGroup): Observable<string> {\r\n    if (data.IsTranslationEnabled) {\r\n      const $translatedValue = this.translationService.$translateItemList(value, itemTextField, { group: group })\r\n        .pipe(map(() => value));\r\n      return $translatedValue;\r\n    }\r\n    else {\r\n      return of(value);\r\n    }\r\n  }\r\n}\r\n","import { Pipe, PipeTransform } from \"@angular/core\";\r\nimport { FormGroup } from \"@angular/forms\";\r\nimport { ZField } from \"mmhglobal-zcore\";\r\n\r\n@Pipe({\r\n  name: \"znumeric\",\r\n  pure: true,\r\n})\r\nexport class ZNumericParser implements PipeTransform {\r\n\r\n  constructor() { }\r\n\r\n  transform(value: any, form: FormGroup, data: ZField): any {\r\n    const dataValue = form.get(data.Value).value;\r\n    return Number(dataValue);\r\n  }\r\n}\r\n","import { Pipe, PipeTransform } from \"@angular/core\";\r\nimport { ZField } from \"mmhglobal-zcore\";\r\n\r\n@Pipe({\r\n  name: \"dateFormatKendo\",\r\n  pure: true,\r\n})\r\nexport class DateKendoFormatParser implements PipeTransform {\r\n  transform(data: ZField): any {\r\n    if (data.FormatOptions) {\r\n      return this.transformKendoFormat(data.FormatOptions);\r\n    }\r\n\r\n    return this.getDefaultDateTimeFormat(data.Type);\r\n  }\r\n\r\n  private getDefaultDateTimeFormat(dataType: string) {\r\n    switch (dataType) {\r\n      case \"ztime\":\r\n        return \"hh:mm a\";\r\n      case \"zuitime\":\r\n        return \"hh:mm:ss a\";\r\n      case \"zshortdate\":\r\n        return \"MMM-yyyy\";\r\n      case \"zuidatetime\":\r\n      case \"sfdatetimepicker\":\r\n        return \"dd-MMM-yyyy hh:mm a\";\r\n      default:\r\n        return \"dd-MMM-yyyy\";\r\n    }\r\n  }\r\n\r\n  private transformKendoFormat(formatString: string): string {\r\n    return formatString\r\n      .replaceAll(\"D\", \"d\")\r\n      .replaceAll(\"Y\", \"y\")\r\n      .replace(\"A\", \"a\");\r\n  }\r\n\r\n  // todo support 24 hour format\r\n  // .replace(\"h\", \"H\") small = 12, capital = 24\r\n  // if got a, then 12, else 24\r\n}\r\n","import { Pipe, PipeTransform } from \"@angular/core\";\r\nimport { ZField } from \"mmhglobal-zcore\";\r\n\r\n@Pipe({\r\n  name: \"dateFormatIonic\",\r\n  pure: true,\r\n})\r\nexport class DateIonicFormatParser implements PipeTransform {\r\n  transform(data: ZField): any {\r\n    if (data.FormatOptions) {\r\n      return this.transformIonicFormat(data.FormatOptions);\r\n    }\r\n\r\n    return this.getDefaultDateTimeFormat(data.Type);\r\n  }\r\n\r\n  private getDefaultDateTimeFormat(dataType: string) {\r\n    switch (dataType) {\r\n      case \"ztime\":\r\n        return \"hh:mm A\";\r\n      case \"zuitime\":\r\n        return \"hh:mm:ss A\";\r\n      case \"zshortdate\":\r\n        return \"MMM-YYYY\";\r\n      case \"zuidatetime\":\r\n        return \"DD-MMM-YYYY hh:mm A\";\r\n      default:\r\n        return \"DD-MMM-YYYY\";\r\n    }\r\n  }\r\n\r\n  private transformIonicFormat(formatString: string): string {\r\n    return formatString\r\n      .replaceAll(\"d\", \"D\")\r\n      .replaceAll(\"y\", \"Y\")\r\n      .replace(\"a\", \"A\");\r\n  }\r\n\r\n  // todo support 24 hour format\r\n  // .replace(\"h\", \"H\") small = 12, capital = 24\r\n  // if got a, then 12, else 24\r\n}\r\n","/********** Angular **********/\r\nimport { Component } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { Subscription, of, Observable, from } from \"rxjs\";\r\nimport { filter, map, switchMap, tap } from \"rxjs/operators\";\r\n\r\n/********** Component & Service **********/\r\nimport { MainService } from \"../services/main.service\";\r\nimport { ZGroup, IDeactivateComponent, StorageSessionService, ZComponentHelper, FormType, TriggerFromType } from \"mmhglobal-zcore\";\r\nimport { DialogCloseResult, DialogRef } from \"@progress/kendo-angular-dialog\";\r\n// import { IDeactivateComponent } from \"src/app/services/candeactivate.guard\";\r\n\r\n@Component({\r\n  template: ``,\r\n})\r\nexport class UipageComponent implements IDeactivateComponent {\r\n  // ctrlName = \"e1crm_bpactivity\";\r\n  group: ZGroup = new ZGroup(true);\r\n  subscription: Subscription;\r\n  private static signalrEventSubscription: Subscription;\r\n  private static dialog: DialogRef;\r\n\r\n  constructor(\r\n    // public fieldService: FieldService,\r\n    public mainService: MainService,\r\n    public activatedRoute: ActivatedRoute\r\n  ) {\r\n    mainService.setGroup(this.group);\r\n    // console.log(\"At \" + this.ctrlName + \" (constructor)\");\r\n  }\r\n\r\n  canExit(): boolean | Observable<boolean> {\r\n    return this.mainService.canExit(this.group.form);\r\n  }\r\n\r\n  pageOnInit(ctrlName: string, pageName: string, isListForm: boolean, projectName?: string): Observable<any> {\r\n    this.group._projectName = projectName;\r\n    this.group.isListForm = isListForm;\r\n\r\n    return this.mainService.getResourceServerData().pipe(\r\n      tap(() => {\r\n        const routeParam = isListForm ? null : this.mainService.getNavigationCurrentParam();\r\n        this.mainService.initializeGroup(this.group, ctrlName, pageName, this);\r\n\r\n        if (routeParam) {\r\n          this.setupRouteParams(routeParam);\r\n        }\r\n        else {\r\n          console.warn(\"routeParam is undefined.\");\r\n        }\r\n      }),\r\n      switchMap(() => {\r\n        const formType = isListForm ? FormType.listField : FormType.formField;\r\n        const fieldElementName = this.group.fieldName ? this.group.fieldName : ctrlName;\r\n\r\n        this.group.fieldName = fieldElementName; // to be decprecated \r\n        this.group.fieldElementName = fieldElementName;\r\n\r\n        return this.mainService.getGroupFields(\r\n          fieldElementName,\r\n          formType,\r\n          TriggerFromType.initialPageLoad,\r\n          this.group,\r\n          \"fields\"\r\n        );\r\n        //let formFieldName = this.group.fieldName ? this.group.fieldName : ctrlName;\r\n        //this.group.fieldName = formFieldName;\r\n\r\n        //if(UipageComponent.signalrEventSubscription){\r\n        //  UipageComponent.signalrEventSubscription.unsubscribe();\r\n        //}\r\n\r\n        //UipageComponent.signalrEventSubscription = this.mainService.signalrGetEvent().pipe(\r\n        //  filter(event => event.name === 'FieldElement' || event.name === 'ListFieldMapping'),\r\n        //  map(async event => {\r\n        //    let formFieldNameClone = ZComponentHelper.deepClone(formFieldName);\r\n\r\n        //    if (event.payload.Name !== formFieldNameClone && formType === \"ListField\") {\r\n        //      try {\r\n        //        const listFieldName = await this.mainService.getListFieldName(formFieldNameClone).toPromise();\r\n        //        formFieldNameClone = listFieldName;\r\n        //      }\r\n        //      catch (er) {\r\n        //      }\r\n        //    }\r\n\r\n        //    if (event.payload.Name === formFieldNameClone) {\r\n        //      this.mainService.clearFormListFields();\r\n        //      (this as any).ngOnInit();\r\n        //    }\r\n\r\n        //   this.mainService.clearFormListFields()\r\n        //  })\r\n        //).subscribe();\r\n\r\n      }),\r\n      switchMap((fields) => {\r\n        return this.mainService.beforePageInitialise(this.group);\r\n      }),\r\n      switchMap((fields) => {\r\n        if (this.group.actName === \"new\") {\r\n          this.mainService.getCloneNewCacheZModel(this.group);\r\n          return this.mainService.afterNewModel(this.group);\r\n        } else {\r\n          return of(fields);\r\n        }\r\n      }),\r\n      switchMap(() => {\r\n        if (this.group.referenceId && this.group.referenceId !== \"0\") {\r\n          this.mainService.joinProjectSignalR();\r\n          if (this.group.subscribeToModificationAlert) {\r\n            this.mainService.handleSignalRModificationAlert(this.group.referenceId);\r\n          }\r\n\r\n          if (typeof this.group.getModel === \"function\") {\r\n            return this.group.getModel(this.group, this.group.referenceId);\r\n          } else {\r\n            return this.mainService.getModel$(this.group, this.group.referenceId, TriggerFromType.initialPageLoad);\r\n          }\r\n        } else {\r\n          return of({});\r\n        }\r\n      }),\r\n      switchMap((zmodel) => {\r\n        if (this.group.parentReferenceField) {\r\n          this.group.parentReferenceId = this.group.zModel[this.group.parentReferenceField];\r\n        }\r\n        return this.mainService.afterPageInitialise(this.group);\r\n      }),\r\n      switchMap(() => {\r\n        return this.mainService.translationPageElement(this.group)\r\n      })\r\n    );\r\n    // .subscribe(() => {\r\n    //   console.log(\"At activity-one.page ngOnInit() completed\");\r\n    //   this.group.isLoading = false;\r\n    // });\r\n  }\r\n\r\n  private setupRouteParams(routeParam: string) {\r\n    //let actName = routePath.get(\"act\");\r\n    const routeParams = routeParam.split('/');\r\n    const formId = routeParams[routeParams.length - 2];\r\n    let actName = routeParams[routeParams.length - 1];\r\n\r\n    if (actName !== 'new' && actName !== 'edit') {\r\n      actName = 'new';\r\n    }\r\n\r\n    this.group.isNew = actName === \"new\" ? true : false;\r\n    this.group.isEdit = actName === \"edit\" ? true : false;\r\n\r\n    if (actName === \"edit\") {\r\n      this.group.referenceId = formId;\r\n    }\r\n    else if (actName === \"new\") {\r\n      this.group.parentReferenceId = formId;\r\n\r\n      if (this.group.parentReferenceId) {\r\n        if (this.group.parentReferenceField) {\r\n          this.group.zModel[this.group.parentReferenceField] = this.group.parentReferenceId.toString();\r\n        }\r\n      }\r\n      else {\r\n        console.log(\"group.parentReferenceId is undefined.\");\r\n      }\r\n    }\r\n\r\n    if (actName) {\r\n      this.group.actName = actName;\r\n    }\r\n  }\r\n\r\n  //signalrFeOnDestroy(): void {\r\n  //  if (UipageComponent.signalrEventSubscription) {\r\n  //    UipageComponent.signalrEventSubscription.unsubscribe();\r\n  //  }\r\n\r\n  //  UipageComponent.signalrEventSubscription = this.mainService.signalrGetEvent().pipe(\r\n  //    filter(event => event.name === 'FieldElement' || event.name === 'ListFieldMapping'),\r\n  //    map(event => this.mainService.clearFormListFields()))\r\n  //    .subscribe()\r\n  //}\r\n\r\n  pageDestroy(): void {\r\n    console.log(this.group.pageName + \" ngOnDestroy.\");\r\n    if (this.subscription) {\r\n      this.subscription.unsubscribe();\r\n    }\r\n\r\n    //this.signalrFeOnDestroy();\r\n  }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { TranslationService, ZGroup } from \"mmhglobal-zcore\";\r\nimport { map, Observable, of } from \"rxjs\";\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class UiheaderService {\r\n  private translatedMenuItems;\r\n\r\n  constructor(private translationService: TranslationService) {\r\n  }\r\n\r\n  public getTranslatedUserMenu(group: ZGroup, userPanelItems: Array<any>): Observable<Array<any>> {\r\n    if (this.translatedMenuItems && this.translatedMenuItems.length > 0) {\r\n      return of(this.translatedMenuItems);\r\n    }\r\n\r\n    return this.translationService.$translateItemList(userPanelItems, \"text\", { elementName: 'menu', group: group }).pipe(\r\n      map(() => {\r\n        this.translatedMenuItems = userPanelItems;\r\n        return this.translatedMenuItems;\r\n      })\r\n    );\r\n  }\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input } from \"@angular/core\";\r\nimport { Router } from '@angular/router';\r\n\r\n/********** Ionic **********/\r\nimport { MenuController } from '@ionic/angular';\r\n\r\n/********** Plugin **********/\r\n// import { AsyncSubject, of } from 'rxjs';\r\n\r\n/********** Component & Service **********/\r\nimport { ZGroup } from 'mmhglobal-zcore';\r\n\r\n\r\n@Component({\r\n  selector: 'app-uimenubutton',\r\n  templateUrl: './uimenubutton.component.html',\r\n  styleUrls: ['./uimenubutton.component.scss'],\r\n})\r\n\r\nexport class UimenubuttonComponent implements OnInit {\r\n  @Input() group: ZGroup;\r\n\r\n  constructor(\r\n    public menuCtrl: MenuController,\r\n    private router: Router\r\n  ) {\r\n  }\r\n\r\n  ngOnInit() {\r\n  }\r\n\r\n  toggleMenu() {\r\n    this.menuCtrl.toggle();\r\n  }\r\n\r\n  backNavigate() {\r\n    if (this.group.beforeBackNavigationPage) {\r\n      this.group.beforeBackNavigationPage(this.group).subscribe(() => {\r\n        this.router.navigate([this.group.backNavigationPage]);\r\n      })\r\n    }\r\n    else {\r\n      this.router.navigate([this.group.backNavigationPage]);\r\n    }\r\n  }\r\n}\r\n","<!--<ion-buttons *ngIf=\"!group || !group.backNavigationPage\" (click)=\"toggleMenu()\" class=\"ion-activatable ripple-parent\">\r\n  <fa-icon [icon]=\"'bars'\"></fa-icon>\r\n  <ion-ripple-effect type=\"unbounded\"></ion-ripple-effect>\r\n</ion-buttons>\r\n<ion-buttons *ngIf=\"group && group.backNavigationPage\" (click)=\"backNavigate()\" class=\"ion-activatable ripple-parent\">\r\n  <fa-icon [icon]=\"'arrow-left'\"></fa-icon>\r\n  <ion-ripple-effect type=\"unbounded\"></ion-ripple-effect>\r\n</ion-buttons>-->\r\n\r\n<ion-buttons (click)=\"toggleMenu()\" class=\"ion-activatable ripple-parent\">\r\n  <fa-icon [icon]=\"'bars'\"></fa-icon>\r\n  <ion-ripple-effect type=\"unbounded\"></ion-ripple-effect>\r\n</ion-buttons>\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input, TemplateRef, ViewChild, ViewContainerRef } from '@angular/core';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { NotificationService } from '@progress/kendo-angular-notification';\r\nimport { Observable, of } from 'rxjs';\r\nimport { filter, map, switchMap, tap } from 'rxjs/operators';\r\n\r\n/********** Component & Service **********/\r\n// import { ZComponentDebugService } from '../services/zcomponent.debug.service';\r\nimport { ZGroup, ZCoreService, WebApiService, ResourceApiService, SignalrService } from 'mmhglobal-zcore';\r\nimport { MainService } from '../services/main.service';\r\n\r\n\r\n@Component({\r\n  selector: 'app-uibulletin',\r\n  templateUrl: './uibulletin.component.html',\r\n  styleUrls: ['./uibulletin.component.scss'],\r\n})\r\n\r\nexport class UibulletinComponent implements OnInit {\r\n  @ViewChild('appendTo', { read: ViewContainerRef }) public appendTo: ViewContainerRef;\r\n  @ViewChild('bulletinTemplate', { read: TemplateRef }) bulletinTemplate: TemplateRef<any>;\r\n  @Input() group: ZGroup;\r\n  // backNavigate = null;\r\n  public bulletinMessages = [];\r\n  public hideBulletinTemplate = true;\r\n  public title = \"\";\r\n  public showBulletinIcon = false;\r\n  public defaultMessage = 'There are no message today.';\r\n  public environment: any;\r\n  public firstInitBulletinURL: string;\r\n\r\n  constructor(\r\n    private zcoreService: ZCoreService,\r\n    private webApiService: WebApiService,\r\n    private resourceApiService: ResourceApiService,\r\n    private mainService: MainService,\r\n    private signalrService: SignalrService,\r\n    private notificationService: NotificationService\r\n  ) {\r\n    this.environment = this.zcoreService.getEnvironment();\r\n    this.showBulletinIcon = this.environment.bulletinUrl ? true : false;\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this.mainService.getResourceServerData().subscribe(() => {\r\n      this.webApiService.httpGet$(this.resourceApiService.getURL(this.environment.bulletinUrl), '').subscribe(resp => {\r\n        if (resp) {\r\n          const msg: string[] = [];\r\n\r\n          if (Array.isArray(resp) && resp.length > 0) {\r\n            resp.forEach((item: any) => {\r\n              if (item.Description) {\r\n                msg.push(item.Description);\r\n              }\r\n            });\r\n          }\r\n\r\n          this.setBulletinMessages(msg);\r\n        }\r\n      })\r\n    });\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    if (this.signalrService.signalREnabled()) {\r\n      this.getSignalrBulletinMessage();\r\n    }\r\n  }\r\n\r\n  public setBulletinMessages(data: any[]) {\r\n    this.bulletinMessages = []; // Initialize or clear the bulletin messages array\r\n\r\n    if (Array.isArray(data) && data.length > 0) {\r\n      data.forEach((item: any) => {\r\n        if (item.Description) {\r\n          this.bulletinMessages.push(item.Description);\r\n        }\r\n      });\r\n\r\n      this.title = `${this.bulletinMessages.length} messages. Click to view messages.`;\r\n    } else {\r\n      this.title = \"No message\";\r\n    }\r\n  }\r\n\r\n  private getSignalrBulletinMessage() {\r\n    this.group.signalRCallbackHandler['headerBulletinHandling'] = this.headerBulletinHandling.bind(this);\r\n\r\n    return this.signalrService.subscribeToEvent(this.group, `Bulletin`, `group.signalRCallbackHandler.headerBulletinHandling`);\r\n  }\r\n\r\n  private headerBulletinHandling(group: ZGroup, resp: any, eventName: string) {\r\n    this.setBulletinMessages(resp);\r\n  }\r\n\r\n  public showBulletinMessage(): void {\r\n    // if closable property is set to true, hideAfter property is ignored.\r\n    this.notificationService.show({\r\n      content: this.bulletinTemplate,\r\n      position: { horizontal: \"center\", vertical: \"top\" },\r\n      animation: { type: \"slide\", duration: 500 },\r\n      type: { style: \"none\", icon: false },\r\n      closable: this.bulletinMessages.length > 0 ? true : false,\r\n      hideAfter: 1000,\r\n    });\r\n  }\r\n}\r\n","<ion-button (click)=\"showBulletinMessage()\" fill=\"none\" size=\"small\" *ngIf=\"showBulletinIcon\">\r\n\r\n  <ion-label [title]=\"title\">\r\n    <ion-badge color=\"danger\" class=\"pending-counter\"\r\n               *ngIf=\"bulletinMessages.length > 0\">\r\n    </ion-badge>\r\n    <ion-label><fa-icon [icon]=\"['fas', 'bell']\" size=\"lg\" style=\"margin-right: 5px;\"></fa-icon> Notification</ion-label>\r\n    <ion-ripple-effect></ion-ripple-effect>\r\n  </ion-label>\r\n\r\n  <!--<fa-icon [icon]=\"['fas', 'bell']\" style=\"margin-right: 5px;\"></fa-icon> Bulletin-->\r\n</ion-button>\r\n<ng-template #bulletinTemplate>\r\n  <div *ngIf=\"bulletinMessages.length > 0\">\r\n    <!--<h6>Bulletin</h6>-->\r\n    <ul>\r\n      <li *ngFor=\"let msg of bulletinMessages\">{{ msg }}</li>\r\n    </ul>\r\n  </div>\r\n  <div *ngIf=\"bulletinMessages.length <= 0\">\r\n    {{ defaultMessage }}\r\n  </div>\r\n</ng-template>\r\n","/********** Angular **********/\r\nimport { Component, Input } from \"@angular/core\";\r\nimport { FormGroup, Validators } from \"@angular/forms\";\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { forkJoin, Observable, Subscription } from \"rxjs\";\r\n\r\n/********** Component & Service **********/\r\nimport { ZComponentService } from \"../services/zcomponent.service\";\r\nimport {\r\n  ComponentType,\r\n  FontAweSomeService,\r\n  ZComponentHelper, ZComponentOutputEvent, ZComponentProperties, ZField, ZGroup\r\n} from \"mmhglobal-zcore\";\r\n\r\n@Component({\r\n  template: ``,\r\n})\r\n\r\n// For: app-error, zgauge, zprogressbar, zreport\r\nexport class FieldBase {\r\n  @Input() data: ZField;\r\n  @Input() group: ZGroup;\r\n  @Input() form: FormGroup;\r\n  @Input() containerField: ZField;\r\n  @Input() componentProperties: ZComponentProperties;\r\n\r\n  public isLoading = true;\r\n\r\n  constructor(\r\n    public componentService: ZComponentService\r\n  ) {\r\n  }\r\n\r\n  public initComponent(options?: FieldSetupOption): Observable<any> {\r\n    this.isLoading = true;\r\n    this.componentProperties = this.componentProperties || new ZComponentProperties();\r\n    ZComponentHelper.setComponentProperties(this);\r\n    // if (!(options && options.isRegisterComponent == false)) {\r\n    //   ZComponentHelper.registerComponent(this);\r\n    // }\r\n    ZComponentHelper.registerComponent(this);\r\n    this.componentService.setComponentAdditionalProperties(this);\r\n    this.componentService.setCompStylesByIndex(this);\r\n    this.data.ComponentStyleType = this.data.ComponentStyleType || \"style1\";\r\n    return forkJoin([this.componentService.translateComponentField(this.data, this.group), this.componentService.translateComponentProperties(this.componentProperties, this.group)]);\r\n  }\r\n\r\n  protected setupComponentSettings(componentSettings: any) {\r\n    if (this.data['ComponentSettings']) {\r\n      if (typeof this.data['ComponentSettings'] == 'string') {\r\n        const option = ZComponentHelper.getGroupValue(this.data['ComponentSettings'], this.group);\r\n        Object.assign(componentSettings, option);\r\n      }\r\n      else if (typeof this.data['ComponentSettings'] == 'object') {\r\n        Object.assign(componentSettings, this.data['ComponentSettings']);\r\n      }\r\n    }\r\n  }\r\n\r\n  public setupInnerField() {\r\n    ZComponentHelper.registerComponent(this);\r\n  }\r\n\r\n  public isMobileScreen() {\r\n    return this.componentService.isMobileScreen();\r\n  }\r\n\r\n  public getClass(form: FormGroup, data: ZField) {\r\n    return `${ZComponentHelper.getIon_InvalidClass(form, data)} ${data.DivClass} ${data.Class}`;\r\n  }\r\n\r\n  public getIon_InvalidClass(form: FormGroup, data: ZField) {\r\n    return ZComponentHelper.getIon_InvalidClass(form, data);\r\n  }\r\n\r\n  public setIcon(icon: string) {\r\n    this.componentProperties.icon = icon;\r\n  }\r\n\r\n  public setLabelText(label: string) {\r\n    this.componentProperties.label = label;\r\n  }\r\n\r\n  //#region Style\r\n  public getStyle(ind: string = \"\"): string {\r\n    return this.componentProperties.style[`style${ind}`] || '';\r\n  }\r\n\r\n  public setStyle(style: string, ind: string = \"\") {\r\n    this.componentService.setStyleByIndex(this, ind, style);\r\n  }\r\n\r\n  public appendStyle(style: string, ind: string = \"\") {\r\n    const currentStyle = this.getStyle(ind);\r\n    const combinedStyle = (currentStyle.endsWith(';') || !currentStyle ? currentStyle : `${currentStyle};`) + style;\r\n    this.componentService.setStyleByIndex(this, ind, combinedStyle);\r\n  }\r\n\r\n  public removeStyle(style: string, ind: string = \"\") {\r\n    const currentStyle = this.getStyle(ind);\r\n    this.componentService.setStyleByIndex(this, ind, currentStyle.replaceAll(style, ''));\r\n  }\r\n\r\n  public removeStyleByProperty(property: string, ind: string = \"\") {\r\n    const currentStyle = this.getStyle(ind);\r\n    if (currentStyle) {\r\n      const currentStyleList = currentStyle.split(';');\r\n      const styleToRetain = currentStyleList.filter(x => !x.startsWith(`${property}:`) && !!x).join(';');\r\n      this.componentService.setStyleByIndex(this, ind, styleToRetain);\r\n    }\r\n  }\r\n  //#endregion\r\n\r\n  //#region Container Style\r\n  public getContainerStyle(ind: string = \"\"): string {\r\n    return this.componentProperties.containerStyle[`style${ind}`] || '';\r\n  }\r\n\r\n  public setContainerStyle(style: string, ind: string = \"\") {\r\n    this.componentService.setContainerStyleByIndex(this, ind, style);\r\n  }\r\n\r\n  public appendContainerStyle(style: string, ind: string = \"\") {\r\n    const currentStyle = this.getContainerStyle(ind);\r\n    const combinedStyle = (currentStyle.endsWith(';') || !currentStyle ? currentStyle : `${currentStyle};`) + style;\r\n    this.componentService.setContainerStyleByIndex(this, ind, combinedStyle);\r\n  }\r\n\r\n  public removeContainerStyle(style: string, ind: string = \"\") {\r\n    const currentStyle = this.getContainerStyle(ind);\r\n    this.componentService.setContainerStyleByIndex(this, ind, currentStyle.replaceAll(style, ''));\r\n  }\r\n\r\n  public removeContainerStyleByProperty(property: string, ind: string = \"\") {\r\n    const currentStyle = this.getContainerStyle(ind);\r\n    if (currentStyle) {\r\n      const currentStyleList = currentStyle.split(';');\r\n      const styleToRetain = currentStyleList.filter(x => !x.startsWith(`${property}:`) && !!x).join(';');\r\n      this.componentService.setContainerStyleByIndex(this, ind, styleToRetain);\r\n    }\r\n  }\r\n  //#endregion\r\n\r\n  public setEnable = (status: boolean) => {\r\n    const fc = this.group?.form?.controls[this.data.Value];\r\n    const componentTypeNotToDisable = [ComponentType.textarea.toString()];\r\n    if (fc && !componentTypeNotToDisable.includes(this.data.Type)) {\r\n      status ? fc.enable() : fc.disable();\r\n    }\r\n    this.componentProperties.isReadOnly = !status;\r\n  }\r\n\r\n  public setVisible = (status: boolean) => {\r\n    this.componentProperties.isVisible = status;\r\n    this.data.Visible = status;\r\n  }\r\n\r\n  public setRequire = (status: boolean) => {\r\n    this.componentProperties.isRequired = status;\r\n    ZComponentHelper.changeValidator(status, this.group, this.data.Value, this.componentProperties, Validators.required);\r\n\r\n    if (this.data.Type === 'ztexteditor') {\r\n      ZComponentHelper.changeValidator(status, this.group, this.data.Value, this.componentProperties, ZComponentHelper.requiredValidator_ExcludeWhiteSpacesAndHTMLTags);\r\n    }\r\n    else {\r\n      ZComponentHelper.changeValidator(status, this.group, this.data.Value, this.componentProperties, ZComponentHelper.requiredValidator_ExcludeWhiteSpaces);\r\n    }\r\n  }\r\n\r\n  public getFontAwesome(iconName: any, fontAwesomeService: FontAweSomeService) {\r\n    const iconNameValue = ZComponentHelper.getGroupValue(iconName, this.group);\r\n    if (iconNameValue) {\r\n      return ZComponentHelper.getFontAwesome(iconNameValue, fontAwesomeService);\r\n    }\r\n    return iconName;\r\n  }\r\n\r\n  public toggleEditMode() {\r\n    this.data[`_EditMode`].value = !this.data[`_EditMode`].value;\r\n  }\r\n\r\n  public setEditMode(isEditable: boolean) {\r\n    this.data[`_EditMode`].value = isEditable;\r\n  }\r\n\r\n  protected triggerEvent(type: string, target: any, event: any, fieldValue?: any) {\r\n    if (target) {\r\n      this.group.subject.next({\r\n        type: type,\r\n        target: target,\r\n        event,\r\n        data: { value: this.getFieldValue(event, fieldValue), field: this.data, comp: this }\r\n      } as ZComponentOutputEvent);\r\n    }\r\n  }\r\n\r\n  protected getFieldValue(event: any, fieldValue?: any) {\r\n    if (fieldValue == null || fieldValue == undefined) {\r\n      return event?.value || event?.target?.value\r\n    }\r\n    return fieldValue;\r\n  }\r\n}\r\n\r\nexport interface FieldSetupOption {\r\n  isRegisterComponent?: boolean;\r\n}\r\n","/********** Angular **********/\r\nimport { Component } from \"@angular/core\";\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { Observable } from \"rxjs\";\r\n\r\n/********** Component & Service **********/\r\nimport { FieldBase } from \"./fieldbase.component\";\r\nimport { ZComponentService } from \"../services/zcomponent.service\";\r\nimport { ZComponentHelper, ZComponentOutputEvent, ZField } from \"mmhglobal-zcore\";\r\n\r\n\r\n@Component({\r\n  template: ``,\r\n})\r\n\r\n// For: zbuttons, zmfb, zworkflowbuttons\r\nexport class ButtonFieldBase extends FieldBase {\r\n  leftBtns: Array<any> = [];\r\n  rightBtns: Array<any> = [];\r\n  items: Array<any> = [];\r\n  FirstZbtn = false;\r\n\r\n  constructor(\r\n    public componentService: ZComponentService\r\n  ) {\r\n    super(componentService);\r\n  }\r\n\r\n  public initComponent(): Observable<any> {\r\n    return super.initComponent();\r\n  }\r\n\r\n  public isBtnVisible(fieldExpr) {\r\n    if (fieldExpr !== false && !fieldExpr) {\r\n      return true;\r\n    }\r\n    const isVisible = ZComponentHelper.getGroupEvalValue.call(this, fieldExpr);\r\n    return isVisible;\r\n  }\r\n\r\n  public getButtonLabel(button: any) {\r\n    let labelResult = button.Label || button.Name || '';\r\n\r\n    let labelExpr = labelResult.match(/^{{.*}}$/gi);\r\n    if (labelExpr) {\r\n      labelExpr = labelExpr[0].slice(2, -2);\r\n      labelResult = ZComponentHelper.getGroupValue(labelExpr, this.group);\r\n    }\r\n\r\n    if (button.Attributes) {\r\n      const attributes = JSON.parse(button.Attributes);\r\n      if (attributes.Label) {\r\n        labelResult = attributes.Label;\r\n      }\r\n    }\r\n\r\n    if (labelResult.startsWith('group.')) {\r\n      labelResult = ZComponentHelper.getGroupValue(labelResult, this.group);\r\n    }\r\n\r\n    return labelResult;\r\n  }\r\n\r\n  public buttonClick(button: any) {\r\n    this.group.subject.next({\r\n      type: \"buttonClick\",\r\n      target: button.ClickEvent,\r\n      data: null\r\n    } as ZComponentOutputEvent);\r\n  }\r\n\r\n  public translateButtonsLabel(items: Array<any>): any {\r\n    return this.componentService.translateButtonComponent(items, this.group);\r\n  }\r\n\r\n  public setLabelText(newText: string, name?: string) {\r\n    const btn = this.items.find(x => x.name === name);\r\n    if (btn) {\r\n      btn.text = newText;\r\n    }\r\n  }\r\n\r\n  protected getButtonDisableTriggerValue(data: ZField, button: any): boolean {\r\n    return button.DisableTrigger != undefined ? button.DisableTrigger : (data.DisableTrigger != undefined ? data.DisableTrigger : false);\r\n  }\r\n\r\n  public disableButton(buttonName: string, isDisabled: boolean = true) {\r\n    const selectedButton = this.items.find(x => x.name == buttonName);\r\n    if (selectedButton) {\r\n      selectedButton.disabled = isDisabled;\r\n    }\r\n  }\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit } from '@angular/core';\r\n\r\n/********** Ionic **********/\r\nimport { ActionSheetController } from '@ionic/angular';\r\n\r\n/********** Plugin **********/\r\nimport { map } from 'rxjs/operators';\r\n\r\n/********** Component & Service **********/\r\nimport { ButtonFieldBase } from '../components/buttonfieldbase.component';\r\nimport { ZComponentService } from '../services/zcomponent.service';\r\nimport {\r\n  FieldService, WebApiService, ResourceApiService, WorkflowService,\r\n  ZField, ZComponentHelper, ZComponent, FormType, ComponentType\r\n} from 'mmhglobal-zcore';  \r\n\r\n\r\n@Component({\r\n  selector: 'app-uiactionbutton',\r\n  templateUrl: './uiactionbutton.component.html',\r\n  styleUrls: ['./uiactionbutton.component.scss'],\r\n})\r\n\r\nexport class UiactionbuttonComponent extends ButtonFieldBase implements ZComponent, OnInit {\r\n  topRightActionButton: any[] = [];\r\n  actionBtnList: Array<ZField>;\r\n  isWorkflowButton: boolean = false;\r\n\r\n  constructor(\r\n    public componentService: ZComponentService,\r\n    private fieldService: FieldService,\r\n    private webApiService: WebApiService,\r\n    private resourceApiService: ResourceApiService,\r\n    private workflowService: WorkflowService,\r\n    private actionSheetCtrl: ActionSheetController\r\n  ) {\r\n    super(componentService);\r\n  }\r\n\r\n  /******************** Common function ********************/\r\n  ngOnInit() {\r\n    this.data = this.getFirstzButton(this.group.fields);\r\n    // this.visible = ZComponentHelper.isVisible(buttonData);\r\n\r\n    if (this.data) {\r\n      super.initComponent().subscribe(() => {\r\n        this.loadButton();\r\n      });\r\n    }\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    this.componentService.decrementComponentCounterForField(this.data);\r\n  }\r\n\r\n  private loadButton() {\r\n    if (!ZComponentHelper.isNullUndefinedEmpty(this.data.WorkflowCode)) {\r\n      // handle as zWorkflowButton\r\n      this.isWorkflowButton = true;\r\n      this.loadWorkflowButton();\r\n    }\r\n    else {\r\n      // handle as zButton\r\n      const field$ = this.fieldService.getFormFieldCode(\r\n        this.data.Value,\r\n        FormType.formField,\r\n        null,\r\n        null\r\n      );\r\n      field$.subscribe((data: Array<ZField>) => {\r\n        this.actionBtnList = data;\r\n        this.reloadButtonList();\r\n      });\r\n    }\r\n  }\r\n\r\n  /******************** zButton ********************/\r\n  getFirstzButton(data: any[]) {\r\n    // data.forEach(d => {\r\n    for (let i = 0; i < data.length - 1; i++) {\r\n      if (data[i].Type === ComponentType.button || data[i].Type === ComponentType.workflowbutton) {\r\n        return data[i];\r\n      } else {\r\n        if (Array.isArray(data[i].Value)) {\r\n          this.getFirstzButton(data[i].Value);\r\n        }\r\n      }\r\n    }\r\n    return null;\r\n  }\r\n\r\n  onAction() {\r\n    if (this.isWorkflowButton) {\r\n      //this.loadWorkflowButton();\r\n      this.actionSheetCtrl\r\n        .create({\r\n          header: \"Choose an Action\",\r\n          buttons: this.topRightActionButton\r\n        })\r\n        .then(actionSheetEl => {\r\n          actionSheetEl.present();\r\n        });\r\n    }\r\n    else {\r\n      //this.reloadButtonList();\r\n      this.actionSheetCtrl\r\n        .create({\r\n          header: \"Choose an Action\",\r\n          buttons: this.topRightActionButton\r\n        })\r\n        .then(actionSheetEl => {\r\n          actionSheetEl.present();\r\n        });\r\n    }\r\n  }\r\n\r\n  private reloadButtonList() {\r\n    this.topRightActionButton = [];\r\n    this.actionBtnList.forEach((button: ZField) => {\r\n      const visible = ZComponentHelper.getGroupEvalValue.call(\r\n        this,\r\n        button.Visible,\r\n        this.group\r\n      );\r\n      if (visible !== false) {\r\n        const label = this.getButtonLabel(button);\r\n        const buttonRole = this.getButtonRole(button, label);\r\n        this.topRightActionButton.push({\r\n          text: label,\r\n          handler: () => {\r\n            this.buttonClick(button);\r\n          },\r\n          role: buttonRole\r\n        });\r\n      }\r\n    });\r\n  }\r\n\r\n  public buttonClick(button: any) {\r\n    // debugger;\r\n    this.group['DismissType'] = button.DismissType;\r\n    super.buttonClick(button);\r\n  }\r\n\r\n  private getButtonRole(button: any, label: string) {\r\n    // console.log(\"getButtonRole: \", label, button.ClickEvent);\r\n    const lowerCaseLabel = label.toLowerCase();\r\n    if (\r\n      lowerCaseLabel.indexOf(\"cancel\") !== -1 ||\r\n      lowerCaseLabel.indexOf(\"close\") !== -1\r\n    ) {\r\n      return \"cancel\";\r\n    }\r\n    return null;\r\n  }\r\n\r\n  /******************** zWorkflowButton ********************/\r\n  // URL required\r\n  // eslint-disable-next-line @typescript-eslint/naming-convention,no-underscore-dangle,id-blacklist,id-match\r\n  e1wfs_wfcGetWorkflowButtonURL = this.resourceApiService.getURL(\"e1wfs_wfcGetWorkflowButtonURL\");\r\n  // eslint-disable-next-line @typescript-eslint/naming-convention,no-underscore-dangle,id-blacklist,id-match\r\n  e1wfs_wfc_getWorkflowInitialStatusURL = this.resourceApiService.getURL(\"e1wfs_wfc_getWorkflowInitialStatusURL\");\r\n  // eslint-disable-next-line @typescript-eslint/naming-convention, no-underscore-dangle, id-blacklist, id-match\r\n  e1wfs_wfc_getDocumentStatusURL = this.resourceApiService.getURL(\"e1wfs_wfc_getDocumentStatusURL\");\r\n\r\n\r\n  private loadWorkflowButton() {\r\n    //  actionBtnList: Array<ZField>;\r\n    this.topRightActionButton = [];\r\n\r\n    // Get WFS_DocumentId if any.\r\n    let documentId = null;\r\n    if (this.group.zModel) {\r\n      documentId = this.group.zModel['WFS_DocumentId'];\r\n    }\r\n\r\n    // Set the documentId to the service\r\n    this.workflowService.appendWFS_DocumentsInfo(this.data.WorkflowCode, documentId);\r\n\r\n    try {\r\n      // Set param for field\r\n      const field$ = this.workflowService.getWorkflowButtonsField(\r\n        this.data.WorkflowCode,\r\n        this.e1wfs_wfcGetWorkflowButtonURL,\r\n        String(false)\r\n      );\r\n\r\n      field$.subscribe(data => {\r\n        data.forEach((button: any) => {\r\n          const label = this.getButtonLabel(button);\r\n          const attributes = JSON.parse(button.Attributes);\r\n          const buttonLabel = label || attributes.Label;\r\n          const _isVisible = this.isBtnVisible(button.Visible);\r\n\r\n          if (_isVisible) {\r\n            this.topRightActionButton.push({\r\n              text: buttonLabel,\r\n              fieldAttribute: button,\r\n              iconName: attributes.Icon,\r\n              handler: (y) => {\r\n                this.workflowButtonClick(button);\r\n              }\r\n            });\r\n          }\r\n          //ZComponentHelper.collectWorkflowButton(this.group, this.data.WorkflowCode, buttonLabel, button, attributes, mappedInfo);\r\n        });\r\n      });\r\n\r\n      if (!this.data.DisableSyncWorkflowStatus) {\r\n        // Set default status\r\n        // eslint-disable-next-line @typescript-eslint/dot-notation\r\n        if (!this.group.zModel[\"WFS_StatusName\"]) {\r\n          const params = {\r\n            \"WorkflowMasterCode\": this.data.WorkflowCode\r\n          };\r\n\r\n          return this.webApiService.httpPost$(this.e1wfs_wfc_getWorkflowInitialStatusURL, params).pipe(\r\n            map(res => {\r\n              if (res.Data) {\r\n                ZComponentHelper.presetModelValue(\"WFS_StatusId\", res.Data[\"Id\"], this.group);\r\n                ZComponentHelper.presetModelValue(\"WFS_StatusName\", res.Data[\"Name\"], this.group);\r\n                ZComponentHelper.presetModelValue(\"WFS_StatusCode\", res.Data[\"Code\"], this.group);\r\n\r\n                this.workflowService.setCurrentDocumentStatus(res.Data);\r\n              }\r\n            })\r\n          ).subscribe();\r\n        } else {\r\n          // When loading also to get current Status Information if any.\r\n          const docInfoParam = {\r\n            \"WorkflowMasterCode\": this.data.WorkflowCode,\r\n            \"DocumentId\": documentId ?? 0,\r\n          };\r\n\r\n          this.webApiService.httpPost$(this.e1wfs_wfc_getDocumentStatusURL, docInfoParam).pipe(\r\n            map(res => {\r\n              this.workflowService.setCurrentDocumentStatus(res);\r\n              if (res.Data) {\r\n                this.workflowService.setCurrentDocumentStatus(res.Data);\r\n              }\r\n            })\r\n          ).subscribe();\r\n        }\r\n      }\r\n\r\n    } catch (error) {\r\n      console.error(\"error: \", error);\r\n    }\r\n  }\r\n\r\n  workflowButtonClick(button: any) {\r\n    // Type 1 == functional;\r\n    // Type 2 == GOTO;\r\n    const attributes = JSON.parse(button.Attributes);\r\n    switch (button.TypeCode.toUpperCase()) {\r\n      case \"FUNCTION\":\r\n        console.log(\"Functional Button: \", button.Name);\r\n        this.workflowService.functionalButton_OnClick(attributes, this.group);\r\n        break;\r\n      case \"GOTO\":\r\n        console.log(\"GOTO Button: \", button.Name);\r\n        this.workflowService.gotoButton_Onclick(button, this.data, attributes, this.group, false).subscribe(res => {\r\n          this.loadWorkflowButton();\r\n          if (res) {\r\n            this.workflowService.triggerSendEmail(this.group).subscribe();\r\n          }\r\n        });\r\n        break;\r\n      default:\r\n        console.log(\"Invalid Button Type. \", button.Name);\r\n        break;\r\n    }\r\n  }\r\n}\r\n","<ion-button (click)=\"onAction()\" [disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n            *ngIf=\"isMobileScreen() && (!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\"\r\n            class=\"ion-activatable ripple-parent\">\r\n  <!-- <ion-icon name=\"more\" slot=\"icon-only\"></ion-icon> -->\r\n  <fa-icon [icon]=\"'ellipsis-v'\"></fa-icon>\r\n  <ion-ripple-effect type=\"unbounded\"></ion-ripple-effect>\r\n</ion-button>\r\n","/********** Angular **********/import { Component, OnInit, Input } from \"@angular/core\";\r\nimport { Router } from '@angular/router';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\n\r\n/********** Component & Service **********/\r\nimport {\r\n  ZCoreService, AuthService, FontAweSomeService,\r\n  ZGroup\r\n} from 'mmhglobal-zcore';\r\nimport { ZComponentService } from \"../services/zcomponent.service\";\r\nimport { UiheaderService } from \"./uiheader.service\";\r\n\r\n\r\n@Component({\r\n  selector: \"app-uiheader\",\r\n  templateUrl: \"./uiheader.component.html\",\r\n  styleUrls: [\"./uiheader.component.scss\"]\r\n})\r\n\r\nexport class UiheaderComponent implements OnInit {\r\n  @Input() group: ZGroup;\r\n  @Input() topFormHeader: string;\r\n\r\n  private environment;\r\n  public isloading = true;;\r\n  public profileImgUrl: string;\r\n  public usernameInitial: string;\r\n  public username: string;\r\n  public userDisplayName: string;\r\n  public showBulletinIcon: boolean = false;\r\n  public userPanelItems: any = [\r\n    {\r\n      icon: 'user',\r\n      text: \"Profile\",\r\n      onClick: this.navToUserProfile.bind(this),\r\n    },\r\n    {\r\n      icon: 'sign-out-alt',\r\n      text: \"Log Out\",\r\n      onClick: this.navLogout.bind(this),\r\n    }\r\n  ];\r\n  private loadedEnvironmentProfileMenu: boolean = false;\r\n  // backNavigate = null;\r\n\r\n  constructor(\r\n    private router: Router,\r\n    private zcoreService: ZCoreService,\r\n    private authService: AuthService,\r\n    public fontAweSomeService: FontAweSomeService,\r\n    private componentService: ZComponentService,\r\n    private uiHeaderService: UiheaderService,\r\n  ) { }\r\n\r\n  ngOnInit(): void {\r\n    this.isloading = true;\r\n    this.environment = this.zcoreService.getEnvironment();\r\n\r\n    if (this.environment.profileMenu && this.environment.profileMenu.length > 0 && !this.loadedEnvironmentProfileMenu) {\r\n      // Based on the text characters, might required width adjustment for user-panel-dial.k-fab-items in global.scss.\r\n      this.environment.profileMenu.forEach(item => {\r\n        const newItem = {\r\n          icon: item.icon,\r\n          text: item.text,\r\n          onClick: () => {\r\n            this.router.navigateByUrl(item.url);\r\n          }\r\n        };\r\n\r\n        this.userPanelItems.splice(0, 0, newItem);\r\n      });\r\n      this.loadedEnvironmentProfileMenu = true;\r\n    }\r\n\r\n    this.authService.userIsAuthenticated.subscribe(isAuth => {\r\n      if (isAuth) {\r\n        this.setUserProfile();\r\n        this.uiHeaderService.getTranslatedUserMenu(this.group, this.userPanelItems).subscribe(resp => {\r\n          if (resp && resp.length > 0) {\r\n            this.userPanelItems = resp;\r\n          }\r\n        });\r\n        this.showBulletinIcon = this.zcoreService.getEnvironment().bulletinUrl ? true : false;\r\n      }\r\n      this.isloading = false;\r\n    });\r\n  }\r\n\r\n  private setUserProfile() {\r\n    if (this.authService.e1Token) {\r\n      const _myProfile = this.authService.e1Token.myProfile;\r\n      if (_myProfile) {\r\n        this.username = _myProfile.UserName;\r\n        this.userDisplayName = _myProfile.LastName;\r\n        this.usernameInitial = this.authService.getUsernameInitial();\r\n        this.authService.getUserProfileImage().subscribe(img => { this.profileImgUrl = img });\r\n      }\r\n    }\r\n  }\r\n\r\n  public onDialItemClick(event: any): void {\r\n    if (event.item.onClick) {\r\n      event.item.onClick();\r\n    }\r\n  }\r\n\r\n  private navToUserProfile() {\r\n    this.router.navigateByUrl('/userProfile');\r\n  }\r\n\r\n  private navLogout() {\r\n    this.authService.logout();\r\n    this.router.navigateByUrl('/auth');\r\n  }\r\n\r\n  public navHome() {\r\n    this.router.navigateByUrl(this.environment.startUpPage.replace(\"_\", \"\"));\r\n  }\r\n\r\n  public isMobileScreen() {\r\n    return this.componentService.isMobileScreen();\r\n  }\r\n\r\n  public onNavItemClick(navItem: any) {\r\n    if (navItem.route) {\r\n      this.router.navigateByUrl(navItem.route);\r\n    }\r\n  }\r\n\r\n  // To stimulate never close\r\n  // public onClose(event: any): void {\r\n  //   event.preventDefault();\r\n  // }\r\n}\r\n","<ion-header>\r\n  <ion-toolbar>\r\n    <div class=\"toolbar-container\" *ngIf=\"!isloading\">\r\n      <div class=\"toolbar-first-row\">\r\n        <app-uimenubutton slot=\"start\" [group]=\"group\"></app-uimenubutton>\r\n\r\n        <ion-title class=\"toolbar-title\">\r\n          <div *ngIf=\"topFormHeader || (group && !group.isLoading && group.formHeader)\">\r\n            <ion-label class=\"toolbar-title-label\">{{ topFormHeader ? topFormHeader : group.formHeader }}</ion-label>\r\n          </div>\r\n        </ion-title>\r\n\r\n        <div slot=\"end\" *ngIf=\"!isMobileScreen()\" class=\"end-panel hoverable\">\r\n          <app-uibulletin *ngIf=\"showBulletinIcon\" [group]=\"group\"></app-uibulletin>\r\n          <div class=\"profile-vl\" *ngIf=\"showBulletinIcon\"></div>\r\n\r\n          <kendo-floatingactionbutton [dialItems]=\"userPanelItems\" [offset]=\"{x:'-5px', y:'-5px'}\"\r\n                                      [align]=\"{ vertical: 'top', horizontal: 'end' }\" [dialItemAnimation]=true buttonClass=\"user-panel-button\"\r\n                                      dialClass=\"user-panel-dial\" (dialItemClick)=\"onDialItemClick($event)\">\r\n            <ng-template kendoFloatingActionButtonTemplate>\r\n              <kendo-avatar *ngIf=\"!!profileImgUrl\" shape=\"circle\" [imageSrc]=\"profileImgUrl\"></kendo-avatar>\r\n              <ng-container *ngIf=\"!profileImgUrl\">\r\n                <kendo-avatar *ngIf=\"!!usernameInitial\" class=\"username-initial-avatar\" shape=\"circle\" [initials]=\"usernameInitial\"></kendo-avatar>\r\n                <kendo-avatar *ngIf=\"!usernameInitial\" class=\"username-initial-avatar\" shape=\"circle\" icon=\"user\"></kendo-avatar>\r\n              </ng-container>\r\n              <ion-label class=\"profile-username\">{{ userDisplayName }}</ion-label>\r\n            </ng-template>\r\n            <ng-template kendoDialItemTemplate let-item let-isFocused=\"isFocused\">\r\n              <span [class.custom-focused-class]=\"isFocused\" class=\"user-panel-item\">\r\n                <fa-icon [icon]=\"item.icon\" class=\"user-panel-item-icon\"></fa-icon>\r\n                <span class=\"user-panel-option-text\">{{ item.text }}</span>\r\n              </span>\r\n            </ng-template>\r\n          </kendo-floatingactionbutton>\r\n        </div>\r\n        <div *ngIf=\"group && isMobileScreen()\">\r\n          <ion-buttons slot=\"primary\" *ngIf=\"!group.isLoading\">\r\n            <app-uiactionbutton [group]=\"group\"></app-uiactionbutton>\r\n          </ion-buttons>\r\n        </div>\r\n      </div>\r\n\r\n      <!-- Design 1 -->\r\n      <!-- <div class=\"toolbar-second-row\" *ngIf=\"!isMobileScreen() && group && group.navItems\">\r\n        <div class=\"nav-bar-container\">\r\n          <kendo-breadcrumb [items]=\"group.navItems\" class=\"nav-bar\" (itemClick)=\"onNavItemClick($event)\">\r\n            <ng-template kendoBreadCrumbItemTemplate let-item let-index=\"index\">\r\n              <div class=\"nav-bar-item\" [class.current]=\"!item.route\">\r\n                <fa-icon [icon]=\"item.icon\" class=\"zcard-header-icon\"></fa-icon>\r\n                <span>{{ item.text }}</span>\r\n              </div>\r\n            </ng-template>\r\n          </kendo-breadcrumb>\r\n        </div>\r\n      </div> -->\r\n      <!-- Design 2 -->\r\n      <!-- <div class=\"toolbar-second-row\" *ngIf=\"!isMobileScreen() && group && group.navItems\">\r\n        <kendo-breadcrumb [items]=\"group.navItems\" class=\"nav-bar\" (itemClick)=\"onNavItemClick($event)\">\r\n          <ng-template kendoBreadCrumbItemTemplate let-item let-index=\"index\">\r\n            <div class=\"nav-bar-item\" [class.current]=\"!item.route\">\r\n              <fa-icon *ngIf=\"item.icon\" [icon]=\"item.icon\" class=\"zcard-header-icon\" [ngClass]=\"{'icon-with-text': item.text}\"></fa-icon>\r\n              <span>{{ item.text }}</span>\r\n            </div>\r\n          </ng-template>\r\n        </kendo-breadcrumb>\r\n      </div> -->\r\n    </div>\r\n  </ion-toolbar>\r\n</ion-header>\r\n","import { Component, OnInit } from \"@angular/core\";\r\n\r\n@Component({\r\n  selector: \"processing-record-loader\",\r\n  templateUrl: \"./processing-record-loader.component.html\",\r\n  styleUrls: [\"./processing-record-loader.component.scss\"]\r\n})\r\nexport class ProcessingRecordLoaderComponent implements OnInit {\r\n  constructor() { }\r\n\r\n  ngOnInit() {\r\n  }\r\n}\r\n","<div class=\"loader-container\">\r\n  <div class=\"ring\">Processing\r\n    <span></span>\r\n  </div>\r\n</div>\r\n","import { Component, OnInit } from \"@angular/core\";\r\n\r\n@Component({\r\n  selector: \"app-page-loader\",\r\n  templateUrl: \"./page-loader.component.html\",\r\n  styleUrls: [\"./page-loader.component.scss\"]\r\n})\r\nexport class PageLoaderComponent implements OnInit {\r\n  constructor() { }\r\n\r\n  ngOnInit() {\r\n  }\r\n}\r\n","<div class=\"loader\"></div>\r\n","/********** Angular **********/\r\nimport { Component, OnInit, OnDestroy, Input, ViewChild, ComponentFactoryResolver } from \"@angular/core\";\r\nimport { FormGroup } from '@angular/forms';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\n\r\n/********** Component & Service **********/\r\nimport { FieldElementDirective } from \"../directives/fieldelement.directive\";\r\nimport { ZComponentService } from '../services/zcomponent.service';\r\nimport { ZField, ZGroup } from \"mmhglobal-zcore\";\r\n\r\n\r\n@Component({\r\n  selector: \"app-zformcontrol\",\r\n  templateUrl: \"./zformcontrol.component.html\",\r\n  styleUrls: [\"./zformcontrol.component.scss\"]\r\n})\r\n\r\nexport class ZformcontrolComponent implements OnInit, OnDestroy {\r\n  @Input() field: ZField;\r\n  @Input() group: ZGroup;\r\n  @Input() form: FormGroup;\r\n  @Input() containerField: ZField;\r\n  // @Input() containerid: string;\r\n  @ViewChild(FieldElementDirective, { static: true }) fieldElement: FieldElementDirective;\r\n\r\n  public componentRef: any;\r\n\r\n  constructor(\r\n    private componentFactoryResolver: ComponentFactoryResolver,\r\n    public componentService: ZComponentService\r\n    // private appRef: ApplicationRef,\r\n    // private injector: Injector,\r\n  ) { }\r\n\r\n  ngOnInit() {\r\n    this.componentService.loadComponent(this.componentFactoryResolver, this.fieldElement, this.field, this.group, this.form, this.containerField);\r\n    // this.componentRef = ZComponentHelper.appendComponentToDynamicForm(\r\n    //   this.componentFactoryResolver,\r\n    //   this.injector,\r\n    //   this.appRef,\r\n    //   this.field,\r\n    //   this.group,\r\n    //   this.containerid\r\n    // );\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    // this.appRef.detachView(this.componentRef.hostView);\r\n    // this.componentRef.destroy();\r\n  }\r\n}\r\n","<!-- <ion-col size=12 sizeSm=\"12\" sizeMd=\"6\" sizeLg=\"4\" sizeXl=\"3\" fieldelement></ion-col> -->\r\n<span fieldelement></span>","/********** Angular **********/\r\nimport { Component, OnInit, Input, OnDestroy } from \"@angular/core\";\r\nimport { FormGroup, FormControl, ValidatorFn } from \"@angular/forms\";\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { of, Subscription } from 'rxjs';\r\nimport { switchMap, delay, tap } from 'rxjs/operators';\r\n\r\n/********** Component & Service **********/\r\nimport { ZComponentDebugService } from '../services/zcomponent.debug.service';\r\nimport {\r\n  AuthService, FieldService, ZCoreService, CacheService,\r\n  ZComponentHelper, ZGroup, ZField, FormType\r\n} from 'mmhglobal-zcore';\r\nimport { DebuggerFieldElementName } from \"mmhglobal-zcore\";\r\n\r\n\r\n@Component({\r\n  selector: \"app-zform\",\r\n  templateUrl: \"./zform.component.html\",\r\n  styleUrls: [\"./zform.component.scss\"]\r\n})\r\n\r\nexport class ZformComponent implements OnInit, OnDestroy {\r\n  @Input() group: ZGroup;\r\n  @Input() fieldName: string;\r\n  // @ViewChild('frm', {static: true}) form: NgForm;\r\n\r\n  form: FormGroup;\r\n  fields: Array<ZField>;\r\n  isLoading = true;\r\n  subscription: Subscription;\r\n  fieldIndex = [];\r\n\r\n  constructor(\r\n    private authService: AuthService,\r\n    private fieldService: FieldService,\r\n    private debugService: ZComponentDebugService,\r\n    private zcoreService: ZCoreService,\r\n    private cacheService: CacheService\r\n    // private modalService: ModalService,\r\n    // private router: Router\r\n  ) { }\r\n\r\n  ngOnInit() {\r\n    if (!this.fieldName) {\r\n      this.onInitNormal();\r\n      this.isLoading = false;\r\n    }\r\n    else {\r\n      //const cacheKey = `FormField_${this.fieldName}`;\r\n      // if get from cache, field wont load. temporary comment out.\r\n      //const cachedData = this.cacheService.get(cacheKey);\r\n      //if (cachedData) {\r\n      //  of(cachedData).pipe(\r\n      //    switchMap(cachedData => {\r\n      //      const cachedZField = cachedData as ZField[];\r\n      //      return this.onStartDebuggerOrLoadFromCache(cachedZField);\r\n      //    }),\r\n      //    tap(() => {\r\n      //      this.isLoading = false;\r\n      //      if (this.group._isDebugging && this.group._debug.isLoading) {\r\n      //        this.group._debug.isLoading = false;\r\n      //      }\r\n      //    }),\r\n      //    delay(500)\r\n      //  ).subscribe(() => {\r\n      //    this.debugService.LoadGridData();\r\n      //    this.debugService.loadWorkflowData();\r\n      //  });\r\n      //}\r\n      //else {\r\n      this.fieldService.getFormFieldCode(this.fieldName, FormType.formField, this, 'fields').pipe(\r\n        switchMap(fieldElements => {\r\n          return this.onStartDebuggerOrLoadFromCache(fieldElements);\r\n        }),\r\n        switchMap(() => {\r\n          this.isLoading = false;\r\n          if (this.group._isDebugging && this.group._debug.isLoading) {\r\n            this.group._debug.isLoading = false;\r\n          }\r\n          return of([]);\r\n        }),\r\n        delay(500))\r\n        .subscribe(() => {\r\n          this.debugService.loadGridData();\r\n          this.debugService.loadWorkflowData();\r\n        });\r\n      //}\r\n    }\r\n  }\r\n\r\n  private onStartDebuggerOrLoadFromCache(cachedZField: ZField[]) {\r\n    if (this.fieldService.debugSectionFields.has(this.fieldName)) {\r\n      return this.debugService.onStartDebugger(cachedZField, this);\r\n    }\r\n    else {\r\n      this.group.fields = cachedZField;\r\n      this.onInitNormal();\r\n      return of([]);\r\n    }\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    if (this.subscription) {  // for debugger subscription\r\n      this.subscription.unsubscribe();\r\n    }\r\n  }\r\n\r\n  getGroup() {\r\n    if ([DebuggerFieldElementName.DebugV2.toString(), DebuggerFieldElementName.DebuggerSection.toString()].includes(this.fieldName)) {\r\n      return this.group._debug;\r\n    }\r\n    else {\r\n      return this.group;\r\n    }\r\n  }\r\n\r\n  private onInitNormal() {\r\n    of(true).pipe(\r\n      tap(() => {\r\n        this.form = this.toFormGroup(this.group.fields);\r\n        this.group.form = this.form;\r\n        this.fields = this.group.fields;\r\n      }),\r\n      switchMap(() => {\r\n        if (!this.group['afterFormInit']) {\r\n          return of({});\r\n        }\r\n        return this.group['afterFormInit']();\r\n      })\r\n    ).subscribe();\r\n  }\r\n\r\n  ComponentIsVisible(field: ZField): any {\r\n    return ZComponentHelper.ComponentIsVisible(field, this.group);\r\n  }\r\n\r\n  private toFormGroup(fieldElements: Array<ZField>) {\r\n    const formControls: { [key: string]: FormControl } = {};\r\n    this.getFormControls(fieldElements, formControls);\r\n    const newFormGroup = new FormGroup(formControls);\r\n    return newFormGroup;\r\n  }\r\n\r\n  private addToFieldIndex(field: ZField) {\r\n    if (!field.Name) {\r\n      console.error('Field Name undefined: ', field);\r\n    }\r\n    if (field.Name && !this.fieldIndex.includes(field.Name)) {\r\n      this.fieldIndex.push(field.Name);\r\n    } else {\r\n      console.error('Field Name Duplication: ' + field.Name + ';  ', field);\r\n    }\r\n  }\r\n\r\n  private getFormControls(\r\n    fieldArray: Array<ZField>,\r\n    formControls: { [key: string]: FormControl },\r\n    containerIsVisible: boolean = true\r\n  ) {\r\n    fieldArray.forEach(field => {\r\n      if (!field.SubType) {\r\n        this.addToFieldIndex(field);\r\n        this.fieldService.patchFieldProperty(field);\r\n\r\n        if (typeof field.Value === \"string\" && field.Value.indexOf(\".\") !== -1) {\r\n          if (['zgrid', 'ztree', 'textareajson', 'zganttchart'].indexOf(field.Type) === -1) {\r\n            console.warn(\"FormControl - invalid field value\", field.Value);\r\n          }\r\n        }\r\n        else {\r\n          if (Array.isArray(field.Value) && field.Type !== 'zloop') {\r\n            const containerIsVisible = ZComponentHelper.isVisibleFormControl(this, field);\r\n            this.getFormControls(field.Value, formControls, containerIsVisible);\r\n          }\r\n          else {\r\n            const isFormControl = ZComponentHelper.isFormControl(field);\r\n            const isVisible = ZComponentHelper.isVisibleFormControl(this, field);\r\n            const isRequired = ZComponentHelper.isRequiredFormControl(this, field);\r\n\r\n            // if container || control visible == false, dont increase the counter.\r\n            if (isVisible && containerIsVisible) {\r\n              this.fieldService.incrementComponentCounter(field.FieldElementName);\r\n            }\r\n\r\n            if (isFormControl === true) {\r\n              const validators: ValidatorFn[] = ZComponentHelper.getValidators(field, isVisible, isRequired, this.group);\r\n              formControls[field.Value] = new FormControl(\r\n                this.group.zModel[field.Value], validators\r\n              );\r\n\r\n              if (ZComponentHelper.hasCCField(field.Type)) {\r\n                const ccValidators: ValidatorFn[] = ZComponentHelper.getCCValidators(field, isVisible, isRequired);\r\n                formControls[field.CCValue] = new FormControl(\r\n                  this.group.zModel[field.CCValue],\r\n                  ccValidators\r\n                );\r\n              }\r\n            }\r\n          }\r\n        }\r\n      }\r\n    });\r\n  }\r\n\r\n  private getReadOnlyValue(field: ZField) {\r\n    const readOnlyValue = ZComponentHelper.getGroupEvalValue.call(this, field.ReadOnly);\r\n    if (typeof readOnlyValue === 'function') {\r\n      return readOnlyValue();\r\n    }\r\n    return readOnlyValue;\r\n  }\r\n\r\n  trackByFn(index: number, item): number {\r\n    //return item['Type'] + '-' + item['Name'];\r\n    return index;\r\n  }\r\n\r\n  // private getValue(field: ZField) {\r\n  //   if (field.Type.indexOf('date') !== -1) {\r\n  //     return new Date(this.group.zModel[field.Value]);\r\n  //   } else {\r\n  //     return this.group.zModel[field.Value];\r\n  //   }\r\n  // }\r\n}\r\n","<div class=\"e1-form\">\r\n  <!--<div class=\"k-overlay\" *ngIf=\"isLoading\"></div>-->\r\n  <form [formGroup]=\"form\" autocomplete=\"off\" *ngIf=\"!isLoading\">\r\n    <ion-grid>\r\n      <ion-row id=\"dynamic-form-host\" class=\"ion-align-items-start\">\r\n        <app-zformcontrol *ngFor=\"let field of fields; trackBy: trackByFn\"\r\n                          [ngClass]=\"group[field['isVisibleField']] ? field.DivClass :((field.Visible === true) ?  field.DivClass : 'flex-hide')\"\r\n                          [field]=\"field\"\r\n                          [group]=\"getGroup()\"\r\n                          [form]=\"form\"\r\n                          id=\"{{field.Type}}-{{field.Name}}\"></app-zformcontrol>\r\n      </ion-row>\r\n    </ion-grid>\r\n  </form>\r\n</div>\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\n\r\n/********** Component & Service **********/\r\n// import { ZComponentDebugService } from '../services/zcomponent.debug.service';\r\nimport { MainService } from '../services/main.service';\r\nimport { ZGroup, ZCoreService, CacheService } from 'mmhglobal-zcore';\r\nimport { ZComponentService } from '../services/zcomponent.service';\r\nimport { DebuggerFieldElementName } from 'mmhglobal-zcore';\r\n\r\n\r\n@Component({\r\n  selector: 'app-uicontent',\r\n  templateUrl: './uicontent.component.html',\r\n  styleUrls: ['./uicontent.component.scss'],\r\n})\r\n\r\nexport class UicontentComponent implements OnInit {\r\n  @Input() group: ZGroup;\r\n  @Input() cssClass: string;\r\n  public debuggerSectionFieldElementName = DebuggerFieldElementName.DebuggerSection;\r\n\r\n  constructor(\r\n    private zcoreService: ZCoreService,\r\n    private router: Router,\r\n    private mainService: MainService,\r\n    private cacheService: CacheService,\r\n    private componentService: ZComponentService\r\n  ) { }\r\n\r\n  ngOnInit() {\r\n    console.log(this.group);\r\n  }\r\n\r\n  isSITEnvironment() {\r\n    return this.zcoreService.isDebugSession() && !this.isFieldElement();\r\n  }\r\n\r\n  isFieldElement() {\r\n    return this.group.fieldName === 'field';\r\n    // return false;\r\n  }\r\n\r\n  isMobileScreen() {\r\n    return this.componentService.isMobileScreen();\r\n  }\r\n\r\n  public onNavItemClick(navItem: any) {\r\n    if (navItem.route) {\r\n      // clear cloneNewModel cache(if have)\r\n      if (this.cacheService.getCache(\"cloneNewModel\")) {\r\n        this.cacheService.clearCache(\"cloneNewModel\");\r\n      }\r\n\r\n      this.mainService.removeLastRouteParam();\r\n\r\n      if (navItem.routeParam) {\r\n        this.mainService.setRouteParam(navItem.routeParam);\r\n      }\r\n\r\n      this.router.navigateByUrl(navItem.route, { replaceUrl: true });\r\n    }\r\n  }\r\n}\r\n","<div *ngIf=\"group.isLoading\" class=\"spinner-container\">\r\n  <app-page-loader></app-page-loader>\r\n</div>\r\n<ion-grid [class]=\"cssClass\">\r\n  <ion-row *ngIf=\"!group.isLoading && !isMobileScreen() && group && group.navItems\">\r\n    <kendo-breadcrumb [items]=\"group.navItems\" class=\"nav-bar\" (itemClick)=\"onNavItemClick($event)\">\r\n      <ng-template kendoBreadCrumbItemTemplate let-item let-index=\"index\">\r\n        <div class=\"nav-bar-item\" [class.current]=\"!item.route\">\r\n          <fa-icon *ngIf=\"item.icon\" [icon]=\"item.icon\" class=\"zcard-header-icon\"\r\n            [ngClass]=\"{'icon-with-text': item.text}\"></fa-icon>\r\n          <span>{{ item.text }}</span>\r\n        </div>\r\n      </ng-template>\r\n    </kendo-breadcrumb>\r\n  </ion-row>\r\n  <ion-row *ngIf=\"!group.isLoading\" class=\"main-content-row\">\r\n    <ion-col class=\"main-content-col\">\r\n      <app-zform [group]=\"group\"></app-zform>\r\n    </ion-col>\r\n    <!-- <pre style=\"font-size: x-small;\">{{group.zModel | json}}</pre> -->\r\n  </ion-row>\r\n  <ion-row *ngIf=\"isSITEnvironment() && !group.isLoading\" style=\"padding-top: 50px;\" class=\"main-content-row style1\">\r\n    <ion-col class=\"main-content-col\">\r\n      <app-zform [group]=\"group\" [fieldName]=\"debuggerSectionFieldElementName\"></app-zform>\r\n    </ion-col>\r\n  </ion-row>\r\n  <!-- require for mobile screen -->\r\n  <div *ngIf=\"!isSITEnvironment() && !group.isLoading && isMobileScreen()\" style=\"height: 150px;\"></div>\r\n</ion-grid>\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input } from '@angular/core';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\n\r\n/********** Component & Service **********/\r\nimport { SignalType, UISignalService, ZGroup } from 'mmhglobal-zcore';\r\n\r\n@Component({\r\n  selector: 'app-uicontainer',\r\n  templateUrl: './uicontainer.component.html',\r\n  styleUrls: ['./uicontainer.component.scss'],\r\n})\r\n\r\nexport class UicontainerComponent implements OnInit {\r\n  @Input() group: ZGroup;\r\n  @Input() public scrollX: boolean = true;\r\n  @Input() public scrollY: boolean = true;\r\n  isEmbeddedPage: boolean = false;\r\n\r\n  constructor(private uiSignalService: UISignalService) { }\r\n\r\n  ngOnInit() {\r\n    this.isEmbeddedPage = !!this.group[\"isEmbeddedPage\"];\r\n  }\r\n\r\n  public handleScrollStart(event) {\r\n    // console.log('handleScrollStart');\r\n    this.uiSignalService.broadCastEvent(SignalType.PageScrollStart, event);\r\n  }\r\n}\r\n","<ng-template #mainPage>\r\n  <div id=\"mainPage\">\r\n    <div class=\"loadingPage\" *ngIf=\"group.isTriggered\">\r\n      <processing-record-loader></processing-record-loader>\r\n    </div>\r\n    <div class=\"recordpage\">\r\n      <app-uiheader [group]=\"group\"></app-uiheader>\r\n\r\n      <ion-content class=\"app-contain\" id=\"ion-content-main-page\" [scrollEvents]=\"true\"\r\n        (ionScrollStart)=\"handleScrollStart($event)\" [scrollX]=\"scrollX\" [scrollY]=\"scrollY\">\r\n        <app-uicontent [group]=\"group\"></app-uicontent>\r\n      </ion-content>\r\n    </div>\r\n  </div>\r\n</ng-template>\r\n\r\n<ng-template #embeddedPage>\r\n  <app-uicontent id=\"ion-content-form-page\" [group]=\"group\"></app-uicontent>\r\n</ng-template>\r\n\r\n<ng-container *ngTemplateOutlet=\"isEmbeddedPage ? embeddedPage : mainPage\"></ng-container>\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input } from \"@angular/core\";\r\nimport { Router } from '@angular/router';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\n\r\n/********** Component & Service **********/\r\n\r\n\r\nexport interface UiMenuContentItem {\r\n  url: string;\r\n  icon: string | Array<string>;\r\n  title: string;\r\n}\r\n\r\nexport interface UiMenuContentCategory {\r\n  category:string;\r\n  content:Array<UiMenuContentItem>\r\n}\r\n\r\n@Component({\r\n  selector: 'app-uimenucontent',\r\n  templateUrl: './uimenucontent.component.html',\r\n  styleUrls: ['./uimenucontent.component.scss'],\r\n})\r\n\r\nexport class UimenucontentComponent implements OnInit {\r\n  @Input() items: Array<UiMenuContentCategory> | Array<UiMenuContentItem>;\r\n    \r\n  constructor(\r\n  ) {\r\n  }\r\n\r\n  ngOnInit() {\r\n    if (this.items && this.items.length > 0) {\r\n      console.error('Pls stop use hardcode submenu. Now the submenu can define in e1 Menu Relationship.');\r\n    }\r\n  }\r\n\r\n  CheckisCategory(e: UiMenuContentCategory | UiMenuContentItem): e is UiMenuContentCategory { \r\n    return (<UiMenuContentCategory>e).category !== undefined;\r\n  }\r\n\r\n  isCategory(){\r\n    let v = false;\r\n    if (this.items.length > 0) {\r\n      if (this.CheckisCategory(this.items[0])) {\r\n        v = true;\r\n      }\r\n    }\r\n    return v;  \r\n  }\r\n\r\n}\r\n","<div *ngIf=\"this.isCategory()\">\r\n  <ion-row *ngFor=\"let cat of items\">\r\n    <kendo-panelbar keepItemContent=\"true\" style=\"width: 100%;padding:10px;\">\r\n      <kendo-panelbar-item [title]=\"[cat.category]\" [expanded]=\"true\" icon=\"folder\">\r\n        <ng-template kendoPanelBarContent>\r\n          <div class=\"ion-row\" style=\"padding: 6px 12px;\">\r\n            <ion-grid>\r\n              <ion-row>\r\n                <ion-col class=\"menu-col\" sizeXs=\"4\" sizeMd=\"3\" sizeXl=\"2\" *ngFor=\"let item of cat.content\">\r\n                  <div class=\"menu-btn ion-activatable ripple-parent\" [routerLink]=\"[item.url]\">\r\n                    <ion-label class=\"menu-btn-label menu-btn-icon\">\r\n                      <!-- <ion-icon [name]=\"item.icon\"></ion-icon> -->\r\n                      <fa-icon [icon]=\"item.icon\"></fa-icon>\r\n                    </ion-label>\r\n                    <ion-label class=\"menu-btn-label\">{{item.title}}</ion-label>\r\n                    <ion-ripple-effect></ion-ripple-effect>\r\n                  </div>\r\n                </ion-col>\r\n              </ion-row>\r\n            </ion-grid>\r\n          </div>\r\n        </ng-template>\r\n      </kendo-panelbar-item>\r\n    </kendo-panelbar>\r\n  </ion-row>\r\n</div>\r\n<ion-grid *ngIf=\"!this.isCategory()\">\r\n  <ion-row>\r\n    <ion-col class=\"menu-col\" sizeXs=\"4\" sizeMd=\"3\" sizeXl=\"2\" *ngFor=\"let item of items\">\r\n      <div class=\"menu-btn ion-activatable ripple-parent\" [routerLink]=\"[item.url]\">\r\n        <ion-label class=\"menu-btn-label menu-btn-icon\">\r\n          <!-- <ion-icon [name]=\"item.icon\"></ion-icon> -->\r\n          <fa-icon [icon]=\"item.icon\"></fa-icon>\r\n        </ion-label>\r\n        <ion-label class=\"menu-btn-label\">{{item.title}}</ion-label>\r\n        <ion-ripple-effect></ion-ripple-effect>\r\n      </div>\r\n    </ion-col>\r\n  </ion-row>\r\n</ion-grid>\r\n\r\n\r\n\r\n\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\n\r\n/********** Component & Service **********/\r\nimport { MainService } from '../services/main.service';\r\nimport { OAuthMenuItem, MenuService, AuthService, ZComponentHelper, ZCoreService } from 'mmhglobal-zcore';\r\n\r\n\r\n@Component({\r\n  selector: 'app-uiappmenucontent',\r\n  templateUrl: './uiappmenucontent.component.html',\r\n  styleUrls: ['./uiappmenucontent.component.scss'],\r\n})\r\n\r\nexport class UiappmenucontentComponent implements OnInit {\r\n  @Input() items: Array<OAuthMenuItem>;\r\n  public MENU_TYPE_DROPDOWN_SUBMENU = 'dropdown-submenu';\r\n\r\n  constructor(\r\n    private router: Router,\r\n    private menuService: MenuService,\r\n    private authService: AuthService,\r\n    private zcoreService: ZCoreService,\r\n    private mainService: MainService\r\n  ) { }\r\n\r\n  ngOnInit() {\r\n  }\r\n\r\n  public getDivClass(item: any): string {\r\n    if (!item || !item.Type) return 'col-xs-4 col-sm-4 col-md-3 col-xl-2 menu-col';\r\n    return (item.Type === this.MENU_TYPE_DROPDOWN_SUBMENU ? 'flex-show' : 'col-xs-4 col-sm-4 col-md-3 col-xl-2') + ' menu-col';\r\n  }\r\n\r\n  public getMenuList(item: any): any | null {\r\n    if (!item || item.Type !== this.MENU_TYPE_DROPDOWN_SUBMENU) return null;\r\n    return this.menuService.getMenuFolder(item.URL);\r\n  }\r\n\r\n  public trackByFn(index: number, item: OAuthMenuItem): string {\r\n    return item.URL || index.toString(); // Unique identifier or fallback to index\r\n  }\r\n\r\n  public menuOnClick(item: OAuthMenuItem): boolean {\r\n     return this.mainService.menuOnClick(item);\r\n  }\r\n   \r\n  private setMapInput(key: string, value: string) {\r\n    const mapInput = document.createElement('input');\r\n    mapInput.type = 'hidden';\r\n    mapInput.name = key;\r\n    mapInput.setAttribute('value', value);\r\n\r\n    return mapInput;\r\n  }\r\n}\r\n","<ion-grid>\r\n  <ion-row>\r\n    <ion-col\r\n      [ngClass]=\"getDivClass(item)\"\r\n      *ngFor=\"let item of items; index as i; trackBy: trackByFn\"\r\n    >\r\n\r\n      <!-- Regular Menu Item (non-submenu) -->\r\n      <div\r\n        *ngIf=\"item.Type !== MENU_TYPE_DROPDOWN_SUBMENU\"\r\n        class=\"menu-btn ion-activatable ripple-parent\"\r\n        (click)=\"menuOnClick(item)\">\r\n        <ion-label class=\"menu-btn-label menu-btn-icon\">\r\n          <fa-icon\r\n            class=\"menu-icon\"\r\n            [icon]=\"['fas', item.Icon]\"\r\n            [inverse]=\"true\"\r\n          ></fa-icon>\r\n\r\n          <!-- 1) Spinner if loading -->\r\n          <ion-badge \r\n            class=\"pending-counter\"\r\n            *ngIf=\"item.counterLoading\">\r\n            <ion-spinner name=\"bubbles\"></ion-spinner>\r\n          </ion-badge>\r\n\r\n          <!-- 2) Numeric badge if loaded & > 0 -->\r\n          <ion-badge\r\n            class=\"pending-counter\"\r\n            *ngIf=\"!item.counterLoading && item.PendingCounter && item.PendingCounter > 0\">\r\n            {{ item.PendingCounter }}\r\n          </ion-badge>\r\n        </ion-label>\r\n\r\n        <ion-label class=\"menu-btn-label-text\">\r\n          {{ item.Label }}\r\n        </ion-label>\r\n\r\n        <ion-label\r\n          *ngIf=\"item.Description\"\r\n          class=\"menu-btn-label-text menu-btn-label-text-desc\"\r\n        >\r\n          {{ item.Description }}\r\n        </ion-label>\r\n        <ion-ripple-effect></ion-ripple-effect>\r\n      </div>\r\n\r\n      <!-- Dropdown Submenu -->\r\n      <kendo-card *ngIf=\"item.Type === MENU_TYPE_DROPDOWN_SUBMENU\">\r\n        <kendo-card-header class=\"k-hstack\">\r\n          <ion-label class=\"card-title\" kendoCardTitle>\r\n            {{ item.Label }}\r\n          </ion-label>\r\n        </kendo-card-header>\r\n        <kendo-card-body>\r\n          <div>\r\n            <app-uiappmenucontent [items]=\"getMenuList(item) || []\"></app-uiappmenucontent>\r\n          </div>\r\n        </kendo-card-body>\r\n      </kendo-card>\r\n    </ion-col>\r\n  </ion-row>\r\n</ion-grid>\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\n\r\n/********** Component & Service **********/\r\nimport { ZGroup, ZField, ZComponentHelper } from 'mmhglobal-zcore';\r\nimport { ZComponentService } from '../services/zcomponent.service';\r\n\r\n\r\n@Component({\r\n  selector: 'app-uivalidationmessage',\r\n  templateUrl: './uivalidationmessage.component.html',\r\n  styleUrls: ['./uivalidationmessage.component.scss'],\r\n})\r\n\r\nexport class UivalidationmessageComponent implements OnInit {\r\n  @Input() group: ZGroup;\r\n  @Input() data: ZField;\r\n  @Input() form: FormGroup;\r\n\r\n  constructor(private componentService: ZComponentService) {\r\n  }\r\n\r\n  ngOnInit() { }\r\n\r\n  getValidationError(form: FormGroup, data: ZField) {\r\n    return ZComponentHelper.getValidationError(form, data);\r\n  }\r\n\r\n  getIconClass() {\r\n    if (!this.componentService.isMobileScreen()) {\r\n      return \"k-icon k-i-warning validation_icon\"\r\n    }\r\n    else {\r\n      return \"k-icon k-i-warning\"\r\n    }\r\n  }\r\n}\r\n","<div *ngIf=\"form.get(data.Value).invalid && (form.get(data.Value).dirty || form.get(data.Value).touched)\"\r\n     class=\"divvalidation\">\r\n  <div kendoTooltip\r\n       position=\"left\"\r\n       showOn=\"hover\">\r\n    <span #warning\r\n          [class]=\"getIconClass()\"\r\n          [title]=\"getValidationError(form, data)\"></span>\r\n  </div>\r\n</div>\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input } from \"@angular/core\";\r\nimport { FormGroup } from '@angular/forms';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\n\r\n/********** Component & Service **********/\r\nimport { ZComponent, ZComponentHelper, ZComponentProperties, ZField, ZGroup } from 'mmhglobal-zcore';\r\n\r\n\r\n@Component({\r\n  selector: 'app-zbullet',\r\n  templateUrl: './zbullet.component.html',\r\n  styleUrls: ['./zbullet.component.scss'],\r\n})\r\n\r\nexport class ZBulletComponent implements ZComponent, OnInit {\r\n  @Input() data: ZField;\r\n  @Input() group: ZGroup;\r\n  @Input() form: FormGroup;\r\n\r\n  componentProperties = new ZComponentProperties();\r\n  dataSource: Array<any>;\r\n\r\n  constructor( \r\n  ) {\r\n  }\r\n\r\n  ngOnInit() {\r\n    this.data.ListType = this.data.ListType ? this.data.ListType : \"ul\";\r\n    this.setupDataSource();\r\n    ZComponentHelper.setComponentProperties(this);\r\n    ZComponentHelper.registerComponent(this);\r\n  }\r\n\r\n  ngAfterViewInit() { \r\n  }\r\n  \r\n  private setupDataSource() {\r\n    if (!this.data.DataSource) {\r\n      console.error(\"No data source found for zhip\");\r\n      return;\r\n    }\r\n\r\n    if (this.data.DataSource.indexOf(\"group.\") !== -1) {\r\n      this.dataSource = ZComponentHelper.getGroupValue(\r\n        this.data.DataSource,\r\n        this.group\r\n      );\r\n    }\r\n    else {\r\n      this.dataSource = this.data.DataSource as any;\r\n    }\r\n  }\r\n\r\n  getReadOnlyValue() {\r\n    const readOnlyValue = ZComponentHelper.getGroupEvalValue.call(this, this.data.ReadOnly);\r\n    if (typeof readOnlyValue === 'function') {\r\n      return readOnlyValue();\r\n    }\r\n    return readOnlyValue;\r\n  }\r\n\r\n  isVisible() {\r\n    if (this.componentProperties.isVisible === null) {\r\n      return ZComponentHelper.isVisible.call(this, this.data);\r\n    } else {\r\n      return this.componentProperties.isVisible;\r\n    }\r\n  }\r\n\r\n  public setVisible = (status: boolean) => {\r\n    this.componentProperties.isVisible = status;\r\n    this.data.Visible = status;\r\n  }\r\n\r\n  public setData = (data: any) => {\r\n    this.dataSource = data;\r\n  }\r\n\r\n  getIon_InvalidClass(form: FormGroup, data: ZField) {\r\n    return ZComponentHelper.getIon_InvalidClass(form, data);\r\n  }\r\n\r\n  getClass(form: FormGroup, data: ZField) {\r\n    return `${ZComponentHelper.getIon_InvalidClass(form, data)} ${data.DivClass}`;\r\n  }\r\n}\r\n","<ion-item [formGroup]=\"form\" *ngIf=\"componentProperties.isVisible\" [ngClass]=\"getClass(form, data)\">\r\n  <div class=\"ion-row\" style=\"justify-content: space-between; width: 100%\">\r\n    <span style=\"flex: 1;\" class=\"listContainer\">\r\n      <ul *ngIf=\"data.ListType === 'ul'\" [style.list-style-type]=\"data.BulletStyle ? data.BulletStyle : 'disc'\">\r\n        <li *ngFor=\"let item of dataSource\">\r\n          <ion-label class=\"ion-text-wrap\" Position=\"Fixed\" [color]=\"item.Color ? item.Color : 'black'\">\r\n            {{item.Label}}\r\n          </ion-label>\r\n        </li>\r\n      </ul>\r\n      <ol *ngIf=\"data.ListType === 'ol'\">\r\n        <li *ngFor=\"let item of dataSource\">\r\n          <ion-label class=\"ion-text-wrap\" Position=\"Fixed\" [color]=\"item.Color ? item.Color : 'black'\">\r\n            {{item.Label}}\r\n          </ion-label>\r\n        </li>\r\n      </ol>\r\n      <!-- <dl *ngIf=\"data.ListType === 'dl'\">\r\n        <dd *ngFor=\"let item of dataSource\">\r\n          <ion-label class=\"ion-text-wrap\" Position=\"Fixed\" [color]=\"item.Color ? item.Color : 'black'\">\r\n            {{item.Label}}\r\n          </ion-label>\r\n        </dd>\r\n      </dl> -->\r\n    </span>\r\n  </div>\r\n</ion-item>\r\n","/********** Angular **********/\r\nimport { Component, OnInit } from '@angular/core';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { switchMap, tap } from 'rxjs/operators';\r\n\r\n/********** Component & Service **********/\r\nimport { ButtonFieldBase } from '../components/buttonfieldbase.component';\r\nimport { ZComponentService } from '../services/zcomponent.service';\r\nimport {\r\n  ComponentType,\r\n  FieldService, FontAweSomeService, TriggerFromType,\r\n  ZComponent, ZComponentHelper, ZComponentOutputEvent, ZField,\r\n} from 'mmhglobal-zcore';\r\nimport { Observable, of } from 'rxjs';\r\n\r\n@Component({\r\n  selector: \"app-zbuttons\",\r\n  templateUrl: \"./zbuttons.component.html\",\r\n  styleUrls: [\"./zbuttons.component.scss\"]\r\n})\r\n\r\nexport class ZbuttonsComponent extends ButtonFieldBase implements ZComponent, OnInit {\r\n  items: Array<any> = [];\r\n  leftBtns: Array<any> = [];\r\n  rightBtns: Array<any> = [];\r\n  FirstZbtn = false;\r\n\r\n  constructor(\r\n    public componentService: ZComponentService,\r\n    private fieldService: FieldService,\r\n    public fontAweSomeService: FontAweSomeService\r\n  ) {\r\n    super(componentService);\r\n  }\r\n\r\n  ngOnInit() {\r\n    super.initComponent().subscribe(() => {\r\n      this.loadButton();\r\n    });\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    this.componentService.decrementComponentCounterForField(this.data);\r\n  }\r\n\r\n  private getFieldObByComponentType(): Observable<any> {\r\n    if (this.data.Type == ComponentType.a) {\r\n      return of([this.data]);\r\n    }\r\n\r\n    if (this.data.Type == ComponentType.zbuttons_container && Array.isArray(this.data.Value)) {\r\n      return of(this.data.Value);\r\n    }\r\n\r\n    return this.fieldService.getFormFieldCode(this.data.Value, \"FormField\");\r\n  }\r\n\r\n  private loadButton() {\r\n    let field$ = this.getFieldObByComponentType();\r\n\r\n    this.group.zButtonsCount++;\r\n    if (this.group.zButtonsCount === 1) {\r\n      this.FirstZbtn = true;\r\n    }\r\n\r\n    try {\r\n      field$.pipe(\r\n        tap(data => {\r\n          // this.items = data;\r\n          data.forEach((button: ZField) => {\r\n            this.setupButtonAttributes(button);\r\n          });\r\n          this.items.push(...this.leftBtns, ...this.rightBtns);\r\n        }),\r\n        switchMap(() => {\r\n          return super.translateButtonsLabel(this.items);\r\n        })\r\n      ).subscribe();\r\n    } catch (error) {\r\n      console.error(\"error: \", error);\r\n    }\r\n  }\r\n\r\n  private setupButtonAttributes(button: ZField) {\r\n    let comp: any = button;\r\n    if (button.Type == 'a') {\r\n      if (this.data.SubType) {\r\n        button.Name = this.data.SubType + '_' + button.Name;\r\n      }\r\n      const label = this.getButtonLabel(button);\r\n\r\n      let buttonDisabled = null;\r\n\r\n      if (button['Disabled'] != \"\" && button['Disabled']) {\r\n        buttonDisabled = button['Disabled'] === 'true' ? true : ZComponentHelper.getGroupEvalValue.call(this, button['Disabled']);\r\n      }\r\n\r\n      const isUseCustomClass = button.Color ? false : true;\r\n      comp = {\r\n        name: button.Name,\r\n        text: label,\r\n        showLabel: button.ShowLabel ?? true,\r\n        style: button.Style,\r\n        icon: ZComponentHelper.getIcon(button.Icon as string),\r\n        visible: button.Visible,\r\n        color: isUseCustomClass ? '' : (button.Color || 'primary'),\r\n        fill: isUseCustomClass ? '' : (button['Fill'] || 'solid'),\r\n        size: button.Size || 'default',\r\n        class: isUseCustomClass ? `${button.Class} useCustomClass` : button.Class,\r\n        disabled: buttonDisabled,\r\n        clickEvent: button.ClickEvent,\r\n        iconName: button.Icon,\r\n        dismissType: button.DismissType,\r\n        disableTriggerTimer: button.DisableTriggerTimer,\r\n        disableTrigger: this.getButtonDisableTriggerValue(this.data, button),\r\n        SubType: this.data.SubType,\r\n        Type: button.Type,\r\n        buttonData: button,\r\n        eventId: ZComponentHelper.generateTimeStampId()\r\n      };\r\n    }\r\n\r\n    if (button['PositionX'] && button['PositionX'] === \"right\") {\r\n      this.rightBtns.push(comp);\r\n    }\r\n    else {\r\n      this.leftBtns.push(comp);\r\n    }\r\n  }\r\n\r\n  buttonClick(item: any) {\r\n    // Sets the isTriggered property based on the disableTrigger property of the item\r\n    this.group.isTriggered = item.disableTrigger != undefined ? !item.disableTrigger : true;\r\n\r\n    // If the isTriggered property is true, proceed with the following actions\r\n    if (this.group.isTriggered) {\r\n      const me = this.group;\r\n\r\n      // If the disableTriggerTimer property is not present, set a timeout to reset isTriggered to false after 500ms\r\n      if (!item['disableTriggerTimer']) {\r\n        setTimeout(function () {\r\n          me['isTriggered'] = false;\r\n        }, 500);\r\n      }\r\n    }\r\n\r\n    // Create a deep clone of the item object\r\n    const clonedButton = ZComponentHelper.deepClone(item);\r\n\r\n    // Call a method to update the event ID (implementation not provided)\r\n    item.eventId = ZComponentHelper.generateTimeStampId();\r\n\r\n    // Set the DismissType property of the group to the dismissType property of the item\r\n    this.group['DismissType'] = item.dismissType;\r\n\r\n    // Create an output event object with details about the button click\r\n    const outputEvent = {\r\n      type: \"buttonClick\",\r\n      target: clonedButton.clickEvent,\r\n      data: clonedButton,\r\n      triggerFrom: TriggerFromType.button\r\n    } as ZComponentOutputEvent;\r\n\r\n    // Update the buttonEventDetail property of the group with the output event details\r\n    this.group['buttonEventDetail'] = {\r\n      buttonDetail: outputEvent,\r\n      triggerFrom: TriggerFromType.button\r\n    };\r\n\r\n    // Notify subscribers with the output event\r\n    this.group.subject.next(outputEvent);\r\n  }\r\n}\r\n","<div\r\n  *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible) && items.length > 0\"\r\n  [style]=\"componentProperties.style.style\" class=\"e1tag-style\">\r\n\r\n  <div class=\"ion-margin-vertical e1tag-style1\" *ngIf=\"isMobileScreen() && items.length > 1 && FirstZbtn === false\"\r\n    [style]=\"componentProperties.style.style1\">\r\n    <kendo-dropdownbutton [data]=\"items\" size=\"large\" [look]=\"'outline'\"\r\n      class=\"ion-activatable ripple-parent e1tag-style2\" [style]=\"componentProperties.style.style2\">\r\n      Actions\r\n      <ng-template kendoDropDownButtonItemTemplate let-dataItem>\r\n        <!-- <span class=\"k-icon k-i-{{ dataItem.icon }}\"></span> -->\r\n        <span (click)=\"buttonClick(dataItem)\">{{ dataItem.text }}</span>\r\n      </ng-template>\r\n      <ion-ripple-effect></ion-ripple-effect>\r\n    </kendo-dropdownbutton>\r\n  </div>\r\n\r\n  <div *ngIf=\"!isMobileScreen() || items.length === 1 \" [ngClass]=\"data.DivClass\" class=\"btn-container e1tag-style3\"\r\n    [style]=\"componentProperties.style.style3\">\r\n    <div class=\"btn-left e1tag-style4\" [style]=\"componentProperties.style.style4\">\r\n      <ng-container *ngFor=\"let item of leftBtns; let i = index\">\r\n        <ion-button [fill]=\"item.fill\" *ngIf=\"item.Type === 'a'\" [size]=\"item.size\" [color]=\"item.color\" strong=\"true\"\r\n          [ngClass]=\"item.class\" (click)=\"buttonClick(item)\" [hidden]=\"!isBtnVisible(item.visible)\"\r\n          [disabled]=\"group.isTriggered || item.disabled\" [style]=\"componentProperties.style.style5 + ' ' + item.style\"\r\n          class=\"e1tag-style5\">\r\n          <div class=\"button-content-container e1tag-style8\" [style]=\"componentProperties.style.style8\">\r\n            <fa-icon class=\"btn-icon e1tag-style9\" [style]=\"componentProperties.style.style9\" *ngIf=\"item.icon\"\r\n              [icon]=\"getFontAwesome(item.icon, fontAweSomeService)\"></fa-icon>\r\n            <span class=\"ion-text-capitalize e1tag-style10\" [style]=\"componentProperties.style.style10\"\r\n              *ngIf=\"item.text && item.showLabel\" [class.btn-label]=\"item.icon\">{{item.text}}</span>\r\n          </div>\r\n        </ion-button>\r\n        <app-zformcontrol *ngIf=\"item.Type !== 'a'\"\r\n          [ngClass]=\"group[item['isVisibleField']] ? item.DivClass :((item.Visible === true) ?  item.DivClass : 'flex-hide')\"\r\n          [field]=\"item\" [group]=\"group\" [form]=\"form\" id=\"{{item.Type}}-{{item.Name}}\"></app-zformcontrol>\r\n      </ng-container>\r\n    </div>\r\n    <div class=\"btn-right e1tag-style6\" [style]=\"componentProperties.style.style6\">\r\n      <ng-container *ngFor=\"let item of rightBtns; let i = index\">\r\n        <ion-button *ngIf=\"item.Type === 'a'\" [fill]=\"item.fill\" [size]=\"item.size\" [color]=\"item.color\" strong=\"true\"\r\n          [ngClass]=\"item.class\" (click)=\"buttonClick(item)\" [hidden]=\"!isBtnVisible(item.visible)\"\r\n          [disabled]=\"group.isTriggered || item.disabled\" [style]=\"componentProperties.style.style7 + ' ' + item.style\"\r\n          class=\"e1tag-style7\">\r\n          <div class=\"button-content-container e1tag-style8\" [style]=\"componentProperties.style.style8\">\r\n            <fa-icon class=\"btn-icon e1tag-style9\" [style]=\"componentProperties.style.style9\" *ngIf=\"item.icon\"\r\n              [icon]=\"getFontAwesome(item.icon, fontAweSomeService)\"></fa-icon>\r\n            <span class=\"ion-text-capitalize e1tag-style10\" [style]=\"componentProperties.style.style10\"\r\n              *ngIf=\"item.text && item.showLabel\" [class.btn-label]=\"item.icon\">{{item.text}}</span>\r\n          </div>\r\n        </ion-button>\r\n        <app-zformcontrol *ngIf=\"item.Type !== 'a'\"\r\n          [ngClass]=\"group[item['isVisibleField']] ? item.DivClass :((item.Visible === true) ?  item.DivClass : 'flex-hide')\"\r\n          [field]=\"item\" [group]=\"group\" [form]=\"form\" id=\"{{item.Type}}-{{item.Name}}\"></app-zformcontrol>\r\n      </ng-container>\r\n    </div>\r\n  </div>\r\n</div>\r\n","/********** Angular **********/\r\nimport { Component } from \"@angular/core\";\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { Observable } from \"rxjs\";\r\n\r\n/********** Component & Service **********/\r\nimport { FieldBase } from \"./fieldbase.component\";\r\nimport { ZComponentService } from \"../services/zcomponent.service\";\r\nimport { ZField, ZComponentHelper } from \"mmhglobal-zcore\";\r\n\r\n\r\n@Component({\r\n  template: ``,\r\n})\r\n\r\n// For: zcard, zdiv, ztab, kcard\r\nexport class ContainerFieldBase extends FieldBase {\r\n  public toolbarItemList = [\r\n    { name: \"Edit\", text: \"Edit\" },\r\n    { name: \"Save\", text: \"Save\" },\r\n    { name: \"Cancel\", text: \"Cancel\" },\r\n  ];\r\n\r\n  constructor(\r\n    public componentService: ZComponentService\r\n  ) {\r\n    super(componentService);\r\n  }\r\n\r\n  // get from ztab, zcard, zdiv\r\n  public ComponentIsVisible(field: ZField): any {\r\n    return ZComponentHelper.ComponentIsVisible(field, this.group);\r\n  }\r\n\r\n  public initComponent(): Observable<any> {\r\n    return super.initComponent();\r\n  }\r\n\r\n  public translateToolBarItems(): Observable<any> {\r\n    return this.componentService.translateToolBarItems(this.toolbarItemList, this.group);\r\n  }\r\n\r\n  public getToolBarItemLabelName(name: string) {\r\n    return this.toolbarItemList.find(t => t.name === name)?.text || name;\r\n  }\r\n\r\n  public getClass(form: any, data: ZField) {\r\n    return `${data.DivClass} ${data.Class}`;\r\n  }\r\n\r\n  public onClick(event: any, fieldValue?: any) {\r\n    this.triggerEvent(\"inputfield-onClick\", this.data.OnClick, event, fieldValue);\r\n  }\r\n\r\n\r\n  public OnCollapse(event: any, fieldValue?: any) {\r\n    this.triggerEvent(\"container-OnCollapse\", this.data.OnCollapse, event, fieldValue);\r\n  }\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit } from \"@angular/core\";\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\n// import { groupBy, GroupResult } from '@progress/kendo-data-query';\r\n\r\n/********** Component & Service **********/\r\nimport { DataListingFieldBase } from \"../components/datalistingfieldbase.component\";\r\nimport { ZComponentService } from \"../services/zcomponent.service\";\r\nimport { CacheService, ZComponent, ZComponentHelper, ZField } from 'mmhglobal-zcore';\r\nimport { Element, Group, Path } from '@progress/kendo-drawing';\r\nimport { Router } from \"@angular/router\";\r\nimport { MainService } from \"../services/main.service\";\r\nimport { ContainerFieldBase } from \"../components/containerfieldbase.component\";\r\n\r\n\r\n@Component({\r\n  selector: 'app-zbreadcrumb',\r\n  templateUrl: './zbreadcrumb.component.html',\r\n  styleUrls: ['./zbreadcrumb.component.scss'],\r\n})\r\n\r\nexport class ZbreadcrumbComponent extends ContainerFieldBase implements ZComponent, OnInit {\r\n\r\n  private navItems: any[] = [];\r\n\r\n  public options = {\r\n    navItems: this.navItems,\r\n  };\r\n\r\n  constructor(\r\n    public componentService: ZComponentService,\r\n    private router: Router,\r\n    private mainService: MainService,\r\n    private cacheService: CacheService,\r\n  ) {\r\n    super(componentService);\r\n  }\r\n\r\n  ngOnInit() {\r\n    super.initComponent().subscribe(() => {\r\n      if (this.data.Options) {\r\n        const optionType = typeof (this.data.Options);\r\n        if (optionType === 'object') {\r\n          Object.assign(this.options, this.data.Options);\r\n        }\r\n        else if (optionType === 'string') {\r\n          const optionValue = ZComponentHelper.getGroupEvalValue.call(this, this.data.Options);\r\n          if (typeof (optionValue) === 'object') {\r\n            Object.assign(this.options, optionValue);\r\n          }\r\n        }\r\n      }\r\n\r\n      if (this.data.Options && this.data.Options.navItems && typeof (this.data.Options.navItems) === 'string') {\r\n        this.options.navItems =\r\n          ZComponentHelper.getGroupEvalValue.call(this, this.data.Options.navItems);\r\n      }\r\n\r\n      this.getFieldDeclarationForSetup(this.data);\r\n      this.isLoading = false;\r\n    });\r\n  }\r\n\r\n  private getFieldDeclarationForSetup(field: ZField) {\r\n    this.options.navItems = ZComponentHelper.getGroupEvalValue.call(this, field.NavItems) || [];\r\n  }\r\n\r\n  public onNavItemClick(navItem: any) {\r\n    if (navItem.action) {\r\n      // Get the function expression from the configuration\r\n      let expression = navItem.action;\r\n\r\n      // Ensure the expression starts with 'this.' to avoid accessing global scope\r\n      if (!expression.startsWith('this.')) {\r\n        expression = `this.${expression}`;\r\n      }\r\n\r\n      const func = eval(expression);\r\n      if (func) {\r\n        const callFunc = func.bind(this.group);\r\n        return callFunc(navItem);\r\n      }\r\n\r\n    }\r\n    else if (navItem.route) {\r\n      // clear cloneNewModel cache(if have)\r\n      if (this.cacheService.getCache(\"cloneNewModel\")) {\r\n        this.cacheService.clearCache(\"cloneNewModel\");\r\n      }\r\n\r\n      this.mainService.removeLastRouteParam();\r\n\r\n      if (navItem.routeParam) {\r\n        this.mainService.setRouteParam(navItem.routeParam);\r\n      }\r\n\r\n      this.router.navigateByUrl(navItem.route, { replaceUrl: true });\r\n    }\r\n  }\r\n\r\n  public setData = (gData: any) => {\r\n    this.getFieldDeclarationForSetup(this.data);\r\n  }\r\n}\r\n","<div *ngIf=\"!isLoading && (!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\">\r\n  <ion-grid>\r\n    <ion-row *ngIf=\"!group.isLoading && !isMobileScreen() && options && options.navItems\">\r\n      <kendo-breadcrumb [items]=\"options.navItems\" class=\"nav-bar\" (itemClick)=\"onNavItemClick($event)\">\r\n        <ng-template kendoBreadCrumbItemTemplate let-item let-index=\"index\">\r\n          <div class=\"nav-bar-item\" [class.current]=\"!item.route\">\r\n            <fa-icon *ngIf=\"item.icon\" [icon]=\"item.icon\" class=\"zcard-header-icon\"\r\n                     [ngClass]=\"{'icon-with-text': item.text}\"></fa-icon>\r\n            <span>{{ item.text }}</span>\r\n          </div>\r\n        </ng-template>\r\n      </kendo-breadcrumb>\r\n    </ion-row>\r\n  </ion-grid>\r\n</div>\r\n","/********** Angular **********/\r\nimport { Component, Input, OnInit, QueryList, ViewChildren } from \"@angular/core\";\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { first, tap } from \"rxjs\";\r\nimport { ContextMenuComponent as KendoContextMenuComponent } from \"@progress/kendo-angular-menu\";\r\n\r\n/********** Component & Service **********/\r\nimport { ZComponentService } from \"../../services/zcomponent.service\";\r\nimport { ContextMenuItem, ContextMenuSetting, FontAweSomeService, SignalType, TranslationService, UISignalService, ZComponent, ZComponentHelper, ZComponentOutputEvent } from 'mmhglobal-zcore';\r\nimport { FieldBase } from \"../../components/fieldbase.component\";\r\n\r\n@Component({\r\n  selector: \"app-context-menu\",\r\n  templateUrl: \"./context-menu.component.html\",\r\n  styleUrls: [\"./context-menu.component.scss\"]\r\n})\r\n\r\nexport class ContextMenuComponent extends FieldBase implements ZComponent, OnInit {\r\n  @Input() target;\r\n  @Input() selectedData;\r\n  @ViewChildren(\"contextMenu\") public contextMenuList: QueryList<KendoContextMenuComponent>;\r\n  public contextMenuSettings: Array<ContextMenuSetting>;\r\n  public isLoading: boolean;\r\n\r\n  constructor(\r\n    componentService: ZComponentService,\r\n    public fontAweSomeService: FontAweSomeService,\r\n    private translationService: TranslationService,\r\n    private uiSignalService: UISignalService\r\n  ) {\r\n    super(componentService);\r\n  }\r\n\r\n  ngOnInit() {\r\n    this.isLoading = true;\r\n    this.setupContextMenuItem();\r\n    if (this.contextMenuSettings) {\r\n      this.isLoading = false;\r\n    }\r\n  }\r\n\r\n  public setupContextMenuItem() {\r\n    this.contextMenuSettings = this.data.ContextMenuSettings;\r\n    if (!this.contextMenuSettings) {\r\n      return false;\r\n    }\r\n\r\n    if (typeof this.contextMenuSettings == 'string' && (this.contextMenuSettings as string).startsWith('group.')) {\r\n      this.contextMenuSettings = ZComponentHelper.getGroupValue(this.contextMenuSettings, this.group);\r\n    }\r\n\r\n    if (!this.contextMenuSettings || !Array.isArray(this.contextMenuSettings)) {\r\n      this.contextMenuSettings = null;\r\n      console.warn('ContextMenuComponent: Invalid ContextMenuSettings.');\r\n      return;\r\n    }\r\n\r\n    for (const menuSetting of this.contextMenuSettings) {\r\n      this.translateContextMenuItems(menuSetting.ContextMenuItems);\r\n    }\r\n  }\r\n\r\n  public onSelect(event, targetContextMenuSetting: ContextMenuSetting) {\r\n    if (targetContextMenuSetting.OnClick) {\r\n      const inputData = Object.assign(event.item.data, {\r\n        z_selecteddata: this.selectedData ?? event.item.data.z_selecteddata,\r\n        z_component: this\r\n      });\r\n\r\n      this.group.subject.next({\r\n        type: \"buttonClick\",\r\n        target: targetContextMenuSetting.OnClick,\r\n        data: inputData\r\n      } as ZComponentOutputEvent);\r\n    }\r\n  }\r\n\r\n  public showContextMenuManually(callerEvent: any, selectedData?: any): void {\r\n    this.setupContextMenuItem();\r\n    if (this.contextMenuSettings && this.contextMenuList && this.contextMenuList.length > 0) {\r\n      const originalEvent = callerEvent.originalEvent;\r\n      originalEvent.preventDefault();\r\n\r\n      const contextMenu = this.contextMenuList.first;\r\n      contextMenu.show({\r\n        left: originalEvent.pageX,\r\n        top: originalEvent.pageY,\r\n      });\r\n\r\n      if (selectedData) {\r\n        for (const item of contextMenu.items) {\r\n          Object.assign(item.data, { 'z_selecteddata': selectedData });\r\n        }\r\n      }\r\n\r\n      this.popUpOpened(contextMenu);\r\n    }\r\n  }\r\n\r\n  public popUpOpened(contextMenu: KendoContextMenuComponent) {\r\n    this.uiSignalService.subscribeToEvent(SignalType.PageScrollStart).pipe(\r\n      first(),\r\n      tap(() => {\r\n        this.closeContextMenuManually(contextMenu);\r\n      })\r\n    ).subscribe();\r\n  }\r\n\r\n  public closeContextMenuManually(contextMenu: KendoContextMenuComponent): void {\r\n    if (contextMenu) {\r\n      contextMenu.hide();\r\n    }\r\n  }\r\n\r\n  private translateContextMenuItems(items: Array<ContextMenuItem>) {\r\n    for (const item of items) {\r\n      if (item.Text) {\r\n        this.translationService.$translateText(item.Text, { elementName: this.group.fieldName }).subscribe(translatedText => {\r\n          item['TranslatedText'] = translatedText;\r\n        });\r\n      }\r\n\r\n      if (item.Value && item.Value.length > 0) {\r\n        this.translateContextMenuItems(item.Value);\r\n      }\r\n    }\r\n  }\r\n}\r\n","<div class=\"context-menu-container\" *ngIf=\"target && !isLoading\">\r\n  <kendo-contextmenu\r\n    #contextMenu\r\n    class=\"context-menu-item\"\r\n    *ngFor=\"let targetContextMenuSetting of contextMenuSettings\"\r\n    [target]=\"target\"\r\n    [size]=\"targetContextMenuSetting.Size ?? 'medium'\"\r\n    [kendoMenuHierarchyBinding]=\"targetContextMenuSetting.ContextMenuItems\"\r\n    childrenField=\"Value\"\r\n    separatorField=\"IsSeparator\"\r\n    (select)=\"onSelect($event, targetContextMenuSetting)\"\r\n    [filter]=\"targetContextMenuSetting.CSSSelectorFilter\"\r\n    (popupOpen)=\"popUpOpened(contextMenu)\">\r\n    <ng-template kendoMenuItemTemplate let-item=\"item\">\r\n      <div class=\"context-menu-item-container\" [class.has-icon]=\"item.data.Icon\" [ngClass]=\"item.data.Class\"\r\n        *ngIf=\"!item.data.IsSeparator\">\r\n        <fa-icon class=\"context-menu-item-icon\" [icon]=\"getFontAwesome(item.data.Icon, fontAweSomeService)\"\r\n          *ngIf=\"item.data.Icon\"></fa-icon>\r\n        <div class=\"context-menu-item-text\" *ngIf=\"item.data.Text\">{{ item.data.TranslatedText ?? item.data.Text }}\r\n        </div>\r\n      </div>\r\n    </ng-template>\r\n  </kendo-contextmenu>\r\n</div>\r\n\r\n<!-- Manual trigger from zgrid, ztree -->\r\n<div class=\"context-menu-container-manual-trigger-mode\" *ngIf=\"!target && !isLoading\">\r\n  <kendo-contextmenu\r\n    #contextMenu\r\n    class=\"context-menu-item\"\r\n    *ngFor=\"let targetContextMenuSetting of contextMenuSettings\"\r\n    [size]=\"targetContextMenuSetting.Size ?? 'medium'\"\r\n    [kendoMenuHierarchyBinding]=\"targetContextMenuSetting.ContextMenuItems\"\r\n    childrenField=\"Value\"\r\n    separatorField=\"IsSeparator\"\r\n    (select)=\"onSelect($event, targetContextMenuSetting)\"\r\n    [filter]=\"targetContextMenuSetting.CSSSelectorFilter\">\r\n    <ng-template kendoMenuItemTemplate let-item=\"item\">\r\n      <div class=\"context-menu-item-container\" [class.has-icon]=\"item.data.Icon\" [ngClass]=\"item.data.Class\"\r\n        *ngIf=\"!item.data.IsSeparator\">\r\n        <fa-icon class=\"context-menu-item-icon\" [icon]=\"getFontAwesome(item.data.Icon, fontAweSomeService)\"\r\n          *ngIf=\"item.data.Icon\"></fa-icon>\r\n        <div class=\"context-menu-item-text\" *ngIf=\"item.data.Text\">{{ item.data.TranslatedText ?? item.data.Text }}\r\n        </div>\r\n      </div>\r\n    </ng-template>\r\n  </kendo-contextmenu>\r\n</div>\r\n","/********** Angular **********/ \r\nimport { Component, OnInit } from \"@angular/core\";\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/ \r\n\r\n/********** Component & Service **********/\r\nimport { ContainerFieldBase } from \"../components/containerfieldbase.component\";\r\nimport { ZComponentService } from \"../services/zcomponent.service\";\r\nimport { ComponentType, ZComponent, ZComponentHelper, ZComponentProperties } from 'mmhglobal-zcore'; \r\n\r\n\r\n@Component({\r\n  selector: 'app-zdiv',\r\n  templateUrl: './zdiv.component.html',\r\n  styleUrls: ['./zdiv.component.scss'],\r\n})\r\n\r\nexport class ZdivComponent extends ContainerFieldBase implements ZComponent, OnInit {\r\n  private readonly DEFAULT_LAYOUT = \"row wrap\";\r\n  private readonly DEFAULT_LAYOUT_ALIGN = \"start stretch\";\r\n\r\n  constructor(\r\n    public componentService: ZComponentService\r\n  ) {\r\n    super(componentService);\r\n  }\r\n\r\n  ngOnInit() {\r\n    this.setupDivLayout();\r\n    if (this.data.Type === ComponentType.div) {\r\n      super.initComponent().subscribe(() => {\r\n        this.componentService.setEditMode(this);\r\n      });\r\n    }\r\n    else {\r\n      this.componentProperties = this.componentProperties || new ZComponentProperties();\r\n      ZComponentHelper.setComponentProperties(this);\r\n      this.componentService.setCompStylesByIndex(this);\r\n      this.componentService.setEditMode(this);\r\n    }\r\n    // super.isSkipTranslation = true;\r\n    // super.initComponent().subscribe(() => {\r\n    //   this.setupDivLayout();\r\n    //   this.componentService.setEditMode(this);\r\n    // });\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    this.componentService.decrementComponentCounterForField(this.data);\r\n  }\r\n\r\n  private setupDivLayout() {\r\n    this.data.zlayout = this.data.zlayout || this.DEFAULT_LAYOUT;\r\n    this.data.zlayoutAlign = this.data.zlayoutAlign || this.DEFAULT_LAYOUT_ALIGN;\r\n  }\r\n\r\n  // Responsive Layout\r\n  public getFlexSize(field, size?: string) {\r\n    if (field.DivClassByPercent) {\r\n      return this.getDivClassValueByScreenSize(field.DivClassByPercent, size);\r\n    }\r\n    return null;\r\n  }\r\n\r\n  private getDivClassValueByScreenSize(zlayoutStr: string, size?: string) {\r\n    const layoutList = zlayoutStr.split(' ');\r\n    let layout = null;\r\n\r\n    if (size && layoutList.find(x => x.includes(size))) {\r\n      layout = layoutList.find(x => x.includes(size));\r\n    }\r\n    else {\r\n      layout = layoutList.find(x => x.split('-').length <= 2);\r\n    }\r\n\r\n    if (layout) {\r\n      const layoutArr = layout.split('-');\r\n      return layoutArr[layoutArr.length - 1];\r\n    }\r\n    else {\r\n      return null;\r\n    }\r\n  }\r\n}\r\n\r\n","<div *ngIf=\"(!!componentProperties.isVisibleField? group[componentProperties.isVisibleField] : componentProperties.isVisible)\"\r\n     [fxLayout]=\"this.data.zlayout\" [fxLayoutAlign]=\"this.data.zlayoutAlign\" [style]=\"componentProperties.style.style\"\r\n     class=\"e1tag-style\" [ngClass]=\"data.Class\" (click)=\"onClick($event)\" #zdiv>\r\n  <app-zformcontrol [ngClass]=\"group[field.isVisibleField] ? field.DivClass : ((field.Visible === true) ?  field.DivClass : 'flex-hide')\"\r\n                    *ngFor=\"let field of data.Value\"\r\n                    [field]=\"field\"\r\n                    [containerField]=\"data\" [group]=\"group\" [form]=\"form\" id=\"{{field.Type}}-{{field.Name}}\"\r\n                    [fxFlex]=\"getFlexSize(field)\" [fxFlex.xs]=\"getFlexSize(field, 'xs')\" [fxFlex.sm]=\"getFlexSize(field, 'sm')\"\r\n                    [fxFlex.md]=\"getFlexSize(field, 'md')\" [fxFlex.lg]=\"getFlexSize(field, 'lg')\"\r\n                    [fxFlex.xl]=\"getFlexSize(field, 'xl')\" [style]=\"componentProperties.style.style1\" class=\"e1tag-style1\">\r\n  </app-zformcontrol>\r\n  <app-context-menu [data]=\"data\" [group]=\"group\" [form]=\"form\" [target]=\"zdiv\"></app-context-menu>\r\n</div>\r\n","/********** Angular **********/\r\nimport { Component, OnInit } from \"@angular/core\";\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\n\r\n/********** Component & Service **********/\r\nimport { ContainerFieldBase } from \"../components/containerfieldbase.component\";\r\nimport { ZComponentService } from \"../services/zcomponent.service\";\r\nimport { ZComponent, ZComponentHelper, ZField } from \"mmhglobal-zcore\";\r\n\r\n\r\n@Component({\r\n  selector: \"app-zcard\",\r\n  templateUrl: \"./zcard.component.html\",\r\n  styleUrls: [\"./zcard.component.scss\"],\r\n})\r\n\r\nexport class ZcardComponent extends ContainerFieldBase implements ZComponent, OnInit {\r\n  constructor(\r\n    componentService: ZComponentService\r\n  ) {\r\n    super(componentService);\r\n  }\r\n\r\n  ngOnInit() {\r\n    super.initComponent().subscribe();\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    this.componentService.decrementComponentCounterForField(this.data);\r\n  }\r\n\r\n  public setData = (gData: any) => {\r\n    this.componentProperties.title = this.data.Title.startsWith(\"group.\") ? ZComponentHelper.getGroupEvalValue.call(this, this.data.Title) : this.data.Title;  }\r\n}\r\n","<div *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\"\r\n     class=\"container e1tag-container-style\" [style]=\"componentProperties.containerStyle.style\" [ngClass]=\"(data.ComponentStyleType || '') + ' ' + (data.Class || '')\">\r\n  <kendo-panelbar class=\"zcard e1tag-container-style1\" keepItemContent=\"true\" [style]=\"componentProperties.containerStyle.style1\" [class]=\"data.ComponentStyleType\"\r\n    [ngClass]=\"(data.ComponentStyleType || '') + ' ' + (data.Class || '')\">\r\n    <kendo-panelbar-item [expanded]=\"!data.DefaultCollapse\" [style]=\"componentProperties.containerStyle.style2\" class=\"e1tag-container-style2\"\r\n                         [disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\">\r\n      <ng-template kendoPanelBarItemTitle>\r\n        <span [style]=\"componentProperties.containerStyle.style3\" class=\"e1tag-container-style3\">\r\n          <fa-icon [icon]=\"componentProperties.icon || 'folder'\" class=\"zcard-header-icon\"></fa-icon>\r\n        </span>\r\n        <ion-label class=\"zcard-header-title e1tag-container-style4\" [style]=\"componentProperties.containerStyle.style4\">{{componentProperties.title}}</ion-label>\r\n      </ng-template>\r\n      <ng-template kendoPanelBarContent>\r\n        <app-zdiv class=\"e1tag-container-style5\" [style]=\"componentProperties.containerStyle.style5\" [data]=\"data\" [form]=\"form\" [group]=\"group\" [containerField]=\"containerField\">\r\n        </app-zdiv>\r\n      </ng-template>\r\n    </kendo-panelbar-item>\r\n  </kendo-panelbar>\r\n</div>\r\n","/********** Angular **********/\r\nimport { Component, EventEmitter, Output, ViewChild } from \"@angular/core\";\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { isObservable, map, Observable, of } from \"rxjs\";\r\nimport { PopoverContainerDirective, TooltipDirective } from \"@progress/kendo-angular-tooltip\";\r\n\r\n/********** Component & Service **********/\r\nimport { FieldBase } from \"./fieldbase.component\";\r\nimport { ZComponentService } from \"../services/zcomponent.service\";\r\nimport { ZComponentHelper, ZField } from \"mmhglobal-zcore\";\r\nimport { RowClassArgs } from \"@progress/kendo-angular-grid\";\r\nimport { ContextMenuComponent } from \"../embed-components/context-menu/context-menu.component\";\r\n\r\n\r\n@Component({\r\n  template: ``,\r\n})\r\n\r\n// For: zgrid, ztree, ztreelist, zganttchart\r\nexport class DataListingFieldBase extends FieldBase {\r\n  @Output() showFormPage = new EventEmitter<boolean>();\r\n  @ViewChild(\"popovercontainer\", { static: false }) private popovercontainer: PopoverContainerDirective;\r\n  @ViewChild('dataitemcontextmenu') dataItemContextMenu: ContextMenuComponent;\r\n  @ViewChild(TooltipDirective) public tooltipDir: TooltipDirective;\r\n\r\n  protected popoverData = [];\r\n  public toolbarItemList = [\r\n    { name: \"Search\", text: \"Search\" },\r\n    { name: \"Save Settings\", text: \"Save Settings\" },\r\n    { name: \"Restore Settings\", text: \"Restore Settings\" },\r\n    { name: \"Add New\", text: \"Add New\" },\r\n    { name: \"Advanced Search\", text: \"Advanced Search\" },\r\n  ];\r\n\r\n  constructor(\r\n    public componentService: ZComponentService\r\n  ) {\r\n    super(componentService);\r\n  }\r\n\r\n  public initComponent(): Observable<any> {\r\n    return super.initComponent();\r\n  }\r\n\r\n  public getGridColumnStyle() {\r\n    return this.componentProperties.style.style3 ? this.componentService.convertStyleStringToObject(this.componentProperties.style.style3) : {}\r\n  }\r\n\r\n  public getGridHeaderStyle() {\r\n    return this.componentProperties.style.style4 ? this.componentService.convertStyleStringToObject(this.componentProperties.style.style4) : {}\r\n  }\r\n\r\n  public getGridFooterStyle() {\r\n    return this.componentProperties.style.style9 ? this.componentService.convertStyleStringToObject(this.componentProperties.style.style9) : {}\r\n  }\r\n\r\n  public getCellStyle(columnField: ZField, dataItem: any): any {\r\n    const style = columnField[`Style10`];\r\n    const func = ZComponentHelper.getGroupEvalValue.call(this, style);\r\n    if (typeof func === 'function') {\r\n      const callFunc = func.bind(this.group.ctrlScope);\r\n      return callFunc(dataItem, columnField);\r\n    }\r\n    else if (typeof func === 'string') {\r\n      return func;\r\n    }\r\n    return style;\r\n  }\r\n\r\n  public cellStyleCondition(col, colValue: any) {\r\n    if (col['CellStyleCondition']) {\r\n      const conditionHighlightcol: [] = col['CellStyleCondition'];\r\n      let conditionResult = false;\r\n\r\n      conditionHighlightcol.forEach(data => {\r\n        if (!conditionResult) {\r\n          if (data['Value'] == colValue) {\r\n            conditionResult = true;\r\n          }\r\n        }\r\n      });\r\n\r\n      return conditionResult;\r\n    }\r\n    return false;\r\n  }\r\n\r\n  public setCellStyleCondition(col, colValue: any) {\r\n    if (col['CellStyleCondition']) {\r\n      const conditionHighlightcol: [] = col['CellStyleCondition'];\r\n      let conditionResult = '';\r\n\r\n      conditionHighlightcol.forEach(data => {\r\n        if (data['Value'] == colValue) {\r\n          if (data['BackgroundColor']) {\r\n            conditionResult = 'background-color:' + data['BackgroundColor'] + ';';\r\n          }\r\n\r\n          if (data['Color']) {\r\n            conditionResult += 'color:' + data['Color'] + ';';\r\n          }\r\n\r\n          if (data['StyleExpression']) {\r\n            conditionResult += data['StyleExpression'];\r\n          }\r\n        }\r\n      });\r\n\r\n      return conditionResult;\r\n    }\r\n    return false;\r\n  }\r\n\r\n  public translateToolBarItems(): Observable<any> {\r\n    return this.componentService.translateToolBarItems(this.toolbarItemList, this.group);\r\n  }\r\n\r\n  public getToolBarItemLabelName(name: string) {\r\n    return this.toolbarItemList.find(t => t.name === name)?.text || name;\r\n  }\r\n\r\n  public translateColumnHeader(columns: any[]): Observable<any> {\r\n    return this.componentService.translateGridColumnHeader(columns, this.group);\r\n  }\r\n\r\n  public rowCallback(context: RowClassArgs): string {\r\n    if (this.data.DataRowClass && typeof this.data.DataRowClass == 'string' && this.data.DataRowClass.startsWith('group.')) {\r\n      const func = ZComponentHelper.getGroupValue(this.data.DataRowClass, this.group);\r\n\r\n      if (typeof func === 'function') {\r\n        return func(context);\r\n      }\r\n    }\r\n\r\n    return '';\r\n  }\r\n\r\n  //#region Popover\r\n  public setupPopoverFeature(columns: Array<any>, gridData: Array<any>) {\r\n    const popoverCols = columns.filter(c => c.PopOverContent);\r\n    if (popoverCols.length > 0 && gridData.length > 0) {\r\n\r\n      for (const data of gridData) {\r\n        this.popoverData.push(\r\n          {\r\n            id: data.Id,\r\n            popoverContent: this.getPopOverContentByCol(popoverCols, data)\r\n          }\r\n        );\r\n      }\r\n    }\r\n  }\r\n\r\n  public showPopOver(columnField: ZField, event: any): void {\r\n    if (!columnField.PopOverContent || !this.popovercontainer) {\r\n      this.popovercontainer.hide();\r\n      return;\r\n    }\r\n\r\n    const element = event.target as HTMLElement;\r\n    this.popovercontainer.hide();\r\n    if (element.nodeName === 'DIV' || element.nodeName === 'SPAN') {\r\n      this.popovercontainer.show(element);\r\n    }\r\n  }\r\n\r\n  public closePopOver(event: any): void {\r\n    if (event && event.toElement && event.toElement.nodeName == \"DIV\" && (event.toElement.parentElement.nodeName == \"TD\" || (event.toElement.parentElement.nodeName == \"DIV\" && event.toElement.parentElement.className.includes(\"k-popover-body\")))) {\r\n      return;\r\n    }\r\n    this.popovercontainer.hide();\r\n  }\r\n\r\n  public getContextData(anchor: HTMLElement) {\r\n    if (anchor.attributes[\"data-id\"] && anchor.attributes[\"data-id\"].value && anchor.attributes[\"column-name\"] && anchor.attributes[\"column-name\"].value) {\r\n      const recordId = anchor.attributes[\"data-id\"].value;\r\n      const columnName = anchor.attributes[\"column-name\"].value;\r\n      const popoverAllColData = this.popoverData.find(d => d.id == recordId);\r\n      const popoverColData = popoverAllColData.popoverContent.find(d => d.columnName == columnName);\r\n      return JSON.parse(popoverColData.content)\r\n    }\r\n  }\r\n\r\n  private getPopOverContentByCol(columns: Array<any>, data: any): Array<any> {\r\n    const popOverContent = [];\r\n    for (const col of columns) {\r\n      this.getPopOverContent(col, data).subscribe(content => {\r\n        popOverContent.push({\r\n          columnName: col.field,\r\n          content: content\r\n        });\r\n      })\r\n    }\r\n\r\n    return popOverContent;\r\n  }\r\n\r\n  private getPopOverContent(columnField: ZField, dataItem: any): Observable<string> {\r\n    const content = columnField.PopOverContent;\r\n    if (!content) {\r\n      return null;\r\n    }\r\n    // return {\r\n    //   Body: `<b>2</b> more goals and <b>5</b> more competencies to grade. <br/>\r\n    //   Goal 1: <b style='color:var(--ion-color-primary);'>1</b> <br/>`,\r\n    //   BodyClass:'appraisal-popover'\r\n    // };\r\n    const func = ZComponentHelper.getGroupEvalValue.call(this, content);\r\n\r\n    let result = func;\r\n    if (typeof func === 'function') {\r\n      const callFunc = func.bind(this.group.ctrlScope);\r\n      result = callFunc(columnField, dataItem);\r\n\r\n      if (isObservable(result)) {\r\n        return result.pipe(map(data => this.parsePopoverObject(data)));\r\n      }\r\n      else {\r\n        return of(this.parsePopoverObject(result));\r\n      }\r\n    }\r\n  }\r\n\r\n  private parsePopoverObject(result): string {\r\n    if (typeof result === \"object\") {\r\n      return JSON.stringify(result);\r\n    }\r\n    else {\r\n      return JSON.stringify(\r\n        {\r\n          Body: result || '',\r\n        }\r\n      );\r\n    }\r\n  }\r\n  //#endregion\r\n\r\n  //#region Tooltip\r\n  public showTooltip(e: MouseEvent): void {\r\n    if (!this.data.IsShowToolTip) return; // Exit if tooltips are disabled\r\n\r\n    const element = e.target as HTMLElement; // Get the element that triggered the event\r\n    if (this.isCommandColumn(element)) {\r\n      this.tooltipDir.hide();\r\n      return;\r\n    }\r\n\r\n    const targetCell = this.getTargetCell(element);   // Check if it's a command column (buttons, actions, etc.)\r\n    if (!targetCell || !targetCell.textContent?.trim()) {\r\n      this.tooltipDir.hide();\r\n      return;\r\n    }\r\n\r\n    const visibleWidth = this.calculateVisibleWidth(targetCell);\r\n    const finalWidth = this.calculateTooltipWidth(targetCell, visibleWidth);\r\n\r\n    // Show tooltip only if text is truncated within cell\r\n    if (targetCell.offsetWidth < targetCell.scrollWidth) {\r\n      this.tooltipDir.tooltipWidth = finalWidth;\r\n      this.tooltipDir.toggle(targetCell);\r\n    } else {\r\n      this.tooltipDir.hide();\r\n    }\r\n  }\r\n\r\n  // Helper function to check if it's a command column\r\n  private isCommandColumn(element: HTMLElement): boolean {\r\n    return element.classList.contains('k-command-cell');\r\n  }\r\n\r\n  // Helper function to determine the target cell\r\n  private getTargetCell(element: HTMLElement): HTMLElement | null {\r\n    if (element.nodeName === 'TD' || element.nodeName === 'TH') {\r\n      return element;\r\n    } else if (element.nodeName === 'SPAN' && element.classList.contains('grid-cell-data')) {\r\n      return element.parentElement;\r\n    }\r\n    return null;\r\n  }\r\n\r\n  // Helper function to calculate the visible width of the cell within the grid container\r\n  private calculateVisibleWidth(targetCell: HTMLElement): number {\r\n    const cellRect = targetCell.getBoundingClientRect();\r\n    const gridContainer = document.querySelector('.k-grid') as HTMLElement;\r\n    if (!gridContainer) {\r\n      console.warn('Grid container not found.');\r\n      return 0;\r\n    }\r\n    const gridRect = gridContainer.getBoundingClientRect();\r\n\r\n    const visibleLeft = Math.max(cellRect.left, gridRect.left);\r\n    const visibleRight = Math.min(cellRect.right, gridRect.right);\r\n    return Math.max(0, visibleRight - visibleLeft);\r\n  }\r\n\r\n  // Helper function to calculate the tooltip width based on visible width and column size\r\n  private calculateTooltipWidth(targetCell: HTMLElement, visibleWidth: number): number {\r\n    const maxWidth = window.innerWidth / 2;\r\n\r\n    // Use characters width if the visible width is too small (less than 100px)\r\n    let columnWidth = targetCell.offsetWidth;\r\n    if (columnWidth < 100) {\r\n      const tooltipText = targetCell.innerText || targetCell.textContent || '';\r\n      const charWidth = 9; // Average width of a character\r\n      columnWidth = tooltipText.length * charWidth;\r\n    }\r\n\r\n    // If visible width is too small, use the full column width\r\n    if (visibleWidth < 100) {\r\n      visibleWidth = columnWidth;\r\n    }\r\n\r\n    return Math.min(maxWidth, visibleWidth);\r\n  }\r\n  //#endregion\r\n\r\n}\r\n","import { Component, OnInit } from \"@angular/core\";\r\nimport { SeriesLabelsVisualArgs } from \"@progress/kendo-angular-charts\";\r\nimport { Element, Group, Path } from '@progress/kendo-drawing';\r\nimport { DataListingFieldBase } from \"../components/datalistingfieldbase.component\";\r\nimport { ZComponentService } from \"../services/zcomponent.service\";\r\nimport { ZComponent, ZComponentHelper, ZField } from 'mmhglobal-zcore';\r\n\r\n\r\n@Component({\r\n  selector: 'app-zchart',\r\n  templateUrl: './zchart.component.html',\r\n  styleUrls: ['./zchart.component.scss'],\r\n})\r\n\r\nexport class ZchartComponent extends DataListingFieldBase implements ZComponent, OnInit {\r\n  private series: any[] = [];\r\n  private valueAxis: any[] = [];\r\n  private crossingValues = [];\r\n  private categories = [];\r\n  private panes = [{}, { name: 'navigator', height: 100 }];\r\n  private categoryAxis = [];\r\n  private navigatorAxis = [];\r\n\r\n  // Default values\r\n  public options = {\r\n    title: '',\r\n    renderAs: 'canvas',  // svg\r\n    pannable: false,\r\n    zoomable: false,\r\n    categories: this.categories,\r\n    max: 10,\r\n    maxDivisions: null,\r\n    axisLabels: { rotation: 'auto' },\r\n    labels: {\r\n      visible: false,\r\n      background: \"transparent\"\r\n    },\r\n    series: this.series,\r\n    valueAxis: this.valueAxis,\r\n    crossingValues: this.crossingValues, \r\n    dataType: 'area',\r\n    dataStyle: 'smooth',\r\n    legendPosition: 'bottom',\r\n    legendSpacing: 6,\r\n    legendOrientation: 'horizontal',\r\n    tooltipFormat: '{0}%',\r\n    aggregateType: 'sum',\r\n    dataField: null,\r\n    categoryField: null,\r\n    color: '#05A2FE',\r\n    field: 'bar',\r\n    onRender: '',\r\n    onAxisLabelClick: '',\r\n    onLegendItemClick: '',\r\n    onLegendItemHover: '',\r\n    onPlotAreaClick: '',\r\n    onPlotAreaHover: '',\r\n    onSeriesClick: '',\r\n    onSeriesHover: '',\r\n    customTooltipFunc: '',\r\n    customTooltipOptions: { background: '#05A2FE' }, \r\n    panes: this.panes,\r\n    categoryAxis: this.categoryAxis,\r\n    transitions: 'transitions',\r\n    navigator: false,\r\n    navigatorAxis: this.navigatorAxis,\r\n  };\r\n\r\n  constructor(\r\n    public componentService: ZComponentService\r\n  ) {\r\n    super(componentService);\r\n  }\r\n\r\n  ngOnInit() {\r\n    super.initComponent().subscribe(() => {\r\n      const opts = this.data?.Options;\r\n      if (!opts) {\r\n        console.info('ngOnInit: no Options found on data.');\r\n        this.isLoading = false;\r\n\r\n        return;\r\n      }\r\n\r\n      // Merge object options or evaluate string expression\r\n      if (typeof opts === 'object') {\r\n        Object.assign(this.options, opts);\r\n      } else if (typeof opts === 'string') {\r\n        const evaluated = ZComponentHelper.getGroupEvalValue.call(this, opts);\r\n        if (evaluated && typeof evaluated === 'object') {\r\n          Object.assign(this.options, evaluated);\r\n        } else {\r\n          console.warn('ngOnInit: evaluated Options string did not yield an object:', evaluated);\r\n        }\r\n      } else {\r\n        console.warn('ngOnInit: unsupported Options type:', typeof opts);\r\n      }\r\n\r\n      // Handle specific fields passed in as string expressions\r\n      const stringFields: Array<keyof typeof opts> = [\r\n        'categories', 'series', 'valueAxis',\r\n        'crossingValues', 'categoryAxis',\r\n        'navigatorAxis', 'Navigator', 'max'\r\n      ];\r\n      for (const field of stringFields) {\r\n        const raw = (opts as any)[field];\r\n        if (typeof raw === 'string') {\r\n          const value = ZComponentHelper.getGroupEvalValue.call(this, raw);\r\n          if (value !== undefined) {\r\n            (this.options as any)[field] = value;\r\n          } else {\r\n            console.warn(`ngOnInit: failed to evaluate \"${String(field)}\" expression:`, raw);\r\n          }\r\n        }\r\n      }\r\n\r\n      this.getFieldDeclarationForSetup(this.data);\r\n      this.isLoading = false;\r\n    });\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    this.componentService.decrementComponentCounterForField(this.data);\r\n  }\r\n\r\n  private getFieldDeclarationForSetup(field: ZField) {\r\n    // To configure the Chart title\r\n    this.options.title = field.Title ?? this.options.title;\r\n\r\n    // Canvas (bitmap) and SVG (vector graphics).\r\n    this.options.renderAs = field.RenderAs ?? this.options.renderAs;\r\n\r\n    // true or false - To perform panning, drag the plot area of the Chart.\r\n    this.options.pannable = field.Pannable ?? this.options.pannable;\r\n\r\n    // true or false - To perform zoomingMouse-wheel (desktop) or pinch-zoom (mobile), or Hold the Shift key and select an area.\r\n    this.options.zoomable = field.Zoomable ?? this.options.zoomable;\r\n\r\n    // Supports the binding of category x-axis to arrays\r\n    this.options.categories = ZComponentHelper.getGroupEvalValue.call(this, field.Categories) ?? [];\r\n\r\n    // The last date displayed on a date category axis or the index of the last category displayed on a category axis.\r\n    this.options.max = ZComponentHelper.getGroupEvalValue.call(this, field.Max) ?? this.options.max;\r\n\r\n    // The maximum number of ticks and labels to display. Applicable for date category axis.\r\n    this.options.maxDivisions = field.MaxDivisions ?? this.options.maxDivisions;\r\n\r\n    // The rotation angle of the labels\r\n    this.options.axisLabels.rotation = field.Rotation ?? this.options.axisLabels.rotation;\r\n\r\n    //Supports the binding of series y-axis to arrays and chart type. may refer https://www.telerik.com/kendo-angular-ui/components/charts/api/series\r\n    this.options.series = ZComponentHelper.getGroupEvalValue.call(this, field.Series) ?? [];\r\n\r\n    // The configuration options of the value axis. may refer https://www.telerik.com/kendo-angular-ui/components/charts/api/valueaxis\r\n    this.options.valueAxis = ZComponentHelper.getGroupEvalValue.call(this, field.ValueAxis) ?? [];\r\n\r\n    // To configure the position of the axes as relative to one another, use the axisCrossingValue option of the axes.\r\n    // May refer https://www.telerik.com/kendo-angular-ui/components/charts/elements/axes\r\n    this.options.crossingValues = ZComponentHelper.getGroupEvalValue.call(this, field.CrossingValues) ?? [];\r\n\r\n    //Angular Chart Types. may refer https://www.telerik.com/kendo-angular-ui/charts\r\n    this.options.dataType = field.DataType ?? this.options.dataType;\r\n\r\n    // The line style of the series\r\n    // Key Value: \"normal\" | \"step\" | \"smooth\"\r\n    this.options.dataStyle = field.DataStyle ?? this.options.dataStyle;\r\n\r\n    // The positions of the Chart legend. Setting the legend position to custom allows you to position the legend using the legend.offsetX and legend.offsetY options.\r\n    // Key Value: \"top\" | \"bottom\" | \"left\" | \"right\" | \"custom\"\r\n    this.options.legendPosition = field.LegendPosition ?? this.options.legendPosition;\r\n\r\n    // The distance (in pixels) between the legend items. Defaults to 6.\r\n    this.options.legendSpacing = field.LegendSpacing ?? this.options.legendSpacing;\r\n\r\n    // Specifies the orientation of layouts in different scenarios\r\n    // Key Value: \"horizontal\" | \"vertical\"\r\n    this.options.legendOrientation = field.LegendOrientation ?? this.options.legendOrientation;\r\n\r\n    // The Angular Chart supports three types of tooltips—on the series level, a shared tooltip for all series per category, and on the crosshair.\r\n    this.options.tooltipFormat = field.TooltipFormat ?? this.options.tooltipFormat;\r\n\r\n    // The aggregate function for the date series.\r\n    // Key Value: \"avg\",\"count\",\"max\",\"min\",\"sum\",\"sumOrNull\",\"first\"\r\n    // May refer: https://www.telerik.com/kendo-angular-ui/components/charts/api/series\r\n    this.options.aggregateType = field.AggregateType ?? this.options.aggregateType;\r\n\r\n    // The data item field which contains the series value.\r\n    this.options.dataField = field.DataField ?? this.options.dataField;\r\n\r\n    // The data item field which contains the category name or date. If the category is a date, the points are rendered in chronological order.\r\n    // Default value: \"category\"\r\n    this.options.categoryField = field.CategoryField ?? this.options.categoryField;\r\n\r\n    // To declare a function to generate tooltips\r\n    this.options.customTooltipFunc = field.CustomTooltipFunc ?? this.options.customTooltipFunc;\r\n\r\n    // To enable navigator\r\n    this.options.navigator = ZComponentHelper.getGroupEvalValue.call(this, field.Navigator) ?? this.options.navigator;\r\n\r\n    // Supports the binding of series x-axis to arrays\r\n    this.options.categoryAxis = ZComponentHelper.getGroupEvalValue.call(this, field.CategoryAxis) ?? [];\r\n\r\n    // Supports the binding of series x-axis for navigator\r\n    this.options.navigatorAxis = ZComponentHelper.getGroupEvalValue.call(this, field.NavigatorAxis) ?? [];\r\n\r\n    // The Chart panes enable you to create vertical sub-divisions in a single categorical Chart.\r\n    // You have to set an individual value axis to each pane.Multiple panes can share a category axis.\r\n    this.options.panes = field.Panes ?? this.options.panes;\r\n\r\n\r\n    //this.options.labelVisual = ZComponentHelper.getGroupEvalValue.call(this, field.LabelVisual) || this.options.labelVisual;\r\n  }\r\n\r\n  // Notice that to capture 'this', the approach utilizes\r\n  // a lambda function instead of a method\r\n  public labelVisual = (e: SeriesLabelsVisualArgs): Element => {\r\n\r\n    let group = new Group();\r\n\r\n    const f = ZComponentHelper.getGroupEvalValue.call(this, this.data.LabelVisualConfiguration);\r\n    if (typeof f === 'function') {\r\n      const callFunc = f.bind(this.group.ctrlScope);\r\n      group = callFunc(e);\r\n    }\r\n\r\n    //group.append(defaultLabel, path);\r\n\r\n    return group;\r\n  };\r\n\r\n  public setData = (gData: any) => {\r\n    this.getFieldDeclarationForSetup(this.data);\r\n  }\r\n\r\n  //#region Component Events\r\n  public onRender(e): void {\r\n    // console.log('render');\r\n    this.callComponentEvent(e, this.options.onRender);\r\n  }\r\n\r\n  public onAxisLabelClick(e): void {\r\n    // console.log('axisLabelClick', e);\r\n    this.callComponentEvent(e, this.options.onAxisLabelClick);\r\n  }\r\n\r\n  public onLegendItemClick(e): void {\r\n    // console.log('legendItemClick', e);\r\n    this.callComponentEvent(e, this.options.onLegendItemClick);\r\n  }\r\n\r\n  public onLegendItemHover(e): void {\r\n    // console.log('legendItemHover', e);\r\n    this.callComponentEvent(e, this.options.onLegendItemHover);\r\n  }\r\n\r\n  public onPlotAreaClick(e): void {\r\n    // console.log('plotAreaClick', e);\r\n    this.callComponentEvent(e, this.options.onPlotAreaClick);\r\n  }\r\n\r\n  public onPlotAreaHover(e): void {\r\n    // console.log('plotAreaHover', e);\r\n    this.callComponentEvent(e, this.options.onPlotAreaHover);\r\n  }\r\n\r\n  public onSelectEnd(e): void {\r\n    console.log('SelectEnd', e);\r\n    const f = ZComponentHelper.getGroupEvalValue.call(this, this.data.OnItemClick);\r\n    if (typeof f === 'function') {\r\n      const callFunc = f.bind(this.group.ctrlScope);\r\n      return callFunc(e);\r\n    }\r\n    return;\r\n  }\r\n\r\n  public onSeriesClick(e): void {\r\n    console.log('seriesClick', e);\r\n    const f = ZComponentHelper.getGroupEvalValue.call(this, this.data.OnItemClick);\r\n    if (typeof f === 'function') {\r\n      const callFunc = f.bind(this.group.ctrlScope);\r\n      return callFunc(e);\r\n    }\r\n    return;\r\n  }\r\n\r\n  public onSeriesHover(e): void {\r\n    this.callComponentEvent(e, this.options.onSeriesHover);\r\n    // console.log('seriesHover', e);\r\n  }\r\n\r\n  private callComponentEvent(e, event: any): any {\r\n    if (typeof event === 'function') {\r\n      const callFunc = event.bind(this.group.ctrlScope);\r\n      return callFunc(e);\r\n    }\r\n\r\n    const f = ZComponentHelper.getGroupEvalValue.call(this, event);\r\n    if (typeof f === 'function') {\r\n      const callFunc = f.bind(this.group.ctrlScope);\r\n      return callFunc(e);\r\n    }\r\n  }\r\n  //#endregion\r\n\r\n  public getToolTip(value, category, series, dataItem): string {\r\n    const data = this.options;\r\n    return this.callComponentEvent({ value, category, series, dataItem, data }, this.options.customTooltipFunc);\r\n  }\r\n}\r\n","<div *ngIf=\"!options.navigator && !isLoading && (!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\"\r\n     class=\"e1tag-style\" [style]=\"componentProperties.style.style\">\r\n  <kendo-chart [renderAs]=\"options.renderAs\" [pannable]=\"options.pannable\" [zoomable]=\"options.zoomable\"\r\n               (render)=\"onRender($event)\"\r\n               (axisLabelClick)=\"onAxisLabelClick($event)\"\r\n               (legendItemClick)=\"onLegendItemClick($event)\"\r\n               (legendItemHover)=\"onLegendItemHover($event)\"\r\n               (plotAreaClick)=\"onPlotAreaClick($event)\"\r\n               (plotAreaHover)=\"onPlotAreaHover($event)\"\r\n               (seriesClick)=\"onSeriesClick($event)\"\r\n               (seriesHover)=\"onSeriesHover($event)\"\r\n               class=\"e1tag-style1\" [style]=\"componentProperties.style.style1\">\r\n    <kendo-chart-title *ngIf=\"options.title\" [text]=\"options.title\" class=\"e1tag-style2\" [style]=\"componentProperties.style.style2\"></kendo-chart-title>\r\n    <kendo-chart-legend [position]=\"options.legendPosition\" [spacing]=\"options.legendSpacing\" [orientation]=\"options.legendOrientation\" class=\"e1tag-style3\" [style]=\"componentProperties.style.style3\"></kendo-chart-legend>\r\n    <kendo-chart-tooltip [format]=\"options.tooltipFormat\" class=\"e1tag-style4\" [style]=\"componentProperties.style.style4\"></kendo-chart-tooltip>\r\n    <kendo-chart-value-axis>\r\n      <kendo-chart-value-axis-item *ngFor=\"let item of options.valueAxis\"\r\n                                   [name]=\"item.name\"\r\n                                   [title]=\"item.title\"\r\n                                   [min]=\"item.min\"\r\n                                   [max]=\"item.max\"\r\n                                   [majorUnit]=\"item.majorUnit\"\r\n                                   [color]=\"item.color\">\r\n      </kendo-chart-value-axis-item>\r\n    </kendo-chart-value-axis>\r\n    <kendo-chart-category-axis>\r\n      <kendo-chart-category-axis-item [categories]=\"options.categories\"\r\n                                      [axisCrossingValue]=\"options.crossingValues\"\r\n                                      [maxDivisions]=\"options.maxDivisions\"\r\n                                      [max]=\"options.max\"\r\n                                      [labels]=\"options.axisLabels\">\r\n      </kendo-chart-category-axis-item>\r\n    </kendo-chart-category-axis>\r\n    <kendo-chart-series class=\"e1tag-style5\" [style]=\"componentProperties.style.style5\">\r\n      <kendo-chart-series-item *ngFor=\"let item of options.series\"\r\n                               [aggregate]=\"options.aggregateType\"\r\n                               [type]=\"item.type ?? options.dataType\" [style]=\"item.style ?? options.dataStyle\"\r\n                               [color]=\"item.color ?? options.color\"\r\n                               [labels]=\"item.labels ?? options.labels\"\r\n                               [field]=\"item.dataField ?? options.dataField\" [categoryField]=\"item.categoryField ?? options.categoryField\"\r\n                               [data]=\"item.data\"\r\n                               [stack]=\"item.stack\"\r\n                               [name]=\"item.name\"\r\n                               [axis]=\"item.axis\"\r\n                               [markers]=\"item.markers\"\r\n                               [legendItem]=\"item.legendItem\">\r\n        <kendo-chart-series-item-labels [visible]=\"item.labels.visible\" [visual]=\"labelVisual\">\r\n        </kendo-chart-series-item-labels>\r\n        <kendo-chart-series-item-tooltip kendoChartSeriesTooltipTemplate *ngIf=\"options.customTooltipFunc\" [background]=\"options.customTooltipOptions.background\">\r\n          <ng-template let-value=\"value\" let-category=\"category\" let-series=\"series\" let-dataItem=\"dataItem\">\r\n            <div [innerHTML]=\"getToolTip(value, category, series, dataItem) | htmlSanitize\" class=\"e1tag-style6\" [style]=\"componentProperties.style.style6\"></div>\r\n          </ng-template>\r\n        </kendo-chart-series-item-tooltip>\r\n      </kendo-chart-series-item>\r\n    </kendo-chart-series>\r\n    <!--<kendo-chart-x-axis>\r\n    <kendo-chart-x-axis-item [title]=\"{ text: 'Wind Speed [km/h]' }\">\r\n    </kendo-chart-x-axis-item>\r\n  </kendo-chart-x-axis>\r\n  <kendo-chart-y-axis>\r\n    <kendo-chart-y-axis-item [title]=\"{ text: 'Rainfall [mm]' }\">\r\n    </kendo-chart-y-axis-item>\r\n  </kendo-chart-y-axis>-->\r\n  </kendo-chart>\r\n</div>\r\n<div *ngIf=\"options.navigator && !isLoading && (!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\"\r\n     class=\"e1tag-style\" [style]=\"componentProperties.style.style\">\r\n  <kendo-chart [renderAs]=\"options.renderAs\" [pannable]=\"options.pannable\" [zoomable]=\"options.zoomable\"\r\n               (render)=\"onRender($event)\"\r\n               [categoryAxis]=\"options.categoryAxis\"\r\n               [panes]=\"options.panes\"\r\n               (selectEnd)=\"onSelectEnd($event)\" [transitions]=\"options.transitions\"\r\n               (axisLabelClick)=\"onAxisLabelClick($event)\"\r\n               (legendItemClick)=\"onLegendItemClick($event)\"\r\n               (legendItemHover)=\"onLegendItemHover($event)\"\r\n               (plotAreaClick)=\"onPlotAreaClick($event)\"\r\n               (plotAreaHover)=\"onPlotAreaHover($event)\"\r\n               (seriesClick)=\"onSeriesClick($event)\"\r\n               (seriesHover)=\"onSeriesHover($event)\"\r\n               class=\"e1tag-style1\" [style]=\"componentProperties.style.style1\">\r\n    <kendo-chart-title *ngIf=\"options.title\" [text]=\"options.title\" class=\"e1tag-style2\" [style]=\"componentProperties.style.style2\"></kendo-chart-title>\r\n    <kendo-chart-legend [position]=\"options.legendPosition\" [spacing]=\"options.legendSpacing\" [orientation]=\"options.legendOrientation\" class=\"e1tag-style3\" [style]=\"componentProperties.style.style3\"></kendo-chart-legend>\r\n    <kendo-chart-tooltip [format]=\"options.tooltipFormat\" class=\"e1tag-style4\" [style]=\"componentProperties.style.style4\"></kendo-chart-tooltip>\r\n    <kendo-chart-value-axis>\r\n      <kendo-chart-value-axis-item *ngFor=\"let item of options.valueAxis\"\r\n                                   [name]=\"item.name\"\r\n                                   [title]=\"item.title\"\r\n                                   [min]=\"item.min\"\r\n                                   [max]=\"item.max\"\r\n                                   [majorUnit]=\"item.majorUnit\"\r\n                                   [color]=\"item.color\"\r\n                                   [pane]=\"item.pane\">\r\n      </kendo-chart-value-axis-item>\r\n    </kendo-chart-value-axis>\r\n    <kendo-chart-series class=\"e1tag-style5\" [style]=\"componentProperties.style.style5\">\r\n      <kendo-chart-series-item *ngFor=\"let item of options.series\"\r\n                               [aggregate]=\"options.aggregateType\"\r\n                               [type]=\"item.type ?? options.dataType\" [style]=\"item.style ?? options.dataStyle\"\r\n                               [color]=\"item.color ?? options.color\"\r\n                               [labels]=\"item.labels ?? options.labels\"\r\n                               [field]=\"item.dataField ?? options.dataField\" [categoryField]=\"item.categoryField ?? options.categoryField\"\r\n                               [data]=\"item.data\"\r\n                               [stack]=\"item.stack\"\r\n                               [name]=\"item.name\"\r\n                               [axis]=\"item.axis\"\r\n                               [markers]=\"item.markers\"\r\n                               [legendItem]=\"item.legendItem\">\r\n        <kendo-chart-series-item-labels [visible]=\"item.labels.visible\" [visual]=\"labelVisual\">\r\n        </kendo-chart-series-item-labels>\r\n        <kendo-chart-series-item-tooltip kendoChartSeriesTooltipTemplate *ngIf=\"options.customTooltipFunc\" [background]=\"options.customTooltipOptions.background\">\r\n          <ng-template let-value=\"value\" let-category=\"category\" let-series=\"series\" let-dataItem=\"dataItem\">\r\n            <div [innerHTML]=\"getToolTip(value, category, series, dataItem) | htmlSanitize\" class=\"e1tag-style6\" [style]=\"componentProperties.style.style6\"></div>\r\n          </ng-template>\r\n        </kendo-chart-series-item-tooltip>\r\n      </kendo-chart-series-item>\r\n      <kendo-chart-series-item *ngFor=\"let item of options.navigatorAxis\"\r\n                               [type]=\"item.type\"\r\n                               [style]=\"item.style ?? options.dataStyle\"\r\n                               [data]=\"item.data\"\r\n                               [axis]=\"item.axis\"\r\n                               [categoryAxis]=\"item.categoryAxis\"\r\n                               [labels]=\"item.labels\"\r\n                               [color]=\"item.color\"\r\n                               >\r\n      </kendo-chart-series-item>\r\n    </kendo-chart-series>\r\n  </kendo-chart>\r\n\r\n</div>\r\n","/********** Angular **********/\r\nimport { Component, EventEmitter, Output } from \"@angular/core\";\r\nimport { FormControl, FormGroup } from \"@angular/forms\";\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { interval, of, switchMap, takeWhile, tap } from \"rxjs\";\r\n\r\n/********** Component & Service **********/\r\nimport { FieldBase } from \"./fieldbase.component\";\r\nimport { ZComponentService } from \"../services/zcomponent.service\";\r\nimport { ZComponentHelper } from \"mmhglobal-zcore\";\r\n\r\n\r\n@Component({\r\n  template: ``,\r\n})\r\n\r\n// For: zcheckbox, zchip, zdatetime, zimg, zinput-container, zlabel, znumeric, zpostselectinput, zselectmultiple, ztext, ztextarea, zupload\r\nexport class InputFieldBase extends FieldBase {\r\n  @Output('triggerContainerEvent') triggerContainerEvent: EventEmitter<any> = new EventEmitter();\r\n\r\n  constructor(\r\n    public componentService: ZComponentService\r\n  ) {\r\n    super(componentService);\r\n  }\r\n\r\n  public onClick(event: any, fieldValue?: any) {\r\n    this.triggerEvent(\"inputfield-onClick\", this.data.OnClick, event, fieldValue || event['OnClick']);\r\n  }\r\n\r\n  public onChangeCC(event: any, fieldValue?: any) {\r\n    ZComponentHelper.setModelValue(this.data.CCValue, this.getFieldValue(event, fieldValue), this.group);\r\n    this.triggerEvent(\"inputfield-onChangeCC\", this.data.CCOnChange, event, fieldValue);\r\n  }\r\n\r\n  public onChange(event: any, fieldValue?: any) {\r\n    if (this.data.SubType && this.data.SubType === 'zudf') {\r\n      this.handleZudfChange(event, fieldValue);\r\n    } else {\r\n      ZComponentHelper.setComponentModelValue(this.data, this.getFieldValue(event, fieldValue), this.group);\r\n      this.triggerEvent(\"inputfield-onChange\", this.data.OnChange, event, fieldValue);\r\n    }\r\n  }\r\n\r\n  public onItemClick(event: any, fieldValue?: any) {\r\n    this.triggerEvent(\"inputfield-onItemClick\", this.data.OnItemClick, event, fieldValue);\r\n  }\r\n\r\n  public onIconClick(clickActionExpr: string) {\r\n    this.triggerEvent(\"inputfield-onIconClick\", clickActionExpr, null, this.group.zModel[this.data.Value]);\r\n  }\r\n\r\n  public getReadOnlyValue() {\r\n    const readOnlyValue = ZComponentHelper.getGroupEvalValue.call(this, this.data.ReadOnly);\r\n    if (typeof readOnlyValue === 'function') {\r\n      const callFunc = readOnlyValue.bind(this.group.ctrlScope);\r\n      return callFunc(this.group);\r\n    }\r\n    return readOnlyValue;\r\n  }\r\n\r\n  public getIsRequiredValue() {\r\n    const IsRequiredValue = ZComponentHelper.getGroupEvalValue.call(this, this.data.IsRequired);\r\n    if (typeof IsRequiredValue === 'function') {\r\n      const callFunc = IsRequiredValue.bind(this.group.ctrlScope);\r\n      return callFunc(this.group);\r\n\r\n    }\r\n    return IsRequiredValue;\r\n  }\r\n\r\n  public setValue(value: string) {\r\n    ZComponentHelper.setComponentModelValue(this.data, value, this.group);\r\n  }\r\n\r\n  public setAddOnValue(addOns?: any) {\r\n    this.triggerContainerEvent.emit({ type: 'setAddOnValue', data: addOns });\r\n  }\r\n\r\n  public setMinValue(newValue: number) {\r\n    this.triggerContainerEvent.emit({ type: 'setMinValue', newValue: newValue });\r\n  }\r\n\r\n  public setMaxValue(newValue: number) {\r\n    this.triggerContainerEvent.emit({ type: 'setMaxValue', newValue: newValue });\r\n  }\r\n\r\n  private handleZudfChange(event: any, fieldValue?: any) {\r\n    const zudfFieldValue = this.getFieldValue(event, fieldValue);\r\n    const zudfScope = ZComponentHelper.getZudfScope(this.group, this.data.Value);\r\n\r\n    if (!zudfScope) {\r\n      console.log('zudf scope is null for field onchange.');\r\n    }\r\n\r\n    zudfScope.zModel[this.data.Value] = zudfFieldValue;\r\n    of({}).pipe(\r\n      tap(res => {\r\n        if (zudfScope.linkedComponent) {\r\n          this.cascadingHandling(zudfScope, this.data.Value, fieldValue);\r\n        }\r\n      }),\r\n      tap(res => {\r\n        if (this.data['AutoPopulateChildFieldValue']) {\r\n          // ZUDF. Auto Populate child field value\r\n          const childFields = this.data['ChildFields'];\r\n          if (childFields) {\r\n            let selectedDataOption = null;\r\n            if (fieldValue) {\r\n              // get the selected data full info\r\n              const dataOption = this.group.zData[this.data['ZDataOptionName']];\r\n\r\n              if (dataOption) {\r\n                dataOption.forEach(option => {\r\n                  if (option.Id === fieldValue) {\r\n                    selectedDataOption = Object.assign({}, option);\r\n                    return;\r\n                  }\r\n                });\r\n              }\r\n            }\r\n\r\n            // set to all related zMode of the dropdown\r\n            let fg: FormGroup = zudfScope.form as FormGroup;\r\n            childFields.forEach(childField => {\r\n              // remove symbol.\r\n              let childFieldName = encodeURI(childField.replace(/[^a-z0-9]/gi, \"\"));\r\n              const fieldModelName = this.data.Name + childFieldName;\r\n              const zModels = zudfScope.zModel;\r\n\r\n              const childComponent = ZComponentHelper.getComponent(this.group, 'text_' + fieldModelName);\r\n              if (childComponent['data']['ReadOnly'] && !fieldValue) {\r\n                // clear child field if only readonly is true.\r\n                zModels[fieldModelName] = !fieldValue ? null : selectedDataOption ? selectedDataOption[childFieldName] : null;\r\n              }\r\n              else {\r\n                if (selectedDataOption) {\r\n                  zModels[fieldModelName] = selectedDataOption[childFieldName];\r\n                }\r\n              }\r\n              fg.patchValue(zModels);\r\n            });\r\n          }\r\n        }\r\n      }),\r\n      switchMap(res => {\r\n        const eventName = 'triggerValidation';\r\n        if (this.group) {\r\n          if (this.group[eventName]) {\r\n            return this.group[eventName](this.group, event, fieldValue);\r\n          }\r\n        }\r\n        return of({});\r\n      })\r\n    ).subscribe(res => {\r\n      this.triggerEvent(\"inputfield-onChange\", this.data.OnChange, event, fieldValue);\r\n    });\r\n  }\r\n\r\n  private cascadingHandling(zudfScope: any, fieldName: any, fieldValue?: any) {\r\n    const linkedComponentScope = zudfScope.linkedComponent;\r\n    // #1 check is the onchange component linked to other component.\r\n    // #2 if linked to other component(lets call it child component),\r\n    //    base on the linkedComponentScope value, find the child component.\r\n    // #3 keep the original SelectOptions in the component.\r\n    // #4 clear the child zmodel and filter the child component options.\r\n    // #5 auto select default zmodel if only have 1 option and is required.\r\n    // #6 handle child nested linked component.\r\n    linkedComponentScope.forEach(item => {\r\n      const dataValueSegments = fieldName.split('_');\r\n      const linkedComponentSegments = item.linkedComponent.split('_');\r\n      let isLinkedComponent = false;\r\n\r\n      // check is it linkedcomponent\r\n      if (linkedComponentSegments.length > 1 && dataValueSegments.length > 3) {\r\n        const lastTwoSegments = dataValueSegments.slice(-2).join('_');\r\n        if (linkedComponentSegments.join('_') === lastTwoSegments) {\r\n          isLinkedComponent = true;\r\n        }\r\n      }\r\n      else if (linkedComponentSegments.length === 1) {\r\n        const lastSegment = dataValueSegments[dataValueSegments.length - 1];\r\n        if (linkedComponentSegments[0] === lastSegment) {\r\n          isLinkedComponent = true;\r\n        }\r\n      }\r\n\r\n      if (isLinkedComponent) {\r\n        const childComponent = ZComponentHelper.getComponentByValue(this.group, item.value);\r\n        const originalSelectOptions = childComponent.data['originalSelectOptions'] ?? Object.assign([], childComponent.data.SelectOptions);\r\n        const filteredSelectionOptions = originalSelectOptions.filter(option => option.parentExpression == fieldValue);\r\n\r\n        //childComponent.clearData(); //unable to use clearData. not handled for zudf type\r\n        // manuall patch the component formcontrol value\r\n        const zudfForm = zudfScope.form as FormGroup;\r\n        const componentFormControl = zudfForm.controls[item.value] as FormControl;\r\n        zudfScope.zModel[item.value] = null;\r\n        componentFormControl.patchValue(zudfScope.zModel[item.value]);\r\n\r\n        childComponent.data['originalSelectOptions'] = originalSelectOptions;\r\n        childComponent.setSelectOption(filteredSelectionOptions);\r\n\r\n        // set dropdown selected value if only 1 option.\r\n        const childComponentType = childComponent.data.Type;\r\n        if (filteredSelectionOptions.length === 1 && childComponent.data.IsRequired && (childComponentType === 'zuiselectmultiple' || childComponentType === 'zselectmultiple')) {\r\n          zudfScope.zModel[item.value] = filteredSelectionOptions[0][childComponent.itemValueField];\r\n          componentFormControl.patchValue(zudfScope.zModel[item.value]);\r\n        }\r\n\r\n        // loop children incase of nested child.\r\n        const childComponentValueSegments = childComponent.data.Value.split('_');\r\n        this.cascadingHandling(zudfScope, childComponentValueSegments[childComponentValueSegments.length - 1], zudfScope.zModel[item.value]);\r\n      }\r\n    })\r\n  }\r\n\r\n  protected focusOnDefault(focusFunction: any) {\r\n    if (this.data.IsFocus) {\r\n      let counter = 0;\r\n      let isFocused = false;\r\n      interval(500).pipe(\r\n        takeWhile(x => counter < 5 && !isFocused),\r\n        tap(() => {\r\n          isFocused = focusFunction();\r\n          counter++;\r\n        })\r\n      ).subscribe();\r\n    }\r\n  }\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, ViewChild } from \"@angular/core\";\r\nimport { SwitchComponent } from \"@progress/kendo-angular-inputs\";\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/ \r\n\r\n/********** Component & Service **********/\r\nimport { InputFieldBase } from \"../components/inputfieldbase.component\";\r\nimport { ZComponentService } from \"../services/zcomponent.service\";\r\nimport { ZComponent } from \"mmhglobal-zcore\";\r\n\r\n\r\n@Component({\r\n  selector: \"app-zcheckbox\",\r\n  templateUrl: \"./zcheckbox.component.html\",\r\n  styleUrls: [\"./zcheckbox.component.scss\"],\r\n})\r\n\r\nexport class ZcheckboxComponent extends InputFieldBase implements ZComponent, OnInit {\r\n  @ViewChild(\"checkbox\") checkbox: SwitchComponent;\r\n\r\n  constructor(\r\n    public componentService: ZComponentService\r\n  ) {\r\n    super(componentService);\r\n  }\r\n\r\n  ngOnInit() {\r\n    super.setupInnerField();\r\n    super.focusOnDefault(this.focus.bind(this));\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    this.componentService.decrementComponentCounterForField(this.data);\r\n  }\r\n\r\n  public focus() {\r\n    if (this.checkbox) {\r\n      this.checkbox.focus();\r\n      return true;\r\n    }\r\n    return false;\r\n  }\r\n}\r\n","<div [formGroup]=\"form\" class=\"zcheckbox-container e1tag-style\" [style]=\"componentProperties.style.style\">\r\n  <ion-checkbox *ngIf=\"!data.UseKendoSwitch && isMobileScreen()\" [id]=\"data.Name\" [formControlName]=\"data.Value\"\r\n                color=\"primary\"\r\n                [attr.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n                (ionChange)=\"onChange($event, $event.detail.checked)\" [style]=\"componentProperties.style.style1\"\r\n                class=\"e1tag-style1\"></ion-checkbox>\r\n  <!--Need to upgrade to latest kendo lib for the checkbox disabled to work-->\r\n  <div class=\"temp-for-k-checkbox\" *ngIf=\"!data.UseKendoSwitch && !isMobileScreen()\">\r\n    <input *ngIf=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n           type=\"checkbox\" kendoCheckBox [id]=\"data.Name\" [formControlName]=\"data.Value\" disabled\r\n           (change)=\"onChange(null, $event.target.checked)\" [style]=\"componentProperties.style.style1\"\r\n           class=\"e1tag-style1\" />\r\n    <input *ngIf=\"!(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n           type=\"checkbox\" kendoCheckBox [id]=\"data.Name\" [formControlName]=\"data.Value\"\r\n           (change)=\"onChange(null, $event.target.checked)\" [style]=\"componentProperties.style.style1\"\r\n           class=\"e1tag-style1\" />\r\n  </div>\r\n  <kendo-switch *ngIf=\"data.UseKendoSwitch \" [id]=\"data.Name\" [formControlName]=\"data.Value\"\r\n                [size]=\"data.Size ? data.Size : 'small'\"\r\n                [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n                (valueChange)=\"onChange(null, $event)\" [style]=\"componentProperties.style.style1\" class=\"e1tag-style1\" #checkbox>\r\n  </kendo-switch>\r\n</div>\r\n","/********** Angular **********/\r\nimport { Component, OnInit, ViewChild } from \"@angular/core\";\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { tap } from \"rxjs/operators\";\r\n\r\n/********** Component & Service **********/\r\nimport { InputFieldBase } from \"../components/inputfieldbase.component\";\r\nimport { ZComponentService } from \"../services/zcomponent.service\";\r\nimport { ZComponent, ZComponentHelper, ZComponentOutputEvent, FontAweSomeService } from 'mmhglobal-zcore';\r\nimport { ChipListComponent } from \"@progress/kendo-angular-buttons\";\r\n\r\n\r\n@Component({\r\n  selector: 'app-zchip',\r\n  templateUrl: './zchip.component.html',\r\n  styleUrls: ['./zchip.component.scss'],\r\n})\r\n\r\nexport class ZChipComponent extends InputFieldBase implements ZComponent, OnInit {\r\n  @ViewChild(ChipListComponent) public chipList: ChipListComponent;\r\n  public dataSource;\r\n\r\n  constructor(\r\n    public componentService: ZComponentService,\r\n    public fontAweSomeService: FontAweSomeService\r\n  ) {\r\n    super(componentService);\r\n  }\r\n\r\n  ngOnInit() {\r\n    super.initComponent().pipe(\r\n      tap(() => {\r\n        this.setupDataSource();\r\n        if (this.dataSource && this.dataSource.length > 0) {\r\n          this.setupDataSourceByzModel();\r\n        }\r\n      })\r\n    ).subscribe();\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    this.componentService.decrementComponentCounterForField(this.data);\r\n  }\r\n\r\n  public setupDataSource() {\r\n    if (!this.data.DataSource) {\r\n      console.error(\"No data source found for zchip\");\r\n      return;\r\n    }\r\n\r\n    this.dataSource = this.data.DataSource;\r\n    if (typeof this.data.DataSource == 'string' && this.data.DataSource.startsWith('group.')) {\r\n      this.dataSource = ZComponentHelper.getGroupValue(this.data.DataSource, this.group);\r\n    }\r\n  }\r\n\r\n  private setupDataSourceByzModel() {\r\n    const modelData = this.group.zModel[this.data.Value];\r\n    if (!ZComponentHelper.isNullUndefinedEmpty(modelData)) {\r\n      const modelValueKeyList = modelData.map(x => x.Label);\r\n\r\n      for (const item of this.dataSource) {\r\n        item.Selected = modelValueKeyList.includes(item.Label);\r\n      }\r\n    }\r\n    else {\r\n      this.dataSource.forEach(x => x.Selected = false);\r\n    }\r\n  }\r\n\r\n  public setData(data: any) {\r\n    this.setupDataSourceByzModel();\r\n    this.dataSource = [...this.dataSource];\r\n\r\n    // Need to set in this way as the chips are QueryList\r\n    if (this.chipList && this.chipList.chips && this.chipList.chips.length > 0) {\r\n      let index = 0;\r\n      for (const chip of this.chipList.chips) {\r\n        chip.selected = !!this.dataSource[index]?.Selected || false;\r\n        index++;\r\n      }\r\n    }\r\n\r\n    this.setupDataSourceForIconChange();\r\n  }\r\n\r\n  private setupDataSourceForIconChange() {\r\n    if (this.data['ChangeIconUponSelected']) {\r\n      if (Array.isArray(this.dataSource)) {\r\n        for (const x of this.dataSource) {\r\n          x._Icon = x.Icon;\r\n          x.Icon = !!x.Selected ? x.SelectedIcon : x._Icon;\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n  //#region Events\r\n  public chipListChangeSelection(selectedChipIndexes: any): void {\r\n    const selectedChips = this.dataSource.filter((x, i) => selectedChipIndexes.includes(i));\r\n    if (this.data['ChangeIconUponSelected']) {\r\n      for (const chip of selectedChips) {\r\n        chip.Icon = chip.SelectedIcon;\r\n      }\r\n\r\n      const notSelectedChips = this.dataSource.filter((x, i) => !selectedChipIndexes.includes(i));\r\n      for (const chip of notSelectedChips) {\r\n        chip.Icon = this.dataSource.find(x => x.Label === chip.Label)._Icon;\r\n      }\r\n    }\r\n\r\n    super.onChange(null, selectedChips);\r\n  }\r\n\r\n  public mouseover(event: any, chip: any) {\r\n    if (this.data.OnHover) {\r\n      this.group.subject.next({\r\n        type: \"onHover\",\r\n        target: this.data.OnHover,\r\n        data: { value: this.dataSource, selectedItem: chip, field: this.data }\r\n      } as ZComponentOutputEvent);\r\n    }\r\n  }\r\n\r\n  public onRemove(chip: any): void {\r\n    const index = this.dataSource.findIndex((c) => c.Label === chip.Label);\r\n    this.dataSource.splice(index, 1);\r\n  }\r\n  //#endregion\r\n}\r\n","<div [formGroup]=\"form\" class=\"e1tag-style\"\r\n  *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\"\r\n  [ngClass]=\"getClass(form, data)\" [style]=\"componentProperties.style.style\">\r\n  <div kendoTooltip class=\"e1tag-style1\" [style]=\"componentProperties.style.style1\">\r\n    <kendo-chip-list [selection]=\"data.Multiple ? 'multiple' : 'single'\"\r\n      (selectedChange)=\"chipListChangeSelection($event)\" [style]=\"componentProperties.style.style2\"\r\n      class=\"e1tag-style2\">\r\n      <kendo-chip *ngFor=\"let chip of dataSource\" [selected]=\"chip.Selected\" [ngClass]=\"chip.Class\"\r\n        [removable]=\"chip.Removable\" (remove)=\"onRemove(chip)\"\r\n        (mouseover)=\"mouseover($event, chip)\" (contentClick)=\"onItemClick($event, chip)\"\r\n        [style]=\"componentProperties.style.style3\" class=\"e1tag-style3\">\r\n        <div class=\"e1-chip-content-container e1tag-style4\" [style]=\"componentProperties.style.style4\">\r\n          <div *ngIf=\"chip.Label\" [innerHTML]=\"chip.Label | htmlSanitize\" [style]=\"componentProperties.style.style5\"\r\n            class=\"e1tag-style5\"></div>\r\n          <!-- <div *ngIf=\"chip.Label\" [style]=\"componentProperties.style.style5\" class=\"e1tag-style5\">{{chip.Label}}</div> -->\r\n          <fa-icon *ngIf=\"chip.Icon\" [icon]=\"getFontAwesome(chip.Icon, fontAweSomeService)\"\r\n            [style]=\"componentProperties.style.style6\" class=\"e1tag-style6\"></fa-icon>\r\n        </div>\r\n      </kendo-chip>\r\n    </kendo-chip-list>\r\n  </div>\r\n</div>\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input, ViewChild, OnDestroy } from \"@angular/core\";\r\nimport { FormGroup, Validators } from \"@angular/forms\";\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { of, Subscription } from \"rxjs\";\r\nimport { delay } from \"rxjs/operators\";\r\nimport { AceEditorComponent } from \"ng2-ace-editor\";\r\nimport \"brace\";\r\nimport \"brace/theme/eclipse\";\r\nimport \"brace/mode/json\";\r\nimport \"brace/mode/javascript\";\r\nimport \"brace/mode/html\";\r\n// import { EditorComponent } from 'ngx-monaco-editor';\r\n// import { EditorOptions } from \"ngx-monaco-editor\";\r\n\r\n/********** Component & Service **********/\r\nimport { ZComponentService } from \"../services/zcomponent.service\";\r\nimport {\r\n  ZComponent, ZComponentHelper, ZComponentOutputEvent,\r\n  ZField, ZGroup, ZComponentProperties\r\n} from \"mmhglobal-zcore\";\r\n\r\n\r\n@Component({\r\n  selector: \"app-zcodeeditor\",\r\n  templateUrl: \"./zcodeeditor.component.html\",\r\n  styleUrls: [\"./zcodeeditor.component.scss\"]\r\n})\r\n\r\nexport class ZcodeeditorComponent implements ZComponent, OnInit, OnDestroy {\r\n  @Input() data: ZField;\r\n  @Input() group: ZGroup;\r\n  @Input() form: FormGroup;\r\n  @ViewChild(\"editor\") editor: AceEditorComponent;\r\n\r\n  code: string | string[] = \"\";\r\n  theme = \"eclipse\";\r\n  mode = \"javascript\";\r\n  subscription: Subscription;\r\n  componentProperties = new ZComponentProperties();\r\n  \r\n  private widthReduce: number;\r\n  private heightReduce: number;\r\n\r\n  constructor(\r\n  ) {\r\n  }\r\n\r\n  ngOnInit() {\r\n    ZComponentHelper.setComponentProperties(this);\r\n    ZComponentHelper.registerComponent(this);\r\n\r\n    this.widthReduce = this.data.WidthReduce || 60;\r\n    this.heightReduce = this.data.HeightReduce || 560;\r\n\r\n    // const codeValue = this.getValue();\r\n    // if (codeValue) {\r\n    //   this.code = codeValue;\r\n    // }\r\n    if (this.data.Type === \"textareajson\") {\r\n      this.mode = \"json\";\r\n    } else if (this.data.Type === \"textareahtml\") {\r\n      this.mode = \"html\";\r\n    }\r\n    console.log(\"zcodeeditor OnInit\");\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    if (this.subscription) {\r\n      this.subscription.unsubscribe();\r\n    }\r\n  }\r\n\r\n  // https://github.com/fxmontigny/ng2-ace-editor/blob/master/sample/src/app/app.component.ts\r\n  // ngAfterViewInit() {\r\n  //   const Range = ace.require('ace/range')['Range'];\r\n  //   this.editor\r\n  //     .getEditor()\r\n  //     .session.addMarker(new Range(0, 0, 2, 1), 'myMarker', 'fullLine');\r\n\r\n  //   this.editor.getEditor().session.setOption('useWorker', true);\r\n  // }\r\n\r\n  getValue() {\r\n    let v;\r\n    if (this.data.Value.indexOf('.') !== -1) {\r\n      v = this.data.Value;\r\n    } else {\r\n      v = \"group.zModel.\" + this.data.Value;\r\n    }\r\n    const evalValue = ZComponentHelper.getEvalValue.call(this, v);\r\n    if (typeof evalValue === 'function') {\r\n      const nextValue = evalValue();\r\n      if (nextValue) {\r\n        try {\r\n          const evalNextValue = ZComponentHelper.getEvalValue.call(this, nextValue, true);\r\n          if (typeof evalNextValue === 'boolean') {\r\n            return evalNextValue.toString();\r\n          }\r\n          if (evalNextValue === undefined) {\r\n            return 'undefined';\r\n          }\r\n          if (evalNextValue === null) {\r\n            return 'null';\r\n          }\r\n          return evalNextValue;\r\n        } catch {\r\n          return;\r\n        }\r\n      } else {\r\n        return;\r\n      }\r\n    } else {\r\n      return evalValue;\r\n    }\r\n    // if (this.data.Type === \"textareajson\") {\r\n    //   if (typeof evalValue === \"string\") {\r\n    //     const jsonValue = JSON.parse(evalValue);\r\n    //     return JSON.stringify(jsonValue, null, 2);\r\n    //   }\r\n    //   if (typeof evalValue === \"object\" || Array.isArray(evalValue)) {\r\n    //     return JSON.stringify(evalValue, null, 2);\r\n    //   }\r\n    // }\r\n    // if (typeof evalValue === 'string') {\r\n    //   return evalValue;\r\n    // }\r\n    // // debugger;\r\n    // console.warn(\r\n    //   \"zcodeeditor - Invalid field.Value (\" + this.data.Value + \") setting \",\r\n    //   evalValue\r\n    // );\r\n    // return \"\";\r\n  }\r\n\r\n  getEditorStyle() {\r\n    // debugger;\r\n    // return { \"height.px\": 500, \"width.px\": window.innerWidth - 60 }; // \"width.px\": this.innerWidth - 25\r\n    return {\r\n      \"height.px\": this.getEditorHeight(),\r\n     \"width.px\": window.innerWidth - this.widthReduce\r\n    };\r\n  }\r\n\r\n  private getEditorHeight() {\r\n    const h = window.innerHeight - this.heightReduce;\r\n    return (h < 180) ? 180 : h;\r\n  }\r\n\r\n  onTextChange(newValue: any) {\r\n    if (this.subscription) {\r\n      this.subscription.unsubscribe();\r\n    }\r\n    // console.log('onTextChange: ', newValue);\r\n    this.subscription = of([])\r\n      .pipe(delay(500))\r\n      .subscribe(() => {\r\n        ZComponentHelper.setModelValue(this.data.Value, newValue, this.group, true);\r\n        this.group.subject.next({\r\n          type: \"zcodeeditor-TextChanged\",\r\n          target: this.data.OnChange,\r\n          data: newValue\r\n        } as ZComponentOutputEvent);\r\n      });\r\n  }\r\n\r\n  public setEnable = (status: boolean) => {\r\n    this.componentProperties.isReadOnly = !status;\r\n  }\r\n\r\n  public setVisible = (status: boolean) => {\r\n    this.componentProperties.isVisible = status;\r\n    this.data.Visible = status;\r\n  }\r\n\r\n  public setRequire = (status: boolean) => {\r\n    this.componentProperties.isRequired = status;\r\n    ZComponentHelper.changeValidator(status, this.group, this.data.Value, this.componentProperties, Validators.required);\r\n  }\r\n}\r\n","<div *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\">\r\n  <ion-label *ngIf=\"data.ShowLabel\" position=\"stacked\" style=\"margin-bottom: 10px;\">\r\n    {{data.Label}} <ion-text *ngIf=\"(!!componentProperties.isRequiredField ? group[componentProperties.isRequiredField] : componentProperties.isRequired)\" color=\"danger\">*</ion-text>\r\n  </ion-label>\r\n  <div>\r\n  <!-- <div ace-editor\r\n       [(text)]=\"text\"\r\n       ></div> -->\r\n  <ace-editor [readOnly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\" #editor [ngStyle]=\"getEditorStyle()\" (textChanged)=\"onTextChange($event)\" [text]=\"getValue() | editorfilter\" [theme]=\"theme\" [mode]=\"mode\"></ace-editor>\r\n\r\n    <!-- <ngx-monaco-editor #editor [options]=\"editorOptions\" [(ngModel)]=\"code\" (onInit)=\"onInit($event)\"></ngx-monaco-editor> -->\r\n  </div>\r\n\r\n</div>","/********** Angular **********/\r\nimport { Component, OnInit, Input, ViewChild } from '@angular/core';\r\nimport { FormGroup, Validators } from '@angular/forms';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { DateRangeService } from '@progress/kendo-angular-dateinputs';\r\n\r\n/********** Component & Service **********/\r\nimport { \r\n  ZField, ZGroup, ZComponentProperties,\r\n  ZComponent, ZComponentHelper \r\n} from 'mmhglobal-zcore';\r\n\r\n\r\n@Component({\r\n  selector: 'app-zdaterange',\r\n  templateUrl: './zdaterange.component.html',\r\n  styleUrls: ['./zdaterange.component.scss'],\r\n})\r\n\r\nexport class ZdaterangeComponent implements ZComponent, OnInit {\r\n  @Input() data: ZField;\r\n  @Input() group: ZGroup;\r\n  @Input() form: FormGroup;\r\n  @ViewChild('zdaterange') public zdaterange: DateRangeService;\r\n  // @ViewChild('endDateInput', { static: true }) public endInput: ElementRef;\r\n\r\n  range: { start: Date, end: Date} = { start: null, end: null};\r\n  componentProperties = new ZComponentProperties();\r\n\r\n  constructor(\r\n  ) {\r\n  }\r\n\r\n  ngOnInit() {\r\n    ZComponentHelper.setComponentProperties(this);\r\n    ZComponentHelper.registerComponent(this);\r\n\r\n    const rangeDateArray = this.data.Value.split(',');\r\n    const fromDateString = rangeDateArray[0].trim();\r\n    const toDateString = rangeDateArray[1].trim();\r\n  \r\n    const fromDate = ZComponentHelper.getGroupEvalValue.call(this, fromDateString);\r\n    const toDate = ZComponentHelper.getGroupEvalValue.call(this, toDateString);\r\n    // this.range = {\r\n    //   start: fromDate,\r\n    //   end: toDate\r\n    // }\r\n\r\n    const options = ZComponentHelper.getGroupEvalValue.call(this, this.data.Options);\r\n    if (options) {\r\n      if (options.min && options.max) {\r\n        this.setNewRange(new Date(options.min), new Date(options.max));\r\n      }\r\n    }\r\n  }\r\n\r\n  ngAfterViewInit() { \r\n  }\r\n\r\n  setNewRange(min: Date, max: Date) {\r\n    this.zdaterange.setRange({\r\n      start: min,\r\n      end: max\r\n    });\r\n  }\r\n\r\n  public setEnable = (status: boolean) => {\r\n    this.componentProperties.isReadOnly = !status;\r\n  }\r\n\r\n  public setVisible = (status: boolean) => {\r\n    this.componentProperties.isVisible = status;\r\n    this.data.Visible = status;\r\n  }\r\n\r\n  public setRequire = (status: boolean) => {\r\n    this.componentProperties.isRequired = status;\r\n    ZComponentHelper.changeValidator(status, this.group, this.data.Value, this.componentProperties, Validators.required);\r\n  }\r\n\r\n}\r\n","<ion-item [formGroup]=\"form\" *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\">\r\n  <ion-label [attr.for]=\"data.Value\" *ngIf=\"data.ShowLabel === undefined || data.ShowLabel\" position=\"stacked\">\r\n    {{data.Label}} <ion-text *ngIf=\"(!!componentProperties.isRequiredField ? group[componentProperties.isRequiredField] : componentProperties.isRequired)\" color=\"danger\">*</ion-text>\r\n  </ion-label>\r\n  <div class=\"ion-row\" style=\"justify-content: space-between; width: 100%\">\r\n    <span style=\"flex: 1;\">\r\n      <kendo-daterange #zdaterange class=\"ion-row\">\r\n        <!-- <label style=\"flex: 1;\"> -->\r\n        <!-- <span class=\"label\">Start</span> -->\r\n        <kendo-dateinput style=\"flex: 1;\" kendoDateRangeStartInput [(value)]=\"range.start\"\r\n        class=\"notmobile-input-field\"\r\n        [attr.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"></kendo-dateinput>\r\n        <!-- </label> -->\r\n        <!-- <label style=\"flex: 1;\"> -->\r\n        <!-- <span class=\"label\">End</span> -->\r\n        <!-- <kendo-dateinput style=\"flex: 1;\" kendoDateRangeEndInput [(value)]=\"range.end\"></kendo-dateinput> -->\r\n        <!-- </label> -->\r\n\r\n        <kendo-daterange-popup [animate]=\"false\"></kendo-daterange-popup>\r\n      </kendo-daterange>\r\n    </span>\r\n    <app-uivalidationmessage [group]=\"group\" [data]=\"data\" [form]=\"form\"></app-uivalidationmessage>\r\n  </div>\r\n</ion-item>\r\n","import { Pipe, PipeTransform } from \"@angular/core\";\r\n\r\n@Pipe({\r\n  name: \"dateMinMaxIonic\",\r\n  pure: true,\r\n})\r\n\r\nexport class DateIonicMinMaxParser implements PipeTransform {\r\n\r\n  transform(value: any): any {\r\n    if (!value) {\r\n      return undefined;\r\n    }\r\n\r\n    const timeZoneOffSet_Mins = new Date().getTimezoneOffset();\r\n    const localTime = (new Date(value).getTime() - timeZoneOffSet_Mins * 60000);\r\n    return new Date(localTime).toISOString();\r\n  }\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, ViewChild } from \"@angular/core\";\r\nimport { DatePickerComponent, DateTimePickerComponent, TimePickerComponent } from \"@progress/kendo-angular-dateinputs\";\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Component & Service **********/\r\nimport { InputFieldBase } from \"../components/inputfieldbase.component\";\r\nimport { ZComponentService } from \"../services/zcomponent.service\";\r\nimport { ZComponent, ZComponentHelper } from \"mmhglobal-zcore\";\r\n\r\n\r\n@Component({\r\n  selector: \"app-zdatetime\",\r\n  templateUrl: \"./zdatetime.component.html\",\r\n  styleUrls: [\"./zdatetime.component.scss\"],\r\n})\r\n\r\nexport class ZdatetimeComponent extends InputFieldBase implements ZComponent, OnInit {\r\n  @ViewChild(\"datepicker\") datepicker: DatePickerComponent;\r\n  @ViewChild(\"timepicker\") timepicker: TimePickerComponent;\r\n  @ViewChild(\"datetimepicker\") datetimepicker: DateTimePickerComponent;\r\n\r\n  public minDate = null;\r\n  public maxDate = null;\r\n  public stepValue = null;\r\n  public disabledDates = null;\r\n\r\n  constructor(\r\n    componentService: ZComponentService\r\n  ) {\r\n    super(componentService);\r\n  }\r\n\r\n  ngOnInit() {\r\n    super.setupInnerField();\r\n    this.setMinAndMaxDateRange();\r\n    this.setStepValue();\r\n    this.setDisabledDates();\r\n    super.focusOnDefault(this.focus.bind(this));\r\n    // if (this.group.zModel[this.data.Value]) {\r\n    //   this.dateValue = new Date(this.group.zModel[this.data.Value]);\r\n    // }\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    this.componentService.decrementComponentCounterForField(this.data);\r\n  }\r\n\r\n  getDateValue() {\r\n    const value = this.form.controls[this.data.Value].value;\r\n    if (value) {\r\n      return new Date(value);\r\n    } else {\r\n      return null;\r\n    }\r\n  }\r\n\r\n  public onChange(value: any): void {\r\n    const formControl = this.form.controls[this.data.Value];\r\n\r\n    const dateValue = this.convertDateTimeValueToString(value) as Date | undefined;\r\n\r\n    if (formControl) {\r\n      formControl.setValue(dateValue);\r\n      formControl.markAsTouched();\r\n    }\r\n     \r\n    // Important: pass Date to base, not ISO string\r\n    super.onChange(null, dateValue);\r\n  }\r\n\r\n  public SetDateRange = (minDate: any, maxDate: any): any => {\r\n    console.warn(`Please change the function to camelcase 'setDateRange'. 'SetDateRange' will be deprecated soon.`);\r\n    this.setDateRange(this.minDate, this.maxDate);\r\n  }\r\n\r\n  public setDateRange = (minDate: any, maxDate: any): any => {\r\n    if (!isNaN(Date.parse(minDate))) {\r\n      this.minDate = new Date(minDate);\r\n    }\r\n    if (!isNaN(Date.parse(maxDate))) {\r\n      this.maxDate = new Date(maxDate);\r\n    }\r\n  }\r\n\r\n  private setMinAndMaxDateRange() {\r\n    const minDateGroupValue = ZComponentHelper.getGroupValue(this.data.MinDate as any, this.group);\r\n    const minDateValue = minDateGroupValue || this.data.MinDate;\r\n\r\n    const maxDateGroupValue = ZComponentHelper.getGroupValue(this.data.MaxDate as any, this.group);\r\n    const maxDateValue = maxDateGroupValue || this.data.MaxDate;\r\n    this.setDateRange(minDateValue, maxDateValue);\r\n  }\r\n\r\n  private setStepValue() {\r\n    const stepValueGroupValue = ZComponentHelper.getGroupValue(this.data.StepValue as any, this.group);\r\n    this.stepValue = stepValueGroupValue || this.data.StepValue;\r\n  }\r\n\r\n  private setDisabledDates() {\r\n    this.disabledDates = null;\r\n    if (this.data.DisabledDates) {\r\n      this.disabledDates = ZComponentHelper.getGroupValue(this.data.DisabledDates as any, this.group);\r\n    }\r\n  }\r\n\r\n  private convertDateTimeValueToString(value: any): Date | undefined {\r\n    if (value === undefined || value === null) {\r\n      return undefined;\r\n    }\r\n     \r\n    const inputDate = new Date(value);\r\n\r\n    // zshortdate → normalize to first day of month\r\n    if (this.data.Type === 'zshortdate') {\r\n      const monthStart = new Date(inputDate);\r\n      monthStart.setDate(1);\r\n\r\n      return monthStart;\r\n    }\r\n\r\n    // Ignore timezone: keep same local wall-clock time regardless of browser TZ\r\n    if (this.data.IsIgnoreTimeZone) {\r\n      return this.adjustForIgnoreTimeZone(inputDate);\r\n    }\r\n\r\n    // For non-time types -> date-only\r\n    if (!['zuidatetime', 'ztime', 'zuitime'].includes(this.data.Type)) {\r\n      // Assuming these helpers already return Date\r\n      const dateOnly = this.parseAnyValueToDateOnly(inputDate);\r\n      return dateOnly;\r\n    }\r\n\r\n    // For datetime/time types -> full datetime\r\n    const dateTime = this.parseAnyValueToDate(inputDate);\r\n    return dateTime;\r\n  }\r\n\r\n  /**\r\n   * Adjusts a Date so that its wall-clock time stays the same\r\n   * when ignoring the browser timezone.\r\n   */\r\n  private adjustForIgnoreTimeZone(date: Date): Date {\r\n    const adjustedDate = new Date(date);\r\n    const timezoneOffsetMinutes = adjustedDate.getTimezoneOffset();\r\n    adjustedDate.setMinutes(adjustedDate.getMinutes() - timezoneOffsetMinutes);\r\n    return adjustedDate;\r\n  }\r\n\r\n  private parseAnyValueToDate(value): Date {\r\n    return new Date(value instanceof Date ? value : new Date(value));\r\n  }\r\n\r\n  private parseAnyValueToDateOnly(value): Date {\r\n    return new Date(this.parseAnyValueToDate(value).toLocaleDateString('en-US'));\r\n  }\r\n\r\n  public focus() {\r\n    if (this.datepicker) {\r\n      this.datepicker.focus();\r\n      return true;\r\n    }\r\n    if (this.timepicker) {\r\n      this.timepicker.focus();\r\n      return true;\r\n    }\r\n    if (this.datetimepicker) {\r\n      this.datetimepicker.focus();\r\n      return true;\r\n    }\r\n    return false;\r\n  }\r\n}\r\n","<div class=\"zdate-container e1tag-style\" [style]=\"componentProperties.style.style\">\r\n\r\n  <ion-datetime *ngIf=\"isMobileScreen()\"\r\n                [id]=\"data.Value\"\r\n                [formControlName]=\"data.Value\" (ionChange)=\"onChange($event.detail.value)\"\r\n                [min]=\"minDate | dateMinMaxIonic\" [max]=\"maxDate | dateMinMaxIonic\"\r\n                [placeholder]=\"data.PlaceHolder\" [displayFormat]=\"data | dateFormatIonic\" [pickerFormat]=\"data | dateFormatIonic\"\r\n                style=\"padding: 8px 0px;\" [style]=\"componentProperties.style.style1\" class=\"e1tag-style1\"\r\n                [required]=\"(!!componentProperties.isRequiredField ? group[componentProperties.isRequiredField] : componentProperties.isRequired)\"\r\n                [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n                [class.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\">\r\n  </ion-datetime>\r\n  <div class=\"dateTimeDesktopContainer\" *ngIf=\"!isMobileScreen()\" [ngSwitch]=\"data.Type\">\r\n    <kendo-datepicker *ngSwitchCase=\"'zshortdate'\"\r\n                      [id]=\"data.Value\"\r\n                      [value]=\"form.get(data.Value).value | dateParser : data\" (valueChange)=\"onChange($event)\"\r\n                      [min]=\"minDate\" [max]=\"maxDate\" [steps]=\"stepValue\" [disabledDates]=\"disabledDates\"\r\n                      [placeholder]=\"data.PlaceHolder\" [format]=\"data | dateFormatKendo\"\r\n                      [style]=\"componentProperties.style.style1\" class=\"input-field e1tag-style1\"\r\n                      [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n                      [class.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\" [activeView]=\"'year'\"\r\n                      [bottomView]=\"'year'\" #datepicker>\r\n    </kendo-datepicker>\r\n    <kendo-datetimepicker *ngSwitchCase=\"'zuidatetime'\"\r\n                          [id]=\"data.Value\"\r\n                          [value]=\"form.get(data.Value).value | dateParser : data\" (valueChange)=\"onChange($event)\"\r\n                          [min]=\"minDate\" [max]=\"maxDate\" [steps]=\"stepValue\" [disabledDates]=\"disabledDates\"\r\n                          [placeholder]=\"data.PlaceHolder\" [format]=\"data | dateFormatKendo\"\r\n                          [style]=\"componentProperties.style.style1\" class=\"input-field e1tag-style1\"\r\n                          [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n                          [class.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n                          calendarType=\"classic\" #datetimepicker>\r\n    </kendo-datetimepicker>\r\n    <kendo-timepicker *ngSwitchCase=\"['ztime','zuitime'].includes(data.Type) ? data.Type : ''\"\r\n                      [id]=\"data.Value\"\r\n                      [value]=\"form.get(data.Value).value | dateParser : data\" (valueChange)=\"onChange($event)\"\r\n                      [min]=\"minDate\" [max]=\"maxDate\" [steps]=\"stepValue\"\r\n                      [placeholder]=\"data.PlaceHolder\" [format]=\"data | dateFormatKendo\"\r\n                      [style]=\"componentProperties.style.style1\" class=\"input-field e1tag-style1\"\r\n                      [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n                      [class.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n                      #timepicker>\r\n    </kendo-timepicker>\r\n    <kendo-datepicker *ngSwitchDefault\r\n                      [id]=\"data.Value\"\r\n                      [value]=\"form.get(data.Value).value | dateParser : data\" (valueChange)=\"onChange($event)\"\r\n                      [min]=\"minDate\" [max]=\"maxDate\" [steps]=\"stepValue\" [disabledDates]=\"disabledDates\"\r\n                      [placeholder]=\"data.PlaceHolder\" [format]=\"data | dateFormatKendo\"\r\n                      [style]=\"componentProperties.style.style1\" class=\"input-field e1tag-style1\"\r\n                      [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n                      [class.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n                      #datepicker>\r\n    </kendo-datepicker>\r\n  </div>\r\n</div>\r\n\r\n\r\n","/********** Angular **********/\r\nimport { Component, OnInit } from \"@angular/core\";\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\n\r\n/********** Component & Service **********/\r\nimport { FieldBase } from \"../components/fieldbase.component\";\r\nimport { ZComponentService } from \"../services/zcomponent.service\";\r\nimport { ZComponent, ZComponentHelper, ZField } from 'mmhglobal-zcore';\r\n\r\n\r\n@Component({\r\n  selector: 'app-zgauge',\r\n  templateUrl: './zgauge.component.html',\r\n  styleUrls: ['./zgauge.component.scss'],\r\n})\r\n\r\nexport class ZgaugeComponent extends FieldBase implements ZComponent, OnInit {\r\n  isLoading = true;\r\n  private value = 0;\r\n  private title = \"\";\r\n  private color = [{ color: \"#0175c7\" }];\r\n  private majorTicks = { visible: true, color: '#0000ff' };\r\n  private minorTicks = { visible: true, color: '#0000ff' };\r\n  private startAngle = 0;\r\n  private endAngle = 180;\r\n  private minValue = 0;\r\n  private maxValue = 200;\r\n\r\n  options = {\r\n    value: this.value,\r\n    title: this.title,\r\n    chartInnerText1: '',\r\n    chartInnerText2: '',\r\n    scaleMax: 50,\r\n    colors: this.color,\r\n    transitions: false,\r\n    majorTicks: { visible: true, color: '#0000ff' },\r\n    minorTicks: { visible: true, color: '#0000ff' },\r\n    minValue:0,\r\n    maxValue: 200,\r\n    reverse: false,\r\n    startAngle: 0,\r\n    endAngle: 180,\r\n    rangePlaceholderColor: '#e6e5e5',\r\n    labelsColor: '#0000ff',\r\n    rangeColor: '#ff6358',\r\n    rangeLineCap: 'round',\r\n    showLabels: true,\r\n    rangeSize: 10,\r\n    labelStyle: \"text-align: center; font-size: 18px;\",\r\n    arcgaugeStyle: \"margin-top:50px;width:90% ;height:100%; min-width: 330px;\",\r\n  };\r\n\r\n  constructor(\r\n    public componentService: ZComponentService\r\n  ) {\r\n    super(componentService);\r\n  }\r\n\r\n  ngOnInit() {\r\n    this.isLoading = true;\r\n    this.initComponent();\r\n\r\n    if (this.data.Options) {\r\n      const optionType = typeof (this.data.Options);\r\n      if (optionType === 'object') {\r\n        Object.assign(this.options, this.data.Options);\r\n      } else if (optionType === 'string') {\r\n        const optionValue = ZComponentHelper.getGroupEvalValue.call(this, this.data.Options);\r\n        if (typeof (optionValue) === 'object') {\r\n          Object.assign(this.options, optionValue);\r\n        }\r\n      }\r\n    }\r\n\r\n    this.getFieldDeclarationForSetup(this.data, this.options);\r\n    this.isLoading = false;\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    this.componentService.decrementComponentCounterForField(this.data);\r\n  }\r\n\r\n  public getGaugeStyle() {\r\n    return this.componentProperties.style.style3 ? this.componentService.convertStyleStringToObject(this.componentProperties.style.style3) : { 'white-space': 'initial' }\r\n  }\r\n\r\n  private getFieldDeclarationForSetup(field: ZField, options: any) {\r\n    if (field.Value.startsWith('group.')) {\r\n      options.value = ZComponentHelper.getGroupEvalValue.call(this, field.Value) ?? options.value;\r\n    }\r\n    else {\r\n      options.value = this.group.zModel[field.Value] ?? options.value;\r\n      options.value = parseInt(options.value);\r\n    }\r\n    options.title = ZComponentHelper.getGroupEvalValue.call(this, field.Title) || options.title;\r\n    options.minValue = ZComponentHelper.getGroupEvalValue.call(this, field.MinValue) || options.minValue || 0;\r\n    options.maxValue = ZComponentHelper.getGroupEvalValue.call(this, field.MaxValue) || options.maxValue || 100;\r\n    options.colors = ZComponentHelper.getGroupEvalValue.call(this, field.Color) || options.colors;\r\n    options.transitions = field.Transitions || options.transitions;\r\n    options.majorTicks = ZComponentHelper.getGroupEvalValue.call(this, field.MajorTicks) || options.majorTicks;\r\n    options.minorTicks = ZComponentHelper.getGroupEvalValue.call(this, field.MinorTicks) || options.minorTicks;\r\n    options.showLabels = field.ShowLabels != undefined ? field.ShowLabels : options.showLabels;\r\n    options.style = field.Style || options.style;\r\n    options.reverse = field.Reverse || options.reverse;\r\n    options.startAngle = field.StartAngle || options.startAngle || 0;\r\n    options.endAngle = field.EndAngle || options.endAngle || 180;\r\n    options.rangePlaceholderColor = field.RangePlaceholderColor || options.rangePlaceholderColor;\r\n    options.rangeFrom = ZComponentHelper.getGroupEvalValue.call(this, field['RangeFrom']) || options.rangeFrom;\r\n    options.rangeTo = ZComponentHelper.getGroupEvalValue.call(this, field['RangeTo']) || options.rangeTo;\r\n    options.rangeColor = field.RangeColor || options.rangeColor;\r\n    options.rangeLineCap = field.RangeLineCap || options.rangeLineCap;\r\n    options.rangeSize = field.RangeSize || options.rangeSize;\r\n    options.GaugeAlignment = ZComponentHelper.getGroupEvalValue.call(this, field.GaugeAlignment) || options.GaugeAlignment;\r\n    options.paddingValue = options.value.toString() === 'NaN' ? options.GaugeAlignment : '0%';\r\n  }\r\n\r\n  alignment() {\r\n    const alignmentStyle = {\r\n      \"padding-right\": this.options[\"paddingValue\"]\r\n    };\r\n\r\n    return alignmentStyle;\r\n  }\r\n\r\n  public setData(gData: any) {\r\n    this.getFieldDeclarationForSetup(this.data, this.options);\r\n  }\r\n}\r\n","<div *ngIf=\"!isLoading && (!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\" [style]=\"componentProperties.style.style\">\r\n  <div id=\"marketShareContainer\" class=\"ion-row\" class=\"col-xs-12 stats-graph\" *ngIf=\"options.title\">\r\n    <h6 style=\"color: gray;\">{{ options.title }}</h6>\r\n  </div>\r\n  <div [ngStyle]='alignment()'>\r\n    <kendo-arcgauge [value]=\"options.value\" [transitions]=\"options.transitions\" [colors]=\"options.colors\" [style]=\"componentProperties.style.style1\">\r\n      <kendo-arcgauge-scale [majorTicks]=\"options.majorTicks\"\r\n                            [minorTicks]=\"options.minorTicks\"\r\n                            [reverse]=\"options.reverse\"\r\n                            [startAngle]=\"options.startAngle\"\r\n                            [endAngle]=\"options.endAngle\"\r\n                            [min]=\"options.minValue\"\r\n                            [max]=\"options.maxValue\"\r\n                            [rangePlaceholderColor]=\"options.rangePlaceholderColor\"\r\n                            [rangeSize]=\"options.rangeSize\"\r\n                            [rangeLineCap]=\"options.rangeLineCap\">\r\n        <kendo-arcgauge-scale-labels format=\"l\" [color]=\"options.labelsColor\" [visible]=\"options.showLabels\">\r\n        </kendo-arcgauge-scale-labels>\r\n      </kendo-arcgauge-scale>\r\n      <ng-template kendoArcGaugeCenterTemplate let-value=\"value\" let-color=\"color\">\r\n        <span [style.color]=\"color\" [style]=\"componentProperties.style.style2\">{{ value }}</span>\r\n      </ng-template>\r\n    </kendo-arcgauge>\r\n  </div>\r\n</div>\r\n\r\n<!--<div *ngIf=\"!isLoading && (!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\"\r\n     [style]=\"componentProperties.style.style\" class=\"e1tag-style\">\r\n  <div class=\"chart-top-title e1tag-style1\" [style]=\"componentProperties.style.style1\" *ngIf=\"options.title\">\r\n    {{options.title}}\r\n  </div>\r\n  <div [style]=\"componentProperties.style.style2\" class=\"e1tag-style2\">\r\n    <kendo-arcgauge [value]=\"options.value\" [transitions]=\"options.transitions\" [colors]=\"options.colors\"\r\n                    [style]=\"getGaugeStyle()\" class=\"e1tag-style3\">\r\n      <kendo-arcgauge-scale [majorTicks]=\"options.majorTicks\"\r\n                            [minorTicks]=\"options.minorTicks\"\r\n                            [reverse]=\"options.reverse\"\r\n                            [startAngle]=\"options.startAngle\"\r\n                            [endAngle]=\"options.endAngle\"\r\n                            [min]=\"options.minValue\"\r\n                            [max]=\"options.maxValue\"\r\n                            [rangePlaceholderColor]=\"options.rangePlaceholderColor\"\r\n                            [rangeSize]=\"options.rangeSize\"\r\n                            [rangeLineCap]=\"options.rangeLineCap\">\r\n        <kendo-arcgauge-scale-labels format=\"l\" [color]=\"options.labelsColor\" [visible]=\"options.showLabels\">\r\n        </kendo-arcgauge-scale-labels>\r\n      </kendo-arcgauge-scale>\r\n      <ng-template kendoArcGaugeCenterTemplate let-value=\"value\" let-color=\"color\">\r\n        <div *ngIf=\"options.chartInnerText1\" [style]=\"componentProperties.style.style4\" class=\"e1tag-style4\">{{ options.chartInnerText1 }}</div>\r\n        <div *ngIf=\"options.chartInnerText2\" [style]=\"componentProperties.style.style5\" class=\"e1tag-style5\">{{ options.chartInnerText2 }}</div>\r\n      </ng-template>\r\n    </kendo-arcgauge>\r\n  </div>\r\n</div>-->\r\n\r\n","import { style, animate, trigger, transition, state } from '@angular/animations';\r\n\r\nexport const hideAndShowVerticalAnimation =\r\n  trigger(\r\n    'hideAndShowAnimation',\r\n    [\r\n      transition(':enter', [\r\n        style(\r\n          { transform: 'translateY(-20%)', opacity: 0, height: 0 }\r\n        ),\r\n        animate('300ms ease-out', style(\r\n          { transform: 'translateY(0)', opacity: 1, height: 100 }\r\n        ))\r\n      ]),\r\n      transition(':leave', [\r\n        style({ transform: 'translateY(0)', opacity: 1, height: 100 }),\r\n        animate('300ms ease-in', style({ transform: 'translateY(-20%)', opacity: 0, height: 0 }))\r\n      ])\r\n    ]\r\n  );\r\n\r\nexport const rotateAnimation =\r\n  trigger(\r\n    'rotateAnimation',\r\n    [\r\n      state('default', style({\r\n        transform: 'rotate(0deg)'\r\n      })),\r\n      state('rotate', style({\r\n        transform: 'rotate(' + '{{degree}}' + 'deg)'\r\n      }), { params: { degree: 90 } }),\r\n      transition('* => *', [\r\n        animate('{{duration}}')\r\n      ], { params: { duration: '0.2s' } }),\r\n    ]\r\n  );\r\n\r\nexport const collapseAnimation =\r\n  trigger(\r\n    'collapseAnimation',\r\n    [\r\n      state('default', style({\r\n        transform: 'translateY(0)', opacity: 1, display: 'block'\r\n      })),\r\n      state('collapse', style({\r\n        transform: 'translateY(' + '{{height}}' + ')',\r\n        opacity: 0,\r\n        display: 'none'\r\n      }), { params: { height: '-10%' } }),\r\n      transition('* => collapse', [\r\n        animate('{{duration}}')\r\n      ], { params: { duration: '0.2s' } }),\r\n      transition('* => default', [\r\n        animate('{{duration}}')\r\n      ], { params: { duration: '0.2s' } })\r\n    ]\r\n  );\r\n","/********** Angular **********/\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { of } from 'rxjs';\r\nimport { concatMap, map, switchMap, tap } from 'rxjs/operators';\r\n\r\n/********** Component & Service **********/\r\nimport { ButtonFieldBase } from '../components/buttonfieldbase.component';\r\nimport { ZComponentService } from '../services/zcomponent.service';\r\nimport {\r\n  WebApiService, ResourceApiService, WorkflowService, FontAweSomeService, ComponentErrorHandlerService,\r\n  ZComponent, ZComponentHelper, ZField, TriggerFromType\r\n} from 'mmhglobal-zcore';\r\n\r\n\r\n@Component({\r\n  selector: 'app-zworkflowbuttons',\r\n  templateUrl: './zworkflowbuttons.component.html',\r\n  styleUrls: ['./zworkflowbuttons.component.scss']\r\n})\r\n\r\nexport class ZworkflowbuttonsComponent extends ButtonFieldBase implements ZComponent, OnInit {\r\n  // URL required\r\n  // eslint-disable-next-line @typescript-eslint/naming-convention,no-underscore-dangle,id-blacklist,id-match\r\n  e1wfs_wfcGetWorkflowButtonURL = this.resourceApiService.getURL(\"e1wfs_wfcGetWorkflowButtonURL\");\r\n  // eslint-disable-next-line @typescript-eslint/naming-convention,no-underscore-dangle,id-blacklist,id-match\r\n  e1wfs_wfc_getWorkflowInitialStatusURL = this.resourceApiService.getURL(\"e1wfs_wfc_getWorkflowInitialStatusURL\");\r\n  // eslint-disable-next-line @typescript-eslint/naming-convention, no-underscore-dangle, id-blacklist, id-match\r\n  e1wfs_wfc_getDocumentStatusURL = this.resourceApiService.getURL(\"e1wfs_wfc_getDocumentStatusURL\");\r\n\r\n  //domainURL = \"https://localhost:44300/\";\r\n  //e1wfs_wfcGetWorkflowButtonURL = this.domainURL + \"/api/WorkflowClients/GetWorkflowClientButtons/\";\r\n  //e1wfs_wfc_getWorkflowInitialStatusURL = this.domainURL + \"/api/WorkflowClients/GetWorkflowInitialStatus/\";\r\n  //e1wfs_wfc_getDocumentStatusURL = this.domainURL + \"/api/WorkflowClients/GetDocumentStatus/\";\r\n  dataFormFields: any = {};\r\n  isLoading = true;\r\n  isLocalHostAPI: boolean = false;\r\n\r\n  constructor(\r\n    public componentService: ZComponentService,\r\n    public fontAweSomeService: FontAweSomeService,\r\n    private webApiService: WebApiService,\r\n    private resourceApiService: ResourceApiService,\r\n    private componentErrorHandlerService: ComponentErrorHandlerService,\r\n    private workflowService: WorkflowService\r\n  ) {\r\n    super(componentService);\r\n  }\r\n\r\n  ngOnInit() {\r\n    super.initComponent().subscribe(() => {\r\n\r\n      // Check project resourceURL is it localhost\r\n      if (this.group.resourceURL) {\r\n        this.isLocalHostAPI = this.group.resourceURL.toLowerCase().includes(\"localhost\") ? true : false;\r\n      }\r\n\r\n      this.loadButton(TriggerFromType.initialPageLoad);\r\n    });\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    this.componentService.decrementComponentCounterForField(this.data);\r\n  }\r\n\r\n  public loadButton(triggerFrom?: TriggerFromType) {\r\n    this.leftBtns = [];\r\n    this.rightBtns = [];\r\n    this.items = [];\r\n\r\n    // Get WFS_DocumentId if any.\r\n    const documentId = this.group.zModel?.['WFS_DocumentId'];\r\n\r\n    // Set the documentId to the service\r\n    this.workflowService.appendWFS_DocumentsInfo(this.data.WorkflowCode, documentId);\r\n\r\n    // button count\r\n    this.group.zButtonsCount++;\r\n    this.FirstZbtn = this.group.zButtonsCount === 1;\r\n\r\n    try {\r\n      of(true).pipe(\r\n        concatMap(() => {\r\n          // retrieve the workflow button\r\n          return this.workflowService.getWorkflowButtonsField(\r\n            this.data.WorkflowCode,\r\n            this.e1wfs_wfcGetWorkflowButtonURL,\r\n            String(this.isLocalHostAPI),\r\n            triggerFrom\r\n          )\r\n        }),\r\n        tap(resultData => {\r\n          if (resultData) {\r\n            resultData.forEach((button: any) => {\r\n              if (!button.Label) {\r\n                button.Label = button.Name;\r\n              }\r\n\r\n              const label = this.getButtonLabel(button);\r\n              const attributes = JSON.parse(button.Attributes);\r\n              const isUseCustomClass = attributes.Color ? false : true;\r\n\r\n              button = this.appendToAttributeUsefulDetail(button);\r\n              const btn = {\r\n                name: button.Name,\r\n                text: label,\r\n                showLabel: button.ShowLabel ?? true,\r\n                icon: ZComponentHelper.getIcon(attributes.Icon),\r\n                visible: attributes.Visible,\r\n                color: isUseCustomClass ? '' : (attributes.Color || 'primary'),\r\n                fill: isUseCustomClass ? '' : (attributes.Fill || 'solid'),\r\n                size: attributes.Size || 'default',\r\n                class: isUseCustomClass ? `${attributes.Class} useCustomClass` : attributes.Class,\r\n                fieldAttribute: button,\r\n                iconName: attributes.Icon,\r\n                click: (y) => {\r\n                  this.buttonClick(button);\r\n                }\r\n              }\r\n\r\n              if (attributes.PositionX && attributes.PositionX === 'right') {\r\n                this.rightBtns.push(btn);\r\n              }\r\n              else {\r\n                this.leftBtns.push(btn);\r\n              }\r\n            });\r\n\r\n            this.items.push(...this.leftBtns, ...this.rightBtns);\r\n          }\r\n          else {\r\n            console.warn(`Unable to get workflow button. Data returned null.`);\r\n          }\r\n        }),\r\n        switchMap(() => {\r\n          return super.translateButtonsLabel(this.items);\r\n        }),\r\n        switchMap(() => {\r\n          if (!this.data.DisableSyncWorkflowStatus) {\r\n            // Set default status\r\n            // eslint-disable-next-line @typescript-eslint/dot-notation\r\n            if (!this.group.zModel['WFS_StatusName']) {\r\n              const params = {\r\n                WorkflowMasterCode: this.data.WorkflowCode,\r\n              };\r\n\r\n              return this.webApiService.httpPost$(this.e1wfs_wfc_getWorkflowInitialStatusURL, params).pipe(\r\n                tap(res => {\r\n                  if (res.Data) {\r\n                    ZComponentHelper.presetModelValue('WFS_StatusId', res.Data['Id'], this.group);\r\n                    ZComponentHelper.presetModelValue('WFS_StatusName', res.Data['Name'], this.group);\r\n                    ZComponentHelper.presetModelValue('WFS_StatusCode', res.Data['Code'], this.group);\r\n\r\n                    this.workflowService.setCurrentDocumentStatus(res.Data);\r\n                  }\r\n                })\r\n              )\r\n            }\r\n            else {\r\n              // When loading also to get current Status Information if any.\r\n              const docInfoParam = {\r\n                WorkflowMasterCode: this.data.WorkflowCode,\r\n                DocumentId: documentId ?? 0,\r\n              };\r\n\r\n              return this.webApiService.httpPost$(this.e1wfs_wfc_getDocumentStatusURL, docInfoParam).pipe(\r\n                tap(res => {\r\n                  this.workflowService.setCurrentDocumentStatus(res);\r\n                  if (res.Data) {\r\n                    this.workflowService.setCurrentDocumentStatus(res.Data);\r\n                  }\r\n                })\r\n              )\r\n            }\r\n          }\r\n          return of(null);\r\n        })\r\n      ).subscribe();\r\n    } catch (error) {\r\n      console.error('Error:', error);\r\n    }\r\n  }\r\n\r\n  buttonClick(button: any) {\r\n    // Get the form group\r\n    const formGroup = this.group.form as FormGroup;\r\n    const attributes = JSON.parse(button.Attributes);\r\n    const buttonTypeCode = button.TypeCode.toUpperCase();\r\n\r\n    // Type 1 == functional;\r\n    // Type 2 == GOTO;\r\n    this.group.isTriggered = button.disableTrigger != undefined ? !button.disableTrigger : true;\r\n    \r\n    const clonedButton = ZComponentHelper.deepClone(button);\r\n    const clonedAttributes = ZComponentHelper.deepClone(attributes);\r\n    \r\n    this.updateEventId(button);\r\n\r\n    switch (buttonTypeCode) {\r\n      case \"FUNCTION\":\r\n        // Handle functional buttons\r\n        if (!this.group.isTriggered) {\r\n          return;\r\n        }\r\n\r\n        // Disable trigger timer\r\n        const currentScope = this;\r\n        if (!attributes['DisableTriggerTimer']) {\r\n          setTimeout(() => {\r\n            currentScope.group['isTriggered'] = false;\r\n          }, 500);\r\n        }\r\n\r\n        console.log(\"Functional Button: \", button.Name);\r\n\r\n        // Call the workflow service to handle the functional button click event\r\n        this.workflowService.functionalButton_OnClick(clonedAttributes, this.group);\r\n        break;\r\n      case \"GOTO\":\r\n        console.log(\"GOTO Button: \", button.Name);\r\n        // Call the workflow service to handle the GOTO button click event\r\n        this.workflowService.gotoButton_Onclick(clonedButton, this.data, clonedAttributes, this.group, this.isLocalHostAPI).subscribe(res => {\r\n          // Reload the button\r\n          this.loadButton(TriggerFromType.goToButton);\r\n\r\n          // Reset trigger status\r\n          this.group.isTriggered = false;\r\n\r\n          if (res) {\r\n            // Trigger email sending\r\n            this.workflowService.triggerSendEmail(this.group).subscribe();\r\n          }\r\n        });\r\n        break;\r\n      default:\r\n        console.warn(`Invalid Button Type: ${button.Name}`);\r\n        break;\r\n    }\r\n  }\r\n\r\n  private updateEventId(button: any) {\r\n    const name = button.Name ?? button.name;\r\n    const updateButtonEventId = (buttons: any[]) => {\r\n      buttons.forEach(item => {\r\n        if (item.name === name) {\r\n          const eventId = ZComponentHelper.generateTimeStampId();\r\n          const attributes = JSON.parse(item.fieldAttribute.Attributes);\r\n  \r\n          item.fieldAttribute.eventId = eventId;\r\n          attributes.eventId = eventId;\r\n  \r\n          item.fieldAttribute.Attributes = JSON.stringify(attributes);\r\n        }\r\n      });\r\n    };\r\n  \r\n    updateButtonEventId(this.leftBtns);\r\n    updateButtonEventId(this.rightBtns);\r\n  }\r\n\r\n  private appendToAttributeUsefulDetail(button: any) {\r\n    const attributes = JSON.parse(button.Attributes);\r\n    const eventId = ZComponentHelper.generateTimeStampId();\r\n\r\n    const newAttributes = {\r\n      ...attributes,\r\n      zButtonName: this.data.Name,\r\n      TypeCode: button.TypeCode,\r\n      WorkflowCode: this.data.WorkflowCode,\r\n      eventId: eventId\r\n    };\r\n\r\n    const newButton = {\r\n      ...button,\r\n      Attributes: JSON.stringify(newAttributes),\r\n      disableTrigger: this.isButtonDisableTrigger(this.data, button),\r\n      eventId: eventId\r\n    };\r\n\r\n    return newButton;\r\n  }\r\n\r\n  private isButtonDisableTrigger(data: ZField, button: any): boolean {\r\n    return button.DisableTrigger != undefined ? button.DisableTrigger : (data.DisableTrigger != undefined ? data.DisableTrigger : false);\r\n  }\r\n\r\n  public removeGotoButton() {\r\n    const indexToDelete = this.leftBtns.findIndex(obj => obj.fieldAttribute.TypeCode === \"GOTO\");\r\n    if (indexToDelete !== -1) {\r\n      this.leftBtns.splice(indexToDelete, 1);\r\n    }\r\n  } \r\n}\r\n","<div class=\"e1tag-style\"\r\n  *ngIf=\"!group.isLoading && (!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible) && items.length > 0\"\r\n  [style]=\"componentProperties.style.style\">\r\n  <div class=\"ion-margin-vertical e1tag-style1\" *ngIf=\"isMobileScreen() && items.length > 1 && FirstZbtn === false\" [style]=\"componentProperties.style.style1\">\r\n    <kendo-dropdownbutton [data]=\"items\" size=\"large\" [look]=\"'outline'\" class=\"ion-activatable ripple-parent e1tag-style2\" [style]=\"componentProperties.style.style2\">\r\n      Actions\r\n      <ion-ripple-effect></ion-ripple-effect>\r\n    </kendo-dropdownbutton>\r\n  </div>\r\n\r\n  <div *ngIf=\"!isMobileScreen() || items.length === 1\" [ngClass]=\"data.DivClass\" class=\"btn-container e1tag-style3\" [style]=\"componentProperties.style.style3\">\r\n    <!-- <button *ngFor=\"let item of items; let i = index\" (click)=\"buttonClick(item.fieldAttribute)\"\r\n            kendoButton [togglable]=\"true\" [icon]=\"item.icon\" [hidden]=\"!isBtnVisible(item.visible)\"\r\n            style=\"margin-right: 5px;\">\r\n      {{item.text}}\r\n    </button> -->\r\n    <div class=\"btn-left e1tag-style4\" [style]=\"componentProperties.style.style4\">\r\n      <ion-button [fill]=\"item.fill\" [size]=\"item.size\" [color]=\"item.color\" strong=\"true\" *ngFor=\"let item of leftBtns; let i = index\"\r\n        [ngClass]=\"item.class\" (click)=\"buttonClick(item.fieldAttribute)\" [hidden]=\"!isBtnVisible(item.visible)\"\r\n        [disabled]=\"group.isTriggered\" [style]=\"componentProperties.style.style5\" class=\"e1tag-style5\">\r\n        <fa-icon class=\"btn-icon\" *ngIf=\"item.icon\" [icon]=\"getFontAwesome(item.icon, fontAweSomeService)\"></fa-icon>\r\n        <span *ngIf=\"item.text && item.showLabel\" [class.btn-label]=\"item.icon\" class=\"ion-text-capitalize\">{{item.text}}</span>\r\n      </ion-button>\r\n    </div>\r\n    <div class=\"btn-right e1tag-style6\" [style]=\"componentProperties.style.style6\">\r\n      <ion-button [fill]=\"item.fill\" [size]=\"item.size\" [color]=\"item.color\" strong=\"true\" *ngFor=\"let item of rightBtns; let i = index\"\r\n        [ngClass]=\"item.class\" (click)=\"buttonClick(item.fieldAttribute)\" [hidden]=\"!isBtnVisible(item.visible)\"\r\n        [disabled]=\"group.isTriggered\" [style]=\"componentProperties.style.style7\" class=\"e1tag-style7\">\r\n        <fa-icon class=\"btn-icon\" *ngIf=\"item.icon\" [icon]=\"getFontAwesome(item.icon, fontAweSomeService)\"></fa-icon>\r\n        <span *ngIf=\"item.text && item.showLabel\" [class.btn-label]=\"item.icon\" class=\"ion-text-capitalize\">{{item.text}}</span>\r\n      </ion-button>\r\n    </div>\r\n  </div>\r\n</div>\r\n","/********** Angular **********/\r\nimport { Component, OnInit, ViewChild } from \"@angular/core\";\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { TextBoxComponent } from \"@progress/kendo-angular-inputs\";\r\n\r\n/********** Component & Service **********/\r\nimport { InputFieldBase } from \"../components/inputfieldbase.component\";\r\nimport { ZComponentService } from \"../services/zcomponent.service\";\r\nimport { ZComponent, ZComponentHelper, ZComponentOutputEvent, ClickableIcons, AdornmentProperties, ComponentType } from 'mmhglobal-zcore';\r\n\r\n\r\n@Component({\r\n  selector: \"app-ztext\",\r\n  templateUrl: \"./ztext.component.html\",\r\n  styleUrls: [\"./ztext.component.scss\"]\r\n})\r\n\r\nexport class ZtextComponent extends InputFieldBase implements ZComponent, OnInit {\r\n  @ViewChild(\"textbox\") textbox: TextBoxComponent;\r\n\r\n  public iconList: ClickableIcons[];\r\n  public adornmentList: any[];\r\n  public showClearButton: any;\r\n  public isPasswordField: boolean = false; \r\n\r\n  constructor(\r\n    public componentService: ZComponentService\r\n  ) {\r\n    super(componentService);\r\n  }\r\n\r\n  ngOnInit() {\r\n    super.setupInnerField();\r\n    this.adornmentList = this.data.AdornmentList;\r\n    this.isPasswordField = this.data.Type === 'zpassword';//ComponentType.zPassword;\r\n\r\n    if (this.data.OnClick && !this.data.ReadOnly) {\r\n      this.componentProperties.isReadOnly = true;\r\n    }\r\n\r\n    if (!this.componentProperties.isReadOnly) {\r\n      this.showClearButton = this.data.ClearButton;\r\n    }\r\n\r\n    this.setupClickableIconList();\r\n    super.focusOnDefault(this.focus.bind(this));\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    if (this.data.Type === 'zpassword') { //ComponentType.zPassword) {\r\n      this.textbox.input.nativeElement.type = 'password';\r\n      this.textbox.input.nativeElement.autocomplete = 'off';\r\n    }\r\n\r\n    this.componentService.decrementComponentCounterForField(this.data);\r\n  }\r\n\r\n  private setupClickableIconList() {\r\n    this.iconList = this.data.ClickableIcons;\r\n    if (this.iconList) {\r\n      if (this.iconList.length > 0) {\r\n        this.iconList.forEach((i: any) => {\r\n          if (i.Tooltip === undefined) {\r\n            i.Tooltip = \"\";\r\n          } else {\r\n            if (i.Tooltip.indexOf(\"group.\") !== -1) {\r\n              i.Tooltip = ZComponentHelper.getGroupEvalValue.call(this, i.Tooltip);\r\n            }\r\n          }\r\n          // Default position top. right | bottom | top | left\r\n          if (i.Position === undefined) {\r\n            i.Position = \"top\";\r\n          }\r\n        });\r\n      }\r\n    }\r\n  }\r\n\r\n  mapInputType(fieldType: string): string {\r\n    switch (fieldType) {\r\n      case \"date\":\r\n        return \"date\";\r\n      case \"ztext\":\r\n        return \"text\";\r\n      case \"number\":\r\n        return \"number\";\r\n      case \"currency\":\r\n        return \"number\";\r\n      case \"email\":\r\n        return \"email\";\r\n      case \"zpassword\":\r\n        return \"password\";\r\n      case \"search\":\r\n        return \"search\";\r\n      case \"tel\":\r\n        return \"tel\";\r\n      case \"text\":\r\n        return \"text\";\r\n      case \"time\":\r\n        return \"time\";\r\n      case \"url\":\r\n        return \"url\";\r\n      default:\r\n        return \"text\";\r\n    }\r\n  }\r\n\r\n  mapInputMode(fieldType: string): string {\r\n    switch (fieldType) {\r\n      case \"date\":\r\n        return \"none\";\r\n      case \"ztext\":\r\n        return \"text\";\r\n      case \"number\":\r\n        return \"decimal\";\r\n      case \"currency\":\r\n        return \"decimal\";\r\n      case \"email\":\r\n        return \"email\";\r\n      case \"zpassword\":\r\n        return \"text\";\r\n      case \"search\":\r\n        return \"search\";\r\n      case \"tel\":\r\n        return \"tel\";\r\n      case \"text\":\r\n        return \"text\";\r\n      case \"time\":\r\n        return \"none\";\r\n      case \"url\":\r\n        return \"url\";\r\n      default:\r\n        return \"text\";\r\n    }\r\n  }\r\n\r\n\r\n  /********** Adornment **********/\r\n  public getAdornmentBackgroundColor(adornment: AdornmentProperties) {\r\n    if (adornment.BackgroundColor) {\r\n      return adornment.BackgroundColor + \"!important\";\r\n    }\r\n\r\n    return \"transparent !important\";\r\n  }\r\n\r\n  public adornmentLook(adornment: AdornmentProperties) {\r\n    if (adornment.AdornmentLook) {\r\n      return adornment.AdornmentLook;\r\n    }\r\n\r\n    return 'clear'\r\n  }\r\n\r\n  public onAdornmentClick(adornment: AdornmentProperties) {\r\n    if (adornment.OnClick) {\r\n      this.group.subject.next({\r\n        type: 'ztext-adornment',\r\n        target: adornment.OnClick,\r\n        data: adornment\r\n      } as ZComponentOutputEvent);\r\n    }\r\n  }\r\n\r\n  public togglePasswordVisibility(): void {\r\n    const inputEl = this.textbox.input.nativeElement;\r\n\r\n    if (inputEl.type === \"password\") {\r\n      inputEl.type = \"text\"; \r\n    } else {\r\n      inputEl.type = \"password\"; \r\n    } \r\n  }\r\n\r\n  public readOnlyOnClear() {\r\n    ZComponentHelper.setModelValue(this.data.Value, null, this.group);\r\n  }\r\n\r\n  public focus() {\r\n    if (this.textbox) {\r\n      this.textbox.focus();\r\n      return true;\r\n    }\r\n    return false;\r\n  }\r\n}\r\n","<div [formGroup]=\"form\" class=\"ztext-container e1tag-style\" [style]=\"componentProperties.style.style\">\r\n  <!-- Ion Input for Mobile Screen -->\r\n  <ion-input *ngIf=\"isMobileScreen()\"\r\n             class=\"e1tag-style1\"\r\n             [attr.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n             [formControlName]=\"data.Value\"\r\n             [id]=\"data.Value\"\r\n             [inputmode]=\"mapInputMode(data.Type)\"\r\n             [maxlength]=\"data.MaxLength\"\r\n             [minlength]=\"data.MinLength\"\r\n             [placeholder]=\"data.PlaceHolder\"\r\n             [style]=\"componentProperties.style.style1\"\r\n             [type]=\"mapInputType(data.Type)\"\r\n             clearOnEdit\r\n             (click)=\"onClick($event)\"\r\n             (ionChange)=\"onChange($event, $event.target.value)\">\r\n  </ion-input>\r\n\r\n  <!-- Kendo TextBox for Non-Mobile Screen -->\r\n  <kendo-textbox *ngIf=\"!isMobileScreen()\"\r\n                 #textbox\r\n                 class=\"input-field e1tag-style1\"\r\n                 [class.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n                 [formControlName]=\"data.Value\"\r\n                 [id]=\"data.Value\"\r\n                 [maxlength]=\"data.MaxLength\"\r\n                 [minlength]=\"data.MinLength\"\r\n                 [placeholder]=\"data.PlaceHolder\"\r\n                 [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n                 [style]=\"componentProperties.style.style1\"\r\n                 [type]=\"mapInputType(data.Type)\"\r\n                 (click)=\"onClick($event, $event.target.value)\"\r\n                 (input)=\"onChange($event, $event.target.value)\"> \r\n    <ng-template kendoTextBoxSuffixTemplate *ngIf=\"adornmentList\">\r\n      <button kendoButton\r\n              *ngIf=\"data.OnClick\"\r\n              class=\"textbox-clearbutton e1tag-style2\"\r\n              [style]=\"componentProperties.style.style2\"\r\n              [look]=\"'clear'\"\r\n              [icon]=\"'close-circle'\"\r\n              (click)=\"readOnlyOnClear()\"></button>\r\n\r\n      <!-- For Adornments feature -->\r\n      <div *ngFor=\"let adornment of adornmentList\" class=\"e1tag-style3\" [style]=\"componentProperties.style.style3\">\r\n        <kendo-textbox-separator *ngIf=\"!adornment.HideSeperator\" class=\"textbox-separator e1tag-style4\" [style]=\"componentProperties.style.style4\"></kendo-textbox-separator>\r\n        <button kendoButton\r\n                [look]=\"adornmentLook(adornment)\"\r\n                [icon]=\"adornment.Icon\"\r\n                (click)=\"onAdornmentClick(adornment)\"\r\n                class=\"e1tag-style5\"\r\n                [style]=\"componentProperties.style.style5\"\r\n                [style.background-color]=\"getAdornmentBackgroundColor(adornment)\"></button>\r\n      </div>\r\n    </ng-template>\r\n    <ng-template kendoTextBoxSuffixTemplate *ngIf=\"isPasswordField\">\r\n      <button kendoButton\r\n              [look]=\"'clear'\"\r\n              [icon]=\"'eye'\"\r\n              (click)=\"togglePasswordVisibility()\"></button> \r\n    </ng-template>\r\n  </kendo-textbox>\r\n</div>\r\n","/********** Angular **********/\r\nimport { Component, OnInit, ViewChild, OnDestroy, ChangeDetectorRef, ElementRef } from \"@angular/core\";\r\n\r\n/********** Ionic **********/\r\nimport { IonicSelectableComponent } from \"ionic-selectable\";\r\n\r\n/********** Plugin **********/\r\nimport { Subscription, Observable, of, BehaviorSubject, from } from \"rxjs\";\r\nimport { tap, map, switchMap, mergeMap, catchError } from \"rxjs/operators\";\r\nimport { ComboBoxComponent, DropDownFilterSettings, DropDownListComponent, MultiSelectComponent, MultiSelectTreeComponent, VirtualizationSettings } from \"@progress/kendo-angular-dropdowns\";\r\nimport { event } from \"jquery\";\r\n\r\n/********** Component & Service **********/\r\nimport { InputFieldBase } from \"../components/inputfieldbase.component\";\r\nimport { ZComponentService } from \"../services/zcomponent.service\";\r\nimport {\r\n  ResourceApiService, WebApiService, CacheService, FieldService,\r\n  ZComponent, ZComponentHelper, ZComponentOutputEvent, ClickableIcons,\r\n  ZSelectMultipleTemplateParams, ZSelectPostApiParams, InternalComponentType_DropDown, SignalType, DropdownSearchOperator\r\n} from \"mmhglobal-zcore\";\r\n\r\n\r\n@Component({\r\n  selector: \"app-zselectmultiple\",\r\n  templateUrl: \"./zselectmultiple.component.html\",\r\n  styleUrls: [\"./zselectmultiple.component.scss\"]\r\n})\r\n\r\nexport class ZselectmultipleComponent extends InputFieldBase implements ZComponent, OnInit, OnDestroy {\r\n  @ViewChild(\"comboboxComponent\") comboboxComponent: ComboBoxComponent;\r\n  @ViewChild(\"dropdownlistComponent\") dropdownlistComponent: DropDownListComponent;\r\n  @ViewChild(\"multiselect\") multiselect: MultiSelectComponent;\r\n  @ViewChild(\"multiselecttree\") multiselecttree: MultiSelectTreeComponent;\r\n  @ViewChild(\"selectComponent\") selectComponent: IonicSelectableComponent;\r\n  @ViewChild('itemElement', { static: false }) itemElement: ElementRef;\r\n\r\n  public componentType: InternalComponentType_DropDown;\r\n  private allDataItems = [];\r\n  private isFirstOpened = false;\r\n  iconList: ClickableIcons[];\r\n  items: Array<any> = [];\r\n  modelzData: Array<any>;\r\n  infinitezData: Array<any> = [];\r\n  hasSearched = false;\r\n  toggleSelectable = true;\r\n  itemValueField: string = null;\r\n  itemTextField: string = null;\r\n  itemDataField: string = null;\r\n  itemTemplate = \"{{item[itemTextField]}}\";\r\n  infiniteScrollPageNo = 0;\r\n  isLoading = true;\r\n  allowCustomValue = false;\r\n  autoClose: boolean = true;\r\n  public parsedItemsData: any[];\r\n  dataInfo: {} = {\r\n    \"itemsResourceURL\": \"\",\r\n    \"optionFilters\": \"\",\r\n    \"totalCount\": 0\r\n  };\r\n  private eventSubscriptions = new Array<Subscription>();\r\n  public expandedKeys;\r\n  public componentSettings = {\r\n    kendoMultiSelectTreeSummaryTag: 999999,\r\n    popupSettings: null,\r\n    expandOnFilter: {\r\n      expandMatches: true,\r\n      expandedOnClear: \"initial\",\r\n    }\r\n  };\r\n\r\n  // private loadInfiniteDataSub: Subject<boolean> = new Subject<boolean>();\r\n  public filterSettings: DropDownFilterSettings = {\r\n    caseSensitive: false,\r\n    operator: \"contains\",\r\n  };\r\n\r\n\r\n  // For lazyloading\r\n  private defaultTake: number = 50;\r\n  private itemHeight: number = 28;\r\n\r\n  public virtual: VirtualizationSettings = {\r\n    itemHeight: this.itemHeight,\r\n    pageSize: this.defaultTake,\r\n  };\r\n\r\n  public state: { skip: number; take: number } = {\r\n    skip: 0,\r\n    take: this.defaultTake,\r\n  };\r\n  private stateChange = new BehaviorSubject<any>({ state: this.state, eventType: null, searchTerm: '' });\r\n  private stateSubscription: Subscription;\r\n\r\n\r\n  constructor(\r\n    public componentService: ZComponentService,\r\n    private resourceApiService: ResourceApiService,\r\n    private cdr: ChangeDetectorRef,\r\n    private webApiService: WebApiService,\r\n    private cacheService: CacheService,\r\n    private fieldService: FieldService\r\n  ) {\r\n    super(componentService)\r\n  }\r\n\r\n  ngOnInit() {\r\n    this.isLoading = true;\r\n    this.setComponentToUse();\r\n    this.subscribeUISignal();\r\n    super.setupInnerField();\r\n    super.setupComponentSettings(this.componentSettings);\r\n    ZComponentHelper.setSelectMultipleTextValue(this.data.SelectOptions, this);\r\n\r\n    // [Dropdownlist Multiple] - auto close menu when lose focus.\r\n    if (this.data.AutoClose === false) this.autoClose = this.data.AutoClose;\r\n\r\n    // Handle Clickable Icons\r\n    this.iconList = this.data.ClickableIcons;\r\n    if (this.iconList) {\r\n      if (this.iconList.length > 0) {\r\n        this.iconList.forEach((i: any) => {\r\n          if (i.Tooltip === undefined) {\r\n            i.Tooltip = \"\";\r\n          } else {\r\n            i.Tooltip = ZComponentHelper.getGroupEvalValue.call(this, i.Tooltip);\r\n          }\r\n          // Default position top. right | bottom | top | left\r\n          if (i.Position === undefined) {\r\n            i.Position = \"top\";\r\n          }\r\n        });\r\n      }\r\n    }\r\n    this.allowCustomValue = this.data.AllowCustomValue || false; // Allow enter text in dropdownbox\r\n    const fieldValue = this.data.Value;\r\n    const data = this.data;\r\n    const zModel = this.group.zModel;\r\n\r\n    /*\r\n     * 4 Styles of declare the component s option list data source.\r\n     * Style #1 - Field.SelectOptions defined as an array of object that contain text and value.\r\n     * Style #2 - Field.SelectOptions defined as a phase like  item.Id as item.Name for item in group.zData.ProjectOptions .\r\n     * Style #3 - Field.OptionResourceURL defined the name of resource server api.\r\n     * Style #4 - Field.InfiniteScroll$ defined the method name as  group.getMoreDataAsScroll .\r\n     */\r\n\r\n    if (data.HasInfiniteScroll && data.InfiniteScroll$) {\r\n      if (!this.isMobileScreen()) {\r\n        this.handleFilter(null);\r\n      }\r\n    }\r\n    else {\r\n      // Style #1, #2, #3\r\n      const isRequired = ZComponentHelper.getGroupEvalValue.call(this, data.IsRequired);\r\n\r\n      if (this.data.OptionResourceURL) {\r\n        this.lazyLoadDataOptions().subscribe(res => {\r\n          const optionData = res.dataSet ? res.dataSet : res;\r\n\r\n          if (optionData && optionData.length === 1 && !this.data.DisableAutoFirstSelection) {\r\n            this.autoSelectFirstOption(isRequired, optionData[0], fieldValue, zModel.Id);\r\n          }\r\n\r\n          if (this.group) {\r\n            this.afterLoadzDataOptions();\r\n          }\r\n\r\n          this.isLoading = false;\r\n        });\r\n      }\r\n      else {\r\n        if (Array.isArray(this.data.SelectOptions) && this.data.SelectOptions) {\r\n          //skip eval if selectoptions is exist\r\n        }\r\n        else {\r\n          const optionData = ZComponentHelper.getGroupEvalValue.call(this, this.itemDataField);\r\n          // append data via timeout after data is loaded.\r\n          if (optionData && optionData.length === 1 && !this.data.DisableAutoFirstSelection) {\r\n            const thisComponent = this;\r\n            setTimeout(function () {\r\n              thisComponent.autoSelectFirstOption(isRequired, optionData[0], fieldValue, thisComponent.group.zModel.Id);\r\n\r\n              if (this.group) {\r\n                this.afterLoadzDataOptions();\r\n              }\r\n            }, 100);\r\n          }\r\n        }\r\n        this.isLoading = false;\r\n      }\r\n    }\r\n\r\n    if (this.data.SearchOperator === DropdownSearchOperator.StartsWith) {\r\n      this.filterSettings.operator = 'startsWith';\r\n    }\r\n\r\n    super.focusOnDefault(this.focus.bind(this));\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    // Subscribe to stateChange and trigger data fetching here because\r\n    // ngAfterViewInit ensures that all view components (e.g., dropdownlist, multiselect)\r\n    // are fully initialized. This avoids issues where view elements might not be ready\r\n    // during the constructor phase. The initial state emission and fetch are done here\r\n    // to guarantee that the view is prepared before interacting with it.\r\n    this.loadInfiniteData();\r\n\r\n    this.componentService.decrementComponentCounterForField(this.data);\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    if (this.stateSubscription) {\r\n      this.stateSubscription.unsubscribe();\r\n    }\r\n\r\n    for (const e of this.eventSubscriptions) {\r\n      if (e && !e.closed) {\r\n        e.unsubscribe();\r\n      }\r\n    }\r\n  }\r\n\r\n  public reloadInfiniteData(): void {\r\n    this.infinitezData = [];\r\n    this.state = { skip: 0, take: this.defaultTake };\r\n\r\n    this.stateChange.next(this.state);\r\n  }\r\n\r\n  private loadInfiniteData(): void {\r\n    const { Value: fieldValue } = this.data;\r\n    const { zModel } = this.group;\r\n    const recordValue = zModel?.[fieldValue]?.toString() ?? null;\r\n    const recordValueList = recordValue ? recordValue.split(',').filter(Boolean) : [];\r\n    const newItems$ = ZComponentHelper.getGroupEvalValue.call(this, this.data.InfiniteScroll$);\r\n\r\n    if (!newItems$) {\r\n      return;\r\n    }\r\n\r\n    this.stateSubscription = this.stateChange.pipe(\r\n      switchMap(({ state, eventType, searchTerm }) => {\r\n        // Update hasSearched based on searchTerm\r\n        this.hasSearched = !ZComponentHelper.isNullUndefinedEmpty(searchTerm);\r\n\r\n        if (!this.infinitezData || this.hasSearched || eventType === 'Closed') {\r\n          this.infinitezData = [];\r\n        }\r\n\r\n        this.state = state ?? this.state;\r\n        const pageNo = this.getPageNo(this.state.skip, this.state.take);\r\n        if(pageNo < 1) {\r\n          this.isLoading = true;\r\n        }\r\n\r\n        return newItems$(null, searchTerm, pageNo, this.group.ctrlScope, this.data).pipe(\r\n          map(response => ({ response, eventType, searchTerm }))\r\n        );\r\n      }),\r\n      tap(({ response, eventType }) => {\r\n        const dataSet = (response as any).dataSet;\r\n        const totalCount = (response as any).totalCount ?? dataSet?.length;\r\n\r\n        if (dataSet) {\r\n          if (this.infinitezData.length === 0) {\r\n            if (totalCount === 0) {\r\n              this.infinitezData = [];\r\n            } else if (totalCount <= this.state.take) {\r\n              this.infinitezData = dataSet;\r\n            } else {\r\n              this.infinitezData = dataSet.concat(new Array(totalCount - this.state.take));\r\n            }\r\n          } else {\r\n            this.infinitezData.splice(this.state.skip, this.state.take, ...dataSet);\r\n          }\r\n        }\r\n      }),\r\n      switchMap(({ eventType, searchTerm }) => {\r\n        if (eventType !== null || !ZComponentHelper.isNullUndefinedEmpty(searchTerm) || recordValueList.length === 0) {\r\n          return of(null);\r\n        }\r\n\r\n        return from(recordValueList).pipe(\r\n          mergeMap(value => {\r\n            const existingIndex = this.infinitezData.findIndex(item =>\r\n              item && item[this.itemValueField].toString() === value.toString()\r\n            );\r\n\r\n            if (existingIndex !== -1) {\r\n              return of(null);\r\n            }\r\n\r\n            return newItems$(null, '', 0, this.group.ctrlScope, this.data, value).pipe(\r\n              tap(resp => {\r\n                if (resp['dataSet']) {\r\n                  this.infinitezData = [...resp['dataSet'], ...this.infinitezData];\r\n                }\r\n              })\r\n            );\r\n          })\r\n        );\r\n      }),\r\n      tap(() => {\r\n        if (this.group) {\r\n          this.afterLoadzDataOptions();\r\n        }\r\n\r\n        this.isLoading = false;\r\n        this.cdr.detectChanges();\r\n      }),\r\n      catchError((error) => {\r\n        console.warn('Error in loadInfiniteData:', error);\r\n        this.isLoading = false;\r\n        return of(null);\r\n      })\r\n    ).subscribe();\r\n  }\r\n\r\n  private getPageNo(stateSkip: number, stateTake: number): number {\r\n    return Math.round(stateSkip / stateTake);\r\n  }\r\n\r\n  // Auto select first option (if required & only 1 option)\r\n  private autoSelectFirstOption(required: boolean, data: any, zModelPropertyName: string, id: any) {\r\n    if (ZComponentHelper.isNullUndefinedEmpty(id) && required) {\r\n      var optionId = data.Id;\r\n      if (this.data.Multiple) {\r\n        optionId = [optionId];\r\n      }\r\n      ZComponentHelper.setModelValue(zModelPropertyName, optionId, this.group);\r\n\r\n      this.group.subject.next({\r\n        type: \"onChange\",\r\n        target: this.data.OnChange,\r\n        event,\r\n        data: { ['value']: optionId, field: this.data }\r\n      } as ZComponentOutputEvent);\r\n\r\n      this.form.markAsPristine();\r\n    }\r\n  }\r\n\r\n  // Style #3\r\n  lazyLoadDataOptions(): Observable<any> {\r\n    const resourceUrl = this.resourceApiService.getURL(\r\n      this.data.OptionResourceURL\r\n    );\r\n\r\n    const filterParam = new ZSelectPostApiParams();\r\n    filterParam.sorts = this.data.OptionSort;\r\n    filterParam.columns = this.data.OptionColumns;\r\n    filterParam.filters = this.data.OptionFilter;\r\n\r\n    return ZComponentHelper.getDataOptions(\r\n      this.data.OptionName,\r\n      filterParam,\r\n      this.group,\r\n      resourceUrl,\r\n      this.cacheService,\r\n      this.webApiService,\r\n      this.data['DisableCache']\r\n    );\r\n  }\r\n\r\n  // Style #4, used in ionic-selectable\r\n   getInfiniteData(event: {\r\n     component: IonicSelectableComponent;\r\n     text: string;\r\n   }) {\r\n     const searchTerm = event.text ?? '';\r\n     ZComponentHelper.getInfiniteData(event.component, searchTerm, this).subscribe();\r\n   }\r\n\r\n  getItemsData() {\r\n    // Local helper function for slicing option name based on start index\r\n    const getOptionNameSuffix = (optionName: string, startIndex: number): string => {\r\n      return optionName.slice(startIndex);\r\n    };\r\n\r\n    if (this.data.HasInfiniteScroll) {\r\n      return this.infinitezData;\r\n    }\r\n\r\n    const optionName = this.data.OptionName || this.itemDataField || 'group.zData.' + this.data.Name;\r\n\r\n    if (Array.isArray(this.data.SelectOptions) && !this.group.zData[getOptionNameSuffix(optionName, 12)]) {\r\n      this.group.zData[getOptionNameSuffix(optionName, 12)] = this.data.SelectOptions;\r\n      this.itemDataField = optionName;\r\n    }\r\n\r\n    if (optionName.startsWith('zData.')) {\r\n      return this.group.zData[getOptionNameSuffix(optionName, 6)] || [];\r\n    }\r\n\r\n    if (optionName.startsWith('group.zData.')) {\r\n      return this.group.zData[getOptionNameSuffix(optionName, 12)] || [];\r\n    }\r\n\r\n    if (optionName.startsWith('group.')) {\r\n      return this.group[getOptionNameSuffix(optionName, 6)] || [];\r\n    }\r\n\r\n    if (optionName) {\r\n      return this.group[optionName] || [];\r\n    }\r\n\r\n    console.warn(this.data.Name, ' - Invalid setting for OptionName: ', optionName);\r\n\r\n    this.cdr.detectChanges();\r\n  }\r\n\r\n  onSearch(event: { component: IonicSelectableComponent; text: string }) {\r\n    // console.log(\"At zselectmultiple.component (onSearch): \", event);\r\n    // event.component is for mobile only\r\n    const searchTerm = event.text;\r\n    const component = event.component;\r\n\r\n    // Start search and enable infinite scrolling on the component if available\r\n    component?.startSearch(); //mobile\r\n    component?.enableInfiniteScroll(); //mobile\r\n\r\n    // // Reset paging and clear data if new search text is detected or infinite scrolling is enabled\r\n    // // Reset scroll page, empty items\r\n    // this.infiniteScrollPageNo = 0;\r\n    // if (component) {\r\n    //   component.items = [];\r\n    // }\r\n\r\n    // // Prepare default parameters for item filtering\r\n    // const params: zSelectMultipleParams = {\r\n    //   referId: null,\r\n    //   pageNo: 0,\r\n    //   pageSize: 20,\r\n    //   sortColumnName: \"\",\r\n    //   sortOrder: \"\",\r\n    //   sortColumnNames: [],\r\n    //   sortOrders: [],\r\n    //   filterParams: [],\r\n    //   parameters: \"\"\r\n    // };\r\n\r\n    // const searchBy = this.data.SearchFields ?? this.itemTextField;\r\n    // const itemsData = this.getItemsData();\r\n    // const filteredItems = ZComponentHelper.filterSearchItems(\r\n    //   itemsData,\r\n    //   searchTerm,\r\n    //   searchBy,\r\n    //   params.pageNo,\r\n    //   params.pageSize,\r\n    //   this.data.SearchOperator\r\n    // );\r\n\r\n    // this.checkAllowCustomValue(searchBy, searchTerm, filteredItems, itemsData);\r\n\r\n    // // Update component items and handle search completion\r\n    // if (component) {\r\n    //   component.items = [...component.items, ...filteredItems];\r\n    //   component.endInfiniteScroll();\r\n    //   component.endSearch();\r\n    //   this.isLoading = false;\r\n    // }\r\n  }\r\n\r\n  private checkAllowCustomValue(searchBy: string, searchTerm: string, filteredItems: any[], itemsData?: any) {\r\n    // Allow custom value unless a direct match is found\r\n    this.allowCustomValue = this.data.AllowCustomValue;\r\n    let searchFields: string[];\r\n    if (searchBy) {\r\n      searchFields = searchBy.replace(/\\s/g, \"\").split(\",\");\r\n    } else {\r\n      searchFields = Object.keys(itemsData[0]);\r\n    }\r\n    // Iterate through filteritems to check if any item matches searchText in any of the searchFields \r\n    for (const item of filteredItems) {\r\n      // Check each searchField for searchText\r\n      for (const field of searchFields) {\r\n        if (item[field] && item[field] === searchTerm) {\r\n          this.allowCustomValue = false;\r\n          break; // Break the inner loop since we've found a match\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n  handleFilter(searchTerm: any) {\r\n    if (this.multiselect && this.data.SearchLength) {\r\n      const meetsLengthCondition = this.data.SearchLength && this.data.SearchLength <= searchTerm.length;\r\n      this.multiselect.toggle(meetsLengthCondition);\r\n    }\r\n\r\n    const searchBy = this.data.SearchFields ?? this.itemTextField;\r\n    const itemsData = this.getItemsData();\r\n\r\n    if (this.data.AllowCustomValue) {\r\n      this.checkAllowCustomValue(searchBy, searchTerm, itemsData);\r\n    }\r\n\r\n    if (this.data.HasInfiniteScroll && this.data.InfiniteScroll$ && searchTerm) {\r\n      this.stateChange.next({ state: this.state, eventType: 'Filter', searchTerm: searchTerm });\r\n    }\r\n  }\r\n\r\n  public onMultiSelectOpen(event: any) {\r\n    // Ensure multiselect value meets the search length requirement\r\n    if (this.data.SearchLength && this.multiselect.value.length < this.data.SearchLength) {\r\n      event.preventDefault();\r\n      return; // Early return to avoid unnecessary checks\r\n    }\r\n  }\r\n\r\n  public onComboOpened(): void {\r\n    this.handleOpened(this.comboboxComponent, 'Opened');\r\n  }\r\n  \r\n  public onMultiSelectOpened(): void {\r\n    this.handleOpened(this.multiselect, 'Opened');\r\n  }\r\n  \r\n  public onDropDownListOpened(): void {\r\n    this.handleOpened(this.dropdownlistComponent, 'Opened');\r\n  }\r\n  \r\n  private handleOpened(component: any, eventType: string): void {\r\n    if (this.data.HasInfiniteScroll && this.data.InfiniteScroll$ && component) {\r\n      this.isFirstOpened = true;\r\n      component.optionsList.pageChange.subscribe((state) => {\r\n        this.stateChange.next({ state: state, eventType: eventType, searchTerm: '' });\r\n        this.scrollToTop(component);\r\n      });\r\n    }\r\n  }\r\n  \r\n  private scrollToTop(component: any): void {\r\n    // optionsList is a reference to the internal kendo-list component used in the DropDownList popup\r\n    // pass the current state to the stateChange BehaviorSubject on each pageChange event\r\n    if (component.optionsList?.pageChange && this.isFirstOpened) {\r\n      component.optionsList.scrollToIndex(0);\r\n      this.isFirstOpened = false;\r\n    }\r\n  }\r\n  \r\n  handleClose(event?: Event) {\r\n    if (this.data.HasInfiniteScroll && this.data.InfiniteScroll$ && this.hasSearched) {\r\n      this.isFirstOpened = false;\r\n      this.stateChange.next({ state: this.state, eventType: 'Closed', searchTerm: '' });\r\n    }\r\n  }\r\n\r\n  public getItemTemplate(\r\n    item: any,\r\n    data: any,\r\n    group: any,\r\n    itemValueField: string,\r\n    itemTextField: string\r\n  ) {\r\n    // ToDO: itemValueField and itemTextField\r\n    if (this.data.ItemTemplate) {\r\n      const getTemplateFunc = ZComponentHelper.getGroupEvalValue.call(this, this.data.ItemTemplate);\r\n\r\n      return getTemplateFunc({\r\n        item,\r\n        data,\r\n        group,\r\n        itemValueField,\r\n        itemTextField\r\n      } as ZSelectMultipleTemplateParams);\r\n    }\r\n    else if (itemTextField) {\r\n      if (!item) {\r\n        return null;\r\n      }\r\n\r\n      return item[itemTextField];\r\n    }\r\n    else {\r\n      // return item[itemTextField];\r\n      return Object.values(item).join(\", \");\r\n    }\r\n  }\r\n\r\n  resetInfiniteData() {\r\n    this.infinitezData = [];\r\n    this.state = { skip: 0, take: this.defaultTake };\r\n    this.infiniteScrollPageNo = 0;\r\n  }\r\n\r\n  onAddItem(event: any) {\r\n    const f = ZComponentHelper.getGroupEvalValue.call(this, this.data.OnAddItem);\r\n    if (typeof f === 'function') {\r\n      const callFunc = f.bind(this.group.ctrlScope);\r\n      return callFunc();\r\n    }\r\n    console.warn('Invalid declaration of OnAddItem: ', f);\r\n    return;\r\n  }\r\n\r\n  // Component basic function\r\n  clearData() {\r\n    ZComponentHelper.setModelValue(this.data.Value, \"\", this.group);\r\n  }\r\n\r\n  clearItems() {\r\n    if (this.selectComponent) {\r\n      this.selectComponent.clear();\r\n      this.selectComponent.close();\r\n    }\r\n  }\r\n\r\n  confirmItems() {\r\n    if (this.selectComponent) {\r\n      this.selectComponent.confirm();\r\n      this.selectComponent.close();\r\n    }\r\n  }\r\n\r\n  toggleItems() {\r\n    this.selectComponent.toggleItems(this.toggleSelectable);\r\n    this.toggleSelectable = !this.toggleSelectable;\r\n\r\n    // Confirm items and close Select page\r\n    // without having the user to click Confirm button.\r\n    // this.confirm();\r\n  }\r\n\r\n  // Disable Open On Focus\r\n  disableOpenOnFocus(comboboxComponent: any) {\r\n    if (this.data.DisableOpenOnFocus) {\r\n      return null;\r\n    }\r\n    else {\r\n      return comboboxComponent;\r\n    }\r\n  }\r\n\r\n  // OnChange\r\n  public onChange_desktop(event: any) {\r\n    super.onChange(null, event)\r\n    this.handleInfiniteScrollOnChange(event);\r\n  }\r\n\r\n  public onChange_mobile(event: { component: IonicSelectableComponent; value: any }) {\r\n    super.onChange(event)\r\n    const fc = this.form.controls[this.data.Value];\r\n    this.handleClose(null);\r\n\r\n    if (\r\n      super.getIsRequiredValue() && (event.value === null || event.value.length === 0)\r\n    ) {\r\n      fc.setErrors({ required: true });\r\n    } else {\r\n      fc.setErrors(null);\r\n    }\r\n\r\n    this.handleInfiniteScrollOnChange(event.value);\r\n  }\r\n\r\n  private handleInfiniteScrollOnChange(value: string) {\r\n    if (this.data.HasInfiniteScroll && !!this.data.InfiniteScroll$) {\r\n      const textField = this.itemTextField.toString();\r\n      const valueField = this.itemValueField.toString();\r\n      let zdataModel = [];\r\n      if (value) {\r\n        zdataModel = this.infinitezData.filter(x => x[valueField] === value);\r\n        this.modelzData = zdataModel.slice();\r\n      }\r\n      else{\r\n        this.reloadInfiniteData();\r\n      }\r\n      \r\n      if (this.itemDataField.startsWith('group.zData.')) {\r\n        this.group.zData[this.itemDataField.slice(12)] = zdataModel;\r\n      } else if (this.itemDataField.startsWith('group.')) {\r\n        this.group[this.itemDataField.slice(6)] = zdataModel;\r\n      }\r\n    }\r\n  }\r\n\r\n  // Multi Selection Tree\r\n  public hasChildren = (dataitem: any): boolean => !!dataitem['items'];\r\n\r\n  public handleMultiSelectTreeFilter(value: string): void {\r\n    this.parsedItemsData = this.onMultiSelectTreeSearch(this.getItemsData(), value);\r\n  }\r\n\r\n  public onMultiSelectTreeSearch(items: any[], searchedText: string): any[] {\r\n    return items.reduce((acc, item) => {\r\n      if (this.contains(item[this.itemTextField], searchedText)) {\r\n        acc.push(item);\r\n      }\r\n      else if (item['items'] && item['items'].length > 0) {\r\n        const newItems = this.onMultiSelectTreeSearch(item['items'], searchedText);\r\n\r\n        if (newItems.length > 0) {\r\n          const _item = Object.assign({}, item);\r\n          _item['items'] = newItems;\r\n\r\n          acc.push(_item);\r\n        }\r\n      }\r\n      return acc;\r\n    }, []);\r\n  }\r\n\r\n  public contains(text: string, searchedText: string): boolean {\r\n    return text.toLowerCase().includes((searchedText || \"\").toLowerCase());\r\n  }\r\n\r\n  public setSelectOption(value: any) {\r\n    const optionName = this.data.OptionName || this.itemDataField;\r\n    this.data.SelectOptions = Object.assign([], value);\r\n    this.group.zData[optionName.slice(12)] = this.data.SelectOptions;\r\n  }\r\n\r\n  public focus() {\r\n    if (this.comboboxComponent) {\r\n      this.comboboxComponent.focus();\r\n      return true;\r\n    }\r\n    if (this.multiselect) {\r\n      this.multiselect.focus();\r\n      return true;\r\n    }\r\n    if (this.multiselecttree) {\r\n      this.multiselecttree.focus();\r\n      return true;\r\n    }\r\n    if (this.dropdownlistComponent) {\r\n      this.dropdownlistComponent.focus();\r\n      return true;\r\n    }\r\n    return false;\r\n  }\r\n\r\n  private setComponentToUse() {\r\n    if (this.data.InternalComponentType && Object.values(InternalComponentType_DropDown).includes(this.data.InternalComponentType as any)) {\r\n      this.componentType = this.data.InternalComponentType as any;\r\n    }\r\n    else if (!this.data.Multiple) {\r\n      this.componentType = InternalComponentType_DropDown.combobox;\r\n    }\r\n    else if (this.data.Multiple && !this.data.EnableCheckbox) {\r\n      this.componentType = InternalComponentType_DropDown.multiselect;\r\n    }\r\n    else if (this.data.Multiple && this.data.EnableCheckbox) {\r\n      this.componentType = InternalComponentType_DropDown.multiselecttree;\r\n      this.setupDataItems();\r\n      this.setDefaultExpandable();\r\n    }\r\n  }\r\n\r\n  public getDataItems(): Array<any> {\r\n    const modelValue = this.group.zModel[this.data.Value];\r\n    return this.allDataItems.filter(x => modelValue.includes(x[this.itemValueField || 'Id']));\r\n  }\r\n\r\n  private setupDataItems() {\r\n    const modelValue = this.group.zModel[this.data.Value];\r\n    if (modelValue && modelValue.length > 0) {\r\n      this.populateDataWithoutHierarchy(this.getItemsData());\r\n    }\r\n  }\r\n\r\n  private populateDataWithoutHierarchy(dataItems) {\r\n    for (const dataItem of dataItems) {\r\n      this.allDataItems.push(dataItem);\r\n      if (Array.isArray(dataItem.Value)) {\r\n        this.populateDataWithoutHierarchy(dataItem.Value);\r\n      }\r\n    }\r\n  }\r\n\r\n  public setDefaultExpandable() {\r\n    if (this.data.TreeListInitiallyExpandedDataIds) {\r\n      const idList = typeof this.data.TreeListInitiallyExpandedDataIds == 'string' ? ZComponentHelper.getGroupValue(this.data.TreeListInitiallyExpandedDataIds as string, this.group) : this.data.TreeListInitiallyExpandedDataIds;\r\n      if (idList && Array.isArray(idList)) {\r\n        this.expandedKeys = idList;\r\n      }\r\n    }\r\n  }\r\n\r\n  private afterLoadzDataOptions() {\r\n     if (this.group.afterLoadzDataOptions) {\r\n       console.log(\"group.afterLoadzDataOptions triggered.\" + this.data);\r\n       this.group.afterLoadzDataOptions(this.group, this.data);\r\n     }\r\n  }\r\n\r\n  //#region Close drop-down selection upon page scroll\r\n  private subscribeUISignal() {\r\n    this.eventSubscriptions.push(\r\n      this.componentService.uiSignalService.subscribeToEvent(SignalType.PageScrollStart).subscribe({\r\n        next: () => {\r\n          this.closeDownDrop();\r\n        }\r\n      })\r\n    );\r\n  }\r\n\r\n  private closeDownDrop() {\r\n    const comp = this.getComponentInUseByType();\r\n    if (comp && comp.isOpen) {\r\n      comp.toggle(false);\r\n      comp.blur();\r\n    }\r\n  }\r\n\r\n  private getComponentInUseByType(): ComboBoxComponent | DropDownListComponent | MultiSelectComponent | MultiSelectTreeComponent {\r\n    switch (this.componentType) {\r\n      case InternalComponentType_DropDown.combobox:\r\n        return this.comboboxComponent;\r\n      case InternalComponentType_DropDown.multiselect:\r\n        return this.multiselect;\r\n      case InternalComponentType_DropDown.multiselecttree:\r\n        return this.multiselecttree;\r\n      case InternalComponentType_DropDown.dropdownlist:\r\n        return this.dropdownlistComponent;\r\n      default:\r\n        return null;\r\n    }\r\n  }\r\n  //#endregion\r\n}\r\n","<div [formGroup]=\"form\" class=\"zselectmultiple-container e1tag-style\" [style]=\"componentProperties.style.style\">\r\n  <ionic-selectable *ngIf=\"isMobileScreen()\" #selectComponent item-content searchFailText=\"Nothing found :(\"\r\n                    headerColor=\"primary\" clearButtonText=\"Clear\" [(ngModel)]=\"group.zModel[data.Value]\" [id]=\"data.Value\"\r\n                    [items]=\"getItemsData()\" [itemValueField]=\"itemValueField\" [itemTextField]=\"itemTextField\"\r\n                    [canAddItem]=\"!!data.OnAddItem\" [canClear]=\"true\" [placeholder]=\"data.PlaceHolder\"\r\n                    [canSearch]=\"!data['disable-search']\" [shouldFocusSearchbar]=\"!data['disable-search']\"\r\n                    [hasInfiniteScroll]=\"!!data.HasInfiniteScroll\" [isMultiple]=\"data.Multiple\"\r\n                    [isEnabled]=\"!(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n                    [shouldStoreItemValue]=\"true\" (onSearch)=\"onSearch($event)\"\r\n                    (onAddItem)=\"onAddItem($event)\" (onChange)=\"onChange_mobile($event)\" [style]=\"componentProperties.style.style1\" class=\"e1tag-style1\">\r\n\r\n    <ng-template ionicSelectableItemIconTemplate let-item=\"item\" let-isItemSelected=\"isItemSelected\">\r\n      <fa-icon slot=\"start\" class=\"isItemSelected e1tag-style2\" size=\"sm\" [icon]=\"['far', isItemSelected ? 'check-circle': 'circle']\"\r\n               [styles]=\"{'color': isItemSelected ? 'dodgerBlue' : 'lightGray'}\" [style]=\"componentProperties.style.style2\"></fa-icon>\r\n    </ng-template>\r\n\r\n    <ng-template ionicSelectableCloseButtonTemplate>\r\n      <!-- <ion-icon name=\"close-circle\"></ion-icon> -->\r\n      <fa-icon [icon]=\"'times-circle'\" size=\"md\" [style]=\"componentProperties.style.style3\" class=\"e1tag-style3\"></fa-icon>\r\n    </ng-template>\r\n\r\n    <ng-template ionicSelectableTitleTemplate>\r\n      <span class=e1tag-style4 [style]=\"componentProperties.style.style4\">{{data.Label}}</span>\r\n      <ion-text *ngIf=\"getIsRequiredValue()\" color=\"danger\">*</ion-text>\r\n    </ng-template>\r\n\r\n    <ng-template ionicSelectableItemTemplate let-item=\"item\">\r\n      <span class=\"e1tag-style5\" [style]=\"componentProperties.style.style5\">{{ getItemTemplate(item, data, group, itemValueField, itemTextField) }}</span>\r\n    </ng-template>\r\n  </ionic-selectable>\r\n  <kendo-combobox *ngIf=\"!isMobileScreen() && componentType == 'combobox'\"\r\n                class=\"input-field e1tag-style1\"\r\n                #comboboxComponent\r\n                [data]=\"getItemsData() | zselectTranslationParser : itemTextField : data : group | async\"\r\n                [valueField]=\"itemValueField\"\r\n                [textField]=\"itemTextField\"\r\n                [formControlName]=\"data.Value\"\r\n                [valuePrimitive]=\"true\"\r\n                [placeholder]=\"data.PlaceHolder\"\r\n                [allowCustom]=\"allowCustomValue\"\r\n                [kendoDropDownFilter]=\"filterSettings\"\r\n                [suggest]=\"true\"\r\n                [filterable]=\"data.Filterable == false ? false : true\"\r\n                [openOnFocus]=\"disableOpenOnFocus(comboboxComponent)\"\r\n                [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n                [class.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n                [ngClass]=\"data.Class\"\r\n                [loading]=\"isLoading\"\r\n                (valueChange)=\"onChange_desktop($event)\"\r\n                (filterChange)=\"handleFilter($event)\"\r\n                [virtual]=\"data.IsEnableVirtualization == true ? virtual : null\"\r\n                (close)=\"handleClose($event)\"\r\n                (opened)=\"onComboOpened()\"\r\n                [style]=\"componentProperties.style.style1\"\r\n                [clearButton]=\"data.ClearButton == false ? false : true\">\r\n    <ng-template kendoComboBoxItemTemplate let-dataItem>\r\n      <span #itemElement class=\"e1tag-style5\" [class.zselect-virtualization]=\"data.IsEnableVirtualization\" [style]=\"componentProperties.style.style5\">\r\n        {{ getItemTemplate(dataItem, data, group, itemValueField, itemTextField) }}\r\n      </span>\r\n    </ng-template>\r\n  </kendo-combobox>\r\n  <kendo-multiselect *ngIf=\"!isMobileScreen() && componentType == 'multiselect'\"\r\n                     class=\"input-field e1tag-style1\"\r\n                     #multiselect\r\n                     [data]=\"getItemsData() | zselectTranslationParser : itemTextField : data : group | async\"\r\n                     [valueField]=\"itemValueField\"\r\n                     [textField]=\"itemTextField\"\r\n                     [formControlName]=\"data.Value\"\r\n                     [valuePrimitive]=\"true\"\r\n                     [placeholder]=\"data.PlaceHolder\"\r\n                     [allowCustom]=\"allowCustomValue\"\r\n                     [filterable]=\"data.Filterable == false ? false : true\"\r\n                     [checkboxes]=\"data.EnableCheckbox\"\r\n                     [loading]=\"isLoading\"\r\n                     [autoClose]=\"autoClose\"\r\n                     [kendoDropDownFilter]=\"filterSettings\"\r\n                     [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n                     [class.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n                     [ngClass]=\"data.Class\"\r\n                     [virtual]=\"data.IsEnableVirtualization == true ? virtual : null\"\r\n                     (valueChange)=\"onChange_desktop($event)\"\r\n                     (filterChange)=\"handleFilter($event)\"\r\n                     (open)=\"onMultiSelectOpen($event)\"\r\n                     (close)=\"handleClose($event)\"\r\n                     (opened)=\"onMultiSelectOpened()\"\r\n                     [style]=\"componentProperties.style.style1\"\r\n                     [clearButton]=\"data.ClearButton == false ? false : true\">\r\n    <ng-template kendoMultiSelectItemTemplate let-dataItem>\r\n      <span #itemElement class=\"e1tag-style5\" [style]=\"componentProperties.style.style5\">\r\n        {{ getItemTemplate(dataItem, data, group, itemValueField, itemTextField) }}\r\n      </span>\r\n    </ng-template>\r\n  </kendo-multiselect>\r\n  <kendo-multiselecttree *ngIf=\"!isMobileScreen()  && componentType == 'multiselecttree'\"\r\n                         class=\"input-field e1tag-style1\"\r\n                         #multiselecttree\r\n                         kendoMultiSelectTreeExpandable\r\n                         [placeholder]=\"data.PlaceHolder\"\r\n                         [kendoMultiSelectTreeHierarchyBinding]=\"getItemsData() | zselectTranslationParser : itemTextField : data : group | async\"\r\n                         [kendoMultiSelectTreeSummaryTag]=\"componentSettings.kendoMultiSelectTreeSummaryTag\"\r\n                         childrenField=\"Value\"\r\n                         [hasChildren]=\"hasChildren\"\r\n                         [textField]=\"itemTextField\"\r\n                         [valueField]=\"itemValueField\"\r\n                         [valuePrimitive]=\"true\"\r\n                         (valueChange)=\"onChange_desktop($event)\"\r\n                         [dataItems]=\"getDataItems()\"\r\n                         [formControlName]=\"data.Value\"\r\n                         [loading]=\"isLoading\"\r\n                         [autoClose]=\"autoClose\"\r\n                         [expandOnFilter]=\"componentSettings.expandOnFilter\"\r\n                         [filterable]=\"data.Filterable == false ? false : true\"\r\n                         (filterChange)=\"handleMultiSelectTreeFilter($event)\"\r\n                         [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n                         [class.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n                         [ngClass]=\"data.Class\"\r\n                         (close)=\"handleClose($event)\"\r\n                         [style]=\"componentProperties.style.style1\"\r\n                         [(expandedKeys)]=\"expandedKeys\"\r\n                         [popupSettings]=\"componentSettings.popupSettings\"\r\n                         [clearButton]=\"data.ClearButton == false ? false : true\">\r\n    <ng-template kendoMultiSelectTreeNoDataTemplate>\r\n      <h4>\r\n        <span class=\"k-icon k-i-warning\"></span><br /><br />\r\n        No record found.\r\n      </h4>\r\n    </ng-template>\r\n  </kendo-multiselecttree>\r\n  <kendo-dropdownlist  *ngIf=\"!isMobileScreen()  && componentType == 'dropdownlist'\"\r\n                  class=\"input-field e1tag-style1\"\r\n                  #dropdownlistComponent\r\n                  [data]=\"getItemsData() | zselectTranslationParser : itemTextField : data : group | async\"\r\n                  [valueField]=\"itemValueField\"\r\n                  [textField]=\"itemTextField\"\r\n                  [formControlName]=\"data.Value\"\r\n                  [valuePrimitive]=\"true\"\r\n                  [placeholder]=\"data.PlaceHolder\"\r\n                  [allowCustom]=\"allowCustomValue\"\r\n                  [kendoDropDownFilter]=\"filterSettings\"\r\n                  [suggest]=\"true\"\r\n                  [filterable]=\"data.Filterable == false ? false : true\"\r\n                  [openOnFocus]=\"disableOpenOnFocus(comboboxComponent)\"\r\n                  [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n                  [class.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n                  [ngClass]=\"data.Class\"\r\n                  [loading]=\"isLoading\"\r\n                  (valueChange)=\"onChange_desktop($event)\"\r\n                  (filterChange)=\"handleFilter($event)\"\r\n                  [virtual]=\"data.IsEnableVirtualization == true ? virtual : null\"\r\n                  (close)=\"handleClose($event)\"\r\n                  (opened)=\"onDropDownListOpened()\"\r\n                  [style]=\"componentProperties.style.style1\"\r\n                  [clearButton]=\"data.ClearButton == false ? false : true\">\r\n    <ng-template kendoDropDownListItemTemplate let-dataItem>\r\n      <span #itemElement class=\"e1tag-style5\" [class.zselect-virtualization]=\"data.IsEnableVirtualization\" [style]=\"componentProperties.style.style5\">\r\n        {{ getItemTemplate(dataItem, data, group, itemValueField, itemTextField) }}\r\n      </span>\r\n    </ng-template>\r\n  </kendo-dropdownlist>\r\n</div>\r\n","/********** Angular **********/\r\nimport { Component, OnInit, ViewChild, ViewEncapsulation } from \"@angular/core\";\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { DateTimePicker } from \"@syncfusion/ej2-angular-calendars\";\r\nimport { FormValidator, FormValidatorModel } from '@syncfusion/ej2-inputs';\r\n\r\n/********** Component & Service **********/\r\nimport { InputFieldBase } from \"../components/inputfieldbase.component\";\r\nimport { ZComponentService } from \"../services/zcomponent.service\";\r\nimport { ZComponent, ZComponentHelper, ZField } from \"mmhglobal-zcore\";\r\n\r\n\r\n@Component({\r\n  selector: 'app-sfdatetimepicker',\r\n  templateUrl: './sfdatetimepicker.component.html',\r\n  styleUrls: ['./sfdatetimepicker.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n})\r\n\r\nexport class SfdatetimepickerComponent extends InputFieldBase implements ZComponent, OnInit {\r\n  @ViewChild(\"sfdatetimepicker\") sfdatetimepicker: DateTimePicker;\r\n  public minDate: Date = null;\r\n  public maxDate: Date = null;\r\n  public interval: number;\r\n  public disableStrictMode: boolean = false;\r\n  public formObject?: FormValidator;\r\n\r\n  constructor(\r\n    componentService: ZComponentService\r\n  ) {\r\n    super(componentService);\r\n  }\r\n\r\n  ngOnInit() {\r\n    ZComponentHelper.setComponentProperties(this);\r\n    ZComponentHelper.registerComponent(this);\r\n    super.setupInnerField();\r\n    this.interval = this.data.StepValue ? Number(this.data.StepValue) : 30;\r\n    this.disableStrictMode = !this.data.DisableStrictMode;\r\n    this.setMinAndMaxDateRange();\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    this.componentService.decrementComponentCounterForField(this.data);\r\n  }\r\n\r\n  private convertDateTimeValueToString(value: any): any {\r\n    if (value == undefined) {\r\n      return undefined;\r\n    }\r\n\r\n    const valueDate = value as Date;\r\n\r\n    if (this.data.IsIgnoreTimeZone) {\r\n      const timezoneOffSet = new Date(value).getTimezoneOffset();\r\n      valueDate.setMinutes(valueDate.getMinutes() + (-timezoneOffSet));\r\n      return valueDate.toISOString();\r\n    }\r\n\r\n    return (value instanceof Date ? value : new Date(value)).toISOString();\r\n\r\n  }\r\n\r\n  public setDateRange = (MinDate: any, MaxDate: any): any => {\r\n    if (!isNaN(Date.parse(MinDate))) {\r\n      this.minDate = new Date(MinDate);\r\n    }\r\n    if (!isNaN(Date.parse(MaxDate))) {\r\n      this.maxDate = new Date(MaxDate);\r\n    }\r\n  }\r\n\r\n  public updateElementClasses() {\r\n    // adding if condition to check if the component is sfdatetimepicker, to prevent styling error in other components\r\n    if (this.data?.Type === 'sfdatetimepicker') {\r\n      const inputElements = document.querySelectorAll('app-sfdatetimepicker .e-keyboard.e-datetimepicker');\r\n      const textboxElements = document.querySelectorAll('app-sfdatetimepicker .e-custom.e-datetime-wrapper');\r\n\r\n      this.updateInputElements(inputElements);\r\n      this.updateTextboxElements(textboxElements);\r\n    }\r\n  }\r\n\r\n  private updateInputElements(inputElements: NodeListOf<Element>): void {\r\n    inputElements.forEach((input: Element) => {\r\n      const className = this.componentProperties?.isReadOnly ? 'read-only-input' : 'editable-input';\r\n      (input as HTMLElement).classList.add(className);\r\n    });\r\n  }\r\n\r\n  private updateTextboxElements(textboxElements: NodeListOf<Element>): void {\r\n    textboxElements.forEach((textbox: Element) => {\r\n      const className = this.componentProperties?.isReadOnly ? 'read-only-textbox' : 'editable-textbox';\r\n      (textbox as HTMLElement).classList.add(className);\r\n    });\r\n\r\n    textboxElements.forEach(element => {\r\n\r\n      if (element.hasAttribute('style')) {\r\n        const styles = element.getAttribute('style');\r\n        if (!styles.includes('height')) {\r\n          element[\"style\"].height = '30px'; // Set height to 90%\r\n        }\r\n      }\r\n    });\r\n  }\r\n\r\n  public onChange(args: any) {\r\n\r\n    const value = args.value;\r\n    const formControl = this.form.controls[this.data.Value];\r\n    const val = this.convertDateTimeValueToString(value);\r\n\r\n    if (formControl) {\r\n      formControl.setValue(val);\r\n      formControl.markAsTouched();\r\n    }\r\n    super.onChange(null, val);\r\n  }\r\n\r\n  private setMinAndMaxDateRange() {\r\n    const minDateGroupValue = ZComponentHelper.getGroupValue(this.data.MinDate as any, this.group);\r\n    const minDateValue = minDateGroupValue || this.data.MinDate;\r\n\r\n    const maxDateGroupValue = ZComponentHelper.getGroupValue(this.data.MaxDate as any, this.group);\r\n    const maxDateValue = maxDateGroupValue || this.data.MaxDate;\r\n    this.setDateRange(minDateValue, maxDateValue);\r\n  }\r\n\r\n}\r\n","<div class=\"zdate-container e1tag-style\" [style]=\"componentProperties.style.style\">\r\n  <div class=\"dateTimeDesktopContainer\" *ngIf=\"!isMobileScreen()\" [ngClass]=\"updateElementClasses()\">\r\n    <ejs-datetimepicker #sfdatetimepicker\r\n                        [ngModel]=\"form.get(data.Value).value | dateParser : data\"\r\n                        (change)=\"onChange($event)\"\r\n                        [min]=\"minDate\"\r\n                        [max]=\"maxDate\"\r\n                        [step]=\"interval\"\r\n                        [format]=\"data | dateFormatKendo\"\r\n                        [required]=\"(!!componentProperties.isRequiredField ? group[componentProperties.isRequiredField] : componentProperties.isRequired)\"\r\n                        [placeholder]=\"data.PlaceHolder\"\r\n                        [showClearButton]=\"data.ClearButton\"\r\n                        [strictMode]=\"disableStrictMode\"\r\n                        cssClass=\"e-custom\"\r\n                        [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n                        [style]=\"componentProperties.style.style1\">\r\n    </ejs-datetimepicker>\r\n  </div>\r\n</div>\r\n","/********** Angular **********/\r\nimport { Component, OnInit, OnDestroy, ViewChild } from \"@angular/core\";\r\n\r\n/********** Ionic **********/\r\nimport { IonicSelectableComponent } from \"ionic-selectable\";\r\n\r\n/********** Plugin **********/\r\nimport { Subscription, Observable, of } from \"rxjs\";\r\nimport { delay } from 'rxjs/operators';\r\nimport { ComboBoxComponent } from \"@progress/kendo-angular-dropdowns\";\r\n\r\n/********** Component & Service **********/\r\nimport { InputFieldBase } from \"../components/inputfieldbase.component\";\r\nimport { ZComponentService } from \"../services/zcomponent.service\";\r\nimport {\r\n  CacheService, ResourceApiService, WebApiService,\r\n  ZComponent, ZComponentHelper, ZSelectMultipleTemplateParams, ZSelectPostApiParams\r\n} from \"mmhglobal-zcore\";\r\n\r\n\r\n@Component({\r\n  selector: \"app-zpostselectinput\",\r\n  templateUrl: \"./zpostselectinput.component.html\",\r\n  styleUrls: [\"./zpostselectinput.component.scss\"]\r\n})\r\n\r\nexport class ZpostselectinputComponent extends InputFieldBase implements ZComponent, OnInit, OnDestroy {\r\n  @ViewChild(\"comboBox\") comboBox: ComboBoxComponent;\r\n  @ViewChild(\"selectComponent\", { static: true }) selectComponent: IonicSelectableComponent;\r\n\r\n  items: Array<any> = [];\r\n  modelzData: Array<any>;\r\n  infinitezData: Array<any> = [];\r\n  infiniteSearchText = null;\r\n  // subscription: Subscription;\r\n  toggleSelectable = true;\r\n  itemValueField: string = null;\r\n  itemTextField: string = null;\r\n  itemDataField: string = null;\r\n  itemTemplate = \"{{item[itemTextField]}}\";\r\n  infiniteScrollPageNo = 0;\r\n  isLoading = true;\r\n  dataInfo: {} = {\r\n    \"itemsResourceURL\": \"\",\r\n    \"optionFilters\": \"\",\r\n    \"totalCount\": 0\r\n  };\r\n\r\n  private debounceSub: Subscription;\r\n\r\n  constructor(\r\n    public componentService: ZComponentService,\r\n    private resourceApiService: ResourceApiService,\r\n    private webApiService: WebApiService,\r\n    private cacheService: CacheService\r\n  ) {\r\n    super(componentService);\r\n  }\r\n\r\n  ngOnInit() {\r\n    this.isLoading = true;\r\n    super.setupInnerField();\r\n    ZComponentHelper.setSelectMultipleTextValue(this.data.CCSelectOptions, this);\r\n\r\n    const fieldValue = this.data.CCValue;\r\n    let getzDataForzModel$: Observable<any>;\r\n    if (this.data.HasInfiniteScroll && this.data.InfiniteScroll$\r\n      && this.group.zModel && this.group.zModel[fieldValue]) {\r\n      const recordId = this.group.zModel[fieldValue];\r\n      getzDataForzModel$ = ZComponentHelper.getInfiniteData(null, '', this, recordId.toString());\r\n      if (getzDataForzModel$) {\r\n        getzDataForzModel$.subscribe((zdata) => {\r\n          console.log(this.data.Name, ' - initial zData load: ', zdata);\r\n          this.isLoading = false;\r\n        });\r\n      } else {\r\n        this.isLoading = false;\r\n      }\r\n      if (!this.isMobileScreen()) {\r\n        this.handleFilter(null, true);\r\n      }\r\n    } else {\r\n      if (this.data.CCOptionResourceURL) {\r\n        this.lazyLoadDataOptions().subscribe(() => {\r\n          this.isLoading = false;\r\n        });\r\n      } else {\r\n        this.isLoading = false;\r\n      }\r\n    }\r\n    super.focusOnDefault(this.focus.bind(this));\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    this.componentService.decrementComponentCounterForField(this.data);\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    // if (this.subscription) {\r\n    //   this.subscription.unsubscribe();\r\n    // }\r\n    if (this.debounceSub) {\r\n      this.debounceSub.unsubscribe();\r\n    }\r\n  }\r\n\r\n  lazyLoadDataOptions(): Observable<any> {\r\n    const resourceUrl = this.resourceApiService.getURL(\r\n      this.data.CCOptionResourceURL\r\n    );\r\n\r\n    const filterParam = new ZSelectPostApiParams();\r\n    filterParam.sorts = this.data.CCOptionSort;\r\n    filterParam.columns = this.data.CCOptionColumns;\r\n    filterParam.filters = this.data.CCOptionFilter;\r\n\r\n    return ZComponentHelper.getDataOptions(\r\n      this.data.CCOptionName,\r\n      filterParam,\r\n      this.group,\r\n      resourceUrl,\r\n      this.cacheService,\r\n      this.webApiService,\r\n      this.data['DisableCache']\r\n    );\r\n  }\r\n\r\n  getItemsData() {\r\n    if (this.data.HasInfiniteScroll) {\r\n      return this.infinitezData;\r\n    }\r\n    const optionName = this.data.CCOptionName || this.itemDataField || 'group.zData.' + this.data.Name;\r\n    if (Array.isArray(this.data.CCSelectOptions) && !this.group.zData[optionName.slice(12)]) {\r\n      // return selectionOptions;\r\n      // return this.data.SelectOptions;\r\n      this.group.zData[optionName.slice(12)] = this.data.CCSelectOptions;\r\n      this.itemDataField = optionName;\r\n    }\r\n\r\n    if (optionName.startsWith('zData.')) {\r\n      // this.items = this.group.zData[optionName.slice(6)];\r\n      return this.group.zData[optionName.slice(6)] || [];\r\n    }\r\n    if (optionName.startsWith('group.zData.')) {\r\n      // this.items = this.group.zData[optionName.slice(12)];\r\n      return this.group.zData[optionName.slice(12)] || [];\r\n    }\r\n    if (optionName.startsWith('group.')) {\r\n      // this.items = this.group[optionName.slice(6)];\r\n      return this.group[optionName.slice(6)] || [];\r\n    }\r\n    if (optionName) {\r\n      // this.items = this.group[optionName];\r\n      return this.group[optionName] || [];\r\n    }\r\n    console.warn(this.data.Name, ' - Invalid setting for OptionName: ', optionName);\r\n  }\r\n\r\n  public onChangeCC_desktop(event: any) {\r\n    super.onChangeCC(null, event)\r\n    this.handleInfiniteScrollOnChange(event);\r\n  }\r\n\r\n  public onChange_mobile(event: { component: IonicSelectableComponent; value: any }) {\r\n    super.onChange(event)\r\n    const fc = this.form.controls[this.data.CCValue];\r\n    this.handleClose();\r\n\r\n    if (\r\n      super.getIsRequiredValue() && (event.value === null || event.value.length === 0)\r\n    ) {\r\n      fc.setErrors({ required: true });\r\n    } else {\r\n      fc.setErrors(null);\r\n    }\r\n\r\n    this.handleInfiniteScrollOnChange(event.value);\r\n  }\r\n\r\n  private handleInfiniteScrollOnChange(value: string) {\r\n    if (this.data.HasInfiniteScroll && !!this.data.InfiniteScroll$) {\r\n      const textField = this.itemTextField.toString();\r\n      const valueField = this.itemValueField.toString();\r\n      let zdataModel = [];\r\n      if (value) {\r\n        zdataModel = this.infinitezData.filter(x => x[valueField] === value);\r\n        this.modelzData = zdataModel.slice();\r\n      }\r\n      if (this.itemDataField.startsWith('group.zData.')) {\r\n        this.group.zData[this.itemDataField.slice(12)] = zdataModel;\r\n      } else if (this.itemDataField.startsWith('group.')) {\r\n        this.group[this.itemDataField.slice(6)] = zdataModel;\r\n      }\r\n    }\r\n  }\r\n\r\n  clearItems() {\r\n    this.selectComponent.clear();\r\n    this.selectComponent.close();\r\n  }\r\n\r\n  toggleItems() {\r\n    this.selectComponent.toggleItems(this.toggleSelectable);\r\n    this.toggleSelectable = !this.toggleSelectable;\r\n  }\r\n\r\n  confirmItems() {\r\n    this.selectComponent.confirm();\r\n    this.selectComponent.close();\r\n  }\r\n\r\n  onSearch(event: { component: IonicSelectableComponent; text: string }) {\r\n    // console.log(\"At zselectmultiple.component (onSearch): \", event);\r\n    const component = event.component;\r\n    if (component) {\r\n      component.startSearch();\r\n      component.enableInfiniteScroll();\r\n    }\r\n\r\n    // if (this.subscription) {\r\n    //   this.subscription.unsubscribe();\r\n    // }\r\n\r\n    if (this.data.HasInfiniteScroll) {\r\n      if (event.text !== null && event.text !== this.infiniteSearchText) {\r\n        this.infiniteScrollPageNo = 0;\r\n      }\r\n      this.getInfiniteData(event);\r\n    } else {\r\n      this.infiniteScrollPageNo = 0;\r\n      if (component) {\r\n        component.items = [];\r\n      }\r\n      const params = {\r\n        referId: null,\r\n        pageNo: 0,\r\n        pageSize: 15,\r\n        sortColumnName: \"\",\r\n        sortOrder: \"\",\r\n        sortColumnNames: [],\r\n        sortOrders: [],\r\n        filterParams: [],\r\n        parameters: \"\"\r\n      };\r\n      const searchFields = this.data.SearchFields\r\n        ? this.data.SearchFields\r\n        : this.itemTextField;\r\n      const filteritems = ZComponentHelper.filterSearchItems(\r\n        this.getItemsData(),\r\n        // this.items,\r\n        event.text,\r\n        searchFields,\r\n        params.pageNo,\r\n        params.pageSize\r\n      );\r\n      if (component) {\r\n        const items = component.items.concat(filteritems);\r\n        component.items = items;\r\n        component.endInfiniteScroll();\r\n        component.endSearch();\r\n        this.isLoading = false;\r\n      }\r\n    }\r\n  }\r\n\r\n  getInfiniteData(event: {\r\n    component: IonicSelectableComponent;\r\n    text: string;\r\n  }) {\r\n    ZComponentHelper.getInfiniteData(event.component, event.text, this);\r\n  }\r\n\r\n  handleFilter(value: any, justOneTime?: boolean) {\r\n    if (this.debounceSub) {\r\n      this.debounceSub.unsubscribe();\r\n    }\r\n    this.debounceSub = of([]).pipe(delay(500)).subscribe(() => {\r\n      this.isLoading = true;\r\n      this.onSearch({ component: null, text: value });\r\n      // if (this.loadInfiniteDataSub) {\r\n      //   this.loadInfiniteDataSub.unsubscribe();\r\n      // }\r\n      // this.loadInfiniteDataSub = new Subject(false);\r\n      // this.handleFilter(null);\r\n      // interval(2000).pipe(takeUntil(this.loadInfiniteDataSub)).subscribe(() => {\r\n      //   this.onSearch({ component: null, text: value });\r\n      //   if (justOneTime) {\r\n      //     this.handleClose();\r\n      //   }\r\n      // });\r\n    });\r\n  }\r\n\r\n  handleOpen() {\r\n    if (this.data.HasInfiniteScroll) {\r\n      this.handleFilter(null);\r\n      //   // if (this.loadInfiniteDataSub) {\r\n      //   //   this.loadInfiniteDataSub.unsubscribe();\r\n      //   // }\r\n      //   // this.loadInfiniteDataSub = new Subject();\r\n      //   // // this.handleFilter(null);\r\n      //   // interval(3000).pipe(takeUntil(this.loadInfiniteDataSub)).subscribe(() => {\r\n      // this.handleFilter(null);\r\n      //   // });\r\n    }\r\n  }\r\n\r\n  handleClose() {\r\n    // if (this.data.HasInfiniteScroll) {\r\n    //   if (this.loadInfiniteDataSub) {\r\n    //     this.loadInfiniteDataSub.next(true);\r\n    //     // this.loadInfiniteDataSub.complete();\r\n    //   }\r\n    // }\r\n  }\r\n\r\n  handleBlur() {\r\n    // this.handleClose();\r\n  }\r\n\r\n  getItemTemplate(\r\n    item: any,\r\n    data: any,\r\n    group: any,\r\n    itemValueField: string,\r\n    itemTextField: string\r\n  ) {\r\n    // ToDO: itemValueField and itemTextField\r\n    if (this.data.ItemTemplate) {\r\n      const getTemplateFunc = ZComponentHelper.getGroupEvalValue.call(\r\n        this,\r\n        this.data.ItemTemplate\r\n      );\r\n      return getTemplateFunc({\r\n        item,\r\n        data,\r\n        group,\r\n        itemValueField,\r\n        itemTextField\r\n      } as ZSelectMultipleTemplateParams);\r\n    } else if (itemTextField) {\r\n      return item[itemTextField];\r\n    } else {\r\n      // return item[itemTextField];\r\n      return Object.values(item).join(\", \");\r\n    }\r\n  }\r\n\r\n  onAddItem(event: any) {\r\n    const f = ZComponentHelper.getGroupEvalValue.call(this, this.data.OnAddItem);\r\n    if (typeof f === 'function') {\r\n      const callFunc = f.bind(this.group.ctrlScope);\r\n      return callFunc();\r\n    }\r\n    console.warn('Invalid declaration of OnAddItem: ', f);\r\n    return;\r\n  }\r\n\r\n  public focus() {\r\n    if (this.comboBox) {\r\n      this.comboBox.focus();\r\n      return true;\r\n    }\r\n    return false;\r\n  }\r\n}\r\n","<div [formGroup]=\"form\" class=\"zpostselectinput-container e1tag-style\" [style]=\"componentProperties.style.style\">\r\n  <div *ngIf=\"isMobileScreen() && !isLoading\" style=\"display:flex; justify-content: space-between; width: 100%\" class=\"e1tag-style1\" [style]=\"componentProperties.style.style1\">\r\n    <span class=\"ccinput-ccvalue-container e1tag-style2\" [style]=\"componentProperties.style.style2\">\r\n      <ionic-selectable #selectComponent item-content [id]=\"data.CCValue\" headerColor=\"primary\" clearButtonText=\"Clear\"\r\n        [canClear]=\"true\" searchFailText=\"Nothing found :(\" [canSearch]=\"!data['disable-search']\"\r\n        [placeholder]=\"data.CCPlaceHolder\" [(ngModel)]=\"group.zModel[data.CCValue]\"\r\n        [shouldFocusSearchbar]=\"!data['disable-search']\" [hasInfiniteScroll]=\"!!data.HasInfiniteScroll\"\r\n        (onSearch)=\"onSearch($event)\" (onInfiniteScroll)=\"getInfiniteData($event)\" [isMultiple]=\"data.Multiple\"\r\n        [isEnabled]=\"!(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n        [items]=\"getItemsData()\" [itemValueField]=\"itemValueField\" [itemTextField]=\"itemTextField\"\r\n        [shouldStoreItemValue]=\"true\" [canAddItem]=\"!!data.OnAddItem\" (onAddItem)=\"onAddItem($event)\"\r\n        (onChange)=\"onChange_mobile($event)\" [style]=\"componentProperties.style.style3\" class=\"e1tag-style3\">\r\n\r\n        <ng-template ionicSelectableItemIconTemplate let-item=\"item\" let-isItemSelected=\"isItemSelected\">\r\n          <fa-icon slot=\"start\" class=\"isItemSelected e1tag-style4\" [icon]=\"['far', isItemSelected ? 'check-circle': 'circle']\"\r\n            size=\"sm\" [styles]=\"{'color': isItemSelected ? 'dodgerBlue' : 'lightGray'}\" [style]=\"componentProperties.style.style4\"></fa-icon>\r\n        </ng-template>\r\n\r\n        <ng-template ionicSelectableCloseButtonTemplate>\r\n          <!-- <ion-icon name=\"close-circle\"></ion-icon> -->\r\n          <fa-icon [icon]=\"'times-circle'\" size=\"md\" class=\"e1tag-style5\" [style]=\"componentProperties.style.style5\"></fa-icon>\r\n        </ng-template>\r\n\r\n        <ng-template ionicSelectableTitleTemplate>\r\n          {{data.Label}}\r\n          <ion-text\r\n            *ngIf=\"(!!componentProperties.isRequiredField ? group[componentProperties.isRequiredField] : componentProperties.isRequired)\"\r\n            color=\"danger\">*</ion-text>\r\n        </ng-template>\r\n\r\n        <ng-template ionicSelectableItemTemplate let-item=\"item\">\r\n          {{ getItemTemplate(item, data, group, itemValueField, itemTextField) }}\r\n          <!-- <ng-template zselectitemelement [item]=\"item\"></ng-template> -->\r\n        </ng-template>\r\n      </ionic-selectable>\r\n    </span>\r\n    <span [formGroup]=\"form\" class=\"ccinput-value-container e1tag-style7\" [style]=\"componentProperties.containerStyle.style7\">\r\n      <ion-input [id]=\"data.Value\" [placeholder]=\"data.PlaceHolder\" [type]=\"'text'\" [formControlName]=\"data.Value\"\r\n        [readonly]=\"data.ReadOnly\" [inputmode]=\"'text'\" [style]=\"componentProperties.style.style6\" class=\"e1tag-style6\"></ion-input>\r\n    </span>\r\n    <app-uivalidationmessage style=\"flex-basis: 5%;\" [group]=\"group\" [data]=\"data\" [form]=\"form\">\r\n    </app-uivalidationmessage>\r\n  </div>\r\n  <div *ngIf=\"!isMobileScreen()\" style=\"display:flex; justify-content: space-between; width: 100%\" class=\"e1tag-style1\" [style]=\"componentProperties.style.style1\">\r\n    <span [style]=\"componentProperties.style.style2\" class=\"ccinput-ccvalue-container e1tag-style2\">\r\n      <kendo-combobox [id]=\"data.CCValue\" [data]=\"getItemsData()\" [valueField]=\"itemValueField\"\r\n        [textField]=\"itemTextField\" [formControlName]=\"data.CCValue\" [valuePrimitive]=\"true\"\r\n        [placeholder]=\"data.CCPlaceHolder\" (valueChange)=\"onChangeCC_desktop($event)\" [filterable]=\"!!data.HasInfiniteScroll\"\r\n        [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n        (filterChange)=\"handleFilter($event)\" (open)=\"handleOpen()\" (close)=\"handleClose()\" (blur)=\"handleBlur()\"\r\n        class=\"input-field e1tag-style3\" [loading]=\"isLoading\" [style]=\"componentProperties.style.style3\"\r\n        #comboBox>\r\n      </kendo-combobox>\r\n    </span>\r\n    <span [formGroup]=\"form\" class=\"ccinput-value-container e1tag-style7\" [style]=\"componentProperties.containerStyle.style7\">\r\n        <app-ztext [data]=\"data\" [group]=\"group\" [form]=\"form\"\r\n        [containerField]=\"containerField\" [componentProperties]=\"componentProperties\" class=\"e1tag-container-style6\"\r\n        [style]=\"componentProperties.containerStyle.style6\">\r\n      </app-ztext>\r\n    </span>\r\n  </div>\r\n</div>\r\n","/********** Angular **********/\r\nimport { Component, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { NumericTextBoxComponent } from '@progress/kendo-angular-inputs';\r\n\r\n/********** Component & Service **********/\r\nimport { InputFieldBase } from '../components/inputfieldbase.component';\r\nimport { ZComponentService } from '../services/zcomponent.service';\r\nimport { ZComponent, ZComponentHelper } from \"mmhglobal-zcore\";\r\nimport { Validators } from '@angular/forms';\r\n\r\n@Component({\r\n  selector: 'app-znumeric',\r\n  templateUrl: './znumeric.component.html',\r\n  styleUrls: ['./znumeric.component.scss'],\r\n})\r\nexport class ZnumericComponent extends InputFieldBase implements ZComponent, OnInit, OnDestroy {\r\n  @ViewChild(\"numeric\") numeric: NumericTextBoxComponent;\r\n  public inputMode = \"decimal\";\r\n  public minValue = 0;\r\n  public maxValue = 0;\r\n  private minValidator;\r\n  private maxValidator;\r\n\r\n  constructor(\r\n    public componentService: ZComponentService\r\n  ) {\r\n    super(componentService);\r\n  }\r\n\r\n  ngOnInit() {\r\n    super.setupInnerField();\r\n    this.setInitMinAndMaxValue();\r\n    super.focusOnDefault(this.focus.bind(this));\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this.removeMinAndMaxValidator();\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    this.componentService.decrementComponentCounterForField(this.data);\r\n  }\r\n\r\n  setMinValue(newValue: number) {\r\n    this.minValue = newValue;\r\n\r\n    // mark this control as touched to trigger for validation\r\n    const control = this.form.controls[this.data.Value];\r\n    control.markAsTouched();\r\n  }\r\n\r\n  setMaxValue(newValue: number) {\r\n    this.maxValue = newValue;\r\n\r\n    // mark this control as touched to trigger for validation\r\n    const control = this.form.controls[this.data.Value];\r\n    control.markAsTouched();\r\n  }\r\n\r\n  public focus() {\r\n    if (this.numeric) {\r\n      this.numeric.focus();\r\n      return true;\r\n    }\r\n    return false;\r\n  }\r\n\r\n  private setInitMinAndMaxValue() {\r\n    if (typeof this.data.MinValue == 'string' && (this.data.MinValue as any).toString().startsWith('group.')) {\r\n      this.minValue = ZComponentHelper.getGroupValue((this.data.MinValue as any).toString(), this.group);\r\n    }\r\n    else {\r\n      this.minValue = this.data.MinValue;\r\n    }\r\n\r\n    if (typeof this.data.MaxValue == 'string' && (this.data.MaxValue as any).toString().startsWith('group.')) {\r\n      this.maxValue = ZComponentHelper.getGroupValue((this.data.MaxValue as any).toString(), this.group);\r\n    }\r\n    else {\r\n      this.maxValue = this.data.MaxValue;\r\n    }\r\n\r\n    this.addMinAndMaxValidator();\r\n  }\r\n\r\n  private addMinAndMaxValidator() {\r\n    // Setup form validator for ionic components only (Kendo component will be auto setup)\r\n    if (this.isMobileScreen()) {\r\n      const control = this.form?.controls[this.data.Value];\r\n      if (control) {\r\n        if (this.minValue != undefined) {\r\n          this.minValidator = Validators.min(Number(this.minValue));\r\n          control.addValidators(this.minValidator);\r\n        }\r\n\r\n        if (this.maxValue != undefined) {\r\n          this.maxValidator = Validators.max(Number(this.maxValue));\r\n          control.addValidators(this.maxValidator);\r\n        }\r\n        control.updateValueAndValidity();\r\n      }\r\n    }\r\n  }\r\n\r\n  private removeMinAndMaxValidator() {\r\n    this.minValue = null;\r\n    this.maxValue = null;\r\n\r\n    const control = this.form?.controls[this.data.Value];\r\n    if (control) {\r\n      if (this.isMobileScreen()) {\r\n        if (control.hasValidator(this.minValidator)) {\r\n          control.removeValidators(this.minValidator)\r\n        }\r\n\r\n        if (control.hasValidator(this.maxValidator)) {\r\n          control.removeValidators(this.maxValidator)\r\n        }\r\n      }\r\n      control.updateValueAndValidity();\r\n    }\r\n  }\r\n}\r\n","<div [formGroup]=\"form\" class=\"znumeric-container e1tag-style\" [style]=\"componentProperties.style.style\">\r\n  <!-- Ion Input for Mobile Screen -->\r\n  <ion-input *ngIf=\"isMobileScreen()\"\r\n             #znumericField\r\n             class=\"e1tag-style1\"\r\n             [attr.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n             [formControlName]=\"data.Value\"\r\n             [id]=\"data.Value\"\r\n             [inputmode]=\"inputMode\"\r\n             [max]=\"maxValue\"\r\n             [min]=\"minValue\"\r\n             [placeholder]=\"data.PlaceHolder\"\r\n             [step]=\"data.StepValue\"\r\n             [style]=\"componentProperties.style.style1\"\r\n             type=\"number\"\r\n             [value]=\"0 | znumeric : form : data\">\r\n  </ion-input>\r\n\r\n  <!-- Kendo NumericTextBox for Non-Mobile Screen -->\r\n  <kendo-numerictextbox *ngIf=\"!isMobileScreen()\"\r\n                        #numeric\r\n                        class=\"input-field e1tag-style1\"\r\n                        [class.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n                        [decimals]=\"data.DecimalPlace\"\r\n                        [formControlName]=\"data.Value\"\r\n                        [format]=\"data.FormatOptions\"\r\n                        [id]=\"data.Value\"\r\n                        [max]=\"maxValue\"\r\n                        [min]=\"minValue\"\r\n                        [placeholder]=\"data.PlaceHolder\"\r\n                        [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n                        [spinners]=\"data.ShowSpinners\"\r\n                        [changeValueOnScroll] = \"data.ChangeValueOnScroll\"\r\n                        [step]=\"data.StepValue\"\r\n                        [style]=\"componentProperties.style.style1\"\r\n                        [value]=\"0 | znumeric : form : data\"\r\n                        (valueChange)=\"onChange(null, $event)\"\r\n                        [autoCorrect]=\"data.AutoCorrect\">\r\n  </kendo-numerictextbox>\r\n</div>\r\n","/********** Angular **********/\r\nimport { Component, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { TextAreaComponent } from '@progress/kendo-angular-inputs';\r\n\r\n/********** Component & Service **********/\r\nimport { InputFieldBase } from '../components/inputfieldbase.component';\r\nimport { ZComponentService } from '../services/zcomponent.service';\r\nimport { ZComponent, ZComponentHelper } from 'mmhglobal-zcore';\r\nimport { Subscription } from 'rxjs';\r\n\r\n\r\n@Component({\r\n  selector: 'app-ztextarea',\r\n  templateUrl: './ztextarea.component.html',\r\n  styleUrls: ['./ztextarea.component.scss'],\r\n})\r\n\r\nexport class ZtextareaComponent extends InputFieldBase implements ZComponent, OnInit, OnDestroy {\r\n  @ViewChild(\"textarea\") textarea: TextAreaComponent;\r\n  private valueChangeSubscription: Subscription;\r\n\r\n  constructor(\r\n    componentService: ZComponentService\r\n  ) {\r\n    super(componentService)\r\n  }\r\n\r\n  public charCounterDisplayStr: string;\r\n\r\n  ngOnInit() {\r\n    super.setupInnerField();\r\n    this.setCharCounterDisplayStr();\r\n    this.subscribeToValueChange();\r\n    super.focusOnDefault(this.focus.bind(this));\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    this.componentService.decrementComponentCounterForField(this.data);\r\n  }\r\n\r\n  private setCharCounterDisplayStr() {\r\n    let characterCount = 0;\r\n    if (this.group.zModel && this.group.zModel[this.data.Value]) {\r\n      characterCount = this.group.zModel[this.data.Value].length;\r\n    }\r\n    this.charCounterDisplayStr = `${characterCount} ${this.data.MaxLength ? (' / ' + this.data.MaxLength) : ''}`;\r\n  }\r\n\r\n  public override onChange(event: any, fieldValue?: any) {\r\n    super.onChange(event, fieldValue);\r\n  }\r\n\r\n  private subscribeToValueChange() {\r\n    if (this.data.IsShowCharacterCount) {\r\n      const formcontrol = this.form.get(this.data.Value);\r\n      if (formcontrol) {\r\n        this.valueChangeSubscription = formcontrol.valueChanges.subscribe(value => {\r\n          this.setCharCounterDisplayStr();\r\n        });\r\n      }\r\n    }\r\n  }\r\n\r\n  public focus() {\r\n    if (this.textarea) {\r\n      this.textarea.focus();\r\n      return true;\r\n    }\r\n    return false;\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    if (this.valueChangeSubscription) {\r\n      this.valueChangeSubscription.unsubscribe();\r\n    }\r\n  }\r\n}\r\n","<div [formGroup]=\"form\" class=\"ztextarea-container e1tag-style\" [style]=\"componentProperties.style.style\">\r\n  <!-- Ion Textarea for Mobile Screen -->\r\n  <ion-textarea *ngIf=\"isMobileScreen()\"\r\n                class=\"e1tag-style1\"\r\n                [attr.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n                [formControlName]=\"data.Value\"\r\n                [id]=\"data.Value\"\r\n                [maxlength]=\"data.MaxLength\"\r\n                [minlength]=\"data.MinLength\"\r\n                [placeholder]=\"data.PlaceHolder\"\r\n                [rows]=\"data.textAreaRows\"\r\n                [style]=\"componentProperties.style.style1\">\r\n  </ion-textarea>\r\n\r\n  <!-- Kendo Textarea for Non-Mobile Screen -->\r\n  <kendo-textarea *ngIf=\"!isMobileScreen()\"\r\n                  #textarea\r\n                  class=\"input-field e1tag-style1\"\r\n                  [autoSize]=\"!data.textAreaRows\"\r\n                  [formControlName]=\"data.Value\"\r\n                  [id]=\"data.Value\"\r\n                  [maxlength]=\"data.MaxLength\"\r\n                  [minlength]=\"data.MinLength\"\r\n                  [placeholder]=\"data.PlaceHolder\"\r\n                  [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n                  [class.textarea-readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n                  [resizable]=\"data.Resizable || 'none'\"\r\n                  [rows]=\"data.textAreaRows\"\r\n                  [style.height]=\"data.Height ? data.Height : 'auto'\"\r\n                  [style]=\"componentProperties.style.style1\"\r\n                  (click)=\"onItemClick($event)\"\r\n                  (valueChange)=\"onChange($event, $event)\">\r\n\r\n    <kendo-textarea-suffix *ngIf=\"data.IsShowCharacterCount\"\r\n                           class=\"character-counter-container e1tag-style2\"\r\n                           [style]=\"componentProperties.style.style2\">\r\n      <span class=\"character-counter e1tag-style3\"\r\n            [style]=\"componentProperties.style.style3\">{{charCounterDisplayStr}}</span>\r\n    </kendo-textarea-suffix>\r\n  </kendo-textarea>\r\n</div>\r\n","/********** Angular **********/\r\nimport { Component, NgZone, OnInit, ViewChild } from \"@angular/core\";\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\n// import { environment } from \"src/environments/environment\";\r\nimport { HttpEventType } from \"@angular/common/http\";\r\nimport { take } from \"rxjs/operators\";\r\nimport {\r\n  ChunkSettings,\r\n  FileInfo,\r\n  FileRestrictions,\r\n  RemoveEvent,\r\n  SelectEvent,\r\n  SuccessEvent,\r\n  UploadComponent,\r\n  UploadEvent,\r\n} from \"@progress/kendo-angular-upload\";\r\n\r\n/********** Component & Service **********/\r\nimport { InputFieldBase } from \"../components/inputfieldbase.component\";\r\nimport { ZComponentService } from \"../services/zcomponent.service\";\r\nimport {\r\n  AlertService,\r\n  Attachment,\r\n  AttachmentConfig,\r\n  AuthService,\r\n  CompressImageService,\r\n  ImageCompressionConfig,\r\n  SharePointService,\r\n  UploadMetaData,\r\n  ZComponent,\r\n  ZComponentHelper,\r\n  ZComponentOutputEvent,\r\n  ZCoreService,\r\n} from \"mmhglobal-zcore\";\r\n \r\n/**\r\n * Kendo FileInfo + optional base64 payload (used by SelectFileOnly mode).\r\n * NOTE: Keeps runtime behavior the same; only improves type safety.\r\n */\r\ntype SelectedFileData = FileInfo & {\r\n  /**\r\n   * Base64 Data URL or ArrayBuffer from FileReader.\r\n   * Present only when SelectFileOnly reads file content into memory.\r\n   */\r\n  file?: string | ArrayBuffer | null;\r\n};\r\n\r\nexport class MyFileInfo implements FileInfo {\r\n  public name!: string;\r\n  public uid?: string;\r\n\r\n  /**\r\n   * Server or application-defined UID used for remove/download operations.\r\n   * (Set from API response fileUid when upload succeeds)\r\n   */\r\n  public myUid?: string;\r\n}\r\n\r\n@Component({\r\n  selector: \"app-zupload\",\r\n  templateUrl: \"./zupload.component.html\",\r\n  styleUrls: [\"./zupload.component.scss\"],\r\n})\r\nexport class ZuploadComponent extends InputFieldBase implements ZComponent, OnInit {\r\n  @ViewChild(\"uploadComponent\", { static: false })\r\n  public uploadComponent!: UploadComponent;\r\n  \r\n  private readonly defaultUploadSaveUrl: string;\r\n  private readonly defaultUploadRemoveUrl: string;\r\n\r\n  // NOTE: Naming: `uid` array actually stores preview UIDs. Consider renaming to `previewUids` in future (not changed to preserve API).\r\n  public uploadAttachmentUrl: string | null = null;\r\n  public uploadSaveUrl = \"/Attachment/Chunk_Upload_Save\"; // should represent an actual API endpoint\r\n  public uploadRemoveUrl = \"/Attachment/Chunk_Upload_Remove\"; // should represent an actual API endpoint\r\n  public readonly downloadFileUrl = \"/Attachment/downloadFile\";\r\n  public readonly getImageUrl = \"/Attachment/getImage\"; // GET method\r\n\r\n  public isAutoUpload = false;\r\n  public isMultiple = false;\r\n  public showFileList = true;\r\n\r\n  public imagePreviews: Array<Record<string, unknown>> = [];\r\n  public uid: string[] = [];\r\n  public fileList: SelectedFileData[] = [];\r\n\r\n  public restrictions: FileRestrictions = {\r\n    minFileSize: 1,\r\n    maxFileSize: 4194304,\r\n    allowedExtensions: [\r\n      \"jpg\",\r\n      \"jpeg\",\r\n      \"png\",\r\n      \"bmp\",\r\n      \"pdf\",\r\n      \"txt\",\r\n      \"docx\",\r\n      \"doc\",\r\n      \"xlsx\",\r\n      \"xls\",\r\n      \"ppt\",\r\n      \"pptx\",\r\n      \"csv\",\r\n    ],\r\n  };\r\n\r\n  public readonly chunkSettings: ChunkSettings = {\r\n    size: 102400,\r\n    maxAutoRetries: 3,\r\n  };\r\n\r\n  public constructor(\r\n    public readonly componentService: ZComponentService,\r\n    private readonly authService: AuthService,\r\n    private readonly compressImage: CompressImageService,\r\n    private readonly zcoreService: ZCoreService,\r\n    private readonly ngZone: NgZone,\r\n    private readonly sharePointService: SharePointService,\r\n    private readonly alertService: AlertService\r\n  ) {\r\n    super(componentService);\r\n\r\n    const env = this.zcoreService.getEnvironment();\r\n    const normalized = this.zcoreService.normalizeUrl(env?.uploadAttachmentUrl);\r\n\r\n    this.uploadAttachmentUrl = normalized ?? null;\r\n    if (this.uploadAttachmentUrl) {\r\n      this.uploadSaveUrl = this.uploadAttachmentUrl + this.uploadSaveUrl;\r\n      this.uploadRemoveUrl = this.uploadAttachmentUrl + this.uploadRemoveUrl;\r\n    } else {\r\n      // Safer logging: avoid silent null URLs that break uploads\r\n      // NOTE: This indicates a configuration issue.\r\n      console.warn(\r\n        `[ZuploadComponent] uploadAttachmentUrl is empty. Upload endpoints may be invalid.`,\r\n        { uploadAttachmentUrl: env?.uploadAttachmentUrl }\r\n      );\r\n    }\r\n\r\n    this.defaultUploadSaveUrl = this.uploadSaveUrl;\r\n    this.defaultUploadRemoveUrl = this.uploadRemoveUrl;\r\n  }\r\n\r\n  /**\r\n   * Angular lifecycle hook - initializes restrictions and upload behavior from field config.\r\n   */\r\n  public ngOnInit(): void {\r\n    super.setupInnerField();\r\n\r\n    // Allowed extensions:\r\n    // - If SelectOptions present and AllowedFileExtension not present, override\r\n    // - Else if AllowedFileExtension present and SelectOptions absent, append\r\n    // NOTE: Keep original behavior; it may allow duplicates, but prevents unexpected restriction loss.\r\n    if (this.data?.SelectOptions && !this.data?.AllowedFileExtension) {\r\n      this.restrictions.allowedExtensions = (this.data.SelectOptions as unknown) as string[];\r\n    } else if (!this.data?.SelectOptions && this.data?.AllowedFileExtension) {\r\n      this.restrictions.allowedExtensions = this.restrictions.allowedExtensions.concat(this.data.AllowedFileExtension);\r\n    }\r\n\r\n    if (typeof this.data?.MinFileSize === \"number\" && this.data.MinFileSize >= 0) {\r\n      this.restrictions.minFileSize = this.data.MinFileSize;\r\n    }\r\n\r\n    if (typeof this.data?.MaxFileSize === \"number\" && this.data.MaxFileSize >= 0) {\r\n      this.restrictions.maxFileSize = this.data.MaxFileSize;\r\n    }\r\n\r\n    this.isAutoUpload = Boolean(this.data?.AutoUpload);\r\n\r\n    // If remove is not allowed, Kendo upload expects empty URL to hide remove request.\r\n    if (this.data && this.data.AllowRemove === false) {\r\n      this.uploadRemoveUrl = \"\";\r\n    }\r\n\r\n    this.isMultiple = Boolean(this.data?.Multiple);\r\n\r\n    // Ensure style6 exists (legacy styling hook).\r\n    this.componentProperties.style.style6 =\r\n      this.componentProperties.style.style6 || \"margin: 5px; border: 1px solid gray;\";\r\n  }\r\n\r\n  /**\r\n   * Kendo Upload success callback for both upload and remove.\r\n   * Keeps zModel in sync and emits ZComponent output events.\r\n   */\r\n  public onSuccess(e: SuccessEvent): void {\r\n    // Angular Kendo Upload emits \"Sent\" and \"UploadProgress\" for remove; ignore them to avoid double-handling.\r\n    // @ts-ignore - Kendo types for response differ by runtime usage\r\n    const responseType: number | undefined = e?.response?.type;\r\n    if (\r\n      e?.operation === \"remove\" &&\r\n      (responseType === HttpEventType.Sent || responseType === HttpEventType.UploadProgress)\r\n    ) {\r\n      return;\r\n    }\r\n\r\n    const modelKey = this.data?.Value;\r\n    if (!modelKey) {\r\n      console.warn(`[ZuploadComponent] onSuccess skipped: missing data.Value.`, { event: e });\r\n      return;\r\n    }\r\n\r\n    if (!this.group?.zModel) {\r\n      console.warn(`[ZuploadComponent] onSuccess skipped: missing group.zModel.`, { event: e });\r\n      return;\r\n    }\r\n\r\n    if (!Array.isArray(this.group.zModel[modelKey])) {\r\n      this.group.zModel[modelKey] = [];\r\n    }\r\n\r\n    const file = (e?.files?.[0] as MyFileInfo | undefined) ?? undefined;\r\n    if (!file) {\r\n      console.warn(`[ZuploadComponent] onSuccess: no file found in event.`, { event: e });\r\n      return;\r\n    }\r\n\r\n    const existingFileIndex = this.group.zModel[modelKey].findIndex(\r\n      (f: MyFileInfo) => f?.name === file.name && f?.uid === file.uid\r\n    );\r\n\r\n    if (e.operation === \"upload\") {\r\n      // SharePoint and Attachment use fileUid (server) for later operations.\r\n      // Prefer fileUid if provided; fallback to file.uid\r\n      // @ts-ignore - body shape is runtime-dependent\r\n      file.myUid = e?.response?.body?.fileUid ?? file.uid;\r\n\r\n      // Clean up internal subscription data to avoid circular structures\r\n      // NOTE: This relies on Kendo attaching internal fields; safe delete.\r\n      delete (file as unknown as Record<string, unknown>)[\"httpSubscription\"];\r\n\r\n      if (existingFileIndex !== -1) {\r\n        this.group.zModel[modelKey][existingFileIndex] = file;\r\n      } else {\r\n        this.group.zModel[modelKey].push(file);\r\n      }\r\n\r\n      console.info(`[ZuploadComponent] Upload succeeded.`, {\r\n        name: file.name,\r\n        uid: file.uid,\r\n        myUid: file.myUid,\r\n      });\r\n    } else if (e.operation === \"remove\") {\r\n      if (existingFileIndex !== -1) {\r\n        this.group.zModel[modelKey].splice(existingFileIndex, 1);\r\n      }\r\n\r\n      console.info(`[ZuploadComponent] Remove succeeded.`, {\r\n        name: file.name,\r\n        uid: file.uid,\r\n        myUid: file.myUid,\r\n      });\r\n    } else {\r\n      // Unknown operation, preserve behavior but log for diagnostics.\r\n      console.debug(`[ZuploadComponent] onSuccess received unsupported operation.`, { operation: e.operation, event: e });\r\n    }\r\n\r\n    ZComponentHelper.setComponentModelValue(this.data, this.group.zModel[modelKey], this.group);\r\n\r\n    this.group.subject?.next({\r\n      type: \"zupload-onSuccess\",\r\n      target: this.data?.OnSuccess,\r\n      event: e,\r\n      data: { value: file, field: this.data },\r\n    } as ZComponentOutputEvent);\r\n  }\r\n\r\n  /**\r\n   * Normalize and enrich image compression config with byte-based thresholds.\r\n   */\r\n  private compressionConfigHandler(imgConfig: ImageCompressionConfig): ImageCompressionConfig {\r\n    if (!imgConfig) {\r\n      // NOTE: keep function safe for unexpected null; returns as-is\r\n      return imgConfig;\r\n    }\r\n\r\n    if (imgConfig.FileSizeMaxSize) {\r\n      imgConfig.FileSizeMaxSizeByte = this.convertSizeToByte(imgConfig.FileSizeMaxSize);\r\n    }\r\n\r\n    if (imgConfig.FileSizeMinSize) {\r\n      imgConfig.FileSizeMinSizeByte = this.convertSizeToByte(imgConfig.FileSizeMinSize);\r\n    } else {\r\n      imgConfig.FileSizeMinSizeByte = 0;\r\n    }\r\n\r\n    return imgConfig;\r\n  }\r\n\r\n  /**\r\n   * Convert string size values like \"10KB\", \"2 MB\", \"1gb\", \"1024\" into bytes.\r\n   * If unit is omitted, bytes are assumed.\r\n   *\r\n   * @param sizeString Human readable size string.\r\n   * @returns Size in bytes. Returns 0 if parsing fails.\r\n   */\r\n  private convertSizeToByte(sizeString: string): number {\r\n    if (!sizeString || typeof sizeString !== \"string\") {\r\n      return 0;\r\n    }\r\n\r\n    // Remove all spaces\r\n    const raw = sizeString.replace(/ /g, \"\").trim();\r\n    if (!raw) {\r\n      return 0;\r\n    }\r\n\r\n    let parsedValue = 0;\r\n    let sizeByByte = 0;\r\n    let sizeType = \"b\";\r\n\r\n    // Check last char is alphabetic\r\n    const lastChar = raw.substring(raw.length - 1);\r\n    const lastCharIsNumber = !Number.isNaN(Number.parseFloat(lastChar));\r\n\r\n    if (!lastCharIsNumber) {\r\n      const secondLastChar = raw.substring(raw.length - 2).slice(0, -1);\r\n      const secondLastIsNumber = !Number.isNaN(Number.parseFloat(secondLastChar));\r\n\r\n      if (!secondLastIsNumber) {\r\n        // Last 2nd char is also alphabetic (e.g. \"MB\", \"GB\")\r\n        sizeType = `${secondLastChar}${sizeType}`;\r\n        parsedValue = Number.parseFloat(raw.slice(0, -2));\r\n      } else {\r\n        parsedValue = Number.parseFloat(raw.slice(0, -1));\r\n      }\r\n\r\n      // If parsing failed, return 0 (SonarQube safe behavior)\r\n      if (Number.isNaN(parsedValue) || parsedValue < 0) {\r\n        console.warn(`[ZuploadComponent] convertSizeToByte: invalid size value.`, { sizeString });\r\n        return 0;\r\n      }\r\n\r\n      switch (sizeType.toLowerCase()) {\r\n        case \"b\":\r\n          sizeByByte = parsedValue;\r\n          break;\r\n        case \"kb\":\r\n          sizeByByte = parsedValue * 1024;\r\n          break;\r\n        case \"mb\":\r\n          sizeByByte = parsedValue * 1_048_576;\r\n          break;\r\n        case \"gb\":\r\n          sizeByByte = parsedValue * 1_073_741_824;\r\n          break;\r\n        default:\r\n          // Unknown unit => treat as bytes for backward compatibility\r\n          console.warn(`[ZuploadComponent] convertSizeToByte: unknown unit, defaulting to bytes.`, {\r\n            sizeString,\r\n            unit: sizeType,\r\n          });\r\n          sizeByByte = parsedValue;\r\n          break;\r\n      }\r\n    } else {\r\n      // Default using bytes if no size type\r\n      const n = Number.parseFloat(raw);\r\n      if (Number.isNaN(n) || n < 0) {\r\n        console.warn(`[ZuploadComponent] convertSizeToByte: invalid numeric bytes value.`, { sizeString });\r\n        return 0;\r\n      }\r\n      sizeByByte = n;\r\n    }\r\n\r\n    return sizeByByte;\r\n  }\r\n\r\n  /**\r\n   * Kendo Upload upload event: validates files, builds image previews, injects metadata and auth header.\r\n   */\r\n  public uploadEventHandler(e: UploadEvent): void {\r\n    if (!e?.files?.length) {\r\n      console.warn(`[ZuploadComponent] uploadEventHandler: no files in UploadEvent.`);\r\n      return;\r\n    }\r\n\r\n    // Image Preview\r\n    e.files.forEach((file: FileInfo) => {\r\n      if (!this.isValidUploadedFile(file)) {\r\n        e.preventDefault();\r\n        return;\r\n      }\r\n\r\n      if (file?.rawFile?.type?.includes(\"image\") && !file.validationErrors) {\r\n        const reader = new FileReader();\r\n        reader.onload = () => {\r\n          if (this.data?.EnableImagePreview) {\r\n            if (!this.uid.includes(file.uid)) {\r\n              this.uid.push(file.uid);\r\n              this.imagePreviews.push({ ...file, src: reader.result as string });\r\n            }\r\n          }\r\n        };\r\n        reader.readAsDataURL(file.rawFile);\r\n      }\r\n    });\r\n\r\n    // Add metadata to the upload event\r\n    let additional: UploadMetaData = ZComponentHelper.getGroupEvalValue.call(this, this.data?.UploadMetaData);\r\n\r\n    if (!(additional instanceof UploadMetaData)) {\r\n      console.warn(\r\n        `[ZuploadComponent] Invalid UploadMetaData at \"${this.data?.UploadMetaData}\". Fallback to default metadata.`,\r\n        additional\r\n      );\r\n      additional = new UploadMetaData(null, \"0\");\r\n    }\r\n\r\n    //#region sharepoint\r\n    const attachmentInfo: Attachment | null = this.sharePointService.getAttachmentInfo(this.data?.[\"DownloadFileConfig\"]);\r\n\r\n    // Add tagging into metadata\r\n    if (attachmentInfo) {\r\n      if (attachmentInfo.tag) {\r\n        const tag = this.sharePointService.generateTagging(this.group, attachmentInfo.tag);\r\n        (additional as unknown as Record<string, unknown>)[AttachmentConfig.tag] = tag;\r\n      }\r\n\r\n      (additional as unknown as Record<string, unknown>)[AttachmentConfig.siteName] = attachmentInfo.siteName;\r\n      (additional as unknown as Record<string, unknown>)[AttachmentConfig.documentLibraryName] = attachmentInfo.documentLibraryName;\r\n      (additional as unknown as Record<string, unknown>)[AttachmentConfig.isSaveToSharePoint] = attachmentInfo.isSaveToSharePoint;\r\n    }\r\n    //#endregion\r\n  \r\n    (additional as unknown as Record<string, unknown>)[AttachmentConfig.projectCode] = this.data?.ProjectCode;\r\n    (additional as unknown as Record<string, unknown>)[AttachmentConfig.moduleCode] = this.data?.ModuleCode;\r\n    \r\n    const payload = JSON.stringify(additional);\r\n    e.data = { additional: payload };\r\n\r\n    // NOTE: Potentially unsafe: assumes token is always present. Keep behavior but add clearer logging.\r\n    const token = this.authService?.e1AccessToken;\r\n    if (!token) {\r\n      console.warn(`[ZuploadComponent] Missing e1AccessToken. Upload may fail due to authorization.`);\r\n    }\r\n    e.headers = e.headers.append(\"Authorization\", `Bearer ${token ?? \"\"}`);\r\n  }\r\n\r\n  /**\r\n   * Kendo Upload remove event: updates component memory, fires project event if defined,\r\n   * otherwise attaches required payload and authorization headers.\r\n   */\r\n  public onRemove(e: RemoveEvent): void {\r\n    const file = e?.files?.[0];\r\n    if (!file) {\r\n      console.warn(`[ZuploadComponent] onRemove: no file found in RemoveEvent.`, { event: e });\r\n      return;\r\n    }\r\n\r\n    // Remove file from component memory (for SelectFileOnly flow)\r\n    const index = this.fileList.findIndex((item) => item.uid === file.uid);\r\n    if (index >= 0) {\r\n      this.fileList.splice(index, 1);\r\n      this.group[`zupload_${this.data?.Value}`] = this.fileList;\r\n    }\r\n\r\n    const removedEvent = this.data?.[\"FileRemovedEvent\"];\r\n    if (removedEvent) {\r\n      this.group.subject?.next({\r\n        type: \"zupload-fileRemovedEvent\",\r\n        target: removedEvent,\r\n        data: e,\r\n      } as ZComponentOutputEvent);\r\n      return;\r\n    }\r\n\r\n    const myFile = file as MyFileInfo;\r\n\r\n    // Attach remove payload\r\n    e.data = { id: myFile.myUid };\r\n\r\n    const token = this.authService?.e1AccessToken;\r\n    if (!token) {\r\n      console.warn(`[ZuploadComponent] Missing e1AccessToken. Remove may fail due to authorization.`);\r\n    }\r\n\r\n    e.headers = e.headers.append(\"Authorization\", `Bearer ${token ?? \"\"}`);\r\n\r\n    // Remove preview if enabled\r\n    if (this.data?.EnableImagePreview) {\r\n      e.files.forEach((f: FileInfo) => {\r\n        this.imagePreviews = this.imagePreviews.filter((p) => p?.[\"uid\"] !== f.uid);\r\n      });\r\n    }\r\n\r\n    console.info(`[ZuploadComponent] Remove requested.`, { name: myFile.name, uid: myFile.uid, myUid: myFile.myUid });\r\n  }\r\n\r\n  /**\r\n   * Kendo Upload change event handler. Emits project event if configured.\r\n   */\r\n  public onChange(files: FileInfo[]): void {\r\n    const changedEvent = this.data?.[\"FileChangedEvent\"];\r\n    if (!changedEvent) {\r\n      return;\r\n    }\r\n\r\n    this.group.subject?.next({\r\n      type: \"zupload-fileChangedEvent\",\r\n      target: changedEvent,\r\n      data: files,\r\n    } as ZComponentOutputEvent);\r\n  }\r\n\r\n  /**\r\n   * Validate a selected/uploaded file against configured restrictions (size + extension).\r\n   *\r\n   * @param file Kendo FileInfo\r\n   * @returns true if file passes restrictions, otherwise false (and shows alert).\r\n   */\r\n  private isValidUploadedFile(file: FileInfo): boolean {\r\n    const rawFile = file?.rawFile;\r\n    if (!rawFile) {\r\n      // NOTE: Kendo can provide FileInfo without rawFile in some events. Preserve behavior: treat as invalid.\r\n      console.warn(`[ZuploadComponent] File validation failed: rawFile is missing.`, { file });\r\n      this.alertService.showOkay(\"Failed to upload\", \"File is not available for upload.\", [\"col-4\"]);\r\n      return false;\r\n    }\r\n\r\n    const fileSize = rawFile.size ?? 0;\r\n\r\n    // Keep original behavior: uses last segment after dot.\r\n    // NOTE: Potentially unsafe for files without extension; will result in empty extension.\r\n    const fileExtension = (rawFile.name?.split(\".\").pop() ?? \"\").toLowerCase();\r\n\r\n    const max = this.restrictions?.maxFileSize ?? 0;\r\n    const allowed = this.restrictions?.allowedExtensions ?? [];\r\n\r\n    const isExtensionAllowed = allowed.includes(fileExtension);\r\n    const isSizeAllowed = fileSize <= max;\r\n\r\n    if (!isExtensionAllowed || !isSizeAllowed) {\r\n      let errorMessage = \"Error:\";\r\n      if (!isExtensionAllowed) {\r\n        errorMessage = `Invalid file type \"${fileExtension || \"unknown\"}\". Allowed types: ${allowed.join(\", \")}.`;\r\n      } else if (!isSizeAllowed) {\r\n        errorMessage = `File size cannot exceed ${this.formatFileSize(max)}.`;\r\n      }\r\n\r\n      console.warn(`[ZuploadComponent] File rejected by restrictions.`, {\r\n        name: rawFile.name,\r\n        size: fileSize,\r\n        extension: fileExtension,\r\n        maxAllowedBytes: max,\r\n        allowedExtensions: allowed,\r\n      });\r\n\r\n      this.alertService.showOkay(\"Failed to upload\", errorMessage, [\"col-4\"]);\r\n      return false;\r\n    }\r\n\r\n    return true;\r\n  }\r\n\r\n  /**\r\n   * Kendo Upload select event handler:\r\n   * - Handles SharePoint endpoint switching\r\n   * - Supports SelectFileOnly mode (read file content into memory and emit event)\r\n   * - Supports image compression when AutoUpload is false\r\n   */\r\n  public selectEventHandler(e: SelectEvent): void {\r\n    if (!e?.files?.length) {\r\n      console.warn(`[ZuploadComponent] selectEventHandler: no files in SelectEvent.`);\r\n      return;\r\n    }\r\n    // Reset to default every selection to avoid SharePoint URL \"sticking\" permanently.\r\n    this.uploadSaveUrl = this.defaultUploadSaveUrl;\r\n    this.uploadRemoveUrl = this.defaultUploadRemoveUrl;\r\n\r\n    //#region sharepoint\r\n    const attachmentInfo: Attachment | null = this.sharePointService.getAttachmentInfo(this.data?.[\"DownloadFileConfig\"]);\r\n    // Change uploadSaveUrl if saving to SharePoint\r\n    if (attachmentInfo?.isSaveToSharePoint && attachmentInfo.siteName) {\r\n      const attachmentSourceUrl = this.zcoreService.getEnvironment()?.attachmentSourceUrl;\r\n      if (attachmentSourceUrl) {\r\n        this.uploadSaveUrl = `${attachmentSourceUrl}/Chunk_Upload_Save`;\r\n        console.info(`[ZuploadComponent] Upload endpoint switched to SharePoint mode.`, { uploadSaveUrl: this.uploadSaveUrl });\r\n      } else {\r\n        console.warn(`[ZuploadComponent] attachmentSourceUrl is missing. Cannot switch to SharePoint upload endpoint.`);\r\n      }\r\n    }\r\n    //#endregion\r\n\r\n    if (this.data?.[\"SelectFileOnly\"]) {\r\n      // Append all files to component memory\r\n      e.files.forEach((file: FileInfo) => {\r\n        if (!this.isValidUploadedFile(file)) {\r\n          e.preventDefault();\r\n          return;\r\n        }\r\n\r\n        if (!file.rawFile) {\r\n          e.preventDefault();\r\n          return;\r\n        }\r\n\r\n        const reader = new FileReader();\r\n        reader.onload = (ev: ProgressEvent<FileReader>) => {\r\n          // Clone the data and also add the read file to the object\r\n          const fileData: SelectedFileData = {\r\n            ...file,\r\n            file: ev?.target?.result ?? null,\r\n          };\r\n          fileData[\"file\"] = ev?.target?.result;\r\n\r\n          // Push to component fileList\r\n          this.fileList.push(fileData);\r\n          this.group[`zupload_${this.data?.Value}`] = this.fileList;\r\n\r\n          const selectedEvent = this.data?.[\"FileSelectedEvent\"];\r\n          if (selectedEvent) {\r\n            this.group.subject?.next({\r\n              type: \"zupload-fileSelectedEvent\",\r\n              target: selectedEvent,\r\n              data: this.fileList,\r\n            } as ZComponentOutputEvent);\r\n          }\r\n        };\r\n\r\n        reader.onerror = () => {\r\n          console.warn(`[ZuploadComponent] Failed to read file as base64.`, {\r\n            name: file.rawFile?.name,\r\n            uid: file.uid,\r\n            error: reader.error,\r\n          });\r\n        };\r\n\r\n        reader.readAsDataURL(file.rawFile);\r\n      });\r\n\r\n      return;\r\n    }\r\n\r\n    // Only workable for Auto Upload = false\r\n    if (this.data?.AutoUpload) {\r\n      return;\r\n    }\r\n\r\n    // Compression for image file\r\n    const imageCompressionEnabled = Boolean(this.data?.Compression);\r\n\r\n    // Check if Image Compression is enabled.\r\n    if (imageCompressionEnabled) {\r\n      e.files.forEach((file: FileInfo) => {\r\n        if (!this.isValidUploadedFile(file)) {\r\n          e.preventDefault();\r\n          return;\r\n        }\r\n\r\n        // Compress only if it is an image file\r\n        if (!file?.rawFile?.type?.includes(\"image\") || file.validationErrors) {\r\n          return;\r\n        }\r\n\r\n        const imgConfig = this.compressionConfigHandler(this.data.Compression);\r\n        const minBytes = imgConfig?.FileSizeMinSizeByte ?? 0;\r\n\r\n        // Original behavior: only compress if file size > minBytes\r\n        if (file.size <= minBytes) {\r\n          return;\r\n        }\r\n\r\n        this.compressImage\r\n          .compress(file.rawFile, imgConfig) // Pass in parameter to set the Compression Options\r\n          .pipe(take(1))\r\n          .subscribe({\r\n            next: (compressFile) => {\r\n              this.ngZone.run(() => {\r\n                file.rawFile = compressFile;\r\n                file.size = compressFile.size;\r\n\r\n                // Push to component fileList (kept as original intent)\r\n                const fileData: SelectedFileData = { ...file };\r\n                this.fileList.push(fileData);\r\n\r\n                // Keep original: read to data URL (side effect)\r\n                const reader = new FileReader();\r\n                reader.readAsDataURL(file.rawFile);\r\n              });\r\n\r\n              console.info(`[ZuploadComponent] Image compressed successfully.`, {\r\n                name: file?.rawFile?.name,\r\n                newSizeKB: Number((file.rawFile.size / 1024).toFixed(2)),\r\n              });\r\n            },\r\n            error: (err) => {\r\n              // Preserve flow (do not block selection), but provide clearer diagnostic\r\n              console.error(`[ZuploadComponent] Image compression failed. Upload will continue with original file.`, {\r\n                name: file?.rawFile?.name,\r\n                error: err,\r\n              });\r\n            },\r\n          });\r\n      });\r\n    }\r\n\r\n    // Add to group scope (original behavior: store selected files)\r\n    this.group[`zupload_${this.data?.Value}`] = e.files;\r\n  }\r\n\r\n  /**\r\n   * Clears UI-selected files and syncs group state.\r\n   * NOTE: Original behavior sets group value to fileList (not empty); preserved.\r\n   */\r\n  public clearFiles(): void {\r\n    if (!this.uploadComponent) {\r\n      console.warn(`[ZuploadComponent] clearFiles: uploadComponent is not ready.`);\r\n      return;\r\n    }\r\n\r\n    this.uploadComponent.clearFiles();\r\n    this.group[`zupload_${this.data?.Value}`] = this.fileList;\r\n\r\n    console.info(`[ZuploadComponent] Files cleared from UI.`, {\r\n      storedFileListCount: this.fileList.length,\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Format bytes into human-readable string.\r\n   *\r\n   * @param bytes Raw byte size\r\n   * @returns Formatted file size string (e.g. \"12.5MB\")\r\n   */\r\n  private formatFileSize(bytes: number): string {\r\n    const sizes = [\"Bytes\", \"KB\", \"MB\", \"GB\", \"TB\"];\r\n    if (!Number.isFinite(bytes) || bytes <= 0) {\r\n      return \"0 Byte\";\r\n    }\r\n\r\n    const i = Math.floor(Math.log(bytes) / Math.log(1024));\r\n    const value = bytes / Math.pow(1024, i);\r\n\r\n    // NOTE: Original output had no space between number and unit; preserved.\r\n    return `${Number.parseFloat(value.toFixed(2))}${sizes[i]}`;\r\n  }\r\n}\r\n","<div [formGroup]=\"form\" class=\"zupload-container e1tag-style\" [style]=\"componentProperties.style.style\">\r\n  <kendo-upload\r\n    *ngIf=\"!data.SelectFileOnly\"\r\n    #uploadComponent\r\n    [id]=\"data.Value\"\r\n    [autoUpload]=\"isAutoUpload\"\r\n    [saveUrl]=\"uploadSaveUrl\"\r\n    [removeUrl]=\"uploadRemoveUrl\"\r\n    [restrictions]=\"restrictions\"\r\n    [multiple]=\"isMultiple\"\r\n    [chunkable]=\"chunkSettings\"\r\n    [showFileList]=\"showFileList\"\r\n    (select)=\"selectEventHandler($event)\"\r\n    (remove)=\"onRemove($event)\"\r\n    (success)=\"onSuccess($event)\"\r\n    (upload)=\"uploadEventHandler($event)\"\r\n    [style]=\"componentProperties.style.style1\"\r\n    class=\"e1tag-style1\">\r\n  </kendo-upload>\r\n\r\n  <kendo-fileselect\r\n    *ngIf=\"data.SelectFileOnly\"\r\n    #uploadComponent\r\n    [id]=\"data.Value\"\r\n    (select)=\"selectEventHandler($event)\"\r\n    (remove)=\"onRemove($event)\"\r\n    [formControlName]=\"data.Value\"\r\n    (valueChange)=\"onChange($event)\" \r\n    [restrictions]=\"restrictions\"\r\n    [style]=\"componentProperties.style.style1\"\r\n    class=\"e1tag-style1\">\r\n  </kendo-fileselect>\r\n\r\n  <div\r\n    *ngIf=\"imagePreviews.length\"\r\n    class=\"image-preview-container e1tag-style2\"\r\n    [style]=\"componentProperties.style.style2\">\r\n    <div\r\n      class=\"label-container e1tag-style3\"\r\n      [style]=\"componentProperties.style.style3\">\r\n      Image Preview:\r\n    </div>\r\n    <div\r\n      class=\"image-container e1tag-style4\"\r\n      [style]=\"componentProperties.style.style4\">\r\n      <img\r\n        *ngFor=\"let image of imagePreviews\"\r\n        [src]=\"image.src\"\r\n        alt=\"image preview\"\r\n        height=\"100\"\r\n        class=\"e1tag-style5\"\r\n        [style]=\"componentProperties.style.style5\" />\r\n    </div>\r\n  </div>\r\n</div>\r\n","/********** Angular **********/\r\nimport { Component, OnInit } from \"@angular/core\";\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { from, switchMap, of, Observable } from \"rxjs\";\r\n\r\n/********** Component & Service **********/\r\nimport { InputFieldBase } from \"../components/inputfieldbase.component\";\r\nimport { ZComponentService } from \"../services/zcomponent.service\";\r\nimport { ZComponent, ZComponentHelper, AttachmentService } from \"mmhglobal-zcore\";\r\n\r\n\r\n@Component({\r\n  selector: \"app-zimg\",\r\n  templateUrl: \"./zimg.component.html\",\r\n  styleUrls: [\"./zimg.component.scss\"]\r\n})\r\n\r\nexport class ZimgComponent extends InputFieldBase implements ZComponent, OnInit {\r\n  public imgSource;\r\n\r\n  constructor(\r\n    public componentService: ZComponentService,\r\n    private attachmentService: AttachmentService\r\n  ) {\r\n    super(componentService);\r\n  }\r\n\r\n  ngOnInit() {\r\n    super.setupInnerField();\r\n    this.setImageSource();\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    this.componentService.decrementComponentCounterForField(this.data);\r\n  }\r\n\r\n  public setImageSource() {\r\n    this.getImageSource().subscribe(imgSource => {\r\n      this.imgSource = imgSource\r\n    });\r\n  }\r\n\r\n  private getImageSource(): Observable<any> {\r\n    this.setImageSize();\r\n\r\n    if (this.data.SourceUrl) {\r\n      return of(ZComponentHelper.getGroupValue(this.data.SourceUrl, this.group));\r\n    }\r\n\r\n    const guid = ZComponentHelper.getGroupValue(this.data['Guid'], this.group);\r\n    const fileName = ZComponentHelper.getGroupValue(this.data['FileName'], this.group);\r\n\r\n    if (guid && fileName) {\r\n      return from(this.attachmentService.getImageBlob(fileName, guid)).pipe(\r\n        switchMap(blobfile => {\r\n          return from(this.attachmentService.convertBlobToBase64(blobfile));\r\n        })\r\n      )\r\n    }\r\n\r\n    return of({});\r\n  }\r\n\r\n  private setImageSize() {\r\n    if (this.data.Size && this.data.Size.toLowerCase().indexOf(\"x\") !== -1) {\r\n      const imgSize = this.data.Size.toLowerCase().split(\"x\");\r\n      const styleExpression = `width:${imgSize[0]}px;height:${imgSize[1]}px;`;\r\n      this.componentProperties.style.style += styleExpression;\r\n      this.componentProperties.style.style1 += styleExpression;\r\n    }\r\n  }\r\n}\r\n","<div [formGroup]=\"form\" class=\"zimg-container e1tag-style\" [style]=\"componentProperties.style.style\">\r\n  <img *ngIf=\"imgSource\" class=\"e1tag-style1\" [src]=\"imgSource\" [style]=\"componentProperties.style.style1\"\r\n       (click)=\"onItemClick($event)\" />\r\n</div>\r\n","/********** Angular **********/\r\nimport { Component, OnInit, AfterViewInit, ViewChild } from '@angular/core';\r\n\r\n/********** Plugin **********/\r\nimport { EditorComponent, EditorPasteEvent } from '@progress/kendo-angular-editor';\r\nimport { ToolBarButtonComponent } from '@progress/kendo-angular-toolbar';\r\nimport { DialogRef, DialogService } from '@progress/kendo-angular-dialog';\r\n\r\n/********** RxJS **********/\r\nimport { firstValueFrom } from 'rxjs';\r\n\r\n/********** Component & Service **********/\r\nimport { InputFieldBase } from '../components/inputfieldbase.component';\r\nimport { ZComponentService } from '../services/zcomponent.service';\r\nimport {\r\n  AlertButton,\r\n  AlertService,\r\n  CompressImageService,\r\n  FontAweSomeService,\r\n  ImageCompressionConfig,\r\n  ToastService,\r\n  ZComponent,\r\n  ZComponentHelper\r\n} from 'mmhglobal-zcore';\r\n\r\n@Component({\r\n  selector: 'app-ztexteditor',\r\n  templateUrl: './ztexteditor.component.html',\r\n  styleUrls: ['./ztexteditor.component.scss'],\r\n})\r\nexport class ZtexteditorComponent extends InputFieldBase implements ZComponent, OnInit, AfterViewInit {\r\n  @ViewChild('editor') public editor!: EditorComponent;\r\n  @ViewChild('compressButton') public compress_btn!: ToolBarButtonComponent;\r\n\r\n  public pasteCleanupSettings: {\r\n    removeMsClasses: boolean;\r\n    removeMsStyles: boolean;\r\n    removeInvalidHTML: boolean;\r\n    [key: string]: any;\r\n  } = {\r\n    removeMsClasses: false,\r\n    removeMsStyles: false,\r\n    removeInvalidHTML: false,\r\n  };\r\n\r\n  public componentSettings: { iframe: boolean; [key: string]: any } = {\r\n    iframe: true,\r\n  };\r\n\r\n  public isCompressModeOn: boolean = false;\r\n  public CloseEnlargeBtn: boolean = false;\r\n\r\n  public dialogRef?: DialogRef;\r\n\r\n  private originalInlineStyle: string = '';\r\n\r\n  private readonly compressionEnableIcon: string = 'k-i-zoom-best-fit';\r\n  private readonly compressionDisabledIcon: string = 'k-i-zoom-actual-size';\r\n\r\n  constructor(\r\n    public readonly componentService: ZComponentService,\r\n    public readonly fontAweSomeService: FontAweSomeService,\r\n    private readonly dialogService: DialogService,\r\n    private readonly alertService: AlertService,\r\n    private readonly compressImage: CompressImageService,\r\n    private readonly toastService: ToastService,\r\n  ) {\r\n    super(componentService);\r\n  }\r\n\r\n  /** Initialize component state and editor configuration. */\r\n  public ngOnInit(): void {\r\n    super.setupInnerField();\r\n\r\n    // Backward-compatible default: when not provided, use explorer.\r\n    this.data.ToolBarUploadImageMethod = this.data.ToolBarUploadImageMethod || 'explorer';\r\n\r\n    this.setupPasteCleanupSettings();\r\n    super.setupComponentSettings(this.componentSettings);\r\n    super.focusOnDefault(this.focus.bind(this));\r\n\r\n    // Safe cast to boolean.\r\n    this.isCompressModeOn = !!this.data?.Compression;\r\n  }\r\n\r\n  /** Notify component service once view is ready. */\r\n  public ngAfterViewInit(): void {\r\n    this.componentService.decrementComponentCounterForField(this.data);\r\n  }\r\n\r\n  /** Sync editor content to zModel and trigger configured change handler. */\r\n  public onChange(value: unknown): void {\r\n    ZComponentHelper.setToZModel(this.data.Value, value, this.group, this.data);\r\n    this.triggerEvent('inputfield-onChange', this.data.OnChange, value);\r\n  }\r\n\r\n  /** Handle paste: normalize plain-text special entities, then optionally compress pasted base64 images. */\r\n  public async onPaste(e: EditorPasteEvent): Promise<void> {\r\n    if (!e) {\r\n      console.warn('[Ztexteditor] Paste event is undefined. Paste ignored.');\r\n      return;\r\n    }\r\n\r\n    // Common Excel/plain-text issue: \"&amp;\" gets inserted literally causing \"&amp;amp;\" in HTML.\r\n    this.handleCommonSymbolTags(e);\r\n\r\n    // Compress only if enabled and base64 images exist.\r\n    await this.handleImageCompression(e);\r\n  }\r\n\r\n  /**\r\n   * If the paste is plain text (no HTML tags and no images), normalize common entities and insert as real text.\r\n   * Returns true when the event is handled and default paste is prevented.\r\n   */\r\n  private handleCommonSymbolTags(e: EditorPasteEvent): boolean {\r\n    const editor = this.editor;\r\n    if (!editor) {\r\n      console.warn('[Ztexteditor] Editor is not ready. Cannot handle plain-text normalization.');\r\n      return false;\r\n    }\r\n\r\n    const clipboard = (e.originalEvent as ClipboardEvent | undefined)?.clipboardData;\r\n    const plainText = clipboard?.getData('text/plain') ?? '';\r\n    const htmlText = clipboard?.getData('text/html') ?? '';\r\n    const cleanedHtml = e.cleanedHtml ?? '';\r\n\r\n    const htmlHasImg = /<img\\b/i.test(htmlText);\r\n    const cleanedHasTags = /<[^>]+>/.test(cleanedHtml);\r\n\r\n    // If paste has HTML tags or images, do NOT interfere (let Kendo handle it).\r\n    if (htmlHasImg || cleanedHasTags) {\r\n      return false;\r\n    }\r\n\r\n    // Plain-text paste: prevent Kendo from inserting encoded entities as literal text.\r\n    e.preventDefault();\r\n\r\n    // Decode common entities once so user sees correct characters.\r\n    // This is intentionally limited to common entities to avoid unexpected transformations.\r\n    const normalized = (plainText || cleanedHtml)\r\n      .replaceAll('&amp;', '&')\r\n      .replaceAll('&lt;', '<')\r\n      .replaceAll('&gt;', '>')\r\n      .replaceAll('&quot;', '\"')\r\n      .replaceAll('&#39;', \"'\");\r\n\r\n    editor.exec('insertText', { text: normalized });\r\n    return true;\r\n  }\r\n\r\n  /**\r\n   * If compression is enabled and compress mode is ON, compress any pasted base64 images (data:image/*).\r\n   * IMPORTANT: modifies e.cleanedHtml (what gets pasted), not editor.value.\r\n   */\r\n  private async handleImageCompression(e: EditorPasteEvent): Promise<void> {\r\n    const compressionConfig = this.data?.Compression as ImageCompressionConfig | undefined;\r\n    const isCompressionEnabled = !!compressionConfig;\r\n    if (!isCompressionEnabled || !this.isCompressModeOn) {\r\n      return;\r\n    }\r\n\r\n    const cleaned = e.cleanedHtml ?? '';\r\n    if (!cleaned) {\r\n      return;\r\n    }\r\n\r\n    let doc: Document;\r\n    try {\r\n      doc = new DOMParser().parseFromString(cleaned, 'text/html');\r\n    } catch (err) {\r\n      console.warn('[Ztexteditor] Failed to parse pasted HTML for image compression. Paste will continue.', err);\r\n      return;\r\n    }\r\n\r\n    const imgElements = Array.from(doc.querySelectorAll('img'))\r\n      .map(img => img as HTMLImageElement)\r\n      .filter(img => typeof img?.src === 'string' && img.src.startsWith('data:image/'));\r\n\r\n    if (imgElements.length === 0) {\r\n      return;\r\n    }\r\n\r\n    let beforeSizeBytes = 0;\r\n    let afterSizeBytes = 0;\r\n    let failedCount = 0;\r\n\r\n    await Promise.all(\r\n      imgElements.map(async (img, index) => {\r\n        const src = img.src;\r\n\r\n        try {\r\n          const file = await this.base64ToFile(src, `pasted-image-${index}`);\r\n          beforeSizeBytes += file.size;\r\n\r\n          const compressed = await this.imageCompression(file);\r\n          if (!compressed) {\r\n            failedCount++;\r\n            console.warn(`[Ztexteditor] Image compression skipped/failed for pasted image #${index + 1}.`);\r\n            return;\r\n          }\r\n\r\n          const base64 = await this.readFileAsDataURL(compressed);\r\n          afterSizeBytes += compressed.size;\r\n          img.src = base64;\r\n        } catch (err) {\r\n          failedCount++;\r\n          console.warn(`[Ztexteditor] Error compressing pasted image #${index + 1}.`, err);\r\n        }\r\n      }),\r\n    );\r\n\r\n    // Helpful console logs for troubleshooting.\r\n    const beforeKb = (beforeSizeBytes / 1024).toFixed(2);\r\n    const afterKb = (afterSizeBytes / 1024).toFixed(2);\r\n\r\n    console.log(\r\n      `[Ztexteditor] Pasted image compression completed. Images=${imgElements.length}, Failed=${failedCount}, Before=${beforeKb}KB, After=${afterKb}KB`,\r\n    );\r\n\r\n    // Modify what gets pasted, not editor.value.\r\n    e.cleanedHtml = doc.body.innerHTML;\r\n  }\r\n\r\n  /**\r\n   * Toggle compress mode via confirmation dialog.\r\n   */\r\n  public onOffCompressMode(event: Event): void {\r\n    const header = 'Confirmation';\r\n    const actionText = this.isCompressModeOn ? 'disable' : 'enable';\r\n\r\n    // Keep existing behavior: toggling resets content.\r\n    const message =\r\n      `Do you want to <b>${actionText}</b> image compression when input content?` +\r\n      `<br/>Note: Click \"Yes\" the content will be reset to blank.`;\r\n\r\n    const buttons = {\r\n      yes: { text: 'Yes', cssClass: 'primary' } as AlertButton,\r\n      no: { text: 'No', cssClass: 'secondary' } as AlertButton,\r\n    };\r\n\r\n    this.alertService\r\n      .show(header, message, [buttons.yes, buttons.no], ['col-4'])\r\n      .subscribe(reply => {\r\n        if (reply !== 'Yes') {\r\n          return;\r\n        }\r\n\r\n        const editor = this.editor;\r\n        if (!editor) {\r\n          console.warn('[Ztexteditor] Editor is not ready. Cannot toggle compression mode.');\r\n          return;\r\n        }\r\n\r\n        editor.value = '';\r\n        this.isCompressModeOn = !this.isCompressModeOn;\r\n\r\n        // Update toolbar icon classes safely.\r\n        const buttonEl = this.getEventTargetElement(event);\r\n        if (!buttonEl) {\r\n          console.warn('[Ztexteditor] Unable to resolve toolbar button element from event.');\r\n        } else {\r\n          buttonEl.classList.remove(this.compressionEnableIcon, this.compressionDisabledIcon);\r\n          buttonEl.classList.add(this.isCompressModeOn ? this.compressionDisabledIcon : this.compressionEnableIcon);\r\n        }\r\n\r\n        if (this.compress_btn) {\r\n          this.compress_btn.title = `${this.isCompressModeOn ? 'Disable' : 'Enable'} image compression`;\r\n        }\r\n\r\n        this.toastService.show(\r\n          `${this.isCompressModeOn ? 'Enable' : 'Disable'} image compression successfully.`,\r\n          'top',\r\n          false,\r\n          2500,\r\n          'success',\r\n        );\r\n      });\r\n  }\r\n\r\n  /** Focus editor if available. Returns true if focus succeeded. */\r\n  public focus(): boolean {\r\n    if (this.editor) {\r\n      this.editor.focus();\r\n      return true;\r\n    }\r\n    return false;\r\n  }\r\n\r\n  public getFontAwesome(iconName: string, fontAwesomeService: FontAweSomeService): unknown {\r\n    const iconNameValue = ZComponentHelper.getGroupValue(iconName, this.group);\r\n    if (iconNameValue) {\r\n      return ZComponentHelper.getFontAwesome(iconNameValue, fontAwesomeService);\r\n    }\r\n    return iconName;\r\n  }\r\n\r\n  /** Merge paste cleanup options from data.Options (string expression or object) into pasteCleanupSettings. */\r\n  private setupPasteCleanupSettings(): void {\r\n    const options = this.data?.Options;\r\n    if (!options) {\r\n      return;\r\n    }\r\n\r\n    if (typeof options === 'string') {\r\n      const resolved = ZComponentHelper.getGroupValue(options, this.group);\r\n      if (resolved && typeof resolved === 'object') {\r\n        Object.assign(this.pasteCleanupSettings, resolved);\r\n      } else {\r\n        console.warn('[Ztexteditor] data.Options resolved value is not an object. Paste cleanup settings unchanged.', {\r\n          resolved,\r\n        });\r\n      }\r\n      return;\r\n    }\r\n\r\n    if (typeof options === 'object') {\r\n      Object.assign(this.pasteCleanupSettings, options);\r\n      return;\r\n    }\r\n\r\n    console.warn('[Ztexteditor] Unsupported data.Options type. Paste cleanup settings unchanged.', {\r\n      type: typeof options,\r\n    });\r\n  }\r\n\r\n  // #region Custom Image Upload / Enlarge\r\n\r\n  /** Trigger hidden file input click for image upload. */\r\n  public openFileExplorer(): void {\r\n    const id = `${this.data.Value}-upload-file`;\r\n    const input = document.getElementById(id) as HTMLInputElement | null;\r\n\r\n    if (!input) {\r\n      console.warn(`[Ztexteditor] Upload input element not found (id=\"${id}\").`);\r\n      return;\r\n    }\r\n\r\n    input.click();\r\n  }\r\n\r\n  /** Open an enlarged popup editor. */\r\n  public openPopup(): void {\r\n    const editor = this.editor;\r\n    if (!editor) {\r\n      console.warn('[Ztexteditor] Editor is not ready. Cannot open popup.');\r\n      return;\r\n    }\r\n\r\n    // Open dialog\r\n    this.dialogRef = this.dialogService.open({\r\n      content: ZtexteditorComponent,\r\n      width: '98%',\r\n      height: '97%',\r\n    });\r\n\r\n    const popupComponent = this.dialogRef.content.instance as ZtexteditorComponent;\r\n    popupComponent.data = this.data;\r\n    popupComponent.data.AllowEnlarge = false;\r\n    popupComponent.dialogRef = this.dialogRef;\r\n    popupComponent.CloseEnlargeBtn = true;\r\n    popupComponent.componentProperties = this.componentProperties;\r\n\r\n    // Preserve style so we can restore it on close.\r\n    this.originalInlineStyle = this.componentProperties?.style?.style1 ?? '';\r\n    if (popupComponent.componentProperties?.style) {\r\n      popupComponent.componentProperties.style.style1 =\r\n        (popupComponent.componentProperties.style.style1 ?? '') +\r\n        `height:${(window.innerHeight * 0.8).toString()}px`;\r\n    }\r\n\r\n    popupComponent.group = this.group;\r\n    popupComponent.componentSettings = this.componentSettings;\r\n    popupComponent.form = this.form;\r\n\r\n    // Restore state and push value back into editor on close.\r\n    this.dialogRef.result.subscribe(() => {\r\n      this.data.AllowEnlarge = true;\r\n\r\n      if (this.componentProperties?.style) {\r\n        this.componentProperties.style.style1 = this.originalInlineStyle;\r\n      }\r\n\r\n      // Pull current zModel into editor and trigger onChange (existing behavior).\r\n      const newValue = this.group?.zModel?.[this.data.Value];\r\n      editor.value = newValue;\r\n      this.onChange(newValue);\r\n      this.focus();\r\n    });\r\n  }\r\n\r\n  /** Close the popup editor if open. */\r\n  public onPopupClose(): void {\r\n    if (!this.dialogRef) {\r\n      return;\r\n    }\r\n    this.dialogRef.close();\r\n  }\r\n\r\n  /**\r\n   * Handle <input type=\"file\"> change and insert selected image into editor.\r\n   * NOTE: Prefer typing fileInput as Event for better safety.\r\n   */\r\n  public uploadImage(fileInput: Event): void {\r\n    const input = fileInput?.target as HTMLInputElement | null;\r\n    const file = input?.files?.[0];\r\n\r\n    if (!file) {\r\n      console.warn('[Ztexteditor] No image selected for upload.');\r\n      return;\r\n    }\r\n\r\n    void this.insertImageIntoEditor(file);\r\n  }\r\n\r\n  /** Insert image into editor, optionally compressing first. */\r\n  private async insertImageIntoEditor(file: File): Promise<void> {\r\n    const editor = this.editor;\r\n    if (!editor) {\r\n      console.warn('[Ztexteditor] Editor is not ready. Cannot insert image.');\r\n      return;\r\n    }\r\n\r\n    let workingFile: File | null = file;\r\n\r\n    const compressionConfig = this.data?.Compression as ImageCompressionConfig | undefined;\r\n    const compressionEnabled = !!compressionConfig;\r\n\r\n    if (compressionEnabled) {\r\n      console.log(`[Ztexteditor] Upload image before compression: ${(workingFile.size / 1024).toFixed(2)}KB`);\r\n\r\n      workingFile = await this.imageCompression(workingFile);\r\n      if (!workingFile) {\r\n        console.warn('[Ztexteditor] Image compression failed. Upload image insertion aborted.');\r\n        return;\r\n      }\r\n\r\n      console.log(`[Ztexteditor] Upload image after compression: ${(workingFile.size / 1024).toFixed(2)}KB`);\r\n    }\r\n\r\n    try {\r\n      const base64 = await this.readFileAsDataURL(workingFile);\r\n      editor.exec('insertImage', { src: base64 });\r\n    } catch (err) {\r\n      console.warn('[Ztexteditor] Failed to read uploaded image as base64.', err);\r\n    }\r\n  }\r\n\r\n  /** Convert base64 (data URL) to File. */\r\n  private async base64ToFile(base64String: string, fileName: string): Promise<File> {\r\n    // Using fetch on data URL is supported by modern browsers; keep existing logic.\r\n    const response = await fetch(base64String);\r\n    const blob = await response.blob();\r\n\r\n    return new File([blob], fileName, {\r\n      type: blob.type,\r\n      lastModified: Date.now(),\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Compress an image file if it is an image and above min threshold.\r\n   * Returns the compressed file, or null if not compressible / compression skipped.\r\n   */\r\n  private async imageCompression(file: File): Promise<File | null> {\r\n    if (!file) {\r\n      console.warn('[Ztexteditor] imageCompression called with empty file.');\r\n      return null;\r\n    }\r\n\r\n    if (!file.type || !file.type.includes('image')) {\r\n      console.warn('[Ztexteditor] Skipping compression: file is not an image.', { type: file.type });\r\n      return null;\r\n    }\r\n\r\n    const config = this.data?.Compression as ImageCompressionConfig | undefined;\r\n    if (!config) {\r\n      // Compression not configured.\r\n      return null;\r\n    }\r\n\r\n    const imgConfig = this.compressionConfigHandler(config);\r\n\r\n    // If file is below threshold, keep existing behavior: skip compression (return null).\r\n    if (file.size <= imgConfig.FileSizeMinSizeByte) {\r\n      console.log(\r\n        `[Ztexteditor] Skipping compression: file size ${(file.size / 1024).toFixed(2)}KB is below threshold ${(imgConfig.FileSizeMinSizeByte / 1024).toFixed(2)}KB.`,\r\n      );\r\n      return null;\r\n    }\r\n\r\n    try {\r\n      const compressed$ = this.compressImage.compress(file, imgConfig);\r\n      const compressedFile = await firstValueFrom(compressed$);\r\n      return compressedFile ?? null;\r\n    } catch (err) {\r\n      console.warn('[Ztexteditor] Compression service threw an error.', err);\r\n      return null;\r\n    }\r\n  }\r\n\r\n  /** Normalize image compression config into byte-based thresholds. */\r\n  private compressionConfigHandler(imgConfig: ImageCompressionConfig): ImageCompressionConfig {\r\n    if (!imgConfig) {\r\n      // Defensive: should never happen because caller checks.\r\n      return imgConfig;\r\n    }\r\n\r\n    if (imgConfig.FileSizeMaxSize) {\r\n      imgConfig.FileSizeMaxSizeByte = this.convertSizeToByte(imgConfig.FileSizeMaxSize);\r\n    }\r\n\r\n    if (imgConfig.FileSizeMinSize) {\r\n      imgConfig.FileSizeMinSizeByte = this.convertSizeToByte(imgConfig.FileSizeMinSize);\r\n    } else {\r\n      imgConfig.FileSizeMinSizeByte = 0;\r\n    }\r\n\r\n    return imgConfig;\r\n  }\r\n\r\n  /**\r\n   * Convert size string like \"100kb\", \"1 MB\", \"2gb\" to bytes.\r\n   * If no unit is provided, bytes are assumed.\r\n   */\r\n  private convertSizeToByte(sizeString: string): number {\r\n    if (!sizeString || typeof sizeString !== 'string') {\r\n      console.warn('[Ztexteditor] convertSizeToByte received invalid sizeString. Defaulting to 0.', { sizeString });\r\n      return 0;\r\n    }\r\n\r\n    // Remove all spaces, e.g. \"1 MB\" -> \"1MB\"\r\n    const trimmed = sizeString.replace(/ /g, '').trim();\r\n    if (!trimmed) {\r\n      return 0;\r\n    }\r\n\r\n    // Extract numeric part and unit part (letters).\r\n    // Example: \"1.5MB\" => number=1.5, unit=\"mb\"\r\n    const match = /^([0-9]*\\.?[0-9]+)([a-zA-Z]*)$/.exec(trimmed);\r\n    if (!match) {\r\n      console.warn('[Ztexteditor] Unable to parse sizeString. Defaulting to 0.', { sizeString });\r\n      return 0;\r\n    }\r\n\r\n    const numeric = Number(match[1]);\r\n    const unit = (match[2] || 'b').toLowerCase();\r\n\r\n    if (Number.isNaN(numeric) || numeric < 0) {\r\n      console.warn('[Ztexteditor] Invalid numeric size in sizeString. Defaulting to 0.', { sizeString });\r\n      return 0;\r\n    }\r\n\r\n    switch (unit) {\r\n      case 'b':\r\n      case '':\r\n        return numeric;\r\n      case 'kb':\r\n        return numeric * 1024;\r\n      case 'mb':\r\n        return numeric * 1024 * 1024;\r\n      case 'gb':\r\n        return numeric * 1024 * 1024 * 1024;\r\n      default:\r\n        console.warn('[Ztexteditor] Unknown unit in sizeString. Defaulting to bytes.', { sizeString, unit });\r\n        return numeric;\r\n    }\r\n  }\r\n\r\n  /** Read a File as base64 data URL. */\r\n  private readFileAsDataURL(file: File): Promise<string> {\r\n    return new Promise((resolve, reject) => {\r\n      if (!file) {\r\n        reject(new Error('File is required.'));\r\n        return;\r\n      }\r\n\r\n      const reader = new FileReader();\r\n      reader.readAsDataURL(file);\r\n\r\n      reader.onload = () => resolve(reader.result as string);\r\n      reader.onerror = (error) => reject(error);\r\n    });\r\n  }\r\n\r\n  // #endregion\r\n\r\n  // #region Small helpers\r\n\r\n  /** Extract event target as HTMLElement safely. */\r\n  private getEventTargetElement(event: Event): HTMLElement | null {\r\n    const target = event?.target;\r\n    return target instanceof HTMLElement ? target : null;\r\n  }\r\n\r\n  // #endregion\r\n}\r\n","\r\n\r\n<div [formGroup]=\"form\" class=\"ztexteditor-container e1tag-style\" [style]=\"componentProperties.style.style\" [ngClass]=\"data.Class\">\r\n  <div class=\"col-lg-12 expand-btn-container\">\r\n  <ion-button   class=\"ion-activatable ripple-parent\" [style]=\"componentProperties.style.style4\" *ngIf=\"data.AllowEnlarge\" (click)=\"openPopup()\"  [id]=\"data.Value +'-popup-button'\">\r\n    <fa-icon class=\"btn-icon\" [icon]=\"getFontAwesome('faExpandAlt', fontAweSomeService)\"></fa-icon>\r\n  </ion-button>\r\n  <ion-button  class=\"ion-activatable ripple-parent\" [style]=\"componentProperties.style.style4\" *ngIf=\"CloseEnlargeBtn\" (click)=\"onPopupClose()\"  [id]=\"data.Value +'-popup-button'\">\r\n    <fa-icon class=\"btn-icon\"  [icon]=\"getFontAwesome('faCompressAlt', fontAweSomeService)\"></fa-icon>\r\n  </ion-button>\r\n</div>\r\n  <kendo-editor #editor\r\n                [id]=\"data.Value\"\r\n                [formControlName]=\"data.Value\"\r\n                class=\"e1tag-style1\"\r\n                [style]=\"componentProperties.style.style1\"\r\n                [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n                (valueChange)=\"onChange($event)\"\r\n                [resizable]=\"data.Resizable || false\"\r\n                [pasteCleanupSettings]=\"pasteCleanupSettings\"\r\n                (paste)=\"onPaste($event)\"\r\n                [iframe]=\"componentSettings.iframe\">\r\n    <kendo-toolbar [style.display]=\"data.ToolBarStyle === 'basic' ? 'inherit' : 'none'\" class=\"e1tag-style2\"\r\n                   [style]=\"componentProperties.style.style2\">\r\n      <kendo-toolbar-buttongroup>\r\n        <kendo-toolbar-button kendoEditorUndoButton></kendo-toolbar-button>\r\n        <kendo-toolbar-button kendoEditorRedoButton></kendo-toolbar-button>\r\n      </kendo-toolbar-buttongroup>\r\n      <kendo-toolbar-buttongroup>\r\n        <kendo-toolbar-button kendoEditorBoldButton></kendo-toolbar-button>\r\n        <kendo-toolbar-button kendoEditorItalicButton></kendo-toolbar-button>\r\n        <kendo-toolbar-button kendoEditorUnderlineButton></kendo-toolbar-button>\r\n        <kendo-toolbar-button kendoEditorStrikethroughButton></kendo-toolbar-button>\r\n      </kendo-toolbar-buttongroup>\r\n      <kendo-toolbar-buttongroup>\r\n        <kendo-toolbar-button kendoEditorSubscriptButton></kendo-toolbar-button>\r\n        <kendo-toolbar-button kendoEditorSuperscriptButton></kendo-toolbar-button>\r\n      </kendo-toolbar-buttongroup>\r\n      <kendo-toolbar-buttongroup>\r\n        <kendo-toolbar-button kendoEditorAlignLeftButton></kendo-toolbar-button>\r\n        <kendo-toolbar-button kendoEditorAlignCenterButton></kendo-toolbar-button>\r\n        <kendo-toolbar-button kendoEditorAlignRightButton></kendo-toolbar-button>\r\n        <kendo-toolbar-button kendoEditorAlignJustifyButton></kendo-toolbar-button>\r\n      </kendo-toolbar-buttongroup>\r\n      <kendo-toolbar-dropdownlist kendoEditorFormat></kendo-toolbar-dropdownlist>\r\n      <kendo-toolbar-dropdownlist kendoEditorFontSize></kendo-toolbar-dropdownlist>\r\n      <kendo-toolbar-dropdownlist kendoEditorFontFamily></kendo-toolbar-dropdownlist>\r\n      <kendo-toolbar-colorpicker kendoEditorForeColor></kendo-toolbar-colorpicker>\r\n      <kendo-toolbar-colorpicker kendoEditorBackColor></kendo-toolbar-colorpicker>\r\n      <kendo-toolbar-buttongroup>\r\n        <kendo-toolbar-button kendoEditorInsertUnorderedListButton></kendo-toolbar-button>\r\n        <kendo-toolbar-button kendoEditorInsertOrderedListButton></kendo-toolbar-button>\r\n        <kendo-toolbar-button kendoEditorIndentButton></kendo-toolbar-button>\r\n        <kendo-toolbar-button kendoEditorOutdentButton></kendo-toolbar-button>\r\n      </kendo-toolbar-buttongroup>\r\n      <kendo-toolbar-buttongroup>\r\n        <kendo-toolbar-button kendoEditorCreateLinkButton></kendo-toolbar-button>\r\n        <kendo-toolbar-button kendoEditorUnlinkButton></kendo-toolbar-button>\r\n      </kendo-toolbar-buttongroup>\r\n      <kendo-editor-insert-table-button></kendo-editor-insert-table-button>\r\n      <kendo-toolbar-buttongroup>\r\n        <kendo-toolbar-button kendoEditorAddColumnBeforeButton></kendo-toolbar-button>\r\n        <kendo-toolbar-button kendoEditorAddColumnAfterButton></kendo-toolbar-button>\r\n        <kendo-toolbar-button kendoEditorAddRowBeforeButton></kendo-toolbar-button>\r\n        <kendo-toolbar-button kendoEditorAddRowAfterButton></kendo-toolbar-button>\r\n      </kendo-toolbar-buttongroup>\r\n      <kendo-toolbar-buttongroup>\r\n        <kendo-toolbar-button kendoEditorDeleteColumnButton></kendo-toolbar-button>\r\n        <kendo-toolbar-button kendoEditorDeleteRowButton></kendo-toolbar-button>\r\n        <kendo-toolbar-button kendoEditorDeleteTableButton></kendo-toolbar-button>\r\n      </kendo-toolbar-buttongroup>\r\n      <kendo-toolbar-button kendoEditorInsertFileButton></kendo-toolbar-button>\r\n      <kendo-toolbar-button *ngIf=\"data.ToolBarUploadImageMethod == 'default'\" kendoEditorInsertImageButton></kendo-toolbar-button>\r\n      <kendo-toolbar-button *ngIf=\"data.ToolBarUploadImageMethod == 'explorer'\" icon=\"k-i-image k-i-photo\" (click)=\"openFileExplorer()\"></kendo-toolbar-button>\r\n      <kendo-toolbar-button *ngIf=\"!!data.Compression\"  icon=\"k-i-image k-i-zoom-actual-size\" (click)=\"onOffCompressMode($event)\" #compressButton title=\"Disable Image Compression\"></kendo-toolbar-button>\r\n      <kendo-toolbar-button kendoEditorViewSourceButton></kendo-toolbar-button>\r\n    </kendo-toolbar>\r\n    <kendo-toolbar [style.display]=\"data.ToolBarStyle === 'full' ? 'inherit' : 'none'\" class=\"e1tag-style2\" [style]=\"componentProperties.style.style2\">\r\n      <kendo-toolbar-buttongroup>\r\n        <kendo-toolbar-button kendoEditorUndoButton></kendo-toolbar-button>\r\n        <kendo-toolbar-button kendoEditorRedoButton></kendo-toolbar-button>\r\n      </kendo-toolbar-buttongroup>\r\n      <kendo-toolbar-buttongroup>\r\n        <kendo-toolbar-button kendoEditorBoldButton></kendo-toolbar-button>\r\n        <kendo-toolbar-button kendoEditorItalicButton></kendo-toolbar-button>\r\n        <kendo-toolbar-button kendoEditorUnderlineButton></kendo-toolbar-button>\r\n        <kendo-toolbar-button kendoEditorStrikethroughButton></kendo-toolbar-button>\r\n      </kendo-toolbar-buttongroup>\r\n      <kendo-toolbar-buttongroup>\r\n        <kendo-toolbar-button kendoEditorSubscriptButton></kendo-toolbar-button>\r\n        <kendo-toolbar-button kendoEditorSuperscriptButton></kendo-toolbar-button>\r\n      </kendo-toolbar-buttongroup>\r\n      <kendo-toolbar-buttongroup>\r\n        <kendo-toolbar-button kendoEditorAlignLeftButton></kendo-toolbar-button>\r\n        <kendo-toolbar-button kendoEditorAlignCenterButton></kendo-toolbar-button>\r\n        <kendo-toolbar-button kendoEditorAlignRightButton></kendo-toolbar-button>\r\n        <kendo-toolbar-button kendoEditorAlignJustifyButton></kendo-toolbar-button>\r\n      </kendo-toolbar-buttongroup>\r\n      <kendo-toolbar-dropdownlist kendoEditorFontSize></kendo-toolbar-dropdownlist>\r\n      <kendo-toolbar-dropdownlist kendoEditorFontFamily></kendo-toolbar-dropdownlist>\r\n      <kendo-toolbar-colorpicker kendoEditorForeColor view=\"gradient\"></kendo-toolbar-colorpicker>\r\n      <kendo-toolbar-colorpicker kendoEditorBackColor view=\"gradient\"></kendo-toolbar-colorpicker>\r\n      <kendo-toolbar-buttongroup>\r\n        <kendo-toolbar-button kendoEditorInsertUnorderedListButton></kendo-toolbar-button>\r\n        <kendo-toolbar-button kendoEditorInsertOrderedListButton></kendo-toolbar-button>\r\n        <kendo-toolbar-button kendoEditorIndentButton></kendo-toolbar-button>\r\n        <kendo-toolbar-button kendoEditorOutdentButton></kendo-toolbar-button>\r\n      </kendo-toolbar-buttongroup>\r\n      <kendo-toolbar-buttongroup>\r\n        <kendo-toolbar-button kendoEditorCreateLinkButton></kendo-toolbar-button>\r\n        <kendo-toolbar-button kendoEditorUnlinkButton></kendo-toolbar-button>\r\n      </kendo-toolbar-buttongroup>\r\n      <kendo-toolbar-button *ngIf=\"data.ToolBarUploadImageMethod == 'default'\" kendoEditorInsertImageButton></kendo-toolbar-button>\r\n      <kendo-toolbar-button *ngIf=\"data.ToolBarUploadImageMethod == 'explorer'\" icon=\"k-i-image k-i-photo\" (click)=\"openFileExplorer()\"></kendo-toolbar-button>\r\n      <kendo-toolbar-button  *ngIf=\"!!data.Compression\" icon=\"k-i-image k-i-file-image\" (click)=\"onOffCompressMode($event)\"  #compressButton title=\"Disable Image Compression\"></kendo-toolbar-button>\r\n      <kendo-toolbar-button kendoEditorViewSourceButton></kendo-toolbar-button>\r\n      <kendo-editor-insert-table-button></kendo-editor-insert-table-button>\r\n      <kendo-toolbar-buttongroup>\r\n        <kendo-toolbar-button kendoEditorAddColumnBeforeButton></kendo-toolbar-button>\r\n        <kendo-toolbar-button kendoEditorAddColumnAfterButton></kendo-toolbar-button>\r\n        <kendo-toolbar-button kendoEditorAddRowBeforeButton></kendo-toolbar-button>\r\n        <kendo-toolbar-button kendoEditorAddRowAfterButton></kendo-toolbar-button>\r\n      </kendo-toolbar-buttongroup>\r\n      <kendo-toolbar-buttongroup>\r\n        <kendo-toolbar-button kendoEditorDeleteColumnButton></kendo-toolbar-button>\r\n        <kendo-toolbar-button kendoEditorDeleteRowButton></kendo-toolbar-button>\r\n        <kendo-toolbar-button kendoEditorDeleteTableButton></kendo-toolbar-button>\r\n      </kendo-toolbar-buttongroup>\r\n      <kendo-toolbar-buttongroup>\r\n        <kendo-toolbar-button kendoEditorMergeCellsButton></kendo-toolbar-button>\r\n        <kendo-toolbar-button kendoEditorSplitCellButton></kendo-toolbar-button>\r\n      </kendo-toolbar-buttongroup>\r\n    </kendo-toolbar>\r\n  </kendo-editor>\r\n  <input style=\"display:none;\" type=\"file\" [id]=\"data.Value +'-upload-file'\" [name]=\"data.Value +'-upload-file'\" accept=\"image/*\" ngf-max-size=\"5MB\" (change)=\"uploadImage($event)\">\r\n</div>\r\n","/********** Angular **********/\r\nimport { Component, OnInit, ViewChild } from \"@angular/core\";\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\n\r\n/********** Component & Service **********/\r\nimport { InputFieldBase } from \"../components/inputfieldbase.component\";\r\nimport { ZComponentService } from \"../services/zcomponent.service\";\r\nimport { FontAweSomeService, ZComponent, ZComponentHelper } from \"mmhglobal-zcore\";\r\nimport { ColorPickerComponent } from \"@progress/kendo-angular-inputs\";\r\nimport { PickerController } from \"@ionic/angular\";\r\n\r\n\r\n@Component({\r\n  selector: \"app-zcolorpicker\",\r\n  templateUrl: \"./zcolorpicker.component.html\",\r\n  styleUrls: [\"./zcolorpicker.component.scss\"],\r\n})\r\n\r\nexport class ZcolorpickerComponent extends InputFieldBase implements ZComponent, OnInit {\r\n  @ViewChild(\"colorpicker\") colorpicker: ColorPickerComponent;\r\n\r\n  public value = \"\";\r\n  public view = ['palette', 'gradient'];\r\n  public format = \"hex\";\r\n\r\n  constructor(\r\n    public componentService: ZComponentService,\r\n    public fontAweSomeService: FontAweSomeService\r\n  ) {\r\n    super(componentService);\r\n  }\r\n\r\n  ngOnInit() {\r\n    super.initComponent().subscribe();\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    this.componentService.decrementComponentCounterForField(this.data);\r\n  }\r\n\r\n  onClose() {\r\n    //debugger;\r\n  }\r\n\r\n  changeColor(color: string) {\r\n    if (this.colorpicker) { \r\n      const fieldValue = this.data.Value;\r\n\r\n      ZComponentHelper.setModelValue(fieldValue, color, this.group);\r\n    }\r\n  }\r\n\r\n\r\n}\r\n","<div [formGroup]=\"form\" class=\"zcolorpicker-container e1tag-style\" [style]=\"componentProperties.style.style\">\r\n      <kendo-colorpicker #colorpicker\r\n        [id]=\"data.Value\"\r\n        [formControlName]=\"data.Value\"\r\n        [style]=\"componentProperties.style.style1\"\r\n        [views]=\"view\"\r\n        [value]=\"value\"\r\n        [format] = \"format\"\r\n        [disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n        (valueChange) = \"changeColor($event)\"\r\n        (close)=\"onClose()\"\r\n        ></kendo-colorpicker>\r\n</div>\r\n","import { ChangeDetectorRef, Component, Input, OnInit } from \"@angular/core\";\r\nimport { RadioButtonDirective } from \"@progress/kendo-angular-inputs\";\r\n/********** Component & Service **********/\r\nimport { InputFieldBase } from \"../components/inputfieldbase.component\";\r\nimport { ZComponentService } from \"../services/zcomponent.service\";\r\nimport { ZComponent, ZSelectPostApiParams,WebApiService, CacheService, ZComponentHelper, ZField, ZGroup, ResourceApiService, TranslationService } from \"mmhglobal-zcore\";\r\nimport { FormGroup } from \"@angular/forms\";\r\nimport { map, Observable, of } from \"rxjs\";\r\n\r\n@Component({\r\n  selector: 'app-zradiobutton',\r\n  templateUrl: \"./zradiobutton.component.html\",\r\n  styleUrls: [\"./zradiobutton.component.scss\"],\r\n})\r\nexport class ZradiobuttonComponent extends InputFieldBase implements ZComponent, OnInit{\r\n  @Input() data: ZField;\r\n  @Input() group: ZGroup;\r\n  @Input() form: FormGroup;\r\n  radioButtonItems: any;\r\n  itemValueField: string = null;\r\n  itemTextField: string = null;\r\n  itemDataField: string = null;\r\n\r\n  constructor(\r\n    public componentService: ZComponentService,\r\n    private readonly cdr: ChangeDetectorRef,\r\n    private resourceApiService: ResourceApiService,\r\n    private webApiService: WebApiService,\r\n    private cacheService: CacheService,\r\n    private translationService: TranslationService\r\n  ) {\r\n    super(componentService);\r\n  }\r\n\r\n  selectedValue: string;\r\n  ngOnInit() {\r\n    super.setupInnerField();\r\n  \r\n    if (Array.isArray(this.data.RadioButtonItems)) {\r\n      this.radioButtonItems = this.data.RadioButtonItems;\r\n      return;\r\n    } \r\n    \r\n    this.radioButtonItems = this.getRadioItemsData();\r\n\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    this.componentService.decrementComponentCounterForField(this.data);\r\n  }\r\n\r\n  getRadioItemsData() {\r\n    // Local helper function for slicing option name based on start index\r\n    const getRadioNameSuffix = (radioName: string, startIndex: number): string => {\r\n        return radioName.slice(startIndex);\r\n    };\r\n\r\n    ZComponentHelper.setSelectMultipleTextValue(this.data.SelectOptions, this);\r\n\r\n    let optionName = this.data.OptionName || this.itemDataField || 'group.zData.' + this.data.Name;\r\n\r\n    let radioItems: any[] = [];\r\n    let lookupKey = \"\"; // Store the final key to lookup\r\n\r\n    switch (true) {\r\n        case optionName.startsWith('zData.'):\r\n            lookupKey = getRadioNameSuffix(optionName, 6);\r\n            radioItems = this.group?.zData?.[lookupKey] || [];\r\n            break;\r\n\r\n        case optionName.startsWith('group.zData.'):\r\n            lookupKey = getRadioNameSuffix(optionName, 12);\r\n            radioItems = this.group?.zData?.[lookupKey] || [];\r\n            break;\r\n\r\n        case optionName.startsWith('group.'):\r\n            lookupKey = getRadioNameSuffix(optionName, 6);\r\n            radioItems = this.group?.[lookupKey] || [];\r\n            break;\r\n\r\n        case Boolean(optionName): // Check if optionName is truthy\r\n            radioItems = this.group?.[optionName] || [];\r\n            break;\r\n\r\n        default:\r\n            console.warn(this.data.Name, ' - Invalid setting for RadioButtonItems: ', this.data.RadioButtonItems);\r\n            this.cdr.detectChanges();\r\n            return [];\r\n    }\r\n\r\n    // If no SelectOptions format is defined, return the data as is\r\n    if (!this.data.SelectOptions || typeof this.data.SelectOptions !== \"string\") {\r\n        return radioItems;\r\n    }\r\n\r\n    // Apply transformation safely\r\n    try {\r\n        return this.TransformArray(radioItems, this.itemValueField, this.itemTextField);\r\n    } catch (error) {\r\n        console.error(\"Error transforming radio items:\", error);\r\n        return [];\r\n    }\r\n}\r\n\r\n  getClass(form: FormGroup, data: ZField) {\r\n\r\n    if (data.Orientation?.toLowerCase() === 'vertical')\r\n      return 'zradiobutton-container e1tag-style k-radio-list k-list-vertical';\r\n\r\n    return 'zradiobutton-container e1tag-style k-radio-list k-list-horizontal';\r\n  }\r\n\r\n  TransformArray(items: any[], itemValueField: string, itemTextField: string): { Label: string; Value: string }[] \r\n  {\r\n    const valueField = itemValueField; \r\n    const labelField = itemTextField;\r\n  \r\n    return items.map(item => ({\r\n      Label: item[labelField], \r\n      Value: item[valueField]\r\n    }));\r\n  }\r\n}\r\n","<div [formGroup]=\"form\" [ngClass]=\"getClass(form, data)\" [style]=\"componentProperties.style.style\"> \r\n  <div *ngFor=\"let option of radioButtonItems\" >\r\n        <!--for not readonly, onchange is allow -->\r\n        <input *ngIf=\"!(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n            kendoRadioButton  \r\n            type=\"radio\" \r\n            [id]=\"'radio-' + option.Value\" \r\n            [value]=\"option.Value\" \r\n            [formControlName]=\"data.Value\"\r\n            (change)=\"onChange($event,option.Value)\"\r\n            class=\"e1tag-style1\"\r\n            [style]=\"componentProperties.style.style1\"\r\n            [class.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n          />\r\n          <!--for  readonly, onchange is remove -->\r\n          <input *ngIf=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n          kendoRadioButton  \r\n          type=\"radio\" \r\n          [id]=\"'radio-' + option.Value\" \r\n          [value]=\"option.Value\" \r\n          [formControlName]=\"data.Value\"\r\n          class=\"e1tag-style1\"\r\n          [style]=\"componentProperties.style.style1\"\r\n          [class.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n        />\r\n          <kendo-label \r\n          class=\"k-radio-label\" \r\n          [for]=\"'radio-' + option.Value\" \r\n          [text]=\"option.Label\">\r\n        </kendo-label>\r\n  </div>\r\n</div>","/********** Angular **********/\r\nimport { Component, Input, OnDestroy, OnInit } from '@angular/core';\r\n\r\n\r\n/********** Component & Service **********/\r\nimport { InputFieldBase } from '../components/inputfieldbase.component';\r\nimport { ZComponentService } from '../services/zcomponent.service';\r\nimport { ZComponent, ZComponentHelper, ZField, ZGroup, zSliderProperties } from \"mmhglobal-zcore\";\r\nimport { FormGroup, Validators } from '@angular/forms';\r\n\r\n@Component({\r\n  selector: 'app-zslider',\r\n  templateUrl: './zslider.component.html',\r\n  styleUrls: ['./zslider.component.scss'],\r\n})\r\nexport class ZsliderComponent extends InputFieldBase implements ZComponent, OnInit, OnDestroy {\r\n  @Input() data: ZField;\r\n  @Input() group: ZGroup;\r\n  @Input() form: FormGroup;\r\n\r\n  get sliderData(): zSliderProperties {\r\n    return this.data as unknown as zSliderProperties;\r\n  }\r\n\r\n\r\n  public inputMode = \"decimal\";\r\n  public minValue = 0;\r\n  public maxValue = 0;\r\n  private minValidator;\r\n  private maxValidator;\r\n  public smallStep = 1;\r\n  public largeStep = 5;\r\n  public tickPlacement = 'both';\r\n  public slidervalue = 0;\r\n\r\n  constructor(\r\n    public componentService: ZComponentService\r\n  ) {\r\n    super(componentService);\r\n  }\r\n\r\n  ngOnInit() {\r\n    super.setupInnerField();\r\n    this.setInitPropertyValue();\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this.removeMinAndMaxValidator();\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    this.componentService.decrementComponentCounterForField(this.data);\r\n  }\r\n\r\n  setMinValue(newValue: number) {\r\n    this.minValue = newValue;\r\n\r\n    // mark this control as touched to trigger for validation\r\n    const control = this.form.controls[this.data.Value];\r\n    control.markAsTouched();\r\n  }\r\n\r\n  setMaxValue(newValue: number) {\r\n    this.maxValue = newValue;\r\n\r\n    // mark this control as touched to trigger for validation\r\n    const control = this.form.controls[this.data.Value];\r\n    control.markAsTouched();\r\n  }\r\n\r\n  private setInitPropertyValue() {\r\n    if (typeof this.data.MinValue == 'string' && (this.data.MinValue as any).toString().startsWith('group.')) {\r\n      this.minValue = ZComponentHelper.getGroupValue((this.data.MinValue as any).toString(), this.group);\r\n    }\r\n    else {\r\n      this.minValue = this.data.MinValue;\r\n    }\r\n\r\n    if (typeof this.data.MaxValue == 'string' && (this.data.MaxValue as any).toString().startsWith('group.')) {\r\n      this.maxValue = ZComponentHelper.getGroupValue((this.data.MaxValue as any).toString(), this.group);\r\n    }\r\n    else {\r\n      this.maxValue = this.data.MaxValue;\r\n    }\r\n\r\n    if (typeof this.sliderData.SmallStep == 'string' && (this.sliderData.SmallStep as any).toString().startsWith('group.')) {\r\n      this.smallStep = ZComponentHelper.getGroupValue((this.sliderData.SmallStep as any).toString(), this.group);\r\n    }\r\n    else {\r\n      this.smallStep = this.sliderData.SmallStep;\r\n    }\r\n    if (this.smallStep <= 0 || ZComponentHelper.isNullUndefinedEmpty(this.smallStep)) {\r\n      this.smallStep = 1;\r\n    }\r\n\r\n    if (typeof this.sliderData.LargeStep == 'string' && (this.sliderData.LargeStep as any).toString().startsWith('group.')) {\r\n      this.largeStep = ZComponentHelper.getGroupValue((this.sliderData.LargeStep as any).toString(), this.group);\r\n    }\r\n    else {\r\n      this.largeStep = this.sliderData.LargeStep;\r\n    }\r\n    if (this.largeStep <= 0 || ZComponentHelper.isNullUndefinedEmpty(this.largeStep)) {\r\n      this.largeStep = 5;\r\n    }\r\n\r\n    if (this.sliderData.TickPlacement && (this.sliderData.TickPlacement as any).toString().startsWith('group.')) {\r\n      this.tickPlacement = ZComponentHelper.getGroupValue((this.sliderData.TickPlacement as any).toString(), this.group);\r\n    }\r\n    else {\r\n      this.tickPlacement = this.sliderData.TickPlacement || 'both';\r\n    }\r\n\r\n    this.addMinAndMaxValidator();\r\n  }\r\n\r\n  private addMinAndMaxValidator() {\r\n    // Setup form validator for ionic components only (Kendo component will be auto setup)\r\n    if (this.isMobileScreen()) {\r\n      const control = this.form?.controls[this.data.Value];\r\n      if (control) {\r\n        if (this.minValue != undefined) {\r\n          this.minValidator = Validators.min(Number(this.minValue));\r\n          control.addValidators(this.minValidator);\r\n        }\r\n\r\n        if (this.maxValue != undefined) {\r\n          this.maxValidator = Validators.max(Number(this.maxValue));\r\n          control.addValidators(this.maxValidator);\r\n        }\r\n        control.updateValueAndValidity();\r\n      }\r\n    }\r\n  }\r\n\r\n  private removeMinAndMaxValidator() {\r\n    this.minValue = null;\r\n    this.maxValue = null;\r\n\r\n    const control = this.form?.controls[this.data.Value];\r\n    if (control) {\r\n      if (this.isMobileScreen()) {\r\n        if (control.hasValidator(this.minValidator)) {\r\n          control.removeValidators(this.minValidator)\r\n        }\r\n\r\n        if (control.hasValidator(this.maxValidator)) {\r\n          control.removeValidators(this.maxValidator)\r\n        }\r\n      }\r\n      control.updateValueAndValidity();\r\n    }\r\n  }\r\n\r\n  get hasError(): boolean {\r\n    if (!this.form || !this.data || !this.data.Value || !this.form.controls[this.data.Value]) {\r\n      return false;\r\n    }\r\n    const control = this.form.controls[this.data.Value];\r\n    return !control.valid && !control.untouched && !control.disabled && !this.form.untouched;\r\n  }\r\n}\r\n\r\n","<div [formGroup]=\"form\" class=\"zslider-container e1tag-style\" [style]=\"componentProperties.style.style\"\r\n  [class.has-error-with-tick]=\"tickPlacement !== 'none' && hasError\">\r\n  <div style=\"display: flex;  width: 100%;\">\r\n    <kendo-slider #orientation [id]=\"data.Name\" [formControlName]=\"data.Value\" [vertical]=\"sliderData?.IsVertical\"\r\n      [min]=\"minValue\" [max]=\"maxValue\" [smallStep]=\"smallStep\" [largeStep]=\"largeStep\" [tickPlacement]=\"tickPlacement\"\r\n      [showButtons]=\"sliderData?.ShowButtons\"\r\n      [disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n      (valueChange)=\"onChange(null, $event)\" [style]=\"componentProperties?.style?.style1\" class=\"e1tag-style1\">\r\n    </kendo-slider>&nbsp;\r\n\r\n    <kendo-numerictextbox [formControlName]=\"data.Value\" [min]=\"minValue\" [max]=\"maxValue\"\r\n      [spinners]=\"data.ShowSpinners\" [step]=\"data.StepValue\"\r\n      [disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n      (valueChange)=\"onChange(null, $event)\" style=\"width: 30%;\">\r\n    </kendo-numerictextbox>\r\n  </div>\r\n</div>","/********** Angular **********/\r\nimport { Component, OnInit } from \"@angular/core\";\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { forkJoin, Observable, of, switchMap, tap } from \"rxjs\";\r\n\r\n/********** Component & Service **********/\r\nimport { FieldBase } from \"../components/fieldbase.component\";\r\nimport { ZComponentService } from \"../services/zcomponent.service\";\r\nimport {\r\n  FontAweSomeService, TranslationService, ComponentErrorHandlerService,\r\n  ZComponent\r\n} from 'mmhglobal-zcore';\r\n\r\n\r\n@Component({\r\n  selector: \"app-error\",\r\n  templateUrl: \"./input-error-message.component.html\",\r\n  styleUrls: [\"./input-error-message.component.scss\"]\r\n})\r\n\r\nexport class InputErrorMessageComponent extends FieldBase implements ZComponent, OnInit {\r\n  constructor(\r\n    public componentService: ZComponentService,\r\n    public fontAweSomeService: FontAweSomeService,\r\n    private componentErrorHandlerService: ComponentErrorHandlerService,\r\n    private translationService: TranslationService\r\n  ) {\r\n    super(componentService);\r\n  }\r\n\r\n  public errMsgList = [];\r\n\r\n  ngOnInit() { }\r\n\r\n  public IsShow(): boolean {\r\n    if (this.form.untouched) {\r\n      return false;\r\n    }\r\n\r\n    const control = this.form.controls[this.data.Value];\r\n    if (!control) {\r\n      console.log(`Unable to find form control: ' ${this.data.Value}`);\r\n      return false;\r\n    }\r\n\r\n    const isShow = !control.valid && !control.untouched && !control.disabled;\r\n    if (isShow) {\r\n      of(this.componentErrorHandlerService.getErrorMessageForInvalidInput(this.group, null, this.data.Value)).pipe(\r\n        switchMap((errMessageTranslationInput) => {\r\n          const obs = new Array<Observable<any>>();\r\n          errMessageTranslationInput.forEach(data => {\r\n            obs.push(this.translationService.$translateText(data.errorMessage, { translationVariables: data.translationVariables }));\r\n          })\r\n          return forkJoin(obs);\r\n        }),\r\n        tap(fieldErrorMessages => {\r\n          this.errMsgList = fieldErrorMessages;\r\n        })\r\n      ).subscribe();\r\n    }\r\n    return isShow;\r\n  }\r\n}\r\n","<div class=\"inputfield-error-msg\" *ngIf=\"IsShow()\">\r\n  <div *ngFor=\"let errMsg of errMsgList\">\r\n    <span #warning class=\"k-icon k-i-warning validation_icon\"></span>\r\n    <ion-label>{{errMsg}}</ion-label>\r\n  </div>\r\n</div>\r\n","/********** Angular **********/\r\nimport { Component, Input, OnInit, SimpleChanges } from \"@angular/core\";\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\n\r\n/********** Component & Service **********/\r\nimport { InputFieldBase } from \"../../components/inputfieldbase.component\";\r\nimport { ZComponentService } from \"../../services/zcomponent.service\";\r\nimport { FontAweSomeService, InputFieldAddOns, TranslationService, ZComponent, ZComponentHelper } from 'mmhglobal-zcore';\r\n\r\n\r\n@Component({\r\n  selector: \"app-input-field-addons\",\r\n  templateUrl: \"./input-field-addons.component.html\",\r\n  styleUrls: [\"./input-field-addons.component.scss\"]\r\n})\r\n\r\nexport class InputFieldAddOnsComponent extends InputFieldBase implements ZComponent, OnInit {\r\n  @Input() position: 'top' | 'left' | 'right' | 'bottom'; // default top\r\n  @Input() addOn: InputFieldAddOns;\r\n  constructor(\r\n    componentService: ZComponentService,\r\n    public fontAweSomeService: FontAweSomeService,\r\n    private translationService: TranslationService\r\n  ) {\r\n    super(componentService);\r\n  }\r\n\r\n  ngOnInit() {\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges) {\r\n    if (this.addOn) {\r\n      this.position = this.position || 'top';\r\n      this.setupIconList();\r\n      this.setupButtonList();\r\n      this.setupTextList();\r\n      this.setupChipList();\r\n    }\r\n  }\r\n\r\n  private setupIconList() {\r\n    // this.addOn.IconList = [{ Icon: \"user\", Click: null, Style: \"color:blue;\", ToolTipText: \"text\" }]; // For Testing\r\n\r\n    if (this.addOn.IconList) {\r\n      this.addOn.IconList = this.addOn.IconList.filter(x => x);\r\n      this.addOn.IconList.forEach((i: any) => {\r\n        if (!i.ToolTipText) {\r\n          i.ToolTipText = \"\";\r\n        } else if (i.ToolTipText.indexOf(\"group.\") !== -1) {\r\n          i.ToolTipText = ZComponentHelper.getGroupEvalValue.call(this, i.ToolTipText);\r\n        }\r\n\r\n        this.translationService.$translateText(i.ToolTipText, { elementName: this.group.fieldName, group: this.group }).subscribe();\r\n\r\n        // Default position top. right | bottom | top | left\r\n        i.Position = i.Position || \"top\";\r\n      });\r\n\r\n      this.translationService.$translateItemList(this.addOn.IconList, \"ToolTipText\", { elementName: this.group.fieldName, group: this.group }).subscribe();\r\n    }\r\n  }\r\n\r\n  private setupButtonList() {\r\n    // this.addOn.ButtonList = [{ Text: 'test', Icon: 'user', Style: '', Click: null }];  // For Testing\r\n\r\n    if (this.addOn.ButtonList) {\r\n      this.addOn.ButtonList = this.addOn.ButtonList.filter(x => x);\r\n      this.addOn.ButtonList.forEach(button => {\r\n        const isUseCustomClass = button.Color ? false : true;\r\n        button['color'] = isUseCustomClass ? '' : (button.Color || 'primary');\r\n        button['fill'] = isUseCustomClass ? '' : (button.Fill || 'solid');\r\n        button['class'] = isUseCustomClass ? `${button.Class} useCustomClass` : button.Class;\r\n\r\n        button.Visible = ZComponentHelper.isNullUndefinedEmpty(button.Visible) ? 'true' : button.Visible;\r\n      });\r\n\r\n      this.translationService.$translateItemList(this.addOn.ButtonList, \"Text\", { elementName: this.group.fieldName, group: this.group }).subscribe();\r\n    }\r\n  }\r\n\r\n  private setupTextList() {\r\n    // this.addOn.TextList = [{ Text: 'test', Style: '', TooltipText: 'test' }];  // For Testing\r\n\r\n    if (this.addOn.TextList) {\r\n      this.addOn.TextList = this.addOn.TextList.filter(x => x);\r\n      this.addOn.TextList.forEach((i: any) => {\r\n        if (!i.ToolTipText) {\r\n          i.ToolTipText = \"\";\r\n        } else if (i.ToolTipText.indexOf(\"group.\") !== -1) {\r\n          i.ToolTipText = ZComponentHelper.getGroupEvalValue.call(this, i.ToolTipText);\r\n        }\r\n\r\n        // Default position top. right | bottom | top | left\r\n        i.Position = i.Position || \"top\";\r\n      });\r\n\r\n      this.translationService.$translateItemList(this.addOn.TextList, \"Text\", { elementName: this.group.fieldName, group: this.group }).subscribe();\r\n      this.translationService.$translateItemList(this.addOn.TextList, \"ToolTipText\", { elementName: this.group.fieldName, group: this.group }).subscribe();\r\n    }\r\n  }\r\n\r\n  private setupChipList() {\r\n    if (this.addOn.ChipList) {\r\n      this.addOn.ChipList = this.addOn.ChipList.filter(x => x);\r\n      \r\n      this.translationService.$translateItemList(this.addOn.ChipList, \"Label\", { elementName: this.group.fieldName, group: this.group }).subscribe();\r\n    }\r\n  }\r\n\r\n  public onRemoveChip(chip: any): void {\r\n    if (this.addOn.ChipList) {\r\n      const index = this.addOn.ChipList.indexOf(chip);\r\n      if (index > -1) {\r\n        this.addOn.ChipList.splice(index, 1);\r\n      }\r\n    }\r\n  }\r\n\r\n  public onChipSelectionChange(selectedChipIndexes: any): void {\r\n    if (this.addOn.ChipList) {\r\n       this.addOn.ChipList.forEach((chip, i) => {\r\n         chip.Selected = Array.isArray(selectedChipIndexes) ? selectedChipIndexes.includes(i) : selectedChipIndexes === i;\r\n       });\r\n    }\r\n  }\r\n}\r\n","<div [class]=\"'addons-container ' + position\" *ngIf=\"addOn\">\r\n  <div class=\"addons-icon\" *ngIf=\"addOn.IconList && addOn.IconList.length > 0\">\r\n    <div *ngFor=\"let item of addOn.IconList\">\r\n      <div kendoTooltip class=\"icon-button\" showOn=\"hover\" [tooltipWidth]=\"item.Width\" [position]=\"item.Position\">\r\n        <span (click)=\"onIconClick(item.Click)\" [title]=\"item.ToolTipText\" [style]=\"item.Style\" [class.clickable]=\"!!item.Click\">\r\n          <fa-icon [icon]=\"item.Icon\">\r\n          </fa-icon>\r\n        </span>\r\n      </div>\r\n    </div>\r\n  </div>\r\n\r\n  <div class=\"addons-text\" *ngIf=\"addOn.TextList && addOn.TextList.length > 0\">\r\n    <div *ngFor=\"let item of addOn.TextList\">\r\n      <div kendoTooltip class=\"icon-button\" showOn=\"hover\" [tooltipWidth]=\"item.Width\" [position]=\"item.Position\">\r\n        <span (click)=\"onIconClick(item.Click)\" [title]=\"item.ToolTipText\" [style]=\"item.Style\" [class.clickable]=\"!!item.Click\">\r\n          {{item.Text}}\r\n        </span>\r\n      </div>\r\n    </div>\r\n  </div>\r\n\r\n  <div class=\"addons-buttons\" *ngIf=\"addOn.ButtonList && addOn.ButtonList.length > 0\">\r\n    <ion-button *ngFor=\"let button of addOn.ButtonList; let i = button\" [fill]=\"button.fill\" [ngClass]=\"button.class\"\r\n      [color]=\"button.color\" [size]=\"button.Size || 'small'\" strong=\"false\" (click)=\"onIconClick(button.Click)\"\r\n      [hidden]=\"!button.Visible\" [disabled]=\"group.isTriggered || button.Disabled\" [style]=\"button.Style\">\r\n      <fa-icon *ngIf=\"button.Icon\" [icon]=\"getFontAwesome(button.Icon, fontAweSomeService)\"\r\n        [style.padding-right]=\"button.Text ? '5px' : '0px'\"></fa-icon>\r\n      <span class=\"ion-text-capitalize\">{{ button.Text }}</span>\r\n    </ion-button>\r\n  </div>\r\n  <div class=\"addons-chips\" *ngIf=\"addOn.ChipList && addOn.ChipList.length > 0\">\r\n    <kendo-chip-list [selection]=\"data && data['Multiple'] ? 'multiple' : 'single'\"\r\n      (selectedChange)=\"onChipSelectionChange($event)\">\r\n      <kendo-chip *ngFor=\"let chip of addOn.ChipList\" [selected]=\"chip.Selected\" [ngClass]=\"chip.Class\"\r\n        [removable]=\"chip.Removable && !chip.ReadOnly\"\r\n        [style]=\"chip.Style\" \r\n        [style.pointer-events]=\"chip.ReadOnly ? 'none' : 'auto'\"\r\n        (contentClick)=\"onIconClick(chip.Click)\" (remove)=\"onRemoveChip(chip)\">\r\n        <div class=\"e1-chip-content-container\" style=\"display: flex; align-items: center; gap: 5px;\">\r\n          <div *ngIf=\"chip.Label\" [innerHTML]=\"chip.Label | htmlSanitize\"></div>\r\n          <fa-icon *ngIf=\"chip.Icon\" [icon]=\"getFontAwesome(chip.Icon, fontAweSomeService)\"></fa-icon>\r\n        </div>\r\n      </kendo-chip>\r\n    </kendo-chip-list>\r\n  </div>\r\n</div>\r\n","/********** Angular **********/\r\nimport { Component, OnInit } from \"@angular/core\";\r\nimport { FormGroup } from \"@angular/forms\";\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { tap } from \"rxjs\";\r\n\r\n/********** Component & Service **********/\r\nimport { FieldBase } from \"../components/fieldbase.component\";\r\nimport { ZComponentService } from \"../services/zcomponent.service\";\r\nimport { ZComponent, ZComponentHelper, ZComponentOutputEvent, ZField } from 'mmhglobal-zcore';\r\n\r\n\r\n@Component({\r\n  selector: \"app-zinput-container\",\r\n  templateUrl: \"./zinput-container.component.html\",\r\n  styleUrls: [\"./zinput-container.component.scss\"]\r\n})\r\n\r\nexport class ZInputContainerComponent extends FieldBase implements ZComponent, OnInit {\r\n  public inputFieldAddOn = { top: {}, left: {}, right: {}, bottom: {} };\r\n\r\n  public readonly ztext_type = ['number', 'numeric', 'date', 'email', 'zpassword', 'search', 'tel', 'text', 'url', 'currency'];\r\n  public readonly zselect_type = ['zuiselectmultiple', 'zuiselectmultiple_button', 'select'];\r\n  public readonly zdate_type = ['zdate', 'ztime', 'zdatetime', 'zshortdate', 'zuidatetime', 'zuitime'];\r\n  public readonly sfdatetimepicker_type = ['sfdatetimepicker'];\r\n  public readonly zpostselectinput_type = ['post_select_input', 'pre_select_input', 'zphone_countrycode'];\r\n  public readonly zcheckbox_type = ['checkbox'];\r\n  public readonly znumeric_type = ['znumeric'];\r\n  public readonly textarea_type = ['textarea'];\r\n  public readonly zupload_type = ['zupload'];\r\n  public readonly zimg_type = ['zimg'];\r\n  public readonly ztexteditor_type = ['ztexteditor'];\r\n  public readonly zcolorpicker_type = ['zcolorpicker'];\r\n  public readonly zradiobutton_type = ['zradiobutton'];\r\n  public readonly zslider_type = ['zslider'];\r\n\r\n  constructor(\r\n    public componentService: ZComponentService\r\n  ) {\r\n    super(componentService);\r\n  }\r\n\r\n  ngOnInit() {\r\n    super.initComponent().pipe(\r\n      tap(() => {\r\n        this.setAddOnValue();\r\n        this.componentService.setEditMode(this);\r\n        this.data.zlayout = this.data.zlayout || (this.containerField ? this.containerField.zlayout : \"row\");\r\n        this.isLoading = false;\r\n      }))\r\n      .subscribe();\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    this.componentService.decrementComponentCounterForField(this.data);\r\n  }\r\n\r\n  public getClass(form: FormGroup, data: ZField) {\r\n    return `style${data.FieldLayoutType} ${super.getClass(form, data)}`;\r\n  }\r\n\r\n  public triggerContainerEvent(event: ZComponentOutputEvent) {\r\n    if (event) {\r\n      if (event.type === \"setAddOnValue\") {\r\n        this.setAddOnValue(event.data);\r\n      }\r\n    }\r\n  }\r\n\r\n  private setAddOnValue(addOns?: any) {\r\n    const inputFieldAddOnGroupValue = ZComponentHelper.getGroupValue(addOns || this.data.InputFieldAddOns as any, this.group);\r\n    const addOnValue = inputFieldAddOnGroupValue || addOns || this.data.InputFieldAddOns;\r\n    if (addOnValue && Array.isArray(addOnValue)) {\r\n      for (const key of Object.keys(this.inputFieldAddOn)) {\r\n        this.inputFieldAddOn[key] = addOnValue.find(i => i.Position === key);\r\n      }\r\n    }\r\n  }\r\n}\r\n","<div class=\"mobile-input-container e1tag-container-style\" *ngIf=\"isMobileScreen() && !isLoading\"\r\n     [style]=\"componentProperties.containerStyle.style\">\r\n  <ion-item [formGroup]=\"form\" class=\"e1tag-container-style1\"\r\n            *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\"\r\n            [ngClass]=\"getIon_InvalidClass(form, data)\" [style]=\"componentProperties.containerStyle.style1\">\r\n    <ion-label [attr.for]=\"data.Value\" class=\"input-label e1tag-container-style2\"\r\n               *ngIf=\"data.ShowLabel === undefined || data.ShowLabel\"\r\n               [position]=\"data.LabelPosition ? data.LabelPosition : 'stacked'\"\r\n               [style]=\"componentProperties.containerStyle.style2\">\r\n      {{componentProperties.label}}\r\n      <ion-text *ngIf=\"(!!componentProperties.isRequiredField ? group[componentProperties.isRequiredField] : componentProperties.isRequired)\"\r\n                color=\"danger\" class=\"required-icon\">*</ion-text>\r\n    </ion-label>\r\n    <div class=\"input-value-field\">\r\n      <div class=\"input-fields-options\">\r\n        <app-ztext *ngIf=\"ztext_type.includes(data.Type)\" [data]=\"data\" [group]=\"group\" [form]=\"form\"\r\n                   [containerField]=\"containerField\" [componentProperties]=\"componentProperties\" class=\"e1tag-container-style5\"\r\n                   [style]=\"componentProperties.containerStyle.style5\" (triggerContainerEvent)=\"triggerContainerEvent($event)\">\r\n        </app-ztext>\r\n        <app-zselectmultiple *ngIf=\"zselect_type.includes(data.Type)\" [data]=\"data\" [group]=\"group\" [form]=\"form\"\r\n                             [containerField]=\"containerField\" [componentProperties]=\"componentProperties\" class=\"e1tag-container-style5\"\r\n                             [style]=\"componentProperties.containerStyle.style5\" (triggerContainerEvent)=\"triggerContainerEvent($event)\">\r\n        </app-zselectmultiple>\r\n        <app-zdatetime *ngIf=\"zdate_type.includes(data.Type)\" [data]=\"data\" [group]=\"group\" [form]=\"form\"\r\n                       [containerField]=\"containerField\" [componentProperties]=\"componentProperties\" class=\"e1tag-container-style5\"\r\n                       [style]=\"componentProperties.containerStyle.style5\" (triggerContainerEvent)=\"triggerContainerEvent($event)\">\r\n        </app-zdatetime>\r\n        <app-sfdatetimepicker *ngIf=\"sfdatetimepicker_type.includes(data.Type)\" [data]=\"data\" [group]=\"group\" [form]=\"form\"\r\n                       [containerField]=\"containerField\" [componentProperties]=\"componentProperties\" class=\"e1tag-container-style5\"\r\n                       [style]=\"componentProperties.containerStyle.style5\" (triggerContainerEvent)=\"triggerContainerEvent($event)\">\r\n        </app-sfdatetimepicker>\r\n        <app-zpostselectinput *ngIf=\"zpostselectinput_type.includes(data.Type)\" [data]=\"data\" [group]=\"group\"\r\n                              [form]=\"form\" [containerField]=\"containerField\" [componentProperties]=\"componentProperties\"\r\n                              class=\"e1tag-container-style5\" [style]=\"componentProperties.containerStyle.style5\"\r\n                              (triggerContainerEvent)=\"triggerContainerEvent($event)\">\r\n        </app-zpostselectinput>\r\n        <app-zcheckbox *ngIf=\"zcheckbox_type.includes(data.Type)\" [data]=\"data\" [group]=\"group\" [form]=\"form\"\r\n                       [containerField]=\"containerField\" [componentProperties]=\"componentProperties\" class=\"e1tag-container-style5\"\r\n                       [style]=\"componentProperties.containerStyle.style5\" (triggerContainerEvent)=\"triggerContainerEvent($event)\">\r\n        </app-zcheckbox>\r\n        <app-znumeric *ngIf=\"znumeric_type.includes(data.Type)\" [data]=\"data\" [group]=\"group\" [form]=\"form\"\r\n                      [containerField]=\"containerField\" [componentProperties]=\"componentProperties\" class=\"e1tag-container-style5\"\r\n                      [style]=\"componentProperties.containerStyle.style5\" (triggerContainerEvent)=\"triggerContainerEvent($event)\">\r\n        </app-znumeric>\r\n        <app-ztextarea *ngIf=\"textarea_type.includes(data.Type)\" [data]=\"data\" [group]=\"group\" [form]=\"form\"\r\n                       [containerField]=\"containerField\" [componentProperties]=\"componentProperties\" class=\"e1tag-container-style5\"\r\n                       [style]=\"componentProperties.containerStyle.style5\" (triggerContainerEvent)=\"triggerContainerEvent($event)\">\r\n        </app-ztextarea>\r\n        <app-zupload *ngIf=\"zupload_type.includes(data.Type)\" [data]=\"data\" [group]=\"group\" [form]=\"form\"\r\n                     [containerField]=\"containerField\" [componentProperties]=\"componentProperties\" class=\"e1tag-container-style5\"\r\n                     [style]=\"componentProperties.containerStyle.style5\" (triggerContainerEvent)=\"triggerContainerEvent($event)\">\r\n        </app-zupload>\r\n        <app-zimg *ngIf=\"zimg_type.includes(data.Type)\" [data]=\"data\" [group]=\"group\" [form]=\"form\"\r\n                  [containerField]=\"containerField\" [componentProperties]=\"componentProperties\" class=\"e1tag-container-style5\"\r\n                  [style]=\"componentProperties.containerStyle.style5\" (triggerContainerEvent)=\"triggerContainerEvent($event)\">\r\n        </app-zimg>\r\n        <app-ztexteditor *ngIf=\"ztexteditor_type.includes(data.Type)\" [data]=\"data\" [group]=\"group\" [form]=\"form\"\r\n                         [containerField]=\"containerField\" [componentProperties]=\"componentProperties\" class=\"e1tag-container-style5\"\r\n                         [style]=\"componentProperties.containerStyle.style5\" (triggerContainerEvent)=\"triggerContainerEvent($event)\">\r\n        </app-ztexteditor>\r\n        <app-zcolorpicker *ngIf=\"zcolorpicker_type.includes(data.Type)\" [data]=\"data\" [group]=\"group\" [form]=\"form\"\r\n                   [containerField]=\"containerField\" [componentProperties]=\"componentProperties\" class=\"e1tag-container-style5\"\r\n                   [style]=\"componentProperties.containerStyle.style5\" (triggerContainerEvent)=\"triggerContainerEvent($event)\">\r\n        </app-zcolorpicker>\r\n        <app-zradiobutton *ngIf=\"zradiobutton_type.includes(data.Type)\" [data]=\"data\" [group]=\"group\" [form]=\"form\"\r\n          [containerField]=\"containerField\" [componentProperties]=\"componentProperties\" class=\"e1tag-container-style5\"\r\n          [style]=\"componentProperties.containerStyle.style5\" (triggerContainerEvent)=\"triggerContainerEvent($event)\">\r\n        </app-zradiobutton>\r\n        <app-zslider *ngIf=\"zslider_type.includes(data.Type)\" [data]=\"data\" [group]=\"group\" [form]=\"form\"\r\n          [containerField]=\"containerField\" [componentProperties]=\"componentProperties\" class=\"e1tag-container-style5\"\r\n          [style]=\"componentProperties.containerStyle.style5\" (triggerContainerEvent)=\"triggerContainerEvent($event)\">\r\n        </app-zslider>\r\n      </div>\r\n      <app-error [data]=\"data\" [group]=\"group\" [form]=\"form\"></app-error>\r\n      <!-- <app-field-suffix-element [data]=\"data\" [group]=\"group\" [form]=\"form\" [containerField]=\"containerField\"\r\n        [componentProperties]=\"componentProperties\"></app-field-suffix-element> -->\r\n    </div>\r\n  </ion-item>\r\n</div>\r\n\r\n<div class=\"desktop-input-container e1tag-container-style\" [formGroup]=\"form\"\r\n     [style]=\"componentProperties.containerStyle.style\"\r\n     *ngIf=\"!isMobileScreen() && !isLoading && (!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\"\r\n     [ngClass]=\"getClass(form, data)\" [fxLayout]=\"data.FieldLayoutType !== 1 ? 'column' : 'row'\"\r\n     fxLayoutAlign=\"space-between stretch\" [class.editMode]=\"(data['_EditMode'].value)\"\r\n     #zinputcontainer>\r\n  <kendo-label class=\"input-label e1tag-container-style1\" [for]=\"data.Name\" [text]=\"componentProperties.label\"\r\n               *ngIf=\"data.ShowLabel\" [style]=\"componentProperties.containerStyle.style1\"\r\n               [fxFlex]=\"componentProperties.labelFlexLayoutSize.all\" [fxFlex.xs]=\"componentProperties.labelFlexLayoutSize.xs\"\r\n               [fxFlex.sm]=\"componentProperties.labelFlexLayoutSize.sm\" [fxFlex.md]=\"componentProperties.labelFlexLayoutSize.md\"\r\n               [fxFlex.lg]=\"componentProperties.labelFlexLayoutSize.lg\" [fxFlex.xl]=\"componentProperties.labelFlexLayoutSize.xl\">\r\n    <kendo-label *ngIf=\"data['_EditMode'].value && (!!componentProperties.isRequiredField ? group[componentProperties.isRequiredField] : componentProperties.isRequired)\"\r\n                 text=\"*\" class=\"required-icon\">\r\n    </kendo-label>\r\n  </kendo-label>\r\n  <div class=\"input-value-container e1tag-container-style2\" [style]=\"componentProperties.containerStyle.style2\"\r\n       [fxFlex]=\"componentProperties.fieldFlexLayoutSize.all\" [fxFlex.xs]=\"componentProperties.fieldFlexLayoutSize.xs\"\r\n       [fxFlex.sm]=\"componentProperties.fieldFlexLayoutSize.sm\" [fxFlex.md]=\"componentProperties.fieldFlexLayoutSize.md\"\r\n       [fxFlex.lg]=\"componentProperties.fieldFlexLayoutSize.lg\" [fxFlex.xl]=\"componentProperties.fieldFlexLayoutSize.xl\">\r\n\r\n    <!-- Structural Fix: Moved addon-top here from inside the main field label so it stacks correctly above the input controls and readonly label, rather than pushing the label text sideways. -->\r\n    <app-input-field-addons class=\"addon-top e1tag-container-style7\" [position]=\"'top'\" [addOn]=\"inputFieldAddOn.top\"\r\n                            [data]=\"data\" [group]=\"group\" [form]=\"form\" [containerField]=\"containerField\"\r\n                            [componentProperties]=\"componentProperties\" [style]=\"componentProperties.containerStyle.style7\">\r\n    </app-input-field-addons>\r\n\r\n    <!-- Structural Fix: Expanded input-value-field to wrap BOTH the edit-mode inputs (*ngIf=\"EditMode\") and the readonly label (*ngIf=\"!EditMode\"). This ensures addon-left and addon-right are displayed in both states instead of disappearing when readonly. -->\r\n    <div class=\"input-value-field e1tag-container-style3\" [style]=\"componentProperties.containerStyle.style3\"\r\n      style=\"align-items: center;\">\r\n      <app-input-field-addons class=\"addon-left e1tag-container-style7\" [position]=\"'left'\"\r\n                              [addOn]=\"inputFieldAddOn.left\" [data]=\"data\" [group]=\"group\" [form]=\"form\" [containerField]=\"containerField\"\r\n                              [componentProperties]=\"componentProperties\" [style]=\"componentProperties.containerStyle.style7\">\r\n      </app-input-field-addons>\r\n      <div *ngIf=\"data['_EditMode'].value\" class=\"input-fields-options e1tag-container-style4\"\r\n        [style]=\"componentProperties.containerStyle.style4\">\r\n        <app-ztext *ngIf=\"ztext_type.includes(data.Type)\" [data]=\"data\" [group]=\"group\" [form]=\"form\"\r\n                   [containerField]=\"containerField\" [componentProperties]=\"componentProperties\" class=\"e1tag-container-style5\"\r\n                   [style]=\"componentProperties.containerStyle.style5\" (triggerContainerEvent)=\"triggerContainerEvent($event)\">\r\n        </app-ztext>\r\n        <app-zselectmultiple *ngIf=\"zselect_type.includes(data.Type)\" [data]=\"data\" [group]=\"group\" [form]=\"form\"\r\n                             [containerField]=\"containerField\" [componentProperties]=\"componentProperties\" class=\"e1tag-container-style5\"\r\n                             [style]=\"componentProperties.containerStyle.style5\" (triggerContainerEvent)=\"triggerContainerEvent($event)\">\r\n        </app-zselectmultiple>\r\n        <app-zdatetime *ngIf=\"zdate_type.includes(data.Type)\" [data]=\"data\" [group]=\"group\" [form]=\"form\"\r\n                       [containerField]=\"containerField\" [componentProperties]=\"componentProperties\" class=\"e1tag-container-style5\"\r\n                       [style]=\"componentProperties.containerStyle.style5\" (triggerContainerEvent)=\"triggerContainerEvent($event)\">\r\n        </app-zdatetime> \r\n        <app-sfdatetimepicker *ngIf=\"sfdatetimepicker_type.includes(data.Type)\" [data]=\"data\" [group]=\"group\" [form]=\"form\"\r\n                       [containerField]=\"containerField\" [componentProperties]=\"componentProperties\" class=\"e1tag-container-style5\"\r\n                       [style]=\"componentProperties.containerStyle.style5\" (triggerContainerEvent)=\"triggerContainerEvent($event)\">\r\n        </app-sfdatetimepicker>\r\n        <app-zpostselectinput *ngIf=\"zpostselectinput_type.includes(data.Type)\" [data]=\"data\" [group]=\"group\"\r\n                              [form]=\"form\" [containerField]=\"containerField\" [componentProperties]=\"componentProperties\"\r\n                              class=\"e1tag-container-style5\" [style]=\"componentProperties.containerStyle.style5\"\r\n                              (triggerContainerEvent)=\"triggerContainerEvent($event)\">\r\n        </app-zpostselectinput>\r\n        <app-zcheckbox *ngIf=\"zcheckbox_type.includes(data.Type)\" [data]=\"data\" [group]=\"group\" [form]=\"form\"\r\n                       [containerField]=\"containerField\" [componentProperties]=\"componentProperties\" class=\"e1tag-container-style5\"\r\n                       [style]=\"componentProperties.containerStyle.style5\" (triggerContainerEvent)=\"triggerContainerEvent($event)\">\r\n        </app-zcheckbox>\r\n        <app-znumeric *ngIf=\"znumeric_type.includes(data.Type)\" [data]=\"data\" [group]=\"group\" [form]=\"form\"\r\n                      [containerField]=\"containerField\" [componentProperties]=\"componentProperties\" class=\"e1tag-container-style5\"\r\n                      [style]=\"componentProperties.containerStyle.style5\" (triggerContainerEvent)=\"triggerContainerEvent($event)\">\r\n        </app-znumeric>\r\n        <app-ztextarea *ngIf=\"textarea_type.includes(data.Type)\" [data]=\"data\" [group]=\"group\" [form]=\"form\"\r\n                       [containerField]=\"containerField\" [componentProperties]=\"componentProperties\" class=\"e1tag-container-style5\"\r\n                       [style]=\"componentProperties.containerStyle.style5\" (triggerContainerEvent)=\"triggerContainerEvent($event)\">\r\n        </app-ztextarea>\r\n        <app-zupload *ngIf=\"zupload_type.includes(data.Type)\" [data]=\"data\" [group]=\"group\" [form]=\"form\"\r\n                     [containerField]=\"containerField\" [componentProperties]=\"componentProperties\" class=\"e1tag-container-style5\"\r\n                     [style]=\"componentProperties.containerStyle.style5\" (triggerContainerEvent)=\"triggerContainerEvent($event)\">\r\n        </app-zupload>\r\n        <app-zimg *ngIf=\"zimg_type.includes(data.Type)\" [data]=\"data\" [group]=\"group\" [form]=\"form\"\r\n                  [containerField]=\"containerField\" [componentProperties]=\"componentProperties\" class=\"e1tag-container-style5\"\r\n                  [style]=\"componentProperties.containerStyle.style5\" (triggerContainerEvent)=\"triggerContainerEvent($event)\">\r\n        </app-zimg>\r\n        <app-ztexteditor *ngIf=\"ztexteditor_type.includes(data.Type)\" [data]=\"data\" [group]=\"group\" [form]=\"form\"\r\n                         [containerField]=\"containerField\" [componentProperties]=\"componentProperties\" class=\"e1tag-container-style5\"\r\n                         [style]=\"componentProperties.containerStyle.style5\" (triggerContainerEvent)=\"triggerContainerEvent($event)\">\r\n        </app-ztexteditor>\r\n        <app-zcolorpicker *ngIf=\"zcolorpicker_type.includes(data.Type)\" [data]=\"data\" [group]=\"group\" [form]=\"form\"\r\n                   [containerField]=\"containerField\" [componentProperties]=\"componentProperties\" class=\"e1tag-container-style5\"\r\n                   [style]=\"componentProperties.containerStyle.style5\" (triggerContainerEvent)=\"triggerContainerEvent($event)\">\r\n        </app-zcolorpicker>\r\n        <app-zradiobutton *ngIf=\"zradiobutton_type.includes(data.Type)\" [data]=\"data\" [group]=\"group\" [form]=\"form\" \r\n          [containerField]=\"containerField\" [componentProperties]=\"componentProperties\" class=\"e1tag-container-style5\"\r\n          [style]=\"componentProperties.containerStyle.style5\" (triggerContainerEvent)=\"triggerContainerEvent($event)\">\r\n        </app-zradiobutton>\r\n        <app-zslider *ngIf=\"zslider_type.includes(data.Type)\" [data]=\"data\" [group]=\"group\" [form]=\"form\"\r\n          [containerField]=\"containerField\" [componentProperties]=\"componentProperties\" class=\"e1tag-container-style5\"\r\n          [style]=\"componentProperties.containerStyle.style5\" (triggerContainerEvent)=\"triggerContainerEvent($event)\">\r\n        </app-zslider>\r\n      </div>\r\n\r\n      <!-- Structural Fix: Moved the readonly kendo-label inside the flex-wrapped input-value-field to keep it sandwiched between addon-left and addon-right when in readonly mode. -->\r\n      <kendo-label class=\"input-value e1tag-container-style6\" *ngIf=\"!(data['_EditMode'].value)\"\r\n                 [style]=\"componentProperties.containerStyle.style6\" style=\"flex-grow: 10; margin-top: 0;\"\r\n                 [text]=\"group.zModel[data.Value] | inputText : data: group | async\"></kendo-label>\r\n\r\n      <app-input-field-addons class=\"addon-right e1tag-container-style7\" [position]=\"'right'\"\r\n                              [addOn]=\"inputFieldAddOn.right\" [data]=\"data\" [group]=\"group\" [form]=\"form\" [containerField]=\"containerField\"\r\n                              [componentProperties]=\"componentProperties\" [style]=\"componentProperties.containerStyle.style7\">\r\n      </app-input-field-addons>\r\n    </div>\r\n    <app-input-field-addons class=\"addon-bottom e1tag-container-style7\" [position]=\"'bottom'\"\r\n                            [addOn]=\"inputFieldAddOn.bottom\" [data]=\"data\" [group]=\"group\" [form]=\"form\" [containerField]=\"containerField\"\r\n                            [componentProperties]=\"componentProperties\" [style]=\"componentProperties.containerStyle.style7\">\r\n    </app-input-field-addons>\r\n    <app-error [data]=\"data\" [group]=\"group\" [form]=\"form\"></app-error>\r\n  </div>\r\n  <app-context-menu [data]=\"data\" [group]=\"group\" [form]=\"form\" [target]=\"zinputcontainer\"></app-context-menu>\r\n</div>\r\n","/********** Angular **********/\r\nimport { Component, OnInit, OnDestroy, ViewChild, AfterViewChecked, ChangeDetectorRef } from '@angular/core';\r\nimport { FormGroup, FormBuilder, Validators, FormControl, ValidatorFn } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { Observable, of, Subject, Subscription, delay } from 'rxjs';\r\nimport { tap, map, switchMap } from 'rxjs/operators';\r\nimport { ExcelExportData } from '@progress/kendo-angular-excel-export';\r\nimport { DetailCollapseEvent, DetailExpandEvent, GridItem, SelectableSettings, \r\n  GridDataResult, DataStateChangeEvent, PageChangeEvent, CellClickEvent, GridComponent, RowArgs    \r\n} from '@progress/kendo-angular-grid';\r\nimport { SortDescriptor, State, process, GroupDescriptor } from '@progress/kendo-data-query';\r\n\r\n/********** Component & Service **********/\r\nimport { DataListingFieldBase } from '../components/datalistingfieldbase.component';\r\nimport { ZComponentService } from '../services/zcomponent.service';\r\nimport { hideAndShowVerticalAnimation } from '../animations/component-animations';\r\nimport { ComponentConstant } from '../constants/constant';\r\nimport { MainService } from '../services/main.service';\r\nimport { ElementContainerDirective } from '../directives/elementcontainer.directive';\r\nimport { ZGridBindingDirective } from './zgrid.binding.directive';\r\nimport { ZGridService } from './zgrid.service';\r\nimport {\r\n  WebApiService, ToastService,\r\n  ZField, ZGroup, ZComponent, ZComponentHelper, ZComponentOutputEvent, ZCoreService, StorageSessionService, FontAweSomeService,\r\n  ZGridPostApiParams, ZGridSettings, ZGridCustomColumn, ResourceApiService, StateType, StateSettingInfo, AuthService, StateSettingService,\r\n  AlertButton, AlertService,\r\n  TriggerFromType\r\n} from 'mmhglobal-zcore';\r\n\r\nexport interface ZGrid {\r\n  params: ZGridPostApiParams;\r\n  state: State;\r\n  columns: any[];\r\n  paginationApiPostUrl: string;\r\n  data: ZField;\r\n  group: ZGroup;\r\n  zgrid: ZGridBindingDirective;\r\n  inlineEditedFormGroups: FormGroup;\r\n  getGridData: () => any[];\r\n  getData: () => void;\r\n  clearData: () => void;\r\n  setData: (data: any) => void;\r\n  setColumns: (columnFieldsName: string, columns: Array<ZGridCustomColumn>) => void;\r\n  $setColumns: (columnFieldsName: string, columns: Array<ZGridCustomColumn>) => Observable<any>;\r\n  getFormControlData(): any[];\r\n}\r\n\r\n\r\n@Component({\r\n  selector: 'app-zgrid',\r\n  templateUrl: './zgrid.component.html',\r\n  styleUrls: ['./zgrid.component.scss'],\r\n  animations: [\r\n    hideAndShowVerticalAnimation\r\n  ]\r\n})\r\n\r\nexport class ZgridComponent extends DataListingFieldBase implements ZComponent, OnInit, AfterViewChecked, OnDestroy {\r\n  @ViewChild(ElementContainerDirective, { static: true }) elementContainer!: ElementContainerDirective;\r\n\r\n  zgrid: any = null;\r\n  oauthUrl: string = null;\r\n  gridData: GridDataResult;\r\n  selectableSettings: SelectableSettings;\r\n  rowSelection: string[] = [];\r\n  mySelection = new Map();\r\n  inlineEditedFormGroups = {};\r\n  public formGroup: FormGroup; // for kendo grid built-in\r\n  public previousNext: boolean;\r\n  public gridBtn;\r\n  public pageable: any = false;\r\n  public filterGroup = new ZGroup();\r\n  public advfilterGroup = new ZGroup();\r\n  public isShowAdvFilter = false;\r\n  public gridTitle: any;\r\n  public isInlineEditInputFieldLoading = false;\r\n  private tempInlineEditedFormGroups;\r\n  private isColumnHeaderTranslated = false;\r\n  public showRestoreGridSettingButton: boolean = false;\r\n  public checkboxColumnPinned: boolean = false;\r\n  public groupDescriptor: GroupDescriptor[] = [];\r\n\r\n  \r\n  params: ZGridPostApiParams = {\r\n    referId: null,\r\n    pageNo: 0,\r\n    pageSize: 20,\r\n    sortColumnName: '',\r\n    sortOrder: '',\r\n    sortColumnNames: [],\r\n    sortOrders: [],\r\n    filterParams: [],\r\n    parameters: '',\r\n    filters: '',\r\n    columns: '',\r\n    grantType: 4\r\n  };\r\n\r\n  gridSubject: Subject<any> = new Subject<any>();\r\n\r\n  columns: any[];\r\n  generateHiddenColumnsField: any[];\r\n  editableColumns: any[];\r\n  subscription: Subscription;\r\n  pageSizes: boolean | any[];\r\n  gridStorageKey: string;\r\n  gridDefaultStateExist: boolean = false;\r\n  isNew: boolean = true;\r\n  private editedRowIndex: number;\r\n  public gridSetting: ZGridSettings;\r\n  private environment: any;\r\n\r\n  constructor(\r\n    public componentService: ZComponentService,\r\n    public fontAweSomeService: FontAweSomeService,\r\n    private activatedRoute: ActivatedRoute,\r\n    private router: Router,\r\n    private formBuilder: FormBuilder,\r\n    private webApiService: WebApiService,\r\n    private toastService: ToastService,\r\n    private zcoreService: ZCoreService,\r\n    private storageService: StorageSessionService,\r\n    private mainService: MainService,\r\n    private cdr: ChangeDetectorRef,\r\n    private gridService: ZGridService,\r\n    private stateSettingService: StateSettingService,\r\n    private resourceApiService: ResourceApiService,\r\n    private authService: AuthService,\r\n    private alertService: AlertService\r\n  ) {\r\n    super(componentService);\r\n    this.environment = this.zcoreService.getEnvironment();\r\n    this.oauthUrl = this.zcoreService.getOauthUrl();\r\n    this.allResults = this.allResults.bind(this);\r\n    this.refreshData = this.refreshData.bind(this);\r\n    this.clearData = this.clearData.bind(this);\r\n  }\r\n\r\n  ngOnInit() {\r\n    super.setupInnerField();\r\n    this.setupFilterFeature();\r\n    this.setupGridButtons();\r\n    this.setupGridComponentAttributes();\r\n    this.gridSetting = { gridState: this.gridService.setupGridSetting(this.data) };\r\n\r\n    this.setupSubscriptionForGridSubject();\r\n\r\n    super.translateToolBarItems().pipe(tap(() => {\r\n      this.gridCallback(this.group);\r\n    })).subscribe();\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    this.componentService.decrementComponentCounterForField(this.data);\r\n  }\r\n\r\n  ngAfterViewChecked() {\r\n    const isBackNavigated = (sessionStorage.getItem('navigatedReloadGrid') === 'true');\r\n    this.showHideRestoreGridSettingButton();\r\n\r\n    if (isBackNavigated) {\r\n      if (!this.isUseLocalData()) {\r\n        this.getData();\r\n      }\r\n      this.cdr.detectChanges();\r\n      this.storageService.set('navigatedReloadGrid', JSON.stringify(false));\r\n    }\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    if (this.subscription) {\r\n      this.subscription.unsubscribe();\r\n    }\r\n  }\r\n\r\n  //#region Grid State (pagination, sortable, filter, ordering)\r\n  public dataStateChange(state: DataStateChangeEvent): void {\r\n    if (!this.isUseLocalData()) {\r\n      this.zgrid.dataStateChange(state);\r\n    }\r\n  }\r\n\r\n  public filterable(value: any) {\r\n    if (value === false) {\r\n      return false;\r\n    }\r\n    return true;\r\n  }\r\n\r\n  public sortable(value: any) {\r\n    if (value === false) {\r\n      return false;\r\n    }\r\n    return true;\r\n  }\r\n\r\n  public locked(colSetting: any) {\r\n    if (colSetting['pinnedLeft'] == true) {\r\n      return true;\r\n    }\r\n    return false;\r\n  }\r\n  //#endregion\r\n\r\n  public onExcelExport(e: any): void {\r\n    const colRequiredFormat = [];\r\n\r\n    // Collect columns that have a specific Excel cell format\r\n    this.columns.forEach(col => {\r\n      if (col.ExcelCellFormat) {\r\n        colRequiredFormat.push({ colName: col.DisplayName ?? col.Name, cellFormat: col.ExcelCellFormat, colIndex: null });\r\n      }\r\n    });\r\n\r\n    if (colRequiredFormat.length === 0) {\r\n      return;\r\n    }\r\n\r\n    e.workbook.sheets[0].rows.forEach(row => {\r\n      if (row.type === 'header') {\r\n        // Check header cells to find matching column names and store their index\r\n        row.cells.forEach((cell, index) => {\r\n          colRequiredFormat.forEach(col => {\r\n            if (cell.value === col.colName) {\r\n              col.colIndex = index;\r\n            }\r\n          });\r\n        });\r\n      }\r\n      else if (row.type === 'data') {\r\n        // Apply the format to cells in data rows if their index matches\r\n        row.cells.forEach((cell, index) => {\r\n          colRequiredFormat.forEach(col => {\r\n            if (index === col.colIndex) {\r\n              cell.format = col.cellFormat;\r\n            }\r\n          });\r\n        });\r\n      }\r\n    });\r\n  }\r\n\r\n  //#region Grid Columns\r\n  public isSelectOption() {\r\n    if (this.data.SelectOptions) {\r\n      this.selectableSettings = {\r\n        checkboxOnly: this.data.CheckboxOnly ?? false,\r\n        mode: (this.data.SelectOptions?.toLowerCase() === 'multiple') ? 'multiple' : 'single'\r\n      };\r\n      return true;\r\n    }\r\n    return false;\r\n  }\r\n\r\n  public setColumns(columnName: string, columns: Array<ZGridCustomColumn>) {\r\n    this.group[columnName] = this.wrapColumnNamesInFieldElement(columns);\r\n    this.generateGridColumns().subscribe();\r\n  }\r\n\r\n  public $setColumns(columnName: string, columns: Array<ZGridCustomColumn>): Observable<any> {\r\n    this.group[columnName] = this.wrapColumnNamesInFieldElement(columns);\r\n    return this.generateGridColumns();\r\n  }\r\n\r\n  private wrapColumnNamesInFieldElement(columnList: Array<ZGridCustomColumn>) {\r\n    return of(columnList.map(column => {\r\n      const isHidden: boolean = column.Hidden;\r\n      return {\r\n        Name: column.Name,\r\n        Value: column.Code,\r\n        Type: column.Type,\r\n        gridColVisible: !isHidden,\r\n        EnableHiding: column.EnableHiding || false,\r\n        EnableGridValue: column.EnableGridValue || false,\r\n        width: 100 + column.Name.length * 4,\r\n        enableFiltering: false,\r\n        enableSorting: true,\r\n        enablePinning: true,\r\n        DivClass: 'col-xs-12 col-sm-6',\r\n        IsEditableInGrid: column.Editable\r\n      };\r\n    }));\r\n  }\r\n\r\n  private generateGridColumns(gridSetting?: ZGridSettings): Observable<any> {\r\n    const columnFields$: Observable<any> = ZComponentHelper.getGroupValue(\r\n      this.data.ColumnFields,\r\n      this.group\r\n    ) || of([]);\r\n\r\n    if (!this.data.ColumnFields) {\r\n      console.warn(`Invalid/Empty grid(${this.data.Name}) columnField`);\r\n    }\r\n\r\n    if (!columnFields$) {\r\n      console.log('Fail to generate grid column fields.');\r\n      console.log(this.data.ColumnFields);\r\n      console.log(this.group);\r\n    }\r\n\r\n    return columnFields$.pipe(\r\n      tap(columnField => {\r\n        if (!columnField) {\r\n          console.warn(`Invalid/Empty grid(${this.data.Name}) data to generate column`);\r\n        }\r\n        else {\r\n          this.columns = [];\r\n          const generateHiddenColumns = [];\r\n\r\n          ZComponentHelper.getGridColumns({\r\n            columnField: columnField,\r\n            columns: this.columns,\r\n            group: this.group,\r\n            columnConfigurations: gridSetting?.columnConfigurations,\r\n            generateHiddenColumns: generateHiddenColumns,\r\n            gridAttributes: this.data\r\n          });\r\n\r\n          if (generateHiddenColumns.length > 0) {\r\n            this.generateHiddenColumnsField = [];\r\n            const generateHiddenColumnsField = generateHiddenColumns.map(field => ({ field: field, Visible: true, IsRequired: false, Value: field }));\r\n            for (const field of generateHiddenColumnsField) {\r\n              this.generateHiddenColumnsField.push(field);\r\n            }\r\n          }\r\n        }\r\n      }),\r\n      switchMap(() => {\r\n        return super.translateColumnHeader(this.columns);\r\n      })\r\n    );\r\n  }\r\n\r\n  getIconName(gridCellReplaceValue: any, value: any) {\r\n    if (gridCellReplaceValue && gridCellReplaceValue[value]) {\r\n      return ZComponentHelper.getFontAwesome(gridCellReplaceValue[value], this.fontAweSomeService);\r\n    }\r\n\r\n    return '';\r\n  }\r\n  //#endregion\r\n\r\n  //#region Oncell click handling\r\n  // 1. inCell Edit\r\n  // 2. OnItemClick\r\n  // 3. Navigate to Form Page\r\n  // 4. Show Form Page in the same page (DEC and Drawer)\r\n  public cellClickHandler(event: CellClickEvent) {\r\n    // Right click handler\r\n    if (event.type === 'contextmenu') {\r\n      this.dataItemContextMenu.showContextMenuManually(event, event.dataItem);\r\n      return;\r\n    }\r\n\r\n    const disableAllColumnCellClickHandler = this.data.DisableCellClickHandler ? this.data.DisableCellClickHandler : false;\r\n    const isCommandColumn = event.column.constructor.name == 'CommandColumnComponent' ? true : false;\r\n\r\n    if (this.tooltipDir) {\r\n      this.tooltipDir.hide();\r\n    }\r\n\r\n    if (!disableAllColumnCellClickHandler && !isCommandColumn) {\r\n      const inCellEditable = this.data.InCellEditable ? this.data.InCellEditable : false;\r\n      if (inCellEditable) {\r\n        this.editableColumns = this.columns.filter(s => s.isEditableInDataItem === true);\r\n        if (!!this.editableColumns) {\r\n          this.editableColumns.map(s => event.sender.editCell(event.rowIndex, event.columnIndex, this.createFormGroup(event.dataItem, s.field)));\r\n        }\r\n      } else {\r\n        console.log('cellClick event: ', event);\r\n        //this.cacheService.set('lastClickedGridRecord', event);\r\n\r\n        if (this.data.OnItemClick) {\r\n          const func = ZComponentHelper.getGroupEvalValue.call(this, this.data.OnItemClick);\r\n          if (typeof func === 'function') {\r\n            const callFunc = func.bind(this.group.ctrlScope);\r\n            callFunc(event);\r\n          }\r\n          return;\r\n        }\r\n        else {\r\n          // store clicked id and action as edit to the session storage\r\n          // OnItemClick, project have to set themself.\r\n          this.mainService.setNavigationParams([event.dataItem.Id, 'edit']);\r\n        }\r\n\r\n        this.editModel(event.dataItem);\r\n      }\r\n    }\r\n  }\r\n\r\n  public editCellCloseHandler(args: any) {\r\n    const { formGroup, dataItem } = args;\r\n    if (!formGroup.valid) {\r\n      args.preventDefault();\r\n    } else if (formGroup.dirty) {\r\n      this.editableColumns = this.columns.filter(s => s.isEditableInDataItem === true);\r\n      this.editableColumns.map(s =>\r\n        Object.assign(dataItem, { [s.field]: formGroup.value[s.field] }));\r\n      // this.mySelection.map(s => (s.Id === dataItem.Id) ? Object.assign(s, dataItem) : null);\r\n\r\n      // Initialize mySelection if it's undefined\r\n      if (!this.mySelection) {\r\n        this.mySelection = new Map();\r\n      }\r\n\r\n      this.mySelection.forEach((value, key) => {\r\n        if (value.Id === dataItem.Id) {\r\n          this.mySelection.set(key, { ...value, ...dataItem });\r\n        }\r\n      });\r\n    }\r\n  }\r\n\r\n  public onNavigateTo(event: any, clickAction: any, rowData: any, cellData: string) {\r\n    // const n = colSetting.navigateTo.replace('/:id', cellData);\r\n    const n = ZComponentHelper.getGroupEvalValue.call(this, clickAction.Click);\r\n    if (n) {\r\n      event.stopPropagation();\r\n      this.group.subject.next({\r\n        type: 'zgrid-onNavigateTo',\r\n        target: clickAction.Click,\r\n        rowData: rowData,\r\n        data: cellData\r\n      } as ZComponentOutputEvent);\r\n    }\r\n  }\r\n\r\n  private editModel(dataItem: any) {\r\n    if (this.data.EditClickURL) {\r\n      // Edit incell field\r\n      const colFields = ZComponentHelper.getGroupValue(this.data.ColumnFields, this.group);\r\n      this.group.subject.next({\r\n        type: 'zgrid-cellClick',\r\n        target: this.data.EditClickURL,\r\n        data: dataItem,\r\n        columnFields$: colFields\r\n      } as ZComponentOutputEvent);\r\n    }\r\n    else if (this.data['ContainerForm']) {\r\n      this.showFormPage.emit(true);\r\n    }\r\n    else {\r\n      this.router.navigate([this.group.editModelURL], {\r\n        relativeTo: this.activatedRoute,\r\n        //skipLocationChange: false\r\n      });\r\n\r\n      //// When clicked route to page\r\n      //this.router.navigate([this.group.editModelURL, dataItem.Id, 'edit'], {\r\n      //  relativeTo: this.activatedRoute\r\n      //});\r\n    }\r\n  }\r\n\r\n  public onBtnClick(event: any, colSetting: any, rowData: any, cellData: string) {\r\n    this.onNavigateTo(event, colSetting, rowData, cellData);\r\n  }\r\n\r\n  private createFormGroup(dataItem: any, fieldName: any): FormGroup {\r\n    return this.formBuilder.group({\r\n      [fieldName]: dataItem[fieldName]\r\n    });\r\n  }\r\n  //#endregion\r\n\r\n  //#region Helper functions\r\n  public getClass(dataItem: any, col: any) {\r\n    let ngClass = 'gridCell ';\r\n    if (col.fieldType === 'number' || col.fieldType === 'currency' || col.fieldType === 'znumeric') {\r\n      ngClass += 'rightAligned ';\r\n    }\r\n\r\n    if (dataItem[`${col.field}_Class`]) {\r\n      ngClass += `${dataItem[`${col.field}_Class`]} `;\r\n    }\r\n\r\n    if (col.Class) {\r\n      ngClass += `${col.Class} `;\r\n    }\r\n\r\n    if (col.PopOverContent) {\r\n      ngClass += ' withPopoverInGrid';\r\n    }\r\n\r\n    return ngClass;\r\n  }\r\n\r\n  public getFormat(col: any, defaultFormat?: any) {\r\n    let format = '';\r\n    if (col.FormatOptions === undefined) {\r\n      format = defaultFormat ? defaultFormat : '';\r\n    } else {\r\n      const formatArr = col.FormatOptions.split('.')\r\n      let dp = 0;\r\n\r\n      if (formatArr.length > 1) {\r\n        dp = formatArr[1].length;\r\n      }\r\n\r\n      if (dp !== 0) {\r\n        format = `1.${dp}-${dp}`;\r\n      }\r\n    }\r\n    return format;\r\n  }\r\n\r\n  public allResults(): Observable<ExcelExportData> {\r\n    const gridControl = this.zgrid as ZGrid;\r\n    const gridComponent = this.zgrid.grid as GridComponent;\r\n    const data = gridComponent.data as GridDataResult;\r\n\r\n    const resourceURLForGenerateData = this.data.ExportDataResourceURL ? this.resourceApiService.getURL(this.data.ExportDataResourceURL) : gridControl.paginationApiPostUrl;\r\n\r\n    // Need to clone, if not will affect the grid params.\r\n    const params = Object.assign({}, this.params);\r\n    params.pageNo = 0;\r\n    params.pageSize = data.total;\r\n\r\n    const dateTimeRegex = /^\\d{4}-\\d{2}-\\d{2}(?:[T\\s]\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{1,7})?(?:Z|[\\+\\-]\\d{2}:\\d{2})?)?$/;\r\n\r\n    // Function to convert date strings to Date objects\r\n    const convertDateStringsToDates = (items: any[]) => {\r\n      return items.map(item => {\r\n        const newItem = { ...item };\r\n        for (const key in newItem) {\r\n          if (newItem.hasOwnProperty(key)) {\r\n            const value = newItem[key];\r\n            // Check if the value is a string and matches the dateTimeRegex pattern\r\n            if (typeof value === 'string' && dateTimeRegex.test(value)) {\r\n              newItem[key] = new Date(value);\r\n            }\r\n          }\r\n        }\r\n        return newItem;\r\n      });\r\n    };\r\n\r\n    return this.webApiService.httpPost$(resourceURLForGenerateData, params).pipe(\r\n      map((data: any) => {\r\n        // Convert date strings to Date objects\r\n        data.dataSet = convertDateStringsToDates(data.dataSet);\r\n\r\n        // Prepare the result for Excel export\r\n        const result: ExcelExportData = {\r\n          data: process(data.dataSet, {}).data\r\n        };\r\n\r\n        return result;\r\n      })\r\n    );\r\n  }\r\n\r\n  public refreshGrid(event: ZComponentOutputEvent, group: ZGroup, me: any) {\r\n    const _gridOptionSegment = event.target.trim().split('.');\r\n    const _gridOption = _gridOptionSegment[1];\r\n    if (_gridOption) {\r\n      const zgridControl = group[_gridOption] as ZGrid;\r\n      if (zgridControl) {\r\n        zgridControl.getData();\r\n      } else {\r\n        console.log('Unable to find grid value: ' + _gridOption);\r\n      }\r\n    } else {\r\n      console.log('Invalid refreshGrid event: ', event);\r\n    }\r\n  }\r\n\r\n  public refreshData() {\r\n    this.getData();\r\n  }\r\n\r\n  public clearData() {\r\n    this.zgrid.clearData();\r\n  }\r\n\r\n  public truncateText(text: string, limit: number = 200): string {\r\n    // Check if the text is longer than the limit\r\n    if (text.length > limit) {\r\n      return `${text.substr(0, limit)}... (Click to view more)`;\r\n    }\r\n    return text; // Return the full text if it's within the limit\r\n  }\r\n\r\n  public rowSelectionKey = (context: RowArgs): any => {\r\n    // Generate a unique key using either this.data.UniqueKey or context.dataItem.Id.\r\n    const key = (this.data.UniqueKey ?? context.dataItem.Id);\r\n\r\n    if (this.data.UniqueKey && context.dataItem.Id) {\r\n      console.error('A unique column field is required. Ensure either the Id column is present or the UniqueKey property is set for zgrid.');\r\n    }\r\n\r\n    // Initialize mySelection if it's undefined\r\n    if (!this.mySelection) {\r\n      this.mySelection = new Map();\r\n    }\r\n\r\n    // Store the data item in the mySelection map with the generated key.\r\n    this.mySelection.set(key, context.dataItem);\r\n\r\n    // Return the generated key.\r\n    return key;\r\n  }\r\n\r\n  public getSelectedValues(): any {\r\n    // Map each key in rowSelection to its corresponding data item in the mySelection map.\r\n    const selectedRecord = this.rowSelection.map(key => this.mySelection.get(key));\r\n\r\n    // Return the array of selected records.\r\n    return selectedRecord;\r\n  }\r\n\r\n  public clearSelection(): void {\r\n    // Check if mySelection is defined before trying to clear it\r\n    if (this.mySelection) {\r\n      // Clear the map that stores selected data items.\r\n      this.mySelection.clear();\r\n    } else {\r\n      // Optionally, you can initialize it if it's undefined\r\n      this.mySelection = new Map();\r\n    }\r\n\r\n    // Clear the array that tracks selected keys.\r\n    this.rowSelection = [];\r\n  }\r\n\r\n  public getData() {\r\n    if (this.zgrid) {\r\n      this.inlineEditedFormGroups = {};\r\n      this.clearSelection();\r\n      this.zgrid.getDataBinding();\r\n    }\r\n    else {\r\n      console.warn('this.zgrid is undefined.');\r\n    }\r\n  }\r\n\r\n  public getGridData() {\r\n    return this.isUseLocalData() ? (this.zgrid.data || this.zgrid.originalData) : (this.zgrid.grid.data && this.zgrid.grid.data.data ? this.zgrid.grid.data.data : []);\r\n  }\r\n\r\n  public setData = (gData: any) => {\r\n    if (this.zgrid) {\r\n      if (this.isUseLocalData()) {\r\n        this.zgrid.data = gData;\r\n        if (!this.data.DisableAutoAppendGridDateFilterCol) {\r\n          this.setDateColForFiltering();\r\n        }\r\n      }\r\n      else {\r\n        this.zgrid.grid.data = {\r\n          data: gData,\r\n          total: gData.totalCount\r\n        }\r\n      }\r\n      this.setupGridWithInlineEdit();\r\n    }\r\n    else {\r\n      console.log('zgrid is null for setData.');\r\n      console.log(this.data);\r\n    }\r\n  }\r\n\r\n  public setHeaderText(columnName: string, newHeaderTitle: string) {\r\n    const gridColumns = this.columns;\r\n    gridColumns.forEach((col: any) => {\r\n      if (col.Name === columnName) {\r\n        col.title = newHeaderTitle;\r\n      }\r\n    });\r\n  }\r\n\r\n  public trackBy(index: number, item: GridItem): any {\r\n    //console.log(item.data['Id'] || index);\r\n    return index;\r\n  }\r\n\r\n  private isUseLocalData(): boolean {\r\n    if (this.data.DataSource) {\r\n      return true;\r\n    }\r\n\r\n    return false;\r\n    //return ZComponentHelper.isNullUndefinedEmpty(this.data.ResourceURL);\r\n  }\r\n  //#endregion\r\n\r\n  //#region grid setup\r\n  private setupGridComponentAttributes() {\r\n    // Grid default setting\r\n    this.gridTitle = this.data.Title;\r\n    this.columns = [];\r\n    this.pageSizes = [5, 10, 20, 50, 100, 200, 500];\r\n    this.previousNext = this.data['EnablePreviousNextButton'] || false;\r\n\r\n    // [Mobile] Disable page sizes if PageSizes is explicitly set to false or on a mobile screen.\r\n    if (this.data.PageSizes === false || this.isMobileScreen()) {\r\n      this.pageSizes = false;\r\n    }\r\n\r\n    // Configure pagination settings.\r\n    this.pageable = this.data.pageAble != undefined ? this.data.pageAble : {\r\n      responsive: true,\r\n      buttonCount: 3,\r\n      pageSizes: this.pageSizes,\r\n      previousNext: this.previousNext,\r\n    };\r\n\r\n    // Configure grid selection options if set SelectOptions in field element attribute.\r\n    if (this.data.SelectOptions) {\r\n      if (typeof this.data.SelectOptions === 'boolean') {\r\n        console.warn(`Error: grid(${this.data.Name}), this.data.SelectOptions should be a string with value 'single' or 'multiple'.`);\r\n      }\r\n      else {\r\n        this.selectableSettings = {\r\n          checkboxOnly: this.data.CheckboxOnly ?? false,\r\n          mode: this.data.SelectOptions.toLowerCase() === 'single' ? 'single' : 'multiple'\r\n        };\r\n      }\r\n    }\r\n\r\n    // Bind component to group using the provided Value set in field element attribute.\r\n    if (this.data.Value.startsWith('group.')) {\r\n      this.group[this.data.Value.slice(6)] = this;\r\n    }\r\n  }\r\n\r\n  private setupSubscriptionForGridSubject() {\r\n    // Unsubscribe from any existing subscriptions to avoid memory leaks.\r\n    if (this.subscription) {\r\n      this.subscription.unsubscribe();\r\n    }\r\n\r\n    // From here will call zgrid.binding.directive.\r\n    // Subscribe to get from directive and set to component\r\n    this.subscription = this.gridSubject.pipe(\r\n      tap(gridDirective => {\r\n        // Set the zgrid property based on the emitted gridDirective.\r\n        this.zgrid = gridDirective;\r\n\r\n        // Update the columns property with the grid columns from gridDirective.\r\n        this.columns = this.zgrid.gridSetting.columns;\r\n\r\n        // Check if automatic appending of a grid date filter column is not disabled.\r\n        if (!this.data.DisableAutoAppendGridDateFilterCol) {\r\n          this.setDateColForFiltering();\r\n        }\r\n\r\n        // Set up grid with inline editing.\r\n        this.setupGridWithInlineEdit();\r\n\r\n        // Set up a popover feature based on columns and grid data.\r\n        this.setupPopoverFeature(this.columns, this.getGridData());\r\n      }),\r\n      switchMap(() => {\r\n        // Check if column headers have already been translated.\r\n        if (this.isColumnHeaderTranslated) {\r\n          return of({});\r\n        }\r\n\r\n        // Mark column headers as translated and perform the translation.\r\n        this.isColumnHeaderTranslated = true;\r\n        return super.translateColumnHeader(this.columns);\r\n      }),\r\n      tap(_ => {\r\n        this.checkboxColumnPinned = this.data.SelectOptionsPinned;\r\n      })\r\n    ).subscribe();\r\n  }\r\n\r\n  public saveGridSettings(event: any): void {\r\n    const saveGridConfig = () => {\r\n      const gridStateLogic = this.gridService.getGridStateLogic(this.data);\r\n      const cacheName = this.stateSettingService.getStorageCacheKey(StateType.savedSetting, this.data);\r\n      const previousCachedData = this.gridService.getStateCacheByName(cacheName);\r\n      const columnConfigurations = ZComponentHelper.getGridColumnsConfig(this.zgrid.grid.columns);\r\n      const settingConfig: ZGridSettings = { columnConfigurations };\r\n  \r\n      this.zgrid.gridSetting = {\r\n        ...this.zgrid.gridSetting,\r\n        columnConfigurations\r\n      };\r\n  \r\n      if (gridStateLogic === StateType.cachedDataSetting) {\r\n        settingConfig.gridState = this.zgrid.gridSetting.gridState;\r\n      }\r\n  \r\n      this.gridService.setStateToCache(cacheName, settingConfig);\r\n  \r\n      const stateSettingInfo: StateSettingInfo = {\r\n        projectCode: this.environment.projectCodes[0],\r\n        fieldElementName: this.data.FieldElementName,\r\n        componentUniqueKey: this.data.CacheInfo.Name ?? this.data.FieldElementName,\r\n        userId: this.authService.e1Token.userName,\r\n        stateType: StateType.savedSetting,\r\n        stateData: JSON.stringify(settingConfig),\r\n        storageCacheName: cacheName\r\n      };\r\n  \r\n      if (previousCachedData && previousCachedData.id) {\r\n        stateSettingInfo.id = previousCachedData.id;\r\n      }\r\n  \r\n      this.stateSettingService.saveStateSetting(stateSettingInfo).subscribe();\r\n  \r\n      this.showHideRestoreGridSettingButton();\r\n      this.toastService.show('Grid settings have been saved.', 'top', true, 2000, 'success');\r\n    };\r\n  \r\n   \r\n    // Call a method to update the event ID\r\n    const buttonElement = event.currentTarget as HTMLButtonElement; // Get button element\r\n    const buttonText = buttonElement.innerText.trim(); // Get button name (text)\r\n    const clonedButton = { eventId: ZComponentHelper.generateTimeStampId(), Label: buttonText }; \r\n   \r\n    // Set the DismissType property of the group to the dismissType property of the item\r\n    //this.group['DismissType'] = item.dismissType;\r\n\r\n    // Create an output event object with details about the button click\r\n    const outputEvent = {\r\n      type: 'buttonClick',\r\n      target: event,\r\n      data: clonedButton,\r\n      triggerFrom: TriggerFromType.button\r\n    } as ZComponentOutputEvent;\r\n\r\n    // Update the buttonEventDetail property of the group with the output event details\r\n    this.group['buttonEventDetail'] = {\r\n      buttonDetail: outputEvent,\r\n      triggerFrom: TriggerFromType.button\r\n    };\r\n\r\n    if (this.showRestoreGridSettingButton) {\r\n      this.alertService.show(\r\n        'Overwrite Confirmation',\r\n        'You have already saved grid settings. Saving again will overwrite the previous settings.<br/>Do you want to proceed?',\r\n        [\r\n          { text: 'No', cssClass: 'secondary' } as AlertButton,\r\n          { text: 'Yes', cssClass: 'primary' } as AlertButton\r\n        ], ['col-4']\r\n      ).subscribe(reply => {\r\n        if (reply === 'Yes') {\r\n          saveGridConfig();\r\n        }\r\n      });\r\n    }\r\n    else {\r\n      saveGridConfig();\r\n    }\r\n  }\r\n\r\n  public restoreGridSettings(event: any) {\r\n    const buttonElement = event.currentTarget as HTMLButtonElement; // Get button element\r\n    const buttonText = buttonElement.innerText.trim(); // Get button name (text)\r\n\r\n    this.alertService.show('Confirm Reset', 'Are you sure you want to reset the column settings to their default settings?<br/>This action cannot be undone.',\r\n      [\r\n        { text: 'No', cssClass: 'secondary' } as AlertButton,\r\n        { text: 'Yes', cssClass: 'primary' } as AlertButton\r\n      ], ['col-4']).subscribe(reply => {\r\n        if (reply === 'Yes') {\r\n          // Call a method to update the event ID\r\n          const clonedButton = { eventId: ZComponentHelper.generateTimeStampId(), Label: buttonText }; \r\n          \r\n          // Set the DismissType property of the group to the dismissType property of the item\r\n          //this.group['DismissType'] = item.dismissType;\r\n\r\n          // Create an output event object with details about the button click\r\n          const outputEvent = {\r\n            type: 'buttonClick',\r\n            target: event,\r\n            data: clonedButton,\r\n            triggerFrom: TriggerFromType.button\r\n          } as ZComponentOutputEvent;\r\n\r\n          // Update the buttonEventDetail property of the group with the output event details\r\n          this.group['buttonEventDetail'] = {\r\n            buttonDetail: outputEvent,\r\n            triggerFrom: TriggerFromType.button\r\n          };\r\n\r\n          // Ensure columns are sorted based on their original order\r\n          this.columns.sort((a, b) => a.originalOrderIndex - b.originalOrderIndex);\r\n  \r\n          //restore original hidden value\r\n          this.columns.forEach((col) => {\r\n            if (col.originalHiddenValue !== undefined && col.originalHiddenValue !== null) {\r\n              col.hidden = col.originalHiddenValue;\r\n              delete col.originalHiddenValue;\r\n            }\r\n          });\r\n\r\n          // Generate grid columns and load data\r\n          this.generateGridColumns().subscribe(() => {\r\n            this.getData();\r\n          });\r\n    \r\n          // Call the gridService.getStateCache and handle the result via subscription\r\n          this.gridService.getStateCache(StateType.savedSetting, this.data).subscribe((cachedData) => {\r\n            if (cachedData) {\r\n              // Cache found, proceed with deletion\r\n              this.gridService.deleteStateCache(StateType.savedSetting, this.data);\r\n  \r\n              // Toggle visibility of the restore button\r\n              this.showHideRestoreGridSettingButton();\r\n  \r\n              // Delete the state setting based on the cache data ID\r\n              this.stateSettingService.deleteStateSetting(cachedData.id).subscribe();\r\n  \r\n              this.toastService.show('Grid settings have been reset to default.', 'top', true, 2000, 'success');\r\n            }\r\n          });\r\n        }\r\n      });\r\n  }\r\n\r\n  public gridCallback(group: ZGroup) {\r\n    if (this.data['AfterloadCallback']) {\r\n      const me = Object.assign({}, this);\r\n\r\n      this.group.subject.next({\r\n        type: 'zgrid-AfterloadCallback',\r\n        target: this.data['AfterloadCallback'],\r\n        data: me\r\n      } as ZComponentOutputEvent);\r\n    }\r\n  }\r\n\r\n  private setupGridButtons() {\r\n    if (this.data.GridButtonFieldName_WF || this.data.GridButtonFieldName) {\r\n      this.gridBtn = {\r\n        ReadOnly: false,\r\n        Visible: true,\r\n        IsRequired: false,\r\n        WorkflowCode: this.data.GridButtonFieldName_WF,\r\n        Value: this.data.GridButtonFieldName,\r\n        Type: this.data.GridButtonFieldName_WF ? 'zworkflowbuttons' : 'zbuttons'\r\n      }\r\n    }\r\n  }\r\n\r\n  private setDateColForFiltering() {\r\n    const gridData = this.getGridData();\r\n    if (this.isUseLocalData() && gridData && gridData.length > 0) {\r\n      const dateCol = Object.keys(gridData[0]).filter(x => x.includes('Date') && !x.endsWith(ComponentConstant.GridColDateFilterSuffix));\r\n      if (dateCol && dateCol.length > 0) {\r\n        gridData.forEach(data => {\r\n          dateCol.forEach(colName => {\r\n            data[`${colName}${ComponentConstant.GridColDateFilterSuffix}`] = new Date(data[colName]);\r\n          });\r\n        });\r\n      }\r\n    }\r\n  }\r\n\r\n  private showHideRestoreGridSettingButton() {\r\n    if (this.data.CacheInfo?.EnableSaveState) {\r\n      this.showRestoreGridSettingButton = false;\r\n\r\n      const stateType = this.gridService.getGridStateLogic(this.data);\r\n      if (stateType === StateType.savedSetting || stateType === StateType.savedAndCachedDataSetting) {\r\n        const settingCacheName = this.stateSettingService.getStorageCacheKey(stateType, this.data);\r\n        const settingCacheValue = localStorage.getItem(settingCacheName);\r\n\r\n        if (settingCacheValue) {\r\n          this.showRestoreGridSettingButton = true;\r\n        }\r\n      }\r\n    }\r\n  }\r\n  //#endregion\r\n\r\n  //#region Grid configuration function\r\n  public gridCustomAddCommand(group: ZGroup): Observable<any> {\r\n    // declare button onclick event name base on grid name + prefix\r\n    const gridAddButtonEventName = `${this.data.Name}_CustomAddButtonOnClick`;\r\n    if (!this.group[gridAddButtonEventName]) {\r\n      return of({});\r\n    }\r\n\r\n    return this.group[gridAddButtonEventName](group);\r\n  }\r\n\r\n  public gridCustomResetCommand(group: ZGroup): Observable<any> {\r\n    // declare button onclick event name base on grid name + prefix\r\n    const gridResetButtonEventName = `${this.data.Name}_CustomResetButtonOnClick`;\r\n    if (!this.group[gridResetButtonEventName]) {\r\n      return of({});\r\n    }\r\n\r\n    return this.group[gridResetButtonEventName](group);\r\n  }\r\n\r\n  public gridCustomRemoveCommand(dataItem: any, rowIndex: any): Observable<any> {\r\n    // declare button onclick event name base on grid name + prefix\r\n    const gridResetButtonEventName = `${this.data.Name}_CustomRemoveButtonOnClick`;\r\n    if (!this.group[gridResetButtonEventName]) {\r\n      return of({});\r\n    }\r\n\r\n    return this.group[gridResetButtonEventName](dataItem, rowIndex);\r\n  }\r\n  //#endregion\r\n\r\n  //#region Inline Edit\r\n  private createFormControls(gridCols: Array<any>) {\r\n    let counterIndex = 0;\r\n    // To force element to rebind data\r\n    this.isInlineEditInputFieldLoading = true;\r\n    this.zgrid.grid.loading = true;\r\n    of([]).pipe(delay(0), tap(() => {\r\n      this.inlineEditedFormGroups = this.inlineEditedFormGroups || {};\r\n      const gridData = this.getGridData();\r\n      if (Array.isArray(gridData)) {\r\n        gridData.forEach(d => {\r\n          const items = {};\r\n          gridCols.forEach(c => {\r\n            const isVisible = ZComponentHelper.isVisibleFormControl(this, c.field);\r\n            const isRequired = ZComponentHelper.isRequiredFormControl(this, c.field);\r\n            const validators: ValidatorFn[] = ZComponentHelper.getValidators(c.field, isVisible, isRequired, this.group);\r\n            items[c.field] = new FormControl(d[c.field], validators);\r\n          });\r\n          const formGroup = new FormGroup(items);\r\n\r\n          if (d['Id']) {\r\n            items['Id'] = items['Id'] || new FormControl({ value: d['Id'], disabled: false });\r\n          }\r\n          else {\r\n            d['Id'] = counterIndex++;\r\n          }\r\n          this.inlineEditedFormGroups[d['Id']] = formGroup;\r\n        });\r\n      }\r\n      this.isInlineEditInputFieldLoading = false;\r\n      this.zgrid.grid.loading = false;\r\n      this.tempInlineEditedFormGroups = this.inlineEditedFormGroups;\r\n    })).subscribe();\r\n  }\r\n\r\n  public getInlineField(value: any) {\r\n    return this.columns.find(x => x.Value === value);\r\n  }\r\n\r\n  public getInlineForm(data: any, rowIndex: number) {\r\n    var key = (data['Id'] || data['Id'] == 0) ? data['Id'] : rowIndex;\r\n    if (this.isInlineEditInputFieldLoading) {\r\n      return this.tempInlineEditedFormGroups[key] || this.tempInlineEditedFormGroups[0];\r\n    }\r\n    return this.inlineEditedFormGroups[key];\r\n  }\r\n\r\n  public getFormControlData(): any[] {\r\n    const data = [];\r\n    for (const k of Object.keys(this.inlineEditedFormGroups)) {\r\n      data.push(this.inlineEditedFormGroups[k]?.value);\r\n    }\r\n    return data;\r\n  }\r\n\r\n  private setupGridWithInlineEdit() {\r\n    if (this.hasInlineEditColumn(this.columns)) {\r\n      this.tempInlineEditedFormGroups = this.inlineEditedFormGroups;\r\n      this.inlineEditedFormGroups = {};\r\n      this.createFormControls(this.columns.concat(this.generateHiddenColumnsField || []));\r\n    }\r\n  }\r\n\r\n  public isInlineFormGroupHasValue(): boolean {\r\n    return this.inlineEditedFormGroups && Object.keys(this.inlineEditedFormGroups).length > 0;\r\n  }\r\n\r\n  private hasInlineEditColumn(gridCols): boolean {\r\n    return gridCols && gridCols.some(c => c.isEditableInGrid);\r\n  }\r\n\r\n  public getCellStyleForInlineEdit(columnField: ZField, dataItem: any, rowIndex: number): any {\r\n    const form = this.getInlineForm(dataItem, rowIndex) as FormGroup;\r\n    if (!form) {\r\n      return {};\r\n    }\r\n    const style = columnField[`Style10`];\r\n    const func = ZComponentHelper.getGroupEvalValue.call(this, style);\r\n    if (typeof func === 'function') {\r\n      const callFunc = func.bind(this.group.ctrlScope);\r\n      return callFunc(form.value);\r\n    }\r\n    else if (typeof func === 'string') {\r\n      return func;\r\n    }\r\n    return style;\r\n  }\r\n  //#endregion\r\n\r\n  //#region Event\r\n  // Source: https://www.telerik.com/forums/kendo-angular-grid-blank-space-in-the-end-when-you-resize(reduce)-any-column\r\n  public adjustWidthUponResize() {\r\n    const tableWidth = document.querySelector('.k-grid-table')[`offsetWidth`];\r\n    const contentWidth = document.querySelector('.k-grid-content')[`offsetWidth`];\r\n    if (tableWidth < contentWidth) {\r\n      const currentLastColWidth = document.querySelector('.k-grid-content .k-grid-table tr td:last-of-type')[`offsetWidth`];\r\n\r\n      this.columns[this.columns.length - 1].width = currentLastColWidth + (contentWidth - tableWidth) - 10; // account for the vertical scrollbar;\r\n    }\r\n  }\r\n  //#endregion\r\n\r\n  //#region onChange Events\r\n  public filterChange(event: any): void {\r\n    if (!this.isUseLocalData()) {\r\n      this.gridSetting = Object.assign({}, this.zgrid.gridSetting);\r\n      this.zgrid.filterChange(event);\r\n    }\r\n  }\r\n\r\n  public pageChange(event: PageChangeEvent): void {\r\n    if (!this.isUseLocalData()) {\r\n      this.gridSetting = Object.assign({}, this.zgrid.gridSetting);\r\n      this.zgrid.pageChange(event);\r\n    }\r\n  }\r\n\r\n  public sortChange(sort: SortDescriptor[]): void {\r\n    if (!this.isUseLocalData()) {\r\n      this.gridSetting = Object.assign({}, this.zgrid.gridSetting);\r\n      this.zgrid.sortChange(sort);\r\n    }\r\n  }\r\n\r\n  public inCellCheckBoxOnChange(event: any, rowIndex: any, column: any) {\r\n    const isChecked = event.detail.checked;\r\n    const gData = this.getGridData();\r\n    gData[rowIndex][column.Value] = isChecked;\r\n  }\r\n\r\n  //#endregion\r\n\r\n  //#region command handler\r\n  public addHandler({ sender }) {\r\n    this.isNew = true;\r\n\r\n    // close any existing editor\r\n    this.closeEditor(sender);\r\n\r\n    // loop all column to get validation and create form control\r\n    const colFormControl = {};\r\n    this.columns.forEach(col => {\r\n      const validators: ValidatorFn[] = [];\r\n      if (col.IsRequired) {\r\n        validators.push(Validators.required);\r\n        if (col.Type === 'ztexteditor') {\r\n          validators.push(ZComponentHelper.requiredValidator_ExcludeWhiteSpacesAndHTMLTags);\r\n        }\r\n        else {\r\n          validators.push(ZComponentHelper.requiredValidator_ExcludeWhiteSpaces);\r\n        }\r\n      }\r\n      if (col.ValidatorPattern) {\r\n        validators.push(Validators.pattern(col.ValidatorPattern));\r\n      }\r\n\r\n      colFormControl[col.Value] = new FormControl(null, validators);\r\n    });\r\n\r\n    // set form control object to form group\r\n    this.formGroup = new FormGroup(colFormControl);\r\n\r\n    // add to grid row\r\n    sender.addRow(this.formGroup);\r\n  }\r\n\r\n  public saveHandler({ sender, rowIndex, formGroup, isNew }): void {\r\n    // Get the existing data from the grid\r\n    const gridExistingData = this.getGridData();\r\n\r\n    // Check if the form is valid\r\n    if (formGroup.valid) {\r\n      // Check for a unique key field\r\n      const uniqueKey = this.data['UniqueKey'];\r\n      if (uniqueKey) {\r\n        // Get the unique key value from the form\r\n        const formUniqueKeyValue = formGroup.value[uniqueKey];\r\n\r\n        // Check if there is a duplicate value\r\n        const isDuplicate = gridExistingData.some(data => {\r\n          return (\r\n            // If editing an existing row, skip the current row being edited\r\n            !isNew &&\r\n            rowIndex !== undefined &&\r\n            // Check if the unique key value already exists in the grid\r\n            data[uniqueKey] === formUniqueKeyValue &&\r\n            // Skip checking against the current row being edited\r\n            data[uniqueKey] !== gridExistingData[rowIndex][uniqueKey]\r\n          );\r\n        });\r\n\r\n        // If there is a duplicate value, show an error message and return without saving\r\n        if (isDuplicate) {\r\n          this.toastService.show('Error occur: Duplicated unique field entry.', 'top', true, 3000, 'danger');\r\n          return;\r\n        }\r\n      }\r\n\r\n      // If the unique key value is valid and there are no duplicates, save the data\r\n      if (isNew) {\r\n        // Add a new row to the grid data\r\n        gridExistingData.push(formGroup.value);\r\n      } else {\r\n        // Update an existing row in the grid data\r\n        gridExistingData[rowIndex] = formGroup.value;\r\n      }\r\n\r\n      // Update the grid data and close the row editor\r\n      this.setData(gridExistingData);\r\n      sender.closeRow(rowIndex);\r\n    }\r\n  }\r\n\r\n  public cancelHandler({ sender, rowIndex }) {\r\n    // cancel any existing editor\r\n    sender.closeRow(rowIndex);\r\n  }\r\n\r\n  public editHandler({ sender, rowIndex, dataItem }) {\r\n    // Set a flag to indicate that the row being edited is not a new row\r\n    this.isNew = false;\r\n\r\n    // Close any existing editor\r\n    this.closeEditor(sender);\r\n\r\n    // loop all column to get validation and create form control, append current row value\r\n    const colFormControl = {};\r\n    this.columns.forEach(col => {\r\n      const validators: ValidatorFn[] = [];\r\n      if (col.IsRequired) {\r\n        validators.push(Validators.required);\r\n        if (col.Type === 'ztexteditor') {\r\n          validators.push(ZComponentHelper.requiredValidator_ExcludeWhiteSpacesAndHTMLTags);\r\n        }\r\n        else {\r\n          validators.push(ZComponentHelper.requiredValidator_ExcludeWhiteSpaces);\r\n        }\r\n      }\r\n      if (col.ValidatorPattern) {\r\n        validators.push(Validators.pattern(col.ValidatorPattern));\r\n      }\r\n\r\n      colFormControl[col.Value] = new FormControl(dataItem[col.Value], validators);\r\n    });\r\n\r\n    // set form control object to form group\r\n    this.formGroup = new FormGroup(colFormControl);\r\n\r\n    // Set the form group on the row being edited\r\n    this.editedRowIndex = rowIndex;\r\n    sender.editRow(rowIndex, this.formGroup);\r\n  }\r\n\r\n  public removeHandler({ sender, dataItem }) {\r\n    const gData = this.getGridData();\r\n    const index = this.getItemIndex(dataItem, gData, this.data['UniqueKey']);\r\n    gData.splice(index, 1);\r\n\r\n    // Update the data in the grid\r\n    this.setData(gData);\r\n\r\n    sender.cancelCell();\r\n  }\r\n\r\n  private closeEditor(grid, rowIndex = this.editedRowIndex) {\r\n    grid.closeRow(rowIndex);\r\n    this.editedRowIndex = undefined;\r\n    this.formGroup = undefined;\r\n  }\r\n\r\n  private getItemIndex(item: any, data: any[], key: string): number {\r\n    for (let idx = 0; idx < data.length; idx++) {\r\n      if (data[idx][key] === item[key]) {\r\n        return idx;\r\n      }\r\n    }\r\n\r\n    return -1;\r\n  }\r\n  //#endregion\r\n\r\n  //#region Grid Filter\r\n  private setupFilterFeature() {\r\n    if (this.data.GridFilterBarField) {\r\n      this.filterGroup = Object.assign({}, this.group);\r\n    }\r\n    if (this.data.GridAdvFilterBarField) {\r\n      this.advfilterGroup = Object.assign({}, this.group);\r\n    }\r\n  }\r\n\r\n  public search() {\r\n    const form = this.filterGroup.form;\r\n    const controls = form.controls;\r\n\r\n    if (this.isShowAdvFilter) {\r\n      const advform = this.advfilterGroup.form;\r\n      const advcontrols = advform.controls;\r\n      for (const c of Object.keys(advcontrols)) {\r\n        controls[c] = advcontrols[c];\r\n      }\r\n    }\r\n\r\n    if (this.data.FilterSearch) {\r\n      this.group.subject.next({\r\n        type: 'zgrid-filtersearch',\r\n        target: this.data.FilterSearch,\r\n        data: { formcontrols: controls },\r\n      } as ZComponentOutputEvent);\r\n    }\r\n    else {\r\n      this.params.filterParams = [];\r\n      Object.keys(controls).forEach(controlName => {\r\n        if (controls[controlName].value) {\r\n          const field = ZComponentHelper.getFieldFromFieldsByValue(this.filterGroup.fields, controlName) || ZComponentHelper.getFieldFromFieldsByValue(this.advfilterGroup.fields, controlName);\r\n          this.params.filterParams.push({\r\n            key: field.ValueExpr || field.Value,\r\n            ops: this.mapFilterOperatorByFieldType(field),\r\n            value: controls[controlName].value\r\n          })\r\n        }\r\n      });\r\n      this.getData();\r\n    }\r\n  }\r\n\r\n  public cancelEdit() {\r\n    this.clearFilterData(this.filterGroup);\r\n    if (this.data.GridAdvFilterBarField) {\r\n      this.clearFilterData(this.advfilterGroup);\r\n    }\r\n  }\r\n\r\n  private clearFilterData(group: ZGroup) {\r\n    const form = group.form as FormGroup;\r\n    const controls = form.controls;\r\n    Object.keys(controls).forEach(controlName => {\r\n      ZComponentHelper.setModelValue(controlName, null, group, true);\r\n    });\r\n  }\r\n\r\n  public advancedSearch() {\r\n    this.isShowAdvFilter = !this.isShowAdvFilter;\r\n    if (!this.isShowAdvFilter) {\r\n      this.clearFilterData(this.advfilterGroup);\r\n    }\r\n  }\r\n\r\n  private mapFilterOperatorByFieldType(field: ZField) {\r\n    switch (field.Type) {\r\n      case 'number':\r\n      case 'numeric':\r\n      case 'date':\r\n      case 'email':\r\n      case 'password':\r\n      case 'tel':\r\n      case 'text':\r\n      case 'url':\r\n      case 'currency':\r\n      case 'textarea':\r\n        if (!field['FilterContainsUsingEqual']) {\r\n          return 'contains';\r\n        }\r\n        return '==';\r\n      default:\r\n        return '=';\r\n    }\r\n  }\r\n  //#endregion\r\n\r\n  //#region grid common setting function\r\n  public set setGridTitle(newTitle: string) {\r\n    this.gridTitle = newTitle;\r\n  }\r\n\r\n  public set setGridState(state: State) {\r\n    this.gridSetting.gridState = state;\r\n    this.zgrid.gridSetting.gridState = state;\r\n  }\r\n\r\n  public setGridToFirstPage() {\r\n    this.gridSetting.gridState.skip = 0;\r\n    this.zgrid.gridSetting.gridState.skip = 0;\r\n  }\r\n  \r\n  public groupChange(groups: GroupDescriptor[]): void {\r\n    this.getData();\r\n  }\r\n  //#endregion\r\n\r\n  //#region detail grid function\r\n  public detailExpand(event: DetailExpandEvent): void {\r\n    this.handleDetailGridSession(event);\r\n    this.executeDetailExpandCallback(event);\r\n  }\r\n\r\n  private handleDetailGridSession(event: DetailExpandEvent): void {\r\n    const detailGrid = this.data?.DetailGrid;\r\n    if (!detailGrid?.ResourceURL) {\r\n      return;\r\n    }\r\n\r\n    const sessionKey = this.generateDetailGridSessionKey(event, detailGrid);\r\n    this.storageService.set('detailGridSessionKey', sessionKey);\r\n  }\r\n\r\n  private generateDetailGridSessionKey(event: DetailExpandEvent, detailGrid: any): string {\r\n    const gridName = this.extractGridName(detailGrid.ResourceURL);\r\n    const recordId = this.getRecordId(event.dataItem);\r\n    return `##DetailGrid##${this.group[gridName]}##${recordId}##`;\r\n  }\r\n\r\n  private extractGridName(resourceURL: string): string {\r\n    return resourceURL.split(\".\")[1];\r\n  }\r\n\r\n  private getRecordId(dataItem: any): string | number {\r\n    return dataItem[this.data.UniqueKey] ?? dataItem.Id;\r\n  }\r\n\r\n  private executeDetailExpandCallback(event: DetailExpandEvent): void {\r\n    const func = ZComponentHelper.getGroupEvalValue.call(this, this.data.DetailExpand);\r\n    \r\n    if (typeof func === 'function') {\r\n      const callFunc = func.bind(this.group.ctrlScope);\r\n      callFunc(event, this.getGridData());\r\n    }\r\n  }\r\n\r\n public detailCollapse(event: DetailCollapseEvent): void {\r\n    const func = ZComponentHelper.getGroupEvalValue.call(this, this.data.DetailCollapse);\r\n    if (typeof func === 'function') {\r\n      const callFunc = func.bind(this.group.ctrlScope);\r\n      callFunc(event, this.getGridData());\r\n    }\r\n  };\r\n  //#endregion\r\n}\r\n","<div class=\"grid-container e1tag-style\" [ngClass]=\"data.Class\" [style]=\"componentProperties.style.style\">\r\n  <!-- Tooltip Template -->\r\n  <ng-template #template let-anchor>\r\n    <span>{{ truncateText(anchor.nativeElement.innerText) }}</span>\r\n  </ng-template>\r\n\r\n  <!-- Popover Component -->\r\n  <kendo-popover #gridPopOver [position]=\"data.PopOverPosition || 'bottom'\" [templateData]=\"getContextData.bind(this)\">\r\n    <ng-template kendoPopoverBodyTemplate let-data=\"data\">\r\n      <div [style]=\"data.BodyStyle\"\r\n           class=\"popoverbody\"\r\n           *ngIf=\"data && data.Body\"\r\n           [innerHTML]=\"data.Body | htmlSanitize\"\r\n           [ngClass]=\"data.BodyClass\"\r\n           (mouseleave)=\"closePopOver.call(this, $event)\">\r\n      </div>\r\n    </ng-template>\r\n  </kendo-popover>\r\n\r\n  <!-- Main Grid Container -->\r\n  <div kendoTooltip\r\n       showOn=\"none\"\r\n       [tooltipTemplate]=\"template\"\r\n       filter=\".k-grid td\"\r\n       (mouseover)=\"showTooltip($event)\"\r\n       [style]=\"componentProperties.style.style1\"\r\n       class=\"e1tag-style1\">\r\n\r\n    <div kendoPopoverContainer\r\n         [popover]=\"gridPopOver\"\r\n         filter=\"div.gridCell.withPopoverInGrid\"\r\n         showOn=\"none\"\r\n         kendoPopoverContainer\r\n         #popovercontainer=\"kendoPopoverContainer\">\r\n\r\n      <!-- Kendo Grid -->\r\n      <kendo-grid [zgridbinding]=\"{\r\n          data: data,\r\n          group: group,\r\n          params: params,\r\n          gridSubject: gridSubject,\r\n          gridSetting: gridSetting\r\n        }\"\r\n                  [ngClass]=\"data.Class\"\r\n                  class=\"desktop-grid e1tag-style2\"\r\n                  [scrollable]=\"data.scrollAble === false ? 'none' : 'scrollable'\"\r\n                  [pageable]=\"pageable\"\r\n                  [class.hiden-pager]=\"!pageable\"\r\n                  [pageSize]=\"gridSetting.gridState.take\"\r\n                  [skip]=\"gridSetting.gridState.skip\"\r\n                  [sort]=\"gridSetting.gridState.sort\"\r\n                  [sortable]=\"{allowUnsort: true, mode: 'multiple'}\"\r\n                  [filter]=\"gridSetting.gridState.filter\"\r\n                  [filterable]=\"data.enableFiltering !== false\"\r\n                  [resizable]=\"true\"\r\n                  [reorderable]=\"true\"\r\n                  [columnMenu]=\"data.DisableGridColumnMenu ? false : { filter: true }\"\r\n                  [hidden]=\"!(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\"\r\n                  (cellClick)=\"cellClickHandler($event)\"\r\n                  (cellClose)=\"editCellCloseHandler($event)\"\r\n                  (dataStateChange)=\"dataStateChange($event)\"\r\n                  (pageChange)=\"pageChange($event)\"\r\n                  (sortChange)=\"sortChange($event)\"\r\n                  (filterChange)=\"filterChange($event)\"\r\n                  [kendoGridSelectBy]=\"rowSelectionKey\"\r\n                  [selectable]=\"selectableSettings\"\r\n                  [(selectedKeys)]=\"rowSelection\"\r\n                  [style]=\"componentProperties.style.style2\"\r\n                  [trackBy]=\"trackBy\"\r\n                  (cancel)=\"cancelHandler($event)\"\r\n                  (save)=\"saveHandler($event)\"\r\n                  (remove)=\"removeHandler($event)\"\r\n                  (edit)=\"editHandler($event)\"\r\n                  (add)=\"addHandler($event)\"\r\n                  (columnResize)=\"adjustWidthUponResize()\"\r\n                  (excelExport)=\"onExcelExport($event)\"\r\n                  [rowClass]=\"rowCallback.bind(this)\"\r\n                  (detailExpand)=\"detailExpand($event)\" \r\n                  (detailCollapse)=\"detailCollapse($event)\"\r\n                  (group)=\"gridSetting.gridState.group\"\r\n                  [groupable]=\"data.GroupSetting?.EnableGrouping\"\r\n                  (groupChange)=\"groupChange($event)\">\r\n\r\n        <!-- Toolbar Template -->\r\n        <ng-template kendoGridToolbarTemplate\r\n                     *ngIf=\"data.AllowRefreshButton ||\r\n                          data.AllowExport ||\r\n                          data.CacheInfo?.EnableSaveState ||\r\n                          data.Title ||\r\n                          data.GridButtonFieldName_WF ||\r\n                          data.GridButtonFieldName ||\r\n                          data.EnableGridCommand ||\r\n                          data.EnableCustomAddCommand ||\r\n                          data.EnableCustomResetCommand\">\r\n\r\n          <!-- Left Toolbar Items -->\r\n          <div class=\"toolbar-left-item\" *ngIf=\"gridTitle || data.AllowRefreshButton || data.AllowExport\">\r\n            <kendo-label class=\"gridTitle\" *ngIf=\"gridTitle\">{{ gridTitle }}</kendo-label>\r\n\r\n            <button title=\"Refresh\"\r\n                    type=\"button\"\r\n                    class=\"left-buttons refresh-button\"\r\n                    kendoButton\r\n                    (click)=\"refreshData()\"\r\n                    *ngIf=\"data.AllowRefreshButton\">\r\n              <span class=\"k-icon k-grid-button k-i-refresh-sm\"></span>\r\n            </button>\r\n\r\n            <div class=\"toolbar-left-item-second-container\"\r\n                 *ngIf=\"data.AllowExport\"\r\n                 [class.with-grid-title]=\"gridTitle || data.AllowRefreshButton\">\r\n              <button type=\"button\"\r\n                      class=\"left-buttons export-button\"\r\n                      kendoGridExcelCommand\r\n                      *ngIf=\"data.AllowExport\">\r\n                <fa-icon icon=\"download\"></fa-icon>\r\n                <span class=\"export-to-excel-button-text\">\r\n                  {{ getToolBarItemLabelName('Download as Excel') }}\r\n                </span>\r\n              </button>\r\n            </div>\r\n          </div>\r\n\r\n          <!-- Right Toolbar Items -->\r\n          <div class=\"toolbar-right-item\"\r\n               *ngIf=\"gridBtn ||\r\n                     data.CacheInfo?.EnableSaveState ||\r\n                     gridDefaultStateExist ||\r\n                     data.EnableGridCommand ||\r\n                     data.EnableCustomAddCommand ||\r\n                     data.EnableCustomResetCommand\">\r\n\r\n            <app-zworkflowbuttons *ngIf=\"gridBtn && gridBtn.Type === 'zworkflowbuttons'\"\r\n                                  [data]=\"gridBtn\"\r\n                                  [group]=\"group\"\r\n                                  [form]=\"form\">\r\n            </app-zworkflowbuttons>\r\n\r\n            <app-zbuttons *ngIf=\"gridBtn && gridBtn.Type === 'zbuttons'\"\r\n                          [data]=\"gridBtn\"\r\n                          [group]=\"group\"\r\n                          [form]=\"form\">\r\n            </app-zbuttons>\r\n\r\n            <button type=\"button\"\r\n                    kendoButton\r\n                    (click)=\"saveGridSettings($event)\"\r\n                    *ngIf=\"data.CacheInfo?.EnableSaveState\">\r\n              <span class=\"k-icon k-icon-with-text k-i-star\"></span>\r\n              {{ getToolBarItemLabelName('Save Settings') }}\r\n            </button>\r\n\r\n            <button type=\"button\"\r\n                    kendoButton\r\n                    (click)=\"restoreGridSettings($event)\"\r\n                    *ngIf=\"showRestoreGridSettingButton\">\r\n              <span class=\"k-icon k-icon-with-text k-i-star-outline\"></span>\r\n              {{ getToolBarItemLabelName('Reset to Default') }}\r\n            </button>\r\n\r\n            <button type=\"button\"\r\n                    kendoGridAddCommand\r\n                    *ngIf=\"data.EnableGridCommand\">\r\n              <span class=\"k-icon k-icon-with-text k-i-add\"></span>\r\n              {{ getToolBarItemLabelName(data.AddCommandButtonName ? data.AddCommandButtonName : 'Add') }}\r\n            </button>\r\n\r\n            <button type=\"button\"\r\n                    kendoButton\r\n                    (click)=\"gridCustomAddCommand(group)\"\r\n                    *ngIf=\"data.EnableCustomAddCommand\">\r\n              <span class=\"k-icon k-icon-with-text k-i-add\"></span>\r\n              {{ getToolBarItemLabelName(data.AddCommandButtonName ? data.AddCommandButtonName : 'Add') }}\r\n            </button>\r\n\r\n            <button type=\"button\"\r\n                    kendoButton\r\n                    (click)=\"gridCustomResetCommand(group)\"\r\n                    *ngIf=\"data.EnableCustomResetCommand\">\r\n              <span class=\"k-icon k-icon-with-text k-i-trash\"></span>\r\n              {{ getToolBarItemLabelName(data.ResetCommandButtonName ? data.ResetCommandButtonName : 'Reset') }}\r\n            </button>\r\n          </div>\r\n\r\n          <!-- Filter Container -->\r\n          <div class=\"filter-container\" *ngIf=\"data.GridFilterBarField\">\r\n            <div class=\"normal-filter-container\">\r\n              <app-zform class=\"filter-fields\"\r\n                         [group]=\"filterGroup\"\r\n                         [fieldName]=\"data.GridFilterBarField\">\r\n              </app-zform>\r\n\r\n              <div class=\"filter-buttons\" [ngClass]=\"data.Class\">\r\n                <ion-button fill=\"solid\"\r\n                            size=\"default\"\r\n                            strong=\"true\"\r\n                            color=\"primary\"\r\n                            (click)=\"search()\">\r\n                  <fa-icon icon=\"search\"></fa-icon>\r\n                  <span class=\"btn-label ion-text-capitalize\">\r\n                    {{ getToolBarItemLabelName('Search') }}\r\n                  </span>\r\n                </ion-button>\r\n\r\n                <ion-button fill=\"outline\"\r\n                            size=\"default\"\r\n                            strong=\"true\"\r\n                            color=\"primary\"\r\n                            (click)=\"cancelEdit()\"\r\n                            *ngIf=\"data.IsShowGridCancelFilterButton\">\r\n                  <fa-icon icon=\"times\"></fa-icon>\r\n                </ion-button>\r\n\r\n                <ion-button fill=\"solid\"\r\n                            size=\"default\"\r\n                            strong=\"true\"\r\n                            [ngClass]=\"isShowAdvFilter ? 'toggleOn' : 'toggleOff'\"\r\n                            (click)=\"advancedSearch()\"\r\n                            *ngIf=\"data.GridAdvFilterBarField\">\r\n                  <fa-icon icon=\"sliders-h\"></fa-icon>\r\n                </ion-button>\r\n              </div>\r\n            </div>\r\n\r\n            <!-- Advanced Filter -->\r\n            <app-zform *ngIf=\"data.GridAdvFilterBarField\"\r\n                       class=\"to-preload-the-fields\"\r\n                       [group]=\"advfilterGroup\"\r\n                       [fieldName]=\"data.GridAdvFilterBarField\"\r\n                       style=\"display:none;\">\r\n            </app-zform>\r\n\r\n            <div class=\"adv-filter-container\" *ngIf=\"isShowAdvFilter\" [@hideAndShowAnimation]>\r\n              <div class=\"adv-filter-seperator\">\r\n                <span>{{ getToolBarItemLabelName('Advanced Search') }}</span>\r\n              </div>\r\n\r\n              <app-zform class=\"advfilter-fields\"\r\n                         [group]=\"advfilterGroup\"\r\n                         [fieldName]=\"data.GridAdvFilterBarField\">\r\n              </app-zform>\r\n            </div>\r\n          </div>\r\n        </ng-template>\r\n\r\n        <!-- Checkbox Column -->\r\n        <kendo-grid-checkbox-column *ngIf=\"!!data.SelectOptions\"\r\n                                    [width]=\"40\"\r\n                                    showSelectAll=\"true\"\r\n                                    [columnMenu]=\"true\"\r\n                                    [locked]=\"checkboxColumnPinned\">\r\n        </kendo-grid-checkbox-column>\r\n\r\n        <!-- Dynamic Columns -->\r\n        <kendo-grid-column [style]=\"getGridColumnStyle()\"\r\n                           class=\"e1tag-style3\"\r\n                           *ngFor=\"let col of columns;\"\r\n                           [field]=\"col.field\"\r\n                           [title]=\"col.title\"\r\n                           [width]=\"col.width\"\r\n                           [minResizableWidth]=\"col.minResizableWidth\"\r\n                           [filter]=\"col.filter\"\r\n                           [filterable]=\"filterable(col.enableFiltering)\"\r\n                           [sortable]=\"sortable(col.enableSorting)\"\r\n                           [headerStyle]=\"getGridHeaderStyle()\"\r\n                           headerClass=\"e1tag-style4\"\r\n                           [footerStyle]=\"getGridFooterStyle()\"\r\n                           footerClass=\"e1tag-style9\"\r\n                           [hidden]=\"col.hidden\"\r\n                           [format]=\"col.format\"\r\n                           [class]=\"col.Class\"\r\n                           [locked]=\"locked(col)\"\r\n                           editor=\"numeric\"\r\n                           [columnMenu]=\"!col.disableColumnMenu\"\r\n                           [includeInChooser]=\"col.includeInChooser\"\r\n                           [editor]=\"col.editorType\">\r\n\r\n          <!-- Filter Templates -->\r\n          <div [ngSwitch]=\"true\">\r\n            <!-- Numeric Filter -->\r\n            <div *ngSwitchCase=\"col.fieldType === 'number' ||\r\n                              col.fieldType === 'currency' ||\r\n                              col.fieldType === 'znumeric'\">\r\n              <ng-template kendoGridFilterCellTemplate let-filter let-column=\"column\">\r\n                <kendo-grid-numeric-filter-cell [showOperators]=\"data.IsShowGridFilterOperator\"\r\n                                                [column]=\"column\"\r\n                                                [filter]=\"filter\"\r\n                                                operator=\"eq\">\r\n                  <kendo-filter-eq-operator></kendo-filter-eq-operator>\r\n                  <kendo-filter-neq-operator></kendo-filter-neq-operator>\r\n                  <kendo-filter-lt-operator></kendo-filter-lt-operator>\r\n                  <kendo-filter-lte-operator></kendo-filter-lte-operator>\r\n                  <kendo-filter-gt-operator></kendo-filter-gt-operator>\r\n                  <kendo-filter-gte-operator></kendo-filter-gte-operator>\r\n                  <kendo-filter-isnull-operator></kendo-filter-isnull-operator>\r\n                  <kendo-filter-isnotnull-operator></kendo-filter-isnotnull-operator>\r\n                </kendo-grid-numeric-filter-cell>\r\n              </ng-template>\r\n            </div>\r\n\r\n            <!-- Date Filter -->\r\n            <div *ngSwitchCase=\"col.fieldType == 'zdate' ||\r\n                              col.fieldType === 'ztime' ||\r\n                              col.fieldType === 'zdatetime' ||\r\n                              col.fieldType === 'zuidatetime'\">\r\n              <!-- Date Range Filter -->\r\n              <div *ngIf=\"col.filterByDateRange === true\">\r\n                <ng-template kendoGridFilterCellTemplate let-filter let-column=\"column\" operator=\"lte\">\r\n                  <date-range-filter-cell [showOperators]=\"data.IsShowGridFilterOperator\"\r\n                                          class=\"date-range-filter\"\r\n                                          [filter]=\"filter\"\r\n                                          [field]=\"col.field\"\r\n                                          [data]=\"data\">\r\n                    <kendo-filter-lt-operator></kendo-filter-lt-operator>\r\n                    <kendo-filter-lte-operator></kendo-filter-lte-operator>\r\n                    <kendo-filter-gt-operator></kendo-filter-gt-operator>\r\n                    <kendo-filter-gte-operator></kendo-filter-gte-operator>\r\n                    <kendo-filter-isnull-operator></kendo-filter-isnull-operator>\r\n                    <kendo-filter-isnotnull-operator></kendo-filter-isnotnull-operator>\r\n                  </date-range-filter-cell>\r\n                </ng-template>\r\n              </div>\r\n\r\n              <!-- Regular Date Filter -->\r\n              <div *ngIf=\"col.filterByDateRange === false\">\r\n                <ng-template kendoGridFilterCellTemplate let-filter let-column=\"column\">\r\n                  <kendo-grid-date-filter-cell [showOperators]=\"data.IsShowGridFilterOperator\"\r\n                                               [column]=\"column\"\r\n                                               [filter]=\"filter\"\r\n                                               operator=\"lte\">\r\n                    <kendo-filter-lt-operator></kendo-filter-lt-operator>\r\n                    <kendo-filter-lte-operator></kendo-filter-lte-operator>\r\n                    <kendo-filter-gt-operator></kendo-filter-gt-operator>\r\n                    <kendo-filter-gte-operator></kendo-filter-gte-operator>\r\n                    <kendo-filter-isnull-operator></kendo-filter-isnull-operator>\r\n                    <kendo-filter-isnotnull-operator></kendo-filter-isnotnull-operator>\r\n                  </kendo-grid-date-filter-cell>\r\n                </ng-template>\r\n              </div>\r\n            </div>\r\n\r\n            <!-- Boolean Filter -->\r\n            <div *ngSwitchCase=\"col.fieldType === 'checkbox'\">\r\n              <ng-template kendoGridFilterCellTemplate let-filter let-column=\"column\">\r\n                <kendo-grid-boolean-filter-cell [column]=\"column\"\r\n                                                [filter]=\"filter\"\r\n                                                operator=\"eq\">\r\n                </kendo-grid-boolean-filter-cell>\r\n              </ng-template>\r\n            </div>\r\n\r\n            <!-- Default String Filter -->\r\n            <div *ngSwitchDefault>\r\n              <ng-template kendoGridFilterCellTemplate let-filter let-column=\"column\">\r\n                <kendo-grid-string-filter-cell [showOperators]=\"data.IsShowGridFilterOperator\"\r\n                                               [column]=\"column\"\r\n                                               [filter]=\"filter\"\r\n                                               operator=\"contains\">\r\n                  <kendo-filter-contains-operator></kendo-filter-contains-operator>\r\n                  <kendo-filter-eq-operator></kendo-filter-eq-operator>\r\n                  <kendo-filter-neq-operator></kendo-filter-neq-operator>\r\n                  <kendo-filter-startswith-operator></kendo-filter-startswith-operator>\r\n                  <kendo-filter-endswith-operator></kendo-filter-endswith-operator>\r\n                  <kendo-filter-isnull-operator></kendo-filter-isnull-operator>\r\n                  <kendo-filter-isnotnull-operator></kendo-filter-isnotnull-operator>\r\n                </kendo-grid-string-filter-cell>\r\n              </ng-template>\r\n            </div>\r\n          </div>\r\n\r\n          <!-- Grid Edit Template -->\r\n          <ng-template kendoGridEditTemplate\r\n                       *ngIf=\"data.EnableGridCommand\"\r\n                       let-dataItem=\"dataItem\"\r\n                       let-column=\"col\"\r\n                       let-formGroup=\"formGroup\"\r\n                       let-isNew=\"isNew\">\r\n            <div [ngSwitch]=\"col.fieldType\">\r\n              <!-- Number Editor -->\r\n              <div *ngSwitchCase=\"'number'\">\r\n                <kendo-numerictextbox #cellAnchor [formControl]=\"formGroup.get(col.field)\"></kendo-numerictextbox>\r\n                <kendo-popup [anchor]=\"cellAnchor.numericInput\"\r\n                             *ngIf=\"formGroup.get(col.field).invalid && !(isNew && formGroup.get(col.field).untouched)\"\r\n                             popupClass=\"k-widget k-tooltip k-tooltip-validation k-invalid-msg\"\r\n                             style=\"padding-left: 2px; opacity: 0.5;\">\r\n                  <span class=\"k-icon k-i-warning\"></span>\r\n                  <ion-label style=\"padding-top: 1px; padding-left: 3px;\"\r\n                             *ngIf=\"formGroup.get(col.field).invalid &&\r\n                          !formGroup.get(col.field).untouched &&\r\n                          formGroup.get(col.field).errors?.required\">\r\n                    {{ col.Name }} required.\r\n                  </ion-label>\r\n                  <ion-label style=\"padding-top: 1px; padding-left: 3px;\"\r\n                             *ngIf=\"formGroup.get(col.field).invalid &&\r\n                          !formGroup.get(col.field).untouched &&\r\n                          formGroup.get(col.field).errors?.pattern\">\r\n                    {{ col.ValidatorMessage ? col.ValidatorMessage : \"Please check the input value.\" }}\r\n                  </ion-label>\r\n                </kendo-popup>\r\n              </div>\r\n\r\n              <!-- Default Text Editor -->\r\n              <div *ngSwitchDefault>\r\n                <kendo-textbox #cellAnchor [formControl]=\"formGroup.get(col.field)\"></kendo-textbox>\r\n                <kendo-popup [anchor]=\"cellAnchor.input\"\r\n                             *ngIf=\"formGroup.get(col.field).invalid && !(isNew && formGroup.get(col.field).untouched)\"\r\n                             popupClass=\"k-widget k-tooltip k-tooltip-validation k-invalid-msg\"\r\n                             style=\"padding-left: 2px; opacity: 0.5;\">\r\n                  <span class=\"k-icon k-i-warning\"></span>\r\n                  <ion-label style=\"padding-top: 1px; padding-left: 3px;\"\r\n                             *ngIf=\"formGroup.get(col.field).invalid &&\r\n                          !formGroup.get(col.field).untouched &&\r\n                          formGroup.get(col.field).errors?.required\">\r\n                    {{ col.Name }} required.\r\n                  </ion-label>\r\n                  <ion-label style=\"padding-top: 1px; padding-left: 3px;\"\r\n                             *ngIf=\"formGroup.get(col.field).invalid &&\r\n                          !formGroup.get(col.field).untouched &&\r\n                          formGroup.get(col.field).errors?.pattern\">\r\n                    {{ col.ValidatorMessage ? col.ValidatorMessage : \"Please check the input value.\" }}\r\n                  </ion-label>\r\n                </kendo-popup>\r\n              </div>\r\n            </div>\r\n          </ng-template>\r\n\r\n          <!-- Cell Templates -->\r\n          <ng-template kendoGridCellTemplate let-dataItem let-rowIndex=\"rowIndex\">\r\n            <!-- Regular Cell Display -->\r\n            <div style=\"margin: 1px 0;\"\r\n                 *ngIf=\"!col.clickableIcons && col.isEditableInGrid !== true\"\r\n                 [ngSwitch]=\"col.fieldType\"\r\n                 [ngClass]=\"getClass(dataItem, col)\"\r\n                 [style]=\"getCellStyle(col, dataItem)\"\r\n                 [attr.data-id]=\"dataItem.Id\"\r\n                 [attr.column-name]=\"col.field\"\r\n                 (mouseenter)=\"showPopOver(col, $event)\"\r\n                 (mouseleave)=\"closePopOver($event)\">\r\n\r\n              <!-- Date Cell -->\r\n              <span *ngSwitchCase=\"'zdate'\" class=\"grid-cell-data\">\r\n                {{ dataItem[col.field] | date: col.FormatOptions ?? 'dd/MM/yyyy' }}\r\n              </span>\r\n\r\n              <!-- Time Cell -->\r\n              <span *ngSwitchCase=\"'ztime'\" class=\"grid-cell-data\">\r\n                {{ dataItem[col.field] | date: col.FormatOptions ?? 'HH:mm' }}\r\n              </span>\r\n\r\n              <!-- Short Date Cell -->\r\n              <span *ngSwitchCase=\"'zshortdate'\" class=\"grid-cell-data\">\r\n                {{ dataItem[col.field] | date: col.FormatOptions ?? 'MMM yyyy' }}\r\n              </span>\r\n\r\n              <!-- DateTime Cell -->\r\n              <span *ngSwitchCase=\"'zdatetime'\" class=\"grid-cell-data\">\r\n                {{ dataItem[col.field] | date: col.FormatOptions ?? 'dd/MM/yyyy hh:mm:ss aa' }}\r\n              </span>\r\n\r\n              <!-- UI DateTime Cell -->\r\n              <span *ngSwitchCase=\"'zuidatetime'\" class=\"grid-cell-data\">\r\n                {{ dataItem[col.field] | date: col.FormatOptions ?? 'dd/MM/yyyy hh:mm:ss aa' }}\r\n              </span>\r\n\r\n              <!-- Number Cell -->\r\n              <span *ngSwitchCase=\"'number'\" class=\"grid-cell-data\">\r\n                {{ dataItem[col.field] | number }}\r\n              </span>\r\n\r\n              <!-- Currency Cell -->\r\n              <span *ngSwitchCase=\"'currency'\" class=\"grid-cell-data\">\r\n                {{ dataItem[col.field] | number: getFormat(col, '1.2-2') }}\r\n              </span>\r\n\r\n              <!-- Numeric Cell -->\r\n              <span *ngSwitchCase=\"'znumeric'\" class=\"grid-cell-data\">\r\n                {{ dataItem[col.field] | number: getFormat(col) }}\r\n              </span>\r\n\r\n              <!-- URL Cell -->\r\n              <span *ngSwitchCase=\"'url'\" style=\"color: blue; cursor: pointer; text-decoration:underline;\" class=\"grid-cell-data\">\r\n                {{ dataItem[col.field] }}\r\n              </span>\r\n\r\n              <!-- Default Cell -->\r\n              <span *ngSwitchDefault>\r\n                <!-- Icon Display -->\r\n                <div style=\"margin: 5px 0;\"\r\n                     *ngIf=\"col.gridCellReplaceValue && getIconName(col.gridCellReplaceValue, dataItem[col.field]) !== ''\">\r\n                  <fa-icon [icon]=\"getIconName(col.gridCellReplaceValue, dataItem[col.field])\"></fa-icon>\r\n                </div>\r\n\r\n                <!-- Text Display with Conditional Styling -->\r\n                <div *ngIf=\"!col.gridCellReplaceValue\" [ngSwitch]=\"cellStyleCondition(col, dataItem[col.field])\">\r\n                  <span *ngSwitchCase=true>\r\n                    <div class=\"cellStyleConditionDefault\" [style]=\"setCellStyleCondition(col, dataItem[col.field])\">\r\n                      <span class=\"grid-cell-data\">{{ dataItem[col.field] }}</span>\r\n                    </div>\r\n                  </span>\r\n                  <span *ngSwitchDefault>\r\n                    <span class=\"grid-cell-data\">{{ dataItem[col.field] }}</span>\r\n                  </span>\r\n                </div>\r\n              </span>\r\n            </div>\r\n\r\n            <!-- Inline Editable Cell -->\r\n            <div style=\"margin: 5px 0;\"\r\n                 *ngIf=\"col.isEditableInGrid === true &&\r\n                      isInlineFormGroupHasValue() &&\r\n                      !isInlineEditInputFieldLoading &&\r\n                      !col.gridCellReplaceValue\"\r\n                 [style]=\"componentProperties.style.style5\"\r\n                 [ngClass]=\"getClass(dataItem, col)\"\r\n                 class=\"e1tag-style5\"\r\n                 [style]=\"getCellStyleForInlineEdit(col, dataItem, rowIndex)\">\r\n              <app-zinput-container [data]=\"getInlineField(col.field)\"\r\n                                    [group]=\"group\"\r\n                                    [form]=\"getInlineForm(dataItem, rowIndex)\"\r\n                                    [containerField]=\"containerField\"\r\n                                    [style]=\"componentProperties.style.style6\"\r\n                                    class=\"e1tag-style6\">\r\n              </app-zinput-container>\r\n            </div>\r\n\r\n            <!-- Clickable Icons -->\r\n            <span style=\"margin-top: 10px;\" *ngFor=\"let icon of col.clickableIcons\">\r\n              <span [ngClass]=\"icon.Class ? icon.Class : ''\"\r\n                    *ngIf=\"!!icon && (!!dataItem.WFS_StatusCode && !!icon)\r\n                        ? dataItem.WFS_StatusCode !== icon.WFS_StatusCode\r\n                        : true;\r\n                      else disabledButton\"\r\n                    (click)=\"onBtnClick($event, icon, dataItem, dataItem[col.field])\">\r\n                {{icon.Name || dataItem[col.field]}}\r\n                <fa-icon [icon]=\"icon.Icon\" style=\"padding: 4px 6px;\"></fa-icon>\r\n              </span>\r\n              <ng-template #disabledButton></ng-template>\r\n            </span>\r\n          </ng-template>\r\n\r\n          <!-- Footer Template -->\r\n          <ng-template kendoGridFooterTemplate\r\n                       let-column\r\n                       let-columnIndex=\"columnIndex\"\r\n                       *ngIf=\"data.EnableAggregate\">\r\n            <div style=\"margin: 5px 0;\"\r\n                 [ngSwitch]=\"col.fieldType\"\r\n                 [style]=\"componentProperties.style.style7\"\r\n                 class=\"e1tag-style7\">\r\n              {{col.aggregateType}}\r\n\r\n              <span *ngSwitchCase=\"'zdate'\">\r\n                {{ col.aggregateValue | date: col.FormatOptions ?? 'dd/MM/yyyy' }}\r\n              </span>\r\n\r\n              <span *ngSwitchCase=\"'ztime'\">\r\n                {{ col.aggregateValue | date: col.FormatOptions ?? 'HH:mm' }}\r\n              </span>\r\n\r\n              <span *ngSwitchCase=\"'zshortdate'\">\r\n                {{ col.aggregateValue | date: col.FormatOptions ?? 'MMM yyyy' }}\r\n              </span>\r\n\r\n              <span *ngSwitchCase=\"'zdatetime'\">\r\n                {{ col.aggregateValue | date: col.FormatOptions ?? 'dd/MM/yyyy hh:mm:ss aa' }}\r\n              </span>\r\n\r\n              <span *ngSwitchCase=\"'zuidatetime'\">\r\n                {{ col.aggregateValue | date: col.FormatOptions ?? 'dd/MM/yyyy hh:mm:ss aa' }}\r\n              </span>\r\n\r\n              <span *ngSwitchCase=\"'number'\">\r\n                {{ col.aggregateValue | number }}\r\n              </span>\r\n\r\n              <span *ngSwitchCase=\"'currency'\">\r\n                {{ col.aggregateValue | number: getFormat(col, '1.2.2') }}\r\n              </span>\r\n\r\n              <span *ngSwitchCase=\"'znumeric'\">\r\n                {{ col.aggregateValue | number: getFormat(col) }}\r\n              </span>\r\n\r\n              <span *ngSwitchCase=\"'url'\" style=\"color: blue; cursor: pointer; text-decoration:underline;\">\r\n                {{ col.aggregateValue }}\r\n              </span>\r\n\r\n              <span *ngSwitchDefault>\r\n                {{ col.aggregateValue }}\r\n              </span>\r\n            </div>\r\n          </ng-template>\r\n        </kendo-grid-column>\r\n\r\n        <!-- Command Column -->\r\n        <kendo-grid-command-column *ngIf=\"data.EnableGridCommand\"\r\n                                   width=\"180\"\r\n                                   [columnMenu]=\"false\"\r\n                                   [style]=\"componentProperties.style.style8\"\r\n                                   class=\"e1tag-style8\">\r\n          <ng-template kendoGridCellTemplate let-isNew=\"isNew\">\r\n            <button kendoGridSaveCommand>\r\n              {{ isNew ? 'Save' : 'Update' }}\r\n            </button>\r\n            <button kendoGridCancelCommand [primary]=\"true\">\r\n              {{ isNew ? 'Discard changes' : 'Cancel' }}\r\n            </button>\r\n            <button kendoGridEditCommand>\r\n              {{ \"Edit\" }}\r\n            </button>\r\n            <button kendoGridRemoveCommand>\r\n              {{ \"Remove\" }}\r\n            </button>\r\n          </ng-template>\r\n        </kendo-grid-command-column>\r\n\r\n        <!-- Custom Remove Command Column -->\r\n        <kendo-grid-command-column *ngIf=\"data.EnableCustomRemoveCommand\"\r\n                                   width=\"180\"\r\n                                   [columnMenu]=\"false\"\r\n                                   [style]=\"componentProperties.style.style8\"\r\n                                   class=\"e1tag-style8\">\r\n          <ng-template kendoGridCellTemplate let-isNew=\"isNew\" let-dataItem let-rowIndex=\"rowIndex\">\r\n            <button type=\"button\"\r\n                    kendoButton\r\n                    (click)=\"gridCustomRemoveCommand(dataItem, rowIndex)\"\r\n                    *ngIf=\"data.EnableCustomRemoveCommand\">\r\n              {{ \"Remove\" }}\r\n            </button>\r\n          </ng-template>\r\n        </kendo-grid-command-column>\r\n\r\n        <kendo-grid-excel fileName=\"Export.xlsx\" [fetchData]=\"allResults\"></kendo-grid-excel>\r\n\r\n        <!--detail grid-->\r\n        <ng-template kendoGridDetailTemplate *ngIf=\"data.DetailGrid === undefined ? false : data.DetailGrid.Visible\">\r\n          <app-zgrid [style]=\"componentProperties.containerStyle.style4\" class=\"e1tag-container-style4\" \r\n            [data]=\"data.DetailGrid\" [group]=\"group\" [form]=\"form\" [containerField]=\"containerField\" \r\n            [componentProperties]=\"componentProperties\">\r\n          </app-zgrid>\r\n        </ng-template>\r\n\r\n      </kendo-grid>\r\n\r\n      <app-context-menu [data]=\"data\" [group]=\"group\" [form]=\"form\" #dataitemcontextmenu></app-context-menu>\r\n    </div>\r\n  </div>\r\n\r\n  <!-- for DEC auto scrolling -->\r\n  <div id=\"end-of-grid\"></div>\r\n</div>\r\n","/********** Angular **********/\r\nimport { Component, OnInit, OnDestroy, ViewChild, ViewContainerRef, HostListener } from '@angular/core';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { filter, interval, tap, first } from 'rxjs';\r\nimport { DrawerComponent } from '@progress/kendo-angular-layout';\r\n\r\n/********** Component & Service **********/\r\nimport { FieldBase } from '../../components/fieldbase.component';\r\nimport { ZComponentService } from '../../services/zcomponent.service';\r\nimport { MainService } from '../../services/main.service';\r\nimport { ZComponentHelper } from 'mmhglobal-zcore';\r\n\r\n\r\n@Component({\r\n  selector: 'app-zgrid-container',\r\n  templateUrl: './zgrid-container.component.html',\r\n  styleUrls: ['./zgrid-container.component.scss'],\r\n})\r\n\r\nexport class ZgridContainerComponent extends FieldBase implements OnInit, OnDestroy {\r\n  @ViewChild('formPage', { read: ViewContainerRef }) formPage;\r\n  @ViewChild(DrawerComponent) public drawer: DrawerComponent;\r\n\r\n  public innerWidth: any;\r\n  public isShowFormPage = false;\r\n\r\n  constructor(\r\n    public componentService: ZComponentService,\r\n    private mainService: MainService\r\n  ) {\r\n    super(componentService);\r\n  }\r\n\r\n  ngOnInit() {\r\n    if (this.data.ComponentStyleType === `style${2}`) {\r\n      this.setupStyle2();\r\n    }\r\n    else if (this.data.ComponentStyleType === `style${3}`) {\r\n      this.setupStyle3();\r\n    }\r\n    super.initComponent().subscribe();\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    this.componentService.decrementComponentCounterForField(this.data);\r\n  }\r\n\r\n  ngOnDestroy() {\r\n  }\r\n\r\n  //#region Helper Functions\r\n  private displayFormPage() {\r\n    const pageElement = ZComponentHelper.getGroupValue(this.data['ContainerForm'], this.group);\r\n    this.mainService.loadContainerView({ viewContainerRef: this.formPage }, pageElement, this.data, this.group);\r\n  }\r\n  //#endregion\r\n\r\n  //#region Style 3: DEC\r\n  private setupStyle3() {\r\n    this.group[`e1CloseGridContainer`] = this.toggleFormPage.bind(this, false);\r\n  }\r\n\r\n  public toggleFormPage(isShow?: boolean) {\r\n    this.isShowFormPage = isShow;\r\n    if (isShow) {\r\n      this.displayFormPage();\r\n      this.mainService.scrollToEmbbedComponentPage();\r\n    }\r\n    else {\r\n      if (this.data.ContainerFormAutoScroll) {\r\n        this.mainService.scrollToTopOfPage();\r\n      }\r\n      this.formPage.clear();\r\n    }\r\n  }\r\n\r\n  //#region Stlye 2: Drawer\r\n  @HostListener('window:resize', ['$event'])\r\n  onResize(event) {\r\n    this.setDrawerWidth();\r\n  }\r\n\r\n  private setupStyle2() {\r\n    this.setDrawerWidth();\r\n    this.group[`e1CloseGridContainer`] = this.toggleDrawer.bind(this, false);\r\n  }\r\n\r\n  private toggleDrawer() {\r\n    this.drawer.toggle();\r\n  }\r\n\r\n  public onExpandChange(isExpanded: boolean): void {\r\n    this.isShowFormPage = isExpanded;\r\n    if (isExpanded) {\r\n      this.setupDrawerContent();\r\n    }\r\n  }\r\n\r\n  private setupDrawerContent() {\r\n    // Need to wait for form page to render in DOM\r\n    if (this.data['ContainerForm']) {\r\n      interval(500).pipe(\r\n        filter(x =>\r\n          this.formPage\r\n        ),\r\n        first(),\r\n        tap(() => {\r\n          this.displayFormPage();\r\n        })\r\n      ).subscribe();\r\n    }\r\n  }\r\n\r\n  private setDrawerWidth() {\r\n    this.innerWidth = (window.innerWidth * 0.8);\r\n  }\r\n  //#endregion\r\n}\r\n","<div class=\"grid-container\" *ngIf=\"data.ComponentStyleType === 'style2'\">\r\n  <kendo-drawer-container [style]=\"componentProperties.containerStyle.style\" class=\"e1tag-container-style\">\r\n    <kendo-drawer #drawer mode=\"overlay\" [position]=\"'end'\" [mini]=\"false\" [animation]=\"{duration: 800}\" [expanded]=\"isShowFormPage\"\r\n      [style]=\"componentProperties.containerStyle.style1\" class=\"e1tag-container-style1\" [width]=\"innerWidth\"\r\n      (expandedChange)=\"onExpandChange($event)\">\r\n      <ng-template kendoDrawerTemplate>\r\n        <div [style]=\"componentProperties.containerStyle.style2\" class=\"e1tag-container-style2\">\r\n          <div class=\"formHeader\">\r\n            <label class=\"formHeader-title\">Employee Profile</label>\r\n            <ion-button size=\"small\" fill=\"clear\" color=\"medium\" (click)=\"drawer.toggle()\">\r\n              <fa-icon class=\"close-btn-icon\" icon=\"times\"></fa-icon>\r\n            </ion-button>\r\n          </div>\r\n          <ng-container #formPage></ng-container>\r\n        </div>\r\n      </ng-template>\r\n    </kendo-drawer>\r\n\r\n    <kendo-drawer-content [style]=\"componentProperties.containerStyle.style3\" class=\"e1tag-container-style3\">\r\n      <app-zgrid [style]=\"componentProperties.containerStyle.style4\" class=\"e1tag-container-style4\" [data]=\"data\"\r\n        [group]=\"group\" [form]=\"form\" [containerField]=\"containerField\" [componentProperties]=\"componentProperties\"\r\n        (showFormPage)=\"drawer.toggle($event)\">\r\n      </app-zgrid>\r\n    </kendo-drawer-content>\r\n  </kendo-drawer-container>\r\n</div>\r\n\r\n\r\n<div class=\"grid-container\" *ngIf=\"data.ComponentStyleType !== 'style2'\">\r\n  <app-zgrid [style]=\"componentProperties.containerStyle.style4\" class=\"e1tag-container-style4\" [data]=\"data\"\r\n    [group]=\"group\" [form]=\"form\" [containerField]=\"containerField\" [componentProperties]=\"componentProperties\"\r\n    (showFormPage)=\"toggleFormPage($event)\">\r\n  </app-zgrid>\r\n  <div>\r\n    <div *ngIf=\"!group.isLoading\" [class.embeddedFormPage]=\"isShowFormPage\">\r\n      <ng-container #formPage></ng-container>\r\n    </div>\r\n    <div *ngIf=\"group.isLoading\" class=\"spinner-container\">\r\n      <app-page-loader></app-page-loader>\r\n    </div>\r\n  </div>\r\n</div>\r\n","/********** Angular **********/\r\nimport { Component, OnInit } from \"@angular/core\";\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\n\r\n/********** Component & Service **********/\r\nimport { InputFieldBase } from \"../components/inputfieldbase.component\";\r\nimport { ZComponentService } from \"../services/zcomponent.service\";\r\nimport { FontAweSomeService, ZComponent, ZComponentHelper } from 'mmhglobal-zcore';\r\nimport { tap } from \"rxjs\";\r\n\r\n@Component({\r\n  selector: 'app-zlabel',\r\n  templateUrl: './zlabel.component.html',\r\n  styleUrls: ['./zlabel.component.scss'],\r\n})\r\n\r\nexport class ZlabelComponent extends InputFieldBase implements ZComponent, OnInit {\r\n  public inputFieldAddOn = { top: {}, left: {}, right: {}, bottom: {} };\r\n  public labelText = \"\";\r\n\r\n  constructor(\r\n    public componentService: ZComponentService,\r\n    public fontAweSomeService: FontAweSomeService\r\n  ) {\r\n    super(componentService)\r\n  }\r\n\r\n  ngOnInit() {\r\n    super.initComponent().pipe(tap(() => {\r\n      this.setupAddOnValue();\r\n    })).subscribe();\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    this.componentService.decrementComponentCounterForField(this.data);\r\n  }\r\n\r\n  private setupAddOnValue(addOns?: any) {\r\n    const inputFieldAddOnGroupValue = ZComponentHelper.getGroupValue(addOns || this.data.InputFieldAddOns as any, this.group);\r\n    const addOnValue = inputFieldAddOnGroupValue || addOns || this.data.InputFieldAddOns;\r\n    if (addOnValue && Array.isArray(addOnValue)) {\r\n      for (const key of Object.keys(this.inputFieldAddOn)) {\r\n        this.inputFieldAddOn[key] = addOnValue.find(i => i.Position === key);\r\n      }\r\n    }\r\n  }\r\n}\r\n","<ion-item [formGroup]=\"form\"\r\n  *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\"\r\n  [ngClass]=\"getClass(form, data)\" [style.--min-height]=\"data.Height\"\r\n  [style.cursor]=\"data.OnItemClick ? 'pointer' : 'auto'\" [style]=\"componentProperties.style.style\" class=\"e1tag-style\"\r\n  (click)=\"onItemClick($event, data)\">\r\n  <div #zlabelDiv class=\"main-container\">\r\n    <div class=\"content-container e1tag-style1\" [style]=\"componentProperties.style.style1\"\r\n      *ngIf=\"!data.InputFieldAddOns || data.InputFieldAddOns.length <= 0\">\r\n      <fa-icon class=\"e1tag-style2\" [icon]=\"getFontAwesome(componentProperties.icon, fontAweSomeService)\"\r\n        *ngIf=\"componentProperties.icon\" [style]=\"componentProperties.style.style2\"></fa-icon>\r\n      <ion-label *ngIf=\"componentProperties.label && !data.IsHtml\" class=\"ion-text-wrap e1tag-style3\" Position=\"Fixed\"\r\n        [color]=\"data.Color\" [style]=\"componentProperties.style.style3\">\r\n        {{componentProperties.label}}\r\n      </ion-label>\r\n      <div *ngIf=\"componentProperties.label && data.IsHtml\" [innerHTML]=\"componentProperties.label  | htmlSanitize\"\r\n        class=\"e1tag-style3\" [style]=\"componentProperties.style.style3\"></div>\r\n    </div>\r\n    <div class=\"label-div-container e1tag-style5\" [style]=\"componentProperties.style.style5\"\r\n      *ngIf=\"data.InputFieldAddOns && data.InputFieldAddOns.length > 0\">\r\n      <app-input-field-addons class=\"addon-top e1tag-style4\" [position]=\"'top'\" [addOn]=\"inputFieldAddOn.top\"\r\n        [data]=\"data\" [group]=\"group\" [form]=\"form\" [containerField]=\"containerField\"\r\n        [componentProperties]=\"componentProperties\" [style]=\"componentProperties.style.style4\">\r\n      </app-input-field-addons>\r\n      <div class=\"content-withaddon-container e1tag-style1\" [style]=\"componentProperties.style.style1\">\r\n        <app-input-field-addons class=\"addon-left e1tag-style4\" [position]=\"'left'\" [addOn]=\"inputFieldAddOn.left\"\r\n          [data]=\"data\" [group]=\"group\" [form]=\"form\" [containerField]=\"containerField\"\r\n          [componentProperties]=\"componentProperties\" [style]=\"componentProperties.style.style4\">\r\n        </app-input-field-addons>\r\n        <fa-icon class=\"e1tag-style2\" [icon]=\"getFontAwesome(componentProperties.icon, fontAweSomeService)\"\r\n          *ngIf=\"componentProperties.icon\" [style]=\"componentProperties.style.style2\"></fa-icon>\r\n        <ion-label *ngIf=\"componentProperties.label && !data.IsHtml\" class=\"ion-text-wrap e1tag-style3\" Position=\"Fixed\"\r\n          [color]=\"data.Color\" [style]=\"componentProperties.style.style3\">\r\n          {{componentProperties.label}}\r\n        </ion-label>\r\n        <div *ngIf=\"componentProperties.label && data.IsHtml\" [innerHTML]=\"componentProperties.label  | htmlSanitize\"\r\n          class=\"e1tag-style3\" [style]=\"componentProperties.style.style3\"></div>\r\n        <app-input-field-addons class=\"addon-right e1tag-style4\" [position]=\"'right'\" [addOn]=\"inputFieldAddOn.right\"\r\n          [data]=\"data\" [group]=\"group\" [form]=\"form\" [containerField]=\"containerField\"\r\n          [componentProperties]=\"componentProperties\" [style]=\"componentProperties.style.style4\">\r\n        </app-input-field-addons>\r\n      </div>\r\n      <app-input-field-addons class=\"addon-bottom e1tag-style4\" [position]=\"'bottom'\" [addOn]=\"inputFieldAddOn.bottom\"\r\n        [data]=\"data\" [group]=\"group\" [form]=\"form\" [containerField]=\"containerField\"\r\n        [componentProperties]=\"componentProperties\" [style]=\"componentProperties.style.style4\">\r\n      </app-input-field-addons>\r\n    </div>\r\n  </div>\r\n  <app-context-menu [data]=\"data\" [group]=\"group\" [form]=\"form\" [target]=\"zlabelDiv\"></app-context-menu>\r\n</ion-item>\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input } from \"@angular/core\";\r\nimport { FormGroup } from '@angular/forms';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { DialItemClickEvent, FabAlign, FabPositionMode } from '@progress/kendo-angular-buttons';\r\n\r\n/********** Component & Service **********/\r\nimport { ButtonFieldBase } from \"../components/buttonfieldbase.component\";\r\nimport { ZComponentService } from \"../services/zcomponent.service\";\r\nimport {\r\n  FieldService, FontAweSomeService, ResourceApiService, WebApiService, WorkflowService,\r\n  ZComponent, ZComponentHelper, ZComponentOutputEvent, ZComponentProperties, ZField, ZGroup\r\n} from 'mmhglobal-zcore';\r\n\r\n\r\n@Component({\r\n  selector: 'app-zmfb',\r\n  templateUrl: './zmfb.component.html',\r\n  styleUrls: ['./zmfb.component.scss'],\r\n})\r\n\r\nexport class ZmfbComponent extends ButtonFieldBase implements ZComponent, OnInit {\r\n  positionMode: FabPositionMode = 'fixed';\r\n  align: FabAlign = { vertical: 'bottom', horizontal: 'end' };\r\n  items: Array<any> = [];\r\n  dialOpen: boolean = false;\r\n  isWorkflowButton: boolean = false;\r\n  buttonColor: string = 'primary';\r\n  private buttonField: ZField;\r\n\r\n  constructor(\r\n    public componentService: ZComponentService,\r\n    public fontAweSomeService: FontAweSomeService,\r\n    private fieldService: FieldService,\r\n    private resourceApiService: ResourceApiService,\r\n    private workflowService: WorkflowService\r\n  ) {\r\n    super(componentService)\r\n  }\r\n\r\n  ngOnInit() {\r\n    super.initComponent().subscribe(() => {\r\n      this.setupComponent();\r\n    });\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    this.componentService.decrementComponentCounterForField(this.data);\r\n  }\r\n\r\n  private setupComponent() {\r\n    this.align = (this.data[`Position`] ? JSON.parse(this.data[`Position`]) : null) || this.align;\r\n    if (this.data.Value != undefined) {\r\n      this.items = this.data.Value;\r\n    }\r\n    else {\r\n      this.setupDefaultDialItems();\r\n    }\r\n  }\r\n\r\n  //#region Envents\r\n  public onBlur(): void {\r\n    //console.log('blur');\r\n  }\r\n\r\n  public onFocus(): void {\r\n    if (this.isWorkflowButton) {\r\n      this.loadWorkflowButton();\r\n    }\r\n    //console.log('focus');\r\n  }\r\n\r\n  public onOpen(e): void {\r\n    this.dialOpen = true;\r\n    console.log('open');\r\n  }\r\n\r\n  public onClose(e): void {\r\n    // To stimulate never close\r\n    // e.preventDefault();\r\n    this.dialOpen = false;\r\n    console.log('close');\r\n  }\r\n\r\n  public onDialItemClick(e: DialItemClickEvent): void {\r\n    e.item.click();\r\n  }\r\n  //#endregion\r\n\r\n  //#region Dial Item - Buttons\r\n  private setupDefaultDialItems() {\r\n    this.buttonField = this.getFirstzButton(this.group.fields);\r\n\r\n    if (this.buttonField) {\r\n      if (!ZComponentHelper.isNullUndefinedEmpty(this.buttonField.WorkflowCode)) {\r\n        // handle as zWorkflowButton\r\n        this.isWorkflowButton = true;\r\n        this.loadWorkflowButton();\r\n\r\n        //Object.assign(this.group, {\r\n        //  zmfbLinked: `${this.data.Type}_${this.data.Name}`\r\n        //});\r\n      }\r\n      else {\r\n        const field$ = this.fieldService.getFormFieldCode(this.buttonField.Value, \"FormField\");\r\n\r\n        try {\r\n          field$.subscribe(data => {\r\n            data.forEach((button: any) => {\r\n              const label = this.getButtonLabel(button);\r\n\r\n              const _isVisible = this.isBtnVisible(button.Visible);\r\n              if (_isVisible) {\r\n                this.items.push({\r\n                  label: label,\r\n                  icon: ZComponentHelper.getIcon(button.Icon),\r\n                  clickEvent: button.ClickEvent,\r\n                  click: (y) => {\r\n                    this.buttonClick(button);\r\n                  }\r\n                });\r\n              }\r\n            });\r\n          });\r\n        } catch (error) {\r\n          console.error(\"error: \", error);\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n  private getFirstzButton(data: any[]) {\r\n    // data.forEach(d => {\r\n    for (let i = 0; i < data.length - 1; i++) {\r\n      if (data[i].Type === \"zbuttons\" || data[i].Type === \"zworkflowbuttons\") {\r\n        return data[i];\r\n      } else {\r\n        if (Array.isArray(data[i].Value)) {\r\n          this.getFirstzButton(data[i].Value);\r\n        }\r\n      }\r\n    }\r\n    return null;\r\n  }\r\n  //#endregion\r\n\r\n  //#region Workflow\r\n  // URL required\r\n  // eslint-disable-next-line @typescript-eslint/naming-convention,no-underscore-dangle,id-blacklist,id-match\r\n  e1wfs_wfcGetWorkflowButtonURL = this.resourceApiService.getURL(\"e1wfs_wfcGetWorkflowButtonURL\");\r\n  // eslint-disable-next-line @typescript-eslint/naming-convention,no-underscore-dangle,id-blacklist,id-match\r\n  e1wfs_wfc_getWorkflowInitialStatusURL = this.resourceApiService.getURL(\"e1wfs_wfc_getWorkflowInitialStatusURL\");\r\n  // eslint-disable-next-line @typescript-eslint/naming-convention, no-underscore-dangle, id-blacklist, id-match\r\n  e1wfs_wfc_getDocumentStatusURL = this.resourceApiService.getURL(\"e1wfs_wfc_getDocumentStatusURL\");\r\n\r\n\r\n  private loadWorkflowButton() {\r\n    //  actionBtnList: Array<ZField>;\r\n    this.items = [];\r\n\r\n    // Get WFS_DocumentId if any.\r\n    let documentId = null;\r\n    if (this.group.zModel) {\r\n      documentId = this.group.zModel['WFS_DocumentId'];\r\n    }\r\n\r\n    // Set the documentId to the service\r\n    this.workflowService.appendWFS_DocumentsInfo(this.buttonField.WorkflowCode, documentId);\r\n\r\n    try {\r\n      // Set param for field\r\n      const field$ = this.workflowService.getWorkflowButtonsField(\r\n        this.buttonField.WorkflowCode,\r\n        this.e1wfs_wfcGetWorkflowButtonURL,\r\n        String(false)\r\n      );\r\n\r\n      field$.subscribe(data => {\r\n        data.forEach((button: any) => {\r\n          const label = this.getButtonLabel(button);  \r\n          const attributes = JSON.parse(button.Attributes); \r\n          const newAttributes = {\r\n            ...attributes,\r\n            zButtonName: this.data.Name,\r\n            TypeCode: button.TypeCode,\r\n            WorkflowCode: this.data.WorkflowCode,\r\n            reloadAllWorkflowButton: true\r\n          };\r\n\r\n          button = {\r\n            ...button,\r\n            Attributes: JSON.stringify(newAttributes),\r\n            disableTrigger: this.isButtonDisableTrigger(this.data, button),\r\n          };\r\n\r\n          const buttonLabel = attributes.Label || label;\r\n          const isVisible = this.isBtnVisible(attributes.Visible);\r\n\r\n          if (isVisible) {\r\n            this.items.push({\r\n              label: buttonLabel,\r\n              fieldAttribute: button,\r\n              icon: ZComponentHelper.getIcon(attributes.Icon),\r\n              clickEvent: button.ClickEvent,\r\n              click: (y) => {\r\n                this.workflowButtonClick(button);\r\n              }\r\n            });\r\n          }\r\n          //ZComponentHelper.collectWorkflowButton(this.group, buttons.WorkflowCode, buttonLabel, button, attributes, mappedInfo);\r\n        });\r\n      });\r\n    } catch (error) {\r\n      console.error(\"error: \", error);\r\n    }\r\n  }\r\n   \r\n  private isButtonDisableTrigger(data: ZField, button: any): boolean {\r\n    return button.DisableTrigger != undefined ? button.DisableTrigger : (data.DisableTrigger != undefined ? data.DisableTrigger : false);\r\n  }\r\n\r\n  workflowButtonClick(button: any) {\r\n    // Type 1 == functional;\r\n    // Type 2 == GOTO;\r\n    const attributes = JSON.parse(button.Attributes);\r\n    switch (button.TypeCode.toUpperCase()) {\r\n      case \"FUNCTION\":\r\n        console.log(\"Functional Button: \", button.Name);\r\n        this.workflowService.functionalButton_OnClick(attributes, this.group);\r\n        break;\r\n      case \"GOTO\":\r\n        console.log(\"GOTO Button: \", button.Name);\r\n        this.workflowService.gotoButton_Onclick(button, this.buttonField, attributes, this.group, false).subscribe(res => {\r\n          this.loadWorkflowButton();\r\n\r\n          // Require to refresh the firstzBtn\r\n          const mainButtonName = `${this.buttonField.Type}_${this.buttonField.Name}`;\r\n          const mainButton = ZComponentHelper.getComponent(this.group, mainButtonName) ;\r\n          mainButton['loadButton']();\r\n\r\n          if (res) {\r\n            this.workflowService.triggerSendEmail(this.group).subscribe();\r\n          }\r\n        });\r\n        break;\r\n      default:\r\n        console.log(\"Invalid Button Type. \", button.Name);\r\n        break;\r\n    }\r\n  }\r\n  //#endregion\r\n}\r\n","<div class=\"zmfb-wrap e1tag-style\" [style]=\"componentProperties.style.style\">\r\n  <div class=\"k-overlay e1tag-style1\"\r\n       *ngIf=\"dialOpen\"\r\n       [style]=\"componentProperties.style.style1\">\r\n  </div>\r\n  <kendo-floatingactionbutton buttonClass=\"custom-floating-button\"\r\n                              class=\"e1tag-style2\"\r\n                              dialClass=\"custom-floating-dial\"\r\n                              [positionMode]=\"positionMode\"\r\n                              [align]=\"align\"\r\n                              [dialItems]=\"items\"\r\n                              (blur)=\"onBlur()\"\r\n                              (focus)=\"onFocus()\"\r\n                              (open)=\"onOpen($event)\"\r\n                              (close)=\"onClose($event)\"\r\n                              (click)=\"buttonClick(data)\"\r\n                              (dialItemClick)=\"onDialItemClick($event)\"\r\n                              [style]=\"componentProperties.style.style2\">\r\n    <ng-template kendoFloatingActionButtonTemplate>\r\n      <fa-icon [icon]=\"data.Icon ? data.Icon : 'plus'\"\r\n                size=\"2x\"\r\n               class=\"e1tag-style3\"\r\n               [style]=\"componentProperties.style.style3\">\r\n      </fa-icon>\r\n    </ng-template>\r\n    <ng-template kendoDialItemTemplate\r\n                 let-item\r\n                 let-isFocused=\"isFocused\">\r\n      <span class=\"k-fab-item-text e1tag-style4\"\r\n            [style]=\"componentProperties.style.style4\">\r\n        <span>{{ item.label }}</span>\r\n      </span>\r\n      <kendo-avatar shape=\"circle\"\r\n                    [themeColor]=\"buttonColor\"\r\n                    class=\"e1tag-style5\"\r\n                    [style]=\"componentProperties.style.style5\">\r\n        <fa-icon [icon]=\"getFontAwesome(item.icon, fontAweSomeService)\" size=\"1x\"></fa-icon>\r\n      </kendo-avatar>\r\n    </ng-template>\r\n  </kendo-floatingactionbutton>\r\n</div>\r\n","/********** Angular **********/\r\nimport { Component, OnInit, OnDestroy, Input } from \"@angular/core\";\r\nimport { FormGroup } from '@angular/forms';\r\n\r\n/********** Ionic **********/\r\nimport { ModalController, Platform } from \"@ionic/angular\";\r\n\r\n/********** Plugin **********/\r\nimport { Subscription, Observable } from \"rxjs\";\r\nimport { DialogContentBase, DialogRef } from '@progress/kendo-angular-dialog';\r\n\r\n/********** Component & Service **********/\r\nimport {\r\n  ZGroup, ModalPageParams,\r\n  WebApiService, AlertService, ZCoreService, FieldService, ResourceApiService,\r\n  ZComponentHelper, ZComponentOutputEvent, ComponentErrorHandlerService\r\n} from \"mmhglobal-zcore\";\r\nimport { ZmodalHelper, ModalResponse } from 'mmhglobal-zmodal';\r\nimport { ZComponentService } from \"../services/zcomponent.service\";\r\n\r\n\r\n@Component({\r\n  selector: 'app-zmodal',\r\n  templateUrl: './zmodal.component.html',\r\n  styleUrls: ['./zmodal.component.scss'],\r\n})\r\n\r\nexport class ZmodalComponent extends DialogContentBase implements OnInit, OnDestroy {\r\n  @Input() modalParams: ModalPageParams;\r\n\r\n  group: ZGroup = new ZGroup(true);\r\n  subscription: Subscription;\r\n  backButtonSubscription: Subscription;\r\n\r\n  constructor(\r\n    public dialog: DialogRef,\r\n    private modalCtrl: ModalController,\r\n    private zcoreService: ZCoreService,\r\n    private webApiService: WebApiService,\r\n    private resourceApiService: ResourceApiService,\r\n    private componentErrorHandlerService: ComponentErrorHandlerService, // Use in mmhglobal-zmodal.helper\r\n    private fieldService: FieldService,\r\n    private platform: Platform,\r\n    private alertService: AlertService,\r\n    private componentService: ZComponentService\r\n\r\n  ) {\r\n    super(dialog);\r\n  }\r\n\r\n  // get modalGroup() {\r\n  //   return this.group;\r\n  // }\r\n\r\n  ngOnInit() {\r\n    ZmodalHelper.onInit_ModalForm(this);\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    ZmodalHelper.onDestroy_ModalForm(this);\r\n  }\r\n\r\n  onCancel(event?: ZComponentOutputEvent) {\r\n    ZmodalHelper.onCancel(this, event);\r\n    // this.dialog.close();\r\n  }\r\n\r\n  onConfirm(event: ZComponentOutputEvent) {\r\n    ZmodalHelper.onConfirm(this, event);\r\n    // const fg = this.group.form as FormGroup;\r\n    // if (!this.group.form) {\r\n    //   return;\r\n    // }\r\n\r\n    // if (!fg.dirty) {\r\n    //   console.warn('Form is not dirty hence modalform record is not saved.');\r\n    //   this.onCancel();\r\n    //   return;\r\n    // }\r\n\r\n    // if (!fg.valid) {\r\n    //   const errors = ZComponentHelper.getFormGroupErrors(fg, this.alertService);\r\n    //   console.warn(\"Form Validation got error(s):\", errors);\r\n    //   return;\r\n    // }\r\n\r\n    // Object.assign(this.group.zModel, fg.value);\r\n    // this.modalCtrl.dismiss(this.group.zModel, \"confirm\");\r\n    // if (this.componentService.isMobileScreen()) {\r\n    //   this.modalCtrl.dismiss(event.data, \"confirm\");\r\n    // } else {\r\n    // this.dialog.close(event.data);\r\n    // }\r\n  }\r\n\r\n  onInitClose(event?: ZComponentOutputEvent) {\r\n    ZmodalHelper.onInitClose(this,event);\r\n  }\r\n\r\n  isSITEnvironment() {\r\n    return this.zcoreService.isDebugSession();\r\n  }\r\n\r\n\r\n  // to serve actionButton at formHeader\r\n  subjectEvent(event: ZComponentOutputEvent, group: ZGroup, me: any) {\r\n    if (!event || !event.target || !event.target.startsWith('modalGroup')) {\r\n      return;\r\n    }\r\n    console.log(\">> SubjectEvent\", event);\r\n    // const target = event.target.replace('modalGroup.', 'group.');\r\n    const callFunc = ZComponentHelper.getGroupEvalValue.call(this, event.target, group);\r\n    // callFunc(event);\r\n    if (typeof callFunc === \"function\") {\r\n      const fg = this.group.form as FormGroup;\r\n      Object.assign(this.group.zModel, fg.value);\r\n      event.data = this.group.zModel;\r\n      if (event.target.startsWith('modalGroup.modalAnswer') || event.target.startsWith('modalGroup.modalClose') || event.target.startsWith('modalGroup.modalCancel')) {\r\n        const newFunc = callFunc.bind(this);\r\n        newFunc(event);\r\n      } else {\r\n        const newFunc = callFunc.bind(group.ctrlScope);\r\n        newFunc(event);\r\n      }\r\n    } else {\r\n      console.warn(\r\n        \"Function not defined in group for: \",\r\n        callFunc,\r\n        \", Event: \",\r\n        event\r\n      );\r\n    }\r\n  }\r\n\r\n  getModel$(group: any, id: string): Observable<any> {\r\n    const recId = id || group.referenceId;\r\n    return this.webApiService.httpGet$(group.resourceURL + \"/\" + recId, null);\r\n  }\r\n\r\n  getGridStyle() {\r\n    // debugger;\r\n    if (!this.isMobileScreen) {\r\n      return {\r\n        \"height.px\": 500,\r\n        \"width.px\": 700\r\n      };\r\n    }\r\n    return;\r\n  }\r\n\r\n  isMobileScreen() {\r\n    return this.componentService.isMobileScreen();\r\n  }\r\n\r\n}\r\n","<ion-header *ngIf=\"isMobileScreen()\">\r\n  <ion-toolbar>\r\n    <ion-buttons slot=\"start\">\r\n      <ion-button (click)=\"onCancel()\">\r\n        <!-- <ion-icon name=\"close\"></ion-icon> -->\r\n        <fa-icon [icon]=\"'times'\" size=\"lg\"></fa-icon>\r\n      </ion-button>\r\n    </ion-buttons>\r\n    <ion-title>\r\n      {{ modalParams.formHeader }}\r\n    </ion-title>\r\n    <ion-buttons slot=\"primary\" *ngIf=\"!group.isLoading\">\r\n      <app-uiactionbutton [group]=\"group\"></app-uiactionbutton>\r\n    </ion-buttons>\r\n  </ion-toolbar>\r\n</ion-header>\r\n\r\n<ion-content appScrollbarTheme [ngStyle]=\"getGridStyle()\">\r\n  <ion-grid>\r\n    <ion-row *ngIf=\"group.isLoading\" class=\"ion-text-center\">\r\n      <ion-col class=\"ion-margin ion-padding\">\r\n        <ion-spinner></ion-spinner>\r\n      </ion-col>\r\n    </ion-row>\r\n    <ion-row *ngIf=\"!group.isLoading\">\r\n      <ion-col>\r\n        <app-zform [group]=\"group\"></app-zform>\r\n      </ion-col>\r\n    </ion-row>\r\n    <ion-row *ngIf=\"isSITEnvironment() && !group.isLoading\">\r\n      <ion-col>\r\n        <pre style=\"font-size: x-small;\">{{group.zModel | json}}</pre>\r\n      </ion-col>\r\n    </ion-row>\r\n  </ion-grid>\r\n</ion-content>\r\n\r\n","/********** Angular **********/\r\nimport { Component, OnInit, OnDestroy, Input } from \"@angular/core\";\r\nimport { FormGroup } from '@angular/forms';\r\n\r\n/********** Ionic **********/\r\n// import { ModalController, Platform } from \"@ionic/angular\";\r\n\r\n/********** Plugin **********/\r\n// import { switchMap, tap } from \"rxjs/operators\";\r\nimport { Subscription, of, BehaviorSubject, Observable, fromEvent } from \"rxjs\";\r\n\r\n/********** Component & Service **********/\r\n// import { FieldService } from \"../mmhglobal-zcore/field.service\";\r\n// import { ResourceApiService } from \"../mmhglobal-zcore/resourceapi.service\";\r\nimport {\r\n  WebApiService, ModalPageParams,\r\n  ZGroup, ZCoreService, ZComponentHelper, ZComponentOutputEvent, FieldService, ComponentErrorHandlerService,\r\n} from \"mmhglobal-zcore\";\r\nimport { ZmodalHelper } from 'mmhglobal-zmodal';\r\nimport { ZComponentService } from \"../services/zcomponent.service\";\r\n\r\n\r\n@Component({\r\n  selector: \"app-zmodal\",\r\n  templateUrl: \"./zmodal.component.html\",\r\n  styleUrls: [\"./zmodal.component.scss\"]\r\n})\r\n\r\nexport class ZmodalMobileComponent implements OnInit, OnDestroy {\r\n  @Input() modalParams: ModalPageParams;\r\n\r\n  group: ZGroup = new ZGroup(true);\r\n  subscription: Subscription;\r\n  backButtonSubscription: Subscription;\r\n\r\n  constructor(\r\n    private webApiService: WebApiService,\r\n    private zcoreService: ZCoreService,\r\n    private componentErrorHandlerService: ComponentErrorHandlerService, // Use in mmhglobal-zmodal.helper\r\n    private fieldService: FieldService, // Use in mmhglobal-zmodal.helper\r\n    private componentService: ZComponentService\r\n  ) {\r\n  }\r\n\r\n  // get modalGroup() {\r\n  //   return this.group;\r\n  // }\r\n\r\n  ngOnInit() {\r\n    ZmodalHelper.onInit_ModalForm(this);\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    ZmodalHelper.onDestroy_ModalForm(this);\r\n  }\r\n\r\n  onCancel(event?: ZComponentOutputEvent) {\r\n    ZmodalHelper.onCancel(this, event);\r\n    // this.modalCtrl.dismiss(null, \"cancel\");\r\n  }\r\n\r\n  onConfirm(event: ZComponentOutputEvent) {\r\n    ZmodalHelper.onConfirm(this, event);\r\n    // const fg = this.group.form as FormGroup;\r\n    // if (!this.group.form) {\r\n    //     return;\r\n    // }\r\n\r\n    // if (!fg.dirty) {\r\n    //     console.warn('Form is not dirty hence modalform record is not saved.');\r\n    //     this.onCancel();\r\n    //     return;\r\n    // }\r\n\r\n    // if (!fg.valid) {\r\n    //     const errors = ZComponentHelper.getFormGroupErrors(fg, this.alertService);\r\n    //     console.warn(\"Form Validation got error(s):\", errors);\r\n    //     return;\r\n    // }\r\n\r\n    // // Object.assign(this.group.zModel, fg.value);\r\n    // // this.modalCtrl.dismiss(this.group.zModel, \"confirm\");\r\n    // // if (this.componentService.isMobileScreen()) {\r\n    // this.modalCtrl.dismiss(event.data, \"confirm\");\r\n    // // } else {\r\n    // //   this.dialog.close(event.data);\r\n    // // }\r\n  }\r\n\r\n  onInitClose(event?: ZComponentOutputEvent) {\r\n    ZmodalHelper.onInitClose(this, event);\r\n  }\r\n\r\n  // to serve actionButton at formHeader\r\n  subjectEvent(event: ZComponentOutputEvent, group: ZGroup, me: any) {\r\n    if (!event || !event.target || !event.target.startsWith('modalGroup')) {\r\n      return;\r\n    }\r\n    console.log(\">> SubjectEvent\", event);\r\n    // const target = event.target.replace('modalGroup.', 'group.');\r\n    const callFunc = ZComponentHelper.getGroupEvalValue.call(this, event.target, group);\r\n    // callFunc(event);\r\n    if (typeof callFunc === \"function\") {\r\n      const fg = this.group.form as FormGroup;\r\n      Object.assign(this.group.zModel, fg.value);\r\n      event.data = this.group.zModel;\r\n      if (event.target.startsWith('modalGroup.modalAnswer') || event.target.startsWith('modalGroup.modalCancel')) {\r\n        const newFunc = callFunc.bind(this);\r\n        newFunc(event);\r\n      } else {\r\n        const newFunc = callFunc.bind(group.ctrlScope);\r\n        newFunc(event);\r\n      }\r\n    } else {\r\n      console.warn(\r\n        \"Function not defined in group for: \",\r\n        callFunc,\r\n        \", Event: \",\r\n        event\r\n      );\r\n    }\r\n  }\r\n\r\n  getModel$(group: any, id: string): Observable<any> {\r\n    const recId = id || group.referenceId;\r\n    return this.webApiService.httpGet$(group.resourceURL + \"/\" + recId, null);\r\n  }\r\n\r\n  getGridStyle() {\r\n    // debugger;\r\n    if (!this.isMobileScreen) {\r\n      return {\r\n        \"height.px\": 500,\r\n        \"width.px\": 700\r\n      };\r\n    }\r\n    return;\r\n  }\r\n\r\n  isMobileScreen() {\r\n    return this.componentService.isMobileScreen();\r\n  }\r\n\r\n  isSITEnvironment() {\r\n    return this.zcoreService.isDebugSession();\r\n  }\r\n}\r\n","/********** Angular **********/\r\nimport { Component, OnInit, ViewChild, HostListener, AfterViewInit } from \"@angular/core\";\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { TelerikReportViewerComponent } from \"@progress/telerik-angular-report-viewer\";\r\n\r\n/********** Component & Service **********/\r\nimport { FieldBase } from \"../components/fieldbase.component\";\r\nimport { ZComponentService } from \"../services/zcomponent.service\";\r\nimport { AlertService, AuthService, FontAweSomeService, ResourceApiService, ZComponentHelper, ZCoreService } from \"mmhglobal-zcore\";\r\n\r\ndeclare var $: any;\r\n\r\n\r\n@Component({\r\n  selector: \"app-zreport\",\r\n  templateUrl: \"./zreport.component.html\",\r\n  styleUrls: [\"./zreport.component.scss\"]\r\n})\r\n\r\nexport class ZreportComponent extends FieldBase implements OnInit, AfterViewInit {\r\n  @ViewChild('reportViewer1', { static: false }) viewer: TelerikReportViewerComponent;\r\n\r\n  public onExportBegin: Function;\r\n  public onExportEnd: Function;\r\n  public onRenderingBegin: Function;\r\n  public onRenderingEnd: Function;\r\n  public onPrintBegin: Function;\r\n  public onPrintEnd: Function;\r\n\r\n  private allowPrintPDF: boolean = true;\r\n\r\n  public serviceUrl = null;\r\n  public reportSource = null;\r\n  public viewerContainerStyle = {\r\n    position: \"relative\",\r\n    width: \"100%\",\r\n    height: \"800px\",\r\n    fontFamily: 'Arial, sans-serif',\r\n    backgroundColor: '#f9f9f9',\r\n    boxShadow: '0 2px 4px rgba(0, 0, 0, 0.1)',\r\n    fontSize: '16px',\r\n    lineHeight: '1.5',\r\n    color: '#333',\r\n  };\r\n\r\n  constructor(\r\n    public componentService: ZComponentService,\r\n    public fontAweSomeService: FontAweSomeService,\r\n    private resourceApiService: ResourceApiService,\r\n    private authService: AuthService,\r\n    private alertService: AlertService,\r\n    private zcoreService: ZCoreService\r\n  ) {\r\n    super(componentService);\r\n  }\r\n\r\n  ngOnInit() {\r\n    this.onExportBegin = this.exportBegin.bind(this);\r\n    this.onExportEnd = this.exportEnd.bind(this);\r\n    this.onRenderingBegin = this.renderingBegin.bind(this);\r\n    this.onRenderingEnd = this.renderingEnd.bind(this);\r\n    this.onPrintBegin = this.printBegin.bind(this);\r\n    this.onPrintEnd = this.printEnd.bind(this);\r\n\r\n\r\n    super.initComponent().subscribe(() => {\r\n      this.serviceUrl = this.zcoreService.normalizeUrl(this.resourceApiService.getURL(this.data.ResourceURL));\r\n      if (!this.serviceUrl) {\r\n        console.log(\"resourceURL is empty.\");\r\n      }\r\n\r\n      if (!!this.data.IsAutoGenerateReport) {\r\n        this.reportSource = ZComponentHelper.getGroupEvalValue.call(this, this.data.ReportSource);\r\n      }\r\n    });\r\n  }\r\n\r\n  ngAfterViewInit(): void {\r\n    this.componentService.decrementComponentCounterForField(this.data);\r\n  }\r\n\r\n  @HostListener('window:resize', ['$event'])\r\n  onResize() {\r\n    console.log(\"Report resized.\");\r\n  }\r\n\r\n  public onReady() {\r\n    console.log(\"Report ready.\");\r\n    $(\"[data-command*='telerik_ReportViewer_historyBack']\").parent().hide();\r\n    $(\"[data-command*='telerik_ReportViewer_historyForward']\").parent().hide();\r\n    $(\"[data-command*='telerik_ReportViewer_stopRendering']\").parent().hide();\r\n    //$(\"[data-command*='telerik_ReportViewer_refresh']\").parent().hide();\r\n    //$(\"[data-command*='telerik_ReportViewer_goToFirstPage']\").parent().hide();\r\n    //$(\"[data-command*='telerik_ReportViewer_goToPrevPage']\").parent().hide();\r\n    //$(\"[data-command*='telerik_ReportViewer_goToNextPage']\").parent().hide();\r\n    //$(\"[data-command*='telerik_ReportViewer_goToLastPage']\").parent().hide();\r\n    //$(\"[data-command*='telerik_ReportViewer_togglePrintPreview']\").parent().hide();\r\n    //$(\"[data-command*='telerik_ReportViewer_export']\").parent().hide();\r\n    //$(\"[data-command*='telerik_ReportViewer_print']\").parent().hide();\r\n    $(\"[data-command*='telerik_ReportViewer_toggleDocumentMap']\").parent().hide();\r\n    $(\"[data-command*='telerik_ReportViewer_toggleParametersArea']\").parent().hide();\r\n    //$(\"[data-command*='telerik_ReportViewer_zoomIn']\").parent().hide();\r\n    //$(\"[data-command*='telerik_ReportViewer_zoomOut']\").parent().hide();\r\n    //$(\"[data-command*='telerik_ReportViewer_toggleZoomMode']\").parent().hide();\r\n    $(\"[data-command*='telerik_ReportViewer_toggleSearchDialog']\").parent().hide();\r\n  }\r\n\r\n  public exportBegin(e: any, args: any) {\r\n    console.log(\"Export begin.\");\r\n  }\r\n\r\n  public exportEnd(e: any, args: any) {\r\n    console.log(\"Export end.\");\r\n  }\r\n\r\n  public renderingBegin(e: any, args: any): void {\r\n    console.log(\"Rendering started.\");\r\n    if (this.reportSource.parameters && this.reportSource.parameters.Authorization !== this.authService.authorizationBearer.Authorization) {\r\n      console.warn(\"Updated invalid authorization token.\");\r\n\r\n      this.reportSource.parameters.Authorization = this.authService.authorizationBearer.Authorization;\r\n      this.viewer.setReportSource(this.reportSource);\r\n    }\r\n  }\r\n\r\n  public renderingEnd(e: any, args: any): void {\r\n    console.log(\"Rendering ended.\");\r\n  }\r\n\r\n  private generateEmptyPdf(): Blob {\r\n    // Create an empty PDF file with just a header\r\n    const pdfContent = '%PDF-1.3\\n1 0 obj\\n<< /Type /Catalog /Pages 2 0 R >>\\nendobj\\n2 0 obj\\n<< /Type /Pages /Kids [] /Count 0 >>\\nendobj\\nxref\\n0 3\\n0000000000 65535 f \\n0000000010 00000 n \\ntrailer\\n<< /Root 1 0 R /Size 3 >>\\nstartxref\\n205\\n%%EOF';\r\n    return new Blob([pdfContent], { type: 'application/pdf' });\r\n  }\r\n\r\n  public printBegin(e: any, args: any) {\r\n    console.log(\"Print begin.\");\r\n\r\n    const alertTitle = 'Print PDF Error';\r\n    const pdfBlob = this.generateEmptyPdf();\r\n    const pdfUrl = URL.createObjectURL(pdfBlob); const userAgent = navigator.userAgent;\r\n    const iframe = document.createElement('iframe');\r\n    let isChrome = false;\r\n    let isEdge = false;\r\n\r\n    if (/Edg/.test(userAgent)) {\r\n      isEdge = true;\r\n    }\r\n    else if (/Chrome/.test(userAgent)) {\r\n      isChrome = true;\r\n    }\r\n\r\n    iframe.src = pdfUrl;\r\n    iframe.onload = () => {\r\n      try {\r\n        const iframeDocument = iframe.contentDocument || iframe.contentWindow?.document;\r\n        const pdfElement = iframeDocument.querySelector('embed[type=\"application/pdf\"], object[type=\"application/pdf\"], iframe');\r\n        console.log('Checking browser is report able to print.', pdfElement);\r\n\r\n        // If no PDF element found, alert user about potential issue\r\n        if (!pdfElement) {\r\n          this.allowPrintPDF = false;\r\n\r\n          if (isChrome) {\r\n            this.alertService.showOkay(alertTitle, \"Step 1: Please navigate to 'chrome://settings/content/pdfDocuments' in the brower.<br/>Step 2: Select 'Open PDFs in Chrome' in the setting before printing the report.\", [\"col-6\"]);\r\n          }\r\n          else if (isEdge) {\r\n            this.alertService.showOkay(alertTitle, \"Step 1: Please navigate to 'edge://settings/content/pdfDocuments' in the brower.<br/>Step 2: Enable 'PDF view settings' and Disable 'Always Download PDF files' in the setting before printing the report.\", [\"col-6\"]);\r\n          }\r\n          else {\r\n            this.alertService.showOkay(alertTitle, \"The browser settings cannot be detected, please reach out to support for assistance.\", [\"col-4\"]);\r\n          }\r\n        }\r\n        else {\r\n          this.allowPrintPDF = true;\r\n        }\r\n      } catch (error) {\r\n        // If accessing iframe content throws an error, alert user about potential issue\r\n        this.allowPrintPDF = false;\r\n        // PDF failed to load or display properly\r\n        console.log('PDF failed to load or display properly in the iframe.');\r\n        this.alertService.showOkay(alertTitle, \"The browser settings cannot be detected, please reach out to support for assistance.\", [\"col-4\"]);\r\n      }\r\n    };\r\n\r\n    iframe.onerror = () => {\r\n      this.allowPrintPDF = false;\r\n      // PDF failed to load or display properly\r\n      console.log('PDF failed to load or display properly in the iframe.');\r\n      this.alertService.showOkay(alertTitle, \"The browser settings cannot be detected, please reach out to support for assistance.\", [\"col-4\"]);\r\n    };\r\n\r\n    iframe.style.display = 'none';\r\n    document.body.appendChild(iframe);\r\n  }\r\n\r\n  public printEnd(e: any, args: any) {\r\n    console.log(\"Print end.\");\r\n\r\n    if (!this.allowPrintPDF) {\r\n      console.warn('Browser incorrect configuration, unable to print the PDF.')\r\n      args.handled = true;\r\n    }\r\n  }\r\n\r\n  public generateReport() {\r\n    this.reportSource = this.group[\"ReportSource\"];\r\n\r\n    if (this.reportSource.parameters && !this.reportSource.parameters.Authorization) {\r\n      this.reportSource.parameters.Authorization = this.authService.authorizationBearer.Authorization;\r\n    }\r\n\r\n    if (this.reportSource['url']) {\r\n      this.serviceUrl = this.zcoreService.normalizeUrl(this.reportSource['url']);\r\n    }\r\n\r\n    this.viewer.setReportSource(this.reportSource);\r\n    //this.viewer.refreshReport();\r\n  }\r\n}\r\n","<div width=\"100%\" height=\"800px\"> \r\n  <tr-viewer #reportViewer1\r\n             [containerStyle]=\"viewerContainerStyle\"\r\n             [serviceUrl]=\"serviceUrl\"\r\n             [reportSource]=\"reportSource\"\r\n             [viewMode]=\"'INTERACTIVE'\"\r\n             [scaleMode]=\"'SPECIFIC'\"\r\n             [scale]=\"1.0\"\r\n             [enableAccessibility]=\"false\"\r\n             [ready]=\"onReady\" \r\n             [exportBegin]=\"onExportBegin\"\r\n             [exportEnd]=\"onExportEnd\"\r\n             [renderingBegin]=\"onRenderingBegin\"\r\n             [renderingEnd]=\"onRenderingEnd\"\r\n             [printBegin]=\"onPrintBegin\"\r\n             [printEnd]=\"onPrintEnd\">\r\n  </tr-viewer>\r\n</div>\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input, ChangeDetectorRef, AfterViewInit } from \"@angular/core\";\r\nimport { FormGroup, Validators } from \"@angular/forms\";\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { of } from 'rxjs';\r\nimport { delay, take } from 'rxjs/operators';\r\nimport { DateChangeEvent, SlotClickEvent, EventClickEvent, EventStyleArgs, SlotClassArgs } from \"@progress/kendo-angular-scheduler\";\r\n\r\n/********** Component & Service **********/\r\nimport {\r\n  ZComponent, ZComponentHelper, ZComponentOutputEvent,\r\n  ZGroup, ZField, ZComponentProperties, StorageSessionService, AuthService\r\n} from \"mmhglobal-zcore\";\r\n\r\n\r\n@Component({\r\n  selector: \"app-zscheduler\",\r\n  templateUrl: \"./zscheduler.component.html\",\r\n  styleUrls: [\"./zscheduler.component.scss\"]\r\n})\r\n\r\nexport class ZschedulerComponent implements ZComponent, OnInit, AfterViewInit {\r\n  @Input() data: ZField;\r\n  @Input() group: ZGroup;\r\n  @Input() form: FormGroup;\r\n  @Input() ngStyle: { [klass: string]: any; }\r\n\r\n  isLoading = true;\r\n  events: any[] = [];\r\n  selectedDate = new Date();\r\n  local = {\r\n    inProgress: false,\r\n    ctrlScope: null\r\n  };\r\n  // selectedDate: Date = new Date();\r\n  selectedViewIndex = 3;\r\n  componentProperties = new ZComponentProperties();\r\n\r\n  // eventFields: SchedulerModelFields = {\r\n  //   id: \"Id\",\r\n  //   title: \"Objective\",\r\n  //   description: \"Description\",\r\n  //   // startTimezone: 'StartTimezone',\r\n  //   start: \"Date_UTC\",\r\n  //   end: \"End_UTC\"\r\n  //   // endTimezone: 'EndTimezone',\r\n  //   // isAllDay: 'IsAllDay',\r\n  //   // recurrenceRule: 'RecurrenceRule',\r\n  //   // recurrenceId: 'RecurrenceID',\r\n  //   // recurrenceExceptions: 'RecurrenceException'\r\n  // };\r\n\r\n  constructor(\r\n    private changeDetector: ChangeDetectorRef,\r\n    private storageService: StorageSessionService,\r\n    private authService: AuthService\r\n  ) {\r\n  }\r\n\r\n  ngOnInit() {\r\n    ZComponentHelper.setComponentProperties(this);\r\n    ZComponentHelper.registerComponent(this);\r\n    this.local.ctrlScope = this.group.ctrlScope;\r\n    //this.selectedViewIndex = this.data.SelectedViewIndex || this.selectedViewIndex;\r\n    //\r\n    if (this.data['SaveFilter']) {\r\n      this.setSchedulerSessionKey(this.group);\r\n      this.getSchedulerSessionFilter(this.group);\r\n    }\r\n    this.getItems();\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    //this.selectedViewIndex = this.data.SelectedViewIndex || this.selectedViewIndex;\r\n  }\r\n\r\n  getEventStyles = (args: EventStyleArgs) => {\r\n\r\n    if(args && args.event && args.event.dataItem)\r\n    {\r\n      const BGColor=args.event.dataItem[\"backgroundColor\"];\r\n      const BorderColor=args.event.dataItem[\"borderColor\"];\r\n\r\n    if (BGColor && BorderColor) \r\n    { return { backgroundColor: BGColor, bordercolor: BorderColor, color: \"white\" }; }\r\n    else {\r\n      return { backgroundColor: \"#ff7c73\", bordercolor: \"#ff7c73\" , color: \"white\" };\r\n    }\r\n\r\n    }\r\n  }\r\n\r\n  public getSlotClass = (args: SlotClassArgs) => {\r\n    const hour = args.start.getHours();\r\n    args.resources = this.events\r\n    return {\r\n      args\r\n    };\r\n  }\r\n\r\n  getItems() {\r\n    // if (this.isLoading) {\r\n    //    return [];\r\n    //  }\r\n    // debugger;\r\n    const v = this.data.Value;\r\n    if (Array.isArray(v)) {\r\n      return v;\r\n    } else {\r\n      const evalValue = ZComponentHelper.getGroupEvalValue.call(this, v);\r\n      // debugger;\r\n      if (evalValue) {\r\n        this.events = evalValue;\r\n        if (this.events) {\r\n          this.isLoading = false;\r\n        }\r\n      } else {\r\n        console.warn(\"Invalid field.Value setting \", this.data.Value);\r\n        return [];\r\n      }\r\n    }\r\n  }\r\n\r\n  onDateChange(args: DateChangeEvent): void {\r\n\r\n    // this.events = generateEvents(args.dateRange.start, 7);\r\n\r\n    if (this.local.inProgress) {\r\n      return;\r\n    }\r\n\r\n    //Set session values\r\n    this.group[\"selectedDate\"] = args.selectedDate;\r\n\r\n    if (this.data.OnDateChange) {\r\n\r\n      const func = ZComponentHelper.getGroupEvalValue.call(this, this.data.OnDateChange);\r\n      if (typeof func === 'function') {\r\n        const callFunc = func.bind(this.group.ctrlScope);\r\n        callFunc(args);\r\n      }\r\n    }\r\n\r\n    console.log(\"zschedule component date-change selection: \", args.dateRange);\r\n     // this.local.selectedDate = args.dateRange.start;\r\n    this.group.subject.next({\r\n    type: \"zscheduler-onDateChange\",\r\n    target: this.data.CalendarOptions + \".dateClick\",\r\n    event: args.dateRange\r\n    } as ZComponentOutputEvent);\r\n    // We're setting the events after the current change detection cycle\r\n    // has completed, hence we need to trigger a new one.\r\n    this.changeDetector.detectChanges();\r\n\r\n  }\r\n\r\n  onSlotDblClick({ sender, start, end, isAllDay }: SlotClickEvent): void {\r\n    console.log(\r\n      \"zscheduler component slot-double-click: \",\r\n      sender,\r\n      start,\r\n      end,\r\n      isAllDay\r\n    );\r\n\r\n    if (\r\n      sender.selectedView.name === \"month\" ||\r\n      sender.selectedView.name === \"week\"\r\n    ) {\r\n      this.local.inProgress = true;\r\n      this.selectedViewIndex = 3;\r\n      this.selectedDate = start;\r\n      of([]).pipe(take(1), delay(1000)).subscribe(() => this.local.inProgress = false);\r\n    }\r\n\r\n    // this.group.subject.next({\r\n    //   Type: \"zscheduler-onSlotDblClick\",\r\n    //   Target: this.data.CalendarOptions + 'select',\r\n    //   event: { sender, start, end, isAllDay }\r\n    // });\r\n    // this.closeEditor(sender);\r\n    // this.formGroup = this.formBuilder.group({\r\n    //     'Start': [start, Validators.required],\r\n    //     'End': [end, Validators.required],\r\n    //     'StartTimezone': new FormControl(),\r\n    //     'EndTimezone': new FormControl(),\r\n    //     'IsAllDay': isAllDay,\r\n    //     'Title': new FormControl(''),\r\n    //     'Description': new FormControl(''),\r\n    //     'RecurrenceRule': new FormControl(),\r\n    //     'RecurrenceID': new FormControl()\r\n    // });\r\n    // sender.addEvent(this.formGroup);\r\n  }\r\n\r\n  onEventDblClick({ sender, event }: EventClickEvent): void {\r\n    console.log(\"zscheduler component event-double-click: \", sender, event);\r\n\r\n    // this.group.subject.next({\r\n    //   type: \"zscheduler-onEventDblClick\" + \".eventClick\",\r\n    //   target: this.data.CalendarOptions,\r\n    //   event: { sender, event }\r\n    // } as ZComponentOutputEvent);\r\n\r\n    // this.closeEditor(sender);\r\n    // let dataItem = event.dataItem;\r\n    // if (this.editService.isRecurring(dataItem)) {\r\n    //     sender.openRecurringConfirmationDialog(CrudOperation.Edit)\r\n    //         // The result will be undefined if the dialog was closed.\r\n    //         .pipe(filter(editMode => editMode !== undefined))\r\n    //         .subscribe((editMode: EditMode) => {\r\n    //             if (editMode === EditMode.Series) {\r\n    //                 dataItem = this.editService.findRecurrenceMaster(dataItem);\r\n    //             }\r\n    //             this.formGroup = this.createFormGroup(dataItem);\r\n    //             sender.editEvent(dataItem, { group: this.formGroup, mode: editMode });\r\n    //         });\r\n    // } else {\r\n    //     this.formGroup = this.createFormGroup(dataItem);\r\n    //     sender.editEvent(dataItem, { group: this.formGroup });\r\n    // }\r\n\r\n    if (this.data.OnItemClick) {\r\n\r\n      //Restore session\r\n      this.beforeSchedulerGetData(this.group);\r\n      this.setSchedulerSessionFilter(this.group);\r\n\r\n      const func = ZComponentHelper.getGroupEvalValue.call(this, this.data.OnItemClick);\r\n      if (typeof func === 'function') {\r\n        const callFunc = func.bind(this.group.ctrlScope);\r\n        callFunc(event);\r\n      }\r\n      return;\r\n    }\r\n\r\n\r\n  }\r\n  \r\n  public setData = (gData: any) => {\r\n    this.selectedViewIndex = gData || this.selectedViewIndex;\r\n    //reset data\r\n    this.getItems();\r\n\r\n  }\r\n\r\n  public setEnable = (status: boolean) => {\r\n    this.componentProperties.isReadOnly = !status;\r\n  }\r\n\r\n  public setVisible = (status: boolean) => {\r\n    this.componentProperties.isVisible = status;\r\n    this.data.Visible = status;\r\n  }\r\n\r\n  public setRequire = (status: boolean) => {\r\n    this.componentProperties.isRequired = status;\r\n    ZComponentHelper.changeValidator(status, this.group, this.data.Value, this.componentProperties, Validators.required);\r\n  }\r\n\r\n\r\n  public setSchedulerSessionKey(group: ZGroup) {\r\n\r\n    if (group[\"SchedulerStorageKey\"]) {\r\n      return;\r\n    }\r\n    else {\r\n      group[\"SchedulerStorageKey\"] = 'zgrid_' + group.resourceURL + '_' + this.data.Value + '::' + this.authService.e1Token.userName;\r\n    }\r\n\r\n  }\r\n\r\n  public beforeSchedulerGetData(group: ZGroup) {\r\n    console.warn(\"beforeDateRangeBinding triggered\");\r\n    if (!group.beforeSchedulerGetData) {\r\n      console.warn(\"group.beforeDateRangeBinding is undefined\");\r\n      return of(true);\r\n    }\r\n\r\n    return group.beforeSchedulerGetData(group);\r\n  }\r\n\r\n  async setSchedulerSessionFilter(group: ZGroup) {\r\n\r\n    if (!group[\"SchedulerStorageKey\"]) {\r\n      return null;\r\n    }\r\n    const StorageKey = group[\"SchedulerStorageKey\"];\r\n\r\n    let lstFilter: { [key: string]: string } = {};\r\n\r\n    if (group && this.storageService && this.data['SaveFilter']) {\r\n\r\n      //list of data for StateFilter and FilterParams\r\n      lstFilter = {\r\n        \"SelectedDate\": JSON.stringify(group[\"selectedDate\"])\r\n      }\r\n      //create session storage \r\n      this.storageService.set(StorageKey, JSON.stringify(lstFilter));\r\n\r\n    }\r\n\r\n  }\r\n\r\n  async getSchedulerSessionFilter(group: ZGroup) {\r\n\r\n    if (!group[\"SchedulerStorageKey\"]) {\r\n      return null;\r\n    }\r\n    const StorageKey = group[\"SchedulerStorageKey\"];\r\n\r\n    if (this.storageService) {\r\n      await this.storageService.get(StorageKey)\r\n        .then(data => {\r\n          if (!data || !data.value || data.value === \"null\") {\r\n            return null;\r\n          }\r\n          else {\r\n            const result = JSON.parse(data.value);\r\n            this.selectedDate = new Date(JSON.parse(result[\"SelectedDate\"]));\r\n\r\n            return data;\r\n          }\r\n        });\r\n    }\r\n    else { return null; }\r\n\r\n  }\r\n\r\n}\r\n","<ion-item [formGroup]=\"form\" *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\">\r\n  <ion-label [attr.for]=\"data.Value\" *ngIf=\"data.ShowLabel\" position=\"stacked\">\r\n    {{data.Label}} <ion-text *ngIf=\"(!!componentProperties.isRequiredField ? group[componentProperties.isRequiredField] : componentProperties.isRequired)\" color=\"danger\">*</ion-text>\r\n  </ion-label>\r\n  <kendo-scheduler *ngIf=\"!isLoading\" [kendoSchedulerBinding]=\"events\" [selectedDate]=\"selectedDate\" (dateChange)=\"onDateChange($event)\"\r\n                   [selectedViewIndex]=\"selectedViewIndex\" [eventStyles]=\"getEventStyles\" [slotClass]=\"getSlotClass\"\r\n                   (slotDblClick)=\"onSlotDblClick($event)\" (eventDblClick)=\"onEventDblClick($event)\" scrollTime=\"08:00\"\r\n                   [style.height]=\"(!!data.Height ? [data.Height] : '600px')\">\r\n    <!-- [style.font-size]=\"(!!data.FontSize ? [data.FontSize] : '12px')\"> -->\r\n    <!--Note: line-height same with [eventHeight]-->\r\n    <ng-template kendoSchedulerEventTemplate let-event>\r\n      <span style=\"margin-left: -5px;line-height: 25px;\">{{ event.title }}</span>\r\n    </ng-template>\r\n\r\n    <ng-template kendoSchedulerToolbarTemplate let-selectedDate=\"selectedDate\">\r\n      <zschedulertoolbar [local]=\"local\" [selectedDate]=\"selectedDate\">\r\n      </zschedulertoolbar>\r\n      <ul kendoSchedulerToolbarViewSelector></ul>\r\n    </ng-template>\r\n\r\n    <ng-template kendoSchedulerAllDaySlotTemplate let-date=\"date\">\r\n      <strong>{{ date | kendoDate: 'dd-MMM-yyyy' }}</strong>\r\n    </ng-template>\r\n    <ng-template kendoSchedulerDateHeaderTemplate let-date=\"date\">\r\n      <strong>{{ date | kendoDate: \"ccc\" }}</strong>\r\n    </ng-template>\r\n\r\n\r\n    <!-- <kendo-scheduler-day-view startTime=\"08:00\">\r\n    </kendo-scheduler-day-view>\r\n\r\n    <kendo-scheduler-week-view startTime=\"08:00\">\r\n    </kendo-scheduler-week-view> -->\r\n\r\n    <kendo-scheduler-day-view>\r\n    </kendo-scheduler-day-view>\r\n\r\n    <kendo-scheduler-week-view>\r\n    </kendo-scheduler-week-view>\r\n\r\n    <kendo-scheduler-month-view [eventHeight]=\"25\">\r\n    </kendo-scheduler-month-view>\r\n\r\n    <!-- <kendo-scheduler-timeline-view>\r\n    </kendo-scheduler-timeline-view> -->\r\n\r\n    <kendo-scheduler-agenda-view>\r\n    </kendo-scheduler-agenda-view>\r\n  </kendo-scheduler>\r\n\r\n</ion-item>\r\n","/********** Angular **********/\r\nimport { Component, OnInit, ViewChild } from '@angular/core';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { of } from 'rxjs';\r\nimport { switchMap, tap } from 'rxjs/operators';\r\nimport { TabStripComponent } from '@progress/kendo-angular-layout';\r\n\r\n/********** Component & Service **********/\r\nimport { ContainerFieldBase } from '../components/containerfieldbase.component';\r\nimport { ZComponentService } from '../services/zcomponent.service';\r\nimport { MainService } from '../services/main.service';\r\nimport {\r\n  FontAweSomeService, StorageSessionService, TranslationService,\r\n  ZComponent, ZComponentHelper, ZTabItem\r\n} from 'mmhglobal-zcore';\r\n\r\n\r\n@Component({\r\n  selector: 'app-ztab',\r\n  templateUrl: './ztab.component.html',\r\n  styleUrls: ['./ztab.component.scss'],\r\n})\r\n\r\nexport class ZtabComponent extends ContainerFieldBase implements ZComponent, OnInit {\r\n  @ViewChild('kendoTabStripInstance') public tabstrip: TabStripComponent;\r\n\r\n  public state = {\r\n    lastSelectedTabIndex: 0,\r\n    currentTabs: Array<ZTabItem>(),\r\n    allTabs: Array<ZTabItem>()\r\n  };\r\n\r\n  constructor(\r\n    public componentService: ZComponentService,\r\n    public fontAweSomeService: FontAweSomeService,\r\n    private translationService: TranslationService,\r\n    private storageService: StorageSessionService,\r\n    private mainService: MainService\r\n  ) {\r\n    super(componentService);\r\n  }\r\n\r\n  ngOnInit() {\r\n    super.initComponent().pipe(\r\n      switchMap(() => {\r\n        if (this.data.TabItems && this.data.TabItems.length > 0) {\r\n          return this.translationService.$translateItemList(this.data.TabItems, \"Label\", { elementName: this.group.fieldName, group: this.group });\r\n        }\r\n        return of({});\r\n      }),\r\n      tap(() => {\r\n        this.setCurrentTabs();\r\n        this.restoreTabSelection();\r\n      })\r\n    ).subscribe();\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    this.componentService.decrementComponentCounterForField(this.data);\r\n  }\r\n\r\n  private setCurrentTabs() {\r\n    this.state.currentTabs = new Array<ZTabItem>();\r\n\r\n    if (Array.isArray(this.data.Label)) {\r\n      let validIcon = false;\r\n      if (this.data.Icon && Array.isArray(this.data.Icon) && this.data.Icon.length === this.data.Label.length) {\r\n        validIcon = true;\r\n      }\r\n\r\n      // eslint-disable-next-line guard-for-in\r\n      for (const index in this.data.Label) {\r\n        this.state.currentTabs.push(\r\n          {\r\n            Label: this.data.Label[index],\r\n            Icon: validIcon ? this.data.Icon[index] : null,\r\n            Visible: true,\r\n            Index: parseInt(index)\r\n          });\r\n      }\r\n      this.state.allTabs = this.state.currentTabs;\r\n\r\n      if (this.data.TabVisibleFalseIndex) {\r\n        this.setTabsVisible(this.data.TabVisibleFalseIndex, false);\r\n      }\r\n\r\n    } else if (this.data.TabItems) {\r\n      let ind = 0;\r\n      for (const field of this.data.TabItems) {\r\n        this.state.currentTabs.push(\r\n          {\r\n            Label: field.Label as string,\r\n            Icon: field.Icon ? field.Icon as string : null,\r\n            Visible: field.Visible == undefined ? true : ZComponentHelper.getGroupValue(field.Visible as string, this.group),\r\n            Counter: typeof (field.Counter) === \"string\" ? ZComponentHelper.getGroupValue(field.Counter as string, this.group) : field.Counter,\r\n            Index: ind++\r\n          });\r\n      }\r\n      this.state.allTabs = this.state.currentTabs;\r\n    }\r\n  }\r\n\r\n  private refreshCurrentTabs() {\r\n    const previousStateTabs = this.state.allTabs;\r\n\r\n    if (Array.isArray(this.data.Label)) {\r\n      this.state.currentTabs = new Array<ZTabItem>();\r\n      let validIcon = false;\r\n      if (this.data.Icon && Array.isArray(this.data.Icon) && this.data.Icon.length === this.data.Label.length) {\r\n        validIcon = true;\r\n      }\r\n\r\n      // eslint-disable-next-line guard-for-in\r\n      for (const index in this.data.Label) {\r\n        const previousTab = previousStateTabs.filter(x => x.Label == this.data.Label[index]);\r\n        const previousTabVisible = previousTab.length > 0 ? previousTab[0].Visible : false;\r\n\r\n        const isVisible = previousTabVisible;\r\n        if (isVisible) {\r\n          this.state.currentTabs.push(\r\n            {\r\n              Label: this.data.Label[index],\r\n              Icon: validIcon ? this.data.Icon[index] : null,\r\n              Visible: true,\r\n              Index: parseInt(index)\r\n            });\r\n        }\r\n      }\r\n    } else {\r\n      Object.assign(this.state.currentTabs, this.state.allTabs);\r\n    }\r\n  }\r\n\r\n  public selectTab = (index: number) => {\r\n    this.state.lastSelectedTabIndex = index;\r\n  }\r\n\r\n  getSelectedTab(tabIndex: number) {\r\n    return this.state.lastSelectedTabIndex === tabIndex;\r\n  }\r\n\r\n  public setSelectTab(tabIndex: number) {\r\n    this.storeTabSelectIndexToStorage(tabIndex);\r\n    this.state.lastSelectedTabIndex = tabIndex;\r\n  }\r\n\r\n  restoreTabSelection(): void {\r\n    if (this.data.AllowSaveState === false) {\r\n      return;\r\n    }\r\n\r\n    // try retrieve from sessionstorage\r\n    if (this.group.ctrlScope) {\r\n      const urlPath = this.group.ctrlScope.activatedRoute._routerState.snapshot.url;\r\n      const urlPathSegment = urlPath.split('/');\r\n      const storageKey = urlPathSegment[urlPathSegment.length - 1] + this.data.Name;\r\n      let savedTabSelection = sessionStorage.getItem(storageKey);\r\n      if (savedTabSelection) {\r\n        savedTabSelection = JSON.parse(savedTabSelection);\r\n        const activatedRouteUrl = this.group.ctrlScope.activatedRoute._routerState.snapshot.url;\r\n        if (savedTabSelection['url'] == activatedRouteUrl && savedTabSelection['pageParam'] == this.mainService.getNavigationCurrentParam()) {\r\n          this.group['tabSelections'] = new Map<string, number>();\r\n          this.group['tabSelections'].set(this.data.Name, savedTabSelection['tabIndex']);\r\n        }\r\n      }\r\n    }\r\n\r\n    let tabSelections = (\"tabSelections\" in this.group ? this.group['tabSelections'] : null) as Map<string, number>;\r\n    if (tabSelections !== null && tabSelections.has(this.data.Name)) { // subsequent loads\r\n      this.state.lastSelectedTabIndex = tabSelections.get(this.data.Name);\r\n\r\n    } else if (tabSelections === null) { // first load of first tab\r\n      tabSelections = new Map<string, number>();\r\n      this.group['tabSelections'] = tabSelections;\r\n      tabSelections.set(this.data.Name, 0);\r\n\r\n    } else if (!tabSelections.has(this.data.Name)) { // first load of rest tabs\r\n      tabSelections.set(this.data.Name, 0);\r\n    }\r\n  }\r\n\r\n  public onTabSelect(e) {\r\n    this.state.lastSelectedTabIndex = e.index;\r\n    this.saveState(e);\r\n\r\n    const func = ZComponentHelper.getGroupEvalValue.call(this, this.data.ClickEvent);\r\n    if (typeof func === 'function') {\r\n      const callFunc = func.bind(this.group.ctrlScope);\r\n      callFunc(e);\r\n    }\r\n  }\r\n\r\n  private saveState(e) {\r\n    if (this.data.AllowSaveState === false) {\r\n      return;\r\n    }\r\n    this.storeTabSelectIndexToStorage(e.index);\r\n\r\n    const tabSelections = this.group['tabSelections'] as Map<string, number>;\r\n    tabSelections.set(this.data.Name, e.index);\r\n  }\r\n\r\n  public setTabsVisible = (tabIndexes: number[], status: boolean) => {\r\n    if (this.state.allTabs.length <= Math.max.apply(null, tabIndexes) || Math.min.apply(null, tabIndexes) < 0) {\r\n      console.log(\"Invalid Tab index : \" + tabIndexes.join(\",\"));\r\n      return;\r\n    }\r\n\r\n    tabIndexes.forEach(index => {\r\n      this.state.allTabs[index].Visible = status;\r\n    });\r\n    this.refreshCurrentTabs();\r\n  }\r\n\r\n  public setTabCounter = (tabIndex: number, counter: number | string) => {\r\n    const labels = this.data.Label ? this.data.Label : this.data.TabItems;\r\n    if (labels.length <= tabIndex || tabIndex < 0) {\r\n      console.log(\"Invalid Tab index : \" + tabIndex);\r\n      return;\r\n    }\r\n\r\n    this.state.currentTabs[tabIndex].Counter = counter;\r\n  }\r\n\r\n  private storeTabSelectIndexToStorage(tabIndex: number) {\r\n    if (this.data.AllowSaveState) {\r\n      const urlPath = this.group.ctrlScope.activatedRoute._routerState.snapshot.url;\r\n      const urlPathSegment = urlPath.split('/');\r\n      const storageKey = urlPathSegment[urlPathSegment.length - 1] + this.data.Name;\r\n\r\n      const selectedTabJson = {\r\n        url: urlPath,\r\n        pageParam: this.mainService.getNavigationCurrentParam(),\r\n        tabIndex: tabIndex\r\n      }\r\n      this.storageService.set(storageKey, JSON.stringify(selectedTabJson));\r\n    }\r\n\r\n  }\r\n}\r\n","<div *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\" class=\"container e1tag-container-style\" [ngClass]=\"data.Class\"\r\n     [style]=\"componentProperties.containerStyle.style\">\r\n  <kendo-tabstrip class=\"ztab e1tag-container-style1\" #kendoTabStripInstance [keepTabContent]=\"true\" (tabSelect)=\"onTabSelect($event)\"\r\n                  [style]=\"componentProperties.containerStyle.style1\" [class]=\"data.ComponentStyleType\" [ngClass]=\"data.Class\">\r\n    <kendo-tabstrip-tab *ngFor=\"let tab of state.currentTabs; let i = index\" [selected]=\"getSelectedTab(i)\" [disabled]=\"!tab.Visible\"\r\n                        [style]=\"componentProperties.containerStyle.style2\" class=\"e1tag-container-style2\">\r\n      <ng-template kendoTabTitle *ngIf=\"tab.Visible\">\r\n        <div class=\"tab-content e1tag-container-style3\" [style]=\"componentProperties.containerStyle.style3\">\r\n          <fa-icon *ngIf=\"!!tab.Icon\" [icon]=\"getFontAwesome(tab.Icon, fontAweSomeService)\" [style]=\"componentProperties.containerStyle.style4\" class=\"e1tag-container-style4\"></fa-icon>\r\n          {{tab.Label}}\r\n          <ion-badge class=\"tab-item-counter e1tag-container-style5\" color=\"danger\" *ngIf=\"!!tab.Counter\" [style]=\"componentProperties.containerStyle.style5\">{{tab.Counter}}</ion-badge>\r\n        </div>\r\n      </ng-template>\r\n      <ng-template kendoTabContent>\r\n        <app-zdiv [style]=\"componentProperties.containerStyle.style6\" class=\"e1tag-container-style6\" [data]=\"data | tabfilter: tab.Index + ''\" [form]=\"form\" [group]=\"group\" [containerField]=\"containerField\">\r\n        </app-zdiv>\r\n      </ng-template>\r\n    </kendo-tabstrip-tab>\r\n  </kendo-tabstrip>\r\n</div>\r\n","/********** Angular **********/\r\nimport { Component, OnInit, ViewChild, ElementRef, AfterViewInit, ViewChildren, QueryList } from \"@angular/core\";\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { TreeItemDropEvent, TreeItemDragEvent, SelectableSettings, CheckableSettings, CheckedState } from \"@progress/kendo-angular-treeview\";\r\n\r\n/********** Component & Service **********/\r\nimport { DataListingFieldBase } from \"../components/datalistingfieldbase.component\";\r\nimport { ZComponentService } from \"../services/zcomponent.service\";\r\nimport { TreeViewCheckboxConfiguration, ZComponent, ZComponentHelper, ZComponentOutputEvent, ZField, ZGroup, ZTreeTemplateParams } from \"mmhglobal-zcore\";\r\nimport { TextBoxComponent } from \"@progress/kendo-angular-inputs\";\r\n\r\n\r\n@Component({\r\n  selector: \"app-ztree\",\r\n  templateUrl: \"./ztree.component.html\",\r\n  styleUrls: [\"./ztree.component.scss\"]\r\n})\r\n\r\nexport class ZtreeComponent extends DataListingFieldBase implements ZComponent, OnInit, AfterViewInit {\r\n  @ViewChild(\"nodetemplate\", { static: true }) nodetemplate: ElementRef;\r\n  @ViewChildren(\"zinput_textbox\") public zinput_textboxList: QueryList<TextBoxComponent>;\r\n\r\n  items: Array<any> = [];\r\n  originalItems: Array<any> = [];\r\n  isNodeDrop = false;\r\n  public state = { expandedkeys: [] };\r\n  public itemIndex = [];\r\n  public selectedKeys: any[] = [];\r\n  public checkedKeys: any[] = [];\r\n  public disabledCheckBoxKeys: any[] = [];\r\n  public selection: SelectableSettings = { mode: \"single\" };\r\n  public nodes = [];\r\n  private allNodesWitoutHierachy = [];\r\n  private clickActName = null;\r\n\r\n  constructor(\r\n    public componentService: ZComponentService\r\n  ) {\r\n    super(componentService)\r\n  }\r\n\r\n  ngOnInit() {\r\n    super.initComponent().subscribe(() => {\r\n      this.allNodesWitoutHierachy = [];\r\n      this.getItems();\r\n      this.populateAllNodesWitoutHierachy(this.nodes);\r\n      this.initSetSelectedValues();\r\n      this.initNodeCheckbox();\r\n      this.data.SelectOptions = this.data.SelectOptions || 'Id';\r\n      this.selection.mode = this.data.Multiple ? \"multiple\" : \"single\";\r\n\r\n      const isExpandAllNodes = ZComponentHelper.getGroupValue(this.data.TreeviewExpandAll as any, this.group);\r\n      if (isExpandAllNodes) {\r\n        this.expandAll();\r\n      }\r\n\r\n      this.data.isHideAllAddNode = this.data.isHideAllAddNode ?? ZComponentHelper.getGroupValue(this.data.isHideAllAddNode as any, this.group);\r\n      this.data.isHideAllRemoveNode = this.data.isHideAllRemoveNode ?? ZComponentHelper.getGroupValue(this.data.isHideAllRemoveNode as any, this.group);\r\n\r\n      this.setDefaultExpandable();\r\n    });\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    ZComponentHelper.registerComponent(this);\r\n    this.componentService.decrementComponentCounterForField(this.data);\r\n  }\r\n\r\n  public populateAllNodesWitoutHierachy(nodes: any) {\r\n    if (nodes && Array.isArray(nodes)) {\r\n      for (const node of nodes) {\r\n        if (!this.allNodesWitoutHierachy.some(x => x.Id == node.Id)) {\r\n          this.allNodesWitoutHierachy.push(node);\r\n          if (Array.isArray(node.Value)) {\r\n            this.populateAllNodesWitoutHierachy(node.Value);\r\n          }\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n  getItems() {\r\n    const fieldValue = this.data.Value;\r\n    if (fieldValue) {\r\n      this.nodes = ZComponentHelper.getGroupEvalValue.call(this, this.data.Value);\r\n      if (this.data.Type == \"ztree\") {\r\n        this.populateAllNodesWitoutHierachy(this.nodes);\r\n      }\r\n    } else {\r\n      console.warn('ztree field Value is not set correctly. ', fieldValue);\r\n      this.nodes = [];\r\n    }\r\n\r\n    return this.nodes;\r\n  }\r\n\r\n  getTemplate(dataItem: any, data: ZField, group: ZGroup) {\r\n    if (data.ItemTemplate) {\r\n      const getTemplateFunc = ZComponentHelper.getGroupEvalValue.call(\r\n        this,\r\n        data.ItemTemplate\r\n      );\r\n      if (getTemplateFunc) {\r\n        return getTemplateFunc({\r\n          dataItem,\r\n          data,\r\n          group\r\n        } as ZTreeTemplateParams);\r\n      }\r\n      else {\r\n        console.warn(\"The (\" + data.ItemTemplate + \") is not defined correctly. Value contains: \", getTemplateFunc);\r\n      }\r\n    }\r\n\r\n    return Object.values(dataItem)\r\n      .filter(data => typeof data === \"string\")\r\n      .join(\", \");\r\n\r\n  }\r\n\r\n  convertToTreeItems(dataSet: any[]) {\r\n    console.warn(\"This method is to be deprecated. Please use ZComponentHelper.convertToTreeItems()\");\r\n\r\n    const toTreeItems: any[] = [];\r\n    const treeIndex: any = {};\r\n    const pendingItems: any[] = [];\r\n    dataSet.forEach((d: any) => {\r\n      if (!d.ParentId) {\r\n        toTreeItems.push(d);\r\n        treeIndex[d.Id] = d;\r\n      } else {\r\n        if (treeIndex[d.ParentId]) {\r\n          const parentItem = treeIndex[d.ParentId];\r\n          if (!parentItem.Value) {\r\n            parentItem.Value = [];\r\n          }\r\n          parentItem.Value.push(d);\r\n          treeIndex[d.Id] = d;\r\n        } else {\r\n          pendingItems.push(d);\r\n        }\r\n      }\r\n    });\r\n\r\n    if (pendingItems.length > 0) {\r\n      pendingItems.forEach((d: any) => {\r\n        if (treeIndex[d.ParentId]) {\r\n          const parentItem = treeIndex[d.ParentId];\r\n          parentItem.Value.push(d);\r\n          treeIndex[d.Id] = d;\r\n        }\r\n      });\r\n    }\r\n\r\n    return toTreeItems;\r\n  }\r\n\r\n  onSelectionChange(event: any) {\r\n    let targetName: boolean | string;\r\n    if (this.clickActName) {\r\n      switch (this.clickActName) {\r\n        case 'AddNode':\r\n          targetName = this.data.OnAddNode;\r\n          break;\r\n        case 'RemoveNode':\r\n          targetName = this.data.OnRemoveNode;\r\n          break;\r\n      }\r\n    }\r\n\r\n    if (!targetName) {\r\n      targetName = this.data.OnItemClick;\r\n    }\r\n\r\n    this.clickActName = null;\r\n    this.group.subject.next({\r\n      type: \"ztree_onSelectionChange\",\r\n      target: targetName,\r\n      data: event.dataItem,\r\n      event: event.index\r\n    } as ZComponentOutputEvent);\r\n  }\r\n\r\n  public onNodeClick(event: any) {\r\n    // Right click handler\r\n    if (event.type === \"contextmenu\") {\r\n      this.dataItemContextMenu.showContextMenuManually(event, event.item);\r\n      return;\r\n    }\r\n  }\r\n\r\n  public getSelectedValues(): Array<any> {\r\n    if (this.allNodesWitoutHierachy && this.selectedKeys && this.allNodesWitoutHierachy.length > 0 && this.selectedKeys.length > 0) {\r\n      return this.allNodesWitoutHierachy.filter(x => this.selectedKeys.includes(x[this.data.SelectOptions]));\r\n    }\r\n    return [];\r\n  }\r\n\r\n  public setSelectedValues(data: any) {\r\n    if (data) {\r\n      this.selectedKeys = Array.isArray(data) ? data : [data];\r\n    }\r\n    else {\r\n      this.selectedKeys = [];\r\n    }\r\n  }\r\n\r\n  private initSetSelectedValues() {\r\n    if (this.data.SelectedValues) {\r\n      const selectedNodes = ZComponentHelper.getGroupEvalValue.call(this, this.data.SelectedValues);\r\n      this.setSelectedValues(selectedNodes);\r\n    }\r\n  }\r\n\r\n  //public setRowHeightDouble(value: boolean = true) {\r\n  //  console.warn('Deprecated - no londer need to set the height');\r\n  //  // this.data.doubleHeight = value;\r\n  //}\r\n\r\n  //#region Expand & Collapse\r\n  public isExpanded = (dataItem: any, index: string) => {\r\n    // console.log(index);\r\n    return this.state.expandedkeys.indexOf(index) > -1;\r\n    // return true;\r\n  }\r\n\r\n  public expandNode = (field: string, value: string, setAsSelected: boolean) => {\r\n    this.itemIndex = [];\r\n    this.getItems();\r\n\r\n    this.searchNodeIndex(this.nodes, value, '', field);\r\n\r\n    const index = this.itemIndex;\r\n    if (setAsSelected) {\r\n      this.selectedKeys = index;\r\n    }\r\n    const indexArr = [];\r\n    index.forEach((i: any) => {\r\n      const arr = i.split('_');\r\n      let indexs = \"\";\r\n      arr.forEach((x: any) => {\r\n        indexs = indexs.concat(\"_\").concat(x);\r\n        indexArr.push(indexs.substring(1));\r\n      })\r\n    });\r\n    this.state.expandedkeys = this.state.expandedkeys.concat(indexArr);\r\n  }\r\n\r\n  public collapseNode = (field: string, value: string, collapseParent: boolean) => {\r\n    this.itemIndex = [];\r\n    this.getItems();\r\n\r\n    this.searchNodeIndex(this.nodes, value, '', field);\r\n\r\n    const index = this.itemIndex;\r\n    let indexArr = [];\r\n    if (collapseParent) {\r\n      index.forEach((i: any) => {\r\n        const arr = i.split('_');\r\n        let indexs = \"\";\r\n        arr.forEach((x: any) => {\r\n          indexs = indexs.concat(\"_\").concat(x);\r\n          indexArr.push(indexs.substring(1));\r\n        })\r\n      });\r\n    } else {\r\n      indexArr = index;\r\n    }\r\n\r\n    this.state.expandedkeys = this.state.expandedkeys.filter(v => {\r\n      return !indexArr.includes(v);\r\n    });\r\n  }\r\n\r\n  public searchNodeIndex(node: any, value: string, key: string, field: string) {\r\n    if (key) {\r\n      key = key + '_';\r\n    }\r\n    node.forEach((d: any, i: number) => {\r\n      if (d[field] === Number(value) || d[field] === value) {\r\n        this.itemIndex = this.itemIndex.concat(key + '' + i);\r\n      }\r\n      if (Array.isArray(d.Value)) {\r\n        const k = key + '' + i;\r\n        this.searchNodeIndex(d.Value, value, k, field);\r\n      }\r\n    });\r\n  }\r\n\r\n  public expandAll = () => {\r\n    this.getItems();\r\n    if (this.nodes) {\r\n      this.expandAllNode(this.nodes, '');\r\n    }\r\n  }\r\n\r\n  public collapseAll = () => {\r\n    this.state.expandedkeys = [];\r\n  }\r\n\r\n  private expandAllNode(node: any, key: string) {\r\n    if (key) {\r\n      key = key + '_';\r\n    }\r\n    node.forEach((d: any, i: number) => {\r\n      if (Array.isArray(d.Value)) {\r\n        const k = key + '' + i;\r\n        this.state.expandedkeys = this.state.expandedkeys.concat(k);\r\n        this.expandAllNode(d.Value, k);\r\n      }\r\n    });\r\n  }\r\n\r\n  public handleCollapse(node) {\r\n    this.state.expandedkeys = this.state.expandedkeys.filter(k => k !== node.index);\r\n  }\r\n\r\n  public handleExpand(node) {\r\n    this.state.expandedkeys = this.state.expandedkeys.concat(node.index);\r\n  }\r\n\r\n  public setDefaultExpandable() {\r\n    const expandedDataIds = this.data.TreeListInitiallyExpandedDataIds;\r\n\r\n    if (expandedDataIds) {\r\n      const idList = typeof expandedDataIds === 'string'\r\n        ? ZComponentHelper.getGroupValue(expandedDataIds, this.group)\r\n        : expandedDataIds;\r\n\r\n      if (Array.isArray(idList)) {\r\n        this.state.expandedkeys = idList;\r\n      }\r\n    }\r\n  }\r\n  //#endregion\r\n\r\n  //#region Node Handling\r\n  onEditNode(event: any) {\r\n    if (this.data.OnEditNode) {\r\n      const func = ZComponentHelper.getGroupEvalValue.call(this, this.data.OnEditNode);\r\n      if (typeof func === 'function') {\r\n        const callFunc = func.bind(this.group.ctrlScope);\r\n        callFunc(event);\r\n      }\r\n      return;\r\n    }\r\n  }\r\n\r\n  onAddNode(event: any, dataItem: any, data: ZField, group: ZGroup) {\r\n    this.clickActName = 'AddNode';\r\n    // event.stopPropagation();\r\n    // if (this.data.OnAddNode) {\r\n    //   const func = ZComponentHelper.getGroupEvalValue.call(this, this.data.OnAddNode);\r\n    //   if (typeof func === 'function') {\r\n    //     const callFunc = func.bind(this.group.ctrlScope);\r\n    //     callFunc(dataItem, data, group, event.index);\r\n    //   }\r\n    //   return;\r\n    // }\r\n  }\r\n\r\n  onRemoveNode(event: any, dataItem: any, data: ZField, group: ZGroup) {\r\n    this.clickActName = 'RemoveNode';\r\n  }\r\n\r\n  handleNodeDrop(event: TreeItemDropEvent): void {\r\n    if (this.data.Draggable === false) {\r\n      event.setValid(false);\r\n      return;\r\n    }\r\n\r\n    this.isNodeDrop = true;\r\n    const dropHandler = ZComponentHelper.getGroupEvalValue.call(\r\n      this,\r\n      this.data.OnDrop\r\n    );\r\n    if (typeof dropHandler === \"function\") {\r\n      const callFunc = dropHandler.bind(this);\r\n      callFunc(event);\r\n    }\r\n\r\n    // prevent drop if attempting to add to file\r\n    // if (isFile(event.destinationItem.item.dataItem.text) && event.dropPosition === DropPosition.Over) {\r\n    //     event.setValid(false);\r\n    // }\r\n  }\r\n\r\n  handleNodeDragEnd(event: TreeItemDragEvent) {\r\n    if (!this.isNodeDrop) {\r\n      return;\r\n    }\r\n    this.isNodeDrop = false;\r\n    this.getItems();\r\n    // console.log('Items: ', this.items);\r\n    const target = [];\r\n    this.updateChangeToDataSet(this.nodes, target);\r\n    // this.dataSet = target;\r\n    ZComponentHelper.setModelValue(this.data.Value, target, this.group);\r\n    this.group.subject.next({\r\n      type: \"ztree-onTreeNodeDragEnd\",\r\n      target: this.data.OnChange,\r\n      data: target\r\n    } as ZComponentOutputEvent);\r\n  }\r\n\r\n  private updateChangeToDataSet(source: Array<any>, target: Array<any>) {\r\n    source.forEach(d => {\r\n      if (Array.isArray(d.Value)) {\r\n        const t = JSON.parse(JSON.stringify(d));\r\n        t.Value = [];\r\n        target.push(t);\r\n        this.updateChangeToDataSet(d.Value, t.Value);\r\n      } else {\r\n        const t = Object.assign({}, d);\r\n        t.Value = t._DataValue;\r\n        delete t._DataValue;\r\n        target.push(t);\r\n      }\r\n    });\r\n  }\r\n\r\n  public hideAddNode(isHidden = true) {\r\n    this.data.isHideAllAddNode = isHidden;\r\n  }\r\n\r\n  public hideRemoveNode(isHidden = true) {\r\n    this.data.isHideAllRemoveNode = isHidden;\r\n  }\r\n  //#endregion\r\n\r\n  //#region Search feature - filterable: true\r\n  public clearFilter() {\r\n    this.items = [];\r\n    this.originalItems = [];\r\n  }\r\n\r\n  public handleFilter(value: string): void {\r\n    if (this.items.length === 0) {\r\n      this.items = ZComponentHelper.getGroupEvalValue.call(this, this.data.Value);\r\n    }\r\n\r\n    if (this.items.length !== 0) {\r\n      if (this.originalItems.length === 0) {\r\n        this.originalItems = ZComponentHelper.deepClone(this.items);\r\n      }\r\n      else\r\n        this.items = ZComponentHelper.deepClone(this.originalItems);\r\n    }\r\n\r\n    const gridValue = this.filterPrefix(this.data.Value);\r\n    this.group[gridValue] = this.search(this.items, value);\r\n\r\n    if (ZComponentHelper.isNullUndefinedEmpty(value)) {\r\n      this.clearFilter();\r\n    }\r\n  }\r\n\r\n  private filterPrefix(valueName: any) {\r\n    if (valueName.startsWith('zData.')) {\r\n      return valueName.slice(6);\r\n    }\r\n    if (valueName.startsWith('group.zData.')) {\r\n      return valueName.slice(12);\r\n    }\r\n    if (valueName.startsWith('group.')) {\r\n      return valueName.slice(6);\r\n    }\r\n    if (valueName) {\r\n      return valueName;\r\n    }\r\n  }\r\n\r\n  private search(items: any[], term: string): any[] {\r\n    return items.reduce((acc, item) => {\r\n      if (this.contains(item.Name, term)) {\r\n        acc.push(item);\r\n      } else if (item.Value && item.Value.length > 0) {\r\n        const newItems = this.search(item.Value, term);\r\n\r\n        if (newItems.length > 0) {\r\n          var filterItem = item;\r\n          filterItem.Value = newItems;\r\n          acc.push(filterItem);\r\n        }\r\n      }\r\n      return acc;\r\n    }, []);\r\n  }\r\n\r\n  private contains(text: string, term: string): boolean {\r\n    return text.toLowerCase().indexOf((term || \"\").toLowerCase()) >= 0;\r\n  }\r\n  //#endregion\r\n\r\n  //#region Checkbox\r\n  private initNodeCheckbox() {\r\n    if (!!this.data.TreeViewCheckboxConfiguration) {\r\n      const checkboxConfiguration = this.getCheckboxConfiguration();\r\n\r\n      if (checkboxConfiguration.SelectedValues) {\r\n        const checkedNodes = ZComponentHelper.getGroupEvalValue.call(this, checkboxConfiguration.SelectedValues);\r\n        this.setCheckedValues(checkedNodes);\r\n      }\r\n\r\n      if (checkboxConfiguration.DisabledValues) {\r\n        const disabledNodes = ZComponentHelper.getGroupEvalValue.call(this, checkboxConfiguration.DisabledValues);\r\n        this.setDisabledCheckBox(disabledNodes);\r\n      }\r\n    }\r\n  }\r\n\r\n  private getCheckboxConfiguration(): TreeViewCheckboxConfiguration {\r\n    let checkboxConfiguration: TreeViewCheckboxConfiguration;\r\n\r\n    if (typeof this.data.TreeViewCheckboxConfiguration === 'string') {\r\n      // If CheckboxConfiguration is a string, retrieve the configuration from group\r\n      checkboxConfiguration = ZComponentHelper.getGroupValue(this.data.TreeViewCheckboxConfiguration, this.group);\r\n    }\r\n    else {\r\n      // If CheckboxConfiguration is an object, use it directly\r\n      checkboxConfiguration = this.data.TreeViewCheckboxConfiguration;\r\n    }\r\n\r\n    return checkboxConfiguration;\r\n  }\r\n\r\n  private setValues(data: any, targetVariable: string, defaultValue: any[] = []) {\r\n    this[targetVariable] = data ? (Array.isArray(data) ? data : [data]) : defaultValue;\r\n  }\r\n\r\n  public setCheckedValues(data: any) {\r\n    this.setValues(data, 'checkedKeys');\r\n  }\r\n\r\n  public setDisabledCheckBox(data: any) {\r\n    this.setValues(data, 'disabledCheckBoxKeys');\r\n  }\r\n\r\n  public get checkableSettings(): CheckableSettings {\r\n    if (!!this.data.TreeViewCheckboxConfiguration) {\r\n      const checkboxConfiguration = this.getCheckboxConfiguration();\r\n      const checkableSettings = {\r\n        enabled: true,\r\n        checkParents: !checkboxConfiguration.DisableParentAutoSelectOnAllChildren,\r\n        checkChildren: !checkboxConfiguration.DisableParentSelectsAllChildren,\r\n        checkDisabledChildren: checkboxConfiguration.EnableDisabledChildrenSelection,\r\n        mode: checkboxConfiguration.SelectMultiple ? 'multiple' : 'single',\r\n        checkOnClick: checkboxConfiguration.ToggleCheckboxOnNodeClick,\r\n      } as CheckableSettings;\r\n\r\n      return checkableSettings;\r\n    }\r\n    return {\r\n      enabled: false,\r\n    };\r\n  }\r\n\r\n  public onCheckedChange(event: any) {\r\n    if (!!this.data.TreeViewCheckboxConfiguration) {\r\n      const checkboxConfiguration = this.getCheckboxConfiguration();\r\n\r\n      const targetName = checkboxConfiguration.OnChange;\r\n      const isChecked = this.checkedKeys.indexOf(event.item.dataItem.Id) > -1;\r\n\r\n      this.group.subject.next({\r\n        type: \"ztree_OnCheckboxChange\",\r\n        target: targetName,\r\n        event,\r\n        data: { checkedValue: isChecked, selectedItem: event.item.dataItem, field: this.data, comp: this }\r\n      } as ZComponentOutputEvent);\r\n    }\r\n  }\r\n\r\n  public getCheckedValues(): Array<any> {\r\n    if (this.allNodesWitoutHierachy && this.checkedKeys && this.allNodesWitoutHierachy.length > 0 && this.checkedKeys.length > 0) {\r\n      const selectOptionsKey = this.data.SelectOptions;\r\n      return this.allNodesWitoutHierachy.filter(node => this.checkedKeys.includes(node[selectOptionsKey]));\r\n    }\r\n    return [];\r\n  }\r\n\r\n  // Custom logic handling Indeterminate state when custom data item property is persisted\r\n  public isChecked = (dataItem: any, index: string): CheckedState => {\r\n    if (this.data.TreeViewCheckboxConfiguration) {\r\n      if (this.containsItem(dataItem)) {\r\n        return \"checked\";\r\n      }\r\n\r\n      if (this.isIndeterminate(dataItem.Value)) {\r\n        return \"indeterminate\";\r\n      }\r\n\r\n      return \"none\";\r\n    }\r\n  }\r\n\r\n  private containsItem(item: any): boolean {\r\n    return this.checkedKeys.indexOf(item[this.data.SelectOptions]) > -1;\r\n  }\r\n\r\n  private isIndeterminate(items: any[] = []): boolean {\r\n    let idx = 0;\r\n    let item;\r\n\r\n    while ((item = items[idx])) {\r\n      if (this.isIndeterminate(item.Value) || this.containsItem(item)) {\r\n        return true;\r\n      }\r\n\r\n      idx += 1;\r\n    }\r\n\r\n    return false;\r\n  }\r\n  //#endregion\r\n}\r\n","<div style=\"width:100%\" [style]=\"componentProperties.style.style\" class=\"e1tag-style\"\r\n     *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\">\r\n  <kendo-treeview [nodes]=\"getItems()\"\r\n                  kendoTreeViewExpandable\r\n                  [kendoTreeViewSelectable]=\"selection\"\r\n                  kendoTreeViewDragAndDrop\r\n                  kendoTreeViewDragAndDropEditing\r\n                  [isExpanded]=\"isExpanded\"\r\n                  (collapse)=\"handleCollapse($event)\"\r\n                  (expand)=\"handleExpand($event)\"\r\n                  (nodeDrop)=\"handleNodeDrop($event)\"\r\n                  (nodeDragEnd)=\"handleNodeDragEnd($event)\"\r\n                  (selectionChange)=\"onSelectionChange($event)\"\r\n                  [(selectedKeys)]=\"selectedKeys\"\r\n                  kendoTreeViewHierarchyBinding\r\n                  childrenField=\"Value\"\r\n                  textField=\"Name\"\r\n                  [selectBy]=\"data.SelectOptions\"\r\n                  [filterable]=\"data.Filterable\"\r\n                  (filterChange)=\"handleFilter($event)\"\r\n                  [style]=\"componentProperties.style.style1\"\r\n                  class=\"e1tag-style1\"\r\n                  [ngClass]=\"data.Class\"\r\n                  [kendoTreeViewCheckable]=\"checkableSettings\"\r\n                  [checkBy]=\"data.SelectOptions\"\r\n                  [(checkedKeys)]=\"checkedKeys\"\r\n                  (checkedChange)=\"onCheckedChange($event)\"\r\n                  [kendoTreeViewDisable]=\"data.SelectOptions\"\r\n                  [isChecked]=\"isChecked\"\r\n                  [(disabledKeys)]=\"disabledCheckBoxKeys\"\r\n                  [disableParentNodesOnly]=\"data.DisableParentNodesOnly\"\r\n                  [expandDisabledNodes]=\"data.ExpandDisabledNodes\"\r\n                  (nodeClick)=\"onNodeClick($event)\">\r\n    <ng-template kendoTreeViewNodeTemplate let-dataItem #nodetemplate>\r\n      <div class=\"tree-content-container\">\r\n        <ion-button *ngIf=\"!!data.OnAddNode && !data.isHideAllAddNode\"\r\n                    (click)=\"onAddNode($event, dataItem, data, group)\"\r\n                    style=\"zoom: 0.6; margin: 0 0 0 2px;\"\r\n                    mat-raised-button\r\n                    color=\"primary\"\r\n                    size=\"medium\"\r\n                    [hidden]=\"!!dataItem.OnAddNodeVisible\"\r\n                    [style]=\"componentProperties.style.style2\"\r\n                    class=\"e1tag-style2\">\r\n          <fa-icon [icon]=\"'plus'\"></fa-icon>\r\n        </ion-button>\r\n        <ion-button *ngIf=\"!!data.OnRemoveNode && !data.isHideAllRemoveNode\"\r\n                    (click)=\"onRemoveNode($event, dataItem, data, group)\"\r\n                    style=\"zoom: 0.6; margin: 0 0 0 10px;\"\r\n                    color=\"danger\"\r\n                    mat-raised-button\r\n                    size=\"medium\"\r\n                    [hidden]=\"!!dataItem.OnRemoveNodeVisible\"\r\n                    [style]=\"componentProperties.style.style3\"\r\n                    class=\"e1tag-style3\">\r\n          <fa-icon [icon]=\"'minus'\"></fa-icon>\r\n        </ion-button>\r\n        <span class=\"btn-seperator e1tag-style7\" [style]=\"componentProperties.style.style7\"></span>\r\n        <span *ngFor=\"let icon of dataItem.IconList\">\r\n          <fa-icon class=\"e1tag-style5 left-icon\" [icon]=\"icon\" [style]=\"componentProperties.style.style5\"></fa-icon>\r\n        </span>\r\n        <ion-label [style]=\"componentProperties.style.style4\" class=\"e1tag-style4\" [ngClass]=\"dataItem.class\" *ngIf=\"!dataItem.z_inputType\">\r\n          <div [style]=\"componentProperties.style.style6\" class=\"e1tag-style6\" [innerHTML]=\"getTemplate(dataItem, data, group) | htmlSanitize\"></div>\r\n        </ion-label>\r\n        <div [style]=\"componentProperties.style.style4\" class=\"e1tag-style4\" [ngClass]=\"dataItem.class\" *ngIf=\"!!dataItem.z_inputType\">\r\n          <kendo-textbox\r\n                  #zinput_textbox\r\n                  *ngIf=\"dataItem.z_inputType == 'text'\"\r\n                  class=\"input-field e1tag-style8\"\r\n                  [id]=\"data.Name + '_' + dataItem.z_inputType + '_' + dataItem.Id\"\r\n                  [style]=\"componentProperties.style.style8\"\r\n                  [(ngModel)]=\"dataItem.z_inputValue\">\r\n          </kendo-textbox>\r\n        </div>\r\n      </div>\r\n    </ng-template>\r\n  </kendo-treeview>\r\n  <app-context-menu [data]=\"data\" [group]=\"group\" [form]=\"form\" #dataitemcontextmenu></app-context-menu>\r\n</div>\r\n","/********** Angular **********/\r\nimport { Component, OnInit, OnDestroy, ViewChild } from '@angular/core';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { of, forkJoin, Observable, Subscription, Subject } from 'rxjs';\r\nimport { tap, switchMap } from 'rxjs/operators';\r\nimport { CellClickEvent, ExpandEvent, ScrollMode } from '@progress/kendo-angular-treelist';\r\n\r\n/********** Component & Service **********/\r\nimport { DataListingFieldBase } from '../components/datalistingfieldbase.component';\r\nimport { ZComponentService } from '../services/zcomponent.service';\r\nimport {\r\n  FieldService, WebApiService, AuthService,\r\n  ZComponent, ZComponentHelper, ZComponentOutputEvent, ZField, ZGroup\r\n} from 'mmhglobal-zcore';\r\n\r\nexport interface ZTreeListColumn {\r\n  field: string;\r\n  title: string;\r\n  width: number;\r\n  visible: boolean | any;\r\n  fieldType: string;\r\n  navigateTo: string;\r\n  command: any;\r\n  class: any;\r\n  footerTemplate: boolean;\r\n  aggregateType: string;\r\n  aggregateTitle: string;\r\n  iconOnly?: boolean;\r\n}\r\n\r\nexport class ZTreeListOptions {\r\n  constructor(\r\n    public sortable?: boolean,\r\n    public resizable?: boolean,\r\n    public filterable?: boolean,\r\n    public reorderable?: boolean,\r\n    public columnMenu?: boolean,\r\n    public scrollable?: ScrollMode,\r\n    public refresh?: boolean,\r\n    public autoBind?: boolean,\r\n    public dataSource?: string,\r\n    public dataBound?: any,\r\n    public idField?: string,\r\n    public parentIdField?: string,\r\n    public columns?: Array<any>,\r\n    public aggregate?: any,\r\n    public pageAble?: any,\r\n    public pageSize: number = 10,\r\n  ) { }\r\n}\r\n\r\n\r\n@Component({\r\n  selector: 'app-ztreelist',\r\n  templateUrl: './ztreelist.component.html',\r\n  styleUrls: ['./ztreelist.component.scss', '../zgrid/zgrid.component.scss'],\r\n})\r\n\r\nexport class ZtreelistComponent extends DataListingFieldBase implements ZComponent, OnInit, OnDestroy {\r\n\r\n  ztreelist: any = null;\r\n  subscription: Subscription;\r\n  dataSource: any;\r\n  idField = 'Id';\r\n  parentIdField = 'ParentId';\r\n  options: ZTreeListOptions = new ZTreeListOptions();\r\n  public gridBtn;\r\n  fieldgridColVisible: any[];\r\n  inlineEditedFormGroups: {};\r\n  isLoading: boolean;\r\n  treelistSubject: Subject<any> = new Subject<any>();\r\n  private expandedIds: string[] = [];\r\n\r\n  constructor(\r\n    public componentService: ZComponentService,\r\n    private fieldService: FieldService,\r\n    private webapiService: WebApiService,\r\n    private activatedRoute: ActivatedRoute,\r\n    private router: Router,\r\n    private authService: AuthService\r\n  ) {\r\n    super(componentService);\r\n  }\r\n  // ngAfterViewInit(): void {\r\n  //   // this.ztreelist.setOptions({data: this.data, group: this.group});\r\n  // }\r\n\r\n  ngOnInit() {\r\n    this.isLoading = true;\r\n    super.initComponent().subscribe(() => {\r\n      this.setupGridButtons();\r\n\r\n      if (!!this.data.Options) {\r\n        this.setLocalOptions();\r\n      } else {\r\n        this.setFieldElementOptions();\r\n      }\r\n    });\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    this.componentService.decrementComponentCounterForField(this.data);\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    // if (this.subscription) {\r\n    //   this.subscription.unsubscribe();\r\n    // }\r\n  }\r\n\r\n  public setData = (gData: any) => {\r\n    this.setDateColForFiltering(gData);\r\n    this.dataSource = gData;\r\n    this.createFormControlsForInlineEdit(gData);\r\n    this.setDefaultExpandable();\r\n  }\r\n\r\n  public isButtonHidden(col: any, cellContain: any) {\r\n    if (col.visible) {\r\n      return ZComponentHelper.getGroupEvalValue.call(this, col.visible, cellContain.viewItem.data);\r\n    }\r\n\r\n    if (!col.hiddenParam || col.hiddenValue === 'undefined') {\r\n      return false;\r\n    }\r\n\r\n    if (cellContain.viewItem.data[col.hiddenParam] === null) {\r\n      return true;\r\n    }\r\n\r\n    if (cellContain.viewItem.data[col.hiddenParam] === col.hiddenValue) {\r\n      return true;\r\n    } else { return false; }\r\n  }\r\n\r\n  public buttonClick(button: any, cellContext: any) {\r\n    if (button.edit) {\r\n      button.edit(cellContext);\r\n    } else {\r\n      this.group.subject.next({\r\n        type: 'buttonClick',\r\n        target: button.ClickEvent,\r\n        data: cellContext\r\n      } as ZComponentOutputEvent);\r\n    }\r\n  }\r\n\r\n  public onNavigateTo(event: any, colSetting: any, rowData: any, cellData: string) {\r\n    // debugger;\r\n    // const n = colSetting.navigateTo.replace('/:id', cellData);\r\n    event.stopPropagation();\r\n    this.group.subject.next({\r\n      type: 'zgrid-onNavigateTo',\r\n      target: colSetting.navigateTo,\r\n      data: cellData\r\n    } as ZComponentOutputEvent);\r\n  }\r\n\r\n  public isColumnsVisible(fieldExpr) {\r\n    if (fieldExpr !== false && !fieldExpr) {\r\n      return true;\r\n    }\r\n    const v = ZComponentHelper.getGroupEvalValue.call(this, fieldExpr);\r\n    return v;\r\n  }\r\n\r\n  private setLocalOptions() {\r\n    const options: ZTreeListOptions = ZComponentHelper.getGroupValue(\r\n      this.data.Options,\r\n      this.group\r\n    );\r\n    if (!options) {\r\n      console.warn('No initialise for Field.Options: ', this.data.Options);\r\n      return;\r\n    }\r\n    this.options = options;\r\n    this.options.idField = this.options.idField || this.idField;\r\n    this.options.parentIdField = this.options.parentIdField || this.parentIdField;\r\n\r\n    super.translateColumnHeader(this.options.columns).subscribe(() => { this.isLoading = false; });\r\n\r\n    if (\r\n      this.options.dataSource &&\r\n      typeof this.options.dataSource === 'string'\r\n    ) {\r\n      if (this.options.dataSource.startsWith('group.')) {\r\n        this.dataSource = ZComponentHelper.getGroupValue(this.options.dataSource, this.group);\r\n        this.setDateColForFiltering(this.dataSource);\r\n        this.setDefaultExpandable();\r\n        this.setupPopoverFeature(this.options.columns, this.dataSource);\r\n      } else {\r\n        console.error(`${this.data.Name} - has invalid dataSource`);\r\n      }\r\n    } else {\r\n      console.error(`${this.data.Name} - dataSource property is not declared.`);\r\n    }\r\n  }\r\n\r\n  public setFieldElementOptions() {\r\n    this.options.sortable = true;\r\n    this.options.resizable = true;\r\n    this.options.filterable = true;\r\n    this.options.resizable = true;\r\n    this.options.columnMenu = this.data.DisableGridColumnMenu ? false : true;\r\n    this.options.pageAble = this.data.pageAble != undefined ? this.data.pageAble : false;\r\n    if (typeof this.options.pageAble != 'object' && this.options.pageAble) {\r\n      const pageSizes = [5, 10, 20, 50, 100, 200, 500]; // to be enhanced: custom page sizes\r\n      const previousNext = this.data['EnablePreviousNextButton'] || false;\r\n      this.options.pageAble = { responsive: true, buttonCount: 3, pageSizes: pageSizes, previousNext: previousNext };\r\n    }\r\n    this.options.scrollable = !!this.data.pageAble ? 'scrollable' : (this.data['ScrollMode'] || 'virtual');\r\n    this.options.idField = this.data['idField'] || this.idField;\r\n    this.options.parentIdField = this.data['parentIdField'] || this.parentIdField;\r\n    this.options.columns = [];\r\n    this.options.aggregate = [];\r\n    this.options.pageSize = this.data.PageSize || this.options.pageSize;\r\n\r\n    let zfields = [];\r\n    this.fieldService.getFormFieldCode(this.data['ColumnFieldCode'], 'FormField', null, null).pipe(\r\n      switchMap(fields => {\r\n        //Before get grid data\r\n        return this.beforeLoadColumn(this.group, fields, this);\r\n      }),\r\n      switchMap(fields => {\r\n        zfields = fields;\r\n        return this.getButtonsFromZButtons(fields);\r\n      }),\r\n      tap((buttons) => {\r\n        this.setTreeListColumns(zfields, buttons);\r\n      }),\r\n      switchMap(() => {\r\n        return forkJoin([this.getDataBinding(), super.translateColumnHeader(this.options.columns)]);\r\n      }),\r\n      tap(data => {\r\n        this.createFormControlsForInlineEdit(data[0]);\r\n        this.setDateColForFiltering(data[0]);\r\n        this.dataSource = data[0] || [];\r\n        this.setDefaultExpandable();\r\n        this.setupPopoverFeature(this.options.columns, data[0]);\r\n        this.isLoading = false;\r\n      })\r\n    ).subscribe();\r\n  }\r\n\r\n  public beforeLoadColumn(group: ZGroup, fields: any, me: any) {\r\n    if (!group.beforeLoadColumn) {\r\n      console.warn('group.beforeLoadColumn is undefined');\r\n      return of(fields);\r\n    }\r\n    return group.beforeLoadColumn(group, fields, me);\r\n  }\r\n\r\n  private getButtonsFromZButtons(fields: Array<ZField>): Observable<any> {\r\n    const buttonCmd = [];\r\n    const zbuttonResult = [];\r\n    fields.forEach(field => {\r\n      if (field.Type === 'zbuttons' && ZComponentHelper.getGroupValue(field.gridColVisible as string, this.group)) {\r\n        zbuttonResult.push(\r\n          this.fieldService.getFormFieldCode(field.Value, 'FormField', null, null).pipe(\r\n            switchMap(buttons => {\r\n              return of({ field, buttons });\r\n            }))\r\n        );\r\n      }\r\n    });\r\n\r\n    if (zbuttonResult.length === 0) {\r\n      return of([]);\r\n    }\r\n\r\n    return forkJoin(zbuttonResult).pipe(\r\n      tap(resp => {\r\n        resp.forEach(zbuttonsArray =>\r\n          zbuttonsArray['buttons'].forEach((button: any) => {\r\n            buttonCmd.push({\r\n              zbuttonsName: zbuttonsArray['field'].Value,\r\n              name: button.Value,\r\n              class: button.Class,\r\n              text: button.Label,\r\n              icon: button.Icon,\r\n              visible: button.Visible,\r\n              hiddenParam: button['hiddenParam'],\r\n              hiddenValue: button['hiddenValue'],\r\n              edit: button.edit,\r\n              ClickEvent: button.ClickEvent,\r\n              ShowLabel: button.ShowLabel,\r\n              color: button.Color\r\n            });\r\n          })\r\n        );\r\n      }),\r\n      switchMap(() => {\r\n        return of(buttonCmd);\r\n      })\r\n    );\r\n  }\r\n\r\n  private setTreeListColumns(fields: Array<ZField>, buttons: any) {\r\n    fields.forEach(field => {\r\n      if (Array.isArray(field.Value)) {\r\n        this.setTreeListColumns(field.Value, buttons);\r\n      }\r\n      if (ZComponentHelper.getGroupValue(field.gridColVisible as string, this.group) === true) {\r\n        if (field.Type === 'zbuttons') {\r\n          this.insertCommand(field, buttons);\r\n        } else {\r\n          if (field.AggregateType && field.AggregateType !== '') {\r\n            let aggregatetitle = '';\r\n            if (field.AggregateType === 'sum') {\r\n              aggregatetitle = 'Total: ';\r\n            } else {\r\n              aggregatetitle = `${field.AggregateType}: `;\r\n            }\r\n            this.insertFooterTemplateField(field, aggregatetitle);\r\n            this.options.aggregate.push({\r\n              field: field.Value,\r\n              aggregate: field.AggregateType\r\n            });\r\n          } else {\r\n            this.insertField(field);\r\n          }\r\n        }\r\n      }\r\n    });\r\n  }\r\n\r\n  private insertField(field: ZField) {\r\n    let colTitle = field.DisplayName ?? field.Name;\r\n    if (colTitle.toString().startsWith('group.')) {\r\n      colTitle = ZComponentHelper.getGroupValue(colTitle.toString(), this.group);\r\n    }\r\n    this.options.columns.push(\r\n      Object.assign(field, {\r\n        field: field.Value,\r\n        title: colTitle,\r\n        width: field.width,\r\n        visible: true,\r\n        fieldType: field.Type,\r\n        navigateTo: field.NavigateTo,\r\n        command: null,\r\n        class: field.DivClass,\r\n        footerTemplate: false,\r\n        aggregateType: '',\r\n        aggregateTitle: '',\r\n        isEditableInGrid: field.IsEditableInGrid\r\n      })\r\n    );\r\n  }\r\n\r\n  private insertCommand(field: ZField, buttons: any) {\r\n    let colTitle = field.Name;\r\n    if (colTitle.toString().startsWith('group.')) {\r\n      colTitle = ZComponentHelper.getGroupValue(colTitle.toString(), this.group);\r\n    }\r\n    this.options.columns.push({\r\n      field: field.Name,\r\n      title: colTitle,\r\n      width: field.width,\r\n      visible: field.Visible,\r\n      fieldType: field.Type,\r\n      navigateTo: field.NavigateTo,\r\n      command: buttons.filter(x => x.zbuttonsName === field.Value),\r\n      class: field.DivClass,\r\n      footerTemplate: false,\r\n      aggregateType: '',\r\n      aggregateTitle: '',\r\n      isEditableInGrid: field.IsEditableInGrid\r\n    });\r\n  }\r\n\r\n  private insertFooterTemplateField(field: ZField, aggregatetitle: string) {\r\n    let colTitle = field.Name;\r\n    if (colTitle.toString().startsWith('group.')) {\r\n      colTitle = ZComponentHelper.getGroupValue(colTitle.toString(), this.group);\r\n    }\r\n    this.options.columns.push({\r\n      field: field.Value,\r\n      title: colTitle,\r\n      width: field.width,\r\n      visible: true,\r\n      fieldType: field.Type,\r\n      navigateTo: field.NavigateTo,\r\n      command: null,\r\n      class: field.DivClass,\r\n      footerTemplate: true,\r\n      aggregateType: field.AggregateType,\r\n      aggregateTitle: aggregatetitle,\r\n      isEditableInGrid: field.IsEditableInGrid\r\n    });\r\n  }\r\n\r\n  private getDataBinding(): Observable<any> {\r\n    if (this.data.DataSource) {\r\n      return of(ZComponentHelper.getGroupValue(this.data.DataSource, this.group));\r\n    }\r\n\r\n    const resourceUrl = this.getResouceURL();\r\n    if (resourceUrl) {\r\n      return this.webapiService.getApi(resourceUrl, null, null, null, null, null, true);\r\n    }\r\n    return of([]);\r\n  }\r\n\r\n  private getResouceURL() {\r\n    return ZComponentHelper.getGroupValue(\r\n      this.data.ResourceURL,\r\n      this.group\r\n    );\r\n  }\r\n\r\n  cellClickHandler(event: CellClickEvent) {\r\n    if (event.type === 'contextmenu') {\r\n      this.dataItemContextMenu.showContextMenuManually(event, event.dataItem);\r\n      return;\r\n    }\r\n\r\n    if (!!this.data.DisableCellClickHandler) {\r\n      return;\r\n    }\r\n\r\n    console.log('cellClick event: ', event);\r\n    if (this.data.OnItemClick) {\r\n      const func = ZComponentHelper.getGroupEvalValue.call(this, this.data.OnItemClick);\r\n      if (typeof func === 'function') {\r\n        const callFunc = func.bind(this.group.ctrlScope);\r\n        callFunc(event);\r\n      }\r\n      return;\r\n    }\r\n\r\n    this.editModel(event.dataItem);\r\n  }\r\n\r\n  private editModel(dataItem: any) {\r\n    if (this.data.EditClickURL) {\r\n      // TODO:\r\n      // debugger;\r\n      // this.router.navigate([this.data.EditClickURL, dataItem.Id]);\r\n      const colFields = ZComponentHelper.getGroupValue(this.data.ColumnFields, this.group);\r\n      this.group.subject.next({\r\n        type: 'zgrid-cellClick',\r\n        target: this.data.EditClickURL,\r\n        data: dataItem,\r\n        columnFields$: colFields\r\n      } as ZComponentOutputEvent);\r\n    } else {\r\n      this.router.navigate([this.group.editModelURL, dataItem.Id, 'edit'], {\r\n        relativeTo: this.activatedRoute\r\n      });\r\n    }\r\n  }\r\n\r\n  public getFormat(col: any) {\r\n    let format = '';\r\n    const formatArr = col.FormatOptions.split('.')\r\n    let dp = 0;\r\n\r\n    if (formatArr.length > 1) {\r\n      dp = formatArr[1].length;\r\n    }\r\n\r\n    if (dp !== 0) {\r\n      format = `1.${dp}-${dp}`;\r\n    }\r\n\r\n    return format;\r\n  }\r\n\r\n  public setHeaderText(columnName: string, newHeaderTitle: string) {\r\n    const gridColumns = this.options.columns;\r\n    gridColumns.forEach((col: any) => {\r\n      if (col.Name === columnName || col.field === columnName) {\r\n        col.title = newHeaderTitle;\r\n      }\r\n    });\r\n  }\r\n\r\n  public getColClass(dataItem: any, col: any) {\r\n    let ngClass = 'gridCell ';\r\n    if (col.fieldType === 'number' || col.fieldType === 'currency' || col.fieldType === 'znumeric') {\r\n      ngClass += 'rightAligned ';\r\n    }\r\n\r\n    if (dataItem[`${col.field}_Class`]) {\r\n      ngClass += `${dataItem[`${col.field}_Class`]} `;\r\n    }\r\n\r\n    if (col.Class) {\r\n      ngClass += `${col.Class} `;\r\n    }\r\n\r\n    if (col.PopOverContent) {\r\n      ngClass += ' withPopoverInGrid';\r\n    }\r\n\r\n    return ngClass;\r\n  }\r\n\r\n  onFilterChange(event: any): void {\r\n    if (this.ztreelist) {\r\n      // to be implement.\r\n    }\r\n  }\r\n\r\n  public filterable(value: any) {\r\n    if (value === false) {\r\n      return false;\r\n    }\r\n    return true;\r\n  }\r\n\r\n  public sortable(value: any) {\r\n    if (value === false) {\r\n      return false;\r\n    }\r\n    return true;\r\n  }\r\n\r\n  public setDefaultExpandable() {\r\n    if (this.data.TreeListInitiallyExpandedDataIds) {\r\n      const idList = typeof this.data.TreeListInitiallyExpandedDataIds == 'string' ? ZComponentHelper.getGroupValue(this.data.TreeListInitiallyExpandedDataIds as string, this.group) : this.data.TreeListInitiallyExpandedDataIds;\r\n      if (idList && Array.isArray(idList)) {\r\n        this.expandedIds = idList.map(i => i.toString());\r\n      }\r\n    }\r\n    else if (this.data.DefaultCollapse === false) {\r\n      this.expandedIds = this.dataSource.map(d => d[this.idField].toString());\r\n    }\r\n  }\r\n\r\n  public isExpanded = (dataItem: any): boolean => {\r\n    return this.expandedIds.indexOf(dataItem[this.idField].toString()) > -1;\r\n  };\r\n\r\n  public onCollapse(args: ExpandEvent): void {\r\n    this.expandedIds = this.expandedIds.filter((id) => id != args.dataItem[this.idField].toString());\r\n  }\r\n\r\n  public onExpand(args: ExpandEvent): void {\r\n    this.expandedIds.push(args.dataItem[this.idField].toString());\r\n  }\r\n\r\n  public addNew() {\r\n    this.group.subject.next({\r\n      type: 'buttonClick',\r\n      target: 'group.newModel()',\r\n      data: null\r\n    } as ZComponentOutputEvent);\r\n  }\r\n\r\n  public refreshData() {\r\n    this.group.subject.next({\r\n      type: 'buttonClick',\r\n      target: 'group.refreshTreeList()',\r\n      data: null\r\n    } as ZComponentOutputEvent);\r\n  }\r\n\r\n  private setupGridButtons() {\r\n    if (this.data.GridButtonFieldName_WF || this.data.GridButtonFieldName) {\r\n      this.gridBtn = {\r\n        ReadOnly: false,\r\n        Visible: true,\r\n        IsRequired: false,\r\n        WorkflowCode: this.data.GridButtonFieldName_WF,\r\n        Value: this.data.GridButtonFieldName,\r\n        Type: this.data.GridButtonFieldName_WF ? 'zworkflowbuttons' : 'zbuttons'\r\n      }\r\n    }\r\n  }\r\n\r\n  //#region Inline Edit\r\n  private createFormControlsForInlineEdit(data: any) {\r\n    let counterIndex = 0;\r\n    if (this.options.columns.find(c => c.isEditableInGrid) === undefined || !data) {\r\n      return;\r\n    }\r\n\r\n    this.inlineEditedFormGroups = this.inlineEditedFormGroups || {};\r\n\r\n    data.forEach(d => {\r\n      const items = {};\r\n      this.options.columns.forEach(c => {\r\n        items[c.field] = new FormControl(d[c.field]);\r\n      });\r\n      const formGroup = new FormGroup(items);\r\n\r\n      if (d['Id']) {\r\n        items['Id'] = new FormControl({ value: d['Id'], disabled: false });\r\n      }\r\n      else {\r\n        d['Id'] = counterIndex++;\r\n      }\r\n      this.inlineEditedFormGroups[d['Id']] = formGroup;\r\n    });\r\n  }\r\n\r\n  public getInlineField(value: any) {\r\n    return this.options.columns.find(x => x.Value === value);\r\n  }\r\n\r\n  public getInlineForm(data: any, rowIndex: number) {\r\n    return this.inlineEditedFormGroups[data['Id'] || rowIndex];\r\n  }\r\n\r\n  public getFormControlData() {\r\n    const data = [];\r\n    for (const k of Object.keys(this.inlineEditedFormGroups)) {\r\n      data.push(this.inlineEditedFormGroups[k]?.value);\r\n    }\r\n    return data;\r\n  }\r\n\r\n  public isInlineEditColVisible(dataItem: any, column: any) {\r\n    const isVisible = dataItem[`${column.Value}_Visible`];\r\n    return !(isVisible === false);\r\n  }\r\n\r\n  //#region grid styling\r\n  public getCellStyleForInlineEdit(columnField: ZField, dataItem: any, rowIndex: number): any {\r\n    const form = this.getInlineForm(dataItem, rowIndex) as FormGroup;\r\n    if (!form) {\r\n      return {};\r\n    }\r\n    const style = columnField[`Style10`];\r\n    const func = ZComponentHelper.getGroupEvalValue.call(this, style);\r\n    if (typeof func === 'function') {\r\n      const callFunc = func.bind(this.group.ctrlScope);\r\n      return callFunc(form.value);\r\n    }\r\n    else if (typeof func === 'string') {\r\n      return func;\r\n    }\r\n    return style;\r\n  }\r\n  //#endregion\r\n\r\n  \r\n  private setDateColForFiltering(data: any[]) {\r\n    if (!data || !data.length || !this.options || !this.options.columns) return;\r\n    const dateColumns = this.options.columns.filter(c => \r\n      ['zdate', 'zdatetime', 'zuidatetime', 'sfdatetimepicker', 'zshortdate'].includes(c.fieldType)\r\n    ).map(c => c.field);\r\n\r\n    if (dateColumns.length > 0) {\r\n      const dateTimeRegex = /^\\d{4}-\\d{2}-\\d{2}(?:[T\\s]\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{1,7})?(?:Z|[\\+\\-]\\d{2}:\\d{2})?)?$/;\r\n      data.forEach(item => {\r\n        dateColumns.forEach(field => {\r\n          if (item[field] && typeof item[field] === 'string' && dateTimeRegex.test(item[field])) {\r\n            item[field] = new Date(item[field]);\r\n          }\r\n        });\r\n      });\r\n    }\r\n  }\r\n}\r\n","<div *ngIf=\"!isLoading && (!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\"\r\n     class=\"grid-container e1tag-style\" [style]=\"componentProperties.style.style\" [ngClass]=\"data.Class\">\r\n  <ng-template #template let-anchor>\r\n    <span>{{ anchor.nativeElement.innerText }}</span>\r\n  </ng-template>\r\n  <kendo-popover #gridPopOver [position]=\"data.PopOverPosition || 'bottom'\" [templateData]=\"getContextData.bind(this)\">\r\n    <ng-template kendoPopoverBodyTemplate let-data=\"data\">\r\n      <div [style]=\"data.BodyStyle\" class=\"popoverbody\" *ngIf=\"data && data.Body\" [innerHTML]=\"data.Body | htmlSanitize\" [ngClass]=\"data.BodyClass\" (mouseleave)=\"closePopOver.call(this, $event)\"></div>\r\n    </ng-template>\r\n  </kendo-popover>\r\n  <div kendoTooltip showOn=\"none\" [tooltipTemplate]=\"template\" filter=\".k-grid td\" (mouseover)=\"showTooltip($event)\" [style]=\"componentProperties.style.style1\" class=\"e1tag-style1\">\r\n    <div kendoPopoverContainer [popover]=\"gridPopOver\" filter=\"div.gridCell.withPopoverInGrid\" showOn=\"none\" kendoPopoverContainer #popovercontainer=\"kendoPopoverContainer\">\r\n      <kendo-treelist [kendoTreeListFlatBinding]=\"dataSource\"\r\n                    kendoTreeListExpandable\r\n                    [style]=\"componentProperties.style.style2\"\r\n                    class=\"desktop-grid e1tag-style2\"\r\n                    [idField]=\"options.idField\"\r\n                    [parentIdField]=\"options.parentIdField\"\r\n                    [sortable]=\"options.sortable\"\r\n                    [resizable]=\"options.resizable\"\r\n                    [filterable]=\"options.filterable\"\r\n                    [reorderable]=\"false\"\r\n                    [columnMenu]=\"options.columnMenu\"\r\n                    [scrollable]=\"options.scrollable\"\r\n                    [aggregate]=\"options.aggregate\"\r\n                    [isExpanded]=\"isExpanded\"\r\n                    [class.hiden-pager]=\"!options.pageAble\"\r\n                    (cellClick)=\"cellClickHandler($event)\"\r\n                    (filterChange)=\"onFilterChange($event)\"\r\n                    (expand)=\"onExpand($event)\"\r\n                    (collapse)=\"onCollapse($event)\"\r\n                    [rowClass]=\"rowCallback.bind(this)\"\r\n                    [pageable]=\"options.pageAble\"\r\n                    [pageSize]=\"options.pageSize\">\r\n      <ng-template kendoTreeListToolbarTemplate\r\n                   *ngIf=\"data.AllowRefreshButton || data.AllowExport || data.Title || data.GridButtonFieldName_WF || data.GridButtonFieldName\">\r\n        <div class=\"toobar-left-item\">\r\n          <fa-icon *ngIf=\"data.Icon\" class=\"gridTitleIcon\" [icon]=\"data.Icon\"></fa-icon>\r\n          <kendo-label class=\"gridTitle\">{{data.Title}}</kendo-label>\r\n          <button class=\"ion-activatable ripple-parent k-button refresh-btn\" (click)=\"refreshData()\" *ngIf=\"data.AllowRefreshButton\">\r\n            <span class=\"k-icon k-i-refresh-sm\"></span>\r\n            <ion-ripple-effect></ion-ripple-effect>\r\n          </button>\r\n        </div>\r\n        <div class=\"toolbar-right-item\">\r\n          <app-zworkflowbuttons *ngIf=\"gridBtn && gridBtn.Type === 'zworkflowbuttons'\" [data]=\"gridBtn\" [group]=\"group\" [form]=\"form\"></app-zworkflowbuttons>\r\n          <app-zbuttons *ngIf=\"gridBtn && gridBtn.Type === 'zbuttons'\" [data]=\"gridBtn\" [group]=\"group\" [form]=\"form\"></app-zbuttons>\r\n          <button class=\"ion-activatable ripple-parent k-button\" kendoTreeListExcelCommand\r\n                  *ngIf=\"data.AllowExport\">\r\n            <span class=\"k-icon k-i-download\"></span>\r\n            <ion-ripple-effect></ion-ripple-effect>\r\n          </button>\r\n        </div>\r\n      </ng-template>\r\n      <!--\r\n        [filterable]=\"options.filterable\"\r\n      [reorderable]=\"options.resizable\"\r\n        -->\r\n      <ng-container *ngFor=\"let col of options.columns; index as i\">\r\n        <kendo-treelist-column *ngIf=\"!col.command\" [class]=\"col.class\" [expandable]=\"i===0\" [field]=\"col.field\"\r\n                               [title]=\"col.title || col.field\" [width]=\"col.width || 250\" [filterable]=\"filterable(col.enableFiltering)\"\r\n                               [sortable]=\"sortable(col.enableSorting)\" [hidden]=\"!isColumnsVisible(col.visible)\" [style]=\"getGridColumnStyle()\" class=\"e1tag-style3\"\r\n                               [headerStyle]=\"getGridHeaderStyle()\" headerClass=\"e1tag-style4\" [footerStyle]=\"getGridFooterStyle()\" footerClass=\"e1tag-style9\">\r\n          <div [ngSwitch]=\"true\">\r\n            <div *ngSwitchCase=\"col.fieldType === 'number'\r\n               || col.fieldType === 'currency'\r\n               || col.fieldType === 'znumeric'\">\r\n              <ng-template kendoTreeListFilterCellTemplate let-filter let-column=\"column\">\r\n                <kendo-treelist-numeric-filter-cell [showOperators]=\"data.IsShowGridFilterOperator\" [column]=\"column\" [filter]=\"filter\" operator=\"eq\">\r\n                  <kendo-filter-eq-operator></kendo-filter-eq-operator>\r\n                  <kendo-filter-neq-operator></kendo-filter-neq-operator>\r\n                  <kendo-filter-lt-operator></kendo-filter-lt-operator>\r\n                  <kendo-filter-lte-operator></kendo-filter-lte-operator>\r\n                  <kendo-filter-gt-operator></kendo-filter-gt-operator>\r\n                  <kendo-filter-gte-operator></kendo-filter-gte-operator>\r\n                  <kendo-filter-isnull-operator></kendo-filter-isnull-operator>\r\n                  <kendo-filter-isnotnull-operator></kendo-filter-isnotnull-operator>\r\n                </kendo-treelist-numeric-filter-cell>\r\n              </ng-template>\r\n            </div>\r\n            <div *ngSwitchCase=\"col.fieldType == 'zdate'\r\n               || col.fieldType === 'zdatetime'\r\n               || col.fieldType === 'zuidatetime'\">\r\n              <div *ngIf=\"col.filterByDateRange === true\">\r\n                <ng-template kendoTreeListFilterCellTemplate let-filter let-column=\"column\" operator=\"lte\">\r\n                  <date-range-filter-cell [showOperators]=\"data.IsShowGridFilterOperator\" class=\"date-range-filter\" [filter]=\"filter\" [field]=\"col.field\">\r\n                    <kendo-treelist-filter-lt-operator></kendo-treelist-filter-lt-operator>\r\n                    <kendo-treelist-filter-lte-operator></kendo-treelist-filter-lte-operator>\r\n                    <kendo-treelist-filter-gt-operator></kendo-treelist-filter-gt-operator>\r\n                    <kendo-treelist-filter-gte-operator></kendo-treelist-filter-gte-operator>\r\n                    <kendo-treelist-filter-isnull-operator></kendo-treelist-filter-isnull-operator>\r\n                    <kendo-treelist-filter-isnotnull-operator></kendo-treelist-filter-isnotnull-operator>\r\n                  </date-range-filter-cell>\r\n                </ng-template>\r\n              </div>\r\n              <div *ngIf=\"!col.filterByDateRange\">\r\n                <ng-template kendoTreeListFilterCellTemplate let-filter let-column=\"column\">\r\n                  <kendo-treelist-date-filter-cell [showOperators]=\"data.IsShowGridFilterOperator\" [column]=\"column\" [filter]=\"filter\" operator=\"lte\" format=\"dd-MM-yyyy\">\r\n                    <kendo-treelist-filter-lt-operator></kendo-treelist-filter-lt-operator>\r\n                    <kendo-treelist-filter-lte-operator></kendo-treelist-filter-lte-operator>\r\n                    <kendo-treelist-filter-gt-operator></kendo-treelist-filter-gt-operator>\r\n                    <kendo-treelist-filter-gte-operator></kendo-treelist-filter-gte-operator>\r\n                    <kendo-treelist-filter-isnull-operator></kendo-treelist-filter-isnull-operator>\r\n                    <kendo-treelist-filter-isnotnull-operator></kendo-treelist-filter-isnotnull-operator>\r\n                  </kendo-treelist-date-filter-cell>\r\n                </ng-template>\r\n              </div>\r\n            </div>\r\n            <div *ngSwitchDefault>\r\n              <ng-template kendoTreeListFilterCellTemplate let-filter let-column=\"column\">\r\n                <kendo-treelist-string-filter-cell [showOperators]=\"data.IsShowGridFilterOperator\" [column]=\"column\" [filter]=\"filter\" operator=\"contains\">\r\n                  <kendo-treelist-filter-contains-operator></kendo-treelist-filter-contains-operator>\r\n                  <kendo-treelist-filter-eq-operator></kendo-treelist-filter-eq-operator>\r\n                  <kendo-treelist-filter-neq-operator></kendo-treelist-filter-neq-operator>\r\n                  <kendo-treelist-filter-startswith-operator></kendo-treelist-filter-startswith-operator>\r\n                  <kendo-treelist-filter-endswith-operator></kendo-treelist-filter-endswith-operator>\r\n                  <kendo-treelist-filter-isnull-operator></kendo-treelist-filter-isnull-operator>\r\n                  <kendo-treelist-filter-isnotnull-operator></kendo-treelist-filter-isnotnull-operator>\r\n                </kendo-treelist-string-filter-cell>\r\n              </ng-template>\r\n            </div>\r\n          </div>\r\n          <ng-template kendoTreeListCellTemplate let-dataItem let-rowIndex=\"rowIndex\" let-cellContext=\"cellContext\">\r\n            <div style=\"margin: 7px 0;display: inline;\" [style.color]=\"(!!dataItem.Color ? [dataItem.Color] : 'black')\"\r\n                 *ngIf=\"!col.navigateTo && col.isEditableInGrid !== true\" [ngSwitch]=\"col.fieldType\"\r\n                 [ngClass]=\"getColClass(dataItem, col)\" [style]=\"getCellStyle(col, dataItem)\" [attr.data-id]=\"dataItem.Id\" [attr.column-name]=\"col.field\"\r\n                 (mouseenter)=\"showPopOver(col, $event)\" (mouseleave)=\"closePopOver($event)\">\r\n              <span *ngSwitchCase=\"'zdate'\" class=\"grid-cell-data\">\r\n                {{ dataItem[col.field] | date: 'dd/MM/yyyy' }}\r\n              </span>\r\n              <span *ngSwitchCase=\"'zshortdate'\" class=\"grid-cell-data\">\r\n                {{ dataItem[col.field] | date: 'MMM yyyy' }}\r\n              </span>\r\n              <span *ngSwitchCase=\"'zdatetime'\" class=\"grid-cell-data\">\r\n                {{ dataItem[col.field] | date: 'dd/MM/yyyy hh:mm:ss aa' }}\r\n              </span>\r\n              <span *ngSwitchCase=\"'zuidatetime'\" class=\"grid-cell-data\">\r\n                {{ dataItem[col.field] | date: 'dd/MM/yyyy hh:mm:ss aa' }}\r\n              </span>\r\n              <span *ngSwitchCase=\"'sfdatetimepicker'\" class=\"grid-cell-data\">\r\n                {{ dataItem[col.field] | date: 'dd/MM/yyyy hh:mm:ss aa' }}\r\n              </span>\r\n              <span *ngSwitchCase=\"'number'\" class=\"grid-cell-data\">\r\n                <div style=\"text-align:right;\">{{ dataItem[col.field] | number }} </div>\r\n              </span>\r\n              <span *ngSwitchCase=\"'currency'\" class=\"grid-cell-data\">\r\n                <div style=\"text-align:right;\">{{ dataItem[col.field] | number: '1.2-2' }}</div>\r\n              </span>\r\n              <span *ngSwitchCase=\"'znumeric'\" class=\"grid-cell-data\">\r\n                <div style=\"text-align:right;\">{{ dataItem[col.field] | number: getFormat(col) }}</div>\r\n              </span>\r\n              <span *ngSwitchCase=\"'url'\" style=\"color: blue; cursor: pointer; text-decoration:underline;\" class=\"grid-cell-data\">\r\n                {{ dataItem[col.field] }}\r\n              </span>\r\n              <span *ngSwitchCase=\"'zlabel'\" class=\"grid-cell-data\">\r\n                <div class=\"ztree-inline-block e1tag-style10\" [style]=\"componentProperties.style.style10\" [innerHTML]=\"dataItem[col.field] | htmlSanitize\"></div>\r\n              </span>\r\n               <ng-container *ngIf=\"!col.gridCellReplaceValue\">\r\n                <span *ngSwitchDefault>\r\n                  <ng-container [ngSwitch]=\"cellStyleCondition(col, dataItem[col.field])\">\r\n                    <ng-container *ngSwitchCase=\"true\">\r\n                      <div class=\"cellStyleConditionDefault\" [style]=\"setCellStyleCondition(col, dataItem[col.field])\">\r\n                        <span class=\"grid-cell-data\">{{ dataItem[col.field] }}</span>\r\n                      </div>\r\n                    </ng-container>\r\n                    <ng-container *ngSwitchDefault>\r\n                      <span class=\"grid-cell-data\">{{ dataItem[col.field] }}</span>\r\n                    </ng-container>\r\n                  </ng-container>\r\n                </span>\r\n              </ng-container>\r\n            </div>\r\n            <div style=\"margin: 7px 0;display: inline;\" [style.color]=\"(!!dataItem.Color ? [dataItem.Color] : 'black')\"\r\n                 *ngIf=\"!col.navigateTo && col.isEditableInGrid === true && isInlineEditColVisible(dataItem, col)\"\r\n                 [ngClass]=\"getColClass(dataItem, col)\" [style]=\"componentProperties.style.style5\" class=\"e1tag-style5\"  [style]=\"getCellStyleForInlineEdit(col, dataItem, rowIndex)\">\r\n              <app-zinput-container [data]=\"getInlineField(col.field)\" [group]=\"group\"\r\n                                    [form]=\"getInlineForm(dataItem, rowIndex)\" [containerField]=\"containerField\" [style]=\"componentProperties.style.style6\"\r\n                                    class=\"e1tag-style6\">\r\n              </app-zinput-container>\r\n            </div>\r\n            <span *ngIf=\"!!col.navigateTo\" (click)=\"onNavigateTo($event, col, dataItem, dataItem[col.field])\">\r\n              <ion-button color=\"light\" size=\"small\">\r\n                {{ dataItem[col.field] }}\r\n                <!-- <ion-icon slot= \"end\" name=\"arrow-forward\"></ion-icon> -->\r\n                <fa-icon slot=\"end\" [icon]=\"'arrow-right'\"></fa-icon>\r\n              </ion-button>\r\n            </span>\r\n          </ng-template>\r\n          <ng-template *ngIf=\"col.footerTemplate\" kendoTreeListFooterTemplate let-aggregates=\"aggregates\">\r\n            <div *ngIf=\"!col.navigateTo\" [ngSwitch]=\"col.fieldType\" [style]=\"componentProperties.style.style7\"\r\n                 [ngClass]=\"{'rightAligned': col.fieldType === 'number' || col.fieldType === 'currency'}\" class=\"e1tag-style7\">\r\n              <span *ngSwitchCase=\"'number'\">\r\n                <b>\r\n                  {{ col.aggregateTitle | titlecase }} {{ aggregates[col.field][col.aggregateType] | number }}\r\n                </b>\r\n              </span>\r\n              <span *ngSwitchCase=\"'currency'\">\r\n                <b>\r\n                  {{ col.aggregateTitle | titlecase }} {{ aggregates[col.field][col.aggregateType] | number: '1.2-2' }}\r\n                </b>\r\n              </span>\r\n            </div>\r\n          </ng-template>\r\n        </kendo-treelist-column>\r\n        <kendo-treelist-command-column *ngIf=\"!!col.command\" [title]=\"col.title || col.field\"\r\n                                       [width]=\"col.width || 250\" [style]=\"componentProperties.style.style8\" class=\"e1tag-style8\">\r\n          <ng-template kendoTreeListCellTemplate let-cellContext=\"cellContext\">\r\n            <div [ngClass]=\"col.class\">\r\n              <button *ngFor=\"let col2 of col.command; index as i\" type=\"button\"\r\n                      [kendoTreeListEditCommand]=\"cellContext\" [title]=\"col2.text\" (click)=\"buttonClick(col2, cellContext)\"\r\n                      [hidden]=\"isButtonHidden(col2, cellContext)\">\r\n                <fa-icon [icon]=\"col2.icon\" [style.color]=\"(!!col2.color ? [col2.color] : 'black')\">\r\n                </fa-icon>\r\n                <div *ngIf=\"col2.ShowLabel === undefined || col2.ShowLabel\">{{col2.text}}</div>\r\n              </button>\r\n            </div>\r\n          </ng-template>\r\n        </kendo-treelist-command-column>\r\n      </ng-container>\r\n\r\n      <!-- <kendo-treelist-command-column width=\"140\">\r\n          <ng-template kendoTreeListCellTemplate let-isNew=\"isNew\" let-cellContext=\"cellContext\">\r\n              <button [kendoTreeListAddCommand]=\"cellContext\"\r\n                      icon=\"filter-add-expression\" title=\"Add Child\">\r\n              </button>\r\n              <button [kendoTreeListCancelCommand]=\"cellContext\"\r\n                      icon=\"cancel\" title=\"{{ isNew ? 'Discard changes' : 'Cancel' }}\">\r\n              </button>\r\n          </ng-template>\r\n      </kendo-treelist-command-column> -->\r\n      </kendo-treelist>\r\n      <app-context-menu [data]=\"data\" [group]=\"group\" [form]=\"form\" #dataitemcontextmenu></app-context-menu>\r\n    </div>\r\n  </div>\r\n</div>\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\n\r\n/********** Component & Service **********/\r\nimport {\r\n  ZComponent, ZComponentHelper, ZComponentProperties, ZField, ZGroup\r\n} from 'mmhglobal-zcore';\r\nimport { ContainerFieldBase } from '../components/containerfieldbase.component';\r\nimport { ZComponentService } from \"../services/zcomponent.service\";\r\n\r\n\r\n@Component({\r\n  selector: 'app-ztrendcard',\r\n  templateUrl: './ztrendcard.component.html',\r\n  styleUrls: ['./ztrendcard.component.scss'],\r\n})\r\n\r\nexport class ZtrendcardComponent extends ContainerFieldBase implements ZComponent, OnInit {\r\n  @Input() data: ZField;\r\n  @Input() group: ZGroup;\r\n  @Input() form: FormGroup;\r\n\r\n  isLoading = true;\r\n  componentProperties = new ZComponentProperties();\r\n  private title = \"Undefined\";\r\n  private header = \"\";\r\n  private icon = \"address-card\";\r\n  private color = \"#000000\";\r\n  private value = 0;\r\n  iconColumnSize = 4;\r\n  valueColumnSize = 4;\r\n  private background=\"#f2f2f3\";\r\n\r\n  options = {\r\n    title: this.title,\r\n    header: this.header,\r\n    icon: this.icon,\r\n    color: this.color,\r\n    value: this.value,\r\n    background: this.background,\r\n  };\r\n\r\n//  fieldElement01 = [\r\n//   {\"Name\": \"myTrendCard1\",\r\n//   \"Value\": \"group.myTrendCard01Value\",\r\n//   \"Type\": \"ztrendcard\",\r\n//   \"Visible\": \"true\",\r\n//   \"DivClass\": \"col-md-3 col-lg-3\",\r\n//   \"AppendDivClearFix\": false,\r\n//   \"Title\": \"Upcoming Call/Follow-Up Call\",\r\n//   \"Header\": \"Module Name: ABC Entry\",\r\n//   \"Icon\": \"phone\",\r\n//   \"Color\": \"#F7BC46\",\r\n// }];\r\n\r\n  constructor(\r\n    public componentService: ZComponentService\r\n  ) {\r\n    super(componentService);\r\n  }\r\n\r\n  ngOnInit() {\r\n    ZComponentHelper.setComponentProperties(this);\r\n    ZComponentHelper.registerComponent(this);\r\n\r\n    if (this.data.Options) {\r\n      const optionType = typeof (this.data.Options);\r\n      if (optionType === 'object') {\r\n        Object.assign(this.options, this.data.Options);\r\n      } else if (optionType === 'string') {\r\n        const optionValue = ZComponentHelper.getGroupEvalValue.call(this, this.data.Options);\r\n        if (typeof (optionValue) === 'object') {\r\n          Object.assign(this.options, optionValue);\r\n        }\r\n      }\r\n    }\r\n \r\n    const ratio = this.data['InnerRatio'] ? this.data['InnerRatio'].split(':').map(val => val.trim()) : null;\r\n\r\n    if (ratio) {\r\n      if (ratio.length === 2) {\r\n        // When there are two values, assign them directly\r\n        this.iconColumnSize = parseInt(ratio[0]);  // 4 for iconColumnSize\r\n        this.valueColumnSize = parseInt(ratio[1]); // 8 for valueColumnSize\r\n      } \r\n      else if (ratio && ratio.length === 1) {\r\n        // If only one value is provided, split evenly\r\n        this.iconColumnSize = this.valueColumnSize = parseInt(ratio[0]);\r\n      }\r\n    }\r\n\r\n    this.getFieldDeclarationForSetup(this.data, this.options);\r\n    this.isLoading = false;\r\n\r\n  }\r\n\r\n  private getFieldDeclarationForSetup(field: ZField, options: any) {\r\n    options.header = ZComponentHelper.getGroupEvalValue.call(this, field.Header) || '';\r\n    options.title = ZComponentHelper.getGroupEvalValue.call(this, field.Title) || '';\r\n    options.icon = ZComponentHelper.getGroupEvalValue.call(this, field.Icon) || options.icon;\r\n    options.color = ZComponentHelper.getGroupEvalValue.call(this, field.Color) || options.color;\r\n\r\n    //before bind new value, reset to zero first. to prevent data not updated.\r\n    options.value = ZComponentHelper.getGroupEvalValue.call(this, field.Value) ?? options.value;\r\n\r\n    options.background = ZComponentHelper.getGroupEvalValue.call(this, field.Background) || options.background;\r\n  }\r\n\r\n  public setEnable = (status: boolean) => {\r\n    // const fc = this.group.form.controls[this.data.Value];\r\n    // status ? fc.enable() : fc.disable();\r\n    this.componentProperties.isReadOnly = !status;\r\n  }\r\n\r\n  public setVisible = (status: boolean) => {\r\n    this.componentProperties.isVisible = status;\r\n    this.data.Visible = status;\r\n  }\r\n\r\n  public setRequire = (status: boolean) => {\r\n    this.componentProperties.isRequired = status;\r\n  }\r\n\r\n  public setData = (gData: any) => {\r\n    if(!gData)\r\n    {\r\n      this.options.value=0;\r\n    }\r\n    this.getFieldDeclarationForSetup(this.data, this.options);\r\n  }\r\n\r\n}\r\n","<div *ngIf=\"!isLoading && (!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\" style=\"text-align: center;\" (click)=\"onClick($event)\" >\r\n  <ion-grid>\r\n    <ion-row>\r\n      <ion-col>\r\n        <!-- <div class=\"trend-btn ion-activatable ripple-parent\" [routerLink]=\"[item.URL]\"> -->\r\n        <div class=\"trend-btn ion-activatable ripple-parent\" [style.background]=\"options.background\">\r\n          <ion-label [style]=\"componentProperties.style.style\" class=\"trend-header-label\">{{ options.header }}</ion-label>\r\n          <ion-label>\r\n            <ion-grid style=\"width: 100%;\">\r\n              <ion-row>\r\n                <ion-col class=\"trend-btn-icon\" [sizeLg]=\"iconColumnSize\" [sizeXs]=\"iconColumnSize\" [sizeMd]=\"iconColumnSize\" [sizeXl]=\"iconColumnSize\">\r\n                  <fa-icon [icon]=\"options.icon\" [style.color]=\"options.color\"></fa-icon>\r\n                </ion-col>\r\n                <ion-col class=\"trend-btn-value\" [sizeLg]=\"valueColumnSize\" [sizeXs]=\"valueColumnSize\" [sizeMd]=\"valueColumnSize\" [sizeXl]=\"valueColumnSize\">\r\n                  <ion-label [style]=\"componentProperties.style.style1\">{{ options.value }}</ion-label><br/>\r\n                </ion-col>\r\n              </ion-row>\r\n            </ion-grid>\r\n          </ion-label>\r\n          <ion-label [style]=\"componentProperties.style.style2\" class=\"trend-btn-label\">{{ options.title }}</ion-label>\r\n          <ion-ripple-effect></ion-ripple-effect>\r\n        </div>\r\n      </ion-col>\r\n    </ion-row>\r\n  </ion-grid>\r\n</div>\r\n<!--<div style=\"padding-bottom: 10px;\"></div>-->\r\n\r\n\r\n\r\n\r\n\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\n\r\n/********** Component & Service **********/\r\nimport { ZComponent, ZGroup, ZField } from 'mmhglobal-zcore';\r\n\r\n\r\n@Component({\r\n  selector: 'app-zunknown',\r\n  templateUrl: './zunknown.component.html',\r\n  styleUrls: ['./zunknown.component.scss'],\r\n})\r\nexport class ZunknownComponent implements ZComponent, OnInit {\r\n  @Input() data: ZField;\r\n  @Input() group: ZGroup;\r\n  @Input() form: FormGroup;\r\n\r\n  constructor() { }\r\n\r\n  ngOnInit() {}\r\n\r\n}\r\n","<p>\r\n  Unknown field Type => {{ data.Type}} >> {{data.Name}}\r\n</p>\r\n","/********** Angular **********/\r\nimport { Component, OnInit, Input, ChangeDetectorRef } from \"@angular/core\";\r\nimport { FormControl, FormGroup, ValidatorFn, Validators } from \"@angular/forms\";\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { AsyncSubject, forkJoin, Observable, of, Subscription } from \"rxjs\";\r\nimport { concatMap, map, switchMap, tap } from \"rxjs/operators\";\r\n\r\n/********** Component & Service **********/\r\nimport {\r\n  ZComponent, ZField,\r\n  AlertService, AuthService, FieldService, ToastService,\r\n  ZGroup, ZComponentProperties, ZComponentHelper, ComponentErrorHandlerService, FormType, ResourceApiService,\r\n  AssetsAllowedExtension, AssetsFolder, AssetsNodeParam, AssetsRoutes, WebApiService\r\n} from 'mmhglobal-zcore';\r\nimport { ZGrid } from \"../zgrid/zgrid.component\";\r\nimport { ContainerFieldBase } from \"../components/containerfieldbase.component\";\r\nimport { ZComponentService } from \"../services/zcomponent.service\";\r\nimport { HttpParams } from \"@angular/common/http\";\r\n\r\n\r\n@Component({\r\n  selector: 'app-zudf',\r\n  templateUrl: './zudf.component.html',\r\n  styleUrls: ['./zudf.component.scss'],\r\n})\r\nexport class ZudfComponent extends ContainerFieldBase implements ZComponent, OnInit {\r\n\r\n  // formFields: any[]; // populate using field element.\r\n  componentProperties = new ZComponentProperties();\r\n  initialDataValue: any;\r\n  componentPrefix: string;\r\n  componentScopeName: string;\r\n  displayElementModel: any;\r\n  multiValueGroupGridValue: string[];\r\n  loadedFieldsSequence: any;\r\n  private subscription: Subscription;\r\n\r\n  public readonly prefixValueOption = '_zudfmvgOptions';\r\n  public readonly prefixDataSourceName = '_zudfmvgDataSource';\r\n  public readonly prefixColumnFieldsName = '_zudfmvgColumnFields';\r\n  public readonly prefixCustomAddButtonOnClick = '_CustomAddButtonOnClick';\r\n  public readonly prefixCustomResetButtonOnClick = '_CustomResetButtonOnClick';\r\n  public readonly prefixCustomRemoveButtonOnClick = '_CustomRemoveButtonOnClick';\r\n\r\n  constructor(\r\n    public componentService: ZComponentService,\r\n    private fieldService: FieldService,\r\n    private toastService: ToastService,\r\n    private webApiService: WebApiService,\r\n    private componentErrorHandlerService: ComponentErrorHandlerService,\r\n    private resourceApiService: ResourceApiService,\r\n    private cdr: ChangeDetectorRef\r\n  ) {\r\n    super(componentService)\r\n  }\r\n\r\n  ngOnInit() {\r\n    let obs: Observable<any> = of(this.data.Value);\r\n\r\n    if (this.data.Value == undefined && this.data.FieldElementCode) {\r\n      const fieldName = ZComponentHelper.getGroupValue(this.data.FieldElementCode, this.group);\r\n      const fieldFormType = ZComponentHelper.getGroupValue(this.data.FieldElementFormType, this.group);\r\n      const formResource = this.resourceApiService.getCustomResource(this.data.CustomResource);\r\n      let isLoadViaAsset = false;\r\n      if (this.data.loadViaAsset != undefined) {\r\n        if (typeof this.data.loadViaAsset == 'string' && this.data.loadViaAsset.startsWith('group.')) {\r\n          isLoadViaAsset = ZComponentHelper.getGroupValue(this.data.loadViaAsset, this.group);\r\n        }\r\n        else {\r\n          isLoadViaAsset = this.data.loadViaAsset as boolean;\r\n        }\r\n      }\r\n\r\n      if (fieldName) {\r\n        if (isLoadViaAsset) {\r\n          obs = this.getFieldElement_FormPage(fieldName, fieldFormType).pipe(\r\n            map(fieldElement => {\r\n              if (fieldElement) {\r\n                return fieldElement.Code;\r\n              }\r\n              return [];\r\n            })\r\n          );\r\n        }\r\n        else {\r\n          if (fieldFormType && fieldFormType == FormType.listField) {\r\n            obs = this.fieldService.getListFieldByFieldElementName(fieldName, formResource);\r\n          }\r\n          else {\r\n            obs = this.fieldService.getFormFieldCode(fieldName, 'FormField', this, 'fields', null, formResource);\r\n          }\r\n        }\r\n      }\r\n    }\r\n\r\n    super.initComponent().pipe(\r\n      switchMap(() => obs),\r\n      switchMap((field) => {\r\n        if (this.data.FieldElementCode) {\r\n          // use obs value only if FieldElementCode is set. if not default as null.\r\n          this.data.Value = field;\r\n        }\r\n        else {\r\n          this.data.Value = null;\r\n        }\r\n\r\n        // Store initial data value and set component scope and prefix\r\n        this.initialDataValue = this.data.Value;\r\n        this.componentScopeName = 'zudf_' + this.data.Name;\r\n        this.componentPrefix = 'zudf_' + this.data.Name;\r\n\r\n        this.group[this.data.Name + 'Model'] = [];\r\n        return this.loadForm();\r\n      }),\r\n      tap(() => {\r\n        this.isLoading = false;\r\n      })\r\n    ).subscribe();\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    if (this.subscription) {\r\n      this.subscription.unsubscribe();\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Renders the field element and sets up the form.\r\n   */\r\n  private loadForm(): Observable<any> {\r\n    return of(true).pipe(\r\n      // Set the SubType to 'zudf'.\r\n      tap(() => {\r\n        this.data.SubType = 'zudf';\r\n      }),\r\n      // Create a new group for the field and set up the form.\r\n      tap(() => {\r\n        // Create a new ZGroup for the field if one doesn't already exist.\r\n        if (!this.group[this.componentScopeName]) {\r\n          this.group[this.componentScopeName] = new ZGroup();\r\n        }\r\n\r\n        // Declare a new zModel object for the ZGroup.\r\n        const zudfScopeGroup = this.group[this.componentScopeName];\r\n        zudfScopeGroup.zModel = {};\r\n\r\n        // Render the field element.\r\n        this.renderFieldElement(this.data.Value);\r\n\r\n        // Set the form for the ZGroup scope.\r\n        if (this.data.Value) {\r\n          // If Value is not null, bind the existing form.\r\n          zudfScopeGroup.form = this.form;\r\n        } else {\r\n          // If Value is null, create a new form with an empty form control.\r\n          const formControl: { [key: string]: FormControl } = {};\r\n          zudfScopeGroup.form = new FormGroup(formControl);\r\n        }\r\n      }),\r\n      // Set the formFields property for display.\r\n      tap(() => {\r\n        // this.formFields = Object.assign([], this.data.Value);\r\n\r\n        ZComponentHelper.appendConsoleWatchList(this.group, `group.${this.componentScopeName}.zModel`);\r\n\r\n        // Call the after<Field>Loaded function if it exists in the group.\r\n        const fieldName = 'after' + (this.data.Name.charAt(0).toUpperCase() + this.data.Name.slice(1)) + 'Loaded';\r\n        if (this.group) {\r\n          if (this.group[fieldName]) {\r\n            this.group[fieldName](this.group);\r\n          }\r\n        }\r\n\r\n        // set Field div class\r\n        // Replaced with: this.fieldService.patchFieldProperty(field);\r\n        // ZComponentHelper.setFieldsDivClass(this.group._projectName, this.group.fieldName, this.data, this.authService);\r\n      })\r\n    );\r\n  }\r\n\r\n  public setFormControlValidation(formControlName: string, validator: any) {\r\n    debugger;\r\n  }\r\n\r\n  /**\r\n   * Renders field elements based on a JSON string.\r\n   * @param group The ZGroup object to which the field elements will be added.\r\n   * @param jsonString The JSON string representing the field elements.\r\n   */\r\n  public renderFieldElementByJsonString(group: ZGroup, jsonString: string, fieldElementName: string = ''): void {\r\n    // Parse the JSON string into an array of field elements.\r\n    const fieldElementMasterCodeJsonArray = JSON.parse(jsonString);\r\n\r\n    // Render the field elements.\r\n    this.renderFieldElement(fieldElementMasterCodeJsonArray, fieldElementName);\r\n  }\r\n\r\n  //#region Display model\r\n  /**\r\n   * Sets the display model for a zudf (zero-utility data field) element.\r\n   *\r\n   * @param {any} value - The value to use for the display model.\r\n   */\r\n  public setDisplayModel(value: any) {\r\n    // Replace the whole display model with the new value\r\n    if (value) {\r\n      // Clear the form control\r\n      this.clearFormControl();\r\n\r\n      // Make a deep copy of the value to avoid any unwanted reference errors\r\n      this.displayElementModel = ZComponentHelper.deepClone(value);\r\n\r\n      // Render the field element based on the new display model\r\n      this.renderFieldElement(this.displayElementModel);\r\n    }\r\n    else {\r\n      // If the value is invalid, log a warning message\r\n      console.warn('Invalid value used for render zudf ' + this.data.Name);\r\n    }\r\n  }\r\n\r\n  /**\r\n  * Updates a value in the display element model at the specified flat index.\r\n  * @param {*} value - The new value to be set.\r\n  * @param {string} flatIndex - The flat index indicating the location in the display element model where the value should be updated.\r\n  */\r\n  public updateDisplayModel(value: any, flatIndex: string) {\r\n    ZComponentHelper.updateArrayObjectByFlatIndex(this.displayElementModel, flatIndex, value);\r\n    this.updateFormField();\r\n    //this.cdr.detectChanges();\r\n  }\r\n\r\n  /**\r\n  * Appends a value to the display element model at the specified flat index.\r\n  * @param {*} value - The value to be appended.\r\n  * @param {string} flatIndex - The flat index indicating the location in the display element model where the value should be appended.\r\n  */\r\n  public appendToDisplayModel(value: any, flatIndex: string) {\r\n    // Append to display model means it will insert the form control based on flat index.\r\n    if (flatIndex.length >= 3) {\r\n      flatIndex.substring(0, flatIndex.length - 2);\r\n    }\r\n\r\n    const selectedRecord = ZComponentHelper.getFromArrayObjectByFlatIndex(this.displayElementModel, flatIndex);\r\n    selectedRecord.Value.push(value);\r\n  }\r\n\r\n  /**\r\n   * Returns a deep copy of the display element model.\r\n   * @returns {any} A deep copy of the display element model.\r\n   */\r\n  public getDisplayModel() {\r\n    return JSON.parse(JSON.stringify(this.displayElementModel));\r\n  }\r\n\r\n  /**\r\n   * Removes all elements from the display element model and clears the form control.\r\n   */\r\n  public removeAllDisplayModel() {\r\n    this.displayElementModel = [];\r\n    this.clearFormControl();\r\n  }\r\n\r\n  /**\r\n   * Removes an element from the display element model at the specified flat index and updates the form field.\r\n   * @param {string} flatIndex - The flat index indicating the location in the display element model where the element should be removed.\r\n   */\r\n  public removeElementFromDisplayModel(flatIndex: string) {\r\n    ZComponentHelper.removeArrayObjectByFlatIndex(this.displayElementModel, flatIndex);\r\n    this.updateFormField();\r\n\r\n    // TODO: remove from zmodel\r\n    //delete this.group[this.componentScopeName].zModel[''];\r\n  }\r\n  //#endregion\r\n\r\n  /**\r\n   * Appends a form control to the form and the display element model.\r\n   * @param {ZField} fieldData - The data for the form control to be appended.\r\n   */\r\n  public appendFormControl(fieldData) {\r\n    // Append form control means it will just insert the form control at the end.\r\n    fieldData.Name = this.generateFormControlName(fieldData.Name, fieldData['containerName']);\r\n    const formControls = {};\r\n\r\n    formControls[fieldData.Name] = new FormControl(\r\n      this.group[this.componentScopeName].zModel[fieldData.Name]\r\n    );\r\n\r\n    this.form.addControl(fieldData.Name, formControls[fieldData.Name]);\r\n\r\n    if (!this.data.Value) {\r\n      console.log('formField ' + this.data.Name + ' is undefined');\r\n    }\r\n\r\n    this.displayElementModel = this.displayElementModel ?? [];\r\n    this.displayElementModel.push(fieldData);\r\n    this.updateFormField();\r\n    this.cdr.detectChanges();\r\n  }\r\n\r\n  /**\r\n   * Renders field elements as form controls in a new form group.\r\n   * @param {any} fieldElements - The field elements to be rendered.\r\n   */\r\n  public renderFieldElement(fieldElements: any, fieldElementName: string = '') {\r\n    this.clearZModel();\r\n\r\n    if (fieldElements) {\r\n      this.loadedFieldsSequence = {};\r\n      const formControls = {};\r\n      fieldElements = this.generateFormControls(fieldElements, formControls);\r\n\r\n      // Unsubscribe from previous subscription if exists\r\n      if (this.subscription) {\r\n        this.subscription.unsubscribe();\r\n      }\r\n\r\n      // Render form controls to new form group\r\n      this.form = new FormGroup(formControls);\r\n      this.data.Value = fieldElements;\r\n      this.group[this.componentScopeName].form = this.form;\r\n      this.group[this.componentScopeName]['loadedFieldsSequence'] = this.loadedFieldsSequence;\r\n\r\n      // Subscribe to componentLoaded$ event\r\n      this.subscription = this.fieldService.getComponentLoaded$('zudf').subscribe(() => {\r\n        // All components have finished loading\r\n\r\n        const zudfGroup = this.group[this.componentScopeName];\r\n        if (zudfGroup['linkedComponent']) {\r\n          zudfGroup['linkedComponent'].forEach(item => {\r\n            const linkedComponentSegments = item.value.split('_');\r\n            const parentComponentName = linkedComponentSegments.slice(0, 2).join('_') + '_' + item.linkedComponent;\r\n            const parentComponent = ZComponentHelper.getComponentByValue(this.group, parentComponentName);\r\n            const childComponent = ZComponentHelper.getComponentByValue(this.group, item.value);\r\n\r\n            if (parentComponent && childComponent) {\r\n              const originalSelectOptions = childComponent.data['originalSelectOptions'] ?? Object.assign([], childComponent.data.SelectOptions);\r\n              const filteredSelectionOptions = originalSelectOptions.filter(option => option.parentExpression == zudfGroup.zModel[parentComponentName]);\r\n\r\n              // Manually patch the component form control value\r\n              const zudfForm = zudfGroup.form as FormGroup;\r\n              const componentFormControl = zudfForm.controls[item.value] as FormControl;\r\n              if (componentFormControl) {\r\n                childComponent.setSelectOption(filteredSelectionOptions);\r\n                componentFormControl.patchValue(zudfGroup.zModel[item.value]);\r\n\r\n                this.cdr.detectChanges();\r\n              }\r\n              else {\r\n                console.log('Unable to get formcontrol for ' + item.value);\r\n                console.log(zudfForm);\r\n              }\r\n            }\r\n          });\r\n        }\r\n\r\n        // need to call back field element \"<field name>_loaded\"\r\n        if (fieldElementName != '') {\r\n          if (this.group[fieldElementName + '_loaded']) {\r\n            this.group[fieldElementName + '_loaded'](this.group);\r\n          }\r\n        }\r\n\r\n        // To consider: Trigger the \"onchange\" event or perform any other necessary actions here\r\n      });\r\n    }\r\n  }\r\n\r\n  private generateFormControls(fieldArray: any, formControls: { [key: string]: FormControl }, containerName?: string, isMultiValueGroup = false, fieldValueGrouped = false, index = '') {\r\n    fieldArray.forEach((field, i) => {\r\n      const fieldIndex = index ? `${index}.${i + 1}` : `${i}`;\r\n\r\n      this.fieldService.patchFieldProperty(field);\r\n      if (typeof field.Value === \"string\" && field.Value.indexOf(\".\") !== -1) {\r\n        if (['zgrid', 'ztree', 'zimg', 'textareajson', 'zganttchart'].indexOf(field.Type) === -1) {\r\n          console.warn(\"FormControl - invalid field value\", field.Value);\r\n        }\r\n      }\r\n      else {\r\n        const zudfGroup = this.group[this.componentScopeName];\r\n\r\n        if (Array.isArray(field.Value)) {\r\n          // insert multivaluegroup to the card value if true\r\n          const fieldValueGrouped = field.Type == ComponentType.grouping ? true : false;\r\n          this.loadedFieldsSequence[fieldIndex] = {\r\n            name: field.MultiValuedGroup ? `${this.generateFormControlName(field.Name)}${this.prefixValueOption}` : `${this.generateFormControlName(field.Name)}`,\r\n            label: field.Title,\r\n            type: field.Type,\r\n            isMultiValueGroup: field.MultiValuedGroup ?? false,\r\n            isGrouped: false,\r\n            isVisible: field.Visible ?? false,\r\n            isRequired: field.IsRequired ?? false,\r\n            isReadOnly: field.ReadOnly ?? false,\r\n            dataSourceType: field.zudfDataSourceType ?? null //value aka manual, user, resource aka resource\r\n          };\r\n\r\n          if (field.MultiValuedGroup) {\r\n            this.setMultiValueGroup(field);\r\n          }\r\n          this.generateFormControls(field.Value, formControls, field.Name, field.MultiValuedGroup, fieldValueGrouped, fieldIndex);\r\n        }\r\n        else {\r\n          // before generate FormControl, we need to add 2 attribute to the field when render.\r\n          // this for later on, we can easily know this field belong to which zudf and under which container.\r\n          if (containerName) {\r\n            field['containerName'] = containerName;\r\n            if (!zudfGroup[containerName]) {\r\n              zudfGroup[containerName] = [];\r\n            }\r\n          }\r\n\r\n          const isFormControl = ZComponentHelper.isFormControl(field);\r\n          const isVisible = ZComponentHelper.isVisibleFormControl(this, field);\r\n          const isRequired = ZComponentHelper.isRequiredFormControl(this, field);\r\n\r\n          if (isFormControl === true) {\r\n            if (!this.loadedFieldsSequence) {\r\n              this.loadedFieldsSequence = {};\r\n            }\r\n\r\n            if (field.Type === 'zuiselectmultiple') {\r\n              this.fieldService.incrementComponentCounter('zudf');\r\n            }\r\n            field.Name = this.generateFormControlName(field.Name, containerName);\r\n            if (field.Value) {\r\n              field.Value = this.generateFormControlName(field.Value, containerName);\r\n            }\r\n\r\n            this.loadedFieldsSequence[fieldIndex] = {\r\n              name: field.Name,\r\n              label: field.Label,\r\n              type: field.Type,\r\n              isMultiValueGroup: isMultiValueGroup,\r\n              isGrouped: fieldValueGrouped,\r\n              isVisible: field.Visible ?? false,\r\n              isRequired: field.IsRequired ?? false,\r\n              isReadOnly: field.ReadOnly ?? false,\r\n              dataSourceType: field.zudfDataSourceType ?? null //value aka manual, user, resource aka resource\r\n            };\r\n\r\n            if (containerName) {\r\n              if (!zudfGroup[containerName].includes(field.Value)) {\r\n                zudfGroup[containerName].push(field.Value)\r\n              }\r\n            }\r\n\r\n            // set the list of dropdown option to the variable\r\n            if (this.isDropdownType(field.Type) && field.ZDataOptionName && field.DropdownOptions) {\r\n              this.group.zData[field.ZDataOptionName] = Object.assign([], eval('this.' + field.DropdownOptions));\r\n            }\r\n\r\n            if (this.isDropdownType(field.Type) && field.zudfLinkedComponent) {\r\n              // keep a list of linked Component, later will be used in onChange at inputfieldbase.\r\n              if (!zudfGroup['linkedComponent']) {\r\n                zudfGroup['linkedComponent'] = [];\r\n              }\r\n\r\n              zudfGroup['linkedComponent'].push({\r\n                value: field.Value,\r\n                linkedComponent: field.zudfLinkedComponent\r\n              });\r\n\r\n              // keep a copy of SelectOptions to originalSelectOptions(same as onchange)\r\n              // clear the SelectionOption since it wont be used when first init, until parent dropdown option been selected.\r\n              field['originalSelectOptions'] = Object.assign([], field.SelectOptions);\r\n              field.SelectOptions = [];\r\n            }\r\n\r\n            // auto append current user to the zmodel base on field element attribute \"zudfSetDefaultUser\"\r\n            if (field.zudfSetDefaultUser) {\r\n              if (!zudfGroup['fieldRequiredDefaultUser']) {\r\n                zudfGroup['fieldRequiredDefaultUser'] = [];\r\n              }\r\n\r\n              // keep a list of default user need to be filled in the scope\r\n              zudfGroup['fieldRequiredDefaultUser'].push({\r\n                fieldName: field.Name,\r\n                childFields: field.ChildFields\r\n              });\r\n            }\r\n\r\n            // validator for the component\r\n            const validators: ValidatorFn[] = ZComponentHelper.getValidators(field, isVisible, isRequired, this.group);\r\n            formControls[field.Value] = new FormControl(\r\n              zudfGroup.zModel[field.Value],\r\n              validators\r\n            );\r\n            if (ZComponentHelper.hasCCField(field.Type)) {\r\n              const ccValidators: ValidatorFn[] = ZComponentHelper.getCCValidators(field, isVisible, isRequired);\r\n              formControls[field.CCValue] = new FormControl(\r\n                zudfGroup.zModel[field.CCValue],\r\n                ccValidators\r\n              );\r\n            }\r\n            // onchange handling?\r\n\r\n          }\r\n        }\r\n      }\r\n    });\r\n\r\n    return fieldArray;\r\n  }\r\n\r\n  /**\r\n   * Removes the form controls from the form group and resets the component's data and display element model.\r\n   *\r\n   * @returns {void}\r\n   */\r\n  public clearFormControl() {\r\n    // Remove each form control from the form group\r\n    if (this.data.Value && this.data.Value.length > 0) {\r\n      this.data.Value.forEach(data => {\r\n        this.form.removeControl(data.Value);\r\n      });\r\n    }\r\n\r\n    // Reset the component's data and display element model\r\n    this.data.Value = this.initialDataValue;\r\n    this.displayElementModel = [];\r\n  }\r\n\r\n  /**\r\n   * Returns the form fields for the component.\r\n   *\r\n   * @returns {object[]} - An array of form field objects.\r\n   */\r\n  public getFormControl() {\r\n    return this.data.Value;\r\n  }\r\n\r\n  /**\r\n   * Sets the zModel values of a form group based on the provided model data.\r\n   *\r\n   * @param {ZGroup} [group=this.group] - The form group to update.\r\n   * @param {object} modelData - The model data to apply to the form group.\r\n   * @returns {void}\r\n   */\r\n  public setFormFieldzModel(group = this.group, modelData) {\r\n    // Add the component prefix to the model data property names\r\n    const patchedModelData = this.addZModelPropertyPrefix(modelData);\r\n\r\n    // Update the zModel values of the form group\r\n    Object.assign(group[this.componentScopeName].zModel, patchedModelData);\r\n\r\n    // Update grid values for any arrays in the model data base on kcard component.\r\n    for (const model in patchedModelData) {\r\n      if (Array.isArray(patchedModelData[model])) {\r\n        const gridValue = model.endsWith(this.prefixValueOption) ? model : `${model}${this.prefixValueOption}`;\r\n        let gridDataSource = model;\r\n\r\n        if (model.endsWith(this.prefixValueOption)) {\r\n          gridDataSource = model.slice(0, -this.prefixValueOption.length);\r\n        }\r\n\r\n        gridDataSource += this.prefixDataSourceName;\r\n        //const component = ZComponentHelper.getComponentByValue(this.group, model);\r\n        //if (component?.data?.Type === 'kcard' || component?.data?.Type === 'zgrid') {\r\n        // Update the data source for the grid\r\n        group[gridDataSource] = patchedModelData[model];\r\n\r\n        // Update the grid value\r\n        if (group[gridValue]) {\r\n          group[gridValue].setData(group[gridDataSource]);\r\n        }\r\n        else {\r\n          console.log(`Unable to find zudf gridValue: ${gridValue}`)\r\n        }\r\n        //}\r\n\r\n      }\r\n    }\r\n\r\n    // Update the form group model\r\n    const formGroup = this.form as FormGroup;\r\n    formGroup.patchValue(group[this.componentScopeName].zModel);\r\n    this.cdr.detectChanges();\r\n  }\r\n\r\n  /**\r\n * Add the component prefix to property names in an object.\r\n *\r\n * @param {*} modelData - The object to update.\r\n * @param {*} [containerPrefix] - Optional parameter indicating the prefix to use for properties in nested objects.\r\n * @returns {*} The updated object.\r\n */\r\n  private addZModelPropertyPrefix(modelData: any, containerPrefix?: any): any {\r\n    // Create a new object to store the updated data\r\n    const updatedModelData = {};\r\n\r\n    if (typeof modelData === 'string' || typeof modelData === 'number' || ZComponentHelper.isNullUndefinedEmpty(modelData)) {\r\n      return modelData;\r\n    }\r\n\r\n    // Loop through each property in the input object\r\n    for (const propertyName in modelData) {\r\n      const dataValue = modelData[propertyName];\r\n\r\n      // Check if the property value is an array\r\n      if (Array.isArray(dataValue)) {\r\n        // Handle arrays recursively\r\n        const updatedArray = [];\r\n\r\n        // Loop through each element in the array\r\n        for (const arrayElement of dataValue) {\r\n          // Recursively call this method to update the properties of each element in the array\r\n          const updatedElement = this.addZModelPropertyPrefix(arrayElement, propertyName);\r\n\r\n          // Add the updated element to the array\r\n          updatedArray.push(updatedElement);\r\n        }\r\n\r\n        // Add the updated array to the output object\r\n        let prefixedPropertyName;\r\n\r\n        if (containerPrefix) {\r\n          prefixedPropertyName = propertyName.startsWith(this.componentPrefix) ? propertyName : `${this.componentPrefix}_${containerPrefix}_${propertyName}`;\r\n        } else {\r\n          prefixedPropertyName = propertyName.startsWith(this.componentPrefix) ? propertyName : `${this.componentPrefix}_${propertyName}`;\r\n        }\r\n\r\n        updatedModelData[prefixedPropertyName] = updatedArray;\r\n      }\r\n      else if (typeof dataValue === 'object' && !dataValue) {\r\n        // Handle nested objects recursively\r\n        const updatedNestedObject = this.addZModelPropertyPrefix(dataValue, propertyName);\r\n\r\n        // Add the updated nested object to the output object\r\n        const prefixedPropertyName = propertyName.startsWith(this.componentPrefix) ? propertyName : `${this.componentPrefix}_${propertyName}`;\r\n        updatedModelData[prefixedPropertyName] = updatedNestedObject;\r\n      }\r\n      else {\r\n        // Add the property to the output object with the component prefix\r\n        let prefixedPropertyName;\r\n        if (containerPrefix) {\r\n          prefixedPropertyName = propertyName.startsWith(this.componentPrefix) ? propertyName : `${this.componentPrefix}_${containerPrefix}_${propertyName}`;\r\n        } else {\r\n          prefixedPropertyName = propertyName.startsWith(this.componentPrefix) ? propertyName : `${this.componentPrefix}_${propertyName}`;\r\n        }\r\n        updatedModelData[prefixedPropertyName] = dataValue;\r\n      }\r\n    }\r\n\r\n    // Return the updated object\r\n    return updatedModelData;\r\n  }\r\n\r\n  public getZModelAsString() {\r\n    return JSON.stringify(this.getZModel());\r\n  }\r\n\r\n  ComponentIsVisible(field: ZField): any {\r\n    return ZComponentHelper.ComponentIsVisible(field, this.group);\r\n  }\r\n\r\n  public setEnable = (status: boolean) => {\r\n    this.componentProperties.isReadOnly = !status;\r\n  }\r\n\r\n  public setVisible = (status: boolean) => {\r\n    this.componentProperties.isVisible = status;\r\n    this.data.Visible = status;\r\n  }\r\n\r\n  public setRequire = (status: boolean) => {\r\n    this.componentProperties.isRequired = status;\r\n    ZComponentHelper.changeValidator(status, this.group, this.data.Value, this.componentProperties, Validators.required);\r\n\r\n    if (this.data.Type === 'ztexteditor') {\r\n      ZComponentHelper.changeValidator(status, this.group, this.data.Value, this.componentProperties, ZComponentHelper.requiredValidator_ExcludeWhiteSpacesAndHTMLTags);\r\n    }\r\n    else {\r\n      ZComponentHelper.changeValidator(status, this.group, this.data.Value, this.componentProperties, ZComponentHelper.requiredValidator_ExcludeWhiteSpaces);\r\n    }\r\n  }\r\n\r\n  public getForm() {\r\n    return this.form;\r\n  }\r\n\r\n  /**\r\n   * Generates the name of a form control based on its type, name, and container name.\r\n   * @param {string} controlName - The name of the form control.\r\n   * @param {string} containerName - The name of the container that the form control is in.\r\n   * @returns {string} The generated name of the form control.\r\n   */\r\n  public generateFormControlName(controlName: string, containerName?: string) {\r\n    let mainPrefix = [this.data.Type, this.data.Name, containerName ?? null].filter(Boolean).join('_');\r\n    if (this.data.IsGenerateFormControlNameByContainerName != undefined && this.data.IsGenerateFormControlNameByContainerName == false) {\r\n      mainPrefix = [this.data.Type, this.data.Name].filter(Boolean).join('_');\r\n    }\r\n\r\n    // Check if name has been prefixed.\r\n    if (controlName.includes(mainPrefix)) {\r\n      return controlName;\r\n    }\r\n    else {\r\n      // We try to split the name and use the last segment.\r\n      // Sometimes the control name can be without the container name, so we split and use the new main prefix.\r\n      const controlNameSegment = controlName.split('_');\r\n      controlName = controlNameSegment[controlNameSegment.length - 1];\r\n    }\r\n\r\n    return [mainPrefix, controlName].join('_');\r\n  }\r\n\r\n  /**\r\n   * Appends a prefix to the names and values of fields recursively.\r\n   * @param {ZField[]} fields - The fields to be prefixed.\r\n   * @param {any} prefix - The prefix to be added.\r\n   */\r\n  private appendPrefix(fields: ZField[], prefix: any) {\r\n    fields.forEach(field => {\r\n      if (Array.isArray(field.Value)) {\r\n        this.appendPrefix(field.Value, prefix);\r\n      }\r\n      else {\r\n        field.Name = [prefix, field.Name].join('_');\r\n        if (field.Type != 'zbuttons') {\r\n          field.Value = [prefix, field.Value].join('_');\r\n        }\r\n        field.SubType = prefix;\r\n      }\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Updates the form fields with the display element model.\r\n   */\r\n  private updateFormField() {\r\n    this.data.Value = this.displayElementModel;\r\n  }\r\n\r\n  /**\r\n   * Get the value of a container model in the form.\r\n   * @param {string} containerName - The name of the container to retrieve the value from.\r\n   * @returns {Object} - An object containing the container model values.\r\n   */\r\n  public getContainerModelValue(containerName: string): Object {\r\n    // Get the container element and create an empty object for the model values.\r\n    const containerElement = this.group[this.componentScopeName][containerName];\r\n    const modelValue = {};\r\n\r\n    // Flag to keep track if all required fields in the group are valid.\r\n    let validGroupFields = true;\r\n\r\n    // Loop through each element in the container and retrieve its value from the zModel.\r\n    for (let i = 0; i < containerElement.length; i++) {\r\n      const element = containerElement[i];\r\n      const elementComponent = ZComponentHelper.getComponentByValue(this.group, element);\r\n      let zModelValue = this.group[this.componentScopeName].zModel[element];\r\n\r\n      // Check if the element is required and has a value, if not show an error message.\r\n      if (elementComponent.componentProperties.isRequired && ZComponentHelper.isNullUndefinedEmpty(zModelValue)) {\r\n        this.toastService.show(elementComponent.data.Label + ' is required field. Please fill in all the required fields before adding.', 'top', true, 3000, 'danger');\r\n        validGroupFields = false;\r\n        return {};\r\n      }\r\n\r\n      // Check if Dropdown Type, change zModelValue to display text.\r\n      if (this.isDropdownType(elementComponent.data.Type)) {\r\n        const dropdownOptions = elementComponent.getItemsData();\r\n        dropdownOptions.forEach(option => {\r\n          if (option[elementComponent.itemValueField] === zModelValue) {\r\n            zModelValue = option[elementComponent.itemTextField]\r\n          }\r\n        });\r\n      }\r\n\r\n      // Add the value to the model object.Please fill in all the required fields before adding\r\n      modelValue[element] = zModelValue;\r\n    };\r\n\r\n    // If there are invalid fields in the group, return an empty model object.\r\n    if (!validGroupFields) {\r\n      return {};\r\n    }\r\n\r\n    // Return the model object with the container values.\r\n    return modelValue;\r\n  }\r\n\r\n  /**\r\n  * Clears the value of all field elements inside a container.\r\n  * @param {string} containerName - The name of the container whose fields will be cleared.\r\n  */\r\n  public clearContainerFieldElementValue(containerName: string) {\r\n    // Get the container element from the component's group\r\n    const containerElement = this.group[this.componentScopeName][containerName];\r\n    // Iterate through each field element in the container\r\n    containerElement.forEach(element => {\r\n      // Set the model value of the field element to null, and force update the view\r\n      this.setModelValue(element, null, true);\r\n\r\n      const form = this.group[this.componentScopeName].form;\r\n      Object.keys(form.controls).forEach((key) => {\r\n        const control = form.controls[key];\r\n        control.markAsPristine();\r\n        control.markAsUntouched();\r\n      });\r\n    });\r\n  }\r\n\r\n  //#region ----------==================== Multi Value Group ====================----------*/\r\n  /**\r\n   * Sets up a multi-value group, which is a grid of fields that can have multiple rows.\r\n   * @param data - The configuration data for the multi-value group.\r\n   * @param dataIndex - The index of the data in the displayModel. Optional, used when updating existing data.\r\n   */\r\n  public setMultiValueGroup(data: any, dataIndex?: any) {\r\n    // Need to declare name, value, datasource, columnfields attribute for grid.\r\n    const name = this.generateFormControlName(data.Name);\r\n    const gridValueName = `${name}${this.prefixValueOption}`;\r\n    const gridDataSourceName = `${name}${this.prefixDataSourceName}`;\r\n    const gridColumnFieldsName = `${name}${this.prefixColumnFieldsName}`;\r\n\r\n    // Generate a unique name for the multi-value group scope.\r\n    const multiValueGroupScopeName = `mvg_${data.Name}`;\r\n\r\n    if (!this.group['mvglist']) {\r\n      this.group['mvglist'] = [];\r\n    }\r\n\r\n    if (!this.group['mvglist'].includes(name)) {\r\n      this.group['mvglist'].push(name);\r\n    }\r\n\r\n    // Create a property in the group object for the multi-value group.\r\n    this.group[multiValueGroupScopeName] = [];\r\n\r\n    // Store the grid value name to be used in getZModel to get the grid data.\r\n    this.multiValueGroupGridValue = this.multiValueGroupGridValue ?? [];\r\n    this.multiValueGroupGridValue.push(gridValueName);\r\n\r\n    // Manually add attributes to the grid element to speed up loading.\r\n    const element = {\r\n      \"AddCommandButtonName\": \"Add\",\r\n      \"AllowExport\": false,\r\n      \"AllowGridDataExport\": false,\r\n      \"AllowMultiSelect\": false,\r\n      \"AllowRowSelect\": false,\r\n      \"AllowSaveState\": false,\r\n      \"ColumnFields\": 'group.' + gridColumnFieldsName,\r\n      \"DataSource\": 'group.' + gridDataSourceName,\r\n      \"DisableCellClickHandler\": true,\r\n      \"DisableGenerateColumnByForm\": true,\r\n      \"DivClass\": 'col-xs-12 col-sm-12 col-md-12 col-lg-12',\r\n      \"EnableCustomAddCommand\": true,\r\n      \"EnableCustomRemoveCommand\": true,\r\n      \"EnableCustomResetCommand\": true,\r\n      \"EnableSaveGridState\": false,\r\n      \"ExternalPagination\": false,\r\n      \"HeightReduce\": 250,\r\n      \"LimitFields\": false,\r\n      \"Name\": name,\r\n      \"PageSize\": 20,\r\n      \"PageSizes\": false,\r\n      \"ResourceURL\": true,\r\n      \"SelectOptions\": false,\r\n      \"ShowGridEditButton\": false,\r\n      \"SubType\": \"zudf\",\r\n      \"Type\": \"zgrid\",\r\n      \"Value\": 'group.' + gridValueName,\r\n      \"Visible\": true,\r\n      \"WidthReduce\": 500,\r\n      \"DisableAutoAppendGridDateFilterCol\": true\r\n    }\r\n\r\n    // Create a property in the group object based on the above declaration, except Name, and also insert column fields.\r\n    // Use the grouping value as the column and skip inserting any container type.\r\n    const containerName = data.Name;\r\n    const groupFieldElements = [];\r\n\r\n    data.Value.forEach(field => {\r\n      const fieldModel = Object.assign({}, field);\r\n      fieldModel['DisplayName'] = fieldModel.Label;\r\n      fieldModel.Name = this.generateFormControlName(fieldModel['Name'], containerName);\r\n      fieldModel.Value = this.generateFormControlName(fieldModel['Value'], containerName);\r\n\r\n      groupFieldElements.push(fieldModel);\r\n\r\n      // This is for tally and remove zmodel when getmodel().\r\n      // We're not supposed to save zmodel field value since its value is supposed to be added to the grid.\r\n      this.group[multiValueGroupScopeName].push(fieldModel.Value);\r\n\r\n    });\r\n    this.group[gridDataSourceName] = [];\r\n    this.group[gridColumnFieldsName] = groupFieldElements;\r\n\r\n    // Create grid column based on field elements and insert them into the grid.\r\n    this.group[`${name}${this.prefixCustomAddButtonOnClick}`] = this.captureContainerFieldValueToModel.bind(this, this.group, gridValueName, gridDataSourceName, containerName);\r\n    this.group[`${name}${this.prefixCustomResetButtonOnClick}`] = this.clearContainerRelatedFieldValue.bind(this, this.group, containerName);\r\n    this.group[`${name}${this.prefixCustomRemoveButtonOnClick}`] = this.removeGridRow.bind(this, gridValueName, gridDataSourceName);\r\n\r\n    if (dataIndex) {\r\n      this.appendToDisplayModel(element, dataIndex);\r\n    }\r\n    else {\r\n      data.Value.push(element);\r\n    }\r\n  }\r\n\r\n  private captureContainerFieldValueToModel(group: ZGroup, gridValue: any, gridDataSource: any, containerName: string) {\r\n    const containerFieldValue = this.getContainerModelValue(containerName);\r\n    let allowToSetData = false;\r\n\r\n    for (let key in containerFieldValue) {\r\n      if (!ZComponentHelper.isNullUndefinedEmpty(containerFieldValue[key])) {\r\n        allowToSetData = true;\r\n        break; // exit the loop early since the flag is already true\r\n      }\r\n    }\r\n\r\n    if (allowToSetData && (Object.keys(containerFieldValue).length !== 0 || containerFieldValue.constructor !== Object)) {\r\n      // get container model value, set to group grid datasource\r\n      group[gridDataSource].push(containerFieldValue);\r\n\r\n      // set datasource to grid\r\n      group[gridValue].setData(this.group[gridDataSource]);\r\n\r\n      // clear container field value\r\n      this.clearContainerRelatedFieldValue(group, containerName);\r\n    }\r\n    else {\r\n      this.toastService.show('To add the record, please enter/select at least one field in this section.', 'top', true, 3000, 'warning');\r\n    }\r\n  }\r\n\r\n  private clearContainerRelatedFieldValue(group: ZGroup, containerName: string) {\r\n    // after set to grid, clear the zmodel.\r\n    this.clearContainerFieldElementValue(containerName);\r\n  }\r\n\r\n  private removeGridRow(gridValue: any, gridDataSource: any, dataItem: any, index: any) {\r\n    this.group[gridDataSource].splice(index, 1);\r\n\r\n    // set datasource to grid\r\n    this.group[gridValue].setData(this.group[gridDataSource]);\r\n  }\r\n  //#endregion\r\n\r\n  private isDropdownType(data: any) {\r\n    const componentDataType = typeof data === 'string' ? data : data.Type.toLowerCase();\r\n\r\n    if (componentDataType == ComponentType.dropdown || componentDataType == ComponentType.zuiselectmultiple || componentDataType == ComponentType.zselectmultiple) {\r\n      return true;\r\n    }\r\n\r\n    return false;\r\n  }\r\n\r\n  /**\r\n   * Validates the form and shows an error message if it is invalid.\r\n   * Returns true if the form is valid, otherwise false.\r\n   */\r\n  public validateAndShowErrorMessage() {\r\n    const fg = this.form as FormGroup;\r\n\r\n    // If the form is invalid, clear any errors in container fields and show the error message.\r\n    if (!fg.valid) {\r\n      // Loop through all the form controls and reset any errors that belong to a container field\r\n      for (const key of Object.keys(fg.controls)) {\r\n        this.setContainerFieldErrorAsNull(fg, key);\r\n      }\r\n\r\n      // Check is the formgroup value again.\r\n      if (fg.valid) {\r\n        return true;\r\n      }\r\n\r\n      // Show the error message for the form\r\n      this.componentErrorHandlerService.showFormGroupErrorMessage(this.group, fg);\r\n\r\n      // Return false to indicate that the form is not valid\r\n      return false;\r\n    }\r\n\r\n    // Return true to indicate that the form is valid\r\n    return true;\r\n  }\r\n\r\n  /**\r\n   * Resets the errors of a container field in a FormGroup.\r\n   *\r\n   * @param fg The FormGroup object containing the field.\r\n   * @param key The name of the field in the FormGroup.\r\n   */\r\n  private setContainerFieldErrorAsNull(fg: FormGroup, key: string): void {\r\n    const controlNameSegments = key.split('_');\r\n\r\n    if (controlNameSegments.length <= 3) {\r\n      // Field is not inside a container, so we skip it\r\n      return;\r\n    }\r\n\r\n    // no mvglist, direct return. dont need do anything.\r\n    if (!this.group['mvglist']) {\r\n      return;\r\n    }\r\n\r\n    // if container but not multi value group = true, we skip it.\r\n    const container = [controlNameSegments[0], controlNameSegments[1], controlNameSegments[2]].join('_');\r\n    if (!this.group['mvglist'].includes(container)) {\r\n      return;\r\n    }\r\n\r\n    const control = fg.get(key);\r\n\r\n    if (!control) {\r\n      // If the control is not inside a container, skip it.\r\n      return;\r\n    }\r\n\r\n    // return if formcontrol is valid.\r\n    if (control.status === 'VALID') {\r\n      return;\r\n    }\r\n\r\n    const controlErrors = control.errors;\r\n\r\n    if (controlErrors) {\r\n      // Set the control's errors to null.\r\n      control.setErrors(null);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Validates a form and returns its ZModel if it is valid.\r\n   * @param skipRemoveMvgFieldValue Whether to skip removing the values of mvg fields from the zModel object.\r\n   * @returns The form's ZModel if it is valid, or undefined otherwise.\r\n   */\r\n  public getValidatedFormZModel(skipRemovePrefix?: boolean, skipRemoveMvgFieldValue?: boolean) {\r\n    const isValidForm = this.validateAndShowErrorMessage();\r\n\r\n    if (isValidForm) {\r\n      return this.getZModel(skipRemovePrefix, skipRemoveMvgFieldValue);\r\n    }\r\n\r\n    return undefined;\r\n  }\r\n\r\n  /**\r\n   * Retrieves a modified version of the zModel object, with mvg (multi value group) fields removed and property prefixes removed.\r\n   * @param skipRemovePrefix Whether to skip removing the default property prefix.\r\n   * @param skipRemoveMvgFieldValue Whether to skip removing the values of mvg fields from the zModel object.\r\n   * @returns The modified zModel object.\r\n   */\r\n  public getZModel(skipRemovePrefix?: boolean, skipRemoveMvgFieldValue?: boolean) {\r\n    const zModel = this.group[this.componentScopeName].zModel;\r\n\r\n    // Loop through all properties in the zModel object.\r\n    for (const zModelProperty in zModel) {\r\n      if (Object.prototype.hasOwnProperty.call(zModel, zModelProperty)) {\r\n        const zModelPropertySegments = zModelProperty.split('_');\r\n\r\n        // Check if the property is part of a multi value group.\r\n        if (zModelPropertySegments.length > 3) {\r\n          // The third segment of the property name is the container name.\r\n          const containerName = zModelPropertySegments[2];\r\n          // Construct the name of the multi value group.\r\n          const multiValueGroupScopeName = `mvg_${containerName}`;\r\n\r\n          // If the multi value group exists and contains the property, remove the value of the property from the zModel object.\r\n          if (this.group[multiValueGroupScopeName]) {\r\n            const mvgField = this.group[multiValueGroupScopeName].find((record) => record === zModelProperty);\r\n            if (mvgField) {\r\n              zModel[zModelProperty] = skipRemoveMvgFieldValue ? zModel[zModelProperty] : null;\r\n              this.form.patchValue(zModel);\r\n            }\r\n          }\r\n        }\r\n      }\r\n    }\r\n\r\n    // important: Remove property prefixes from the zModel object if skipRemovePrefix is not true (by default remove prefix)\r\n    const patchedModelData = skipRemovePrefix ? zModel : this.removeZModelPropertyPrefix(zModel);\r\n\r\n    // If there are multi value group grid values, extract the grid data and add it to the corresponding container in the modified zModel object.\r\n    if (this.multiValueGroupGridValue) {\r\n      this.multiValueGroupGridValue.forEach((multiValueGroupGridName) => {\r\n        // Extract the container name from the grid name.\r\n        const containerName = skipRemovePrefix ? multiValueGroupGridName.split('_').join('_') : multiValueGroupGridName.split('_')[2];\r\n\r\n        // Extract the grid data and remove property prefixes if skipRemovePrefix is not true.\r\n        const multiValueGroupGrid = this.group[multiValueGroupGridName] as ZGrid;\r\n        const gridData = multiValueGroupGrid.getGridData().map((data) => skipRemovePrefix ? data : this.removeZModelPropertyPrefix(data, true));\r\n\r\n        // Add the grid data to the corresponding container in the modified zModel object.\r\n        if (gridData.length > 0) {\r\n          patchedModelData[containerName] = gridData;\r\n        }\r\n      });\r\n    }\r\n\r\n    return patchedModelData;\r\n  }\r\n\r\n  /**\r\n   * Set the value of a model in the form group.\r\n   *\r\n   * @param {string} modelName The name of the model to set.\r\n   * @param {*} modelValue The value to set for the model.\r\n   * @param {boolean} [skipPrefix] Optional parameter indicating whether to skip the component prefix.\r\n   * @returns {void}\r\n   */\r\n  public setModelValue(modelName: string, modelValue: any, skipPrefix?: boolean) {\r\n    // Get the zModel object from the form group\r\n    const zModels = this.group[this.componentScopeName].zModel;\r\n    // If skipPrefix is false or undefined, prepend the component prefix to the model name\r\n    const zModelName = skipPrefix ? modelName : this.componentPrefix + '_' + modelName;\r\n    // Set the value of the model in the zModel object\r\n    zModels[zModelName] = modelValue;\r\n\r\n    // Get the form group as a FormGroup object\r\n    let fg: FormGroup = this.group[this.componentScopeName].form as FormGroup;\r\n\r\n    // Patch the form group with the updated zModel object\r\n    fg.patchValue(zModels);\r\n  }\r\n\r\n  /**\r\n  * Remove the component prefix from property names in the zModel object.\r\n  *\r\n  * @param {*} zModel The zModel object.\r\n  * @param {boolean} [getOnlyFieldName] Optional parameter indicating whether to only return the field name without the prefix.\r\n  * @returns {*} The updated zModel object.\r\n  */\r\n  private removeZModelPropertyPrefix(zModel: any, getOnlyFieldName?: boolean) {\r\n    // Create an empty object to store the updated zModel data\r\n    const patchedModelData = {};\r\n\r\n    // Loop through each property in the zModel object\r\n    for (let prop in zModel) {\r\n      if (Object.prototype.hasOwnProperty.call(zModel, prop)) {\r\n        // Split the property name by underscores\r\n        const propSegment = prop.split('_');\r\n        // Get the property name without the component prefix\r\n        const propertyName = getOnlyFieldName ? propSegment[propSegment.length - 1] : prop.replace(this.componentPrefix + '_', '');\r\n\r\n        // Add the property to the updated zModel object\r\n        patchedModelData[propertyName] = zModel[prop];\r\n      }\r\n    }\r\n\r\n    // Return the updated zModel object\r\n    return patchedModelData;\r\n  }\r\n\r\n  /**\r\n   * Clears the zModel property of the group in the component scope and resets the multiValueGroupGridValue array.\r\n   *\r\n   * @returns {void}\r\n   */\r\n  public clearZModel() {\r\n    this.group[this.componentScopeName].zModel = {};\r\n    this.multiValueGroupGridValue = [];\r\n  }\r\n\r\n  public setMultiValueGroupButtonsEnabled(containerName: string, isEnabled: boolean) {\r\n    const result = ZComponentHelper.getComponent(this.group, `zgrid_${this.componentPrefix}_${containerName}`);\r\n    if (result) {\r\n      const properties = ['EnableCustomAddCommand', 'EnableCustomResetCommand', 'EnableCustomRemoveCommand'];\r\n      for (const prop of properties) {\r\n        result['data'][prop] = isEnabled;\r\n      }\r\n    }\r\n  }\r\n\r\n  //#region Load from local file\r\n  private getFieldElement_FormPage(fieldElementFormName: string, formType = FormType.formField): Observable<any> {\r\n    const param: AssetsNodeParam = {\r\n      assetsRoute: AssetsRoutes.fields,\r\n      assetsFolder: AssetsFolder.fieldelement,\r\n      extension: AssetsAllowedExtension.json,\r\n      params: new HttpParams()\r\n        .set('name', fieldElementFormName)\r\n        .set('type', formType)\r\n    }\r\n\r\n    return this.webApiService.assetsHttpNodeGet(param);\r\n  }\r\n  //#endregion\r\n}\r\n\r\nenum ComponentType {\r\n  text = 'text',\r\n  textarea = 'textarea',\r\n  checkbox = 'checkbox',\r\n  label = 'zlabel',\r\n  date = 'date',\r\n  zdatetime = 'zdatetime',\r\n  zuidatetime = 'zuidatetime',\r\n  number = 'number',\r\n  znumeric = 'znumeric',\r\n  email = 'email',\r\n  file = 'file',\r\n  price = 'price',\r\n  website = 'website',\r\n  dropdown = 'dropdown',\r\n  zuiselectmultiple = 'zuiselectmultiple',\r\n  zselectmultiple = 'zselectmultiple',\r\n  grouping = 'kcard',\r\n  button = 'zbuttons',\r\n  grid = 'zgrid',\r\n  slider = 'zslider'\r\n}\r\n","<div style=\"padding: 15px\" *ngIf=\"data.Title && (!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\" class=\"zudf-container\">\r\n  <kendo-card *ngIf=\"data.Title\">\r\n    <kendo-card-header>\r\n      <div>\r\n        <ion-label class=\"card-header-title\">{{data.Title}}</ion-label>\r\n      </div>\r\n    </kendo-card-header>\r\n    <kendo-card-body>\r\n      <!-- <app-zformcontrol [ngClass]=\"group[field.isVisibleField] ? field.DivClass : ((field.Visible === true) ?  field.DivClass : 'flex-hide')\"\r\n                        *ngFor=\"let field of formFields | divzlayout: data.zlayout\"\r\n                        [field]=\"field\"\r\n                        [group]=\"group\"\r\n                        [form]=\"form\"\r\n                        id=\"{{field.Name}}\">\r\n      </app-zformcontrol> -->\r\n      <app-zdiv [data]=\"data\" [form]=\"form\" [group]=\"group\" [containerField]=\"containerField\"></app-zdiv>\r\n    </kendo-card-body>\r\n  </kendo-card>\r\n</div>\r\n\r\n<div *ngIf=\"!data.Title && (!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\" [style]=\"data.Style\" class=\"zudf-container\">\r\n  <form [formGroup]=\"form\" autocomplete=\"off\" *ngIf=\"!isLoading\">\r\n    <!-- <app-zformcontrol [ngClass]=\"group[field.isVisibleField] ? field.DivClass : ((field.Visible === true) ?  field.DivClass : 'flex-hide')\"\r\n        *ngFor=\"let field of formFields | divzlayout: data.zlayout\"\r\n        [field]=\"field\"\r\n        [group]=\"group\"\r\n        [form]=\"form\"\r\n        id=\"{{field.Name}}\">\r\n    </app-zformcontrol> -->\r\n    <app-zdiv [data]=\"data\" [form]=\"form\" [group]=\"group\" [containerField]=\"containerField\"></app-zdiv>\r\n  </form>\r\n</div>\r\n","/********** Angular **********/\r\nimport { Component, OnInit } from \"@angular/core\";\r\nimport { FormControl, FormGroup } from \"@angular/forms\";\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { tap, of, switchMap } from \"rxjs\";\r\n\r\n/********** Component & Service **********/\r\nimport { ContainerFieldBase } from \"../components/containerfieldbase.component\";\r\nimport { MainService } from \"../services/main.service\";\r\nimport { ZComponentService } from \"../services/zcomponent.service\";\r\nimport {\r\n  FontAweSomeService,\r\n  DefaultMessage, ZComponent, ZComponentHelper, ZField\r\n} from \"mmhglobal-zcore\";\r\n\r\n\r\n@Component({\r\n  selector: \"app-kcard\",\r\n  templateUrl: \"./kcard.component.html\",\r\n  styleUrls: [\"./kcard.component.scss\"],\r\n})\r\n\r\nexport class KcardComponent extends ContainerFieldBase implements ZComponent, OnInit {\r\n  public myFormGroup: FormGroup;\r\n  private initValue: any;\r\n  private myModel: any;\r\n\r\n  constructor(\r\n    public componentService: ZComponentService,\r\n    private mainService: MainService,\r\n    public fontAweSomeService: FontAweSomeService\r\n  ) {\r\n    super(componentService);\r\n  }\r\n\r\n  ngOnInit() {\r\n    super.initComponent().pipe(\r\n      tap(() => {\r\n        this.componentService.setEditMode(this);\r\n        this.getFieldValues();\r\n        this.myModel = Object.assign({}, this.group.zModel);\r\n        this.isLoading = false;\r\n      }),\r\n      switchMap(() => {\r\n        if (this.data.EditButtonVisible) {\r\n          return super.translateToolBarItems();\r\n        }\r\n        return of([]);\r\n      })\r\n    ).subscribe();\r\n  }\r\n\r\n  public saveData() {\r\n    const myGroup = Object.assign({}, this.group);\r\n    myGroup.zModel = this.myModel;\r\n\r\n    this.mainService.updateModelObservable(null, myGroup, this.myFormGroup).subscribe(\r\n      {\r\n        next: (resp) => {\r\n          if (resp) {\r\n            this.initValue = this.myFormGroup.value;\r\n            this.toggleEditMode();\r\n          }\r\n        },\r\n        error: () => {\r\n          this.mainService.handleError(DefaultMessage.updateFailContactAdmin);\r\n        }\r\n      }\r\n    );\r\n  }\r\n\r\n  public cancelEdit() {\r\n    this.myFormGroup.reset(this.initValue);\r\n    for (const key of Object.keys(this.initValue)) {\r\n      ZComponentHelper.setModelValue(key, this.initValue[key], this.group, true);\r\n    }\r\n    this.toggleEditMode();\r\n  }\r\n\r\n  private getFieldValues() {\r\n    if (this.data.EditButtonVisible && Array.isArray(this.data.Value)) {\r\n      const formControls: { [key: string]: FormControl } = {};\r\n      this.getFormControls(this.data.Value, formControls);\r\n      this.myFormGroup = new FormGroup(formControls);\r\n      this.initValue = this.myFormGroup.value;\r\n\r\n      this.data = JSON.parse(JSON.stringify(this.data));\r\n    }\r\n  }\r\n\r\n  private getFormControls(fieldArray: Array<ZField>, formControls: { [key: string]: FormControl }) {\r\n    fieldArray.forEach(field => {\r\n      if (!(typeof field.Value === \"string\" && field.Value.indexOf(\".\") !== -1)) {\r\n        if (Array.isArray(field.Value)) {\r\n          this.getFormControls(field.Value, formControls);\r\n        } else if (this.form.controls[field.Value]) {\r\n          formControls[field.Value] = this.form.controls[field.Value] as any;\r\n        }\r\n      }\r\n    });\r\n  }\r\n}\r\n","<div class=\"kcard-container e1tag-container-style\"\r\n     *ngIf=\"!isLoading && (!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\"\r\n     [ngClass]=\"data.Class\" [style]=\"componentProperties.containerStyle.style\" [class]=\"data.ComponentStyleType\">\r\n  <kendo-card [ngClass]=\"getClass(null, data)\" [style]=\"componentProperties.containerStyle.style1\"\r\n              [class]=\"data.ComponentStyleType\" class=\"e1tag-container-style1\">\r\n    <kendo-card-header class=\"k-hstack card-header e1tag-container-style2\" *ngIf=\"data.Icon || data.Title\"\r\n                       [style]=\"componentProperties.containerStyle.style2\">\r\n      <div kendoCardTitle class=\"card-header-content e1tag-container-style3\" [style]=\"componentProperties.containerStyle.style3\">\r\n        <div class=\"left-panel e1tag-container-style4\" [style]=\"componentProperties.containerStyle.style4\">\r\n          <fa-icon *ngIf=\"componentProperties.icon\" class=\"card-icon e1tag-container-style6\"\r\n                   [icon]=\"getFontAwesome(componentProperties.icon.toString(), fontAweSomeService)\"\r\n                   [style]=\"componentProperties.containerStyle.style6\"></fa-icon>\r\n          <ion-label *ngIf=\"componentProperties.title\" class=\"card-title e1tag-container-style7\"\r\n                     [style]=\"componentProperties.containerStyle.style7\">{{componentProperties.title}}</ion-label>\r\n        </div>\r\n        <div class=\"right-panel e1tag-container-style5\" *ngIf=\"data.EditButtonVisible\" [style]=\"componentProperties.containerStyle.style5\">\r\n          <div class=\"read-mode-btns\" *ngIf=\"!data['_EditMode'].value\">\r\n            <ion-button fill=\"outline\" size=\"default\" strong=\"true\" (click)=\"toggleEditMode()\">\r\n              <fa-icon icon=\"edit\"></fa-icon>\r\n              <span class=\"btn-label ion-text-capitalize\">{{getToolBarItemLabelName('Edit')}}</span>\r\n            </ion-button>\r\n          </div>\r\n          <div class=\"edit-mode-btns\" *ngIf=\"data['_EditMode'].value\">\r\n            <ion-button fill=\"solid\" size=\"default\" strong=\"true\" (click)=\"saveData()\">\r\n              <fa-icon icon=\"check\"></fa-icon>\r\n              <span class=\"btn-label ion-text-capitalize\">{{getToolBarItemLabelName('Save')}}</span>\r\n            </ion-button>\r\n            <ion-button fill=\"clear\" size=\"small\" strong=\"false\" (click)=\"cancelEdit()\">\r\n              <span class=\"btn-label ion-text-capitalize\">{{getToolBarItemLabelName('Cancel')}}</span>\r\n            </ion-button>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </kendo-card-header>\r\n    <kendo-card-body>\r\n      <app-zdiv class=\"e1tag-container-style8\" [style]=\"componentProperties.containerStyle.style8\" [data]=\"data\"\r\n                [form]=\"myFormGroup ? myFormGroup : form\" [group]=\"group\">\r\n      </app-zdiv>\r\n\r\n      <!-- <app-zformcontrol [ngClass]=\"group[field.isVisibleField] ? field.DivClass :\r\n        ((field.Visible === true) ?  field.DivClass : 'flex-hide')\"\r\n        *ngFor=\"let field of data.Value | divzlayout: data.zlayout\" [field]=\"field\" [group]=\"group\" [form]=\"form\"\r\n        id=\"{{field.Type}}-{{field.Name}}\">\r\n      </app-zformcontrol> -->\r\n    </kendo-card-body>\r\n  </kendo-card>\r\n</div>\r\n","/********** Angular **********/\r\nimport { Component, OnInit } from \"@angular/core\";\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { LabelSettings, ProgressBarAnimation } from \"@progress/kendo-angular-progressbar\";\r\n\r\n/********** Component & Service **********/\r\nimport { FieldBase } from \"../components/fieldbase.component\";\r\nimport { ZComponentService } from \"../services/zcomponent.service\";\r\nimport { ZComponent, ZComponentHelper } from 'mmhglobal-zcore';\r\n\r\n\r\n@Component({\r\n  selector: 'app-zprogressbar',\r\n  templateUrl: './zprogressbar.component.html',\r\n  styleUrls: ['./zprogressbar.component.scss'],\r\n})\r\n\r\nexport class ZprogressbarComponent extends FieldBase implements ZComponent, OnInit {\r\n  private animation: ProgressBarAnimation = {\r\n    duration: 1000,\r\n  };\r\n\r\n  private label: LabelSettings = {\r\n    visible: true,\r\n    format: \"percent\",\r\n    position: \"start\",\r\n  };\r\n\r\n  public value;\r\n  public minValue = 0;\r\n  public maxValue = 100;\r\n  public options = {\r\n    indeterminate: false,\r\n    animation: this.animation,\r\n    label: this.label,\r\n    progressStyles: null,\r\n    emptyStyles: null,\r\n  };\r\n\r\n  constructor(\r\n    public componentService: ZComponentService\r\n  ) {\r\n    super(componentService);\r\n  }\r\n\r\n  ngOnInit() {\r\n    super.initComponent().subscribe(() => {\r\n\r\n      this.value = this.group.zModel[this.data.Value];\r\n      this.minValue = ZComponentHelper.getGroupEvalValue.call(this, this.data.MinValue) || this.minValue;\r\n      this.maxValue = ZComponentHelper.getGroupEvalValue.call(this, this.data.MaxValue)|| this.maxValue;\r\n\r\n      if (this.data.Options) {\r\n        const optionType = typeof (this.data.Options);\r\n        if (optionType === 'object') {\r\n          Object.assign(this.options, this.data.Options);\r\n        } else if (optionType === 'string') {\r\n          const optionValue = ZComponentHelper.getGroupEvalValue.call(this, this.data.Options);\r\n          if (typeof (optionValue) === 'object') {\r\n            Object.assign(this.options, optionValue);\r\n          }\r\n        }\r\n      }\r\n    });\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    this.componentService.decrementComponentCounterForField(this.data);\r\n  }\r\n}\r\n","<div *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\"\r\n     [style]=\"componentProperties.style.style\" class=\"e1tag-style\">\r\n  <div class=\"top-title e1tag-style1\" [style]=\"componentProperties.style.style1\" *ngIf=\"data.Label\">\r\n    {{data.Label}}\r\n  </div>\r\n  <kendo-progressbar [min]=\"minValue\" [max]=\"maxValue\" [indeterminate]=\"options.indeterminate\" [value]=\"value\" class=\"e1tag-style2\"\r\n                     [style]=\"componentProperties.style.style2\" [progressCssStyle]=\"options.progressStyles\"\r\n                     [emptyCssStyle]=\"options.emptyStyles\" [label]=\"options.label\" [animation]=\"options.animation\"></kendo-progressbar>\r\n</div>\r\n","/********** Angular **********/\r\nimport { Component, Input, OnInit, ViewChild, ViewContainerRef } from '@angular/core';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { Observable, of } from 'rxjs';\r\nimport { delay, ignoreElements, map, switchMap, tap } from 'rxjs/operators';\r\nimport { RuleModel, QueryBuilderComponent, ColumnsModel, TemplateColumn, RuleChangeEventArgs } from '@syncfusion/ej2-angular-querybuilder';\r\nimport { DropDownList, MultiSelect } from '@syncfusion/ej2-dropdowns';\r\nimport { getComponent, createElement } from '@syncfusion/ej2-base';\r\nimport { DataManager, Query } from '@syncfusion/ej2-data';\r\nimport { CheckBox } from '@syncfusion/ej2-buttons';\r\n\r\n/********** Component & Service **********/\r\nimport {\r\n  FieldService, ZComponentHelper, ZComponentProperties, ZField, ZGroup,\r\n  FontAweSomeService, DefaultPageSettingParams, WebApiService, ResourceApiService,\r\n  FormType,\r\n  ComponentType\r\n} from 'mmhglobal-zcore';\r\n\r\n@Component({\r\n  selector: 'app-sfquerybuilder',\r\n  templateUrl: './sfquerybuilder.component.html',\r\n  styleUrls: ['./sfquerybuilder.component.scss'],\r\n})\r\nexport class SfquerybuilderComponent implements OnInit {\r\n  @ViewChild('querybuilder') qryBldrObj: QueryBuilderComponent;\r\n  @Input() data: ZField;\r\n  @Input() group: ZGroup;\r\n  @Input() form: FormGroup;\r\n\r\n  qbItems = {};\r\n\r\n  public componentProperties = new ZComponentProperties();\r\n  public issfLoaded: boolean = false;\r\n  public queryCtrl: any;\r\n  public allowRuleset: boolean = true;\r\n  public allowCollapse: boolean = false;\r\n  public persistValueOnFieldChange: boolean = false;\r\n  public isDisabled: boolean = false;\r\n  public rule: any;\r\n  public filters: any;\r\n  private fields: any;\r\n  public displayRule: any = '';\r\n\r\n  private loadedDropdownOptions = [];\r\n\r\n  public sfData: Object[];\r\n  public importRules: RuleModel;\r\n  public sdFilter: ColumnsModel[] = [];\r\n  public sfQBTemplate: TemplateColumn;\r\n\r\n  //#region Operator\r\n  private readonly operators = {\r\n    equal: { value: 'equal', key: 'Equals' },\r\n    notequal: { value: 'notequal', key: 'Not Equals' },\r\n    startswith: { value: 'startswith', key: 'Start With' },\r\n    endswith: { value: 'endswith', key: 'End With' },\r\n    contains: { value: 'contains', key: 'Contains' },\r\n    isempty: { value: 'isempty', key: 'Is Empty' },\r\n    isnotempty: { value: 'isnotempty', key: 'Is Not Empty' },\r\n    isnull: { value: 'isnull', key: 'Is Null' },\r\n    isnotnull: { value: 'isnotnull', key: 'Is Not Null' },\r\n    in: { value: 'in', key: 'In' },\r\n    notin: { value: 'notin', key: 'Not In' },\r\n    greaterthan: { value: 'greaterthan', key: 'Greater Than' },\r\n    greaterthanorequal: { value: 'greaterthanorequal', key: 'Greater Than Or Equals' },\r\n    lessthan: { value: 'lessthan', key: 'Less Than' },\r\n    lessthanorequal: { value: 'lessthanorequal', key: 'Less Than Or Equals' }\r\n  };\r\n  \r\n  // Operator groups\r\n  public readonly inOperators = ['in', 'notin'];\r\n  \r\n  public readonly dropdownOperators = [\r\n    this.operators.equal,\r\n    this.operators.notequal,\r\n    this.operators.in,\r\n    this.operators.notin,\r\n    this.operators.isnull,\r\n    this.operators.isnotnull\r\n  ];\r\n  \r\n  public readonly stringOperators = [\r\n    this.operators.equal,\r\n    this.operators.notequal,\r\n    this.operators.startswith,\r\n    this.operators.endswith,\r\n    this.operators.contains,\r\n    this.operators.isempty,\r\n    this.operators.isnotempty,\r\n    this.operators.isnull,\r\n    this.operators.isnotnull\r\n  ];\r\n  \r\n  public readonly integerOperators = [\r\n    this.operators.equal,\r\n    this.operators.notequal,\r\n    this.operators.greaterthan,\r\n    this.operators.greaterthanorequal,\r\n    this.operators.lessthan,\r\n    this.operators.lessthanorequal,\r\n    this.operators.isnull,\r\n    this.operators.isnotnull\r\n  ];\r\n  \r\n  public readonly dateOperators = [...this.integerOperators];\r\n  \r\n  public readonly booleanOperators = [\r\n    this.operators.equal,\r\n    this.operators.notequal,\r\n    this.operators.isnull,\r\n    this.operators.isnotnull\r\n  ];  \r\n  //#endregion\r\n  public selectionComponentList = [];\r\n\r\n  constructor(\r\n    private readonly fieldService: FieldService,\r\n    private readonly resourceApiService: ResourceApiService,\r\n    private readonly webApiService: WebApiService\r\n  ) {}\r\n\r\n  ngOnInit() {\r\n    ZComponentHelper.setComponentProperties(this);\r\n    ZComponentHelper.registerComponent(this);\r\n\r\n    of(true).pipe(\r\n      switchMap(_ => {\r\n        return this.beforeLoadField(this.data);\r\n      }),\r\n      tap(data => {\r\n        this.data = data as ZField;\r\n      }),\r\n      switchMap(_ => {\r\n        return this.loadQueryBuilder();\r\n      })\r\n    ).subscribe(() => {\r\n      // Where to update operator syntax\r\n      // 1. E1 - queryBuilderTemplate2\r\n      // 2. shared folder > helper > querybuilder-fieldinfo-helper.ts\r\n      // 3. patch db data with small capital letter\r\n    });\r\n  }\r\n\r\n  private beforeLoadField(fieldElementData: any) {\r\n    let beforeLoadField = fieldElementData['BeforeLoadField'];\r\n    if (beforeLoadField) {\r\n      beforeLoadField = beforeLoadField.replace('modalGroup.', 'group.');\r\n      const callFunc = eval('this.' + beforeLoadField);\r\n\r\n      if (typeof callFunc === \"function\") {\r\n        const newFunc = callFunc.bind(this);\r\n        return newFunc(event, this, fieldElementData);\r\n      }\r\n    }\r\n    return of(fieldElementData);\r\n  }\r\n\r\n  private loadQueryBuilder(): Observable<any> | Observable<boolean> {\r\n    const formResource = this.resourceApiService.getCustomResource(this.data.CustomResource);\r\n\r\n    if (this.data.AllowCollapse === true) {\r\n      this.allowCollapse = this.data.AllowCollapse;\r\n    }\r\n\r\n    if (this.data.AllowRuleset === false) {\r\n      this.allowRuleset = this.data.AllowRuleset;\r\n    }\r\n\r\n    if (this.data.Filters) {\r\n      this.filters = ZComponentHelper.getGroupEvalValue.call(\r\n        this,\r\n        this.data.Filters,\r\n        this.group\r\n      );\r\n    }\r\n\r\n    this.fields = this.fieldService.getFormFieldCode(this.data.Value, FormType.formField, null, null, null, formResource);\r\n\r\n    try {\r\n      return this.fields.pipe(\r\n        tap((data: []) => {\r\n\r\n          data.forEach(async (field: any) => {\r\n            this.renderComponentType(field);\r\n          });//end foreach\r\n\r\n          this.issfLoaded = true;\r\n        })\r\n      )\r\n    } catch (error) {\r\n      console.error(\"error: \", error);\r\n      return of(false);\r\n    }\r\n  }\r\n\r\n  private async renderComponentType(field: any, fieldTitle?: string, fieldName?: string): Promise<void> {\r\n    let componentLabel: string;\r\n    if (!ZComponentHelper.isNullUndefinedEmpty(fieldTitle)) {\r\n      componentLabel = `[${fieldTitle}] ${field.Label}`;\r\n    } else if (!ZComponentHelper.isNullUndefinedEmpty(field.Label)) {\r\n      componentLabel = field.Label;\r\n    } else {\r\n      componentLabel = field.Name;\r\n    }\r\n\r\n    const componentField = !ZComponentHelper.isNullUndefinedEmpty(fieldName) ? `${fieldName}_${field.Value}` : field.Value;\r\n\r\n    if (field.Type === 'category' || field.Type === 'multiselect' || field.Type === 'zuiselectmultiple') {\r\n      this.sdFilter.push({\r\n        field: componentField,\r\n        label: componentLabel,\r\n        type: 'string',\r\n        operators: this.dropdownOperators,\r\n        template: await this.generateColumnSelection(field),\r\n      })\r\n    }\r\n    else if (field.Type === ComponentType.date || field.Type === 'zdate' || field.Type === ComponentType.zdatetime || field.Type === ComponentType.zuidatetime || field.Type === 'zshortdate') {\r\n      this.sdFilter.push({\r\n        field: componentField,\r\n        label: componentLabel,\r\n        type: 'date',\r\n        operators: this.dateOperators,\r\n      })\r\n    }\r\n    else if (field.Type === ComponentType.number || field.Type === ComponentType.znumeric || field.Type === 'numeric') {\r\n      this.sdFilter.push({\r\n        field: componentField,\r\n        label: componentLabel,\r\n        type: 'number',\r\n        operators: this.integerOperators,\r\n      })\r\n    }\r\n    else if (field.Value === 'boolean' || field.Value === 'zcheckbox') {\r\n      this.sdFilter.push({\r\n        field: componentField,\r\n        label: componentLabel,\r\n        type: 'boolean',\r\n        operators: this.booleanOperators,\r\n        template: await this.generateColumnCheckbox(field.Name, false)\r\n      })\r\n    }\r\n    else if (field.Type === 'kcard') {\r\n      if (field.Value.length > 0) {\r\n        field.Value.forEach(async (item: any) => {\r\n          this.renderComponentType(item, field.Title, field.Name);\r\n        })\r\n      }\r\n    }\r\n    else if (field.Type !== ComponentType.label) {\r\n      this.sdFilter.push({\r\n        field: componentField,\r\n        label: componentLabel,\r\n        type: 'string',\r\n        operators: this.stringOperators,\r\n      })\r\n    }\r\n\r\n    this.sdFilter.sort((a, b) => a.label.toLowerCase() < b.label.toLowerCase() ? -1 : 1);\r\n  }\r\n\r\n  //#region Generate component \r\n  private generateColumnCheckbox(label: string, value: boolean): TemplateColumn {\r\n    return {\r\n      create: () => {\r\n        return createElement('input', { attrs: { 'type': 'checkbox' } });\r\n      },\r\n      destroy: (args: { elementId: string }) => {\r\n        (getComponent(document.getElementById(args.elementId), 'checkbox') as CheckBox).destroy();\r\n      },\r\n      write: (args: { elements: Element, values: string }) => {\r\n        const boxObj: CheckBox = new CheckBox({\r\n          label: label,\r\n          checked: value,\r\n          change: (e: any) => {\r\n            this.qryBldrObj.notifyChange(value, e.event.target);\r\n          }\r\n        });\r\n        boxObj.appendTo('#' + args.elements.id);\r\n      }\r\n    };\r\n  }\r\n\r\n  private generateColumnSelection(fieldElementData: any): TemplateColumn {\r\n    return {\r\n\r\n      // Creates the custom component\r\n      create: () => {\r\n        // Additional filter set in the page\r\n        if (this.data['Filters']) {\r\n          this.filters = ZComponentHelper.getGroupEvalValue.call(\r\n            this,\r\n            this.data['Filters'],\r\n            this.group\r\n          );\r\n        }\r\n\r\n        return createElement('input', { attrs: { 'type': 'text' } }); // 'display: none'\r\n      },\r\n\r\n      // Destroy the custom component\r\n      destroy: (args: { elementId: string }) => {\r\n        if (args['elements']) {\r\n          const multiSelect: MultiSelect = getComponent(document.getElementById(args.elementId), 'multiselect');\r\n          if (multiSelect) {\r\n            multiSelect.destroy();\r\n          }\r\n          const dropdown: DropDownList = getComponent(document.getElementById(args.elementId), 'dropdownlist');\r\n          if (dropdown) {\r\n            dropdown.destroy();\r\n          }\r\n\r\n          const selectOptions = fieldElementData['SelectOptions'];\r\n          if (selectOptions) {\r\n            const selectOptionsResourceURL = selectOptions['ResourceURL'];\r\n            const prefixResourceURLChecking = selectOptionsResourceURL + '_' + args.elementId;\r\n\r\n            if (this.loadedDropdownOptions.includes(prefixResourceURLChecking)) {\r\n              this.loadedDropdownOptions = this.removeArrayItem(this.loadedDropdownOptions, prefixResourceURLChecking);\r\n            }\r\n          }\r\n        }\r\n      },\r\n\r\n      // Wire events for the custom component.\r\n      write: (args: { elements: Element, values: string[] | string, operator: string }) => {\r\n        //origin\r\n        if (fieldElementData['ValueOptions']) {\r\n          // convert to property name used in the component rendering\r\n          const optionList: { [name: string]: Object }[] = [];\r\n          fieldElementData['ValueOptions'].forEach((item: any) => {\r\n            optionList.push({\r\n              text: item['Name'],\r\n              value: item['Value']\r\n            });\r\n          })\r\n\r\n          const selectionComponent = this.generateSelectionComponent(args, optionList);\r\n          selectionComponent.appendTo('#' + args.elements.id);\r\n        }\r\n\r\n        // manual dropdown or zudf manual dropdown\r\n        else if (fieldElementData['SelectOptions'] && Array.isArray(fieldElementData['SelectOptions'])) {\r\n          // convert to property name used in the component rendering\r\n          const optionList: { [name: string]: Object }[] = [];\r\n          fieldElementData['SelectOptions'].forEach((item: any) => {\r\n            optionList.push({\r\n              text: item['text'],\r\n              value: item['value']\r\n            });\r\n          })\r\n\r\n          const selectionComponent = this.generateSelectionComponent(args, optionList);\r\n          selectionComponent.appendTo('#' + args.elements.id);\r\n        }\r\n\r\n        // zudf ResourceURL / Common Master dropdown\r\n        else {\r\n          const selectOptions = fieldElementData['SelectOptions'];\r\n          const selectOptionsResourceURL = selectOptions['ResourceURL'];\r\n\r\n          // ResourceURL dropdown\r\n          if (selectOptionsResourceURL) {\r\n            const prefixResourceURLChecking = selectOptionsResourceURL + '_' + args.elements.id;\r\n\r\n            if (!this.loadedDropdownOptions.includes(prefixResourceURLChecking)) {\r\n              this.loadedDropdownOptions.push(prefixResourceURLChecking);\r\n\r\n              if (this.filters) {\r\n                selectOptions['Filters'] = this.filters;\r\n              }\r\n\r\n              const param = { ...DefaultPageSettingParams };\r\n              param.pageSize = selectOptions['PageSize'];\r\n              param.columns = selectOptions['Columns'];\r\n              param.filters += selectOptions['Filters'];\r\n              param.sortColumnName = selectOptions['SortColumnName'];\r\n              param.sortOrder = selectOptions['SortOrder'];\r\n\r\n              // Need delay 400ms if not 3rd segment (value) will not be rendered.\r\n              this.webApiService.httpPost$(this.resourceApiService.getPageUrl(selectOptionsResourceURL), param).pipe(\r\n                delay(400),\r\n                map((resp) => {\r\n                  const optionList = [];\r\n                  resp.dataSet.forEach((item: any) => {\r\n                    optionList.push({\r\n                      text: item[selectOptions['Name']],\r\n                      value: item[selectOptions['Value']]\r\n                    });\r\n                  })\r\n\r\n                  const selectionComponent = this.generateSelectionComponent(args, optionList);\r\n                  selectionComponent.appendTo('#' + args.elements.id);\r\n\r\n                  //#region used for updateSelectionOption\r\n                  const existingIndex = this.selectionComponentList.findIndex(\r\n                    (item) => item.componentId === args.elements.id\r\n                  );\r\n\r\n                  if (existingIndex !== -1) {\r\n                    // Object with the same componentId exists, replace resourceUrl\r\n                    this.selectionComponentList[existingIndex].resourceUrl = selectOptionsResourceURL;\r\n                  } else {\r\n                    // Object with componentId doesn't exist, push a new object\r\n                    this.selectionComponentList.push({\r\n                      resourceUrl: selectOptionsResourceURL,\r\n                      componentId: args.elements.id\r\n                    });\r\n                  }\r\n                  //#endregion\r\n                })\r\n              ).subscribe();\r\n            }\r\n          }\r\n\r\n          // zudf Common Master dropdown\r\n          else if (fieldElementData.zudfDataSourceType && fieldElementData.zudfDataSourceType === \"resource\") {\r\n\r\n            // extract zudf_dropdown from session storage\r\n            const zudf_dropdown = sessionStorage.getItem(\"zudf_dropdown\") ? JSON.parse(sessionStorage.getItem(\"zudf_dropdown\")) : null;\r\n            if (zudf_dropdown) {\r\n              const optionList = [];\r\n\r\n              zudf_dropdown.forEach(res => {\r\n                const name = res.text.split(\"Options\")[0];\r\n                if (fieldElementData.Label === name) {\r\n                  res.value.forEach(val => {\r\n                    optionList.push({\r\n                      text: val['Name'],\r\n                      value: val['Id']\r\n                    });\r\n                  })\r\n                }\r\n              })\r\n\r\n              const selectionComponent = this.generateSelectionComponent(args, optionList);\r\n              selectionComponent.appendTo('#' + args.elements.id);\r\n            }\r\n          }\r\n\r\n          // User List dropdown\r\n          else if (fieldElementData.zudfDataSourceType && fieldElementData.zudfDataSourceType === \"user\") {\r\n            const optionList = [];\r\n            const userList = JSON.parse(sessionStorage?.getItem(\"userList\") ?? 'null');\r\n\r\n            userList.forEach((item: any) => {\r\n              optionList.push({\r\n                text: item['SelectionName'],\r\n                value: item['Id']\r\n              });\r\n            })\r\n\r\n            const selectionComponent = this.generateSelectionComponent(args, optionList);\r\n            selectionComponent.appendTo('#' + args.elements.id);\r\n          }\r\n        }\r\n      }//end write\r\n    }\r\n  }\r\n\r\n  public updateSelectionOption(resourceUrl: string, data: any): void {\r\n    this.selectionComponentList.forEach(selectionComponent => {\r\n      const multiSelect: MultiSelect = getComponent(document.getElementById(selectionComponent.componentId), 'multiselect');\r\n      if (multiSelect) {\r\n        multiSelect.value = data;\r\n      }\r\n      const dropdown: DropDownList = getComponent(document.getElementById(selectionComponent.componentId), 'dropdownlist');\r\n      if (dropdown) {\r\n        this.fieldService.dataFormFields[this.data.Value].forEach(async (field: any) => {\r\n          if (field.SelectOptions.ResourceURL === selectionComponent.resourceUrl) {\r\n            const selectOptions = field['SelectOptions'];\r\n            const selectOptionsResourceURL = selectOptions['ResourceURL'];\r\n            const param = { ...DefaultPageSettingParams };\r\n\r\n            if (this.data['Filters']) {\r\n              this.filters = ZComponentHelper.getGroupEvalValue.call(\r\n                this,\r\n                this.data['Filters'],\r\n                this.group\r\n              );\r\n            }\r\n\r\n            if (this.filters) {\r\n              selectOptions['Filters'] = this.filters;\r\n            }\r\n\r\n            param.pageSize = selectOptions['PageSize'];\r\n            param.columns = selectOptions['Columns'];\r\n            param.filters += selectOptions['Filters'];\r\n            param.sortColumnName = selectOptions['SortColumnName'];\r\n            param.sortOrder = selectOptions['SortOrder'];\r\n\r\n            this.webApiService.httpPost$(this.resourceApiService.getPageUrl(selectOptionsResourceURL), param).pipe(\r\n              map((resp) => {\r\n                const optionList = [];\r\n                resp.dataSet.forEach((item: any) => {\r\n                  optionList.push({\r\n                    text: item[selectOptions['Name']],\r\n                    value: item[selectOptions['Value']]\r\n                  });\r\n                })\r\n\r\n                dropdown.dataSource = optionList;\r\n              })\r\n            ).subscribe();\r\n          }\r\n        });\r\n      }\r\n    })\r\n  }\r\n\r\n  private removeArrayItem<T>(arr: Array<T>, value: T): Array<T> {\r\n    const index = arr.indexOf(value);\r\n    if (index > -1) {\r\n      arr.splice(index, 1);\r\n    }\r\n    return arr;\r\n  }\r\n\r\n  private generateSelectionComponent(args: any, optionList: any): MultiSelect | DropDownList {\r\n    if (this.inOperators.indexOf(args.operator) > -1) {\r\n      return new MultiSelect({\r\n        dataSource: optionList,\r\n        fields: { text: 'text', value: 'value' },\r\n        value: args.values as string[],\r\n        mode: 'CheckBox',\r\n        change: (e: any) => {\r\n          this.qryBldrObj.notifyChange(e.value, e.element);\r\n        },\r\n        // set contains search by default\r\n        filtering: (e: any) => {\r\n          this.onFiltering(e, optionList);\r\n        }\r\n      });\r\n    }\r\n    else {\r\n      return new DropDownList({\r\n        allowFiltering: true, // search box appear\r\n        dataSource: optionList,\r\n        fields: { text: 'text', value: 'value' },\r\n        value: args.values as string,\r\n        change: (e: any) => {\r\n          if (e.value !== null) {\r\n            this.qryBldrObj.notifyChange(e.itemData.value, e.element);\r\n          }\r\n        },\r\n        // set default search by 'contains'\r\n        filtering: (e: any) => {\r\n          this.onFiltering(e, optionList);\r\n        }\r\n      });\r\n    }\r\n  }\r\n  //#endregion\r\n\r\n  public onFiltering(e: any, optionList: any): void {\r\n    // load overall data when search key empty.\r\n    if (e.text === '') {\r\n      e.updateData(this.data);\r\n    }\r\n    else {\r\n      // Define array data\r\n      let searchData = optionList;\r\n\r\n      //Bind the filter event\r\n      let query = new Query();\r\n\r\n      //frame the query based on search string with filter type.\r\n      query = (e.text != \"\") ? query.where(\"text\", \"contains\", e.text, true) : query;\r\n\r\n      //pass the filter data source, filter query to updateData method.\r\n      e.updateData(searchData, query);\r\n    }\r\n  };\r\n\r\n  public setQueryValue(savedData: any): void {\r\n    if (savedData) {\r\n      this.qryBldrObj.setRules(savedData);\r\n      this.updateRule({ rule: savedData });\r\n    }\r\n  }\r\n\r\n  public getResult(): RuleModel {\r\n    return this.qryBldrObj.getRules();\r\n  }\r\n\r\n  public updateRule(args: RuleChangeEventArgs): void {\r\n    this.displayRule = JSON.stringify(args.rule, null, 12);\r\n  }\r\n\r\n  public onChange(): void {\r\n    this.updateRule({ rule: this.qryBldrObj.getValidRules(this.qryBldrObj.rule) });\r\n  }\r\n}\r\n\r\n","<ion-item *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\">\r\n  <div class=\"qbcontainer\">\r\n    <ejs-querybuilder *ngIf=\"issfLoaded\"\r\n                      #querybuilder\r\n                      width=\"100%\"\r\n                      [dataSource]=\"sfData\"\r\n                      [columns]=\"sdFilter\"\r\n                      [rule]=\"importRules\"\r\n                      (ruleChange)=\"updateRule($event)\"\r\n                      (created)=\"onChange()\">\r\n    </ejs-querybuilder>\r\n\r\n    <div *ngIf=\"!data.HideShowResultPanel\">\r\n      <br>\r\n      <ion-label>Result</ion-label>\r\n      <textarea class=\"output\"\r\n                resizable=\"none\"\r\n                [rows]=\"10\"\r\n                style=\"border: 1px solid #d3d3d3; width: 100%;\">{{displayRule}}</textarea>\r\n    </div>\r\n  </div>\r\n</ion-item>\r\n","/********** Angular **********/\r\nimport { Component, OnInit } from \"@angular/core\";\r\nimport { ContainerFieldBase } from \"../components/containerfieldbase.component\";\r\nimport { ZComponentService } from \"../services/zcomponent.service\";\r\nimport { ZComponentHelper, FieldService, ZComponent, ZField } from 'mmhglobal-zcore';\r\nimport { FormControl, ValidatorFn } from \"@angular/forms\";\r\n\r\n@Component({\r\n  selector: 'app-zloop',\r\n  templateUrl: './zloop.component.html',\r\n  styleUrls: ['./zloop.component.scss'],\r\n})\r\n\r\nexport class ZloopComponent extends ContainerFieldBase implements ZComponent, OnInit {\r\n  private readonly originalFieldNameField = 'OriNameForZloop';\r\n  public clonedFields = [];\r\n  private clonedFormControlList = new Array<string>();\r\n  private initField = {} as ZField;\r\n  private conponentTypesToNotUpdateValue = ['zbuttons'];\r\n\r\n  constructor(\r\n    public componentService: ZComponentService,\r\n    public fieldService: FieldService,\r\n  ) {\r\n    super(componentService);\r\n  }\r\n\r\n  ngOnInit() {\r\n    this.initField = ZComponentHelper.deepClone(this.data);\r\n\r\n    this.setupLoopingElement();\r\n    super.initComponent().subscribe(() => { this.isLoading = false; });\r\n  }\r\n\r\n  public refreshFieldElement() {\r\n    this.data = ZComponentHelper.deepClone(this.initField);\r\n    this.setupLoopingElement();\r\n  }\r\n\r\n  private setupLoopingElement() {\r\n    if (this.data.LoopingElementConfig) {\r\n      // Remove previously cloned fields from form controls (if any)\r\n      if (this.clonedFormControlList.length > 0) {\r\n        for (const fgName of this.clonedFormControlList) {\r\n          this.group.form.removeControl(fgName);\r\n        }\r\n      }\r\n\r\n      // Clone zloop's child\r\n      this.clonedFields = this.cloneFieldElementChild(this.data);\r\n\r\n      // Append cloned fields to group.fields for error message displaying\r\n      this.group.clonedFields = ZComponentHelper.deepClone(this.group.clonedFields || this.group.fields);\r\n      const thisField = ZComponentHelper.getFieldFromFieldsByName(this.group.clonedFields, this.data[this.originalFieldNameField] || this.data.Name);\r\n      thisField.Value = this.clonedFields;\r\n    }\r\n  }\r\n\r\n  private cloneFieldElementChild(field: ZField): Array<ZField> {\r\n    const loopingElementConfig = typeof field.LoopingElementConfig == 'string' ? ZComponentHelper.getGroupValue(field.LoopingElementConfig, this.group) : field.LoopingElementConfig;\r\n\r\n    if (loopingElementConfig == undefined) {\r\n      return field.Value;\r\n    }\r\n    let fieldToInsert = new Array<ZField>();\r\n    for (let configIndex = 0; configIndex < loopingElementConfig.Count; configIndex++) {\r\n      const clonedFields = ZComponentHelper.deepClone(field.Value);\r\n      this.updateFieldPropertiesToMakeThemDistinct(clonedFields, loopingElementConfig, configIndex);\r\n      fieldToInsert = fieldToInsert.concat(clonedFields);\r\n    }\r\n\r\n    return fieldToInsert;\r\n  }\r\n\r\n  private updateFieldPropertiesToMakeThemDistinct(fields: Array<ZField>, loopingElementConfig: any, index: number) {\r\n    for (const field of fields) {\r\n\r\n      const elementConfig = loopingElementConfig.ToReplace.find(x => x.ElementName == field.Name) || loopingElementConfig.ToReplace.find(x => x.ElementName == field[this.originalFieldNameField]);\r\n      const elementConfigProperty = elementConfig && elementConfig.Property && elementConfig.Property.length > index ? elementConfig.Property[index] : {};\r\n\r\n      if (field.Type !== 'zloop') {\r\n        field.Name = `${field.Name}_${index + 1}`;\r\n        if (field.Label) {\r\n          field.Label = `${field.Label}`;\r\n        }\r\n\r\n        if (Array.isArray(field.Value)) {\r\n          this.updateFieldPropertiesToMakeThemDistinct(field.Value, loopingElementConfig, index);\r\n        }\r\n        else {\r\n          if (elementConfigProperty.Value != undefined) {\r\n            field.Value = elementConfigProperty.Value;\r\n          }\r\n          else if (!this.conponentTypesToNotUpdateValue.includes(field.Type)) {\r\n            field.Value = `${field.Value}_${index + 1}`;\r\n          }\r\n        }\r\n      }\r\n      else {\r\n        field[this.originalFieldNameField] = field.Name;\r\n      }\r\n\r\n      for (const key of Object.keys(elementConfigProperty)) {\r\n        field[key] = elementConfigProperty[key];\r\n      }\r\n\r\n      this.setClonedFieldsToFormControls(field);\r\n    }\r\n  }\r\n\r\n  private setClonedFieldsToFormControls(field: ZField) {\r\n    if (!field.SubType) {\r\n      this.fieldService.patchFieldProperty(field);\r\n\r\n      if (typeof field.Value === \"string\" && field.Value.indexOf(\".\") !== -1) {\r\n        if (['zgrid', 'ztree', 'textareajson', 'zganttchart'].indexOf(field.Type) === -1) {\r\n          console.warn(\"FormControl - invalid field value\", field.Value);\r\n        }\r\n      } else {\r\n        const isFormControl = ZComponentHelper.isFormControl(field);\r\n        const isVisible = ZComponentHelper.isVisibleFormControl(this, field);\r\n        const isRequired = ZComponentHelper.isRequiredFormControl(this, field);\r\n\r\n        if (isFormControl === true) {\r\n          const validators: ValidatorFn[] = ZComponentHelper.getValidators(field, isVisible, isRequired, this.group);\r\n          this.group.form.addControl(field.Value, new FormControl(\r\n            this.group.zModel[field.Value], validators\r\n          ));\r\n          this.clonedFormControlList.push(field.Value);\r\n\r\n          if (ZComponentHelper.hasCCField(field.Type)) {\r\n            const ccValidators: ValidatorFn[] = ZComponentHelper.getCCValidators(field, isVisible, isRequired);\r\n            this.group.form.addControl(field.CCValue, new FormControl(\r\n              this.group.zModel[field.CCValue], ccValidators\r\n            ));\r\n            this.clonedFormControlList.push(field.CCValue);\r\n          }\r\n        }\r\n      }\r\n    }\r\n  }\r\n}\r\n","<div [style]=\"componentProperties.containerStyle.style\" class=\"e1tag-container-style zloop-container\"\r\n    *ngIf=\"(!!componentProperties.isVisibleField? group[componentProperties.isVisibleField] : componentProperties.isVisible)\">\r\n  <app-zformcontrol [ngClass]=\"group[field.isVisibleField] ? field.DivClass : ((field.Visible === true) ?  field.DivClass : 'flex-hide')\"\r\n    *ngFor=\"let field of clonedFields\"\r\n    [field]=\"field\"\r\n    [containerField]=\"data\" [group]=\"group\" [form]=\"form\" id=\"{{field.Type}}-{{field.Name}}\"\r\n    [style]=\"componentProperties.style.style1\" class=\"e1tag-style1\">\r\n  </app-zformcontrol>\r\n</div>\r\n","import { Component, OnDestroy, OnInit, ViewChild } from \"@angular/core\";\r\nimport { ZComponent } from \"mmhglobal-zcore\";\r\nimport { ContainerFieldBase } from \"../components/containerfieldbase.component\";\r\nimport { ZComponentService } from \"../services/zcomponent.service\";\r\nimport { Subscription, auditTime, tap } from \"rxjs\";\r\nimport { SplitterComponent } from \"@progress/kendo-angular-layout\";\r\n\r\n@Component({\r\n  selector: \"app-ksplitter\",\r\n  templateUrl: \"./ksplitter.component.html\",\r\n  styleUrls: [\"./ksplitter.component.scss\"],\r\n})\r\nexport class KsplitterComponent extends ContainerFieldBase implements ZComponent, OnInit, OnDestroy {\r\n  @ViewChild(SplitterComponent) splitter: SplitterComponent;\r\n  private onSizeChangeSubscriptions = new Array<Subscription>();\r\n\r\n  constructor(compService: ZComponentService,\r\n  ) {\r\n    super(compService)\r\n  }\r\n\r\n  ngOnInit() {\r\n    super.initComponent().pipe(tap(() => this.isLoading = false)).subscribe();\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    for (const sub of this.onSizeChangeSubscriptions) {\r\n      if (!sub.closed) {\r\n        sub.unsubscribe();\r\n      }\r\n    }\r\n  }\r\n\r\n  public resizePanelByIndex(index: number, size: string) {\r\n    const selectedPane = this.getPanelByIndex(index);\r\n    if (!selectedPane) {\r\n      return;\r\n    }\r\n\r\n    selectedPane.size = size;\r\n  }\r\n\r\n  public toggleCollapseStateByIndex(index: number, isCollapse?: boolean) {\r\n    const selectedPane = this.getPanelByIndex(index);\r\n    if (!selectedPane) {\r\n      return;\r\n    }\r\n\r\n    selectedPane.collapsed = isCollapse ?? !selectedPane.collapsed;\r\n    this.OnCollapse(null, this.data.PanelItems[index]);\r\n  }\r\n\r\n  private getPanelByIndex(index: number) {\r\n    const selectedPane = this.splitter.panes.find((_, i) => i === index);\r\n    if (!selectedPane) {\r\n      console.warn(`No Panel at index ${index}`);\r\n    }\r\n    return selectedPane;\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    this.componentService.decrementComponentCounterForField(this.data);\r\n    for (const pane of this.splitter.panes) {\r\n      this.onSizeChangeSubscriptions.push(pane.sizeChange.pipe(\r\n        auditTime(1000),\r\n        tap(() => {\r\n          this.triggerEvent(\"container-OnSizeChange\", this.data.OnSizeChange, null, { pane, index: (pane.order / 2) }); // ksplliter count the pane-splitter-line as pane\r\n        })\r\n      ).subscribe());\r\n    }\r\n  }\r\n}\r\n","<div class=\"ksplitter-container e1tag-container-style\"\r\n  *ngIf=\"!isLoading && (!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\"\r\n  [ngClass]=\"data.Class\" [style]=\"componentProperties.containerStyle.style\" [class]=\"data.ComponentStyleType\">\r\n  <kendo-splitter #splitter [orientation]=\"data.Orientation || 'horizontal'\" class=\"e1tag-container-style1\"\r\n    [style]=\"componentProperties.containerStyle.style1\">\r\n    <kendo-splitter-pane  *ngFor=\"let item of data.PanelItems; let i = index\"\r\n      [resizable]=\"item.Resizable != undefined ? item.Resizable : true\"\r\n      [collapsible]=\"item.AllowCollapse != undefined ? item.AllowCollapse : true\" [size]=\"item.Size\"\r\n      class=\"e1tag-container-style2\" [style]=\"componentProperties.containerStyle.style2 + item.Style\"\r\n      [min]=\"item.MinWidth\" [max]=\"item.MaxWidth\" [collapsed]=\"item.isCollapse ?? false\"\r\n      (collapsedChange)=\"OnCollapse($event, item)\">\r\n      <app-zdiv [style]=\"componentProperties.containerStyle.style3\" class=\"e1tag-container-style3\"\r\n        [data]=\"data | panelAreaFilter: i + ''\" [form]=\"form\" [group]=\"group\" [containerField]=\"containerField\">\r\n      </app-zdiv>\r\n    </kendo-splitter-pane>\r\n  </kendo-splitter>\r\n</div>\r\n","/********** Angular **********/\r\nimport { Component, OnInit, ViewChild } from \"@angular/core\";\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\n\r\n/********** Component & Service **********/\r\nimport { ContainerFieldBase } from \"../components/containerfieldbase.component\";\r\nimport { ZComponentService } from \"../services/zcomponent.service\";\r\nimport { DataSetResult, FontAweSomeService, VirtualScrollOption, ZComponent, ZComponentHelper } from \"mmhglobal-zcore\";\r\nimport { CdkVirtualScrollViewport } from \"@angular/cdk/scrolling\";\r\nimport { Observable, auditTime, delay, forkJoin, of, tap } from \"rxjs\";\r\nimport { collapseAnimation, rotateAnimation } from \"../animations/component-animations\";\r\n\r\n@Component({\r\n  selector: \"app-virtual-scroll\",\r\n  templateUrl: \"./virtual-scroll.component.html\",\r\n  styleUrls: [\"./virtual-scroll.component.scss\"],\r\n  animations: [\r\n    collapseAnimation,\r\n    rotateAnimation\r\n  ]\r\n})\r\n\r\n// Approach 1: Total Count is known, get next page upon scroll. (Will only have multiple pages / pageable)\r\n// Approach 2: Total Count is not known, append more data at runtime. (Will only have 1 page / not pageable)\r\n\r\nexport class VirtualScrollComponent extends ContainerFieldBase implements ZComponent, OnInit {\r\n  @ViewChild(CdkVirtualScrollViewport) viewPort: CdkVirtualScrollViewport;\r\n  public collapsedGroupBy = []; // Used to define animation status\r\n  public groupByValueToExpand = '';  // Used to define animation status\r\n  public collapsedGroupBy_FirstNodeIndexList = new Array<number>(); // When collapse, need to retain the first node in the list so that the group by title will not be hidden\r\n  private fullDataItems = [];\r\n  public dataItems: Array<any> = [];\r\n  public pageSize = 50;\r\n  public pageFetched = [];\r\n  public options: VirtualScrollOption;\r\n  public footerFields = [];\r\n\r\n  constructor(\r\n    componentService: ZComponentService,\r\n    public fontAweSomeService: FontAweSomeService\r\n  ) {\r\n    super(componentService);\r\n  }\r\n\r\n  ngOnInit() {\r\n    this.setupComponent();\r\n    this.setupDataItems();\r\n    this.setupFooter();\r\n    super.initComponent().subscribe();\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    this.componentService.decrementComponentCounterForField(this.data);\r\n    this.viewPort.scrolledIndexChange.pipe(\r\n      auditTime(this.data.ScrollIndexChangeTimeDelay || 300),\r\n      tap((currIndex: number) => {\r\n        this.populateListData(currIndex);\r\n      })\r\n    ).subscribe();\r\n  }\r\n\r\n  public scrollToTop() {\r\n    if (this.viewPort) {\r\n      this.viewPort.scrollToIndex(0);\r\n    }\r\n  }\r\n\r\n  private setupComponent() {\r\n    this.collapsedGroupBy = [];\r\n    if (this.data.Options) {\r\n      if (typeof this.data.Options === 'string' && this.data.Options.startsWith('group.')) {\r\n        this.options = ZComponentHelper.getGroupValue(this.data.Options, this.group);\r\n      } else {\r\n        this.options = this.data.Options;\r\n      }\r\n\r\n      this.pageSize = this.options.pageSize ?? 50;\r\n      this.options.loadingLabel = this.options.loadingLabel ?? '<div>Loading</div>';\r\n      this.options.itemSize = this.options.itemSize ?? 50;\r\n      this.options.minBufferPx = this.options.minBufferPx ?? (this.options.pageSize * this.options.itemSize);\r\n      this.options.maxBufferPx = this.options.maxBufferPx ?? (this.options.pageSize * this.options.itemSize);\r\n      this.options.isGroupByEnabled = this.options.isGroupByEnabled ?? !!this.options.groupBy;\r\n    }\r\n  }\r\n\r\n  public appendData(dataItems: Array<any>) {\r\n    this.fullDataItems = this.fullDataItems.concat(dataItems);\r\n    this.pageSize = this.fullDataItems.length;\r\n    this.computeDataItems();\r\n  }\r\n\r\n  private setupDataItems() {\r\n    this.pageFetched = [];\r\n    if (this.data.DataSetResult) {\r\n      let dataSetResult = this.data.DataSetResult;\r\n      if (typeof dataSetResult == 'string' && dataSetResult.startsWith('group.')) {\r\n        dataSetResult = ZComponentHelper.getGroupValue(dataSetResult, this.group);\r\n      }\r\n      this.setData(dataSetResult as DataSetResult);\r\n    }\r\n    else {\r\n      this.dataItems = [];\r\n    }\r\n  }\r\n\r\n  public setData(dataSetResult: DataSetResult) {\r\n    if (!dataSetResult) {\r\n      return;\r\n    }\r\n\r\n    this.pageFetched = [];\r\n    if (dataSetResult.dataSet && Array.isArray(dataSetResult.dataSet) && dataSetResult.dataSet.length > 0) {\r\n      const cnt = dataSetResult.totalCount - dataSetResult.dataSet.length;\r\n      if (cnt < 0) {\r\n        console.error('DataItems cannot be more than total count.');\r\n        return;\r\n      }\r\n\r\n      this.dataItems = dataSetResult.dataSet.concat(Array(cnt).fill(false));\r\n      const pageNoToMarkAsFetch = Math.ceil(dataSetResult.dataSet.length / this.pageSize) - 1;\r\n      for (let i = 0; i <= pageNoToMarkAsFetch; i++) {\r\n        this.pageFetched.push(i);\r\n      }\r\n    }\r\n    else if (dataSetResult.totalCount) {\r\n      this.dataItems = Array(dataSetResult.totalCount).fill(false);\r\n    }\r\n    else {\r\n      this.dataItems = [];\r\n    }\r\n    this.fullDataItems = this.dataItems;\r\n    this.computeDataItems();\r\n  }\r\n\r\n  private populateListData(currIndex: number) {\r\n    const renderRange = this.viewPort.getRenderedRange();\r\n    if (renderRange.start == renderRange.end && renderRange.end == 0) {\r\n      return;\r\n    }\r\n\r\n    const startPageNo = Math.floor(renderRange.start / this.pageSize);\r\n    const endPageNo = Math.floor((renderRange.end - 1) / this.pageSize);\r\n\r\n    const obs = new Array<Observable<any>>();\r\n    for (let i = startPageNo; i <= endPageNo; i++) {\r\n      if (!this.pageFetched.includes(i)) {\r\n        this.pageFetched.push(i);\r\n        obs.push(\r\n          this.fetchData(i).pipe(tap(([data, pageNo]) => {\r\n            this.updateDataByIndex(pageNo * this.pageSize, data);\r\n          }))\r\n        );\r\n      }\r\n    }\r\n\r\n    if (obs.length > 0) {\r\n      forkJoin(obs).pipe(tap(res => {\r\n        this.updateViewPortData();\r\n      })).subscribe();\r\n    }\r\n  }\r\n\r\n  private fetchData(pageNo): Observable<any> {\r\n    if (this.data.OnScroll && typeof this.data.OnScroll == 'string' && this.data.OnScroll.startsWith('group.')) {\r\n      const onScrollEvent = ZComponentHelper.getGroupEvalValue.call(this, this.data.OnScroll);\r\n      if (typeof onScrollEvent === 'function') {\r\n        const callFunc = onScrollEvent.bind(this.group.ctrlScope);\r\n        return forkJoin([callFunc(this.group, { pageNo: pageNo, pageSize: this.pageSize }), of(pageNo)] as Array<Observable<any>>);\r\n      }\r\n    }\r\n\r\n    return of(false);\r\n  }\r\n\r\n  private updateDataByIndex(startingIndex: number, data: Array<any>) {\r\n    for (let i = 0; i < data.length; i++) {\r\n      this.dataItems[startingIndex + i] = data[i];\r\n    }\r\n  }\r\n\r\n  private updateViewPortData() {\r\n    this.dataItems = [...this.dataItems];\r\n  }\r\n\r\n  public setupFooter() {\r\n    if (this.data.Value && Array.isArray(this.data.Value)) {\r\n      this.footerFields = this.data.Value.filter(x => x.Section === 'footer');\r\n    }\r\n  }\r\n\r\n  public getComponentOptions(): VirtualScrollOption {\r\n    return this.options;\r\n  }\r\n\r\n  //#region Group By\r\n  public getGroupByLabelTemplate(dataItem, options): string {\r\n    if (options.groupByLabelTemplate && typeof options.groupByLabelTemplate == 'string') {\r\n      if (options.groupByLabelTemplate.startsWith('group.')) {\r\n        const getTemplateFunc = ZComponentHelper.getGroupEvalValue.call(this, options.groupByLabelTemplate);\r\n\r\n        if (getTemplateFunc) {\r\n          return getTemplateFunc({\r\n            dataItem,\r\n            options,\r\n          });\r\n        }\r\n      }\r\n      else {\r\n        return dataItem[options.groupByLabelTemplate];\r\n      }\r\n    }\r\n  }\r\n\r\n  public groupByOnClick(groupByValue: string) {\r\n    if (!this.options.isGroupByCollapsible) {\r\n      return;\r\n    }\r\n\r\n    // use collapse / expand to control animation sequence\r\n    const isToCollapse = !this.collapsedGroupBy.includes(groupByValue);\r\n\r\n    const firstNodeIndex = this.fullDataItems.map(x => x[this.options.groupBy]).indexOf(groupByValue);\r\n    if (isToCollapse) {\r\n      // to collapse (For animation: Change status, then append data)\r\n      this.collapsedGroupBy.push(groupByValue);\r\n      this.collapsedGroupBy_FirstNodeIndexList.push(firstNodeIndex);\r\n      of({}).pipe(delay(400),\r\n        tap(() => {\r\n          this.computeDataItems();\r\n        })\r\n      ).subscribe();\r\n    }\r\n    else {\r\n      // to expand (For animation: Append data, then change status)\r\n      this.collapsedGroupBy_FirstNodeIndexList = this.collapsedGroupBy_FirstNodeIndexList.filter(x => x != firstNodeIndex);\r\n      const tempCollapsedGroupBy = this.collapsedGroupBy.filter(x => x !== groupByValue);\r\n      this.dataItems = this.fullDataItems.filter((x, index) => !tempCollapsedGroupBy.includes(x[this.options.groupBy]) || this.collapsedGroupBy_FirstNodeIndexList.includes(index));\r\n      this.groupByValueToExpand = groupByValue;\r\n      of({}).pipe(delay(0),\r\n        tap(() => {\r\n          this.collapsedGroupBy = tempCollapsedGroupBy;\r\n          this.groupByValueToExpand = groupByValue;\r\n        })\r\n      ).subscribe();\r\n    }\r\n  }\r\n\r\n  private computeDataItems() {\r\n    this.dataItems = this.fullDataItems.filter((x, index) => !this.collapsedGroupBy.includes(x[this.options.groupBy]) || this.collapsedGroupBy_FirstNodeIndexList.includes(index));\r\n  }\r\n\r\n  public expandAll() {\r\n    this.groupByValueToExpand = '';\r\n    this.collapsedGroupBy = [];\r\n    this.collapsedGroupBy_FirstNodeIndexList = [];\r\n    this.computeDataItems();\r\n  }\r\n\r\n  public expandByGroupByValues(groupByValue: Array<string>) {\r\n    this.collapsedGroupBy = this.collapsedGroupBy.filter(x => !groupByValue.includes(x));\r\n    this.computeDataItems();\r\n  }\r\n  //#endregion\r\n\r\n  //#region Selection\r\n  public override onClick(event: any, dataItem: any): void {\r\n    if (!!this.data.SelectOptions || true) {\r\n      const targetValue = !dataItem.IsSelected;\r\n      if (this.data.SelectOptions == 'single' || true) {\r\n        for (const dt of this.dataItems) {\r\n          dt.IsSelected = false;\r\n        }\r\n      }\r\n      dataItem.IsSelected = targetValue;\r\n    }\r\n\r\n    super.onClick(event, dataItem);\r\n  }\r\n  //#endregion\r\n}\r\n","<div\r\n  *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\"\r\n  class=\"container e1tag-container-style\" [style]=\"componentProperties.containerStyle.style\"\r\n  [ngClass]=\"(data.ComponentStyleType || '') + ' ' + (data.Class || '')\">\r\n  <cdk-virtual-scroll-viewport\r\n        [itemSize]=\"options.itemSize\"\r\n        [style]=\"componentProperties.containerStyle.style1\"\r\n        class=\"virtual-scroll-viewport e1tag-container-style1\"\r\n        [minBufferPx]=\"options.minBufferPx\"\r\n        [maxBufferPx]=\"options.maxBufferPx\">\r\n    <ng-container *cdkVirtualFor=\"let dataItem of dataItems; let i = index\">\r\n      <div #virtualscrollcontent>\r\n        <div class=\"virtual-scroll-groupby e1tag-container-style4\" [style]=\"componentProperties.containerStyle.style4\"\r\n          *ngIf=\"options.isGroupByEnabled && options.groupBy && (!dataItems[i-1] || dataItem[options.groupBy] !== dataItems[i-1][options.groupBy])\"\r\n          (click)=\"groupByOnClick(dataItem[options.groupBy])\" [class.groupby-collapsible]=\"options.isGroupByCollapsible\">\r\n          <fa-icon class=\"virtual-scroll-groupby-arrow-icon e1tag-container-style5\"\r\n            [style]=\"componentProperties.containerStyle.style5\" *ngIf=\"!!options.isGroupByCollapsible\"\r\n            [icon]=\"getFontAwesome('caret-down', fontAweSomeService)\"\r\n            [@rotateAnimation]=\"{value: collapsedGroupBy.includes(dataItem[options.groupBy]) ? 'rotate' : 'default', params: {degree: -90}}\">\r\n          </fa-icon>\r\n          <span class=\"virtual-scroll-groupby-label e1tag-container-style6\"\r\n            [style]=\"componentProperties.containerStyle.style6\">\r\n            {{options.groupByLabelTemplate ? getGroupByLabelTemplate(dataItem, options) : dataItem[options.groupBy]}}\r\n          </span>\r\n        </div>\r\n        <div *ngIf=\"!options.isGroupByEnabled\" [style.height.px]=\"options.itemSize\"\r\n          [style.min-height.px]=\"options.itemSize\" [style.max-height.px]=\"options.itemSize\"\r\n          [style]=\"componentProperties.containerStyle.style2\" class=\"e1tag-container-style2 virtual-scroll-dataitem\"\r\n          (click)=\"onClick($event, dataItem)\" [id]=\"data.Name + '_' + dataItem?.Value?.Id || ''\"\r\n          [class.virtual-scroll-item-selected]=\"!!dataItem.IsSelected\">\r\n          <div *ngIf=\"!dataItem\" [innerHTML]=\"options.loadingLabel | htmlSanitize\"></div>\r\n          <div *ngIf=\"dataItem.Label\" [innerHTML]=\"dataItem.Label | htmlSanitize\"></div>\r\n        </div>\r\n        <div *ngIf=\"options.isGroupByEnabled\" [style.height.px]=\"options.itemSize\"\r\n          [style.min-height.px]=\"options.itemSize\" [style.max-height.px]=\"options.itemSize\"\r\n          [style]=\"componentProperties.containerStyle.style2\" class=\"e1tag-container-style2 virtual-scroll-dataitem\"\r\n          (click)=\"onClick($event, dataItem)\" [id]=\"data.Name + '_' + dataItem?.Value?.Id || ''\"\r\n          [@collapseAnimation]=\"{value: !!options.groupBy && collapsedGroupBy.includes(dataItem[options.groupBy]) ? 'collapse' : 'default'}\"\r\n          [class.groupby-value-expand]=\"groupByValueToExpand == (dataItem[options.groupBy])\"\r\n          [class.virtual-scroll-item-selected]=\"!!dataItem.IsSelected\">\r\n          <div *ngIf=\"!dataItem\" [innerHTML]=\"options.loadingLabel | htmlSanitize\"></div>\r\n          <div *ngIf=\"dataItem.Label\" [innerHTML]=\"dataItem.Label | htmlSanitize\"></div>\r\n        </div>\r\n      </div>\r\n      <app-context-menu *ngIf=\"data.ContextMenuSettings\" [data]=\"data\" [group]=\"group\" [form]=\"form\" [target]=\"virtualscrollcontent\" [selectedData]=\"dataItem\"></app-context-menu>\r\n    </ng-container>\r\n    <app-zformcontrol *ngFor=\"let field of footerFields\" [field]=\"field\" [containerField]=\"data\" [group]=\"group\"\r\n      [form]=\"form\" [style]=\"componentProperties.containerStyle.style3\" class=\"e1tag-container-style3\">\r\n    </app-zformcontrol>\r\n  </cdk-virtual-scroll-viewport>\r\n</div>\r\n","\r\n\r\nimport { Component, OnInit } from \"@angular/core\";\r\nimport { ZComponent, FontAweSomeService } from \"mmhglobal-zcore\";\r\nimport { ZComponentService } from \"../../services/zcomponent.service\";\r\nimport { FieldBase } from \"../../components/fieldbase.component\";\r\n\r\n@Component({\r\n  selector: \"app-spinner\",\r\n  templateUrl: \"./spinner.component.html\",\r\n  styleUrls: [\"../page-loader/page-loader.component.scss\", \"./spinner.component.scss\"]\r\n})\r\nexport class SpinnerComponent extends FieldBase implements ZComponent, OnInit {\r\n\r\n  constructor(\r\n    public componentService: ZComponentService,\r\n    public fontAweSomeService: FontAweSomeService\r\n  ) {\r\n    super(componentService)\r\n  }\r\n\r\n  ngOnInit() {\r\n    super.initComponent().subscribe();\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    this.componentService.decrementComponentCounterForField(this.data);\r\n  }\r\n}\r\n","<div\r\n  *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\"\r\n  class=\"loader e1tag-style\" [style]=\"componentProperties.style.style\" [ngClass]=\"data.Class\"></div>\r\n","import { Component, OnInit } from \"@angular/core\";\r\nimport { FontAweSomeService, ZComponent, ZComponentHelper, ZComponentOutputEvent } from \"mmhglobal-zcore\";\r\nimport { ContainerFieldBase } from \"../components/containerfieldbase.component\";\r\nimport { ZComponentService } from \"../services/zcomponent.service\";\r\nimport { tap } from \"rxjs\";\r\n\r\n@Component({\r\n  selector: \"app-kmenu\",\r\n  templateUrl: \"./kmenu.component.html\",\r\n  styleUrls: [\"./kmenu.component.scss\"],\r\n})\r\nexport class KmenuComponent extends ContainerFieldBase implements ZComponent, OnInit {\r\n\r\n  public menuItems = [];\r\n  constructor(compService: ZComponentService, public fontAweSomeService: FontAweSomeService\r\n  ) {\r\n    super(compService)\r\n  }\r\n\r\n  ngOnInit() {\r\n    super.initComponent().pipe(\r\n      tap(() => {\r\n        if (Array.isArray(this.data.menuItems)) {\r\n          this.menuItems = this.data.menuItems;\r\n        }\r\n        else {\r\n          this.menuItems = ZComponentHelper.getGroupValue(this.data.menuItems as string, this.group);\r\n        }\r\n        this.isLoading = false;\r\n      })\r\n    ).subscribe();\r\n  }\r\n\r\n  public onItemClick(event?: any) {\r\n    if (this.data.OnItemClick) {\r\n      this.group.subject.next({\r\n        type: \"kmenu-onItemClick\",\r\n        target: this.data.OnItemClick,\r\n        data: event\r\n      } as ZComponentOutputEvent);\r\n    }\r\n  }\r\n}\r\n","<div class=\"kmenu-container e1tag-container-style\"\r\n  *ngIf=\"!isLoading && (!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\"\r\n  [ngClass]=\"data.Class\" [style]=\"componentProperties.containerStyle.style\" [class]=\"data.ComponentStyleType\">\r\n  <kendo-menu [items]=\"menuItems\" class=\"menu-item-container e1tag-container-style1\"\r\n    [style]=\"componentProperties.containerStyle.style1\" (select)=\"onItemClick($event)\"\r\n    [vertical]=\"data['IsVertical'] ?? false\">\r\n    <ng-template kendoMenuItemTemplate let-item=\"item\">\r\n      <div class=\"menu-item-content e1tag-container-style2\"\r\n        [style]=\"componentProperties.containerStyle.style2 + ' ' + item.style2\">\r\n        <fa-icon *ngIf=\"!!item.faIcon\" [icon]=\"getFontAwesome(item.faIcon, fontAweSomeService)\"\r\n          [style]=\"componentProperties.containerStyle.style3 + ' ' + item.style3\"\r\n          class=\"e1tag-container-style3\"></fa-icon>\r\n        <span class=\"menu-item-label e1tag-container-style4\"\r\n          [style]=\"componentProperties.containerStyle.style4 + ' ' + item.style4\">{{item.label}}</span>\r\n        <ion-badge class=\"menu-item-counter e1tag-container-style5\" color=\"danger\" *ngIf=\"!!item.counter\"\r\n          [style]=\"componentProperties.containerStyle.style5 + ' ' + item.style5\">{{item.counter}}</ion-badge>\r\n      </div>\r\n    </ng-template>\r\n  </kendo-menu>\r\n</div>\r\n","import { Component, OnInit } from \"@angular/core\";\r\nimport { ZComponent, ZComponentHelper, ZComponentOutputEvent } from \"mmhglobal-zcore\";\r\nimport { ContainerFieldBase } from \"../components/containerfieldbase.component\";\r\nimport { ZComponentService } from \"../services/zcomponent.service\";\r\nimport { tap } from \"rxjs\";\r\n\r\n@Component({\r\n  selector: \"app-kscrollview\",\r\n  templateUrl: \"./kscrollview.component.html\",\r\n  styleUrls: [\"./kscrollview.component.scss\"],\r\n})\r\nexport class KScrollViewComponent extends ContainerFieldBase implements ZComponent, OnInit {\r\n  public panelItems = [];\r\n  public options = {\r\n    pageAble: true,\r\n    endless: false,\r\n    arrows: true\r\n  };\r\n\r\n  constructor(compService: ZComponentService) {\r\n    super(compService)\r\n  }\r\n\r\n  ngOnInit() {\r\n    this.isLoading = true;\r\n    super.initComponent().pipe(\r\n      tap(() => {\r\n        this.setupItems();\r\n        this.setupOptions();\r\n      })\r\n    ).subscribe(() => {\r\n      this.isLoading = false;\r\n    });\r\n  }\r\n\r\n  private setupOptions() {\r\n    if (this.data.Options) {\r\n      if (typeof this.data.Options == 'string' && this.data.Options.indexOf('group.') != -1) {\r\n        let option = ZComponentHelper.getGroupValue(this.data.Options, this.group);\r\n        if (typeof option == 'string') {\r\n          option = JSON.parse(option);\r\n        }\r\n        Object.assign(this.options, option);\r\n      }\r\n      else {\r\n        Object.assign(this.options, this.data.Options);\r\n      }\r\n    }\r\n    else {\r\n      this.options.pageAble = this.panelItems.length > 1 ? true : false;\r\n    }\r\n  }\r\n\r\n  private setupItems() {\r\n    if (this.data.PanelItems) {\r\n      if (typeof this.data.PanelItems == 'string' && (this.data.PanelItems as string).indexOf('group.') != -1) {\r\n        let panelItemsFromGroup = ZComponentHelper.getGroupValue(this.data.PanelItems, this.group);\r\n        if (typeof panelItemsFromGroup == 'string') {\r\n          panelItemsFromGroup = JSON.parse(panelItemsFromGroup);\r\n        }\r\n        this.panelItems = panelItemsFromGroup;\r\n      }\r\n      else {\r\n        this.panelItems = this.data.PanelItems;\r\n      }\r\n    }\r\n  }\r\n\r\n  public onItemClick(event: any, item: any) {\r\n    if (this.data.OnItemClick) {\r\n      this.group.subject.next({\r\n        type: 'kscrollview-onitemclick',\r\n        target: this.data.OnItemClick,\r\n        event,\r\n        data: { value: item, field: this.data, comp: this }\r\n      } as ZComponentOutputEvent);\r\n    }\r\n  }\r\n}\r\n","<div class=\"kscrollview-container\" [style]=\"componentProperties.containerStyle.style\" class=\"e1tag-container-style\"\r\n  *ngIf=\"!isLoading\">\r\n  <kendo-scrollview [style]=\"componentProperties.containerStyle.style1\" class=\"e1tag-container-style1 scrollview\"\r\n    [ngClass]=\"data.Class\" [data]=\"panelItems\" [arrows]=\"options.arrows\" [pageable]=\"options.pageAble\"\r\n    [endless]=\"options.endless\">\r\n    <ng-template let-item=\"item\">\r\n      <div [style]=\"componentProperties.containerStyle.style2\" class=\"e1tag-container-style2\" (click)=\"onItemClick($event, item)\">\r\n        <div [style]=\"componentProperties.containerStyle.style3\" class=\"e1tag-container-style3 kscrollview-title\">\r\n          {{item.Label}}\r\n        </div>\r\n        <img [src]='item.SourceUrl' [alt]='item.Label' [style]=\"componentProperties.containerStyle.style4\"\r\n          class=\"e1tag-container-style4\" draggable=\"true\" />\r\n      </div>\r\n    </ng-template>\r\n  </kendo-scrollview>\r\n</div>\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms'; \r\nimport { IconDefinition } from '@fortawesome/free-solid-svg-icons';\r\nimport { InputFillMode, InputRounded, InputSize } from '@progress/kendo-angular-inputs';\r\nimport { FontAweSomeService, ZComponent, ZComponentHelper, ZField, ZGroup } from \"mmhglobal-zcore\";\r\n\r\n@Component({\r\n  selector: 'app-ficon',  \r\n  templateUrl: './ficon.component.html',\r\n  styleUrls: ['./ficon.component.scss'],\r\n})\r\nexport class FiconComponent implements ZComponent, OnInit {\r\n  @Input() data: ZField;\r\n  @Input() group: ZGroup;\r\n  @Input() form: FormGroup;\r\n\r\n  public size: InputSize = \"large\";\r\n  public rounded: InputRounded = \"medium\";\r\n  public fillMode: InputFillMode = \"solid\";\r\n  public icons: { prefix: string, name: string, definition: IconDefinition, formattedName: string }[] = [];\r\n  public filteredIcons: { prefix: string, name: string, definition: IconDefinition, formattedName: string }[] = [];\r\n  public searchTerm: string = '';\r\n\r\n  constructor(\r\n    public fontAweSomeService: FontAweSomeService\r\n  ) { }\r\n\r\n  ngOnInit() {\r\n    this.icons = this.fontAweSomeService.getAllIcons().map(icon => ({\r\n      ...icon,\r\n      formattedName: this.toCamelCase(`${icon.name}`) \r\n    //  formattedName: this.toCamelCase(`${icon.prefix === 'fas' ? 'fa' : icon.prefix}-${icon.name}`)\r\n    }));\r\n    this.filteredIcons = [...this.icons];\r\n\r\n    ZComponentHelper.setComponentProperties(this);\r\n    ZComponentHelper.registerComponent(this);\r\n  }\r\n\r\n  private toCamelCase(str: string): string {\r\n    return str\r\n      .split('-')\r\n      .map((word, index) =>\r\n        index === 0 ? word : word.charAt(0).toUpperCase() + word.slice(1)\r\n      )\r\n      .join('');\r\n  }\r\n\r\n  public filterIcon(searchTerm: string) {\r\n    this.searchTerm = searchTerm;\r\n    this.filteredIcons = this.icons.filter(icon =>\r\n      icon.name.toLowerCase().includes(searchTerm.toLowerCase())\r\n    );\r\n  }\r\n}\r\n","<div>  \r\n  <div class=\"search-box\">\r\n    <kendo-floatinglabel [labelCssClass]=\"'custom-label-class'\"\r\n                         text=\"Search icons\">\r\n      <kendo-textbox [(ngModel)]=\"searchTerm\"\r\n                     (ngModelChange)=\"filterIcon(searchTerm)\"\r\n                     placeholder=\"Search icons\"\r\n                     [clearButton]=\"true\"\r\n                     [rounded]=\"rounded\"\r\n                     [style.width.px]=\"480\">\r\n      </kendo-textbox>\r\n    </kendo-floatinglabel> \r\n  </div>\r\n\r\n  <ul class=\"icons-wrapper\">\r\n    <li *ngFor=\"let icon of filteredIcons\" class=\"icon-item\">\r\n      <fa-icon [icon]=\"icon.definition\" size=\"3x\"></fa-icon>\r\n      <div class=\"icon-name\" style=\"text-align:center\">{{ icon.formattedName }}</div>\r\n    </li>\r\n  </ul>\r\n</div>\r\n","/********** Angular **********/\r\nimport { Component, OnInit, OnDestroy } from \"@angular/core\";\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\nimport { CellClickEvent, TaskClickEvent, TimelineViewType } from \"@progress/kendo-angular-gantt\";\r\n\r\n/********** Component & Service **********/\r\nimport { DataListingFieldBase } from \"../components/datalistingfieldbase.component\";\r\nimport { ZComponentService } from \"../services/zcomponent.service\";\r\nimport {\r\n  ZComponent,\r\n  ZComponentHelper\r\n} from \"mmhglobal-zcore\";\r\n\r\n@Component({\r\n  selector: 'app-zganttchart',\r\n  templateUrl: './zganttchart.component.html',\r\n  styleUrls: ['./zganttchart.component.scss'],\r\n})\r\nexport class ZganttchartComponent extends DataListingFieldBase implements ZComponent, OnInit, OnDestroy {\r\n  public activeView: TimelineViewType = \"day\";\r\n  public views: TimelineViewType[] = [\"day\", \"week\", \"month\", \"year\"];\r\n  public collapsible = false;\r\n  public collapsed = false;\r\n  public timelineSize = '70%';\r\n  public columns: any[] = []; // Initialize columns array\r\n  public selectable = false;\r\n  public totalCount: number = 0;\r\n\r\n  constructor(\r\n    public componentService: ZComponentService\r\n  ) {\r\n    super(componentService);\r\n  }\r\n\r\n  public ganttData: any;\r\n\r\n\r\n  ngOnInit() {\r\n    this.collapsible = this.data.AllowCollapse ?? false;\r\n    this.collapsed = this.data.DefaultCollapse ?? false;\r\n    this.timelineSize = this.data.TimelineSize ?? '70%';\r\n    this.selectable = this.data.Selectable ?? false;\r\n    this.initViews();\r\n    this.setActiveView();\r\n    this.generateGridColumns();\r\n    ZComponentHelper.registerComponent(this);\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    this.componentService.decrementComponentCounterForField(this.data);\r\n  }\r\n\r\n  ngOnDestroy() {\r\n  }\r\n\r\n  private initViews(): void {\r\n    if (this.data.TimelineViewType && Array.isArray(this.data.TimelineViewType)) {\r\n      this.views = this.data.TimelineViewType\r\n        .map(view => view.toLowerCase())\r\n        .filter(view => this.isValidTimelineView(view)) as TimelineViewType[];\r\n    }\r\n  }\r\n\r\n  private setActiveView(): void {\r\n    if (this.data.TimelimeDefault) {\r\n      const defaultView = this.data.TimelimeDefault.toLowerCase();\r\n      if (this.isValidTimelineView(defaultView)) {\r\n        this.activeView = defaultView as TimelineViewType;\r\n      }\r\n    }\r\n  }\r\n\r\n  private isValidTimelineView(view: string): view is TimelineViewType {\r\n    return ['day', 'week', 'month', 'year'].includes(view);\r\n  }\r\n\r\n  private generateGridColumns(): void {\r\n    if (!Array.isArray(this.data.ColumnFields) || this.data.ColumnFields.length === 0) {\r\n      console.warn(`Invalid/Empty gantt chart column fields: '${this.data.Name}'`);\r\n      return;\r\n    }\r\n\r\n    this.columns = this.data.ColumnFields.map(field => ({\r\n      name: field.Name,\r\n      field: field.Value,\r\n      title: field.Name,\r\n      width: field.width || 80,\r\n      format: field.Format\r\n    }));\r\n  }\r\n\r\n  public setData(ganttData: any[]): void {\r\n    if (ganttData) {\r\n      this.ganttData = ganttData.map(task => ({\r\n        ...task,\r\n        start: this.ensureDate(task.start),\r\n        end: this.ensureDate(task.end)\r\n      })).filter(task => task.start && task.end); // Only include tasks with valid start and end dates\r\n\r\n      if (this.data.Max) {\r\n        this.ganttData = this.ganttData.slice(0, this.data.Max);\r\n      }\r\n\r\n      this.updateValueVariable();\r\n\r\n      this.totalCount = this.ganttData.length;\r\n    }\r\n    else {\r\n      console.warn('No data provided to setData; received a null or undefined parameter.');\r\n    }\r\n  }\r\n\r\n  private updateValueVariable() {\r\n    // Extract and trim the value from this.data.value if it exists\r\n    const fieldName = this.data.Value.split('.').pop(); // Gets the last part after the last dot\r\n\r\n    if (!fieldName) {\r\n      console.warn(`Gantt Chart ${this.data.Name} Value could not be determined.`);\r\n      return;\r\n    }\r\n\r\n    // Determine the target object \r\n    if (this.data.Value.includes('group.') && this.group) {\r\n      this.group[fieldName] = this.ganttData;\r\n    }\r\n    else {\r\n      if (this.hasOwnProperty(fieldName)) {\r\n        this[fieldName] = this.ganttData;\r\n      }\r\n    }\r\n  }\r\n\r\n  private ensureDate(date: string | Date): Date | null {\r\n    // Check if the date is already a Date object\r\n    if (date instanceof Date) {\r\n      return date;\r\n    }\r\n\r\n    // If the date is a string, convert it to a Date object\r\n    const parsedDate = new Date(date);\r\n    if (!isNaN(parsedDate.getTime())) {\r\n      return parsedDate;\r\n    } else {\r\n      // Log a warning if the date string is invalid and return a default date or null\r\n      // console.warn(`Invalid date format: ${date}`);\r\n      return null; // or return null if you prefer to handle invalid dates differently\r\n    }\r\n  }\r\n\r\n  public get selectedKeys(): number[] {\r\n    return Array.from(this.selectionState);\r\n  }\r\n\r\n  public selectionState: Set<any> = new Set();\r\n\r\n  public isSelected = (dataItem: any): boolean => {\r\n    return this.selectionState.has(dataItem[this.data.UniqueKey ?? \"Id\"]);\r\n  };\r\n\r\n  public toggleSelection({\r\n    dataItem,\r\n    sender,\r\n    originalEvent,\r\n  }: CellClickEvent | TaskClickEvent): void {\r\n    // Prevents context menu opening\r\n    originalEvent.preventDefault();\r\n\r\n    const uniqueKey = this.data.UniqueKey ?? \"Id\";\r\n\r\n    // For future toggling multi select \r\n    // if (this.isSelected(dataItem)) {\r\n    //   this.selectionState.delete(dataItem[uniqueKey]);\r\n    // }\r\n    // else {\r\n    //   this.selectionState.add(dataItem[uniqueKey]);\r\n    // }\r\n\r\n    this.selectionState = new Set;\r\n    this.selectionState.add(dataItem[uniqueKey]);\r\n\r\n    // Manually trigger the Gantt to re-evaluate the isSelected callback for each task\r\n    sender.updateView();\r\n\r\n    if (this.data.OnItemClick) {\r\n      const func = ZComponentHelper.getGroupEvalValue.call(this, this.data.OnItemClick);\r\n      if (typeof func === 'function') {\r\n        const callFunc = func.bind(this.group.ctrlScope);\r\n        callFunc(dataItem);\r\n      }\r\n      return;\r\n    }\r\n  }\r\n\r\n  public clearSelection(): void {\r\n    this.selectionState = new Set;\r\n  }\r\n}\r\n","<kendo-gantt [style.height.px]=\"500\"\r\n             [data]=\"ganttData\"\r\n             kendoGanttExpandable\r\n             [initiallyExpanded]=\"true\"\r\n             [toolbarSettings]=\"{ position: 'both', addTaskTool: 'none' }\"\r\n             [activeView]=\"activeView\"\r\n             [sortable]=\"true\"\r\n             [selectable]=\"selectable\"\r\n             [isSelected]=\"isSelected\"\r\n             (cellClick)=\"toggleSelection($event)\"\r\n             (taskClick)=\"toggleSelection($event)\"\r\n             [timelinePaneOptions]=\"{ collapsed: collapsed,\r\n                                      collapsible: collapsible,\r\n                                      size: timelineSize\r\n                                    }\">\r\n  <kendo-gantt-column *ngFor=\"let col of columns;\"\r\n                      [field]=\"col.field\"\r\n                      [title]=\"col.title\"\r\n                      [width]=\"col.width\"\r\n                      [format]=\"col.format\">\r\n  </kendo-gantt-column>\r\n  <ng-template kendoGanttToolbarTemplate\r\n               position=\"both\"\r\n               let-position=\"position\">\r\n    <div *ngIf=\"position === 'top'\" class=\"toolbar-top\">\r\n      <span>{{data.Title}}</span>\r\n      <kendo-gantt-view-selector [views]=\"views\"\r\n                                 [(activeView)]=\"activeView\"></kendo-gantt-view-selector>\r\n    </div>\r\n    <div *ngIf=\"position === 'bottom'\" class=\"toolbar-bottom\">\r\n      <span>Total {{totalCount}} records</span>\r\n    </div>\r\n  </ng-template>\r\n  <kendo-gantt-timeline-day-view></kendo-gantt-timeline-day-view>\r\n  <kendo-gantt-timeline-week-view></kendo-gantt-timeline-week-view>\r\n  <kendo-gantt-timeline-month-view></kendo-gantt-timeline-month-view>\r\n  <kendo-gantt-timeline-year-view></kendo-gantt-timeline-year-view>\r\n</kendo-gantt>\r\n","/********** Angular **********/\r\nimport { Component, OnInit } from '@angular/core';\r\n\r\n/********** Ionic **********/\r\n\r\n/********** Plugin **********/\r\n\r\n/********** Component & Service **********/\r\nimport { ButtonFieldBase } from '../components/buttonfieldbase.component';\r\nimport { ZComponentService } from '../services/zcomponent.service';\r\nimport {\r\n  FontAweSomeService, TriggerFromType,\r\n  ZComponent, ZComponentHelper, ZComponentOutputEvent, ZField,\r\n} from 'mmhglobal-zcore';\r\n\r\n@Component({\r\n  selector: \"app-dropdown_buttons\",\r\n  templateUrl: \"./dropdown_buttons.component.html\",\r\n  styleUrls: [\"./dropdown_buttons.component.scss\"]\r\n})\r\n\r\nexport class DropDownButtonsComponent extends ButtonFieldBase implements ZComponent, OnInit {\r\n  constructor(\r\n    public componentService: ZComponentService,\r\n    public fontAweSomeService: FontAweSomeService\r\n  ) {\r\n    super(componentService);\r\n  }\r\n\r\n  ngOnInit() {\r\n    super.initComponent().subscribe(() => {\r\n      this.loadButton();\r\n    });\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    this.componentService.decrementComponentCounterForField(this.data);\r\n  }\r\n\r\n  private loadButton() {\r\n    if (!this.data.Value || !Array.isArray(this.data.Value)) {\r\n      console.warn('[DropDown Button] Button value is empty');\r\n      return;\r\n    }\r\n\r\n    try {\r\n      this.data.Value.forEach((button: ZField) => {\r\n        this.setupButtonAttributes(button);\r\n      });\r\n\r\n      super.translateButtonsLabel(this.items).subscribe();\r\n    } catch (error) {\r\n      console.error(\"error: \", error);\r\n    }\r\n  }\r\n\r\n  private setupButtonAttributes(button: ZField) {\r\n    let buttonDisabled = false;\r\n    if (button['Disabled'] && typeof button['Disabled'] == 'string') {\r\n      buttonDisabled = ZComponentHelper.getGroupEvalValue.call(this, button['Disabled']);\r\n    }\r\n\r\n    this.items.push({\r\n      name: button.Name,\r\n      text: this.getButtonLabel(button),\r\n      showLabel: button.ShowLabel ?? true,\r\n      style: button.Style,\r\n      icon: ZComponentHelper.getIcon(button.Icon as string),\r\n      disabled: buttonDisabled,\r\n      clickEvent: button.ClickEvent,\r\n      iconName: button.Icon,\r\n      dismissType: button.DismissType,\r\n      buttonData: button,\r\n      disableTriggerTimer: button.DisableTriggerTimer,\r\n      disableTrigger: this.getButtonDisableTriggerValue(this.data, button),\r\n    });\r\n  }\r\n\r\n  public buttonClick(item: any) {\r\n    if (item.disabled) {\r\n      return;\r\n    }\r\n\r\n    // Sets the isTriggered property based on the disableTrigger property of the item\r\n    this.group.isTriggered = item.disableTrigger != undefined ? !item.disableTrigger : true;\r\n\r\n    // If the isTriggered property is true, proceed with the following actions\r\n    if (this.group.isTriggered) {\r\n      const me = this.group;\r\n\r\n      // If the disableTriggerTimer property is not present, set a timeout to reset isTriggered to false after 500ms\r\n      if (!item['disableTriggerTimer']) {\r\n        setTimeout(function () {\r\n          me['isTriggered'] = false;\r\n        }, 500);\r\n      }\r\n    }\r\n\r\n    // Create a deep clone of the item object\r\n    const clonedButton = ZComponentHelper.deepClone(item);\r\n\r\n    // Call a method to update the event ID (implementation not provided)\r\n    item.eventId = ZComponentHelper.generateTimeStampId();\r\n\r\n    // Set the DismissType property of the group to the dismissType property of the item\r\n    this.group['DismissType'] = item.dismissType;\r\n\r\n    // Create an output event object with details about the button click\r\n    const outputEvent = {\r\n      type: \"buttonClick\",\r\n      target: clonedButton.clickEvent,\r\n      data: clonedButton,\r\n      triggerFrom: TriggerFromType.button\r\n    } as ZComponentOutputEvent;\r\n\r\n    // Update the buttonEventDetail property of the group with the output event details\r\n    this.group['buttonEventDetail'] = {\r\n      buttonDetail: outputEvent,\r\n      triggerFrom: TriggerFromType.button\r\n    };\r\n\r\n    // Notify subscribers with the output event\r\n    this.group.subject.next(outputEvent);\r\n  }\r\n}\r\n","<div\r\n  *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible) && items.length > 0\"\r\n  [style]=\"componentProperties.style.style\" class=\"e1tag-style\" [ngClass]=\"data.Class\">\r\n  <div class=\"dropdown-button-container e1tag-style1\" [style]=\"componentProperties.style.style1\">\r\n    <kendo-dropdownbutton [data]=\"items\" [size]=\"data.Size ?? 'medium'\" [fillMode]=\"data['Fill'] ?? 'solid'\" [ngClass]=\"data.Class\"\r\n      (itemClick)=\"buttonClick($event)\"\r\n      class=\"e1tag-style2\" [style]=\"componentProperties.style.style2\">\r\n      <div class=\"button-label-container e1tag-style3\" [style]=\"componentProperties.style.style3\">\r\n        <fa-icon class=\"btn-icon e1tag-style4\" [style]=\"componentProperties.style.style4\" *ngIf=\"data.Icon\"\r\n          [icon]=\"getFontAwesome(data.Icon, fontAweSomeService)\"></fa-icon>\r\n        <span class=\"ion-text-capitalize e1tag-style5\" [style]=\"componentProperties.style.style5\"\r\n          *ngIf=\"data.Label && data.ShowLabel\">{{data.Label}}</span>\r\n      </div>\r\n      <ng-template kendoDropDownButtonItemTemplate let-dataItem>\r\n        <div class=\"button-content-container e1tag-style6\" [style]=\"componentProperties.style.style6 + ' ' + dataItem.style\">\r\n          <fa-icon class=\"btn-icon e1tag-style7\" [style]=\"componentProperties.style.style7\" *ngIf=\"dataItem.icon\" [icon]=\"dataItem.icon\"></fa-icon>\r\n          <span class=\"ion-text-capitalize e1tag-style8\" [style]=\"componentProperties.style.style8\"\r\n            *ngIf=\"dataItem.text && dataItem.showLabel\">{{dataItem.text}}</span>\r\n        </div>\r\n      </ng-template>\r\n      <ion-ripple-effect></ion-ripple-effect>\r\n    </kendo-dropdownbutton>\r\n  </div>\r\n</div>\r\n","/********** Angular **********/\r\nimport { NgModule, CUSTOM_ELEMENTS_SCHEMA, ModuleWithProviders } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RouterModule } from '@angular/router';\r\nimport { ScrollingModule } from '@angular/cdk/scrolling';\r\n// import { BrowserAnimationsModule } from \"@angular/platform-browser/animations\";\r\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\n\r\n/********** Ionic **********/\r\nimport { IonicModule } from '@ionic/angular';\r\nimport { IonicSelectableModule } from 'ionic-selectable';\r\n\r\n/********** Plugin **********/\r\nimport { AceEditorModule } from 'ng2-ace-editor';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { QueryBuilderModule } from \"angular2-query-builder\";\r\nimport { FlexLayoutModule } from \"@angular/flex-layout\";\r\n\r\n/********** SyncFusion **********/\r\nimport { QueryBuilderModule as SFQueryBuilderModule } from '@syncfusion/ej2-angular-querybuilder';\r\nimport { DateTimePickerModule } from '@syncfusion/ej2-angular-calendars';\r\n\r\n/********** Kendo **********/\r\nimport { ArcGaugeModule } from '@progress/kendo-angular-gauges';\r\nimport { ButtonsModule } from '@progress/kendo-angular-buttons';\r\nimport { ChartsModule } from '@progress/kendo-angular-charts';\r\nimport { CalendarModule, DateInputsModule } from '@progress/kendo-angular-dateinputs';\r\nimport { DropDownsModule } from '@progress/kendo-angular-dropdowns';\r\nimport { EditorModule } from '@progress/kendo-angular-editor';\r\nimport { ExcelModule, GridModule } from '@progress/kendo-angular-grid';\r\nimport { FilterModule } from '@progress/kendo-angular-filter';\r\nimport { IndicatorsModule } from \"@progress/kendo-angular-indicators\";\r\nimport { IntlModule } from '@progress/kendo-angular-intl';\r\nimport { ColorPickerModule, InputsModule, SliderModule, SwitchModule, TextBoxModule } from '@progress/kendo-angular-inputs';\r\nimport { LabelModule } from '@progress/kendo-angular-label';\r\nimport { LayoutModule, PanelBarModule, TabStripModule } from '@progress/kendo-angular-layout';\r\nimport { NotificationModule } from '@progress/kendo-angular-notification';\r\nimport { PopupModule } from '@progress/kendo-angular-popup';\r\nimport { ProgressBarModule } from \"@progress/kendo-angular-progressbar\";\r\nimport { TelerikReportingModule } from '@progress/telerik-angular-report-viewer';\r\nimport { SchedulerModule } from '@progress/kendo-angular-scheduler';\r\nimport { TreeListModule } from '@progress/kendo-angular-treelist';\r\nimport { TreeViewModule } from '@progress/kendo-angular-treeview';\r\nimport { TooltipModule } from '@progress/kendo-angular-tooltip';\r\nimport { PopoverModule } from \"@progress/kendo-angular-tooltip\";\r\nimport { UploadModule, UploadsModule } from '@progress/kendo-angular-upload';\r\nimport { NavigationModule } from '@progress/kendo-angular-navigation';\r\nimport { MenusModule } from \"@progress/kendo-angular-menu\";\r\nimport { GanttModule } from \"@progress/kendo-angular-gantt\";\r\n\r\n/********** Service & Directive **********/\r\nimport { ZCoreModule, ZGroup } from 'mmhglobal-zcore';\r\nimport { MmhglobalMiddlewareModule } from 'mmhglobal-middleware';\r\nimport { MmhglobalZmodalModule, ModalService } from 'mmhglobal-zmodal';\r\nimport { MainService } from './services/main.service';\r\nimport { ScrollbarThemeDirective } from './directives/scrollbar.theme.directive';\r\nimport { FieldElementDirective } from './directives/fieldelement.directive';\r\nimport { ZGridBindingDirective } from './zgrid/zgrid.binding.directive';\r\nimport { ZGridPopupAnchorDirective } from './zgrid/zgrid.popup.anchor-target.directive';\r\nimport { OpenOnFocusDirective } from './zselectmultiple/zselectmultiple.directive';\r\nimport { ElementContainerDirective } from './directives/elementcontainer.directive';\r\n\r\n/********** Addon **********/\r\nimport { DateParserFilter } from './zdatetime/dateParser.pipe';\r\nimport { EditorFilter } from './zcodeeditor/zcodeeditor.pipe';\r\nimport { DivzLayout } from './zdiv/zdiv.pipe';\r\nimport { TabFilter } from './ztab/ztab.pipe';\r\nimport { PanelAreaFilter } from './pipe/panel-area.pipe';\r\nimport { ZInputParser } from './zinput-container/zinput-container.pipe';\r\nimport { HtmlSanitizePipe } from './pipe/htmlSanitize.pipe';\r\nimport { DateRangeFilterCellComponent } from './zgrid/date-range-cell-filter.component';\r\nimport { ZSchedulerToolBarComponent } from './zscheduler/zscheduler.toolbar.component';\r\nimport { ZSelectTranslationParser } from './zselectmultiple/zselectmultiple.pipe';\r\nimport { ZNumericParser } from './znumeric/znumeric.component.pipe';\r\nimport { DateKendoFormatParser } from './zdatetime/dateKendoFormatParser.pipe';\r\nimport { DateIonicFormatParser } from './zdatetime/dateIonicFormatParser.pipe';\r\n\r\n/********** zComponent **********/\r\nimport { UipageComponent } from './uipage/uipage.component';\r\nimport { UiheaderComponent } from './uiheader/uiheader.component';\r\nimport { UicontainerComponent } from './uicontainer/uicontainer.component';\r\nimport { UicontentComponent } from './uicontent/uicontent.component';\r\n\r\nimport { UimenucontentComponent } from './uimenucontent/uimenucontent.component';\r\nimport { UimenubuttonComponent } from './uimenubutton/uimenubutton.component';\r\nimport { UiappmenucontentComponent } from './uiappmenucontent/uiappmenucontent.component';\r\nimport { UibulletinComponent } from './uibulletin/uibulletin.component';\r\nimport { UiactionbuttonComponent } from './uiactionbutton/uiactionbutton.component';\r\nimport { UivalidationmessageComponent } from './uivalidationmessage/uivalidationmessage.component';\r\n\r\nimport { ZBulletComponent } from \"./zbullet/zbullet.component\";\r\nimport { ZbuttonsComponent } from \"./zbuttons/zbuttons.component\";\r\nimport { ZbreadcrumbComponent } from './zbreadcrumb/zbreadcrumb.component';\r\nimport { ZcardComponent } from \"./zcard/zcard.component\";\r\nimport { ZchartComponent } from './zchart/zchart.component';\r\nimport { ZcheckboxComponent } from './zcheckbox/zcheckbox.component';\r\nimport { ZChipComponent } from \"./zchip/zchip.component\";\r\nimport { ZcodeeditorComponent } from './zcodeeditor/zcodeeditor.component';\r\nimport { ZdaterangeComponent } from './zdaterange/zdaterange.component';\r\nimport { ZdatetimeComponent } from './zdatetime/zdatetime.component';\r\nimport { ZdivComponent } from './zdiv/zdiv.component';\r\nimport { ZformComponent } from \"./zform/zform.component\";\r\nimport { ZformcontrolComponent } from \"./zformcontrol/zformcontrol.component\";\r\nimport { ZgaugeComponent } from './zgauge/zgauge.component';\r\nimport { ZgridComponent } from \"./zgrid/zgrid.component\";\r\nimport { ZgridContainerComponent } from \"./zgrid/container/zgrid-container.component\";\r\nimport { ZimgComponent } from './zimg/zimg.component';\r\nimport { ZlabelComponent } from './zlabel/zlabel.component';\r\nimport { ZmfbComponent } from './zmfb/zmfb.component';\r\nimport { ZmodalComponent } from \"./zmodal/zmodal.component\";\r\nimport { ZmodalMobileComponent } from \"./zmodal/zmodal-mobile.component\";\r\nimport { ZnumericComponent } from './znumeric/znumeric.component';\r\nimport { ZpostselectinputComponent } from './zpostselectinput/zpostselectinput.component';\r\nimport { ZradiobuttonComponent } from './zradiobutton/zradiobutton.component';\r\nimport { ZreportComponent } from './zreport/zreport.component';\r\nimport { ZschedulerComponent } from './zscheduler/zscheduler.component';\r\nimport { ZselectmultipleComponent } from \"./zselectmultiple/zselectmultiple.component\";\r\nimport { ZtabComponent } from \"./ztab/ztab.component\";\r\nimport { ZtextComponent } from \"./ztext/ztext.component\";\r\nimport { ZtextareaComponent } from './ztextarea/ztextarea.component';\r\nimport { ZtexteditorComponent } from './ztexteditor/ztexteditor.component';\r\nimport { ZtreeComponent } from './ztree/ztree.component';\r\nimport { ZtreelistComponent } from './ztreelist/ztreelist.component';\r\nimport { ZtrendcardComponent } from './ztrendcard/ztrendcard.component';\r\nimport { ZunknownComponent } from \"./zunknown/zunknown.component\";\r\nimport { ZudfComponent } from './zudf/zudf.component';\r\nimport { ZuploadComponent } from './zupload/zupload.component';\r\nimport { ZworkflowbuttonsComponent } from \"./zworkflowbuttons/zworkflowbuttons.component\";\r\nimport { KcardComponent } from './kcard/kcard.component';\r\nimport { ZInputContainerComponent } from './zinput-container/zinput-container.component';\r\nimport { ZprogressbarComponent } from './zprogressbar/zprogressbar.component';\r\nimport { InputErrorMessageComponent } from './input-error-message/input-error-message.component';\r\nimport { InputFieldAddOnsComponent } from './embed-components/input-field-addons/input-field-addons.component';\r\nimport { ProcessingRecordLoaderComponent } from './embed-components/processing-record-loader/processing-record-loader.component';\r\nimport { DateIonicMinMaxParser } from './zdatetime/dateIonicMinMaxDate.pipe';\r\nimport { SfquerybuilderComponent } from './sfquerybuilder/sfquerybuilder.component';\r\nimport { ZloopComponent } from './zloop/zloop.component';\r\nimport { KsplitterComponent } from './ksplitter/ksplitter.component';\r\nimport { VirtualScrollComponent } from './virtual-scroll/virtual-scroll.component';\r\nimport { SpinnerComponent } from './embed-components/spinner/spinner.component';\r\nimport { PageLoaderComponent } from './embed-components/page-loader/page-loader.component';\r\nimport { ZcolorpickerComponent } from './zcolorpicker/zcolorpicker.component';\r\nimport { KmenuComponent } from './kmenu/kmenu.component';\r\nimport { KScrollViewComponent } from './kscrollview/kscrollview.component';\r\nimport { ScrollViewModule } from '@progress/kendo-angular-scrollview';\r\nimport { ContextMenuComponent } from './embed-components/context-menu/context-menu.component';\r\nimport { FiconComponent } from './ficon/ficon.component';\r\nimport { SfdatetimepickerComponent } from './sfdatetimepicker/sfdatetimepicker.component';\r\nimport { ZganttchartComponent } from './zganttchart/zganttchart.component';\r\nimport { DropDownButtonsComponent } from './dropdown_buttons/dropdown_buttons.component';\r\nimport { ZsliderComponent } from './zslider/zslider.component';\r\n\r\n@NgModule({\r\n  declarations: [\r\n    ScrollbarThemeDirective,\r\n    FieldElementDirective,\r\n    ZGridBindingDirective,\r\n    ZGridPopupAnchorDirective,\r\n    OpenOnFocusDirective,\r\n    ElementContainerDirective,\r\n    DateParserFilter, // zgrid addon\r\n    EditorFilter, // zcode addon\r\n    DivzLayout, // zdiv addon\r\n    TabFilter, // ztab addon\r\n    PanelAreaFilter, // panel area addon\r\n    DateRangeFilterCellComponent, // zgrid addon\r\n    ZSchedulerToolBarComponent, // zscheduler addon\r\n    UiheaderComponent,\r\n    UicontainerComponent,\r\n    UicontentComponent,\r\n    UipageComponent,\r\n    UibulletinComponent,\r\n    UiactionbuttonComponent,\r\n    UimenucontentComponent,\r\n    UimenubuttonComponent,\r\n    UiappmenucontentComponent,\r\n    UivalidationmessageComponent,\r\n    ZBulletComponent,\r\n    ZbuttonsComponent,\r\n    ZbreadcrumbComponent,\r\n    ZcardComponent,\r\n    ZchartComponent,\r\n    ZcheckboxComponent,\r\n    ZChipComponent,\r\n    ZcodeeditorComponent,\r\n    ZdaterangeComponent,\r\n    ZdatetimeComponent,\r\n    ZdivComponent,\r\n    ZformComponent,\r\n    ZformcontrolComponent,\r\n    ZgaugeComponent,\r\n    ZgridComponent,\r\n    ZimgComponent,\r\n    ZlabelComponent,\r\n    ZmfbComponent,\r\n    ZmodalComponent,\r\n    ZmodalMobileComponent,\r\n    ZnumericComponent,\r\n    ZpostselectinputComponent,\r\n    ZradiobuttonComponent,\r\n    ZreportComponent,\r\n    ZschedulerComponent,\r\n    ZselectmultipleComponent,\r\n    ZtabComponent,\r\n    ZtextComponent,\r\n    ZtextareaComponent,\r\n    ZtexteditorComponent,\r\n    ZtreeComponent,\r\n    ZtreelistComponent,\r\n    ZtrendcardComponent,\r\n    ZunknownComponent,\r\n    ZudfComponent,\r\n    ZuploadComponent,\r\n    ZworkflowbuttonsComponent,\r\n    KcardComponent,\r\n    ZInputContainerComponent,\r\n    ZprogressbarComponent,\r\n    ZInputParser,\r\n    ZSelectTranslationParser,\r\n    HtmlSanitizePipe,\r\n    InputErrorMessageComponent,\r\n    InputFieldAddOnsComponent,\r\n    SpinnerComponent,\r\n    PageLoaderComponent,\r\n    ProcessingRecordLoaderComponent,\r\n    ZNumericParser,\r\n    ZgridContainerComponent,\r\n    DateKendoFormatParser,\r\n    DateIonicFormatParser,\r\n    DateIonicMinMaxParser,\r\n    SfquerybuilderComponent,\r\n    ZloopComponent,\r\n    KsplitterComponent,\r\n    VirtualScrollComponent,\r\n    ZcolorpickerComponent,\r\n    KmenuComponent,\r\n    KScrollViewComponent,\r\n    ContextMenuComponent,\r\n    FiconComponent,\r\n    SfdatetimepickerComponent,\r\n    ZganttchartComponent,\r\n    DropDownButtonsComponent,\r\n    ZsliderComponent\r\n  ],\r\n  imports: [\r\n    IonicModule,\r\n    IonicSelectableModule,\r\n    CommonModule,\r\n    RouterModule,\r\n    FormsModule,\r\n    ReactiveFormsModule,\r\n    AceEditorModule,\r\n    FontAwesomeModule,\r\n    QueryBuilderModule,\r\n    ArcGaugeModule,\r\n    ButtonsModule,\r\n    ChartsModule,\r\n    CalendarModule,\r\n    DateInputsModule,\r\n    DropDownsModule,\r\n    EditorModule,\r\n    ExcelModule,\r\n    GridModule,\r\n    FilterModule,\r\n    IndicatorsModule,\r\n    IntlModule,\r\n    InputsModule,\r\n    SwitchModule,\r\n    TextBoxModule,\r\n    LabelModule,\r\n    LayoutModule,\r\n    PanelBarModule,\r\n    TabStripModule,\r\n    NotificationModule,\r\n    PopupModule,\r\n    ProgressBarModule,\r\n    TelerikReportingModule,\r\n    SchedulerModule,\r\n    TreeListModule,\r\n    TreeViewModule,\r\n    TooltipModule,\r\n    PopoverModule,\r\n    UploadModule,\r\n    UploadsModule,\r\n    ZCoreModule,\r\n    MmhglobalZmodalModule,\r\n    NavigationModule,\r\n    FlexLayoutModule,\r\n    SFQueryBuilderModule,\r\n    ScrollingModule,\r\n    QueryBuilderModule,\r\n    ColorPickerModule,\r\n    ScrollViewModule,\r\n    MenusModule,\r\n    DateTimePickerModule,\r\n    GanttModule,\r\n    SliderModule\r\n  ],\r\n  exports: [\r\n    ScrollbarThemeDirective,\r\n    FieldElementDirective,\r\n    ZGridBindingDirective,\r\n    ZGridPopupAnchorDirective,\r\n    OpenOnFocusDirective,\r\n    ElementContainerDirective,\r\n    DateParserFilter, // zdatetime addon\r\n    EditorFilter, // zcode addon\r\n    DivzLayout, // zdiv addon\r\n    TabFilter, // ztab addon\r\n    PanelAreaFilter, // panel area addon\r\n    DateRangeFilterCellComponent, // zgrid addon\r\n    ZSchedulerToolBarComponent, // zscheduler addon\r\n    UiheaderComponent,\r\n    UicontainerComponent,\r\n    UicontentComponent,\r\n    UipageComponent,\r\n    UimenucontentComponent,\r\n    UimenubuttonComponent,\r\n    UiappmenucontentComponent,\r\n    UibulletinComponent,\r\n    UiactionbuttonComponent,\r\n    UivalidationmessageComponent,\r\n    ZBulletComponent,\r\n    ZbuttonsComponent,\r\n    ZbreadcrumbComponent,\r\n    ZcardComponent,\r\n    ZchartComponent,\r\n    ZcheckboxComponent,\r\n    ZChipComponent,\r\n    ZcodeeditorComponent,\r\n    ZdaterangeComponent,\r\n    ZdatetimeComponent,\r\n    ZdivComponent,\r\n    ZformComponent,\r\n    ZformcontrolComponent,\r\n    ZgaugeComponent,\r\n    ZgridComponent,\r\n    ZimgComponent,\r\n    ZlabelComponent,\r\n    ZmfbComponent,\r\n    ZmodalComponent,\r\n    ZmodalMobileComponent,\r\n    ZnumericComponent,\r\n    ZpostselectinputComponent,\r\n    ZradiobuttonComponent,\r\n    ZreportComponent,\r\n    ZschedulerComponent,\r\n    ZselectmultipleComponent,\r\n    ZtabComponent,\r\n    ZtextComponent,\r\n    ZtextareaComponent,\r\n    ZtexteditorComponent,\r\n    ZtreeComponent,\r\n    ZtreelistComponent,\r\n    ZtrendcardComponent,\r\n    ZunknownComponent,\r\n    ZudfComponent,\r\n    ZuploadComponent,\r\n    ZworkflowbuttonsComponent,\r\n    ZInputContainerComponent,\r\n    ZprogressbarComponent,\r\n    ZInputParser,\r\n    ZSelectTranslationParser,\r\n    HtmlSanitizePipe,\r\n    InputErrorMessageComponent,\r\n    InputFieldAddOnsComponent,\r\n    SpinnerComponent,\r\n    PageLoaderComponent,\r\n    ProcessingRecordLoaderComponent,\r\n    ZNumericParser,\r\n    ZgridContainerComponent,\r\n    DateKendoFormatParser,\r\n    DateIonicFormatParser,\r\n    DateIonicMinMaxParser,\r\n    SfquerybuilderComponent,\r\n    ZloopComponent,\r\n    KsplitterComponent,\r\n    VirtualScrollComponent,\r\n    ZcolorpickerComponent,\r\n    KmenuComponent,\r\n    KScrollViewComponent,\r\n    FiconComponent,\r\n    SfdatetimepickerComponent,\r\n    ZganttchartComponent,\r\n    DropDownButtonsComponent,\r\n    ZsliderComponent\r\n  ],\r\n  providers: [\r\n    ModalService\r\n  ],\r\n  schemas: [CUSTOM_ELEMENTS_SCHEMA]\r\n})\r\n\r\nexport class MmhglobalDynamicformModule { }\r\n","/*\r\n * Public API Surface of dynamic-form\r\n */\r\n\r\n/********** Service **********/\r\nexport * from './lib/services/main.service';\r\nexport * from './lib/services/zcomponent.service';\r\n// export * from './lib/zmodal/modal.service';\r\n// export * from './lib/services/zcomponent.debug.service';\r\n\r\n\r\n/********** Directive **********/\r\nexport * from './lib/directives/scrollbar.theme.directive';\r\nexport * from './lib/directives/fieldelement.directive';\r\nexport * from './lib/zgrid/zgrid.binding.directive';\r\nexport * from './lib/zselectmultiple/zselectmultiple.directive';\r\nexport * from './lib/directives/elementcontainer.directive';\r\n\r\n/********** Module **********/\r\nexport * from './lib/mmhglobal-dynamicform.module';\r\n\r\n\r\n/********** Addon **********/\r\nexport * from './lib/zdatetime/dateParser.pipe';\r\nexport * from './lib/zcodeeditor/zcodeeditor.pipe';\r\nexport * from './lib/zdiv/zdiv.pipe';\r\nexport * from './lib/ztab/ztab.pipe';\r\nexport * from './lib/pipe/panel-area.pipe';\r\nexport * from './lib/zinput-container/zinput-container.pipe';\r\nexport * from './lib/pipe/htmlSanitize.pipe';\r\nexport * from './lib/znumeric/znumeric.component.pipe';\r\nexport * from './lib/zdatetime/dateIonicFormatParser.pipe';\r\nexport * from './lib/zdatetime/dateKendoFormatParser.pipe';\r\nexport * from './lib/zdatetime/dateIonicMinMaxDate.pipe';\r\n\r\n// export * from  './lib/zmodal/zmodal.module';\r\nexport * from './lib/zgrid/date-range-cell-filter.component';\r\nexport * from './lib/zscheduler/zscheduler.toolbar.component';\r\n\r\n\r\n/********** zComponent **********/\r\nexport * from './lib/uicontainer/uicontainer.component';\r\nexport * from './lib/uicontent/uicontent.component';\r\nexport * from './lib/uiheader/uiheader.component';\r\nexport * from './lib/uipage/uipage.component';\r\nexport * from './lib/uimenucontent/uimenucontent.component';\r\nexport * from './lib/uimenubutton/uimenubutton.component';\r\nexport * from './lib/uiappmenucontent/uiappmenucontent.component';\r\nexport * from './lib/uibulletin/uibulletin.component';\r\nexport * from './lib/uiactionbutton/uiactionbutton.component';\r\nexport * from './lib/uivalidationmessage/uivalidationmessage.component';\r\nexport * from './lib/zbullet/zbullet.component';\r\nexport * from './lib/zbuttons/zbuttons.component';\r\nexport * from './lib/zcard/zcard.component';\r\nexport * from './lib/zchart/zchart.component';\r\nexport * from './lib/zcheckbox/zcheckbox.component';\r\nexport * from './lib/zchip/zchip.component';\r\nexport * from './lib/zcodeeditor/zcodeeditor.component';\r\nexport * from './lib/zdaterange/zdaterange.component';\r\nexport * from './lib/zdatetime/zdatetime.component';\r\nexport * from './lib/zdiv/zdiv.component';\r\nexport * from './lib/zform/zform.component';\r\nexport * from './lib/zformcontrol/zformcontrol.component';\r\nexport * from './lib/zgauge/zgauge.component';\r\nexport * from './lib/zgrid/zgrid.component';\r\nexport * from './lib/zgrid/container/zgrid-container.component';\r\nexport * from './lib/zgrid/zgrid.popup.anchor-target.directive'\r\nexport * from './lib/zimg/zimg.component';\r\nexport * from './lib/zlabel/zlabel.component';\r\nexport * from './lib/zmfb/zmfb.component';\r\nexport * from './lib/zmodal/zmodal.component';\r\nexport * from './lib/zmodal/zmodal-mobile.component';\r\nexport * from './lib/znumeric/znumeric.component';\r\nexport * from './lib/zpostselectinput/zpostselectinput.component';\r\nexport * from './lib/zradiobutton/zradiobutton.component';\r\nexport * from './lib/zreport/zreport.component';\r\nexport * from './lib/zscheduler/zscheduler.component';\r\nexport * from './lib/zselectmultiple/zselectmultiple.component';\r\nexport * from './lib/ztab/ztab.component';\r\nexport * from './lib/ztext/ztext.component';\r\nexport * from './lib/ztextarea/ztextarea.component';\r\nexport * from './lib/ztexteditor/ztexteditor.component';\r\nexport * from './lib/ztree/ztree.component';\r\nexport * from './lib/ztreelist/ztreelist.component';\r\nexport * from './lib/ztrendcard/ztrendcard.component';\r\nexport * from './lib/zudf/zudf.component';\r\nexport * from './lib/zunknown/zunknown.component';\r\nexport * from './lib/zupload/zupload.component';\r\nexport * from './lib/zworkflowbuttons/zworkflowbuttons.component';\r\nexport * from './lib/kcard/kcard.component';\r\nexport * from './lib/zinput-container/zinput-container.component';\r\nexport * from './lib/zprogressbar/zprogressbar.component';\r\nexport * from './lib/components/buttonfieldbase.component';\r\nexport * from './lib/components/containerfieldbase.component';\r\nexport * from './lib/components/datalistingfieldbase.component';\r\nexport * from './lib/components/fieldbase.component';\r\nexport * from './lib/components/inputfieldbase.component';\r\nexport * from './lib/input-error-message/input-error-message.component';\r\nexport * from './lib/embed-components/input-field-addons/input-field-addons.component'\r\nexport * from './lib/embed-components/page-loader/page-loader.component'\r\nexport * from './lib/embed-components/spinner/spinner.component'\r\nexport * from './lib/embed-components/processing-record-loader/processing-record-loader.component'\r\nexport * from './lib/zselectmultiple/zselectmultiple.pipe'\r\nexport * from './lib/sfquerybuilder/sfquerybuilder.component'\r\nexport * from './lib/zloop/zloop.component'\r\nexport * from './lib/ksplitter/ksplitter.component';\r\nexport * from './lib/virtual-scroll/virtual-scroll.component';\r\nexport * from './lib/zcolorpicker/zcolorpicker.component';\r\nexport * from './lib/kmenu/kmenu.component';\r\nexport * from './lib/kscrollview/kscrollview.component';\r\nexport * from './lib/embed-components/context-menu/context-menu.component';\r\nexport * from './lib/ficon/ficon.component';\r\nexport * from './lib/sfdatetimepicker/sfdatetimepicker.component';\r\nexport * from './lib/zganttchart/zganttchart.component';\r\nexport * from './lib/dropdown_buttons/dropdown_buttons.component';\r\nexport * from './lib/zbreadcrumb/zbreadcrumb.component';\r\nexport * from './lib/zslider/zslider.component';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i3","i4","i5.ZComponentDebugService","tap","i1","switchMap","i2.ZGridService","i3.ZComponentService","i1.ZComponentService","i2.ZComponentService","map","i1.MainService","i2.MainService","i5","i6","ComponentType","i4.UiheaderService","i6.UimenubuttonComponent","i7.UibulletinComponent","i8","i9","i10","i11.UiactionbuttonComponent","i12","i2.FieldElementDirective","i2.ZComponentDebugService","i4.ZformcontrolComponent","i7","i3.MainService","i4.ZComponentService","i5.PageLoaderComponent","i9.ZformComponent","i11","i2.ProcessingRecordLoaderComponent","i3.UiheaderComponent","i5.UicontentComponent","i6.ZformcontrolComponent","i2.ZformcontrolComponent","i3.ContextMenuComponent","i5.ZdivComponent","i4.HtmlSanitizePipe","i9.HtmlSanitizePipe","i5.EditorFilter","i3.UivalidationmessageComponent","i6.DateIonicMinMaxParser","i7.DateIonicFormatParser","i8.DateParserFilter","i9.DateKendoFormatParser","event","i9.OpenOnFocusDirective","i11.ZSelectTranslationParser","i6.DateParserFilter","i7.DateKendoFormatParser","i6.UivalidationmessageComponent","i8.ZtextComponent","i6.ZNumericParser","i3.ZtextComponent","i4.ZselectmultipleComponent","i5.ZdatetimeComponent","i6.SfdatetimepickerComponent","i7.ZpostselectinputComponent","i8.ZcheckboxComponent","i9.ZnumericComponent","i10.ZtextareaComponent","i11.ZuploadComponent","i12.ZimgComponent","i13.ZtexteditorComponent","i14.ZcolorpickerComponent","i15.ZradiobuttonComponent","i16.ZsliderComponent","i17.InputErrorMessageComponent","i18","i19.InputFieldAddOnsComponent","i20.ContextMenuComponent","i21","i22","i23","i24","i25.ZInputParser","delay","i5.MainService","i6.ZGridService","i11.ZworkflowbuttonsComponent","i12.ZbuttonsComponent","i13.ZformComponent","i14","i15.DateRangeFilterCellComponent","i16","i17","i18.ZInputContainerComponent","i19.ContextMenuComponent","i20","i22.ZGridBindingDirective","i24.HtmlSanitizePipe","i6.ZgridComponent","i7.PageLoaderComponent","i5.InputFieldAddOnsComponent","i6.ContextMenuComponent","i10.HtmlSanitizePipe","i6.UiactionbuttonComponent","i7.ZformComponent","i9.ScrollbarThemeDirective","i5.UiactionbuttonComponent","i6.ZformComponent","i8.ScrollbarThemeDirective","i4.ZSchedulerToolBarComponent","i7.ZdivComponent","i10.TabFilter","i9.ZworkflowbuttonsComponent","i10.ZbuttonsComponent","i12.DateRangeFilterCellComponent","i13.ZInputContainerComponent","i14.ContextMenuComponent","i15","i17.HtmlSanitizePipe","i3.ZformcontrolComponent","i3.ZdivComponent","i6.PanelAreaFilter","i5.ContextMenuComponent","SFQueryBuilderModule"],"mappings":"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"}